SpyBara
Go Premium

Documentation 2026-09-17 05:00 UTC to 2026-09-18 23:58 UTC

127 files changed +5,635 −2,315. View all changes and history on the product overview
2026
Wed 30 23:00 Tue 29 23:58 Mon 28 22:59 Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02
Details

10 10 

11El modo lector de pantalla es opcional. Si utiliza un ampliador de pantalla, movimiento reducido o un tema seguro para daltónicos en lugar de un lector de pantalla, configure `CLAUDE_CODE_ACCESSIBILITY`, `prefersReducedMotion` o `theme` desde la tabla [Configuración de accesibilidad](#accessibility-settings). El modo lector de pantalla adapta solo la interfaz de terminal, por lo que no lo necesita en el panel de chat de la extensión de VS Code. En Claude Code v2.1.236 o posterior, la extensión [anuncia la actividad de la conversación a su lector de pantalla](/docs/es/vs-code#use-a-screen-reader) allí sin ninguna configuración.11El modo lector de pantalla es opcional. Si utiliza un ampliador de pantalla, movimiento reducido o un tema seguro para daltónicos en lugar de un lector de pantalla, configure `CLAUDE_CODE_ACCESSIBILITY`, `prefersReducedMotion` o `theme` desde la tabla [Configuración de accesibilidad](#accessibility-settings). El modo lector de pantalla adapta solo la interfaz de terminal, por lo que no lo necesita en el panel de chat de la extensión de VS Code. En Claude Code v2.1.236 o posterior, la extensión [anuncia la actividad de la conversación a su lector de pantalla](/docs/es/vs-code#use-a-screen-reader) allí sin ninguna configuración.

12 12 

13El modo lector de pantalla requiere Claude Code v2.1.181 o posterior. Las versiones anteriores rechazan la bandera `--ax-screen-reader` con `error: unknown option '--ax-screen-reader'`.

14 

15<h2 id="turn-on-screen-reader-mode">13<h2 id="turn-on-screen-reader-mode">

16 Activar el modo lector de pantalla14 Activar el modo lector de pantalla

17</h2>15</h2>

admin-setup.md +4 −3

Details

36| Google Cloud's Agent Platform | Desea heredar controles de cumplimiento y facturación de GCP existentes |36| Google Cloud's Agent Platform | Desea heredar controles de cumplimiento y facturación de GCP existentes |

37| Microsoft Foundry | Desea heredar controles de cumplimiento y facturación de Azure existentes |37| Microsoft Foundry | Desea heredar controles de cumplimiento y facturación de Azure existentes |

38 38 

39Algunas características de Claude Code requieren una cuenta de claude.ai. [Claude Code en la web](/docs/es/claude-code-on-the-web), [Routines](/docs/es/routines), [Code Review](/docs/es/code-review), [Remote Control](/docs/es/remote-control) y la [extensión de Chrome](/docs/es/chrome) no están disponibles solo a través de claves de API de Console o credenciales de proveedores en la nube. Si implementa a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry, planifique si los desarrolladores también necesitan asientos de Claude for Teams o Enterprise. Cada página de características enumera sus requisitos de plan.39Algunas características de Claude Code requieren una cuenta de claude.ai. [Cloud sessions](/docs/es/claude-code-on-the-web), [Routines](/docs/es/routines), [Code Review](/docs/es/code-review), [Remote Control](/docs/es/remote-control) y la [extensión de Chrome](/docs/es/chrome) no están disponibles solo a través de claves de API de Console o credenciales de proveedores en la nube. Si implementa a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry, planifique si los desarrolladores también necesitan asientos de Claude for Teams o Enterprise. Cada página de características enumera sus requisitos de plan.

40 40 

41Para la comparación completa del proveedor que cubre autenticación, regiones y paridad de características, consulte la [descripción general de implementación empresarial](/docs/es/third-party-integrations). La configuración de autenticación de cada proveedor está en [Authentication](/docs/es/authentication).41Para la comparación completa del proveedor que cubre autenticación, regiones y paridad de características, consulte la [descripción general de implementación empresarial](/docs/es/third-party-integrations). La configuración de autenticación de cada proveedor está en [Authentication](/docs/es/authentication).

42 42 


102| [Managed policy CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) | Instrucciones de toda la organización cargadas en cada sesión, no se pueden excluir | Archivo en la ruta de política administrada |102| [Managed policy CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) | Instrucciones de toda la organización cargadas en cada sesión, no se pueden excluir | Archivo en la ruta de política administrada |

103| [MCP server control](/docs/es/managed-mcp) | Restringir qué servidores MCP pueden agregar o conectar los usuarios, implementar un conjunto fijo, o proporcionar servidores remotos a cada usuario junto con los suyos propios | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, o un archivo `managed-mcp.json` implementado |103| [MCP server control](/docs/es/managed-mcp) | Restringir qué servidores MCP pueden agregar o conectar los usuarios, implementar un conjunto fijo, o proporcionar servidores remotos a cada usuario junto con los suyos propios | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, o un archivo `managed-mcp.json` implementado |

104| [Plugin marketplace control](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) | Restringir qué fuentes de marketplace pueden agregar e instalar los usuarios, rechazar las banderas CLI que cargan plugins, agents y servidores MCP para una única ejecución, bloquear [fuentes de plugin `command`](/docs/es/plugin-marketplaces#command-sources), y crear una lista de permitidos de qué plugins de marketplaces pueden ser sugeridos | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |104| [Plugin marketplace control](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) | Restringir qué fuentes de marketplace pueden agregar e instalar los usuarios, rechazar las banderas CLI que cargan plugins, agents y servidores MCP para una única ejecución, bloquear [fuentes de plugin `command`](/docs/es/plugin-marketplaces#command-sources), y crear una lista de permitidos de qué plugins de marketplaces pueden ser sugeridos | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

105| [Customization lockdown](/docs/es/settings-reference#strictpluginonlycustomization) | Bloquear skills, agents, hooks y servidores MCP de fuentes de usuario y proyecto, para que solo provengan de plugins o configuración administrada | `strictPluginOnlyCustomization` |105| [Customization lockdown](/docs/es/settings-reference#strictpluginonlycustomization) | Bloquear skills, agents, hooks y servidores MCP de fuentes de usuario y proyecto, para que solo provengan de plugins o configuración administrada. Bloquear skills también detiene los [skills que los desarrolladores habilitan en claude.ai](/docs/es/skills#where-synced-skills-load) de sincronizarse | `strictPluginOnlyCustomization` |

106| [Disable claude.ai sync](/docs/es/settings-reference#syncclaudeaiskills) | Evitar que Claude Code cargue los [skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins-reference#synced-plugins) que los desarrolladores habilitan en claude.ai. Si desactiva Skills para su organización en claude.ai, Claude Code deja de sincronizar ambos, y en v2.1.273 o posterior también elimina los que ya sincronizó. Para detener uno u otro sin desactivar Skills, establezca su clave en `false` en la configuración administrada | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

106| [Hook restrictions](/docs/es/settings-reference#allowmanagedhooksonly) | Restringir qué hooks se ejecutan y restringir URLs de hooks HTTP; consulte [lo que se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista completa de efectos | `allowManagedHooksOnly`, `allowedHttpHookUrls` |107| [Hook restrictions](/docs/es/settings-reference#allowmanagedhooksonly) | Restringir qué hooks se ejecutan y restringir URLs de hooks HTTP; consulte [lo que se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista completa de efectos | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

107| [Login enforcement](/docs/es/settings-reference#forceloginmethod) | Restringir el inicio de sesión a un método específico u organización de Anthropic. La restricción de método se aplica en la extensión de VS Code, Agent SDK, `claude setup-token` e `/install-github-app`, y la pantalla de inicio de sesión interactivo del terminal, a la que se accede mediante `/login` u onboarding de primera ejecución, preselecciona el método sin aplicarlo; Claude Code verifica la organización para inicios de sesión de cuenta claude.ai en el terminal, extensión de VS Code y Agent SDK, y no la verifica para inicios de sesión de Claude Console o para inicio de sesión de [gateway](/docs/es/claude-apps-gateway). Antes de v2.1.212, solo los inicios de sesión del terminal aplicaban cualquiera de las claves. Cuando se establece, las sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` se bloquean al inicio; las sesiones del proveedor de nube no se ven afectadas | `forceLoginMethod`, `forceLoginOrgUUID` |108| [Login enforcement](/docs/es/settings-reference#forceloginmethod) | Restringir el inicio de sesión a un método específico u organización de Anthropic. La restricción de método se aplica en la extensión de VS Code, Agent SDK, `claude setup-token` e `/install-github-app`, y la pantalla de inicio de sesión interactivo del terminal, a la que se accede mediante `/login` u onboarding de primera ejecución, preselecciona el método sin aplicarlo; Claude Code verifica la organización para inicios de sesión de cuenta claude.ai en el terminal, extensión de VS Code y Agent SDK, y no la verifica para inicios de sesión de Claude Console o para inicio de sesión de [gateway](/docs/es/claude-apps-gateway). Antes de v2.1.212, solo los inicios de sesión del terminal aplicaban cualquiera de las claves. Cuando se establece, las sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` se bloquean al inicio; las sesiones del proveedor de nube no se ven afectadas | `forceLoginMethod`, `forceLoginOrgUUID` |

108| [Disable agent view](/docs/es/agent-view#how-background-sessions-are-hosted) | Desactivar `claude agents`, `--bg`, `/background` y el supervisor bajo demanda | `disableAgentView` |109| [Disable agent view](/docs/es/agent-view#how-background-sessions-are-hosted) | Desactivar `claude agents`, `--bg`, `/background` y el supervisor bajo demanda | `disableAgentView` |


121 122 

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

123 124 

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

125 126 

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

127 128 

Details

222 222 

223El límite de presupuesto cubre [subagentes](/docs/es/agent-sdk/subagents): su gasto cuenta hacia el total. Una vez que el gasto alcanza el límite, generar otro subagente falla con `Budget limit reached`, y Claude Code detiene cualquier subagente de fondo que aún se esté ejecutando. Los comportamientos de cumplimiento del límite requieren Claude Code v2.1.217 o posterior.223El límite de presupuesto cubre [subagentes](/docs/es/agent-sdk/subagents): su gasto cuenta hacia el total. Una vez que el gasto alcanza el límite, generar otro subagente falla con `Budget limit reached`, y Claude Code detiene cualquier subagente de fondo que aún se esté ejecutando. Los comportamientos de cumplimiento del límite requieren Claude Code v2.1.217 o posterior.

224 224 

225Con [entrada de transmisión](/docs/es/agent-sdk/streaming-vs-single-mode), un mensaje que aún está en cola cuando un turno termina en el límite de máximo de turnos permanece en cola. Claude Code no lo agrega a la última llamada del modelo de ese turno. Inicia un nuevo turno para el mensaje, y el conteo de máximo de turnos comienza de nuevo para ese turno.225Con [entrada de transmisión](/docs/es/agent-sdk/streaming-vs-single-mode), un mensaje que aún está en cola cuando un turno termina en el límite de máximo de turnos permanece en cola. Claude Code no lo agrega a la última llamada del modelo de ese turno. Inicia un nuevo turno para el mensaje, y el conteo de máximo de turnos comienza de nuevo para ese turno. El total de presupuesto sigue acumulándose entre mensajes, y una vez que el gasto alcanza `maxBudgetUsd`, los mensajes posteriores en la misma conversación terminan con el resultado `error_max_budget_usd`. Un [`/clear`](/docs/es/agent-sdk/cost-tracking) reinicia el presupuesto.

226 226 

227<h3 id="effort-level">227<h3 id="effort-level">

228 Nivel de esfuerzo228 Nivel de esfuerzo


267 Modelo267 Modelo

268</h3>268</h3>

269 269 

270Si no establece `model`, el SDK usa el predeterminado de Claude Code, que depende de su método de autenticación y suscripción. Establézcalo explícitamente (por ejemplo, `model="claude-sonnet-5"`) para fijar un modelo específico o para usar un modelo más pequeño para agentes más rápidos y económicos. Vea [modelos](https://platform.claude.com/docs/en/about-claude/models) para IDs disponibles.270Establezca la opción `model` para elegir qué modelo ejecuta la sesión. Para más información, vea [Elegir un modelo](/docs/es/agent-sdk/configuration#choose-a-model).

271 271 

272<h2 id="the-context-window">272<h2 id="the-context-window">

273 La ventana de contexto273 La ventana de contexto


362 362 

363El campo `result` contiene la salida de texto final y solo está presente en la variante `success`, así que siempre verifique el subtipo antes de leerlo.363El campo `result` contiene la salida de texto final y solo está presente en la variante `success`, así que siempre verifique el subtipo antes de leerlo.

364 364 

365Todos los subtipos de resultado llevan `total_cost_usd`, `usage`, `num_turns` e `session_id` para que pueda rastrear el costo y reanudar incluso después de errores. Hay dos cosas que debe proteger:365Todos los subtipos de resultado llevan `total_cost_usd`, `usage`, `num_turns` e `session_id` para que pueda rastrear el costo y reanudar incluso después de errores. Protéjase para estos casos:

366 366 

367* Después de un bloqueo de sesión, el resultado final es un `error_during_execution` cuyos campos de costo pueden estar en cero y cuyo `stop_reason` es `null`, y el proceso sale después de emitirlo. Vea [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).367* Después de un bloqueo de sesión, el resultado final es un `error_during_execution` cuyos campos de costo pueden estar en cero y cuyo `stop_reason` es `null`, y el proceso sale después de emitirlo. Vea [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).

368* En Python, `total_cost_usd`, `usage` y `model_usage` se escriben como opcionales, así que verifique que no sean `None` antes de leerlos.368* En Python, `total_cost_usd`, `usage` y `model_usage` se escriben como opcionales, así que verifique que no sean `None` antes de leerlos.

Details

8 8 

9El Agent SDK se basa en la misma base que Claude Code, lo que significa que sus agentes SDK tienen acceso a las mismas características basadas en el sistema de archivos: instrucciones de proyecto (`CLAUDE.md` y reglas), skills, hooks y más.9El Agent SDK se basa en la misma base que Claude Code, lo que significa que sus agentes SDK tienen acceso a las mismas características basadas en el sistema de archivos: instrucciones de proyecto (`CLAUDE.md` y reglas), skills, hooks y más.

10 10 

11Cuando omite `settingSources`, `query()` lee la misma configuración del sistema de archivos que la CLI de Claude Code: configuración de usuario, proyecto y local, archivos `CLAUDE.md` y skills, agentes y comandos en `.claude/`. Para ejecutar sin estos, pase `settingSources: []`, lo que limita el agente a lo que configure programáticamente. La configuración de políticas administradas y la configuración global `~/.claude.json` se leen independientemente de esta opción. Consulte [Qué settingSources no controla](#what-settingsources-does-not-control).11Cuando omite `settingSources`, `query()` lee la misma configuración del sistema de archivos que la CLI de Claude Code: configuración de usuario, proyecto y local, archivos `CLAUDE.md` y skills, agentes y comandos en `.claude/`. Para ejecutar sin estos, pase `settingSources: []`, lo que limita el agente a lo que configure programáticamente. La configuración de políticas administradas y la configuración global `~/.claude.json` se leen independientemente de esta opción. Para obtener más información, consulte [Qué settingSources no controla](#what-settingsources-does-not-control).

12 12 

13<h2 id="control-filesystem-settings-with-settingsources">13<h2 id="control-filesystem-settings-with-settingsources">

14 Controlar la configuración del sistema de archivos con settingSources14 Controlar la configuración del sistema de archivos con settingSources


92`settingSources` cubre la configuración de usuario, proyecto y local. Algunas entradas se leen independientemente de su valor:92`settingSources` cubre la configuración de usuario, proyecto y local. Algunas entradas se leen independientemente de su valor:

93 93 

94| Entrada | Comportamiento | Para deshabilitar |94| Entrada | Comportamiento | Para deshabilitar |

95| :--------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |95| :--------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

96| Configuración de políticas administradas | Política administrada por el punto de conexión, ya sea plist MDM, política de registro o archivos de configuración administrada, se carga desde el host. [La configuración administrada por servidor](/docs/es/server-managed-settings) se obtiene en una [configuración elegible](/docs/es/server-managed-settings#platform-availability) cuando la sesión se autentica con un inicio de sesión OAuth de la organización o una clave API configurada directamente | Política de punto de conexión: elimine el archivo de configuración administrada, plist o política de registro del host. Configuración administrada por servidor: controlada por el administrador de su organización; no se puede deshabilitar desde el SDK |96| Configuración de políticas administradas | Política administrada por el punto de conexión, ya sea plist MDM, política de registro o archivos de configuración administrada, se carga desde el host. [La configuración administrada por servidor](/docs/es/server-managed-settings) se obtiene en una [configuración elegible](/docs/es/server-managed-settings#platform-availability) cuando la sesión se autentica con un inicio de sesión OAuth de la organización, una clave API configurada directamente, o un [perfil de Anthropic](/docs/es/authentication#anthropic-profiles-and-federation-credentials) `user_oauth` | Política de punto de conexión: elimine el archivo de configuración administrada, plist o política de registro del host. Configuración administrada por servidor: un [Propietario](/docs/es/server-managed-settings#access-control) en su organización de Claude los controla; no se puede deshabilitar desde el SDK |

97| Configuración global `~/.claude.json` | Siempre se lee | Reubique con `CLAUDE_CONFIG_DIR` en `env` |97| Configuración global `~/.claude.json` | Siempre se lee | Reubique con `CLAUDE_CONFIG_DIR` en `env` |

98| Memoria automática en `~/.claude/projects/<project>/memory/` | Se carga en el mensaje del sistema al inicio de la sesión. El agente escribe nuevos recuerdos allí con las herramientas estándar `Write` y `Edit` en lugar de una herramienta de memoria dedicada, por lo que esas herramientas deben estar habilitadas para que el agente guarde recuerdos | Establezca `autoMemoryEnabled: false` en la configuración, o `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` en `env` |98| Memoria automática en `~/.claude/projects/<project>/memory/` | Se carga en el mensaje del sistema al inicio de la sesión. El agente escribe nuevos recuerdos allí con las herramientas estándar `Write` y `Edit` en lugar de una herramienta de memoria dedicada, por lo que esas herramientas deben estar habilitadas para que el agente guarde recuerdos | Establezca `autoMemoryEnabled: false` en la configuración, o `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` en `env` |

99| [Conectores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) | Se cargan cuando la sesión se autentica con su inicio de sesión en claude.ai. No se cargan cuando `CLAUDE_CODE_OAUTH_TOKEN` contiene un token de [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token), que solo puede hacer solicitudes de modelo. Pasar `mcpServers: {}` no suprime los conectores | Establezca `strictMcpConfig: true`, [`disableClaudeAiConnectors: true`](/docs/es/mcp#disable-claude-ai-connectors) en la configuración, o `ENABLE_CLAUDEAI_MCP_SERVERS=false` en `env` |99| [Conectores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) | Se cargan cuando la sesión se autentica con su inicio de sesión en claude.ai. No se cargan cuando `CLAUDE_CODE_OAUTH_TOKEN` contiene un token de [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token), que solo puede hacer solicitudes de modelo. Pasar `mcpServers: {}` no suprime los conectores | Establezca `strictMcpConfig: true`, [`disableClaudeAiConnectors: true`](/docs/es/mcp#disable-claude-ai-connectors) en la configuración, o `ENABLE_CLAUDEAI_MCP_SERVERS=false` en `env` |


107 Instrucciones de proyecto (CLAUDE.md y reglas)107 Instrucciones de proyecto (CLAUDE.md y reglas)

108</h2>108</h2>

109 109 

110Los archivos `CLAUDE.md` y los archivos `.claude/rules/*.md` proporcionan a su agente contexto persistente sobre su proyecto: convenciones de codificación, comandos de compilación, decisiones de arquitectura e instrucciones. Cuando `settingSources` incluye `"project"` (como en el ejemplo anterior), el SDK carga estos archivos en el contexto al inicio de la sesión. El agente luego sigue sus convenciones de proyecto sin que tenga que repetirlas en cada mensaje.110Los archivos `CLAUDE.md` y los archivos `.claude/rules/*.md` proporcionan a su agente contexto persistente sobre su proyecto: convenciones de codificación, comandos de compilación, decisiones de arquitectura e instrucciones. Cuando `settingSources` incluye `"project"`, como en el [ejemplo de `settingSources`](#control-filesystem-settings-with-settingsources), el SDK carga estos archivos en el contexto al inicio de la sesión. El agente luego sigue sus convenciones de proyecto sin que tenga que repetirlas en cada mensaje.

111 111 

112<h3 id="claude-md-load-locations">112<h3 id="claude-md-load-locations">

113 Ubicaciones de carga de CLAUDE.md113 Ubicaciones de carga de CLAUDE.md


196* **Hooks del sistema de archivos:** comandos de shell definidos en `settings.json`, cargados cuando `settingSources` incluye la fuente relevante. Estos son los mismos hooks que configuraría para [sesiones interactivas de Claude Code](/docs/es/hooks-guide).196* **Hooks del sistema de archivos:** comandos de shell definidos en `settings.json`, cargados cuando `settingSources` incluye la fuente relevante. Estos son los mismos hooks que configuraría para [sesiones interactivas de Claude Code](/docs/es/hooks-guide).

197* **Hooks programáticos:** funciones de devolución de llamada pasadas directamente a `query()`. Se ejecutan en el proceso de su aplicación y pueden devolver decisiones estructuradas. Consulte [Controlar la ejecución con hooks](/docs/es/agent-sdk/hooks).197* **Hooks programáticos:** funciones de devolución de llamada pasadas directamente a `query()`. Se ejecutan en el proceso de su aplicación y pueden devolver decisiones estructuradas. Consulte [Controlar la ejecución con hooks](/docs/es/agent-sdk/hooks).

198 198 

199Ambos tipos se ejecutan durante el mismo ciclo de vida del hook. Si ya tiene hooks en el `.claude/settings.json` de su proyecto y establece `settingSources: ["project"]`, esos hooks se ejecutan automáticamente en el SDK sin configuración adicional.

200 

201Las devoluciones de llamada de hooks reciben la entrada de la herramienta y devuelven un diccionario de decisión. Devolver `{}` significa permitir que la herramienta continúe. Para bloquear la ejecución, devuelva un objeto `hookSpecificOutput` con `permissionDecision: "deny"` y un `permissionDecisionReason`. La razón se envía a Claude como el resultado de la herramienta. Consulte la [guía de hooks](/docs/es/agent-sdk/hooks) para la firma de devolución de llamada completa y los tipos de retorno.199Las devoluciones de llamada de hooks reciben la entrada de la herramienta y devuelven un diccionario de decisión. Devolver `{}` significa permitir que la herramienta continúe. Para bloquear la ejecución, devuelva un objeto `hookSpecificOutput` con `permissionDecision: "deny"` y un `permissionDecisionReason`. La razón se envía a Claude como el resultado de la herramienta. Consulte la [guía de hooks](/docs/es/agent-sdk/hooks) para la firma de devolución de llamada completa y los tipos de retorno.

202 200 

203<CodeGroup>201<CodeGroup>

agent-sdk/configuration.md +315 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Configura tu agente

6 

7> Configura sesiones del Agent SDK: compone el objeto de opciones, establece el modelo, el entorno y los límites, y encuentra la página de cada opción de característica.

8 

9Una sesión del Agent SDK lee la configuración desde archivos de configuración, variables de entorno y el objeto `options` que pasas cuando la inicias. Esta página muestra cómo componer el objeto `options` y qué archivos de configuración y variables de entorno lo controlan.

10 

11Para cada tipo de opción y valor predeterminado, consulta las referencias [`Options`](/docs/es/agent-sdk/typescript#options) (TypeScript) y [`ClaudeAgentOptions`](/docs/es/agent-sdk/python#claudeagentoptions) (Python).

12 

13<h2 id="pass-options-to-a-session">

14 Pasar opciones a una sesión

15</h2>

16 

17Cada llamada a `query()` acepta un objeto de opciones: `Options` en TypeScript, `ClaudeAgentOptions` en Python. Cada campo es opcional, y una sesión iniciada sin opciones se ejecuta con los valores predeterminados del SDK. El ejemplo a continuación configura una sesión de solo lectura que resume los TODOs abiertos de un proyecto. Los pares se leen como TypeScript / Python donde los nombres difieren:

18 

19* **`model`**: elige el modelo

20* **`allowedTools` / `allowed_tools`**: aprueba previamente una lista de herramientas de solo lectura

21* **`maxTurns` / `max_turns`**: limita el número de turnos

22* **`cwd`**: establece el directorio de trabajo

23 

24<CodeGroup>

25 ```typescript TypeScript theme={null}

26 import { query } from "@anthropic-ai/claude-agent-sdk";

27 

28 for await (const message of query({

29 prompt: "Summarize the open TODOs in this repo",

30 options: {

31 model: "claude-sonnet-5",

32 allowedTools: ["Read", "Glob", "Grep"],

33 maxTurns: 8,

34 cwd: "/path/to/repo",

35 },

36 })) {

37 if (message.type === "result" && message.subtype === "success" && !message.is_error) {

38 console.log(message.result);

39 }

40 }

41 ```

42 

43 ```python Python theme={null}

44 import asyncio

45 

46 from claude_agent_sdk import ClaudeAgentOptions, ResultMessage, query

47 

48 async def main():

49 options = ClaudeAgentOptions(

50 model="claude-sonnet-5",

51 allowed_tools=["Read", "Glob", "Grep"],

52 max_turns=8,

53 cwd="/path/to/repo",

54 )

55 

56 async for message in query(

57 prompt="Summarize the open TODOs in this repo",

58 options=options,

59 ):

60 if isinstance(message, ResultMessage) and not message.is_error:

61 print(message.result)

62 

63 asyncio.run(main())

64 ```

65</CodeGroup>

66 

67Apunta `cwd` a uno de tus propios proyectos y ejecuta el ejemplo. El resumen de los TODOs abiertos de ese proyecto se imprime cuando llega el mensaje de resultado.

68 

69`allowedTools` (TypeScript) o `allowed_tools` (Python) aprueba previamente las herramientas listadas, por lo que las llamadas a ellas se ejecutan sin detenerse para solicitar aprobación. Las herramientas fuera de la lista siguen disponibles. Cuando Claude llama a una herramienta no listada, el modo de permisos decide si la llamada se ejecuta. Para más información, consulta [Reglas de permitir y denegar](/docs/es/agent-sdk/permissions#allow-and-deny-rules).

70 

71<h2 id="load-settings-files">

72 Cargar archivos de configuración

73</h2>

74 

75Los archivos de configuración proporcionan configuración más allá del objeto de opciones. Dos opciones controlan cómo se cargan:

76 

77* **`settingSources` / `setting_sources`**: controla qué fuentes del sistema de archivos se cargan: usuario, proyecto y local. Los archivos de configuración y los archivos CLAUDE.md llegan a través de estas fuentes.

78* **`settings`**: carga una ruta de archivo de configuración o una cadena JSON en línea en cualquier idioma, y TypeScript también acepta un objeto de configuración. Sea cual sea la forma que pases, anula la configuración del sistema de archivos de usuario, proyecto y local; solo la configuración de política administrada tiene un rango más alto. Las referencias documentan el orden de precedencia completo bajo [Precedencia de configuración](/docs/es/agent-sdk/typescript#settings-precedence) para TypeScript y [Precedencia de configuración](/docs/es/agent-sdk/python#settings-precedence) para Python.

79 

80Pasa `[]` para desactivar la configuración de usuario, proyecto y local. Para más información, consulta [Usar características de Claude Code en el SDK](/docs/es/agent-sdk/claude-code-features).

81 

82<h2 id="choose-a-model">

83 Elige un modelo

84</h2>

85 

86A menos que la opción `model`, tu configuración o tu entorno seleccione un modelo, una nueva sesión comienza en [el modelo predeterminado de Claude Code](/docs/es/model-config#default-model-setting). Para el orden de esas fuentes, consulta [Establecer tu modelo](/docs/es/model-config#setting-your-model). Establece `model` para fijar un modelo específico, o para elegir uno más pequeño para agentes más rápidos y económicos. El valor toma un alias de modelo o un nombre de modelo completo; los alias y las versiones a las que se resuelven se enumeran bajo [Alias de modelos](/docs/es/model-config#model-aliases).

87 

88Establece `fallbackModel` (TypeScript) o `fallback_model` (Python) para nombrar un modelo de respaldo. Cuando el principal está sobrecargado o no disponible, la sesión cambia al respaldo. El principal se reintenta al inicio de cada turno del usuario, por lo que la sesión vuelve a él una vez que la interrupción pasa.

89 

90En cualquier idioma, la opción acepta un único modelo o una lista separada por comas de respaldos. Para el orden y el límite de cadena, consulta [Cadenas de modelo de respaldo](/docs/es/model-config#fallback-model-chains). En TypeScript, un respaldo igual a `model` lanza un error al inicio.

91 

92Los ejemplos a continuación muestran una lista de respaldo en TypeScript y un único respaldo en Python:

93 

94<CodeGroup>

95 ```typescript TypeScript theme={null}

96 const options = {

97 model: "claude-fable-5",

98 fallbackModel: "claude-opus-5,claude-sonnet-5",

99 };

100 ```

101 

102 ```python Python theme={null}

103 options = ClaudeAgentOptions(

104 model="claude-fable-5",

105 fallback_model="claude-opus-5",

106 )

107 ```

108</CodeGroup>

109 

110<span id="sampling-parameters" />

111 

112<Note>

113 Los parámetros de solicitud de la [API de Mensajes](https://platform.claude.com/docs/en/api/messages) `temperature`, `top_p` y `max_tokens` no tienen campos en el objeto de opciones en ninguno de los idiomas. Establece el [nivel de esfuerzo](/docs/es/agent-sdk/agent-loop#effort-level) o un [límite de gasto](#limit-turns-and-spend) en su lugar, o llama a la API de Mensajes cuando necesites esos parámetros directamente.

114</Note>

115 

116<h2 id="set-environment-variables">

117 Establecer variables de entorno

118</h2>

119 

120La opción `env` establece variables de entorno para el proceso de Claude Code que ejecuta tu sesión. Si tus valores reemplazan el entorno heredado o se fusionan con él difiere según el idioma:

121 

122* **TypeScript**: `env` reemplaza el entorno del subproceso

123* **Python**: el SDK fusiona tus valores sobre el entorno heredado, y tus valores anulan los heredados

124 

125En TypeScript, expande `process.env` en `env` para mantener variables heredadas como `PATH`, `HOME` y `ANTHROPIC_API_KEY`. Cuando dejas `env` sin establecer, el subproceso hereda tu entorno en ambos idiomas.

126 

127El ejemplo enruta el tráfico de API a través de una puerta de enlace estableciendo `ANTHROPIC_BASE_URL`.

128 

129<CodeGroup>

130 ```typescript TypeScript theme={null}

131 const options = {

132 env: { ...process.env, ANTHROPIC_BASE_URL: "https://gateway.example.com" },

133 };

134 ```

135 

136 ```python Python theme={null}

137 options = ClaudeAgentOptions(

138 env={"ANTHROPIC_BASE_URL": "https://gateway.example.com"},

139 )

140 ```

141</CodeGroup>

142 

143Las variables que pasas también pueden configurar Claude Code en sí. Para las variables que el proceso de Claude Code lee, consulta [Variables de entorno](/docs/es/env-vars). Para ajustar los tiempos de espera de API y la detección de estancamiento de esta manera, sigue la sección Manejar respuestas de API lentas o estancadas en la [referencia de TypeScript](/docs/es/agent-sdk/typescript#handle-slow-or-stalled-api-responses) o la [referencia de Python](/docs/es/agent-sdk/python#handle-slow-or-stalled-api-responses).

144 

145<h2 id="set-the-working-directory">

146 Establecer el directorio de trabajo

147</h2>

148 

149Establece `cwd` para ejecutar la sesión en un directorio específico. Cuando dejas `cwd` sin establecer, la sesión se ejecuta en el directorio de trabajo de tu proceso. Ninguno de los SDK tiene un setter para `cwd`. Para ejecutar en un directorio diferente, inicia otra sesión con ese `cwd`.

150 

151Claude Code lee el directorio de trabajo para determinar:

152 

153* **Configuración y hooks del proyecto**: qué [configuración y hooks del proyecto se cargan](/docs/es/agent-sdk/claude-code-features)

154* **Skills**: dónde [se descubren las skills de la sesión](/docs/es/agent-sdk/skills)

155* **Almacenamiento de sesión**: a qué proyecto [pertenece una sesión almacenada](/docs/es/agent-sdk/session-storage)

156 

157Para permitir que las herramientas accedan a archivos fuera del directorio de trabajo, agrega rutas con `additionalDirectories` (TypeScript) o `add_dirs` (Python). Para el alcance de esa concesión, consulta [Los directorios adicionales otorgan acceso a archivos, no configuración](/docs/es/permissions#additional-directories-grant-file-access-not-configuration).

158 

159<h2 id="limit-turns-and-spend">

160 Limitar turnos y gasto

161</h2>

162 

163Limita turnos y gasto con `maxTurns` / `max_turns` y `maxBudgetUsd` / `max_budget_usd`. Ambos límites están desactivados cuando no se establecen. Cuando una sesión alcanza un límite, la ejecución termina con un mensaje de resultado cuyo subtipo nombra el límite, `error_max_turns` o `error_max_budget_usd`. Lo que sucede después difiere según el modo de entrada:

164 

165* **`query()` de un solo disparo**: el SDK produce el resultado del límite y luego lanza, así que envuelve el bucle en un bloque try para continuar más allá del error

166* **Entrada de transmisión**: la sesión permanece activa después de un resultado de límite, y el conteo de turnos máximos comienza de nuevo para cada mensaje en cola. El total del presupuesto se acumula entre mensajes, y una vez que el gasto alcanza el límite, los mensajes posteriores en la misma conversación terminan con el mismo resultado de presupuesto. Un [`/clear`](/docs/es/agent-sdk/cost-tracking) comienza el presupuesto de nuevo

167 

168Los dos límites tratan `0` de manera diferente:

169 

170* **`maxTurns` / `max_turns`**: `0` ejecuta la sesión sin un límite de turnos, lo mismo que dejar la opción sin establecer

171* **`maxBudgetUsd` / `max_budget_usd`**: la CLI rechaza `0` como una cantidad inválida al inicio, y la sesión nunca se ejecuta

172 

173Para más información sobre ambos límites, incluido el gasto de subagentes, consulta [Turnos y presupuesto](/docs/es/agent-sdk/agent-loop#turns-and-budget).

174 

175<h2 id="change-configuration-mid-session">

176 Cambiar configuración durante la sesión

177</h2>

178 

179Cuando inicias una sesión con [entrada de transmisión](/docs/es/agent-sdk/streaming-vs-single-mode), puedes cambiar su modelo y modo de permisos mientras se ejecuta. Dónde llamas a los setters difiere según el idioma:

180 

181* **TypeScript**: métodos en el objeto que `query()` devuelve

182* **Python**: métodos en [`ClaudeSDKClient`](/docs/es/agent-sdk/python#claudesdkclient), ya que `query()` devuelve un iterador simple sin métodos de control

183 

184Ambos idiomas tienen los mismos setters:

185 

186* **`setModel()` / `set_model()`**: cambia el modelo. Llámalo sin modelo para cambiar al [modelo predeterminado de Claude Code](/docs/es/model-config#default-model-setting) en lugar del `model` que pasaste en opciones.

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

188 

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

190 

191* **`applyFlagSettings()`**: aplica configuración en tiempo de ejecución, como en `await session.applyFlagSettings({ effortLevel: "high" })`. El método toma claves de archivo de configuración en lugar de campos de opciones, así que consulta la [referencia de `applyFlagSettings()`](/docs/es/agent-sdk/typescript#applyflagsettings) para el esquema y para qué claves tienen efecto durante la sesión.

192* **`updateSettings()`**: escribe un conjunto permitido de claves en el archivo de configuración local del proyecto, como en `await session.updateSettings("localSettings", { outputStyle: "Explanatory" })`. Las claves escritas tienen efecto en la siguiente solicitud de la sesión y persisten para sesiones posteriores que cargan configuración `local`. La fila del método en la [tabla de métodos](/docs/es/agent-sdk/typescript#methods) nombra las claves permitidas y el piso de versión.

193 

194El ejemplo a continuación ejecuta una sesión de dos turnos, cambia la configuración entre los turnos e imprime el modelo que respondió cada turno. En TypeScript, la transmisión de solicitud mantiene el segundo mensaje hasta que los setters se hayan ejecutado, y el segundo turno se ejecuta en el nuevo modelo.

195 

196<CodeGroup>

197 ```typescript TypeScript theme={null}

198 import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";

199 

200 function userMessage(text: string): SDKUserMessage {

201 return { type: "user", message: { role: "user", content: text }, parent_tool_use_id: null };

202 }

203 

204 // Hold the second prompt until the setters have run.

205 let startSecondTurn!: () => void;

206 const secondTurnReady = new Promise<void>((resolve) => {

207 startSecondTurn = resolve;

208 });

209 

210 async function* turnPrompts(): AsyncGenerator<SDKUserMessage, void> {

211 yield userMessage("Reply with exactly: ready");

212 await secondTurnReady;

213 yield userMessage("Reply with exactly: done");

214 }

215 

216 const session = query({

217 prompt: turnPrompts(),

218 options: {

219 model: "claude-sonnet-5",

220 },

221 });

222 

223 let turnModel = "";

224 let completedTurns = 0;

225 

226 for await (const message of session) {

227 if (message.type === "assistant") {

228 turnModel = message.message.model;

229 } else if (message.type === "result") {

230 completedTurns += 1;

231 if (completedTurns === 1) {

232 console.log(`First turn model: ${turnModel}`);

233 await session.setModel("claude-opus-5");

234 await session.setPermissionMode("acceptEdits");

235 startSecondTurn();

236 } else {

237 console.log(`Second turn model: ${turnModel}`);

238 break;

239 }

240 }

241 }

242 ```

243 

244 ```python Python theme={null}

245 import asyncio

246 

247 from claude_agent_sdk import AssistantMessage, ClaudeAgentOptions, ClaudeSDKClient

248 

249 async def main():

250 options = ClaudeAgentOptions(model="claude-sonnet-5")

251 

252 async with ClaudeSDKClient(options=options) as client:

253 await client.query("Reply with exactly: ready")

254 first_model = ""

255 async for message in client.receive_response():

256 if isinstance(message, AssistantMessage):

257 first_model = message.model

258 

259 await client.set_model("claude-opus-5")

260 await client.set_permission_mode("acceptEdits")

261 

262 await client.query("Reply with exactly: done")

263 second_model = ""

264 async for message in client.receive_response():

265 if isinstance(message, AssistantMessage):

266 second_model = message.model

267 

268 print(f"First turn model: {first_model}")

269 print(f"Second turn model: {second_model}")

270 

271 asyncio.run(main())

272 ```

273</CodeGroup>

274 

275En la API de Claude, el programa imprime `First turn model: claude-sonnet-5`, luego `Second turn model: claude-opus-5` después del cambio.

276 

277<Note>

278 Cada modelo tiene su propio caché de solicitud, por lo que después de un cambio durante la sesión, la siguiente solicitud recomputa la conversación completa sin caché a las tasas del nuevo modelo. Para más información, consulta [Cambiar modelos](/docs/es/prompt-caching#switching-models).

279</Note>

280 

281<h2 id="configure-specific-features">

282 Configurar características específicas

283</h2>

284 

285La tabla a continuación asigna cada opción a la característica que configura. Para opciones que esta página no cubre, consulta las referencias de [TypeScript](/docs/es/agent-sdk/typescript#options) y [Python](/docs/es/agent-sdk/python#claudeagentoptions). Si conoces tu objetivo pero no qué opción lo sirve, comienza desde [Elige la característica correcta](/docs/es/agent-sdk/claude-code-features#choose-the-right-feature).

286 

287| TypeScript | Python | Controla | Cubierto en |

288| ------------------------- | --------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

289| `permissionMode` | `permission_mode` | Qué puede hacer el agente sin aprobación | [Configurar permisos](/docs/es/agent-sdk/permissions) |

290| `allowedTools` | `allowed_tools` | Qué llamadas de herramientas están preaprobadas | [Configurar permisos](/docs/es/agent-sdk/permissions) |

291| `canUseTool` | `can_use_tool` | Tu devolución de llamada de aprobación para llamadas de herramientas | [Manejar solicitudes de aprobación de herramientas](/docs/es/agent-sdk/user-input#handle-tool-approval-requests) |

292| `systemPrompt` | `system_prompt` | Las instrucciones del agente | [Modificar solicitudes del sistema](/docs/es/agent-sdk/modifying-system-prompts) |

293| `settingSources` | `setting_sources` | Qué configuración del sistema de archivos se carga | [Usar características de Claude Code en el SDK](/docs/es/agent-sdk/claude-code-features) |

294| `mcpServers` | `mcp_servers` | Servidores de herramientas externas | [Conectar a herramientas externas con MCP](/docs/es/agent-sdk/mcp) |

295| `agents` | `agents` | Definiciones de subagentes | [Subagentes](/docs/es/agent-sdk/subagents) |

296| `hooks` | `hooks` | Devoluciones de llamada en puntos del ciclo de vida | [Hooks](/docs/es/agent-sdk/hooks) |

297| `skills` | `skills` | Qué skills se cargan | [Extender agentes con skills](/docs/es/agent-sdk/skills) |

298| `plugins` | `plugins` | Qué plugins se cargan | [Plugins](/docs/es/agent-sdk/plugins) |

299| `outputFormat` | `output_format` | Esquemas de salida estructurada | [Salidas estructuradas](/docs/es/agent-sdk/structured-outputs) |

300| `resume` | `resume` | Continuando una sesión almacenada | [Sesiones](/docs/es/agent-sdk/sessions) |

301| `forkSession` | `fork_session` | Ramificación de una sesión | [Sesiones](/docs/es/agent-sdk/sessions) |

302| `sessionStore` | `session_store` | Persistencia de sesión externa | [Almacenamiento de sesión](/docs/es/agent-sdk/session-storage) |

303| `enableFileCheckpointing` | `enable_file_checkpointing` | Ediciones de archivo rebobinables | [Punto de control de archivo](/docs/es/agent-sdk/file-checkpointing) |

304| `effort` | `effort` | Cuánto trabajo pone Claude en las respuestas | [Nivel de esfuerzo](/docs/es/agent-sdk/agent-loop#effort-level) |

305| `sandbox` | `sandbox` | Comportamiento de sandbox para la ejecución de herramientas | [TypeScript](/docs/es/agent-sdk/typescript#sandbox-configuration) y referencias de [Python](/docs/es/agent-sdk/python#sandbox-configuration), con contexto de implementación en [Implementación segura](/docs/es/agent-sdk/secure-deployment) |

306 

307<h2 id="next-steps">

308 Próximos pasos

309</h2>

310 

311Para ver la configuración compuesta en agentes funcionales:

312 

313* **[Inicio rápido](/docs/es/agent-sdk/quickstart)**: construye y ejecuta un primer agente de principio a fin

314* **[Ejemplos](/docs/es/agent-sdk/examples)**: encuentra un proyecto completo y ejecutable o una receta guiada de Claude Cookbook que coincida con lo que quieres construir

315* **[Aislamiento multiinquilino](/docs/es/agent-sdk/hosting#multi-tenant-isolation)**: aísla la configuración y la memoria de cada inquilino con `settingSources` / `setting_sources`, `env` y `cwd`

Details

78 78 

79En TypeScript, el SDK también emite un [`SDKConversationResetMessage`](/docs/es/agent-sdk/typescript#sdkconversationresetmessage) en cada reinicio, por lo que puede detectar reinicios desde la secuencia. En Python, el SDK asimismo emite un `ConversationResetMessage`. Antes de Python SDK v0.2.137, el iterador de Python descartaba ese mensaje, por lo que en esas versiones cuente los reinicios usted mismo a partir de los turnos `/clear` que su aplicación envía.79En TypeScript, el SDK también emite un [`SDKConversationResetMessage`](/docs/es/agent-sdk/typescript#sdkconversationresetmessage) en cada reinicio, por lo que puede detectar reinicios desde la secuencia. En Python, el SDK asimismo emite un `ConversationResetMessage`. Antes de Python SDK v0.2.137, el iterador de Python descartaba ese mensaje, por lo que en esas versiones cuente los reinicios usted mismo a partir de los turnos `/clear` que su aplicación envía.

80 80 

81`maxBudgetUsd`, o `max_budget_usd` en Python, se compara con el mismo total acumulado, por lo que un `/clear` también reinicia el presupuesto.81`maxBudgetUsd` (TypeScript) o `max_budget_usd` (Python) se compara con el mismo total acumulado, por lo que un `/clear` también reinicia el presupuesto.

82 82 

83<h2 id="get-the-total-cost-of-a-query">83<h2 id="get-the-total-cost-of-a-query">

84 Obtener el costo total de una consulta84 Obtener el costo total de una consulta

Details

138 138 

139Pase el servidor MCP que creó a `query` a través de la opción `mcpServers`. La clave en `mcpServers` se convierte en el segmento `{server_name}` en el nombre completamente calificado de cada herramienta: `mcp__{server_name}__{tool_name}`. Liste ese nombre en `allowedTools` para que la herramienta se ejecute sin un aviso de permiso.139Pase el servidor MCP que creó a `query` a través de la opción `mcpServers`. La clave en `mcpServers` se convierte en el segmento `{server_name}` en el nombre completamente calificado de cada herramienta: `mcp__{server_name}__{tool_name}`. Liste ese nombre en `allowedTools` para que la herramienta se ejecute sin un aviso de permiso.

140 140 

141Estos fragmentos reutilizan el `weatherServer` del [ejemplo anterior](#weather-tool-example) para preguntarle a Claude cuál es el clima en una ubicación específica.141Estos fragmentos reutilizan el `weatherServer` del [ejemplo de herramienta meteorológica](#weather-tool-example) para preguntarle a Claude cuál es el clima en una ubicación específica.

142 142 

143<CodeGroup>143<CodeGroup>

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

Details

179 </Step>179 </Step>

180 180 

181 <Step title="Capturar UUID de checkpoint e ID de sesión">181 <Step title="Capturar UUID de checkpoint e ID de sesión">

182 Con la opción `replay-user-messages` establecida (mostrada arriba), cada mensaje de usuario en el flujo de respuesta tiene un UUID que sirve como checkpoint.182 Con la opción `replay-user-messages` establecida, cada mensaje de usuario en el flujo de respuesta tiene un UUID que sirve como checkpoint.

183 183 

184 Para la mayoría de los casos de uso, capture el UUID del primer mensaje de usuario (`message.uuid`); revertir a él restaura todos los archivos a su estado original. Para almacenar múltiples checkpoints y revertir a estados intermedios, consulte [Múltiples puntos de restauración](#multiple-restore-points).184 Para la mayoría de los casos de uso, capture el UUID del primer mensaje de usuario (`message.uuid`); revertir a él restaura todos los archivos a su estado original. Para almacenar múltiples checkpoints y revertir a estados intermedios, consulte [Múltiples puntos de restauración](#multiple-restore-points).

185 185 

Details

826 826 

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

828 828 

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

830 830 

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

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

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

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

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

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

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

837 838 

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

840 

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

839 842 

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

Details

147 147 

148 declare const userInput: string;148 declare const userInput: string;

149 declare const sessionId: string; // looked up from your database by user149 declare const sessionId: string; // looked up from your database by user

150 declare const sessionStore: SessionStore; // S3, Redis, Postgres, or your own adapter150 declare const sessionStore: SessionStore; // an object store, key-value store, database, or your own adapter

151 151 

152 for await (const message of query({152 for await (const message of query({

153 prompt: userInput,153 prompt: userInput,


163 163 

164 user_input: str = ...164 user_input: str = ...

165 session_id: str = ... # looked up from your database by user165 session_id: str = ... # looked up from your database by user

166 session_store: SessionStore = ... # S3, Redis, Postgres, or your own adapter166 session_store: SessionStore = ... # an object store, key-value store, database, or your own adapter

167 167 

168 168 

169 async def main():169 async def main():


244 Persistencia de sesión y estado244 Persistencia de sesión y estado

245</h3>245</h3>

246 246 

247El disco local predeterminado se pierde al reiniciar, reducir escala o mover a un nodo diferente. Para cualquier sesión que un usuario espere reanudar, refleje la transcripción en almacenamiento duradero con un adaptador [`SessionStore`](/docs/es/agent-sdk/session-storage). Consulte [Implementaciones de referencia](/docs/es/agent-sdk/session-storage#reference-implementations) para adaptadores de S3, Redis y Postgres y un conjunto de conformidad para el suyo.247El disco local predeterminado se pierde al reiniciar, reducir escala o mover a un nodo diferente. Para cualquier sesión que un usuario espere reanudar, refleje la transcripción en almacenamiento duradero con un adaptador [`SessionStore`](/docs/es/agent-sdk/session-storage). Consulte [Implementaciones de referencia](/docs/es/agent-sdk/session-storage#reference-implementations) para adaptadores de ejemplo para un almacén de objetos, un almacén de pares clave-valor y una base de datos, y un conjunto de conformidad para el suyo.

248 248 

249Tres cosas que debe saber sobre cómo se comporta `SessionStore`:249Tres cosas que debe saber sobre cómo se comporta `SessionStore`:

250 250 

agent-sdk/mcp.md +12 −1

Details

156 Temporización de la conexión156 Temporización de la conexión

157</h2>157</h2>

158 158 

159Claude Code registra los servidores que usted pasa en `options.mcpServers` al inicio y emite el [mensaje init](#error-handling) una vez que se resuelve la espera de primer turno, si la hay. Sin `options.mcpServers`, Claude Code espera 2 segundos para que se conecten los servidores pendientes antes del primer turno, por lo que los servidores cargados desde [archivos de configuración](#from-a-config-file) como `.mcp.json` comúnmente muestran `pending` en init. Cuando cada servidor de `options.mcpServers` se conecta, y si retrasa el primer turno, depende de su tipo:159Claude Code registra los servidores que usted pasa en `options.mcpServers` al inicio y emite el [mensaje init](#error-handling) una vez que se resuelve la espera de primer turno, si la hay. Si cada servidor de `options.mcpServers` retrasa el primer turno, y cuándo se conecta, depende de su tipo:

160 160 

161| Tipo de servidor | ¿Retrasa el primer turno? | Tiempo de espera del primer turno |161| Tipo de servidor | ¿Retrasa el primer turno? | Tiempo de espera del primer turno |

162| :----------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |162| :----------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |


164| Servidor remoto con una lista de herramientas en caché, guardada por Claude Code desde una conexión anterior | No; las herramientas en caché están disponibles desde el primer turno | Ninguno; se conecta en su primera llamada de herramienta, y esa conexión diferida tiene su propio tiempo de espera |164| Servidor remoto con una lista de herramientas en caché, guardada por Claude Code desde una conexión anterior | No; las herramientas en caché están disponibles desde el primer turno | Ninguno; se conecta en su primera llamada de herramienta, y esa conexión diferida tiene su propio tiempo de espera |

165| Servidor [SDK](#sdk-mcp-servers) en proceso | Sí, hasta que se conecte y enumere sus herramientas | Ninguno; las solicitudes de conexión y enumeración de herramientas tienen cada una su propio tiempo de espera |165| Servidor [SDK](#sdk-mcp-servers) en proceso | Sí, hasta que se conecte y enumere sus herramientas | Ninguno; las solicitudes de conexión y enumeración de herramientas tienen cada una su propio tiempo de espera |

166 166 

167Los servidores cargados desde [archivos de configuración](#from-a-config-file) como `.mcp.json` o desde plugins comúnmente muestran `pending` en el mensaje init. Cuando `options.mcpServers` contiene un servidor stdio, HTTP o SSE, el primer turno espera a que se conecten estos servidores pendientes también, hasta `MCP_TIMEOUT`. Cuando `options.mcpServers` está vacío o contiene solo servidores SDK, el primer turno espera hasta 2 segundos en su lugar:

168 

169* **Con [búsqueda de herramientas](/docs/es/agent-sdk/tool-search), el valor predeterminado**: la espera cubre servidores aún pendientes configurados con [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral) y no el resto. El resto sigue conectándose en segundo plano. [Disponibilidad de herramientas](/docs/es/mcp#tool-availability) describe cómo Claude accede a sus herramientas una vez que se conectan.

170* **Sin búsqueda de herramientas**: la espera cubre cada servidor pendiente. [Configurar búsqueda de herramientas](/docs/es/agent-sdk/tool-search#configure-tool-search) cubre qué desactiva la búsqueda de herramientas. Si usted excluye la herramienta `ToolSearch` de la sesión, por ejemplo a través de `disallowedTools`, la sesión también se ejecuta sin búsqueda de herramientas.

171 

172Si usted establece `permissionPromptToolName`, el primer turno también espera al servidor de esa herramienta en todos los casos, hasta `MCP_TIMEOUT`.

173 

174Para establecer la espera del primer turno usted mismo, agregue `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` a la [opción `env`](/docs/es/agent-sdk/configuration#set-environment-variables), por ejemplo `CLAUDE_CODE_MCP_STARTUP_WAIT_MS: "5000"`. El primer turno entonces espera hasta esa cantidad de milisegundos para cada servidor pendiente, independientemente de si la búsqueda de herramientas está disponible. Este plazo también reemplaza la espera del primer turno `MCP_TIMEOUT` para servidores stdio, HTTP y SSE en `options.mcpServers`. `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` requiere Claude Code v2.1.274 o posterior.

175 

176Los servidores aún pendientes cuando termina la espera siguen conectándose en segundo plano. Establezca la variable en `0` para omitir la espera. Un servidor `permissionPromptToolName` mantiene su propia espera `MCP_TIMEOUT` independientemente del valor.

177 

167Para bloquear el inicio mismo en una fase separada y anterior a la espera del primer turno, antes de que se envíe el mensaje init:178Para bloquear el inicio mismo en una fase separada y anterior a la espera del primer turno, antes de que se envíe el mensaje init:

168 179 

169* Establezca [`MCP_CONNECTION_NONBLOCKING`](/docs/es/env-vars) en `0` para bloquear todo el lote de conexiones. Claude Code limita esa espera a 5 segundos por defecto. Ajuste el límite con la variable de entorno [`MCP_CONNECT_TIMEOUT_MS`](/docs/es/env-vars), en milisegundos. Los servidores aún pendientes en ese plazo siguen conectándose en segundo plano.180* Establezca [`MCP_CONNECTION_NONBLOCKING`](/docs/es/env-vars) en `0` para bloquear todo el lote de conexiones. Claude Code limita esa espera a 5 segundos por defecto. Ajuste el límite con la variable de entorno [`MCP_CONNECT_TIMEOUT_MS`](/docs/es/env-vars), en milisegundos. Los servidores aún pendientes en ese plazo siguen conectándose en segundo plano.

Details

152 152 

153Una vez creado, active los estilos de salida a través de:153Una vez creado, active los estilos de salida a través de:

154 154 

155* **CLI**: ejecute `/config` y seleccione un estilo de salida155* **CLI**: ejecute `/output-style <style>`, por ejemplo `/output-style concise`, o ejecute `/config` y seleccione uno. El comando `/output-style` requiere Claude Code v2.1.269 o posterior.

156* **Configuración**: establezca `outputStyle` en `.claude/settings.local.json`156* **Configuración**: establezca `outputStyle` en `.claude/settings.local.json`

157* **TypeScript SDK**: establezca `outputStyle` dentro del objeto `settings` en línea pasado a `query()`, o apunte `settings` a un archivo de configuración que lo establezca. `outputStyle` no es un campo `Options` de nivel superior:157* **TypeScript SDK**: establezca `outputStyle` dentro del objeto `settings` en línea pasado a `query()`, o apunte `settings` a un archivo de configuración que lo establezca. `outputStyle` no es un campo `Options` de nivel superior:

158 158 


352 Almacenar en caché la parte estática de una indicación personalizada352 Almacenar en caché la parte estática de una indicación personalizada

353</h4>353</h4>

354 354 

355En el SDK de TypeScript, puede pasar una indicación personalizada como una matriz de cadenas en lugar de una cadena, con el marcador `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` entre la parte estática y el resto. Úselo cuando su indicación combine instrucciones que son iguales en cada solicitud con contexto que cambia por solicitud, como el cliente o el ticket que maneja el agente. Cuando pasa ambas partes como una cadena, un cambio en la parte por solicitud cambia toda la indicación del sistema, por lo que las instrucciones estáticas pierden el caché también. Esta forma no está disponible en el SDK de Python, cuya opción `system_prompt` acepta una cadena, un preset, o un [archivo](/docs/es/agent-sdk/python#systempromptfile).355En el SDK de TypeScript, puede pasar una indicación personalizada como una matriz de cadenas en lugar de una cadena, con el marcador `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` entre la parte estática y el resto. Úselo cuando su indicación combine instrucciones que son iguales en cada solicitud con contexto que cambia por solicitud, como el cliente o el ticket que maneja el agente. Cuando pasa ambas partes como una cadena, un cambio en la parte por solicitud cambia toda la indicación del sistema, por lo que las instrucciones estáticas pierden el caché también. La forma de matriz no está disponible en el SDK de Python; [`ClaudeAgentOptions`](/docs/es/agent-sdk/python#claudeagentoptions) enumera las formas que `system_prompt` acepta.

356 356 

357<Note>357<Note>

358 El SDK divide la indicación solo cuando llama a la API de Claude directamente o se ejecuta en [Claude Platform on AWS](/docs/es/claude-platform-on-aws). En todas las demás configuraciones, como Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o una [puerta de enlace LLM](/docs/es/llm-gateway-connect), y siempre que establezca [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities), el SDK envía toda la indicación como un bloque, igual que pasar una cadena.358 El SDK divide la indicación solo cuando llama a la API de Claude directamente o se ejecuta en [Claude Platform on AWS](/docs/es/claude-platform-on-aws). En todas las demás configuraciones, como Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o una [puerta de enlace LLM](/docs/es/llm-gateway-connect), y siempre que establezca [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities), el SDK envía toda la indicación como un bloque, igual que pasar una cadena.


391 Cambiar la indicación de una sesión existente391 Cambiar la indicación de una sesión existente

392</h3>392</h3>

393 393 

394De forma predeterminada, Claude Code construye la indicación del sistema una vez, en la primera solicitud de una sesión, con su texto `append` o indicación personalizada incluida, y la registra en la sesión. Hasta que la sesión se compacte, cada solicitud posterior usa esa indicación registrada, incluso después de que regrese a la sesión con `resume` o `continue`. Si pasa un `append` o indicación personalizada diferente en esa llamada posterior, entra en vigor una vez que la sesión se compacta o en una nueva sesión.394De forma predeterminada, si pasa un `append` o indicación personalizada diferente cuando regresa a una sesión con `resume` o `continue`, Claude no la ve en el siguiente turno. Claude Code registra la indicación del sistema en la primera solicitud de una sesión y reutiliza ese registro hasta que la sesión se compacta. El nuevo texto entra en vigor después de esa compactación, o en una nueva sesión.

395 395 

396Si inicia Claude Code en [modo bare](/docs/es/headless#start-faster-with-bare-mode) pasando `--bare` a través de `extraArgs` o estableciendo `CLAUDE_CODE_SIMPLE=1`, el registro se desactiva a menos que establezca `snapshot: true` en la forma de objeto de `systemPrompt`. El registro de un `append` o indicación personalizada de forma predeterminada requiere Claude Code v2.1.265 o posterior, que el SDK del Agente TypeScript agrupa desde v0.3.265. Antes de Claude Code v2.1.268, las sesiones que no [obtienen banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), incluyendo sesiones en Amazon Bedrock, Google Cloud's Agent Platform, y Microsoft Foundry, reconstruían la indicación en cada solicitud y `snapshot` no tenía efecto.396<h4 id="update-claude’s-instructions-mid-session">

397 Actualizar las instrucciones de Claude a mitad de sesión

398</h4>

399 

400Si las instrucciones que pone en la indicación del sistema necesitan cambiar mientras una sesión se está ejecutando, por ejemplo porque su usuario cambió el agente a un modo de solo lectura o editó su configuración en su aplicación, envíe las nuevas instrucciones en la conversación en lugar de cambiar `systemPrompt`:

401 

402* **En su siguiente mensaje**: incluya las nuevas instrucciones en el siguiente mensaje del usuario que envíe.

403* **Desde un hook**: devuelva [`additionalContext`](/docs/es/hooks#add-context-for-claude) desde un callback de hook `UserPromptSubmit` o `PostToolUse` [hook callback](/docs/es/agent-sdk/hooks#outputs), escrito como una declaración factual como "El espacio de trabajo ahora es de solo lectura". El SDK inserta el texto en la conversación en el punto donde se activó el hook, por lo que la indicación registrada permanece sin cambios.

404 

405<h4 id="turn-recording-off-while-you-iterate-on-wording">

406 Desactivar la grabación mientras itera en la redacción

407</h4>

408 

409Mientras itera en la redacción de la indicación y desea que cada edición llegue a una sesión que reanuda, establezca `snapshot` en false en la forma de objeto de la indicación del sistema. Claude Code luego reconstruye la indicación en cada solicitud. El campo está disponible en las formas preset y personalizada de [`systemPrompt`](/docs/es/agent-sdk/typescript#options) en TypeScript y de [`system_prompt`](/docs/es/agent-sdk/python#systempromptpreset) en Python, y requiere `@anthropic-ai/claude-agent-sdk` v0.3.257 o posterior, o `claude-agent-sdk` v0.2.153 o posterior.

410 

411Mantenga la grabación activada en producción. Con la grabación desactivada, un `append` o indicación personalizada diferente en una sesión reanudada llega a Claude en el siguiente turno, y esa solicitud no puede reutilizar el [caché de indicación](/docs/es/prompt-caching#how-the-cache-is-organized) de la sesión. Donde la API impone [pensamiento preservado](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking), Claude también pierde su pensamiento de turnos anteriores.

412 

413Fuera de [sesiones en la nube](/docs/es/cloud-environments), si inicia Claude Code en [modo bare](/docs/es/headless#start-faster-with-bare-mode) pasando `--bare` a través de `extraArgs` o estableciendo `CLAUDE_CODE_SIMPLE=1`, la grabación se desactiva a menos que establezca `snapshot: true`.

397 414 

398Para reconstruir la indicación en cada solicitud en su lugar, establezca `snapshot: false` en la forma de objeto de `systemPrompt` en el SDK de TypeScript: `{ type: "preset", preset: "claude_code", append, snapshot: false }` o `{ type: "custom", prompt, snapshot: false }`. Use esta forma mientras itera en la redacción de la indicación, o cuando su aplicación cambia `append` entre llamadas que reanudan la misma sesión. El campo `snapshot` requiere `@anthropic-ai/claude-agent-sdk` v0.3.257 o posterior.415El registro de un `append` o indicación personalizada de forma predeterminada requiere Claude Code v2.1.265 o posterior, que el SDK del Agente TypeScript agrupa desde v0.3.265 y el SDK del Agente Python desde v0.2.153. Antes de Claude Code v2.1.268, las sesiones que no [obtienen banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), incluyendo sesiones en Amazon Bedrock, Google Cloud's Agent Platform, y Microsoft Foundry, reconstruían la indicación en cada solicitud y `snapshot` no tenía efecto.

399 416 

400<h2 id="compare-the-four-approaches">417<h2 id="compare-the-four-approaches">

401 Comparación de los cuatro enfoques418 Comparación de los cuatro enfoques

Details

251| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |251| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

252| `OTEL_LOG_USER_PROMPTS=1` | Texto de indicación en eventos `claude_code.user_prompt` y en el tramo `claude_code.interaction` |252| `OTEL_LOG_USER_PROMPTS=1` | Texto de indicación en eventos `claude_code.user_prompt` y en el tramo `claude_code.interaction` |

253| `OTEL_LOG_TOOL_DETAILS=1` | Argumentos de entrada de herramienta (rutas de archivo, comandos de shell, patrones de búsqueda) en eventos `claude_code.tool_result` |253| `OTEL_LOG_TOOL_DETAILS=1` | Argumentos de entrada de herramienta (rutas de archivo, comandos de shell, patrones de búsqueda) en eventos `claude_code.tool_result` |

254| `OTEL_LOG_TOOL_CONTENT=1` | Cuerpos de entrada y salida de herramienta completos como eventos de tramo en `claude_code.tool`, truncados en 60 KB de forma predeterminada, configurables mediante `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, que requiere Claude Code v2.1.214 o posterior. Requiere que el [rastreo](#read-agent-traces) esté habilitado |254| `OTEL_LOG_TOOL_CONTENT=1` | Un evento de tramo [`tool.output`](/docs/es/monitoring-usage#tool-output-span-event) en `claude_code.tool` con contenidos de archivo y salida de Bash, truncado en 60 KB de forma predeterminada, configurable mediante `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, que requiere Claude Code v2.1.214 o posterior. Requiere que el [rastreo](#read-agent-traces) esté habilitado. Los atributos de tramo llevan contenido de herramienta bajo [sus propias compuertas](/docs/es/monitoring-usage#new-context-gates) |

255| `OTEL_LOG_RAW_API_BODIES` | Solicitud y respuesta JSON completas de la API de Mensajes de Anthropic como eventos de registro `claude_code.api_request_body` y `claude_code.api_response_body`. Establezca en `1` para cuerpos en línea truncados en 60 KB de forma predeterminada, o `file:<dir>` para cuerpos sin truncar en disco con una ruta `body_ref` en el evento. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` configura el límite de truncamiento en línea, y requiere Claude Code v2.1.214 o posterior. Los cuerpos incluyen el historial de conversación completo y tienen contenido de pensamiento extendido redactado. Habilitar esto implica consentimiento para todo lo que las tres variables anteriores revelarían |255| `OTEL_LOG_RAW_API_BODIES` | Solicitud y respuesta JSON completas de la API de Mensajes de Anthropic como eventos de registro `claude_code.api_request_body` y `claude_code.api_response_body`. Establezca en `1` para cuerpos en línea truncados en 60 KB de forma predeterminada, o `file:<dir>` para cuerpos sin truncar en disco con una ruta `body_ref` en el evento. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` configura el límite de truncamiento en línea, y requiere Claude Code v2.1.214 o posterior. Los cuerpos incluyen el historial de conversación completo y tienen contenido de pensamiento extendido redactado. Habilitar esto implica consentimiento para todo lo que las tres variables anteriores revelarían |

256 256 

257Deje estos sin establecer a menos que su canalización de observabilidad esté aprobada para almacenar los datos que maneja su agente. Consulte [Seguridad y privacidad](/docs/es/monitoring-usage#security-and-privacy) en la referencia de Monitoreo para la lista completa de atributos y comportamiento de redacción.257Deje estos sin establecer a menos que su canalización de observabilidad esté aprobada para almacenar los datos que maneja su agente. Consulte [Seguridad y privacidad](/docs/es/monitoring-usage#security-and-privacy) en la referencia de Monitoreo para la lista completa de atributos y comportamiento de redacción.

Details

78 78 

79* "Claude Agent", preferido para menús desplegables79* "Claude Agent", preferido para menús desplegables

80* "Claude", cuando ya está dentro de un menú etiquetado como "Agents"80* "Claude", cuando ya está dentro de un menú etiquetado como "Agents"

81* "{YourAgentName} Powered by Claude", si tiene un nombre de agente existente81* "\{YourAgentName} Powered by Claude", si tiene un nombre de agente existente

82 82 

83**No permitido:**83**No permitido:**

84 84 

Details

301 301 

302Las ediciones de archivos nunca se aprueban automáticamente en modo de planificación, incluso cuando una regla de permiso coincide. En su lugar, se solicitan a través de su devolución de llamada `canUseTool`. En Claude Code v2.1.212 o posterior, los comandos de shell que modifican archivos, como `touch` y `rm`, llegan a su devolución de llamada `canUseTool` de la misma manera.302Las ediciones de archivos nunca se aprueban automáticamente en modo de planificación, incluso cuando una regla de permiso coincide. En su lugar, se solicitan a través de su devolución de llamada `canUseTool`. En Claude Code v2.1.212 o posterior, los comandos de shell que modifican archivos, como `touch` y `rm`, llegan a su devolución de llamada `canUseTool` de la misma manera.

303 303 

304Si establece `allowDangerouslySkipPermissions: true` junto con `permissionMode: 'plan'`, las ediciones de archivos y los comandos de shell que modifican archivos aún llegan a su devolución de llamada `canUseTool`. La opción le permite cambiar a `bypassPermissions` más tarde con `setPermissionMode()`.

305 

304Claude puede usar `AskUserQuestion` para aclarar requisitos antes de finalizar el plan. Consulte [Manejar aprobaciones e entrada del usuario](/docs/es/agent-sdk/user-input#handle-clarifying-questions) para manejar estas solicitudes.306Claude puede usar `AskUserQuestion` para aclarar requisitos antes de finalizar el plan. Consulte [Manejar aprobaciones e entrada del usuario](/docs/es/agent-sdk/user-input#handle-clarifying-questions) para manejar estas solicitudes.

305 307 

306**Ú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.308**Ú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.

agent-sdk/python.md +147 −126

Details

119</h4>119</h4>

120 120 

121| Parámetro | Tipo | Descripción |121| Parámetro | Tipo | Descripción |

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

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

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

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

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

127 127 

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


537| `receive_response()` | Recibir mensajes hasta e incluyendo un ResultMessage |537| `receive_response()` | Recibir mensajes hasta e incluyendo un ResultMessage |

538| `interrupt()` | Enviar señal de interrupción (solo funciona en modo de streaming) |538| `interrupt()` | Enviar señal de interrupción (solo funciona en modo de streaming) |

539| `set_permission_mode(mode)` | Cambiar el modo de permiso para la sesión actual |539| `set_permission_mode(mode)` | Cambiar el modo de permiso para la sesión actual |

540| `set_model(model)` | Cambiar el modelo para la sesión actual. Pase `None` para restablecer al predeterminado |540| `set_model(model)` | Cambiar el modelo para la sesión actual. Pase `None` para restablecer al [modelo predeterminado de Claude Code](/docs/es/model-config) |

541| `rewind_files(user_message_id)` | Restaurar archivos a su estado en el mensaje de usuario especificado. Requiere `enable_file_checkpointing=True`. Ver [File checkpointing](/docs/es/agent-sdk/file-checkpointing) |541| `rewind_files(user_message_id)` | Restaurar archivos a su estado en el mensaje de usuario especificado. Requiere `enable_file_checkpointing=True`. Ver [File checkpointing](/docs/es/agent-sdk/file-checkpointing) |

542| `get_mcp_status()` | Obtener el estado de todos los servidores MCP configurados. Devuelve [`McpStatusResponse`](#mcpstatusresponse) |542| `get_mcp_status()` | Obtener el estado de todos los servidores MCP configurados. Devuelve [`McpStatusResponse`](#mcpstatusresponse) |

543| `reconnect_mcp_server(server_name)` | Reintentar conectar a un servidor MCP que falló o fue desconectado |543| `reconnect_mcp_server(server_name)` | Reintentar conectar a un servidor MCP que falló o fue desconectado |


760</h2>760</h2>

761 761 

762<Note>762<Note>

763 **`@dataclass` vs `TypedDict`:** Este SDK utiliza dos tipos de tipos. Las clases decoradas con `@dataclass` (como `ResultMessage`, `AgentDefinition`, `TextBlock`) son instancias de objeto en tiempo de ejecución y admiten acceso de atributo: `msg.result`. Las clases definidas con `TypedDict` (como `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) son **dicts simples en tiempo de ejecución** y requieren acceso de clave: `config["budget_tokens"]`, no `config.budget_tokens`. La sintaxis de llamada `ClassName(field=value)` funciona para ambos, pero solo las dataclasses producen objetos con atributos.763 **`@dataclass` vs `TypedDict`:** Este SDK utiliza dos tipos de clases. Las clases decoradas con `@dataclass` (como `ResultMessage`, `AgentDefinition`, `TextBlock`) son instancias de objetos en tiempo de ejecución y admiten acceso por atributo: `msg.result`. Las clases definidas con `TypedDict` (como `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) son **dicts simples en tiempo de ejecución** y requieren acceso por clave: `config["budget_tokens"]`, no `config.budget_tokens`. La sintaxis de llamada `ClassName(field=value)` funciona para ambas, pero solo las dataclasses producen objetos con atributos.

764</Note>764</Note>

765 765 

766<h3 id="sdkmcptool">766<h3 id="sdkmcptool">


782| Propiedad | Tipo | Descripción |782| Propiedad | Tipo | Descripción |

783| :------------- | :---------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |783| :------------- | :---------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |

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

785| `description` | `str` | Descripción legible |785| `description` | `str` | Descripción legible por humanos |

786| `input_schema` | `type[T] \| dict[str, Any]` | Esquema para validación de entrada |786| `input_schema` | `type[T] \| dict[str, Any]` | Esquema para validación de entrada |

787| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Función asincrónica que maneja la ejecución de la herramienta |787| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Función asincrónica que maneja la ejecución de la herramienta |

788| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | Anotaciones opcionales de herramienta (por ejemplo `readOnlyHint`, `destructiveHint`, `openWorldHint`, `maxResultSizeChars`) |788| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | Anotaciones de herramienta opcionales (por ejemplo `readOnlyHint`, `destructiveHint`, `openWorldHint`, `maxResultSizeChars`) |

789 789 

790<h3 id="transport">790<h3 id="transport">

791 `Transport`791 `Transport`

792</h3>792</h3>

793 793 

794Clase base abstracta para implementaciones de transporte personalizado. Úsela para comunicarse con el proceso Claude a través de un canal personalizado (por ejemplo, una conexión remota en lugar de un subproceso local).794Clase base abstracta para implementaciones de transporte personalizadas. Utilícela para comunicarse con el proceso Claude a través de un canal personalizado (por ejemplo, una conexión remota en lugar de un subproceso local).

795 795 

796<Warning>796<Warning>

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

798</Warning>798</Warning>

799 799 

800```python theme={null}800```python theme={null}


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

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

834 834 

835Importar: `from claude_agent_sdk import Transport`835Importación: `from claude_agent_sdk import Transport`

836 836 

837<h3 id="claudeagentoptions">837<h3 id="claudeagentoptions">

838 `ClaudeAgentOptions`838 `ClaudeAgentOptions`


845class ClaudeAgentOptions:845class ClaudeAgentOptions:

846 tools: list[str] | ToolsPreset | None = None846 tools: list[str] | ToolsPreset | None = None

847 allowed_tools: list[str] = field(default_factory=list)847 allowed_tools: list[str] = field(default_factory=list)

848 system_prompt: str | SystemPromptPreset | SystemPromptFile | None = None848 system_prompt: str | SystemPromptPreset | SystemPromptCustom | SystemPromptFile | None = None

849 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)849 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

850 strict_mcp_config: bool = False850 strict_mcp_config: bool = False

851 permission_mode: PermissionMode | None = None851 permission_mode: PermissionMode | None = None


894```894```

895 895 

896| Propiedad | Tipo | Predeterminado | Descripción |896| Propiedad | Tipo | Predeterminado | Descripción |

897| :---------------------------- | :------------------------------------------------------------------------------------ | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |897| :---------------------------- | :------------------------------------------------------------------------------------ | :--------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

899| `allowed_tools` | `list[str]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude solo a estas herramientas. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking#model-availability) aquí, Claude Code también opta por la sesión. Las herramientas no listadas caen a través de `permission_mode` y `can_use_tool`. Use `disallowed_tools` para bloquear herramientas. Ver [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |899| `allowed_tools` | `list[str]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude solo a estas herramientas. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking#model-availability) aquí, Claude Code también opta por la sesión. Otras herramientas no listadas se transfieren a `permission_mode` y `can_use_tool`. Utilice `disallowed_tools` para bloquear herramientas. Consulte [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |

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

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

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

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

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

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

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

907| `max_turns` | `int \| None` | `None` | Número máximo de turnos agentes (viajes de ronda de uso de herramientas) |907| `max_turns` | `int \| None` | `None` | Máximo de turnos agentes (viajes de ronda de uso de herramientas) |

908| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Comparado con la misma estimación que `total_cost_usd`; ver [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de precisión |908| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Se compara con la misma estimación que `total_cost_usd`. Para advertencias de precisión y comportamiento de reinicio, consulte [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) |

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

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

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

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

913| `betas` | `list[SdkBeta]` | `[]` | Características beta a habilitar. Ver [`SdkBeta`](#sdkbeta) para opciones disponibles |913| `betas` | `list[SdkBeta]` | `[]` | Características beta para habilitar. Consulte [`SdkBeta`](#sdkbeta) para opciones disponibles |

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

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

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

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

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

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

920| `env` | `dict[str, str]` | `{}` | Variables de entorno fusionadas en la parte superior del entorno del proceso heredado. Ver [Variables de entorno](/docs/es/env-vars) para variables que el CLI subyacente lee, y [Manejar respuestas de API lentas o estancadas](#handle-slow-or-stalled-api-responses) para variables relacionadas con tiempos de espera |920| `env` | `dict[str, str]` | `{}` | Variables de entorno fusionadas en la parte superior del entorno de proceso heredado. Consulte [Variables de entorno](/docs/es/env-vars) para variables que lee la CLI subyacente, y [Manejar respuestas API lentas o estancadas](#handle-slow-or-stalled-api-responses) para variables relacionadas con tiempos de espera |

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

922| `max_buffer_size` | `int \| None` | `None` | Bytes máximos al almacenar en búfer la salida estándar del CLI |922| `max_buffer_size` | `int \| None` | `None` | Máximo de bytes al almacenar en búfer la salida estándar de CLI |

923| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - Objeto similar a un archivo para salida de depuración. Use la devolución de llamada `stderr` en su lugar |923| `debug_stderr` | `Any` | `sys.stderr` | *Obsoleto* - Objeto similar a un archivo para salida de depuración. Utilice la devolución de llamada `stderr` en su lugar |

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

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

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

927| `user` | `str \| None` | `None` | Identificador de usuario |927| `user` | `str \| None` | `None` | Identificador de usuario |

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

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

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

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

932| `resume_session_at` | `str \| None` | `None` | Cuando se reanuda, cargar la conversación solo hasta e incluyendo el mensaje con este UUID. Use con `resume`, y generalmente `fork_session`, para ramificar desde un punto anterior. Requiere Python Agent SDK 0.2.137 o posterior |932| `resume_session_at` | `str \| None` | `None` | Al reanudar, cargar la conversación solo hasta e incluyendo el mensaje con este UUID. Utilice con `resume`, y generalmente `fork_session`, para ramificar desde un punto anterior. Requiere Python Agent SDK 0.2.137 o posterior |

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

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

935| `plugins` | `list[SdkPluginConfig]` | `[]` | Cargar plugins personalizados desde rutas locales. Ver [Plugins](/docs/es/agent-sdk/plugins) para detalles |935| `plugins` | `list[SdkPluginConfig]` | `[]` | Cargar plugins personalizados desde rutas locales. Consulte [Plugins](/docs/es/agent-sdk/plugins) para detalles |

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

937| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Controlar qué configuración del sistema de archivos cargar. Pase `[]` para deshabilitar la configuración de usuario, proyecto y local. La configuración de política administrada se carga independientemente; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una [configuración elegible](/docs/es/server-managed-settings#platform-availability). Ver [Usar características de Claude Code](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) |937| `setting_sources` | `list[SettingSource] \| None` | `None` (Valores predeterminados de CLI: todas las fuentes) | Controlar qué configuración del sistema de archivos cargar. Pase `[]` para deshabilitar la configuración de usuario, proyecto y local. Con `skills` establecido y este campo sin establecer, solo se cargan las fuentes de usuario y proyecto. Establezca `setting_sources` explícitamente para mantener la configuración local. La política administrada por punto final se carga independientemente; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una [configuración elegible](/docs/es/server-managed-settings#platform-availability). Para entradas leídas independientemente de esta opción, consulte [Lo que settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

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

939| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Tokens máximos para bloques de pensamiento. Use `thinking` en su lugar |939| `max_thinking_tokens` | `int \| None` | `None` | *Obsoleto* - Máximo de tokens para bloques de pensamiento. Utilice `thinking` en su lugar |

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

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

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

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

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

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

946 946 

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

948 Manejar respuestas de API lentas o estancadas948 Manejar respuestas API lentas o estancadas

949</h4>949</h4>

950 950 

951El subproceso CLI lee varias variables de entorno que controlan los tiempos de espera de API y la detección de estancamiento. Páselas a través de `ClaudeAgentOptions.env`:951El subproceso CLI lee varias variables de entorno que controlan los tiempos de espera de API y la detección de estancamiento. Páselas a través de `ClaudeAgentOptions.env`:


963```963```

964 964 

965* `API_TIMEOUT_MS`: tiempo de espera por solicitud en el cliente de Anthropic, en milisegundos. Predeterminado `600000`. Se aplica al bucle principal y a todos los subagentes.965* `API_TIMEOUT_MS`: tiempo de espera por solicitud en el cliente de Anthropic, en milisegundos. Predeterminado `600000`. Se aplica al bucle principal y a todos los subagentes.

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

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

968 968 

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

970* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: perro guardián de flujo que aborta la solicitud cuando los encabezados han llegado pero el cuerpo de la respuesta deja de transmitir. El perro guardián está activado de forma predeterminada para todos los proveedores; establezca `CLAUDE_ENABLE_STREAM_WATCHDOG=0` para desactivarlo. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tiene un valor predeterminado de `300000` y se fija a ese mínimo. Después de la cancelación, [Reintentos automáticos](/docs/es/errors#automatic-retries) cubre lo que Claude Code hace, según qué tan lejos haya progresado la respuesta.970* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: perro guardián de flujo que aborta la solicitud cuando los encabezados han llegado pero el cuerpo de respuesta deja de transmitirse. El perro guardián está activado de forma predeterminada para todos los proveedores; establezca `CLAUDE_ENABLE_STREAM_WATCHDOG=0` para desactivarlo. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tiene un predeterminado de `300000` y se fija a ese mínimo. Después del aborto, [Reintentos automáticos](/docs/es/errors#automatic-retries) cubre lo que Claude Code hace, según qué tan lejos haya progresado la respuesta.

971 971 

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

973 973 


978Configuración para validación de salida estructurada. Pase esto como un `dict` al campo `output_format` en `ClaudeAgentOptions`:978Configuración para validación de salida estructurada. Pase esto como un `dict` al campo `output_format` en `ClaudeAgentOptions`:

979 979 

980```python theme={null}980```python theme={null}

981# Expected dict shape for output_format981# Forma de dict esperada para output_format

982{982{

983 "type": "json_schema",983 "type": "json_schema",

984 "schema": {...}, # Your JSON Schema definition984 "schema": {...}, # Su definición de JSON Schema

985}985}

986```986```

987 987 


994 `SystemPromptPreset`994 `SystemPromptPreset`

995</h3>995</h3>

996 996 

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

998 998 

999```python theme={null}999```python theme={null}

1000class SystemPromptPreset(TypedDict):1000class SystemPromptPreset(TypedDict):


1002 preset: Literal["claude_code"]1002 preset: Literal["claude_code"]

1003 append: NotRequired[str]1003 append: NotRequired[str]

1004 exclude_dynamic_sections: NotRequired[bool]1004 exclude_dynamic_sections: NotRequired[bool]

1005 snapshot: NotRequired[bool]

1005```1006```

1006 1007 

1007| Campo | Requerido | Descripción |1008| Campo | Requerido | Descripción |

1008| :------------------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1009| :------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

1011| `append` | No | Instrucciones adicionales para agregar al prompt del sistema preset |1012| `append` | No | Instrucciones adicionales para agregar al indicador del sistema preestablecido |

1012| `exclude_dynamic_sections` | No | Mover contexto por sesión como directorio de trabajo, la bandera de repositorio git y rutas de memoria automática del prompt del sistema al primer mensaje del usuario. Mejora la reutilización de caché de prompt en usuarios y máquinas. Ver [Modificar prompts del sistema](/docs/es/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |1013| `exclude_dynamic_sections` | No | Mover contexto por sesión como directorio de trabajo, la bandera de repositorio git, y rutas de memoria automática del indicador del sistema al primer mensaje del usuario. Mejora la reutilización de caché de indicadores entre usuarios y máquinas. Consulte [Modificar indicadores del sistema](/docs/es/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

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

1015 

1016<h3 id="systempromptcustom">

1017 `SystemPromptCustom`

1018</h3>

1019 

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

1021 

1022```python theme={null}

1023class SystemPromptCustom(TypedDict):

1024 type: Literal["custom"]

1025 prompt: str

1026 snapshot: NotRequired[bool]

1027```

1028 

1029| Campo | Requerido | Descripción |

1030| :--------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

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

1013 1034 

1014<h3 id="systempromptfile">1035<h3 id="systempromptfile">

1015 `SystemPromptFile`1036 `SystemPromptFile`

1016</h3>1037</h3>

1017 1038 

1018Configuración para cargar un prompt del sistema personalizado desde un archivo en lugar de pasarlo como una cadena. El SDK asigna esto a la bandera CLI [`--system-prompt-file`](/docs/es/cli-reference#system-prompt-flags). Use la forma de archivo cuando el prompt es grande: el SDK pasa un `system_prompt` de cadena en el argv del subproceso CLI, que está sujeto a límites de longitud de línea de comandos del SO antes de que el SDK envíe cualquier solicitud de API. En Linux, un único argumento más largo que aproximadamente 128 KB falla al generar el proceso con `Argument list too long`. En Windows, toda la línea de comandos está limitada a aproximadamente 32 KB, por lo que la forma de cadena falla en un umbral más bajo.1039Configuración para cargar un indicador del sistema personalizado desde un archivo en lugar de pasarlo como una cadena. El SDK asigna esto a la bandera CLI [`--system-prompt-file`](/docs/es/cli-reference#system-prompt-flags). Utilice la forma de archivo cuando el indicador es grande: el SDK pasa un `system_prompt` de cadena en el argv del subproceso CLI, que está sujeto a límites de longitud de línea de comandos del SO antes de que el SDK envíe cualquier solicitud de API. En Linux, un único argumento más largo que aproximadamente 128 KB falla al generar el proceso con `Argument list too long`. En Windows, toda la línea de comandos está limitada a aproximadamente 32 KB, por lo que la forma de cadena falla en un umbral más bajo.

1019 1040 

1020```python theme={null}1041```python theme={null}

1021class SystemPromptFile(TypedDict):1042class SystemPromptFile(TypedDict):


1024```1045```

1025 1046 

1026| Campo | Requerido | Descripción |1047| Campo | Requerido | Descripción |

1027| :----- | :-------- | :--------------------------------------------------- |1048| :----- | :-------- | :-------------------------------------------------------- |

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

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

1030 1051 

1031<h3 id="settingsource">1052<h3 id="settingsource">

1032 `SettingSource`1053 `SettingSource`


1039```1060```

1040 1061 

1041| Valor | Descripción | Ubicación |1062| Valor | Descripción | Ubicación |

1042| :---------- | :----------------------------------------------------------------------------------------------------- | :---------------------------- |1063| :---------- | :---------------------------------------------------------------------------------------------------- | :---------------------------- |

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

1044| `"project"` | Configuración del proyecto compartido (controlada por versión) | `.claude/settings.json` |1065| `"project"` | Configuración del proyecto compartido (controlada por versión) | `.claude/settings.json` |

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

1046 1067 

1047<h4 id="default-behavior">1068<h4 id="default-behavior">

1048 Comportamiento predeterminado1069 Comportamiento predeterminado

1049</h4>1070</h4>

1050 1071 

1051Cuando `setting_sources` se omite o es `None`, `query()` carga la misma configuración del sistema de archivos que el CLI de Claude Code: usuario, proyecto y local. La configuración de política administrada se carga en todos los casos; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una [configuración elegible](/docs/es/server-managed-settings#platform-availability). Ver [Qué settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) para entradas que se leen independientemente de esta opción, y cómo deshabilitarlas.1072Cuando `setting_sources` se omite o es `None` y `skills` no está establecido, `query()` carga la misma configuración del sistema de archivos que la CLI de Claude Code: usuario, proyecto y local. Con `skills` establecido, la fila [`setting_sources`](#claudeagentoptions) describe el predeterminado actual. La política administrada por punto final se carga en todos los casos; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una [configuración elegible](/docs/es/server-managed-settings#platform-availability). Para más información, consulte [Lo que settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control).

1052 1073 

1053<h4 id="why-use-setting_sources">1074<h4 id="why-use-setting_sources">

1054 Por qué usar setting\_sources1075 Por qué usar setting\_sources


1057**Deshabilitar configuración del sistema de archivos:**1078**Deshabilitar configuración del sistema de archivos:**

1058 1079 

1059```python theme={null}1080```python theme={null}

1060# Do not load user, project, or local settings from disk1081# No cargar configuración de usuario, proyecto o local desde el disco

1061import asyncio1082import asyncio

1062from claude_agent_sdk import query, ClaudeAgentOptions1083from claude_agent_sdk import query, ClaudeAgentOptions

1063 1084 


1076```1097```

1077 1098 

1078<Note>1099<Note>

1079 En Python SDK 0.1.59 y anteriores, una lista vacía se trataba igual que omitir la opción, por lo que `setting_sources=[]` no deshabilitaba la configuración del sistema de archivos. Actualice a una versión más nueva si necesita que una lista vacía tenga efecto. El SDK de TypeScript no se ve afectado.1100 En Python SDK 0.1.59 y anterior, una lista vacía se trataba igual que omitir la opción, por lo que `setting_sources=[]` no deshabilitaba la configuración del sistema de archivos. Actualice a una versión más reciente si necesita que una lista vacía tenga efecto. El SDK de TypeScript no se ve afectado.

1080</Note>1101</Note>

1081 1102 

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

1083 1104 

1084```python theme={null}1105```python theme={null}

1085# Load only project settings, ignore user and local1106# Cargar solo configuración del proyecto, ignorar usuario y local

1086import asyncio1107import asyncio

1087from claude_agent_sdk import query, ClaudeAgentOptions1108from claude_agent_sdk import query, ClaudeAgentOptions

1088 1109 


1091 async for message in query(1112 async for message in query(

1092 prompt="Run CI checks",1113 prompt="Run CI checks",

1093 options=ClaudeAgentOptions(1114 options=ClaudeAgentOptions(

1094 setting_sources=["project"] # Only .claude/settings.json1115 setting_sources=["project"] # Solo .claude/settings.json

1095 ),1116 ),

1096 ):1117 ):

1097 print(message)1118 print(message)


1103**Aplicaciones solo SDK:**1124**Aplicaciones solo SDK:**

1104 1125 

1105```python theme={null}1126```python theme={null}

1106# Define everything programmatically.1127# Definir todo programáticamente.

1107# Pass [] to opt out of filesystem setting sources.1128# Pase [] para optar por no usar fuentes de configuración del sistema de archivos.

1108import asyncio1129import asyncio

1109from claude_agent_sdk import AgentDefinition, ClaudeAgentOptions, query1130from claude_agent_sdk import AgentDefinition, ClaudeAgentOptions, query

1110 1131 


1129asyncio.run(main())1150asyncio.run(main())

1130```1151```

1131 1152 

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

1133 1154 

1134<h4 id="settings-precedence">1155<h4 id="settings-precedence">

1135 Precedencia de configuración1156 Precedencia de configuración


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

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

1143 1164 

1144Las opciones programáticas como `agents` y `allowed_tools` anulan la configuración del sistema de archivos de usuario, proyecto y local. La configuración de política administrada tiene precedencia sobre las opciones programáticas.1165Las opciones programáticas como `agents`, `allowed_tools` y `settings` anulan la configuración del sistema de archivos de usuario, proyecto y local. La configuración de política administrada tiene precedencia sobre las opciones programáticas.

1145 1166 

1146<h3 id="agentdefinition">1167<h3 id="agentdefinition">

1147 `AgentDefinition`1168 `AgentDefinition`


1170| Campo | Requerido | Descripción |1191| Campo | Requerido | Descripción |

1171| :---------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1192| :---------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

1173| `prompt` | Sí | El prompt del sistema del agente |1194| `prompt` | Sí | El indicador del sistema del agente |

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

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

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

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

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

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

1180| `initialPrompt` | No | Auto-enviado como el primer turno de usuario cuando este agente se ejecuta como el agente del hilo principal |1201| `initialPrompt` | No | Se envía automáticamente como el primer turno del usuario cuando este agente se ejecuta como el agente del hilo principal |

1181| `maxTurns` | No | Número máximo de turnos agentes antes de que el agente se detenga |1202| `maxTurns` | No | Número máximo de turnos agentes antes de que el agente se detenga |

1182| `background` | No | Ejecutar este agente como una tarea de fondo no bloqueante cuando se invoca |1203| `background` | No | Ejecutar este agente como una tarea de fondo no bloqueante cuando se invoca |

1183| `effort` | No | Nivel de esfuerzo de razonamiento para este agente. Acepta un nivel nombrado o un entero. Ver [`EffortLevel`](#effortlevel) |1204| `effort` | No | Nivel de esfuerzo de razonamiento para este agente. Acepta un nivel nombrado o un entero. Consulte [`EffortLevel`](#effortlevel) |

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

1185 1206 

1186<Note>1207<Note>

1187 Los nombres de campo de `AgentDefinition` usan camelCase, como `disallowedTools`, `permissionMode` y `maxTurns`. Estos nombres se asignan directamente al formato de cable compartido con el SDK de TypeScript. Esto difiere de `ClaudeAgentOptions`, que usa snake\_case de Python para campos de nivel superior equivalentes como `disallowed_tools` y `permission_mode`. Porque `AgentDefinition` es una dataclass, pasar una palabra clave snake\_case genera un `TypeError` en el tiempo de construcción.1208 Los nombres de campo `AgentDefinition` utilizan camelCase, como `disallowedTools`, `permissionMode` y `maxTurns`. Estos nombres se asignan directamente al formato de cable compartido con el SDK de TypeScript. Esto difiere de `ClaudeAgentOptions`, que utiliza snake\_case de Python para los campos de nivel superior equivalentes como `disallowed_tools` y `permission_mode`. Debido a que `AgentDefinition` es una dataclass, pasar una palabra clave snake\_case genera un `TypeError` en el tiempo de construcción.

1188</Note>1209</Note>

1189 1210 

1190<h3 id="permissionmode">1211<h3 id="permissionmode">


1195 1216 

1196```python theme={null}1217```python theme={null}

1197PermissionMode = Literal[1218PermissionMode = Literal[

1198 "default", # Standard permission behavior1219 "default", # Comportamiento de permiso estándar

1199 "acceptEdits", # Auto-accept file edits1220 "acceptEdits", # Aceptar automáticamente ediciones de archivo

1200 "plan", # Planning mode - explore without editing1221 "plan", # Modo de planificación - explorar sin editar

1201 "dontAsk", # Deny anything not pre-approved instead of prompting1222 "dontAsk", # Denegar cualquier cosa no preaprobada en lugar de solicitar

1202 "bypassPermissions", # Bypass permission checks; explicit ask rules still prompt (use with caution)1223 "bypassPermissions", # Omitir verificaciones de permiso; las reglas de solicitud explícita aún solicitan (usar con cuidado)

1203 "auto", # Model classifier approves or denies permission prompts1224 "auto", # El clasificador del modelo aprueba o deniega indicadores de permiso

1204]1225]

1205```1226```

1206 1227 


1212 1233 

1213```python theme={null}1234```python theme={null}

1214EffortLevel = Literal[1235EffortLevel = Literal[

1215 "low", # Minimal thinking, fastest responses1236 "low", # Pensamiento mínimo, respuestas más rápidas

1216 "medium", # Moderate thinking1237 "medium", # Pensamiento moderado

1217 "high", # Deep reasoning1238 "high", # Razonamiento profundo

1218 "xhigh", # Extended reasoning; falls back to "high" on models that don't support it1239 "xhigh", # Razonamiento extendido; vuelve a "high" en modelos que no lo admiten

1219 "max", # Maximum effort1240 "max", # Esfuerzo máximo

1220]1241]

1221```1242```

1222 1243 


1240 1261 

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

1242 1263 

1243La devolución de llamada es el reemplazo del SDK para el prompt de permiso interactivo: se invoca solo cuando el [flujo de evaluación de permiso](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) se resuelve en un prompt. Las llamadas de herramienta ya aprobadas por una entrada `allowed_tools`, una regla de permiso de configuración, o el modo de permiso, como `acceptEdits` o `bypassPermissions`, nunca la invocan. Para controlar cada llamada de herramienta, use un [hook `PreToolUse`](/docs/es/agent-sdk/hooks) en su lugar.1264La devolución de llamada es el reemplazo del SDK para el indicador de permiso interactivo: se invoca solo cuando el [flujo de evaluación de permiso](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) se resuelve en un indicador. Las llamadas de herramienta ya aprobadas por una entrada `allowed_tools`, una regla de permiso de configuración, o el modo de permiso, como `acceptEdits` o `bypassPermissions`, nunca la invocan. Para controlar cada llamada de herramienta, utilice un [hook `PreToolUse`](/docs/es/agent-sdk/hooks) en su lugar.

1244 1265 

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

1246 1267 

1247<h3 id="toolpermissioncontext">1268<h3 id="toolpermissioncontext">

1248 `ToolPermissionContext`1269 `ToolPermissionContext`


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

1254@dataclass1275@dataclass

1255class ToolPermissionContext:1276class ToolPermissionContext:

1256 signal: Any | None = None # Future: abort signal support1277 signal: Any | None = None # Futuro: soporte de señal de aborto

1257 suggestions: list[PermissionUpdate] = field(default_factory=list)1278 suggestions: list[PermissionUpdate] = field(default_factory=list)

1258 tool_use_id: str | None = None1279 tool_use_id: str | None = None

1259 agent_id: str | None = None1280 agent_id: str | None = None


1265```1286```

1266 1287 

1267| Campo | Tipo | Descripción |1288| Campo | Tipo | Descripción |

1268| :---------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1289| :---------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1269| `signal` | `Any \| None` | Reservado para soporte de señal de aborto futuro |1290| `signal` | `Any \| None` | Reservado para soporte futuro de señal de aborto |

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

1271| `tool_use_id` | `str \| None` | Identificador de la llamada de herramienta específica para la que es este prompt. Siempre se completa cuando se entrega a `can_use_tool` |1292| `tool_use_id` | `str \| None` | Identificador de la llamada de herramienta específica para la que es este indicador. Siempre se completa cuando se entrega a `can_use_tool` |

1272| `agent_id` | `str \| None` | ID de sub-agente cuando la llamada se origina desde un subagente; `None` para el agente principal |1293| `agent_id` | `str \| None` | ID del subagente cuando la llamada se origina desde un subagente; `None` para el agente principal |

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

1274| `decision_reason` | `str \| None` | Razón por la que se activó esta solicitud de permiso. Reenviada desde el `permissionDecisionReason` de un hook PreToolUse cuando el hook devolvió `"ask"` |1295| `decision_reason` | `str \| None` | Razón por la que se activó esta solicitud de permiso. Reenviado desde el `permissionDecisionReason` de un hook PreToolUse cuando el hook devolvió `"ask"` |

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

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

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

1278 1299 

1279<h3 id="permissionresult">1300<h3 id="permissionresult">

1280 `PermissionResult`1301 `PermissionResult`


1378 `ToolsPreset`1399 `ToolsPreset`

1379</h3>1400</h3>

1380 1401 

1381Configuración de herramientas preset para usar el conjunto de herramientas predeterminado de Claude Code.1402Configuración de herramientas preestablecidas para usar el conjunto de herramientas predeterminado de Claude Code.

1382 1403 

1383```python theme={null}1404```python theme={null}

1384class ToolsPreset(TypedDict):1405class ToolsPreset(TypedDict):


1390 `ThinkingConfig`1411 `ThinkingConfig`

1391</h3>1412</h3>

1392 1413 

1393Controla el comportamiento de pensamiento extendido. Una unión de tres configuraciones:1414Controla el comportamiento del pensamiento extendido. Una unión de tres configuraciones:

1394 1415 

1395```python theme={null}1416```python theme={null}

1396ThinkingDisplay = Literal["summarized", "omitted"]1417ThinkingDisplay = Literal["summarized", "omitted"]


1420| `enabled` | `type`, `budget_tokens`, `display` | Habilitar pensamiento con un presupuesto de token específico |1441| `enabled` | `type`, `budget_tokens`, `display` | Habilitar pensamiento con un presupuesto de token específico |

1421| `disabled` | `type` | Deshabilitar pensamiento |1442| `disabled` | `type` | Deshabilitar pensamiento |

1422 1443 

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

1424 1445 

1425Porque estas son clases `TypedDict`, son dicts simples en tiempo de ejecución. Construya cualquiera como literales de dict o llame a la clase como un constructor; ambos producen un `dict`. Acceda a campos con `config["budget_tokens"]`, no `config.budget_tokens`:1446Debido a que estas son clases `TypedDict`, son dicts simples en tiempo de ejecución. Construyalas como literales de dict o llame a la clase como un constructor; ambos producen un `dict`. Acceda a los campos con `config["budget_tokens"]`, no `config.budget_tokens`:

1426 1447 

1427```python theme={null}1448```python theme={null}

1428from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled1449from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled

1429 1450 

1430# Option 1: dict literal (recommended, no import needed)1451# Opción 1: literal de dict (recomendado, no se necesita importación)

1431options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})1452options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})

1432 1453 

1433# Option 2: constructor-style (returns a plain dict)1454# Opción 2: estilo constructor (devuelve un dict simple)

1434config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)1455config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)

1435print(config["budget_tokens"]) # 200001456print(config["budget_tokens"]) # 20000

1436# config.budget_tokens would raise AttributeError1457# config.budget_tokens generaría AttributeError

1437```1458```

1438 1459 

1439<h3 id="taskbudget">1460<h3 id="taskbudget">


1451| :------ | :---- | :--------------------------------------- |1472| :------ | :---- | :--------------------------------------- |

1452| `total` | `int` | Presupuesto de token total para la tarea |1473| `total` | `int` | Presupuesto de token total para la tarea |

1453 1474 

1454Porque esto es un `TypedDict`, páselo como un dict simple, como `ClaudeAgentOptions(task_budget={"total": 50000})`.1475Debido a que esto es un `TypedDict`, páselo como un dict simple, como `ClaudeAgentOptions(task_budget={"total": 50000})`.

1455 1476 

1456<h3 id="sdkbeta">1477<h3 id="sdkbeta">

1457 `SdkBeta`1478 `SdkBeta`


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

1464```1485```

1465 1486 

1466Use con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.1487Utilice con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.

1467 1488 

1468<Warning>1489<Warning>

1469 La beta `context-1m-2025-08-07` se retiró a partir del 30 de abril de 2026. Pasar este encabezado con Claude Sonnet 4.5 o Sonnet 4 no tiene efecto, y las solicitudes que exceden la ventana de contexto estándar de 200k tokens devuelven un error. Para usar una ventana de contexto de 1M tokens, migre a [Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, o Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), que incluyen contexto de 1M a precios estándar sin encabezado beta requerido.1490 La beta `context-1m-2025-08-07` se retiró a partir del 30 de abril de 2026. Pasar este encabezado con Claude Sonnet 4.5 o Sonnet 4 no tiene efecto, y las solicitudes que exceden la ventana de contexto estándar de 200k tokens devuelven un error. Para usar una ventana de contexto de 1M tokens, migre a [Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, o Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), que incluyen contexto de 1M a precios estándar sin encabezado beta requerido.


1479class McpSdkServerConfig(TypedDict):1500class McpSdkServerConfig(TypedDict):

1480 type: Literal["sdk"]1501 type: Literal["sdk"]

1481 name: str1502 name: str

1482 instance: Any # MCP Server instance1503 instance: Any # Instancia del servidor MCP

1483```1504```

1484 1505 

1485<h3 id="mcpserverconfig">1506<h3 id="mcpserverconfig">


1500 1521 

1501```python theme={null}1522```python theme={null}

1502class McpStdioServerConfig(TypedDict):1523class McpStdioServerConfig(TypedDict):

1503 type: NotRequired[Literal["stdio"]] # Optional for backwards compatibility1524 type: NotRequired[Literal["stdio"]] # Opcional para compatibilidad hacia atrás

1504 command: str1525 command: str

1505 args: NotRequired[list[str]]1526 args: NotRequired[list[str]]

1506 env: NotRequired[dict[str, str]]1527 env: NotRequired[dict[str, str]]


1532 `McpServerStatusConfig`1553 `McpServerStatusConfig`

1533</h3>1554</h3>

1534 1555 

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

1536 1557 

1537```python theme={null}1558```python theme={null}

1538McpServerStatusConfig = (1559McpServerStatusConfig = (


1610]1631]

1611```1632```

1612 1633 

1613Para información completa sobre la creación y uso de plugins, ver [Plugins](/docs/es/agent-sdk/plugins).1634Para información completa sobre cómo crear y usar plugins, consulte [Plugins](/docs/es/agent-sdk/plugins).

1614 1635 

1615<h2 id="message-types">1636<h2 id="message-types">

1616 Tipos de mensaje1637 Tipos de mensaje


2782```python theme={null}2803```python theme={null}

2783{2804{

2784 "status": "remote_launched",2805 "status": "remote_launched",

2785 "taskId": str, # ID of the remote task2806 "taskId": str, # ID of the dispatched task

2786 "sessionUrl": str, # Link to the remote cloud session2807 "sessionUrl": str, # Link to the cloud session

2787 "description": str, # The task description2808 "description": str, # The task description

2788 "prompt": str, # The prompt the agent runs2809 "prompt": str, # The prompt the agent runs

2789 "outputFile": str, # File path where the agent's output is written2810 "outputFile": str, # File path where the agent's output is written

2790}2811}

2791```2812```

2792 2813 

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

2794 2815 

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

2796 2817 

Details

62 </Tab>62 </Tab>

63 63 

64 <Tab title="Python (uv)">64 <Tab title="Python (uv)">

65 [uv](https://docs.astral.sh/uv/) es un gestor de paquetes de Python rápido que maneja automáticamente los entornos virtuales:65 [Instale uv](https://docs.astral.sh/uv/), un gestor de paquetes de Python rápido que maneja automáticamente los entornos virtuales. Luego inicialice un proyecto y agregue el SDK:

66 66 

67 ```bash theme={null}67 ```bash theme={null}

68 uv init68 uv init


356 356 

357Con `Bash` habilitado, intente: `"Write unit tests for utils.py, run them, and fix any failures"`357Con `Bash` habilitado, intente: `"Write unit tests for utils.py, run them, and fix any failures"`

358 358 

359Cada uno de estos fragmentos establece campos en el mismo objeto de opciones. Para obtener más información, consulte [Configurar su agente](/docs/es/agent-sdk/configuration).

360 

359<h2 id="key-concepts">361<h2 id="key-concepts">

360 Conceptos clave362 Conceptos clave

361</h2>363</h2>


376 378 

377Ahora que ha creado su primer agente, aprenda cómo extender sus capacidades y adaptarlo a su caso de uso:379Ahora que ha creado su primer agente, aprenda cómo extender sus capacidades y adaptarlo a su caso de uso:

378 380 

381* **[Configurar su agente](/docs/es/agent-sdk/configuration)**: componga el objeto de opciones y encuentre la página que cubre cada configuración

379* **[Permisos](/docs/es/agent-sdk/permissions)**: controle lo que su agente puede hacer y cuándo necesita aprobación382* **[Permisos](/docs/es/agent-sdk/permissions)**: controle lo que su agente puede hacer y cuándo necesita aprobación

380* **[Hooks](/docs/es/agent-sdk/hooks)**: ejecute código personalizado antes o después de llamadas de herramientas383* **[Hooks](/docs/es/agent-sdk/hooks)**: ejecute código personalizado antes o después de llamadas de herramientas

381* **[Sesiones](/docs/es/agent-sdk/sessions)**: construya agentes de múltiples turnos que mantengan contexto384* **[Sesiones](/docs/es/agent-sdk/sessions)**: construya agentes de múltiples turnos que mantengan contexto

Details

4 4 

5# Persistir sesiones en almacenamiento externo5# Persistir sesiones en almacenamiento externo

6 6 

7> Refleja transcripciones de sesiones en S3, Redis o tu propio backend para que cualquier host pueda reanudarlas.7> Refleja transcripciones de sesiones del SDK de Agent en su propio almacén de objetos, almacén de clave-valor o base de datos para que otros hosts puedan reanudar sus sesiones.

8 8 

9De forma predeterminada, el SDK escribe transcripciones de sesiones en archivos JSONL bajo `~/.claude/projects/` en el sistema de archivos local. Un adaptador `SessionStore` te permite reflejar esas transcripciones en tu propio backend, como S3, Redis o una base de datos, para que una sesión creada en un host pueda reanudarse en otro host que se ejecute desde un directorio de trabajo coincidente.9De forma predeterminada, el SDK escribe transcripciones de sesiones en archivos JSONL bajo `~/.claude/projects/` en el sistema de archivos local. Un adaptador `SessionStore` le permite reflejar esas transcripciones en su propio backend, como un almacén de objetos, un almacén de clave-valor o una base de datos, para que una sesión creada en un host pueda reanudarse en otro host que se ejecute desde un directorio de trabajo coincidente.

10 10 

11Razones comunes para usar un almacén de sesiones:11Razones comunes para usar un almacén de sesiones:

12 12 

13* **Implementaciones multi-host.** Las funciones sin servidor, los trabajadores con escalado automático y los ejecutores de CI no comparten un sistema de archivos. Un almacén compartido permite que las réplicas reanuden las sesiones de las demás.13* **Implementaciones multi-host.** Las funciones sin servidor, los trabajadores con escalado automático y los ejecutores de CI no comparten un sistema de archivos. Un almacén compartido permite que las réplicas reanuden las sesiones de las demás.

14* **Durabilidad.** Los contenedores locales son efímeros. Un almacén respaldado por S3 o una base de datos sobrevive a reinicios y redeploys.14* **Durabilidad.** Los contenedores locales son efímeros. Un almacén externo sobrevive a reinicios y redeploys.

15* **Cumplimiento y auditoría.** Mantén transcripciones en almacenamiento que ya gobiernas, con tus propias reglas de retención, cifrado y controles de acceso.15* **Cumplimiento y auditoría.** Mantén transcripciones en almacenamiento que ya gobiernas, con tus propias reglas de retención, cifrado y controles de acceso.

16 16 

17<h2 id="the-sessionstore-interface">17<h2 id="the-sessionstore-interface">


197 197 

198Implementa `append` y `load` contra tu backend. Añade `listSessions`, `listSessionSummaries`, `delete` y `listSubkeys` si deseas que `listSessions()`, lecturas de metadatos de una sola llamada, `deleteSession()` y la reanudación de subagentes funcionen contra el almacén.198Implementa `append` y `load` contra tu backend. Añade `listSessions`, `listSessionSummaries`, `delete` y `listSubkeys` si deseas que `listSessions()`, lecturas de metadatos de una sola llamada, `deleteSession()` y la reanudación de subagentes funcionen contra el almacén.

199 199 

200Las entradas pasadas a `append` se escriben como `SessionStoreEntry` (un objeto `{ type: string; ... }`). Trátalas como valores opacos seguros para JSON: persístalas en orden y devuélvelas desde `load` en el mismo orden. `load` debe devolver entradas que sean profundamente iguales a lo que se anexó; la serialización byte-igual no es requerida, por lo que backends como Postgres `jsonb` que reordenan claves de objeto están bien.200Las entradas pasadas a `append` se escriben como `SessionStoreEntry` (un objeto `{ type: string; ... }`). Trátalas como valores opacos seguros para JSON: persístalas en orden y devuélvelas desde `load` en el mismo orden. `load` debe devolver entradas que sean profundamente iguales a lo que se anexó; la serialización byte-igual no es requerida, por lo que backends que reordenan claves de objeto, como un tipo de columna JSON binaria, están bien.

201 201 

202<h2 id="reference-implementations">202<h2 id="reference-implementations">

203 Implementaciones de referencia203 Implementaciones de referencia

204</h2>204</h2>

205 205 

206El repositorio del SDK de TypeScript incluye adaptadores de referencia ejecutables para S3, Redis y Postgres bajo [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores). No se publican en npm; copia el archivo `src/` que necesites en tu proyecto e instala el cliente backend correspondiente.206Ambos repositorios del SDK incluyen adaptadores de referencia ejecutables bajo [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores) en TypeScript y [`examples/session_stores/`](https://github.com/anthropics/claude-agent-sdk-python/tree/main/examples/session_stores) en Python. Hay un adaptador por tipo de almacenamiento, y cada uno muestra cómo `append` y `load` se asignan a ese tipo de backend. No se publican como paquetes; copia el adaptador del tipo más cercano a tu backend en tu proyecto, instala el cliente de tu backend y adáptalo.

207 207 

208| Adaptador | Cliente backend | Modelo de almacenamiento |208| Tipo de almacenamiento | Modelo de almacenamiento | Adaptador de ejemplo |

209| :----------------------------------------------------------------------------------------------------------------------------- | :------------------- | :-------------------------------------------------------------------------------------- |209| :----------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

210| [`S3SessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/s3) | `@aws-sdk/client-s3` | Un archivo de parte JSONL por `append()`; `load()` lista, ordena y concatena. |210| Almacén de objetos | Un archivo de parte por `append()`; `load()` lista las partes, las ordena y las concatena. | S3 ([TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/s3), [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/examples/session_stores/s3_session_store.py)) |

211| [`RedisSessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/redis) | `ioredis` | Lista `RPUSH`/`LRANGE` por transcripción, más un índice de conjunto ordenado de sesión. |211| Almacén de clave-valor | Una lista por transcripción que `append()` inserta y `load()` lee en rango, más un índice ordenado de sesiones. | Redis ([TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/redis), [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/examples/session_stores/redis_session_store.py)) |

212| [`PostgresSessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/postgres) | `pg` | Una fila por entrada en una tabla `jsonb`, ordenada por `BIGSERIAL`. |212| Base de datos relacional o almacén de documentos | Una fila o documento por entrada, almacenado como JSON y ordenado por una clave asignada en la inserción. | Postgres ([TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/postgres), [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/examples/session_stores/postgres_session_store.py)) |

213 213 

214Cada adaptador toma una instancia de cliente preconfigurada, por lo que controlas credenciales, TLS, región y agrupación. Por ejemplo, con S3:214Cada adaptador toma una instancia de cliente preconfigurada, por lo que controlas credenciales, TLS, región y agrupación. El siguiente ejemplo conecta el adaptador de almacén de objetos en `query()` y luego se reanuda desde él en otro host:

215 215 

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

217import { query } from "@anthropic-ai/claude-agent-sdk";217import { query } from "@anthropic-ai/claude-agent-sdk";


276 Arquitectura de escritura dual276 Arquitectura de escritura dual

277</h3>277</h3>

278 278 

279El subproceso de Claude Code siempre escribe cada lote de entradas de transcripción en disco local primero, y luego el SDK reenvía el mismo lote a `append()` de tu almacén, por lo que el almacén es un espejo de la transcripción local en lugar de un reemplazo. Cuál copia sobrevive a la ejecución depende de cómo se inició la ejecución:279El subproceso de Claude Code siempre escribe cada lote de entradas de transcripción en el disco local primero, y luego el SDK reenvía el mismo lote a `append()` de su almacén, por lo que el almacén es un espejo del transcripción local en lugar de un reemplazo. Cuál copia sobrevive a la ejecución depende de cómo se inició la ejecución:

280 280 

281* **Sesión nueva, o una reanudación cuando el almacén no tiene nada para la sesión**: la transcripción local bajo tu directorio de configuración sobrevive a la ejecución, y el almacén recibe una copia.281* **Sesión nueva, o una reanudación cuando el almacén no tiene nada para la sesión**: la transcripción local bajo su directorio de configuración sobrevive a la ejecución, y el almacén recibe una copia.

282* **Ejecución [reanudada desde el almacén](#resume-from-the-store)**: la copia local se elimina al final de la ejecución, por lo que el almacén contiene la única copia duradera.282* **Ejecución [reanudada desde el almacén](#resume-from-the-store)**: la copia local se elimina al final de la ejecución, por lo que el almacén contiene la única copia duradera.

283 283 

284Si no deseas que una sesión nueva deje una transcripción en disco local, establece `CLAUDE_CONFIG_DIR` en un directorio temporal en `options.env`. Una ejecución reanudada desde el almacén ya elimina su copia local, por lo que no necesita tal configuración. En TypeScript, también expande `process.env` en `env`, ya que la [opción `env`](/docs/es/agent-sdk/typescript#options) reemplaza el entorno del subproceso.284Si no desea que una sesión nueva deje una transcripción en el disco local, establezca `CLAUDE_CONFIG_DIR` en un directorio temporal en `options.env`. Una ejecución reanudada desde el almacén ya elimina su copia local, por lo que no necesita tal configuración. En TypeScript, también propague `process.env` en `env`, ya que la [opción `env`](/docs/es/agent-sdk/typescript#options) reemplaza el entorno del subproceso.

285 285 

286Si tu aplicación inicia sesión a través de archivos en el directorio de configuración, como credenciales de OAuth o un `apiKeyHelper` en tu `settings.json` de usuario, copia primero esos archivos en el directorio temporal, o establece `ANTHROPIC_API_KEY` en `env` en su lugar. De lo contrario, la ejecución falla con `Not logged in`.286Si su aplicación inicia sesión a través de archivos en el directorio de configuración, como credenciales de OAuth o un `apiKeyHelper` en su `settings.json` de usuario, copie primero esos archivos en el directorio temporal, o establezca `ANTHROPIC_API_KEY` en `env` en su lugar. De lo contrario, la ejecución falla con `Not logged in`.

287 287 

288Dos opciones entran en conflicto con el espejo, y el SDK lanza al inicio si combinas cualquiera de ellas con un almacén:288Dos opciones entran en conflicto con el espejo, y el SDK lanza una excepción al inicio si combina cualquiera de ellas con un almacén:

289 289 

290* **`persistSession: false`** en TypeScript: desactiva las escrituras locales en las que se construye el espejo. El SDK de Python no tiene una opción equivalente.290* **`persistSession: false`** en TypeScript: desactiva las escrituras locales en las que se basa el espejo. El SDK de Python no tiene una opción equivalente.

291* **Punto de control de archivo**, `enableFileCheckpointing` en TypeScript o `enable_file_checkpointing` en Python: escribe sus copias de seguridad de archivo directamente en disco local, y el SDK no las refleja en el almacén.291* **Checkpointing de archivos**, `enableFileCheckpointing` en TypeScript o `enable_file_checkpointing` en Python: escribe sus copias de seguridad de archivos directamente en el disco local, y el SDK no las refleja en el almacén.

292 292 

293<h3 id="resume-from-the-store">293<h3 id="resume-from-the-store">

294 Reanudación desde el almacén294 Reanudación desde el almacén

295</h3>295</h3>

296 296 

297Cuando pasas `resume`, o `continue: true` en TypeScript o `continue_conversation=True` en Python, junto con un almacén, el SDK le pide al almacén una transcripción antes de que genere el subproceso:297Cuando pasa `resume`, o `continue: true` en TypeScript o `continue_conversation=True` en Python, junto con un almacén, el SDK solicita una transcripción al almacén antes de generar el subproceso:

298 298 

299* **`resume`**: el SDK solicita la sesión cuyo ID pasaste.299* **`resume`**: el SDK solicita la sesión cuyo ID pasó.

300* **`continue: true`** o **`continue_conversation=True`**: el SDK solicita la sesión más nueva del almacén.300* **`continue: true`** o **`continue_conversation=True`**: el SDK solicita la sesión más nueva del almacén.

301 301 

302Cuando el almacén devuelve la transcripción, el SDK la escribe en un directorio de configuración temporal, ejecuta el subproceso con `CLAUDE_CONFIG_DIR` apuntando allí, y elimina el directorio cuando finaliza la ejecución. La transcripción local que esa ejecución escribe se elimina con él, que es por qué el almacén contiene la única copia duradera en esta ruta.302Cuando el almacén devuelve la transcripción, el SDK la escribe en un directorio de configuración temporal, ejecuta el subproceso con `CLAUDE_CONFIG_DIR` apuntando allí, y elimina el directorio cuando finaliza la ejecución. La transcripción local que esa ejecución escribe se elimina con él, por lo que el almacén contiene la única copia duradera en esta ruta.

303 303 

304El SDK también siembra el directorio temporal con archivos de tu directorio de configuración real. Lo que copia difiere según el idioma:304El SDK también siembra el directorio temporal con archivos de su directorio de configuración real. Lo que copia difiere según el idioma:

305 305 

306* **TypeScript**: credenciales, `.claude.json`, y tu `settings.json` de usuario. De `settings.json` elimina las claves que se comportan mal bajo un directorio de configuración temporal: `enabledPlugins`, `extraKnownMarketplaces`, su alias [`additionalMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces), y cualquier `CLAUDE_CONFIG_DIR` en el bloque `env` del archivo. Antes de Agent SDK v0.3.232, el SDK no eliminaba el alias. La autenticación configurada en configuración, como [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), funciona cuando reanudas desde el almacén. Antes de Agent SDK v0.3.222, el SDK de TypeScript copiaba solo credenciales y `.claude.json`.306* **TypeScript**: credenciales, `.claude.json`, y su `settings.json` de usuario. De `settings.json` elimina las claves que se comportan mal bajo un directorio de configuración temporal: `enabledPlugins`, `extraKnownMarketplaces`, su alias [`additionalMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces), y cualquier `CLAUDE_CONFIG_DIR` en el bloque `env` del archivo. Antes de Agent SDK v0.3.232, el SDK no eliminaba el alias. La autenticación configurada en configuración, como [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), funciona cuando reanuda desde el almacén. Antes de Agent SDK v0.3.222, el SDK de TypeScript copiaba solo credenciales y `.claude.json`.

307* **Python**: solo credenciales y `.claude.json`, por lo que una aplicación que se autentica a través de `apiKeyHelper` en tu `settings.json` de usuario falla con `Not logged in` cuando se reanuda desde un almacén. Un `apiKeyHelper` en configuración administrada o de proyecto aún funciona, porque Claude Code lee esos archivos desde ubicaciones que `CLAUDE_CONFIG_DIR` no afecta.307* **Python**: solo credenciales y `.claude.json`, por lo que una aplicación que se autentica a través de `apiKeyHelper` en su `settings.json` de usuario falla con `Not logged in` cuando reanuda desde un almacén. Un `apiKeyHelper` en configuración administrada o de proyecto aún funciona, porque Claude Code lee esos archivos desde ubicaciones que `CLAUDE_CONFIG_DIR` no afecta.

308 308 

309Cuando el almacén no tiene nada para la sesión, el SDK se ejecuta bajo tu directorio de configuración real en su lugar, y el resultado depende de cuál opción pasaste:309Cuando el almacén no tiene nada para la sesión, el SDK se ejecuta bajo su directorio de configuración real en su lugar, y el resultado depende de qué opción pasó:

310 310 

311* **`resume`**: ambos SDKs pasan el ID al subproceso, que reanuda la transcripción local exactamente como lo hace `resume` sin un almacén.311* **`resume`**: ambos SDKs pasan el ID al subproceso, que reanuda la transcripción local exactamente como lo hace `resume` sin un almacén.

312* **`continue: true`** en TypeScript: el SDK inicia una sesión nueva.312* **`continue: true`** en TypeScript: el SDK inicia una sesión nueva.


316 Las escrituras de espejo son de mejor esfuerzo316 Las escrituras de espejo son de mejor esfuerzo

317</h3>317</h3>

318 318 

319Si `append()` rechaza, el SDK reintenta el lote hasta dos veces más con un retroceso corto, para un máximo de tres intentos en total. Una llamada que agota el tiempo de espera no se reintenta, ya que la llamada original puede seguir llegando. Si el lote sigue fallando, el SDK registra el error, emite un mensaje `{ type: "system", subtype: "mirror_error" }` en el iterador, descarta el lote y continúa la consulta. Debido a que un lote reintentado puede reentrega entradas que ya llegaron, deduplica por `entry.uuid` en tu implementación de `append()`.319Si `append()` rechaza, el SDK reintenta el lote hasta dos veces más con un retroceso corto, para un máximo de tres intentos en total. Una llamada que agota el tiempo de espera no se reintenta, ya que la llamada original aún puede llegar. Si el lote aún falla, el SDK registra el error, emite un mensaje `{ type: "system", subtype: "mirror_error" }` en el iterador, descarta el lote y continúa la consulta. Debido a que un lote reintentado puede volver a entregar entradas que ya llegaron, deduplique por `entry.uuid` en su implementación de `append()`.

320 320 

321Una interrupción del almacén no interrumpe al agente, ya que el subproceso escribe localmente primero. Monitorea `mirror_error` si necesitas detectar pérdida de datos del almacén. En una ejecución [reanudada desde el almacén](#resume-from-the-store), un lote descartado no tiene copia sobreviviente una vez que finaliza la ejecución.321Una interrupción del almacén no interrumpe el agente, ya que el subproceso escribe localmente primero. Monitoree `mirror_error` si necesita detectar pérdida de datos del almacén. En una ejecución [reanudada desde el almacén](#resume-from-the-store), un lote descartado no tiene copia sobreviviente una vez que finaliza la ejecución.

322 322 

323<h3 id="getsessionmessages-returns-the-post-compaction-chain">323<h3 id="getsessionmessages-returns-the-post-compaction-chain">

324 `getSessionMessages` devuelve la cadena posterior a la compactación324 `getSessionMessages` devuelve la cadena posterior a la compactación

325</h3>325</h3>

326 326 

327`getSessionMessages({ sessionStore })` devuelve la cadena de mensajes vinculada que el agente vería al reanudar. Después de la compactación automática, los turnos anteriores se reemplazan por un resumen, por lo que una sesión cuyo almacén contiene 503 entradas sin procesar puede devolver 18 mensajes desde `getSessionMessages`. Para el historial sin procesar completo, incluidos los turnos previos a la compactación y las entradas de metadatos, llama a `store.load(key)` directamente.327`getSessionMessages({ sessionStore })` devuelve la cadena de mensajes vinculada que el agente vería al reanudar. Después de la compactación automática, los turnos anteriores se reemplazan por un resumen, por lo que una sesión cuyo almacén contiene 503 entradas sin procesar puede devolver 18 mensajes de `getSessionMessages`. Para el historial sin procesar completo, incluidos los turnos anteriores a la compactación y las entradas de metadatos, llame a `store.load(key)` directamente.

328 328 

329<h3 id="forksession-is-not-a-byte-copy">329<h3 id="forksession-is-not-a-byte-copy">

330 `forkSession` no es una copia byte330 `forkSession` no es una copia byte a byte

331</h3>331</h3>

332 332 

333`forkSession({ sessionStore })` lee las entradas de origen, reescribe cada campo `sessionId` y remapea UUIDs de mensajes, luego anexa las entradas transformadas bajo una clave nueva. Una copia a nivel de adaptador o un atajo `CopyObject` produciría una transcripción que aún hace referencia al ID de sesión anterior, por lo que el SDK no usa uno.333`forkSession({ sessionStore })` lee las entradas de origen, reescribe cada campo `sessionId` y remapea los UUID de mensajes, luego añade las entradas transformadas bajo una clave nueva. Una copia a nivel de adaptador o un atajo `CopyObject` produciría una transcripción que aún hace referencia al ID de sesión anterior, por lo que el SDK no usa uno.

334 334 

335<h3 id="subagent-transcripts">335<h3 id="subagent-transcripts">

336 Transcripciones de subagente336 Transcripciones de subagentes

337</h3>337</h3>

338 338 

339Las transcripciones de subagente se reflejan bajo `subpath: "subagents/agent-<id>"`. `listSubagents({ sessionStore })` requiere que el adaptador implemente `listSubkeys`; `getSubagentMessages({ sessionStore })` lo usa cuando está disponible pero vuelve al subpath directo cuando no está definido. La reanudación también llama a `listSubkeys` para restaurar archivos de subagente; sin él, solo se materializa la transcripción principal.339Las transcripciones de subagentes se reflejan bajo `subpath: "subagents/agent-<id>"`. `listSubagents({ sessionStore })` requiere que el adaptador implemente `listSubkeys`; `getSubagentMessages({ sessionStore })` lo usa cuando está disponible pero recurre a la subruta directa cuando no está definido. La reanudación también llama a `listSubkeys` para restaurar archivos de subagentes; sin él, solo se materializa la transcripción principal.

340 340 

341<h3 id="retention">341<h3 id="retention">

342 Retención342 Retención

343</h3>343</h3>

344 344 

345El SDK nunca elimina de tu almacén por su cuenta. La retención es responsabilidad del adaptador: implementa TTLs, políticas de ciclo de vida de S3 o limpieza programada según tus requisitos de cumplimiento.345El SDK nunca elimina de su almacén por su cuenta. La retención es responsabilidad del adaptador: use el mecanismo de caducidad o ciclo de vida de su backend, o ejecute una limpieza programada, de acuerdo con sus requisitos de cumplimiento.

346 346 

347Las transcripciones locales bajo `CLAUDE_CONFIG_DIR` se barren independientemente por la configuración `cleanupPeriodDays`, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically). Una ejecución [reanudada desde el almacén](#resume-from-the-store) no deja transcripción local, por lo que para esas ejecuciones la retención de tu almacén es la única retención que existe.347Las transcripciones locales bajo `CLAUDE_CONFIG_DIR` se barren independientemente por la configuración `cleanupPeriodDays`, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically). Una ejecución [reanudada desde el almacén](#resume-from-the-store) no deja transcripción local, por lo que para esas ejecuciones la retención de su almacén es la única retención que existe.

348 348 

349<h2 id="supported-on">349<h2 id="supported-on">

350 Compatible con350 Compatible con


373* [Trabajar con sesiones](/docs/es/agent-sdk/sessions): Continúa, reanuda y bifurca sin un almacén personalizado373* [Trabajar con sesiones](/docs/es/agent-sdk/sessions): Continúa, reanuda y bifurca sin un almacén personalizado

374* [Alojar el SDK](/docs/es/agent-sdk/hosting): Patrones de implementación para entornos multi-host374* [Alojar el SDK](/docs/es/agent-sdk/hosting): Patrones de implementación para entornos multi-host

375* [TypeScript `Options`](/docs/es/agent-sdk/typescript#options): Referencia de opción completa375* [TypeScript `Options`](/docs/es/agent-sdk/typescript#options): Referencia de opción completa

376* [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores): Adaptadores de referencia ejecutables de S3, Redis y Postgres376* [Implementaciones de referencia](#reference-implementations): Adaptadores de ejemplo ejecutables para un almacén de objetos, un almacén de clave-valor y una base de datos, en ambos repositorios del SDK

Details

130* **Sus skills**: artefactos de prompt que crea, cada uno un directorio que contiene un archivo `SKILL.md`. El nombre de una skill invocable por el usuario se une a la superficie automáticamente, así que despachar su propio `/security-check` y ejecutar uno integrado funcionan de la misma manera130* **Sus skills**: artefactos de prompt que crea, cada uno un directorio que contiene un archivo `SKILL.md`. El nombre de una skill invocable por el usuario se une a la superficie automáticamente, así que despachar su propio `/security-check` y ejecutar uno integrado funcionan de la misma manera

131* **Archivos de comando personalizados**: una forma de artefacto más antigua con el mismo comportamiento, archivos Markdown planos en `.claude/commands/` cuyos nombres de archivo se convierten en nombres de comando. Las skills son su sucesor recomendado131* **Archivos de comando personalizados**: una forma de artefacto más antigua con el mismo comportamiento, archivos Markdown planos en `.claude/commands/` cuyos nombres de archivo se convierten en nombres de comando. Las skills son su sucesor recomendado

132 132 

133De forma predeterminada, tanto usted como Claude pueden invocar cualquier skill. Puede restringir cualquiera de las dos rutas a través del [frontmatter](/docs/es/skills#control-who-invokes-a-skill) de la skill. Para una definición de los dos términos, consulte las entradas [Comando](/docs/es/glossary#command) y [Skill](/docs/es/glossary#skill) del glosario. Consulte [Comandos en Claude Code](/docs/es/commands) para cada uno integrado y [Extienda Claude con skills](/docs/es/skills) para la guía completa de ambas formas de artefacto.133De forma predeterminada, tanto usted como Claude pueden invocar cualquier skill. Puede restringir cualquiera de las dos rutas a través del [frontmatter](/docs/es/skills#control-who-invokes-a-skill) de la skill. Para definiciones de comando y skill, consulte las entradas [Comando](/docs/es/glossary#command) y [Skill](/docs/es/glossary#skill) del glosario. Consulte [Comandos en Claude Code](/docs/es/commands) para cada uno integrado y [Extienda Claude con skills](/docs/es/skills) para la guía completa de ambas formas de artefacto.

134 134 

135<h3 id="discover-available-commands">135<h3 id="discover-available-commands">

136 Descubra comandos disponibles136 Descubra comandos disponibles


181 181 

182Envíe un comando incluyéndolo en su cadena de prompt, de la misma manera que envía texto regular. El despacho no depende de la opción `skills`. Enviar `/<name>` ejecuta una skill invocable por el usuario incluso cuando su lista `skills` la omite. Los comandos que actúan en el historial de conversación, como `/compact`, necesitan mensajes previos para trabajar.182Envíe un comando incluyéndolo en su cadena de prompt, de la misma manera que envía texto regular. El despacho no depende de la opción `skills`. Enviar `/<name>` ejecuta una skill invocable por el usuario incluso cuando su lista `skills` la omite. Los comandos que actúan en el historial de conversación, como `/compact`, necesitan mensajes previos para trabajar.

183 183 

184Un `/<name>` que no coincida ni con un comando en la sesión ni con un comando integrado de Claude Code no falla la consulta. Claude Code envía el prompt a Claude como un mensaje ordinario, con una nota de que el comando no se ejecutó, así que la consulta gasta un turno de modelo y devuelve la respuesta de Claude. Antes de v2.1.274, un `/<name>` que no coincidía con nada devolvía `Unknown command: /<name>` como resultado sin un turno de modelo.

185 

186Un `/<name>` que coincida con un comando integrado de Claude Code que no está disponible en la sesión, como `/theme`, devuelve `/theme isn't available in this environment.` como resultado sin un turno de modelo.

187 

184<Note>188<Note>

185 Un comando puede alcanzar el límite `maxTurns` / `max_turns` como cualquier otro prompt, terminando la consulta con un resultado de error en lugar de `success`. Para el contrato de resultado de error, consulte [Maneje el resultado](/docs/es/agent-sdk/agent-loop#handle-the-result). Si su comando podría alcanzar el límite, envuelva el bucle en un `try`/`catch` en TypeScript o `try`/`except` en Python, como se muestra en [Entrada de mensaje único](/docs/es/agent-sdk/streaming-vs-single-mode#single-message-input), o establezca `maxTurns` lo suficientemente alto para que el trabajo se complete.189 Un comando puede alcanzar el límite `maxTurns` / `max_turns` como cualquier otro prompt, terminando la consulta con un resultado de error en lugar de `success`. Para el contrato de resultado de error, consulte [Maneje el resultado](/docs/es/agent-sdk/agent-loop#handle-the-result). Si su comando podría alcanzar el límite, envuelva el bucle en un `try`/`catch` en TypeScript o `try`/`except` en Python, como se muestra en [Entrada de mensaje único](/docs/es/agent-sdk/streaming-vs-single-mode#single-message-input), o establezca `maxTurns` lo suficientemente alto para que el trabajo se complete.

186</Note>190</Note>

Details

153</h3>153</h3>

154 154 

155| Campo | Tipo | Requerido | Descripción |155| Campo | Tipo | Requerido | Descripción |

156| :---------------- | :---------------------------------------------------------- | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |156| :---------------- | :---------------------------------------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

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

158| `prompt` | `string` | Sí | El prompt del sistema del agente que define su rol y comportamiento |158| `prompt` | `string` | Sí | El prompt del sistema del agente que define su rol y comportamiento |

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


165| `initialPrompt` | `string` | No | Se envía automáticamente como el primer turno del usuario cuando este agente se ejecuta como el agente del hilo principal. Se ignora cuando el agente se invoca como subagente |165| `initialPrompt` | `string` | No | Se envía automáticamente como el primer turno del usuario cuando este agente se ejecuta como el agente del hilo principal. Se ignora cuando el agente se invoca como subagente |

166| `maxTurns` | `number` | No | Número máximo de turnos de agente antes de que el agente se detenga. Cuando el agente alcanza el límite, Claude Code devuelve su salida marcada como parcial, y puede [reanudar el agente](#resume-subagents) para continuar. La marca parcial requiere Claude Code v2.1.246 o posterior |166| `maxTurns` | `number` | No | Número máximo de turnos de agente antes de que el agente se detenga. Cuando el agente alcanza el límite, Claude Code devuelve su salida marcada como parcial, y puede [reanudar el agente](#resume-subagents) para continuar. La marca parcial requiere Claude Code v2.1.246 o posterior |

167| `background` | `boolean` | No | Ejecutar este agente como una tarea de fondo no bloqueante cuando se invoque |167| `background` | `boolean` | No | Ejecutar este agente como una tarea de fondo no bloqueante cuando se invoque |

168| `omitClaudeMd` | `boolean` | No | Ejecutar este agente sin los archivos CLAUDE.md del usuario, proyecto y local cuando se ejecuta como subagente; los archivos de política administrados aún se cargan. Se ignora cuando el agente se ejecuta como el agente del hilo principal. Requiere TypeScript Agent SDK v0.3.271 o posterior. El SDK de Python [`AgentDefinition`](/docs/es/agent-sdk/python#agentdefinition) no tiene este campo |

168| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Nivel de esfuerzo de razonamiento para este agente |169| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Nivel de esfuerzo de razonamiento para este agente |

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

170 171 


197La tabla a continuación enumera lo que contiene el contexto de un subagente que no es fork y lo que deja fuera.198La tabla a continuación enumera lo que contiene el contexto de un subagente que no es fork y lo que deja fuera.

198 199 

199| El subagente recibe | El subagente no recibe |200| El subagente recibe | El subagente no recibe |

200| :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- |201| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- |

201| Su propio prompt del sistema (`AgentDefinition.prompt`) y el prompt de la herramienta Agent | El historial de conversación del padre o resultados de herramientas |202| Su propio prompt del sistema (`AgentDefinition.prompt`) y el prompt de la herramienta Agent | El historial de conversación del padre o resultados de herramientas |

202| Project CLAUDE.md (cargado a través de [`settingSources`](/docs/es/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)) | Contenido de skills precargado, a menos que esté listado en `AgentDefinition.skills` |203| Project CLAUDE.md (cargado a través de [`settingSources`](/docs/es/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)), a menos que el agente establezca [`omitClaudeMd`](#agentdefinition-configuration) | Contenido de skills precargado, a menos que esté listado en `AgentDefinition.skills` |

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

204 205 

205<Note>206<Note>


644Puede limitar ese crecimiento de tres formas: qué tan profundamente se anidan los subagentes, cuántos se ejecutan a la vez y cuánto gasta la consulta completa. Establezca los límites de profundidad y concurrencia como variables de entorno a través de la opción [`env`](/docs/es/agent-sdk/typescript#options), y el límite de gasto como una opción de consulta:645Puede limitar ese crecimiento de tres formas: qué tan profundamente se anidan los subagentes, cuántos se ejecutan a la vez y cuánto gasta la consulta completa. Establezca los límites de profundidad y concurrencia como variables de entorno a través de la opción [`env`](/docs/es/agent-sdk/typescript#options), y el límite de gasto como una opción de consulta:

645 646 

646| Límite | Establézcalo con | Predeterminado | Qué hace Claude Code en el límite |647| Límite | Establézcalo con | Predeterminado | Qué hace Claude Code en el límite |

647| :----------- | :------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |648| :----------- | :------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

648| Profundidad | [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/es/env-vars) | `3` capas de subagentes por debajo de su agente principal. `1` impide que sus subagentes generen ninguno de los suyos | Deja un subagente en la capa inferior incapaz de generar, por lo que realiza su trabajo delegado por sí mismo. Consulte [subagentes anidados](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) |649| Profundidad | [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/es/env-vars) | `3` capas de subagentes por debajo de su agente principal. `1` impide que sus subagentes generen ninguno de los suyos | Deja un subagente en la capa inferior incapaz de generar, por lo que realiza su trabajo delegado por sí mismo. Consulte [subagentes anidados](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) |

649| Concurrencia | [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/es/env-vars) | `20` subagentes ejecutándose a la vez, contando cada subagente que Claude genera con la herramienta Agent | Se niega a generar otro subagente, devolviendo `Concurrent subagent limit reached`, hasta que el recuento en ejecución caiga por debajo del límite. Las sesiones con [ultracode](/docs/es/model-config#adjust-effort-level) activo nunca se rechazan. Consulte el [límite de subagentes concurrentes](/docs/es/sub-agents#concurrent-subagent-limit) |650| Concurrencia | [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/es/env-vars) | `20` subagentes ejecutándose a la vez, contando cada subagente que Claude genera con la herramienta Agent | Se niega a generar otro subagente, devolviendo `Concurrent subagent limit reached`, hasta que el recuento en ejecución caiga por debajo del límite. Las sesiones con [ultracode](/docs/es/model-config#adjust-effort-level) activo nunca se rechazan. Consulte el [límite de subagentes concurrentes](/docs/es/sub-agents#concurrent-subagent-limit) |

650| Gasto | `maxBudgetUsd` en TypeScript, `max_budget_usd` en Python | Sin límite. Se compara con `total_cost_usd`, por lo que las solicitudes de subagentes cuentan | Aplica el límite de tres formas: se niega a generar más subagentes, devolviendo `Budget limit reached`, detiene los subagentes en segundo plano que aún se están ejecutando, y finaliza la consulta con el subtipo de resultado `error_max_budget_usd`. Consulte [turnos y presupuesto](/docs/es/agent-sdk/agent-loop#turns-and-budget) |651| Gasto | `maxBudgetUsd` en TypeScript, `max_budget_usd` en Python | Sin límite. Se compara con `total_cost_usd`, por lo que las solicitudes de subagentes cuentan | Aplica el límite de tres formas: se niega a generar más subagentes, devolviendo `Budget limit reached`, detiene los subagentes en segundo plano que aún se están ejecutando, y finaliza la consulta con el subtipo de resultado `error_max_budget_usd`. Para saber cómo se comportan los límites en una sesión, consulte [turnos y presupuesto](/docs/es/agent-sdk/agent-loop#turns-and-budget) |

651 652 

652Los dos SDK tratan la opción `env` de manera diferente: el SDK de TypeScript reemplaza el entorno del subproceso con ella, por lo que distribuya `process.env` en ella para mantener variables como `PATH`, mientras que el SDK de Python la fusiona en el entorno heredado. Este ejemplo desactiva el anidamiento, permite como máximo cinco subagentes a la vez, y detiene la consulta una vez que el gasto estimado alcanza \$5:653Los dos SDK tratan la opción `env` de manera diferente: el SDK de TypeScript reemplaza el entorno del subproceso con ella, por lo que distribuya `process.env` en ella para mantener variables como `PATH`, mientras que el SDK de Python la fusiona en el entorno heredado. Este ejemplo desactiva el anidamiento, permite como máximo cinco subagentes a la vez, y detiene la consulta una vez que el gasto estimado alcanza \$5:

653 654 

Details

487| `agent` | `string` | `undefined` | Nombre del agente para el hilo principal. El agente debe estar definido en la opción `agents` o en la configuración |487| `agent` | `string` | `undefined` | Nombre del agente para el hilo principal. El agente debe estar definido en la opción `agents` o en la configuración |

488| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Defina subagentes mediante programación |488| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Defina subagentes mediante programación |

489| `agentProgressSummaries` | `boolean` | `false` | Cuando es `true`, genere resúmenes de progreso de una línea para subagentes y reenvíelos en eventos [`task_progress`](#sdktaskprogressmessage) a través del campo `summary`. Se aplica a subagentes en primer plano y en segundo plano |489| `agentProgressSummaries` | `boolean` | `false` | Cuando es `true`, genere resúmenes de progreso de una línea para subagentes y reenvíelos en eventos [`task_progress`](#sdktaskprogressmessage) a través del campo `summary`. Se aplica a subagentes en primer plano y en segundo plano |

490| `allowDangerouslySkipPermissions` | `boolean` | `false` | Habilite omitir permisos. Requerido cuando se usa `permissionMode: 'bypassPermissions'` |490| `allowDangerouslySkipPermissions` | `boolean` | `false` | Habilite omitir permisos. Requerido cuando se usa `permissionMode: 'bypassPermissions'`, al inicio o posteriormente a través de `setPermissionMode()`. Vea [Plan Mode](/docs/es/agent-sdk/permissions#plan-mode-plan) para cómo interactúa con `permissionMode: 'plan'` |

491| `allowedTools` | `string[]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude a solo estas herramientas. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking#model-availability) aquí, Claude Code también optar por la sesión. Las herramientas no listadas caen en `permissionMode` y `canUseTool`. Use `disallowedTools` para bloquear herramientas. Vea [Permissions](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |491| `allowedTools` | `string[]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude a solo estas herramientas. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking#model-availability) aquí, Claude Code también optar por la sesión. Las herramientas no listadas caen en `permissionMode` y `canUseTool`. Use `disallowedTools` para bloquear herramientas. Vea [Permissions](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |

492| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Habilite características beta |492| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Habilite características beta |

493| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Función de permiso personalizado, invocada solo cuando el [flujo de permisos](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) cae en un mensaje. No se invoca para llamadas preaprobadas por `allowedTools`, reglas de permiso, o `permissionMode`. Una regla de permiso no preaprueba las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves). Vea [`CanUseTool`](#canusetool) para detalles |493| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Función de permiso personalizado, invocada solo cuando el [flujo de permisos](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) cae en un mensaje. No se invoca para llamadas preaprobadas por `allowedTools`, reglas de permiso, o `permissionMode`. Una regla de permiso no preaprueba las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves). Vea [`CanUseTool`](#canusetool) para detalles |


502| `executable` | `'bun' \| 'deno' \| 'node'` | Detectado automáticamente | Tiempo de ejecución de JavaScript a usar |502| `executable` | `'bun' \| 'deno' \| 'node'` | Detectado automáticamente | Tiempo de ejecución de JavaScript a usar |

503| `executableArgs` | `string[]` | `[]` | Argumentos a pasar al ejecutable |503| `executableArgs` | `string[]` | `[]` | Argumentos a pasar al ejecutable |

504| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumentos adicionales |504| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumentos adicionales |

505| `fallbackModel` | `string` | `undefined` | Modelo a usar si el principal falla |505| `fallbackModel` | `string` | `undefined` | Modelo a usar si el principal falla. Acepta una lista separada por comas. Para el orden y el límite, vea [Fallback model chains](/docs/es/model-config#fallback-model-chains). Para orientación, vea [Choose a model](/docs/es/agent-sdk/configuration#choose-a-model) |

506| `forkSession` | `boolean` | `false` | Cuando se reanuda con `resume`, bifurque a un nuevo ID de sesión en lugar de continuar la sesión original |506| `forkSession` | `boolean` | `false` | Cuando se reanuda con `resume`, bifurque a un nuevo ID de sesión en lugar de continuar la sesión original |

507| `forwardSubagentText` | `boolean` | `false` | Reenvíe bloques de texto y pensamiento de subagentes como mensajes de asistente y usuario con `parent_tool_use_id` establecido, para que los consumidores puedan renderizar una transcripción anidada. Sin esta opción, Claude Code emite bloques `tool_use` y `tool_result` de subagentes pero no texto o pensamiento. Los mensajes de subagentes en cada profundidad de anidamiento se reenvían en Claude Code v2.1.219 y posterior; antes de v2.1.219, solo aparecían mensajes de subagentes de profundidad 1 |507| `forwardSubagentText` | `boolean` | `false` | Reenvíe bloques de texto y pensamiento de subagentes como mensajes de asistente y usuario con `parent_tool_use_id` establecido, para que los consumidores puedan renderizar una transcripción anidada. Sin esta opción, Claude Code emite bloques `tool_use` y `tool_result` de subagentes pero no texto o pensamiento. Los mensajes de subagentes en cada profundidad de anidamiento se reenvían en Claude Code v2.1.219 y posterior; antes de v2.1.219, solo aparecían mensajes de subagentes de profundidad 1 |

508| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Devoluciones de llamada de hooks para eventos |508| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Devoluciones de llamada de hooks para eventos |


510| `includePartialMessages` | `boolean` | `false` | Incluya eventos de mensaje parcial |510| `includePartialMessages` | `boolean` | `false` | Incluya eventos de mensaje parcial |

511| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Tiempo de espera en milisegundos para cada llamada `sessionStore.load()` y `sessionStore.listSubkeys()` durante la materialización de reanudación. Si el adaptador no se resuelve dentro de esta ventana, la consulta falla en lugar de colgarse. Se ignora cuando `sessionStore` no está establecido |511| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Tiempo de espera en milisegundos para cada llamada `sessionStore.load()` y `sessionStore.listSubkeys()` durante la materialización de reanudación. Si el adaptador no se resuelve dentro de esta ventana, la consulta falla en lugar de colgarse. Se ignora cuando `sessionStore` no está establecido |

512| `managedSettings` | `Settings` | `undefined` | Configuración de nivel de política suministrada por el proceso padre que genera la sesión. En máquinas con configuración administrada implementada por administrador, Claude Code ignora estas a menos que la fuente administrada de mayor prioridad del administrador establezca `parentSettingsBehavior: 'merge'`, y nunca las fusiona mientras un [`policyHelper`](/docs/es/settings-reference#policyhelper) suministra configuración administrada. Los valores fusionados pasan a través de un filtro de solo restrictivo; [Restrict parent settings](/docs/es/claude-apps-gateway#restrict-parent-settings) cubre lo que el filtro admite y los bloqueos `allowManaged*Only`. Un host que establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars) tiene tres claves leídas directamente de esta carga en su lugar: su [configuración de modelo](/docs/es/model-config#restrict-model-selection) en Claude Code v2.1.222 o posterior, [`modelPricing`](/docs/es/settings-reference#modelpricing) cuando ninguna fuente administrada la establece en v2.1.246 o posterior, y su entrada `ENABLE_TOOL_SEARCH` env en v2.1.247 o posterior |512| `managedSettings` | `Settings` | `undefined` | Configuración de nivel de política suministrada por el proceso padre que genera la sesión. En máquinas con configuración administrada implementada por administrador, Claude Code ignora estas a menos que la fuente administrada de mayor prioridad del administrador establezca `parentSettingsBehavior: 'merge'`, y nunca las fusiona mientras un [`policyHelper`](/docs/es/settings-reference#policyhelper) suministra configuración administrada. Los valores fusionados pasan a través de un filtro de solo restrictivo; [Restrict parent settings](/docs/es/claude-apps-gateway#restrict-parent-settings) cubre lo que el filtro admite y los bloqueos `allowManaged*Only`. Un host que establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars) tiene tres claves leídas directamente de esta carga en su lugar: su [configuración de modelo](/docs/es/model-config#restrict-model-selection) en Claude Code v2.1.222 o posterior, [`modelPricing`](/docs/es/settings-reference#modelpricing) cuando ninguna fuente administrada la establece en v2.1.246 o posterior, y su entrada `ENABLE_TOOL_SEARCH` env en v2.1.247 o posterior |

513| `maxBudgetUsd` | `number` | `undefined` | Detenga la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Comparado con la misma estimación que `total_cost_usd`; vea [Track cost and usage](/docs/es/agent-sdk/cost-tracking) para advertencias de precisión |513| `maxBudgetUsd` | `number` | `undefined` | Detenga la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Comparado con la misma estimación que `total_cost_usd`. Para advertencias de precisión y comportamiento de reinicio, vea [Track cost and usage](/docs/es/agent-sdk/cost-tracking) |

514| `maxThinkingTokens` | `number` | `undefined` | *Deprecado:* Use `thinking` en su lugar. Tokens máximos para el proceso de pensamiento |514| `maxThinkingTokens` | `number` | `undefined` | *Deprecado:* Use `thinking` en su lugar. Tokens máximos para el proceso de pensamiento |

515| `maxTurns` | `number` | `undefined` | Número máximo de turnos agentes (viajes de ronda de uso de herramientas) |515| `maxTurns` | `number` | `undefined` | Número máximo de turnos agentes (viajes de ronda de uso de herramientas) |

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


533| `sessionId` | `string` | Auto-generado | Use un UUID específico para la sesión en lugar de generar uno automáticamente |533| `sessionId` | `string` | Auto-generado | Use un UUID específico para la sesión en lugar de generar uno automáticamente |

534| `sessionStore` | [`SessionStore`](/docs/es/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Refleje transcripciones de sesión en un backend externo para que otro host pueda reanudarlas. Vea [Persist sessions to external storage](/docs/es/agent-sdk/session-storage) |534| `sessionStore` | [`SessionStore`](/docs/es/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Refleje transcripciones de sesión en un backend externo para que otro host pueda reanudarlas. Vea [Persist sessions to external storage](/docs/es/agent-sdk/session-storage) |

535| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Modo de vaciado para `sessionStore`. Se ignora cuando `sessionStore` no está establecido |535| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Modo de vaciado para `sessionStore`. Se ignora cuando `sessionStore` no está establecido |

536| `settings` | `string \| Settings` | `undefined` | Objeto de [settings](/docs/es/settings) en línea o ruta a un archivo de configuración. Completa la capa de configuración de marca en el [orden de precedencia](/docs/es/settings#settings-precedence). Cambie en tiempo de ejecución con [`applyFlagSettings()`](#applyflagsettings) |536| `settings` | `string \| Settings` | `undefined` | Objeto de [settings](/docs/es/settings) en línea, ruta a un archivo de configuración, o cadena JSON en línea. Completa la capa de configuración de marca en el [orden de precedencia](/docs/es/settings#settings-precedence). Cambie en tiempo de ejecución con [`applyFlagSettings()`](#applyflagsettings) |

537| `settingSources` | [`SettingSource`](#settingsource)`[]` | Valores predeterminados de CLI (todas las fuentes) | Controle qué configuración del sistema de archivos cargar. Pase `[]` para deshabilitar la configuración de usuario, proyecto y local. La [política administrada por punto final](/docs/es/managed-settings#delivery-mechanisms) se carga independientemente; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una [configuración elegible](/docs/es/server-managed-settings#platform-availability). Vea [Use Claude Code features](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) |537| `settingSources` | [`SettingSource`](#settingsource)`[]` | Valores predeterminados de CLI (todas las fuentes) | Controle qué configuración del sistema de archivos cargar. Pase `[]` para deshabilitar la configuración de usuario, proyecto y local. La [política administrada por punto final](/docs/es/managed-settings#delivery-mechanisms) se carga independientemente; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una [configuración elegible](/docs/es/server-managed-settings#platform-availability). Vea [Use Claude Code features](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

538| `skills` | `string[] \| 'all'` | `undefined` | Skills disponibles para la sesión. Pase `'all'` para habilitar cada skill descubierto, o una lista de nombres de skills. Pase solo nombres exactos. En Agent SDK v0.3.221 o posterior, el SDK rechaza nombres malformados y de forma comodín con un error antes de iniciar el proceso de Claude Code. Cuando se establece, el SDK agrega la herramienta Skill a `allowedTools` automáticamente. Si también pasa `tools`, incluya `'Skill'` en esa lista. Vea [Skills](/docs/es/agent-sdk/skills) |538| `skills` | `string[] \| 'all'` | `undefined` | Skills disponibles para la sesión. Pase `'all'` para habilitar cada skill descubierto, o una lista de nombres de skills. Pase solo nombres exactos. En Agent SDK v0.3.221 o posterior, el SDK rechaza nombres malformados y de forma comodín con un error antes de iniciar el proceso de Claude Code. Cuando se establece, el SDK agrega la herramienta Skill a `allowedTools` automáticamente. Si también pasa `tools`, incluya `'Skill'` en esa lista. Vea [Skills](/docs/es/agent-sdk/skills) |

539| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Función personalizada para generar el proceso de Claude Code. Use para ejecutar Claude Code en máquinas virtuales, contenedores o entornos remotos |539| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Función personalizada para generar el proceso de Claude Code. Use para ejecutar Claude Code en máquinas virtuales, contenedores o entornos remotos |


636| `interrupt()` | Interrumpe la consulta. Solo disponible en modo de entrada de transmisión. Cuando la CLI anuncia la capacidad `interrupt_receipt_v1` en [`SDKSystemMessage.capabilities`](#sdksystemmessage), se resuelve con un [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) que enumera los mensajes que estaban pendientes cuando llegó la interrupción. Se resuelve a `undefined` en CLIs anteriores a v2.1.205 |636| `interrupt()` | Interrumpe la consulta. Solo disponible en modo de entrada de transmisión. Cuando la CLI anuncia la capacidad `interrupt_receipt_v1` en [`SDKSystemMessage.capabilities`](#sdksystemmessage), se resuelve con un [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) que enumera los mensajes que estaban pendientes cuando llegó la interrupción. Se resuelve a `undefined` en CLIs anteriores a v2.1.205 |

637| `rewindFiles(userMessageId, options?)` | Restaura archivos a su estado en el mensaje de usuario especificado. Pase `{ dryRun: true }` para obtener una vista previa de los cambios. Requiere `enableFileCheckpointing: true`. Vea [File checkpointing](/docs/es/agent-sdk/file-checkpointing) |637| `rewindFiles(userMessageId, options?)` | Restaura archivos a su estado en el mensaje de usuario especificado. Pase `{ dryRun: true }` para obtener una vista previa de los cambios. Requiere `enableFileCheckpointing: true`. Vea [File checkpointing](/docs/es/agent-sdk/file-checkpointing) |

638| `setPermissionMode()` | Cambia el modo de permiso (solo disponible en modo de entrada de transmisión) |638| `setPermissionMode()` | Cambia el modo de permiso (solo disponible en modo de entrada de transmisión) |

639| `setModel()` | Cambia el modelo (solo disponible en modo de entrada de transmisión). Pasar `undefined` o la cadena `"default"` reinicia al modelo predeterminado de la sesión |639| `setModel()` | Cambia el modelo (solo disponible en modo de entrada de transmisión). Pasar `undefined` o la cadena `"default"` reinicia al [modelo predeterminado de Claude Code](/docs/es/model-config) |

640| `setMaxThinkingTokens()` | *Deprecado:* Use la opción `thinking` en su lugar. Cambia los tokens de pensamiento máximos. Pasar `null` reinicia el pensamiento al valor predeterminado de la sesión: se borra una anulación a mitad de sesión, y el pensamiento permanece desactivado para sesiones que lo tienen deshabilitado |640| `setMaxThinkingTokens()` | *Deprecado:* Use la opción `thinking` en su lugar. Cambia los tokens de pensamiento máximos. Pasar `null` reinicia el pensamiento al valor predeterminado de la sesión: se borra una anulación a mitad de sesión, y el pensamiento permanece desactivado para sesiones que lo tienen deshabilitado |

641| `applyFlagSettings(settings)` | Fusiona la configuración en la capa de configuración de marca de la sesión en tiempo de ejecución (solo disponible en modo de entrada de transmisión). Vea [`applyFlagSettings()`](#applyflagsettings) |641| `applyFlagSettings(settings)` | Fusiona la configuración en la capa de configuración de marca de la sesión en tiempo de ejecución (solo disponible en modo de entrada de transmisión). Vea [`applyFlagSettings()`](#applyflagsettings) |

642| `updateSettings(source, settings)` | Fusiona la configuración en el archivo de configuración local del proyecto, `.claude/settings.local.json`; entran en vigor en la siguiente solicitud. Acepta solo `source: 'localSettings'` y un conjunto de claves permitidas, actualmente `outputStyle`, con valores de cadena; no se admite la eliminación de una clave. Rechaza en transportes remotos y en sesiones cuyas [`settingSources`](#options) excluyen `local`. Requiere TypeScript SDK v0.3.257 o posterior, que incluye Claude Code v2.1.257 |642| `updateSettings(source, settings)` | Fusiona la configuración en el archivo de configuración local del proyecto, `.claude/settings.local.json`; entran en vigor en la siguiente solicitud. Acepta solo `source: 'localSettings'` y un conjunto de claves permitidas, actualmente `outputStyle`, con valores de cadena; no se admite la eliminación de una clave. Rechaza en transportes remotos y en sesiones cuyas [`settingSources`](#options) excluyen `local`. Requiere TypeScript SDK v0.3.257 o posterior, que incluye Claude Code v2.1.257 |


673 673 

674Los valores se escriben en la capa de configuración de marca, la misma capa que la opción `settings` en línea de `query()` completa al inicio. Esta es la misma capa que la [sección de precedencia en la página](#settings-precedence) llama opciones programáticas.674Los valores se escriben en la capa de configuración de marca, la misma capa que la opción `settings` en línea de `query()` completa al inicio. Esta es la misma capa que la [sección de precedencia en la página](#settings-precedence) llama opciones programáticas.

675 675 

676Las llamadas sucesivas fusionan superficialmente las claves de nivel superior. Una segunda llamada con `{ permissions: {...} }` reemplaza el objeto `permissions` completo de la llamada anterior en lugar de fusionarse profundamente en él. Para borrar una clave de la capa de marca y recurrir a fuentes de menor precedencia, pase `null` para esa clave. Pasar `undefined` no tiene efecto porque la serialización JSON lo elimina.676Las llamadas sucesivas fusionan superficialmente las claves de nivel superior. Una segunda llamada con `{ permissions: {...} }` reemplaza el objeto `permissions` completo de la llamada anterior en lugar de fusionarse profundamente en él. Para borrar una clave de la capa de marca, pase `null` para esa clave. La mayoría de las claves luego recurren a fuentes de menor precedencia. Un `model` borrado se reinicia al [modelo predeterminado de Claude Code](/docs/es/model-config), incluso cuando un archivo de configuración establece `model`. Pasar `undefined` no tiene efecto porque la serialización JSON lo elimina.

677 677 

678Solo disponible en modo de entrada de transmisión, la misma restricción que `setModel()` y `setPermissionMode()`.678Solo disponible en modo de entrada de transmisión, la misma restricción que `setModel()` y `setPermissionMode()`.

679 679 

680El ejemplo a continuación cambia el modelo activo a mitad de sesión, luego borra la anulación para que el modelo recurra a lo que especifique la configuración del usuario o proyecto.680El ejemplo a continuación cambia el modelo activo a mitad de sesión, luego borra la anulación para que el modelo se reinicie al [modelo predeterminado de Claude Code](/docs/es/model-config).

681 681 

682```typescript theme={null}682```typescript theme={null}

683import { query } from "@anthropic-ai/claude-agent-sdk";683import { query } from "@anthropic-ai/claude-agent-sdk";


687// Anule el modelo para el resto de la sesión687// Anule el modelo para el resto de la sesión

688await q.applyFlagSettings({ model: "claude-opus-4-6" });688await q.applyFlagSettings({ model: "claude-opus-4-6" });

689 689 

690// Más tarde: borre la anulación y recurra a la configuración de menor precedencia690// Más tarde: borre la anulación; el modelo se reinicia al modelo predeterminado de Claude Code

691await q.applyFlagSettings({ model: null });691await q.applyFlagSettings({ model: null });

692```692```

693 693 


960 initialPrompt?: string;960 initialPrompt?: string;

961 maxTurns?: number;961 maxTurns?: number;

962 background?: boolean;962 background?: boolean;

963 omitClaudeMd?: boolean;

963 memory?: "user" | "project" | "local";964 memory?: "user" | "project" | "local";

964 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;965 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;

965 permissionMode?: PermissionMode;966 permissionMode?: PermissionMode;


968```969```

969 970 

970| Campo | Requerido | Descripción |971| Campo | Requerido | Descripción |

971| :------------------------------------ | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |972| :------------------------------------ | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

973| `tools` | No | Matriz de nombres de herramientas permitidas. Si se omite, hereda cada [herramienta disponible para subagentes](/docs/es/sub-agents#available-tools). Para precargar Skills en el contexto del agente, use el campo `skills` en lugar de enumerar `'Skill'` aquí |974| `tools` | No | Matriz de nombres de herramientas permitidas. Si se omite, hereda cada [herramienta disponible para subagentes](/docs/es/sub-agents#available-tools). Para precargar Skills en el contexto del agente, use el campo `skills` en lugar de enumerar `'Skill'` aquí |

974| `disallowedTools` | No | Matriz de nombres de herramientas a desautorizar explícitamente para este agente. Los patrones de nivel de servidor MCP también se aceptan: `mcp__server` o `mcp__server__*` elimina cada herramienta de ese servidor, y `mcp__*` elimina cada herramienta MCP de cualquier servidor |975| `disallowedTools` | No | Matriz de nombres de herramientas a desautorizar explícitamente para este agente. Los patrones de nivel de servidor MCP también se aceptan: `mcp__server` o `mcp__server__*` elimina cada herramienta de ese servidor, y `mcp__*` elimina cada herramienta MCP de cualquier servidor |


979| `initialPrompt` | No | Auto-enviado como el primer turno de usuario cuando este agente se ejecuta como el agente del hilo principal |980| `initialPrompt` | No | Auto-enviado como el primer turno de usuario cuando este agente se ejecuta como el agente del hilo principal |

980| `maxTurns` | No | Número máximo de turnos agentes (viajes de ronda de API) antes de detener |981| `maxTurns` | No | Número máximo de turnos agentes (viajes de ronda de API) antes de detener |

981| `background` | No | Ejecute este agente como una tarea de fondo no bloqueante cuando se invoque |982| `background` | No | Ejecute este agente como una tarea de fondo no bloqueante cuando se invoque |

983| `omitClaudeMd` | No | Ejecute este agente sin los archivos CLAUDE.md de usuario, proyecto y local cuando se ejecuta como un subagente; los archivos de política administrada aún se cargan. Úselo para agentes que toman todo lo que necesitan del mensaje de solicitud de herramienta del agente. Se ignora cuando este agente se ejecuta como el agente del hilo principal. Requiere TypeScript Agent SDK v0.3.271 o posterior |

982| `memory` | No | Fuente de memoria para este agente: `'user'`, `'project'`, o `'local'` |984| `memory` | No | Fuente de memoria para este agente: `'user'`, `'project'`, o `'local'` |

983| `effort` | No | Nivel de esfuerzo de razonamiento para este agente. Acepta un nivel nombrado o un entero |985| `effort` | No | Nivel de esfuerzo de razonamiento para este agente. Acepta un nivel nombrado o un entero |

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


1094 signal: AbortSignal;1096 signal: AbortSignal;

1095 suggestions?: PermissionUpdate[];1097 suggestions?: PermissionUpdate[];

1096 blockedPath?: string;1098 blockedPath?: string;

1099 mcpServer?: { name: string; source: string };

1097 decisionReason?: string;1100 decisionReason?: string;

1098 toolUseID: string;1101 toolUseID: string;

1099 agentID?: string;1102 agentID?: string;


1107| `signal` | `AbortSignal` | Señalizado si la operación debe abortarse |1110| `signal` | `AbortSignal` | Señalizado si la operación debe abortarse |

1108| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Actualizaciones de permiso sugeridas para que el usuario no sea solicitado nuevamente para esta herramienta. Los mensajes de Bash incluyen una sugerencia con el destino `localSettings` [destination](#permissionupdatedestination), por lo que devolverlo en `updatedPermissions` escribe la regla en `.claude/settings.local.json` y persiste entre sesiones. |1111| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Actualizaciones de permiso sugeridas para que el usuario no sea solicitado nuevamente para esta herramienta. Los mensajes de Bash incluyen una sugerencia con el destino `localSettings` [destination](#permissionupdatedestination), por lo que devolverlo en `updatedPermissions` escribe la regla en `.claude/settings.local.json` y persiste entre sesiones. |

1109| `blockedPath` | `string` | La ruta de archivo que activó la solicitud de permiso, si corresponde |1112| `blockedPath` | `string` | La ruta de archivo que activó la solicitud de permiso, si corresponde |

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

1110| `decisionReason` | `string` | Explica por qué se activó esta solicitud de permiso |1114| `decisionReason` | `string` | Explica por qué se activó esta solicitud de permiso |

1111| `toolUseID` | `string` | Identificador único para esta llamada de herramienta específica dentro del mensaje del asistente |1115| `toolUseID` | `string` | Identificador único para esta llamada de herramienta específica dentro del mensaje del asistente |

1112| `agentID` | `string` | Si se ejecuta dentro de un sub-agente, el ID del sub-agente |1116| `agentID` | `string` | Si se ejecuta dentro de un sub-agente, el ID del sub-agente |


1463 permission_denials: SDKPermissionDenial[];1467 permission_denials: SDKPermissionDenial[];

1464 queued_turn_count?: number;1468 queued_turn_count?: number;

1465 errors: string[];1469 errors: string[];

1470 startup_failure_reason?: SDKStartupFailureReason;

1466 user_message_uuid?: string;1471 user_message_uuid?: string;

1467 user_message_uuids?: string[];1472 user_message_uuids?: string[];

1468 terminal_reason?: TerminalReason;1473 terminal_reason?: TerminalReason;


1486* `modelUsage`: totales por modelo para cada llamada de modelo realizada a través de la canalización de consultas durante esta llamada `query()`, incluyendo el bucle principal, subagentes y llamadas internas como compactación y agentes de Workflow. Las llamadas auxiliares fuera de esa canalización, como el clasificador de permisos y solicitudes de conteo de tokens, están excluidas. En sesiones de entrada de transmisión los totales son acumulativos entre turnos, así que lea el resultado más reciente en lugar de sumar entre resultados. Consulte [Rastrear costos en modo de entrada de transmisión](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para reinicializaciones y [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) para resultados puestos a cero.1491* `modelUsage`: totales por modelo para cada llamada de modelo realizada a través de la canalización de consultas durante esta llamada `query()`, incluyendo el bucle principal, subagentes y llamadas internas como compactación y agentes de Workflow. Las llamadas auxiliares fuera de esa canalización, como el clasificador de permisos y solicitudes de conteo de tokens, están excluidas. En sesiones de entrada de transmisión los totales son acumulativos entre turnos, así que lea el resultado más reciente en lugar de sumar entre resultados. Consulte [Rastrear costos en modo de entrada de transmisión](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para reinicializaciones y [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) para resultados puestos a cero.

1487* `total_cost_usd`: costo estimado acumulativo en USD para esta llamada `query()`, cubriendo las mismas llamadas que `modelUsage` y reiniciando en los mismos puntos. Es una estimación, no una declaración de facturación. Consulte [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de precisión.1492* `total_cost_usd`: costo estimado acumulativo en USD para esta llamada `query()`, cubriendo las mismas llamadas que `modelUsage` y reiniciando en los mismos puntos. Es una estimación, no una declaración de facturación. Consulte [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de precisión.

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

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

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

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

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


1561* **`0`**: Claude Code no cuenta los mensajes que envió sin esa `origin`, y no cuenta notificaciones de tareas, así que un turno aún puede seguir.1567* **`0`**: Claude Code no cuenta los mensajes que envió sin esa `origin`, y no cuenta notificaciones de tareas, así que un turno aún puede seguir.

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

1563 1569 

1570<h4 id="startup_failure_reason">

1571 `startup_failure_reason`

1572</h4>

1573 

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

1575 

1576Establezca `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` en `1` en [`env`](#options) para recibir este resultado para cada valor `SDKStartupFailureReason`. Sin esa variable, Claude Code escribe el resultado solo para estos fallos, y el resto termina con salida stderr, una salida no cero, y ningún mensaje de resultado:

1577 

1578* Un resumen que Claude Code detiene porque no puede [devolver la sesión a su worktree](/docs/es/worktrees#the-session-resumes-outside-its-worktree), con `worktree_unverified` o `worktree_resume_refused`. Esa sección dice qué error lleva qué valor.

1579* Una [`continue`](#options) rechazada de una conversación que una sesión de fondo mantiene, con `session_held_by_background`. Para una [`resume`](#options) rechazada de tal conversación, Claude Code escribe el resultado solo cuando la variable está establecida.

1580 

1581```typescript theme={null}

1582type SDKStartupFailureReason =

1583 | "org_pin_api_key_conflict"

1584 | "org_verify_failed"

1585 | "org_pin_mismatch"

1586 | "managed_settings_invalid"

1587 | "remote_settings_required_unavailable"

1588 | "gateway_signin_required"

1589 | "gateway_access_denied"

1590 | "proxy_invalid"

1591 | "temp_dir_unusable"

1592 | "cwd_unavailable"

1593 | "shell_tool_missing"

1594 | "session_held_by_background"

1595 | "worktree_resume_refused"

1596 | "worktree_unverified"

1597 | "cli_version_too_old"

1598 | "bypass_root";

1599```

1600 

1601Cada valor nombra un rechazo:

1602 

1603| Valor | Qué detuvo la sesión |

1604| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

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

1608| `managed_settings_invalid` | La configuración de política administrada no pudo leerse, o el pin no nombra ninguna organización |

1609| `remote_settings_required_unavailable` | La configuración administrada que la organización requiere no pudo cargarse |

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

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

1612| `proxy_invalid` | Una configuración de proxy no es una URL completa |

1613| `temp_dir_unusable` | El directorio temporal por usuario no es seguro o no pudo crearse |

1614| `cwd_unavailable` | El directorio de trabajo fue eliminado, movido, o no puede leerse |

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

1616| `session_held_by_background` | La conversación a reanudar o continuar se ejecuta como una [sesión de fondo](/docs/es/agent-view) |

1617| `worktree_resume_refused` | El worktree de la sesión falló sus verificaciones de seguridad, o el resumen se lanzó desde dentro de él. `errors` dice si ejecutar el mismo resumen nuevamente continúa sin el worktree |

1618| `worktree_unverified` | El worktree de la sesión no pudo verificarse ahora, y reintentar puede tener éxito |

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

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

1621 

1564<h3 id="sdksystemmessage">1622<h3 id="sdksystemmessage">

1565 `SDKSystemMessage`1623 `SDKSystemMessage`

1566</h3>1624</h3>


1582 mcp_servers: {1640 mcp_servers: {

1583 name: string;1641 name: string;

1584 status: string;1642 status: string;

1643 source?: string;

1585 }[];1644 }[];

1586 model: string;1645 model: string;

1587 permissionMode: PermissionMode;1646 permissionMode: PermissionMode;


1603 1662 

1604*1663*

1605 1664 

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

1666 

1667*

1668 

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

1607 1670 

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


2068 tool_name: string;2131 tool_name: string;

2069 tool_input: unknown;2132 tool_input: unknown;

2070 tool_use_id: string;2133 tool_use_id: string;

2134 mcp_server?: McpServerProvenance;

2071};2135};

2072```2136```

2073 2137 

2138`mcp_server` está presente cuando la herramienta proviene de un servidor MCP; vea [`McpServerProvenance`](#mcpserverprovenance). Las entradas `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` y `PermissionDenied` llevan el mismo campo. El campo requiere Agent SDK v0.3.274 o posterior.

2139 

2074<h4 id="posttoolusehookinput">2140<h4 id="posttoolusehookinput">

2075 `PostToolUseHookInput`2141 `PostToolUseHookInput`

2076</h4>2142</h4>


2083 tool_response: unknown;2149 tool_response: unknown;

2084 tool_use_id: string;2150 tool_use_id: string;

2085 duration_ms?: number;2151 duration_ms?: number;

2152 mcp_server?: McpServerProvenance;

2086};2153};

2087```2154```

2088 2155 


2099 error: string;2166 error: string;

2100 is_interrupt?: boolean;2167 is_interrupt?: boolean;

2101 duration_ms?: number;2168 duration_ms?: number;

2169 mcp_server?: McpServerProvenance;

2102};2170};

2103```2171```

2104 2172 


2133 tool_input: unknown;2201 tool_input: unknown;

2134 tool_use_id: string;2202 tool_use_id: string;

2135 reason: string;2203 reason: string;

2204 mcp_server?: McpServerProvenance;

2136};2205};

2137```2206```

2138 2207 


2352 tool_name: string;2421 tool_name: string;

2353 tool_input: unknown;2422 tool_input: unknown;

2354 permission_suggestions?: PermissionUpdate[];2423 permission_suggestions?: PermissionUpdate[];

2424 mcp_server?: McpServerProvenance;

2355};2425};

2356```2426```

2357 2427 


2861 2931 

2862```typescript theme={null}2932```typescript theme={null}

2863type MonitorInput = {2933type MonitorInput = {

2934 description: string;

2935 timeout_ms: number;

2864 command?: string;2936 command?: string;

2865 ws?: {2937 ws?: {

2866 url: string;2938 url: string;

2867 protocols?: string[];2939 protocols?: string[];

2868 };2940 };

2869 description: string;

2870 timeout_ms: number;

2871 persistent: boolean;

2872};2941};

2873```2942```

2874 2943 

2875Ejecuta una fuente de fondo y entrega cada evento a Claude para que pueda reaccionar sin sondeo: `command` ejecuta un script y emite un evento por línea de stdout, y `ws` abre un WebSocket y emite un evento por marco de texto. Proporcione exactamente uno de `command` o `ws`. La fuente `ws` requiere Claude Code v2.1.195 o posterior.2944Ejecuta una fuente de fondo y entrega cada evento a Claude para que pueda reaccionar sin sondeo: `command` ejecuta un script y emite un evento por línea de stdout, y `ws` abre un WebSocket y emite un evento por marco de texto. Proporcione exactamente uno de `command` o `ws`. La fuente `ws` requiere Claude Code v2.1.195 o posterior.

2876 2945 

2877Establezca `persistent: true` para vigilancias de duración de sesión como colas de registro. Cuando Monitor ejecuta un comando, sigue las mismas reglas de permiso que Bash; una vigilancia de WebSocket solicita aprobación por separado. Vea la [referencia de herramienta Monitor](/docs/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor. El tipo exportado marca `timeout_ms` y `persistent` como requeridos porque el esquema completa sus valores predeterminados, 300000 y `false`; una llamada que los omite valida.2946`timeout_ms` es el plazo de la vigilancia en milisegundos. El valor predeterminado es 300000, y el plazo efectivo es como máximo 1800000, que son 30 minutos. En el plazo, la vigilancia termina y Claude recibe un aviso para que pueda iniciar una nueva vigilancia si aún la necesita.

2947 

2948El tipo exportado marca `timeout_ms` como requerido porque el esquema completa el valor predeterminado; una llamada que lo omite valida.

2949 

2950Cuando Monitor ejecuta un comando, sigue las mismas reglas de permiso que Bash; una vigilancia de WebSocket solicita aprobación por separado. Vea la [referencia de herramienta Monitor](/docs/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.

2878 2951 

2879<h3 id="taskoutput">2952<h3 id="taskoutput">

2880 TaskOutput2953 TaskOutput


4865| `description` | `string` | Descripción de cuándo usar este agente |4938| `description` | `string` | Descripción de cuándo usar este agente |

4866| `model` | `string \| undefined` | Modelo que usa este agente: un alias o ID de modelo, o `'inherit'` para el modelo del padre. Cuando es `undefined`, Claude Code elige el modelo en el [orden de modelo de subagente](/docs/es/sub-agents#choose-a-model) |4939| `model` | `string \| undefined` | Modelo que usa este agente: un alias o ID de modelo, o `'inherit'` para el modelo del padre. Cuando es `undefined`, Claude Code elige el modelo en el [orden de modelo de subagente](/docs/es/sub-agents#choose-a-model) |

4867 4940 

4941<h3 id="mcpserverprovenance">

4942 `McpServerProvenance`

4943</h3>

4944 

4945El servidor MCP que sirve una herramienta `mcp__*`, y de dónde provino la definición de ese servidor. Las entradas de hook [`PreToolUse`](#pretoolusehookinput), `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` y `PermissionDenied` la llevan como `mcp_server`, y las opciones [`CanUseTool`](#canusetool) la llevan como `mcpServer`. Ambas la omiten para herramientas que no provienen de un servidor MCP.

4946 

4947```typescript theme={null}

4948type McpServerProvenance = {

4949 name: string;

4950 source: string;

4951};

4952```

4953 

4954| Campo | Tipo | Descripción |

4955| :------- | :------- | :-------------------------------------------------------------------------------------------------------------------------- |

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

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

4958 

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

4960 

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

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

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

4964 

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

4966 

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

4968 

4868<h3 id="mcpserverstatus">4969<h3 id="mcpserverstatus">

4869 `McpServerStatus`4970 `McpServerStatus`

4870</h3>4971</h3>


4882 error?: string;4983 error?: string;

4883 config?: McpServerStatusConfig;4984 config?: McpServerStatusConfig;

4884 scope?: string;4985 scope?: string;

4986 source?: string;

4885 tools?: {4987 tools?: {

4886 name: string;4988 name: string;

4887 description?: string;4989 description?: string;


4894};4996};

4895```4997```

4896 4998 

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

5000 

4897<h3 id="mcpserverstatusconfig">5001<h3 id="mcpserverstatusconfig">

4898 `McpServerStatusConfig`5002 `McpServerStatusConfig`

4899</h3>5003</h3>


5641| :-------------------------- | :---------------------------------------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |5745| :-------------------------- | :---------------------------------------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

5642| `enabled` | `boolean` | `false` | Habilite el modo sandbox para la ejecución de comandos |5746| `enabled` | `boolean` | `false` | Habilite el modo sandbox para la ejecución de comandos |

5643| `failIfUnavailable` | `boolean` | `true` | Deténgase al inicio si `enabled` es `true` pero el sandbox no puede iniciarse. Establezca `false` para recurrir a la ejecución sin sandbox con una advertencia en stderr |5747| `failIfUnavailable` | `boolean` | `true` | Deténgase al inicio si `enabled` es `true` pero el sandbox no puede iniciarse. Establezca `false` para recurrir a la ejecución sin sandbox con una advertencia en stderr |

5644| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-apruebe comandos bash cuando el sandbox está habilitado |5748| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-apruebe comandos Bash cuando el sandbox está habilitado |

5645| `excludedCommands` | `string[]` | `[]` | Comandos que siempre omiten restricciones de sandbox (por ejemplo, `['docker']`). Estos se ejecutan sin sandbox automáticamente sin participación del modelo |5749| `excludedCommands` | `string[]` | `[]` | Comandos que siempre omiten restricciones de sandbox (por ejemplo, `['docker']`). Estos se ejecutan sin sandbox automáticamente sin participación del modelo |

5646| `allowUnsandboxedCommands` | `boolean` | `true` | Permita que el modelo solicite ejecutar comandos fuera del sandbox. Cuando es `true`, el modelo puede establecer `dangerouslyDisableSandbox` en la entrada de herramienta, que se vuelve al [sistema de permisos](#permissions-fallback-for-unsandboxed-commands) |5750| `allowUnsandboxedCommands` | `boolean` | `true` | Permita que el modelo solicite ejecutar comandos fuera del sandbox. Cuando es `true`, el modelo puede establecer `dangerouslyDisableSandbox` en la entrada de herramienta, que se vuelve al [sistema de permisos](#permissions-fallback-for-unsandboxed-commands) |

5647| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | Configuración de sandbox específica de red |5751| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | Configuración de sandbox específica de red |

Details

12 Para migrar, use la [API `query()`](/docs/es/agent-sdk/typescript) y las [opciones de sesión](/docs/es/agent-sdk/sessions) que acepta. Pase un `AsyncIterable<SDKUserMessage>` para conversaciones de múltiples turnos, u `options.resume` para continuar una sesión guardada. Esta página se mantiene como referencia si mantiene código en Agent SDK 0.2.x o anterior.12 Para migrar, use la [API `query()`](/docs/es/agent-sdk/typescript) y las [opciones de sesión](/docs/es/agent-sdk/sessions) que acepta. Pase un `AsyncIterable<SDKUserMessage>` para conversaciones de múltiples turnos, u `options.resume` para continuar una sesión guardada. Esta página se mantiene como referencia si mantiene código en Agent SDK 0.2.x o anterior.

13</Warning>13</Warning>

14 14 

15V2 fue una API de sesión experimental que eliminó la necesidad de generadores asincronos y coordinación de rendimiento. En lugar de gestionar el estado del generador entre turnos, cada turno era un ciclo `send()`/`stream()` separado. La superficie de la API se redujo a tres conceptos:15V2 fue una API de sesión experimental que eliminó la necesidad de generadores asincronos y coordinación de rendimiento. En lugar de gestionar el estado del generador entre turnos, cada turno era un ciclo `send()`/`stream()` separado. La superficie de la API se redujo a crear una sesión, enviar un mensaje y transmitir la respuesta:

16 16 

17* `createSession()` / `resumeSession()`: Iniciar o continuar una conversación17* `createSession()` / `resumeSession()`: Iniciar o continuar una conversación

18* `session.send()`: Enviar un mensaje18* `session.send()`: Enviar un mensaje

Details

555La entrada contiene las preguntas generadas por Claude en un array `questions`. Cada pregunta tiene estos campos:555La entrada contiene las preguntas generadas por Claude en un array `questions`. Cada pregunta tiene estos campos:

556 556 

557| Campo | Descripción |557| Campo | Descripción |

558| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |558| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

559| `question` | El texto completo de la pregunta a mostrar |559| `question` | El texto completo de la pregunta a mostrar |

560| `header` | Etiqueta corta para la pregunta (máximo 12 caracteres) |560| `header` | Etiqueta corta para la pregunta (máximo 12 caracteres) |

561| `options` | Array de 2-4 opciones, cada una con `label` y `description`. TypeScript: opcionalmente `preview` (vea [abajo](#option-previews-typescript)) |561| `options` | Array de 2-4 opciones, cada una con `label` y `description`. TypeScript: opcionalmente `preview`. Vea [Vistas previas de opciones](#option-previews-typescript). |

562| `multiSelect` | Si es `true`, los usuarios pueden seleccionar múltiples opciones |562| `multiSelect` | Si es `true`, los usuarios pueden seleccionar múltiples opciones |

563 563 

564La estructura que su callback recibe:564La estructura que su callback recibe:

agent-teams.md +5 −1

Details

121 `tmux` tiene limitaciones conocidas en ciertos sistemas operativos y tradicionalmente funciona mejor en macOS. Usar `tmux -CC` en iTerm2 es el punto de entrada sugerido en `tmux`.121 `tmux` tiene limitaciones conocidas en ciertos sistemas operativos y tradicionalmente funciona mejor en macOS. Usar `tmux -CC` en iTerm2 es el punto de entrada sugerido en `tmux`.

122</Note>122</Note>

123 123 

124El valor predeterminado es `"in-process"`. Antes de v2.1.179, el valor predeterminado era `"auto"`, por lo que las sesiones actualizadas que anteriormente abrían paneles divididos ahora permanecen en una terminal a menos que establezca el modo explícitamente. Configure `"auto"` para habilitar paneles divididos cuando ya esté ejecutándose dentro de una sesión tmux o su terminal sea iTerm2, retrocediendo a en proceso de lo contrario. La configuración `"tmux"` habilita el modo de panel dividido y detecta automáticamente si usar tmux o iTerm2 según su terminal.124El valor predeterminado es `"in-process"`. Configure `"auto"` para habilitar paneles divididos cuando ya esté ejecutándose dentro de una sesión tmux, o cuando su terminal sea iTerm2 con la CLI `it2` instalada, retrocediendo a en proceso de lo contrario. La configuración `"tmux"` habilita el modo de panel dividido y detecta automáticamente si usar tmux o iTerm2 según su terminal.

125 125 

126A partir de v2.1.186, configure `"iterm2"` para usar explícitamente paneles divididos nativos de iTerm2. Este modo requiere la [CLI `it2`](https://github.com/mkusaka/it2) y muestra un error con el comando de instalación si falta `it2`. El indicador de configuración que ofrece instalar `it2` o cambiar a tmux aparece bajo `"auto"` o `"tmux"` cuando su terminal es iTerm2 y tmux está disponible como alternativa.126A partir de v2.1.186, configure `"iterm2"` para usar explícitamente paneles divididos nativos de iTerm2. Este modo requiere la [CLI `it2`](https://github.com/mkusaka/it2) y muestra un error con el comando de instalación si falta `it2`. El indicador de configuración que ofrece instalar `it2` o cambiar a tmux aparece bajo `"auto"` o `"tmux"` cuando su terminal es iTerm2 y tmux está disponible como alternativa.

127 127 


311* **`skills`**: Claude Code no aplica el `skills` de la definición a un compañero de equipo en ningún modo de visualización. El compañero de equipo carga skills desde su configuración de proyecto y usuario.311* **`skills`**: Claude Code no aplica el `skills` de la definición a un compañero de equipo en ningún modo de visualización. El compañero de equipo carga skills desde su configuración de proyecto y usuario.

312* **`mcpServers`**: para un compañero de equipo de panel dividido, Claude Code aplica el `mcpServers` de la definición bajo las [reglas para ese campo](/docs/es/sub-agents#scope-mcp-servers-to-a-subagent), que cubren una sesión iniciada con `--agent` también. Un compañero de equipo en proceso ignora el campo y carga servidores MCP desde su configuración de proyecto y usuario.312* **`mcpServers`**: para un compañero de equipo de panel dividido, Claude Code aplica el `mcpServers` de la definición bajo las [reglas para ese campo](/docs/es/sub-agents#scope-mcp-servers-to-a-subagent), que cubren una sesión iniciada con `--agent` también. Un compañero de equipo en proceso ignora el campo y carga servidores MCP desde su configuración de proyecto y usuario.

313 313 

314Cuando Claude envía un mensaje a un compañero de equipo en proceso que ya no se está ejecutando, Claude Code lo trae de vuelta en la misma sesión, restaura cualquier conversación guardada para él, y le da el mensaje como su siguiente indicación. Después de reanudar una sesión, los compañeros de equipo no se traen de vuelta de esta manera, según [la limitación de reanudación](#limitations).

315 

316Para un compañero de equipo que trae de vuelta, Claude Code vuelve a aplicar una definición que provino del directorio `.claude/agents/` de un proyecto o un directorio `--add-dir` solo si ha [confiado en la carpeta en la que se encuentra el archivo del agente](/docs/es/permissions#what-runs-before-you-trust-a-folder). Confiar en una carpeta padre no cuenta. Hasta entonces, el compañero de equipo vuelve con ninguna de las herramientas o instrucciones de la definición, manteniendo solo las herramientas que Claude Code añade a cada compañero de equipo en proceso. Vea [la definición del agente del compañero de equipo no fue restaurada](/docs/es/errors#teammate-agent-definition-not-restored) para el texto de notificación.

317 

314<h3 id="permissions">318<h3 id="permissions">

315 Permisos319 Permisos

316</h3>320</h3>

agent-view.md +44 −42

Details

16 16 

17Cuando desee trabajar de forma más directa en la sesión de cualquier agente, conéctese a la fila para entrar en la conversación completa.17Cuando desee trabajar de forma más directa en la sesión de cualquier agente, conéctese a la fila para entrar en la conversación completa.

18 18 

19Para comparar la vista de agentes con subagentes, equipos de agentes y worktrees, consulte [Ejecutar agentes en paralelo](/docs/es/agents).19Para comparar la vista de agentes con subagentes, equipos de agentes y worktrees, consulte [Ejecutar agentes en paralelo](/docs/es/agents). La vista de agentes ejecuta sesiones en su máquina y usted distribuye cada una; para que Claude inicie y rastree sesiones paralelas en la nube desde una conversación en su lugar, consulte [Proyectos](/docs/es/claude-projects).

20 20 

21<Note>21<Note>

22 La vista de agentes está en vista previa de investigación. La interfaz y los atajos de teclado pueden cambiar a medida que la función evoluciona.22 La vista de agentes está en vista previa de investigación. La interfaz y los atajos de teclado pueden cambiar a medida que la función evoluciona.


72 Monitorear sesiones con vista de agentes72 Monitorear sesiones con vista de agentes

73</h2>73</h2>

74 74 

75Ejecute `claude agents` para abrir la vista de agentes. Toma control de la terminal completa y enumera cada sesión agrupada por estado, con sesiones fijadas y las que necesitan su atención en la parte superior. Cada fila muestra el nombre de la sesión, la actividad actual y su antigüedad, contada desde cuando se creó la sesión; la antigüedad de una sesión terminada se congela en cuánto tiempo tomó la ejecución.75Ejecute `claude agents` para abrir la vista de agentes. Toma el control de la terminal completa y enumera cada sesión agrupada por estado, con sesiones fijadas y las que necesitan su atención en la parte superior. Cada fila muestra el nombre de la sesión, la actividad actual y su antigüedad, contada desde cuándo se creó la sesión; la antigüedad de una sesión finalizada se congela en cuánto tiempo tardó la ejecución.

76 76 

77El nombre está teñido con el color establecido por [`/color`](/docs/es/commands) en esa sesión, incluyendo cuando [coloca una sesión en segundo plano](#from-inside-a-session) con `←` o `/background`.77El nombre está teñido con el color establecido por [`/color`](/docs/es/commands) en esa sesión, incluyendo cuando [coloca una sesión en segundo plano](#from-inside-a-session) con `←` o `/background`.

78 78 


115| Estado | El icono se muestra como | Qué significa |115| Estado | El icono se muestra como | Qué significa |

116| :---------- | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |116| :---------- | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

117| Working | Animado | Claude está ejecutando activamente herramientas o generando una respuesta |117| Working | Animado | Claude está ejecutando activamente herramientas o generando una respuesta |

118| Needs input | Amarillo | Claude está esperando algo que solo usted puede proporcionar: una respuesta a una pregunta, una decisión de permiso, u otro mensaje que solo usted puede responder, como un mensaje de [sandbox](/docs/es/sandboxing) para permitir un host de red o la [solicitud de entrada](/docs/es/mcp#respond-to-mcp-elicitation-requests) de un servidor MCP. Un comando que necesita una terminal adjunta, como `/install-github-app` o la lista de configuración `/mcp`, [también mantiene una sesión desatendida aquí](#attach-to-a-session) |118| Needs input | Amarillo | Claude está esperando algo que solo usted puede proporcionar: una respuesta a una pregunta, una decisión de permiso, u otro mensaje que solo usted puede responder, como un mensaje de [sandbox](/docs/es/sandboxing) para permitir un host de red o la [solicitud de entrada](/docs/es/mcp#respond-to-mcp-elicitation-requests) de un servidor MCP. Un comando que necesita una terminal adjunta, como `/install-github-app` o la lista de configuración `/mcp`, también [mantiene una sesión desatendida aquí](#attach-to-a-session) |

119| Idle | Atenuado | La sesión no tiene nada que hacer y está lista para su próximo mensaje |119| Idle | Atenuado | La sesión no tiene nada que hacer y está lista para su próximo mensaje |

120| Completed | Verde | La tarea se completó exitosamente |120| Completed | Verde | La tarea se completó exitosamente |

121| Failed | Rojo | La tarea terminó con un error |121| Failed | Rojo | La tarea terminó con un error |

122| Stopped | Gris | Detuvo la sesión con `Ctrl+X` o `claude stop`, [su proceso fue terminado desde fuera de Claude Code](#the-supervisor-process), o [terminó mientras el servicio en segundo plano estaba apagado](#sessions-show-as-failed-after-shutdown) |122| Stopped | Gris | Detuvo la sesión con `Ctrl+X` o `claude stop`, [su proceso fue terminado desde fuera de Claude Code](#the-supervisor-process), o [terminó mientras el servicio en segundo plano estaba apagado](#sessions-show-as-failed-after-shutdown) |

123 123 

124Por separado, la forma del icono muestra si el proceso subyacente está en ejecución:124Por separado, la forma del icono muestra si el proceso subyacente se está ejecutando:

125 125 

126| Forma | Qué significa |126| Forma | Qué significa |

127| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |127| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |


129| `∙` | El proceso ha salido. Aún puede ver la fila, y cuando responda o se adjunte, Claude reinicia desde donde lo dejó |129| `∙` | El proceso ha salido. Aún puede ver la fila, y cuando responda o se adjunte, Claude reinicia desde donde lo dejó |

130| `✢` | Una sesión [`/loop`](/docs/es/scheduled-tasks) durmiendo entre iteraciones. La fila muestra su recuento de ejecuciones y una cuenta regresiva |130| `✢` | Una sesión [`/loop`](/docs/es/scheduled-tasks) durmiendo entre iteraciones. La fila muestra su recuento de ejecuciones y una cuenta regresiva |

131 131 

132La etiqueta `#N` o `!N` que puede aparecer en el borde derecho de una fila es un enlace a la [solicitud de extracción o solicitud de fusión](#pull-request-status) de la sesión, no parte del icono de estado.132La etiqueta `#N` o `!N` que puede aparecer en el borde derecho de una fila es un enlace al [pull request o merge request](#pull-request-status) de la sesión, no parte del icono de estado.

133 133 

134El título de la pestaña de terminal muestra el recuento de entrada en espera mientras la vista de agentes está abierta: `2 awaiting input · claude agents` cuando las sesiones necesitan entrada, o `claude agents` cuando no la necesitan.134El título de la pestaña de terminal muestra el recuento de entrada pendiente mientras la vista de agentes está abierta: `2 awaiting input · claude agents` cuando las sesiones necesitan entrada, o `claude agents` cuando no la necesitan.

135 135 

136Para leer el estado de la sesión desde un script u otro programa, use [`claude agents --json`](#read-session-state-from-a-script) en lugar de los archivos bajo `~/.claude/jobs/`.136Para leer el estado de la sesión desde un script u otro programa, use [`claude agents --json`](#read-session-state-from-a-script) en lugar de los archivos bajo `~/.claude/jobs/`.

137 137 

138Mientras la vista de agentes está abierta, Claude Code también envía una notificación a través de su [canal de notificación de terminal](/docs/es/terminal-config#get-a-terminal-bell-or-notification) configurado cuando una sesión en segundo plano local comienza a necesitar su entrada, se completa o falla. Las sesiones que se ejecutan según un cronograma, como sesiones [`/loop`](/docs/es/scheduled-tasks), notifican solo cuando necesitan su entrada. Las notificaciones utilizan la misma configuración [`preferredNotifChannel`](/docs/es/settings-reference#preferrednotifchannel) que el resto de Claude Code y activan el hook [`Notification`](/docs/es/hooks#notification) con el tipo `agent_needs_input` o `agent_completed`.138Mientras la vista de agentes está abierta, Claude Code también envía una notificación a través de su [canal de notificación de terminal](/docs/es/terminal-config#get-a-terminal-bell-or-notification) configurado cuando una sesión en segundo plano local comienza a necesitar su entrada, se completa o falla. Las sesiones que se ejecutan según un cronograma, como las sesiones [`/loop`](/docs/es/scheduled-tasks), notifican solo cuando necesitan su entrada. Las notificaciones utilizan la misma configuración [`preferredNotifChannel`](/docs/es/settings-reference#preferrednotifchannel) que el resto de Claude Code e invocan el hook [`Notification`](/docs/es/hooks#notification) con el tipo `agent_needs_input` o `agent_completed`.

139 139 

140Las sesiones en segundo plano no necesitan ninguna terminal abierta para seguir funcionando. Un [proceso supervisor](#the-supervisor-process) separado las ejecuta, por lo que puede cerrar la vista de agentes, cerrar su shell, o iniciar una nueva sesión interactiva y su trabajo despachado sigue adelante.140Las sesiones en segundo plano no necesitan ninguna terminal abierta para seguir funcionando. Un [proceso supervisor](#the-supervisor-process) separado las ejecuta, por lo que puede cerrar la vista de agentes, cerrar su shell o iniciar una nueva sesión interactiva y su trabajo despachado sigue adelante.

141 141 

142El estado de la sesión persiste en el disco a través de actualizaciones automáticas y reinicios del supervisor. Las sesiones también se conservan cuando su máquina se duerme. Sus procesos se reanudan al despertar y el supervisor se reconecta a ellos en lugar de tratar la brecha de tiempo como inactividad. El apagado aún detiene las sesiones en ejecución; consulte [Las sesiones se muestran como fallidas o detenidas después del apagado](#sessions-show-as-failed-after-shutdown) para saber cómo recuperarlas.142El estado de la sesión persiste en el disco a través de actualizaciones automáticas y reinicios del supervisor. Las sesiones también se conservan cuando su máquina se duerme. Sus procesos se reanudan al despertar y el supervisor se reconecta a ellos en lugar de tratar la brecha de tiempo como inactividad. El apagado aún detiene las sesiones en ejecución; consulte [Las sesiones se muestran como fallidas o detenidas después del apagado](#sessions-show-as-failed-after-shutdown) para saber cómo recuperarlas.

143 143 


147 Resúmenes de filas147 Resúmenes de filas

148</h3>148</h3>

149 149 

150El resumen de una línea en cada fila es generado por un [modelo de clase Haiku](/docs/es/model-config) para que la fila pueda decirle qué está haciendo la sesión, qué necesita, o qué produjo sin abrir la transcripción. Mientras una sesión está trabajando activamente, el texto de la fila se actualiza como máximo una vez cada 15 segundos desde la salida reciente de la sesión sin enviar una solicitud de modelo, y el modelo escribe un resumen nuevo cuando cada turno termina.150El resumen de una línea en cada fila es generado por un [modelo de clase Haiku](/docs/es/model-config) para que la fila pueda decirle qué está haciendo la sesión, qué necesita o qué produjo sin abrir la transcripción. Mientras una sesión está funcionando activamente, el texto de la fila se actualiza como máximo una vez cada 15 segundos desde la salida reciente de la sesión sin enviar una solicitud de modelo, y el modelo escribe un resumen nuevo cuando cada turno termina.

151 151 

152Una fila de trabajo muestra lo que la sesión dice que está haciendo, y una fila bloqueada muestra la pregunta que está haciendo. Durante un turno largo, el modelo también reescribe el resumen cada pocos minutos para que una fila ocupada no siga mostrando uno desactualizado. El texto del resumen llena el ancho restante de la fila; abra el [panel de vista previa](#peek-and-reply) para leer una oración que el borde de la terminal recorta.152Una fila de trabajo muestra lo que la sesión dice que está haciendo, y una fila bloqueada muestra la pregunta que está haciendo. Durante un turno largo, el modelo también reescribe el resumen cada pocos minutos para que una fila ocupada no siga mostrando uno desactualizado. El texto del resumen llena el ancho restante de la fila; abra el [panel de vista previa](#peek-and-reply) para leer una oración que el borde de la terminal recorta.

153 153 

154Cuando la lista está [agrupada por directorio](#organize-the-list), el resumen se abre con el estado de la sesión como una palabra coloreada, como `Needs input · double jump or wall climb?`. En la agrupación de estado predeterminada, el encabezado del grupo ya nombra el estado, por lo que la fila muestra solo el resumen.154Cuando la lista está [agrupada por directorio](#organize-the-list), el resumen se abre con el estado de la sesión como una palabra coloreada, como `Needs input · double jump or wall climb?`. En la agrupación de estado predeterminada, el encabezado del grupo ya nombra el estado, por lo que la fila muestra solo el resumen.

155 155 

156El resumen de fin de turno y cada reescritura a mitad de turno son una solicitud corta de clase Haiku a través de su proveedor normal, facturada y manejada bajo los mismos [términos de uso de datos](/docs/es/data-usage) que la sesión misma. Las actualizaciones de 15 segundos entre reescrituras de modelo reutilizan la salida de la sesión y no envían una solicitud. En un proveedor de terceros o puerta de enlace sin un modelo de clase Haiku configurado, la solicitud utiliza el modelo principal de la sesión en su lugar; establezca [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/docs/es/model-config#environment-variables) para elegir uno.156El resumen de fin de turno y cada reescritura a mitad de turno son una solicitud corta de clase Haiku a través de su proveedor normal, facturada y manejada bajo los mismos [términos de uso de datos](/docs/es/data-usage) que la sesión misma. Las actualizaciones de 15 segundos entre reescrituras de modelo reutilizan la salida de la sesión y no envían una solicitud. En un proveedor de terceros o puerta de enlace sin un modelo de clase Haiku configurado, la solicitud utiliza el modelo principal de la sesión; establezca [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/docs/es/model-config#environment-variables) para elegir uno.

157 157 

158<h3 id="pull-request-status">158<h3 id="pull-request-status">

159 Estado de la solicitud de extracción159 Estado del pull request

160</h3>160</h3>

161 161 

162Cuando una sesión [abre una solicitud de extracción](#how-file-edits-are-isolated), Claude Code agrega una etiqueta en el borde derecho de la fila, vinculada a la solicitud de extracción:162Cuando una sesión [abre un pull request](#how-file-edits-are-isolated), Claude Code agrega una etiqueta en el borde derecho de la fila, vinculada al pull request:

163 163 

164* Claude Code escribe la etiqueta como `#1234` para una solicitud de extracción y como `!1234` para una solicitud de fusión de GitLab.164* Claude Code escribe la etiqueta como `#1234` para un pull request y como `!1234` para un merge request de GitLab.

165* Claude Code emite el enlace incluso cuando no puede detectar soporte de hipervínculo, por ejemplo sobre SSH o tmux. Establezca [`FORCE_HYPERLINK=0`](/docs/es/env-vars) para renderizar la etiqueta como texto sin formato.165* Claude Code emite el enlace incluso cuando no puede detectar soporte de hipervínculo, por ejemplo sobre SSH o tmux. Establezca [`FORCE_HYPERLINK=0`](/docs/es/env-vars) para renderizar la etiqueta como texto sin formato.

166* Después de enviar un seguimiento a la sesión, Claude Code mantiene la etiqueta mientras la fila vuelve al progreso en vivo.166* Después de enviar un seguimiento a la sesión, Claude Code mantiene la etiqueta mientras la fila vuelve al progreso en vivo.

167 167 

168Una sesión que funciona en una solicitud de extracción existente está vinculada a ella de la misma manera. Claude Code encuentra la solicitud de extracción de manera diferente dependiendo del comando que ejecute Claude:168Una sesión que funciona en un pull request existente está vinculada de la misma manera. Claude Code encuentra el pull request de manera diferente dependiendo del comando que ejecute Claude:

169 169 

170* Cuando Claude edita, comenta, cierra o marca una solicitud de extracción como lista con `gh`, Claude Code vincula la solicitud de extracción que la salida del comando nombra. Un comando `gh` cuya salida capturada no nombra ninguna solicitud de extracción no crea un enlace; `gh pr merge` es el caso común, porque imprime su resultado solo en una terminal interactiva.170* Cuando Claude edita, comenta, cierra o marca un pull request como listo con `gh`, Claude Code vincula el pull request que la salida del comando nombra. Un comando `gh` cuya salida capturada no nombra ningún pull request no crea un enlace; `gh pr merge` es el caso común, porque imprime su resultado solo en una terminal interactiva.

171* Cuando Claude extrae una solicitud de extracción con `gh pr checkout` o empuja a una rama, Claude Code busca la rama con `gh pr view` y vincula su solicitud de extracción abierta.171* Cuando Claude extrae un pull request con `gh pr checkout` o empuja a una rama, Claude Code busca la rama con `gh pr view` y vincula su pull request abierto.

172* La solicitud de extracción no necesita existir aún cuando Claude empuja: Claude Code reintenta la búsqueda de rama después de hasta cinco comandos `git`, `gh`, `glab` o `curl` posteriores ejecutados en el mismo directorio, por lo que una solicitud de extracción creada después del empuje, incluida una que Claude crea a través de la API REST de GitHub, se vincula cuando un reintento la encuentra.172* El pull request no necesita existir aún cuando Claude empuja: Claude Code reintenta la búsqueda de rama después de hasta cinco comandos posteriores de `git`, `gh`, `glab` o `curl` ejecutados en el mismo directorio, por lo que un pull request creado después del empuje, incluido uno que Claude crea a través de la API REST de GitHub, se vincula cuando un reintento lo encuentra.

173 173 

174Cuando una sesión está vinculada a más de una solicitud de extracción, la etiqueta muestra un recuento en su lugar, como `3 PRs`, coloreada por la solicitud de extracción abierta que más necesita atención. Abra el [panel de vista previa](#peek-and-reply) para verlas todas.174Cuando una sesión está vinculada a más de un pull request, la etiqueta muestra un recuento en su lugar, como `3 PRs`, coloreado por el pull request abierto que más necesita atención. Abra el [panel de vista previa](#peek-and-reply) para verlos todos.

175 175 

176El número de la solicitud de extracción está coloreado por su estado:176El número del pull request está coloreado por su estado:

177 177 

178| Color | Estado de la solicitud de extracción |178| Color | Estado del pull request |

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

180| Amarillo | Esperando verificaciones o revisión, o las verificaciones fallaron |180| Amarillo | Esperando verificaciones o revisión, o las verificaciones fallaron |

181| Verde | Las verificaciones pasaron y ninguna revisión está bloqueando |181| Verde | Las verificaciones pasaron y ninguna revisión está bloqueando |

182| Púrpura | Fusionado |182| Púrpura | Fusionado |

183| Gris | Borrador o cerrado |183| Gris | Borrador o cerrado |

184 184 

185Para una tarea que termina en una solicitud de extracción, verifique esta etiqueta para el resultado: revise y fusione la solicitud de extracción cuando su número se vuelva verde.185Para una tarea que termina en un pull request, verifique esta etiqueta para el resultado: revise y fusione el pull request cuando su número se vuelva verde.

186 186 

187<h3 id="peek-and-reply">187<h3 id="peek-and-reply">

188 Mirar y responder188 Peek and reply

189</h3>189</h3>

190 190 

191Presione `Space` en una fila seleccionada para abrir el panel de vista previa. Se abre con la oración que la fila trunca en el borde de la terminal, y qué oración es depende del estado de la sesión:191Presione `Space` en una fila seleccionada para abrir el panel de vista previa. Se abre con la oración que la fila trunca en el borde de la terminal, y qué oración es depende del estado de la sesión:

192 192 

193* Una sesión que está esperando por usted: la pregunta exacta que está haciendo, encima de la entrada de respuesta193* Una sesión que está esperando por usted: la pregunta exacta que está haciendo, encima de la entrada de respuesta

194* Una sesión terminada: su resultado194* Una sesión finalizada: su resultado

195* Una sesión de trabajo: su oración de estado completa195* Una sesión de trabajo: su oración de estado completa

196 196 

197Cualquier solicitud de extracción vinculada a la sesión se enumera a continuación. Para una sesión que está esperando por usted, una línea como `waiting 3m` debajo de ellas muestra cuánto tiempo ha estado esperando, y es la única vez que se muestra en el panel. La antigüedad en el borde derecho de la fila es un número diferente: cuenta desde cuando comenzó la sesión.197Cualquier pull request vinculado a la sesión se enumera a continuación. Para una sesión que está esperando por usted, una línea como `waiting 3m` debajo de ellos muestra cuánto tiempo ha estado esperando, y es la única vez que se muestra en el panel. La antigüedad en el borde derecho de la fila es un número diferente: cuenta desde cuándo comenzó la sesión.

198 198 

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

200 200 

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

202 202 

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

204 204 

205Una respuesta que no se puede entregar, porque el servicio en segundo plano es inaccesible o el envío falla, se guarda y se envía a la sesión como su próximo mensaje cuando su proceso se inicia nuevamente, y el mensaje de error dice que la respuesta se guardó. Una respuesta prefijada con `!` no se guarda, porque el texto guardado llegaría a la sesión como un mensaje simple en lugar de ejecutarse como un comando Bash.205Una respuesta que no se puede entregar, porque el servicio en segundo plano es inaccesible o el envío falla, se guarda y se envía a la sesión como su próximo mensaje cuando su proceso se inicia nuevamente, y el mensaje de error dice que la respuesta se guardó. Una respuesta prefijada con `!` no se guarda, porque el texto guardado llegaría a la sesión como un mensaje simple en lugar de ejecutarse como un comando Bash.

206 206 

207Con [dictado de voz](/docs/es/voice-dictation) habilitado, mantenga o toque su tecla de pulsar para hablar mientras la entrada de respuesta está enfocada para dictar una respuesta en lugar de escribirla. Lo mismo funciona en la entrada de despacho en la parte inferior de la vista de agentes.207Con [dictado de voz](/docs/es/voice-dictation) habilitado, mantenga o toque su tecla de pulsar para hablar mientras la entrada de respuesta está enfocada para dictar una respuesta en lugar de escribirla. Lo mismo funciona en la entrada de envío en la parte inferior de la vista de agentes.

208 208 

209Use `↑` y `↓` para ver sesiones adyacentes sin cerrar el panel, o `→` para adjuntarse.209Use `↑` y `↓` para ver sesiones adyacentes sin cerrar el panel, o `→` para adjuntarse.

210 210 


226 226 

227En Windows, si presiona `←` dentro de aproximadamente medio segundo de adjuntarse, Claude Code muestra `Ambiguous ←, press again to detach`, porque en esa ventana la terminal puede reentrega un presión de antes de que se adjuntara. Presione `←` nuevamente para desconectarse.227En Windows, si presiona `←` dentro de aproximadamente medio segundo de adjuntarse, Claude Code muestra `Ambiguous ←, press again to detach`, porque en esa ventana la terminal puede reentrega un presión de antes de que se adjuntara. Presione `←` nuevamente para desconectarse.

228 228 

229`Ctrl+Z` también se desconecta pero vuelve a donde comenzó: vista de agentes si se adjuntó desde allí, o su shell si ejecutó `claude attach`. Use `Ctrl+Z` cuando un diálogo tiene enfoque y no responde a `←`.229`Ctrl+Z` también se desconecta pero vuelve a donde comenzó: vista de agentes si se adjuntó desde allí, o su shell si ejecutó `claude attach`. Use `Ctrl+Z` cuando un diálogo tiene el foco y no responde a `←`.

230 230 

231`Ctrl+C` mantiene su comportamiento de interrupción estándar mientras está adjunto: cancela una respuesta en ejecución o un comando shell `!` en lugar de desconectarse. Presionar `Ctrl+C` dos veces en un mensaje vacío se desconecta, lo mismo que en cualquier sesión.231`Ctrl+C` mantiene su comportamiento de interrupción estándar mientras está adjunto: cancela una respuesta en ejecución o un comando shell `!` en lugar de desconectarse. Presionar `Ctrl+C` dos veces en un mensaje vacío se desconecta, lo mismo que en cualquier sesión.

232 232 

233Desconectarse nunca detiene una sesión en segundo plano: `←`, `Ctrl+Z`, `/exit`, y doble `Ctrl+C` o doble `Ctrl+D` la dejan ejecutándose. Para terminar una sesión desde dentro de ella, ejecute `/stop`.233Desconectarse nunca detiene una sesión en segundo plano: `←`, `Ctrl+Z`, `/exit` y `Ctrl+C` o `Ctrl+D` doble dejan que siga ejecutándose. Para finalizar una sesión desde dentro de ella, ejecute `/stop`.

234 234 

235<h4 id="switch-sessions-without-leaving-the-terminal">235<h4 id="switch-sessions-without-leaving-the-terminal">

236 Cambiar sesiones sin dejar la terminal236 Cambiar sesiones sin dejar la terminal


252 252 

253La fila en la que presionó `←` también mantiene un nombre en negrita y sin atenuar después de mover la selección con las teclas de flecha o el ratón, para que pueda saber de qué sesión vino.253La fila en la que presionó `←` también mantiene un nombre en negrita y sin atenuar después de mover la selección con las teclas de flecha o el ratón, para que pueda saber de qué sesión vino.

254 254 

255Si una herramienta se está ejecutando cuando presiona `←`, Claude Code espera hasta aproximadamente diez segundos para que se complete antes de colocar en segundo plano, y Claude continúa la respuesta en la sesión en segundo plano. Presione `←` nuevamente para colocar en segundo plano inmediatamente en lugar de esperar. Cuando el trabajo en vuelo no puede trasladarse a la sesión en segundo plano, Claude Code muestra el diálogo `Background this session?` primero, lo mismo que con [`/background`](#from-inside-a-session).255Si una herramienta se está ejecutando cuando presiona `←`, Claude Code espera aproximadamente diez segundos para que se complete antes de colocar en segundo plano, y Claude continúa la respuesta en la sesión en segundo plano. Presione `←` nuevamente para colocar en segundo plano inmediatamente en lugar de esperar. Cuando el trabajo en vuelo no puede trasladarse a la sesión en segundo plano, Claude Code muestra el diálogo `Background this session?` primero, lo mismo que con [`/background`](#from-inside-a-session).

256 256 

257El límite de diez segundos no se aplica mientras los [subagentes en primer plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que Claude inició en la conversación aún se están ejecutando. Claude Code sigue esperando para que su trabajo se traslade, y muestra un aviso `Still backgrounding after the current tool` mientras espera. Presione `←` nuevamente para colocar en segundo plano sin esperar, lo que reinicia esos subagentes desde el principio. Claude Code no espera a los subagentes que un [flujo de trabajo dinámico](/docs/es/workflows) está ejecutando. Cuando un flujo de trabajo tiene subagentes ejecutándose, Claude Code muestra el diálogo `Background this session?` en su lugar.257El límite de diez segundos no se aplica mientras los [subagentes en primer plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que Claude inició en la conversación aún se están ejecutando. Claude Code sigue esperando para que su trabajo se traslade, y muestra un aviso `Still backgrounding after the current tool` mientras espera. Presione `←` nuevamente para colocar en segundo plano sin esperar, lo que reinicia esos subagentes desde el principio. Claude Code no espera a los subagentes que un [flujo de trabajo dinámico](/docs/es/workflows) está ejecutando. Cuando un flujo de trabajo tiene subagentes ejecutándose, Claude Code muestra el diálogo `Background this session?` en su lugar.

258 258 

259Claude Code no coloca la sesión en segundo plano mientras tiene texto no enviado en la entrada del mensaje, porque el texto permanece en el cuadro de entrada de su terminal y no se movería a la sesión en segundo plano. Si escribe en la entrada mientras Claude Code espera para colocar la sesión en segundo plano, cancela el cambio con `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`259Claude Code no coloca la sesión en segundo plano mientras tiene texto no enviado en la entrada del mensaje, porque el texto permanece en el cuadro de entrada de su terminal y no se movería a la sesión en segundo plano. Si escribe en la entrada mientras Claude Code espera para colocar la sesión en segundo plano, cancela el cambio con `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`

260 260 

261Presionar `←` crea la fila de la sesión incluso cuando la conversación no tiene mensajes aún, por lo que `→` aún vuelve a ella.261Presionar `←` crea la fila de la sesión incluso cuando la conversación no tiene mensajes aún, por lo que `→` aún regresa a ella.

262 262 

263Puede desactivar este atajo con la configuración `leftArrowOpensAgents` en `/config`.263Puede desactivar este atajo con la configuración `leftArrowOpensAgents` en `/config`.

264 264 


266 Organizar la lista266 Organizar la lista

267</h3>267</h3>

268 268 

269La vista de agentes agrupa sesiones para que las que necesitan entrada estén en la parte superior, con `Ready for review` y `Needs input` encima de `Working` y `Completed`. Estos nombres de grupo no se asignan uno a uno a los [estados](#read-session-state) anteriores: una sesión se mueve a `Ready for review` cuando tiene una solicitud de extracción abierta, y `Completed` recopila sesiones terminadas, fallidas y detenidas juntas.269La vista de agentes agrupa sesiones para que las que necesitan entrada estén en la parte superior, con `Ready for review` y `Needs input` encima de `Working` y `Completed`. Estos nombres de grupo no se asignan uno a uno a los [estados](#read-session-state) anteriores: una sesión se mueve a `Ready for review` cuando tiene un pull request abierto, y `Completed` recopila sesiones terminadas, fallidas y detenidas juntas.

270 270 

271Presione `Ctrl+S` para agrupar por directorio en su lugar. Su elección persiste en todas las ejecuciones.271Presione `Ctrl+S` para agrupar por directorio en su lugar. Su elección persiste en todas las ejecuciones.

272 272 


283 283 

284Excepto en los casos mantenidos cubiertos en [Lo que elimina una sesión elimina](#what-deleting-a-session-removes), eliminar elimina la sesión de la lista, y un worktree que Claude creó para ella se elimina, se mantiene o se deja en su lugar dependiendo de cómo elimine y qué contenga el worktree. La transcripción de conversación siempre permanece en su máquina local, disponible a través de `claude --resume`.284Excepto en los casos mantenidos cubiertos en [Lo que elimina una sesión elimina](#what-deleting-a-session-removes), eliminar elimina la sesión de la lista, y un worktree que Claude creó para ella se elimina, se mantiene o se deja en su lugar dependiendo de cómo elimine y qué contenga el worktree. La transcripción de conversación siempre permanece en su máquina local, disponible a través de `claude --resume`.

285 285 

286Para traer una sesión de vuelta en Claude Code v2.1.212 o posterior, escriba `/resume` en la entrada de despacho. Se abre un selector con sesiones pasadas del repositorio desde el que abrió la vista de agentes, más recientes primero, incluidas sesiones que eliminó de la lista; las sesiones que ya tienen una fila no se enumeran. `↑`/`↓` mueven la selección, `Enter` reanuda la sesión seleccionada como una sesión en segundo plano para que se reúna con la lista como una fila, y `Esc` cierra el selector.286Para traer una sesión de vuelta en Claude Code v2.1.212 o posterior, escriba `/resume` en la entrada de envío. Se abre un selector con sesiones pasadas del repositorio desde el que abrió la vista de agentes, más recientes primero, incluidas las sesiones que eliminó de la lista; las sesiones que ya tienen una fila no se enumeran. `↑`/`↓` mueven la selección, `Enter` reanuda la sesión seleccionada como una sesión en segundo plano para que se reúna con la lista como una fila, y `Esc` cierra el selector.

287 287 

288El selector se abre solo para un `/resume` simple. Un resumen dirigido, con alcance o restringido no puede ser servido por el selector, por lo que la vista de agentes muestra la sugerencia `attach to a session to run it` en su lugar cuando:288El selector se abre solo para un `/resume` simple. Un resumen dirigido, con alcance o restringido no puede ser servido por el selector, por lo que la vista de agentes muestra la sugerencia `attach to a session to run it` en su lugar cuando:

289 289 


292* la vista se inició con [`--safe-mode`](/docs/es/cli-reference#cli-flags)292* la vista se inició con [`--safe-mode`](/docs/es/cli-reference#cli-flags)

293* la vista se abrió con una bandera como `--permission-mode` o `--settings`293* la vista se abrió con una bandera como `--permission-mode` o `--settings`

294 294 

295Las sesiones completadas que no caben en la pantalla se pliegan en una fila `… N more`. Los fallos y las sesiones con una solicitud de extracción abierta siempre permanecen visibles. El grupo `Completed` llena el espacio vertical dejado después de los grupos en vivo, y en una terminal corta el encabezado se compacta en una línea de resumen única para que las sesiones que están trabajando o necesitan entrada permanezcan visibles.295Las sesiones completadas que no caben en la pantalla se pliegan en una fila `… N more`. Los fallos y las sesiones con un pull request abierto siempre permanecen visibles. El grupo `Completed` llena el espacio vertical dejado después de los grupos en vivo, y en una terminal corta el encabezado se compacta en una sola línea de resumen para que las sesiones que están funcionando o necesitan entrada permanezcan visibles.

296 296 

297<h3 id="filter-sessions">297<h3 id="filter-sessions">

298 Filtrar sesiones298 Filtrar sesiones

299</h3>299</h3>

300 300 

301Escriba en la entrada de despacho para filtrar en lugar de despachar:301Escriba en la entrada de envío para filtrar en lugar de enviar:

302 302 

303| Filtro | Muestra |303| Filtro | Muestra |

304| :-------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |304| :-------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |

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

306| `s:<state>` | Sesiones en el estado dado, como `s:working`. También acepta `s:blocked` para todo lo que está esperando por usted |306| `s:<state>` | Sesiones en el estado dado, como `s:working`. También acepta `s:blocked` para todo lo que está esperando por usted |

307| `#<number>` o una URL de solicitud de extracción o fusión | La sesión que trabaja en esa solicitud de extracción o fusión |307| `#<number>` o una URL de pull o merge request | La sesión que funciona en ese pull request o merge request |

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

309 309 

310<h3 id="keyboard-shortcuts">310<h3 id="keyboard-shortcuts">


316| Atajo | Acción |316| Atajo | Acción |

317| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |317| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `↑` / `↓` | Moverse entre filas |318| `↑` / `↓` | Moverse entre filas |

319| `Enter` | Adjuntarse a la sesión seleccionada, o despachar si hay texto en la entrada |319| `Enter` | Adjuntarse a la sesión seleccionada, o enviar si hay texto en la entrada |

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

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

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

323| `→` | Adjuntarse a la sesión seleccionada |323| `→` | Adjuntarse a la sesión seleccionada |

324| `Alt+1`..`Alt+9` | Adjuntarse a la sesión 1–9 en el directorio de la sesión enfocada |324| `Alt+1`..`Alt+9` | Adjuntarse a la sesión 1–9 en el directorio de la sesión enfocada |

325| `Tab` | En una entrada vacía, examinar todos los subagentes. De lo contrario, aplicar la sugerencia resaltada |325| `Tab` | En una entrada vacía, examinar todos los subagentes. De lo contrario, aplicar la sugerencia resaltada |

326| `Ctrl+S` | Cambiar agrupación entre estado y directorio |326| `Ctrl+S` | Cambiar agrupación entre estado y directorio |

327| `Ctrl+T` | Fijar o desfijar la sesión seleccionada |327| `Ctrl+T` | Fijar o desfijar la sesión seleccionada |

328| `Ctrl+R` | Renombrar la sesión seleccionada |328| `Ctrl+R` | Renombrar la sesión seleccionada |

329| `Ctrl+G` | Abrir el mensaje de despacho en su `$VISUAL` o `$EDITOR` |329| `Ctrl+G` | Abrir el mensaje de envío en su `$VISUAL` o `$EDITOR` |

330| `Ctrl+J` | Insertar una nueva línea en la entrada de despacho |330| `Ctrl+J` | Insertar una nueva línea en la entrada de envío |

331| `Ctrl+X` | Detener la sesión; presione nuevamente dentro de dos segundos para eliminarla |331| `Ctrl+X` | Detener la sesión; presione nuevamente dentro de dos segundos para eliminarla |

332| `Shift+↑` / `Shift+↓` | Reordenar la sesión seleccionada |332| `Shift+↑` / `Shift+↓` | Reordenar la sesión seleccionada |

333| `Esc` | Cerrar el panel de vista previa, borrar la entrada, o salir. Cuando abrió la vista de agentes colocando su sesión en segundo plano con `←`, el `Esc` final vuelve a esa conversación en lugar de salir. Con [modo de editor vim](/docs/es/interactive-mode#vim-editor-mode) activado, presionar `Esc` en la entrada cambia de modo INSERT a modo NORMAL y mantiene su texto, como en el mensaje principal |333| `Esc` | Cerrar el panel de vista previa, borrar la entrada o salir. Cuando abrió la vista de agentes colocando su sesión en segundo plano con `←`, el `Esc` final regresa a esa conversación en lugar de salir. Con [modo de editor vim](/docs/es/interactive-mode#vim-editor-mode) activado, presionar `Esc` en la entrada cambia de modo INSERT a modo NORMAL y mantiene su texto, como en el mensaje principal |

334| `Ctrl+C` | Borrar la entrada; presione dos veces para salir |334| `Ctrl+C` | Borrar la entrada; presione dos veces para salir |

335| `?` | Mostrar todos los atajos |335| `?` | Mostrar todos los atajos |

336 336 


1038* [Mensajería entre sesiones](/docs/es/cross-session-messaging): haga que sus sesiones se pasen hallazgos entre sí1038* [Mensajería entre sesiones](/docs/es/cross-session-messaging): haga que sus sesiones se pasen hallazgos entre sí

1039* [Equipos de agentes](/docs/es/agent-teams): coordine múltiples sesiones que se envíen mensajes entre sí1039* [Equipos de agentes](/docs/es/agent-teams): coordine múltiples sesiones que se envíen mensajes entre sí

1040* [Claude Code en la web](/docs/es/claude-code-on-the-web): ejecute sesiones en un entorno en la nube administrado en lugar de localmente1040* [Claude Code en la web](/docs/es/claude-code-on-the-web): ejecute sesiones en un entorno en la nube administrado en lugar de localmente

1041* [Proyectos](/docs/es/claude-projects): haga que Claude coordine sesiones en la nube en paralelo desde una conversación y le indique cuáles necesita usted

1041 1042 

1042<h2 id="version-history">1043<h2 id="version-history">

1043 Historial de versiones1044 Historial de versiones


1048| Versión | Cambio |1049| Versión | Cambio |

1049| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1050| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1050| v2.1.268 | Cuando una [eliminación se rechaza](#what-deleting-a-session-removes) porque git o su hook `WorktreeRemove` no pudieron eliminar el worktree, el mensaje nombra la causa, incluyendo cómo terminó un hook y el inicio de su stderr. Para un worktree vinculado bajo el directorio `.claude/worktrees/` del repositorio sin cambios sin confirmar en archivos rastreados, sin repositorio anidado dentro de él, y sin que el registro de otra sesión lo nombre, eliminar la sesión nuevamente elimina el directorio de todas formas, desde la vista de agentes o con `claude rm <id> --force-remove-worktree <worktree-id>`. Antes de esta versión, la fila mostraba solo `worktree could not be removed (WorktreeRemove hook failed)` o el error de git, el stderr del hook iba solo al registro de depuración, y eliminar nuevamente se rechazaba de la misma manera. |1051| v2.1.268 | Cuando una [eliminación se rechaza](#what-deleting-a-session-removes) porque git o su hook `WorktreeRemove` no pudieron eliminar el worktree, el mensaje nombra la causa, incluyendo cómo terminó un hook y el inicio de su stderr. Para un worktree vinculado bajo el directorio `.claude/worktrees/` del repositorio sin cambios sin confirmar en archivos rastreados, sin repositorio anidado dentro de él, y sin que el registro de otra sesión lo nombre, eliminar la sesión nuevamente elimina el directorio de todas formas, desde la vista de agentes o con `claude rm <id> --force-remove-worktree <worktree-id>`. Antes de esta versión, la fila mostraba solo `worktree could not be removed (WorktreeRemove hook failed)` o el error de git, el stderr del hook iba solo al registro de depuración, y eliminar nuevamente se rechazaba de la misma manera. |

1052| v2.1.268 | Después de que la primera `←` muestra `Press ← again to open agents`, o `Press ← again to go back to agents` en una sesión adjunta, [el primer presionar que llega al menos un segundo después cambia](#switch-sessions-without-leaving-the-terminal), incluso cuando los presionamientos más rápidos entre medias fueron ignorados. Antes de esta versión, cada presionar ignorado reiniciaba la espera, por lo que presionar `←` nuevamente a un ritmo constante no cambiaba hasta que pausaba durante más de un segundo. |

1051| v2.1.260 | Cuando [envía una sesión al segundo plano](#from-inside-a-session), el [listado de agentes](/docs/es/cross-session-messaging#see-which-sessions-claude-can-reach) de sus otras sesiones muestra la conversación una vez, como su sesión de fondo, y sus mensajes a ella ya no llegan a la terminal desde la que la movió. Antes de esta versión, esa terminal podría permanecer listada como una segunda sesión interactiva bajo el nombre de la conversación, y una sesión que había enviado un mensaje a la conversación antes del movimiento continuaba entregando a esa terminal. |1053| v2.1.260 | Cuando [envía una sesión al segundo plano](#from-inside-a-session), el [listado de agentes](/docs/es/cross-session-messaging#see-which-sessions-claude-can-reach) de sus otras sesiones muestra la conversación una vez, como su sesión de fondo, y sus mensajes a ella ya no llegan a la terminal desde la que la movió. Antes de esta versión, esa terminal podría permanecer listada como una segunda sesión interactiva bajo el nombre de la conversación, y una sesión que había enviado un mensaje a la conversación antes del movimiento continuaba entregando a esa terminal. |

1052| v2.1.260 | Cuando una [eliminación se rechaza sobre commits sin enviar](#what-deleting-a-session-removes), el mensaje nombra la rama del worktree y cuántos commits no se han enviado, y eliminar la sesión nuevamente descarta el worktree y sus commits. Antes de esta versión, el rechazo decía solo `worktree has commits that are not pushed anywhere`, eliminar nuevamente se rechazaba de la misma manera, y eliminar la sesión requería enviar los commits o eliminar el worktree manualmente. |1054| v2.1.260 | Cuando una [eliminación se rechaza sobre commits sin enviar](#what-deleting-a-session-removes), el mensaje nombra la rama del worktree y cuántos commits no se han enviado, y eliminar la sesión nuevamente descarta el worktree y sus commits. Antes de esta versión, el rechazo decía solo `worktree has commits that are not pushed anywhere`, eliminar nuevamente se rechazaba de la misma manera, y eliminar la sesión requería enviar los commits o eliminar el worktree manualmente. |

1053| v2.1.257 | `←` [se desadjunta de una sesión adjunta mientras la superposición `/btw` está abierta](#attach-to-a-session), incluso a mitad de respuesta, y la superposición se reabre cuando se adjunta nuevamente. Antes de esta versión, `←` no se desadjuntaba mientras la superposición estaba abierta. |1055| v2.1.257 | `←` [se desadjunta de una sesión adjunta mientras la superposición `/btw` está abierta](#attach-to-a-session), incluso a mitad de respuesta, y la superposición se reabre cuando se adjunta nuevamente. Antes de esta versión, `←` no se desadjuntaba mientras la superposición estaba abierta. |

agents.md +5 −4

Details

4 4 

5# Ejecutar agentes en paralelo5# Ejecutar agentes en paralelo

6 6 

7> Compare las formas en que Claude Code puede realizar múltiples tareas simultáneamente: subagentes, vista de agentes, equipos de agentes y flujos de trabajo dinámicos.7> Compare las formas en que Claude Code puede realizar múltiples tareas simultáneamente: subagentes, vista de agentes, equipos de agentes, flujos de trabajo dinámicos y proyectos.

8 8 

9[Subagentes](/docs/es/sub-agents), [vista de agentes](/docs/es/agent-view), [equipos de agentes](/docs/es/agent-teams) y [flujos de trabajo dinámicos](/docs/es/workflows) cada uno paraleliza el trabajo de una manera diferente. El correcto depende de si desea permanecer en cada conversación usted mismo, delegar tareas y volver a verificar más tarde, o si desea que Claude coordine un grupo de trabajadores para usted.9Claude Code tiene cinco formas de trabajar en varias tareas a la vez: [subagentes](/docs/es/sub-agents), [vista de agentes](/docs/es/agent-view), [equipos de agentes](/docs/es/agent-teams), [flujos de trabajo dinámicos](/docs/es/workflows) y [proyectos](/docs/es/claude-projects). Se diferencian en cuánto se mantiene involucrado, desde dirigir cada conversación usted mismo hasta dejar que Claude coordine un grupo de trabajadores, y en si el trabajo se ejecuta en su máquina o en la nube.

10 10 

11| Enfoque | Lo que le proporciona | Úselo cuando |11| Enfoque | Lo que le proporciona | Úselo cuando |

12| :------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |12| :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| [Subagentes](/docs/es/sub-agents) | Trabajadores delegados dentro de una sesión que realizan una tarea secundaria en su propio contexto y devuelven un resumen | Una tarea secundaria inundaría su conversación principal con resultados de búsqueda, registros o contenidos de archivos que no volverá a consultar |13| [Subagentes](/docs/es/sub-agents) | Trabajadores delegados dentro de una sesión que realizan una tarea secundaria en su propio contexto y devuelven un resumen | Una tarea secundaria inundaría su conversación principal con resultados de búsqueda, registros o contenidos de archivos que no volverá a consultar |

14| [Vista de agentes](/docs/es/agent-view) | Una pantalla para enviar y monitorear sesiones que se ejecutan en segundo plano, abierta con `claude agents`. Vista previa de investigación | Tiene varias tareas independientes y desea delegarlas, verificar el estado de un vistazo e intervenir solo cuando una lo necesite |14| [Vista de agentes](/docs/es/agent-view) | Una pantalla para enviar y monitorear sesiones que se ejecutan en segundo plano, abierta con `claude agents`. Vista previa de investigación | Tiene varias tareas independientes y desea delegarlas, verificar el estado de un vistazo e intervenir solo cuando una lo necesite |

15| [Equipos de agentes](/docs/es/agent-teams) | Múltiples sesiones coordinadas con una lista de tareas compartida y mensajería entre agentes, administradas por un líder. Experimental y deshabilitado por defecto | Desea que Claude divida un proyecto en partes, las asigne y mantenga a los trabajadores sincronizados |15| [Equipos de agentes](/docs/es/agent-teams) | Múltiples sesiones coordinadas con una lista de tareas compartida y mensajería entre agentes, administradas por un líder. Experimental y deshabilitado por defecto | Desea que Claude divida un proyecto en partes, las asigne y mantenga a los trabajadores sincronizados |

16| [Proyectos](/docs/es/claude-projects) | Una conversación continua en claude.ai/code o en la aplicación de escritorio. Claude inicia sesiones en la nube paralelas llamadas threads, le da a cada una los repositorios, instrucciones y memoria del proyecto, y le muestra cuáles lo necesitan. Beta pública en Pro y Max | El trabajo abarca muchas tareas durante días o semanas, debe seguir ejecutándose cuando su máquina está apagada, y prefiere describirlo una vez en lugar de enviar y rastrear cada sesión |

16| [Flujos de trabajo dinámicos](/docs/es/workflows) | Un script que ejecuta muchos subagentes y verifica sus resultados, para un trabajo demasiado grande para coordinar en un solo turno o que necesita más de un solo paso | Una tarea crece más allá de un puñado de subagentes, o desea que los hallazgos se verifiquen entre sí: una auditoría en toda la base de código, una migración de 500 archivos, investigación verificada de forma cruzada, o un plan elaborado desde varios ángulos |17| [Flujos de trabajo dinámicos](/docs/es/workflows) | Un script que ejecuta muchos subagentes y verifica sus resultados, para un trabajo demasiado grande para coordinar en un solo turno o que necesita más de un solo paso | Una tarea crece más allá de un puñado de subagentes, o desea que los hallazgos se verifiquen entre sí: una auditoría en toda la base de código, una migración de 500 archivos, investigación verificada de forma cruzada, o un plan elaborado desde varios ángulos |

17 18 

18En cada enfoque, los trabajadores son sesiones de Claude. Para involucrar una herramienta diferente, expóngala a Claude como un [servidor MCP](/docs/es/mcp).19En cada enfoque, los trabajadores son sesiones de Claude. Para involucrar una herramienta diferente, expóngala a Claude como un [servidor MCP](/docs/es/mcp).


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

21 22 

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

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

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

25 26 

26Algunas otras características ejecutan Claude sin que usted dirija cada paso, pero resuelven un problema diferente al de dividir el trabajo entre agentes:27Algunas otras características ejecutan Claude sin que usted dirija cada paso, pero resuelven un problema diferente al de dividir el trabajo entre agentes:

Details

237}237}

238```238```

239 239 

240A partir de Claude Code v2.1.181, la salida plana de `aws configure export-credentials --format process` también se acepta, con las mismas claves en el nivel superior en lugar de anidadas bajo `Credentials`.240La salida plana de `aws configure export-credentials --format process` también se acepta, con las mismas claves en el nivel superior en lugar de anidadas bajo `Credentials`.

241 241 

242`Expiration` es opcional. Cuando el comando devuelve un `Expiration` ISO 8601 válido, Claude Code almacena en caché las credenciales hasta cinco minutos antes de esa hora. Sin él, las credenciales se almacenan en caché durante una hora.242`Expiration` es opcional. Cuando el comando devuelve un `Expiration` ISO 8601 válido, Claude Code almacena en caché las credenciales hasta cinco minutos antes de esa hora. Sin él, las credenciales se almacenan en caché durante una hora.

243 243 


518 Usar el punto final de Mantle518 Usar el punto final de Mantle

519</h2>519</h2>

520 520 

521Mantle es un punto final de Amazon Bedrock que sirve modelos de Claude a través de la forma de API nativa de Anthropic en lugar de la API de Invoke de Amazon Bedrock. Utiliza las mismas credenciales de AWS, permisos de IAM y configuración de `awsAuthRefresh` descritos anteriormente en esta página.521Mantle es un punto final de Amazon Bedrock que sirve modelos de Claude a través de la forma de API nativa de Anthropic en lugar de la API de Invoke de Amazon Bedrock. Utiliza las mismas [credenciales de AWS](#2-configure-aws-credentials), [permisos de IAM](#iam-configuration), y [configuración de `awsAuthRefresh`](#advanced-credential-configuration).

522 522 

523<h3 id="enable-mantle">523<h3 id="enable-mantle">

524 Habilitar Mantle524 Habilitar Mantle

artifacts.md +4 −4

Details

10 Los artefactos están disponibles en los planes Pro, Max, Team y Enterprise y requieren una sesión iniciada con [`/login`](/docs/es/setup#authenticate). Consulte [Disponibilidad](#availability) para ver el conjunto completo de requisitos.10 Los artefactos están disponibles en los planes Pro, Max, Team y Enterprise y requieren una sesión iniciada con [`/login`](/docs/es/setup#authenticate). Consulte [Disponibilidad](#availability) para ver el conjunto completo de requisitos.

11</Note>11</Note>

12 12 

13Un artefacto es una página web interactiva en vivo que Claude Code publica desde su sesión en una URL privada en claude.ai. La abre en un navegador y se actualiza en su lugar a medida que continúa la sesión. Compártala desde el encabezado de la página cuando desee que otra persona también la vea.13Un [artefacto](https://claude.com/features/artifacts) es una página web interactiva en vivo que Claude Code publica desde su sesión en una URL privada en claude.ai. La abre en un navegador y se actualiza en su lugar a medida que continúa la sesión. Compártala desde el encabezado de la página cuando desee que otra persona también la vea.

14 14 

15<Frame>15<Frame>

16 <img src="https://mintcdn.com/claude-code/kaHIYYMIYMYPxQg9/images/artifacts-viewer.png?fit=max&auto=format&n=kaHIYYMIYMYPxQg9&q=85&s=dbfd671cdb0d15f49f808b9e89778fe1" alt="Un artefacto abierto en un navegador en claude.ai/code/artifact. El encabezado del visor muestra el título del artefacto acme-funnel-fix, un botón Compartir y el avatar del autor. El menú Compartir está abierto con el botón de alternancia Siempre compartir la versión más reciente, un selector de versión que lee Compartiendo versión 2, un selector de audiencia Todos en Acme y un botón Copiar enlace. Debajo del encabezado, la página del artefacto muestra dos maquetas móviles una al lado de la otra, un gráfico de embudo y una fila de tarjetas de métricas." width="2511" height="1890" data-path="images/artifacts-viewer.png" />16 <img src="https://mintcdn.com/claude-code/kaHIYYMIYMYPxQg9/images/artifacts-viewer.png?fit=max&auto=format&n=kaHIYYMIYMYPxQg9&q=85&s=dbfd671cdb0d15f49f808b9e89778fe1" alt="Un artefacto abierto en un navegador en claude.ai/code/artifact. El encabezado del visor muestra el título del artefacto acme-funnel-fix, un botón Compartir y el avatar del autor. El menú Compartir está abierto con el botón de alternancia Siempre compartir la versión más reciente, un selector de versión que lee Compartiendo versión 2, un selector de audiencia Todos en Acme y un botón Copiar enlace. Debajo del encabezado, la página del artefacto muestra dos maquetas móviles una al lado de la otra, un gráfico de embudo y una fila de tarjetas de métricas." width="2511" height="1890" data-path="images/artifacts-viewer.png" />


142Read the comments on https://claude.ai/code/artifact/5fbea6f3-... and make the changes the commenters ask for.142Read the comments on https://claude.ai/code/artifact/5fbea6f3-... and make the changes the commenters ask for.

143```143```

144 144 

145Si Claude le dice que no puede leer comentarios, verifique tres cosas:145Si Claude le dice que no puede leer comentarios, confirme su versión, su sesión y su configuración de indicador de características:

146 146 

147* Está ejecutando Claude Code v2.1.221 o posterior.147* Está ejecutando Claude Code v2.1.221 o posterior.

148* No está en su primera sesión desde que instaló Claude Code o actualizó desde una versión anterior a v2.1.221. En esa [primera sesión después de una instalación o actualización](/docs/es/env-vars#first-session-after-an-install-or-upgrade), Claude podría no ser capaz de leer comentarios aún; inicie una nueva sesión y pregunte de nuevo.148* No está en su primera sesión desde que instaló Claude Code o actualizó desde una versión anterior a v2.1.221. En esa [primera sesión después de una instalación o actualización](/docs/es/env-vars#first-session-after-an-install-or-upgrade), Claude podría no ser capaz de leer comentarios aún; inicie una nueva sesión y pregunte de nuevo.


291 Mejorar el diseño visual291 Mejorar el diseño visual

292</h2>292</h2>

293 293 

294Claude aplica una skill de diseño integrada cuando construye un artefacto, por lo que las páginas obtienen una paleta deliberada, tipografía y diseño sin necesidad de indicaciones adicionales. Requiere Claude Code v2.1.182 o posterior. Esa skill también busca un sistema de diseño existente en su proyecto antes de elegir el suyo propio. Los design tokens son los valores de color, tipografía y espaciado nombrados que su sistema de diseño reutiliza. Para mantener los artefactos consistentes con la marca de su producto, regístrelos donde Claude pueda encontrarlos, como el [CLAUDE.md](/docs/es/memory) del proyecto o un archivo de tema en su repositorio:294Claude aplica una skill de diseño integrada cuando construye un artefacto, por lo que las páginas obtienen una paleta deliberada, tipografía y diseño sin necesidad de indicaciones adicionales. Esa skill también busca un sistema de diseño existente en su proyecto antes de elegir el suyo propio. Los design tokens son los valores de color, tipografía y espaciado nombrados que su sistema de diseño reutiliza. Para mantener los artefactos consistentes con la marca de su producto, regístrelos donde Claude pueda encontrarlos, como el [CLAUDE.md](/docs/es/memory) del proyecto o un archivo de tema en su repositorio:

295 295 

296```markdown theme={null}296```markdown theme={null}

297## Design system297## Design system


331| Sin backend | Un artefacto es una página estática. No puede autenticar espectadores por sí mismo. |331| Sin backend | Un artefacto es una página estática. No puede autenticar espectadores por sí mismo. |

332| Descargas | La página no puede iniciar una descarga por sí misma. Para permitir que los espectadores guarden un archivo que genera la página, Claude declara la capacidad de descargas. Consulte [Ofrecer una descarga de archivo](#offer-a-file-download). |332| Descargas | La página no puede iniciar una descarga por sí misma. Para permitir que los espectadores guarden un archivo que genera la página, Claude declara la capacidad de descargas. Consulte [Ofrecer una descarga de archivo](#offer-a-file-download). |

333| Página única | Los enlaces relativos no se resuelven, porque nada se implementa junto a la página. Para contenido de múltiples secciones, Claude utiliza anclajes dentro de la página en lugar de archivos separados. |333| Página única | Los enlaces relativos no se resuelven, porque nada se implementa junto a la página. Para contenido de múltiples secciones, Claude utiliza anclajes dentro de la página en lugar de archivos separados. |

334| Tipos de archivo de origen | El archivo publicado debe ser `.html`, `.htm` o `.md`, y debe decodificarse como UTF-8, o como UTF-16 little-endian por su marca de orden de bytes. Los archivos Markdown se renderizan como HTML con estilo. Un archivo que no se decodifica, o que contiene el carácter de reemplazo `U+FFFD`, se [rechaza con la línea y columna a corregir](/docs/es/errors#the-source-file-is-not-valid-utf-8-text). |334| Tipos de archivo de origen | El archivo publicado debe ser `.html`, `.htm` o `.md`, y debe decodificarse como UTF-8, o como UTF-16 little-endian por su marca de orden de bytes. Los archivos Markdown se renderizan como páginas de documento con estilo con código resaltado por sintaxis. Un archivo que no se decodifica, o que contiene el carácter de reemplazo `U+FFFD`, se [rechaza con la línea y columna a corregir](/docs/es/errors#the-source-file-is-not-valid-utf-8-text). |

335| Tamaño renderizado | La página renderizada debe tener 16 MiB o menos. Las imágenes incrustadas grandes son la causa habitual cuando una publicación falla por tamaño. |335| Tamaño renderizado | La página renderizada debe tener 16 MiB o menos. Las imágenes incrustadas grandes son la causa habitual cuando una publicación falla por tamaño. |

336 336 

337Generar un artefacto utiliza tokens de salida como cualquier otra respuesta, y una página con estilo es más intensiva en tokens que el mismo contenido como texto de terminal. CSS en línea, JavaScript para controles interactivos e imágenes incrustadas como URI de datos son los principales contribuyentes. Para reducir el costo de tokens de un artefacto:337Generar un artefacto utiliza tokens de salida como cualquier otra respuesta, y una página con estilo es más intensiva en tokens que el mismo contenido como texto de terminal. CSS en línea, JavaScript para controles interactivos e imágenes incrustadas como URI de datos son los principales contribuyentes. Para reducir el costo de tokens de un artefacto:

Details

22 22 

23Puede autenticarse con cualquiera de estos tipos de cuenta:23Puede autenticarse con cualquiera de estos tipos de cuenta:

24 24 

25* **Suscripción Claude Pro o Max**: inicie sesión con su cuenta de Claude.ai. Suscríbase en [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).25* **Suscripción Claude Pro o Max**: inicie sesión con su cuenta de claude.ai. Suscríbase en [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).

26* **Claude for Teams o Enterprise**: inicie sesión con la cuenta de Claude.ai que su administrador de equipo le invitó a usar.26* **Claude for Teams o Enterprise**: inicie sesión con la cuenta de claude.ai que su administrador de equipo le invitó a usar.

27* **Claude Console**: inicie sesión con sus credenciales de Console. Su administrador debe haberle [invitado](#claude-console-authentication) primero. Puede iniciar sesión con o sin [crear una clave de API](#sign-in-without-an-api-key).27* **Claude Console**: inicie sesión con sus credenciales de Console. Su administrador debe haberle [invitado](#claude-console-authentication) primero. Puede iniciar sesión con o sin [crear una clave de API](#sign-in-without-an-api-key).

28* **Proveedores de nube**: si su organización usa [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry), establezca las variables de entorno requeridas antes de ejecutar `claude`, o seleccione **plataforma de terceros** en el símbolo del sistema de inicio de sesión, que inicia un asistente de configuración interactivo para Bedrock y Vertex AI. No se necesita inicio de sesión en el navegador.28* **Proveedores de nube**: si su organización usa [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry), establezca las variables de entorno requeridas antes de ejecutar `claude`, o seleccione **plataforma de terceros** en el símbolo del sistema de inicio de sesión, que inicia un asistente de configuración interactivo para Bedrock y Vertex AI. No se necesita inicio de sesión en el navegador.

29* **Puerta de enlace en la nube**: si su organización ejecuta una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) autohospedada, inicie sesión con SSO corporativo a través de `/login`. El token emitido por la puerta de enlace es la única credencial de la sesión.29* **Puerta de enlace en la nube**: si su organización ejecuta una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) autohospedada, inicie sesión con SSO corporativo a través de `/login`. El token emitido por la puerta de enlace es la única credencial de la sesión.


190 * En Windows, las credenciales se almacenan en `%USERPROFILE%\.claude\.credentials.json` y heredan los controles de acceso del directorio de su perfil de usuario, lo que restringe el archivo a su cuenta de usuario de forma predeterminada.190 * En Windows, las credenciales se almacenan en `%USERPROFILE%\.claude\.credentials.json` y heredan los controles de acceso del directorio de su perfil de usuario, lo que restringe el archivo a su cuenta de usuario de forma predeterminada.

191 * Si ha establecido la variable de entorno `CLAUDE_CONFIG_DIR`, Claude Code mantiene el archivo `.credentials.json` bajo ese directorio en su lugar, incluido el archivo que escribe la alternativa de macOS, y también asigna la entrada del Keychain de macOS a ese directorio, por lo que una sesión con un `CLAUDE_CONFIG_DIR` diferente lee una entrada diferente.191 * Si ha establecido la variable de entorno `CLAUDE_CONFIG_DIR`, Claude Code mantiene el archivo `.credentials.json` bajo ese directorio en su lugar, incluido el archivo que escribe la alternativa de macOS, y también asigna la entrada del Keychain de macOS a ese directorio, por lo que una sesión con un `CLAUDE_CONFIG_DIR` diferente lee una entrada diferente.

192 * Claude Code administra `.credentials.json` a través de `/login` y `/logout`. Para enrutar solicitudes a través de un punto final de API personalizado, establezca la variable de entorno [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) en su lugar.192 * Claude Code administra `.credentials.json` a través de `/login` y `/logout`. Para enrutar solicitudes a través de un punto final de API personalizado, establezca la variable de entorno [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) en su lugar.

193* **Tipos de autenticación admitidos**: credenciales de Claude.ai, credenciales de API de Claude, Microsoft Foundry Auth, Bedrock Auth, Vertex Auth, credenciales de perfil de Anthropic y [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation), y tokens de sesión de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway).193* **Tipos de autenticación admitidos**: credenciales de claude.ai, credenciales de API de Claude, Microsoft Foundry Auth, Bedrock Auth, Vertex Auth, credenciales de perfil de Anthropic y [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation), y tokens de sesión de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway).

194* **Scripts de credenciales personalizados**: configure la configuración [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) para ejecutar un script de shell que devuelva una clave API.194* **Scripts de credenciales personalizados**: configure la configuración [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) para ejecutar un script de shell que devuelva una clave API.

195* **Intervalos de actualización**: Claude Code vuelve a ejecutar `apiKeyHelper` después de cinco minutos de forma predeterminada. Establezca la variable de entorno `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` para intervalos de actualización personalizados. Consulte [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) para los otros casos en los que Claude Code vuelve a ejecutar el helper.195* **Intervalos de actualización**: Claude Code vuelve a ejecutar `apiKeyHelper` después de cinco minutos de forma predeterminada. Establezca la variable de entorno `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` para intervalos de actualización personalizados. Consulte [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) para los otros casos en los que Claude Code vuelve a ejecutar el helper.

196* **Aviso de helper lento**: si `apiKeyHelper` tarda más de 10 segundos en devolver una clave, Claude Code muestra un aviso de advertencia en la barra de símbolo del sistema mostrando el tiempo transcurrido. Si ve este aviso regularmente, verifique si su script de credenciales se puede optimizar.196* **Aviso de helper lento**: si `apiKeyHelper` tarda más de 10 segundos en devolver una clave, Claude Code muestra un aviso de advertencia en la barra de símbolo del sistema mostrando el tiempo transcurrido. Si ve este aviso regularmente, verifique si su script de credenciales se puede optimizar.


236 236 

237Ejecute `unset ANTHROPIC_API_KEY` para volver a su suscripción, y verifique `/status` para confirmar qué método está activo. Cuando un inicio de sesión y una clave API están ambos configurados, `/status` marca la credencial que no está en uso.237Ejecute `unset ANTHROPIC_API_KEY` para volver a su suscripción, y verifique `/status` para confirmar qué método está activo. Cuando un inicio de sesión y una clave API están ambos configurados, `/status` marca la credencial que no está en uso.

238 238 

239[Claude Code en la Web](/docs/es/claude-code-on-the-web) siempre usa sus credenciales de suscripción. Si establece `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN` en el entorno de sandbox, no anula sus credenciales de suscripción.239[Claude Code en la Web](/docs/es/claude-code-on-the-web) siempre usa sus credenciales de suscripción. Si establece `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN` en el entorno en la nube, no anula sus credenciales de suscripción.

240 240 

241<h4 id="anthropic-profiles-and-federation-credentials">241<h4 id="anthropic-profiles-and-federation-credentials">

242 Perfiles de Anthropic y credenciales de federación242 Perfiles de Anthropic y credenciales de federación

Details

99 * **Organización**99 * **Organización**

100 * **Uso principal de Claude Code**: tiene como valor predeterminado desarrollo de software100 * **Uso principal de Claude Code**: tiene como valor predeterminado desarrollo de software

101 * **Proveedor(es) de nube**101 * **Proveedor(es) de nube**

102 * **Visibilidad del repositorio**: se asume que un repositorio es privado a menos que su host remoto y nombre indiquen lo contrario, o una verificación de visibilidad anterior en la conversación que el clasificador lee muestre que es público. El clasificador lee sus mensajes y los comandos que ejecuta Claude, no su salida, por lo que la evidencia tiene que ser algo que pueda leer, como su propio mensaje nombrando el repositorio como público; la salida de un `gh repo view` por sí sola no llega a él. La verificación de evidencia de transcripción requiere Claude Code v2.1.200 o posterior102 * **Visibilidad del repositorio**: se asume que un repositorio es privado a menos que su host remoto y nombre indiquen lo contrario, o el clasificador lea una verificación de visibilidad anterior en la conversación que muestre que es público.

103 

104 En las solicitudes del clasificador enviadas por Claude Code mismo, el clasificador lee sus mensajes y los comandos que ejecuta Claude, no su salida. La evidencia tiene que ser algo que el clasificador pueda leer, como su propio mensaje nombrando el repositorio como público; la salida de un `gh repo view` por sí sola no llega a él. La verificación de evidencia de transcripción requiere Claude Code v2.1.200 o posterior

103 * **Intercambio interno / alojamiento de fragmentos**: los servicios públicos de paste y gist se tratan como fuera del límite de confianza hasta que nombre uno105 * **Intercambio interno / alojamiento de fragmentos**: los servicios públicos de paste y gist se tratan como fuera del límite de confianza hasta que nombre uno

104 * **CLI específicas de la organización**106 * **CLI específicas de la organización**

105 * **Gestión de secretos**107 * **Gestión de secretos**


178Ejecute `/auto-mode-setup` para que Claude Code redacte entradas de `autoMode.environment` y, a veces, también [entradas de reglas](#override-the-block-and-allow-rules), a partir de su proyecto y sus sesiones recientes en él. Si acepta el borrador, Claude Code lo escribe en `~/.claude/settings.json`.180Ejecute `/auto-mode-setup` para que Claude Code redacte entradas de `autoMode.environment` y, a veces, también [entradas de reglas](#override-the-block-and-allow-rules), a partir de su proyecto y sus sesiones recientes en él. Si acepta el borrador, Claude Code lo escribe en `~/.claude/settings.json`.

179 181 

180<Note>182<Note>

181 `/auto-mode-setup` requiere un plan Pro, Max o Team y Claude Code v2.1.228 o posterior. En Windows nativo requiere v2.1.233 o posterior. No puede ejecutarlo en [Claude Code en la web](/docs/es/claude-code-on-the-web). También necesita [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), por lo que no puede ejecutarlo en una sesión donde haya desactivado la obtención de banderas.183 `/auto-mode-setup` requiere un plan Pro, Max o Team y Claude Code v2.1.228 o posterior. En Windows nativo requiere v2.1.233 o posterior. No puede ejecutarlo en una [sesión en la nube](/docs/es/claude-code-on-the-web). También necesita [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), por lo que no puede ejecutarlo en una sesión donde haya desactivado la obtención de banderas.

182</Note>184</Note>

183 185 

184<h3 id="what-auto-mode-setup-reads">186<h3 id="what-auto-mode-setup-reads">


303 Enrutar todos los comandos de shell a través del clasificador305 Enrutar todos los comandos de shell a través del clasificador

304</h2>306</h2>

305 307 

306De forma predeterminada, las reglas estrechas de Bash y PowerShell como `Bash(npm test)` permanecen en vigor en modo automático, y Claude Code las resuelve antes de que se ejecute el clasificador. Claude Code suspende solo las reglas amplias que otorgan ejecución de código arbitrario, como `Bash(*)` o intérpretes con comodines, junto con cada regla que nombra [`Monitor`](/docs/es/tools-reference#monitor-tool), porque los comandos Monitor se ejecutan a través del shell. Esto significa que una regla estrecha aún puede dejar pasar un argumento destructivo sin que el clasificador lo vea, por ejemplo una ruta de script o bandera que el prefijo de la regla no anticipó.308De forma predeterminada, las reglas estrechas de Bash y PowerShell como `Bash(npm test)` permanecen en vigor en modo automático. Claude Code las resuelve antes de que se ejecute el clasificador, a menos que el comando lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode). Claude Code suspende solo las reglas amplias que otorgan ejecución de código arbitrario, como `Bash(*)` o intérpretes con comodines, junto con cada regla que nombra [`Monitor`](/docs/es/tools-reference#monitor-tool), porque los comandos Monitor se ejecutan a través del shell. Esto significa que una regla estrecha aún puede dejar pasar un argumento destructivo sin que el clasificador lo vea, por ejemplo una ruta de script o bandera que el prefijo de la regla no anticipó.

307 309 

308Establezca `autoMode.classifyAllShell` en `true` para suspender cada regla de permiso de Bash y PowerShell mientras el modo automático está activo, de modo que el clasificador evalúe cada comando de shell independientemente de su lista de permisos.310Establezca `autoMode.classifyAllShell` en `true` para suspender cada regla de permiso de Bash y PowerShell mientras el modo automático está activo, de modo que el clasificador evalúe cada comando de shell independientemente de su lista de permisos.

309 311 

Details

12 12 

13Pero esta autonomía aún viene con una curva de aprendizaje. Claude trabaja dentro de ciertas restricciones que necesita entender.13Pero esta autonomía aún viene con una curva de aprendizaje. Claude trabaja dentro de ciertas restricciones que necesita entender.

14 14 

15Esta guía cubre patrones que han demostrado ser efectivos en los equipos internos de Anthropic y para ingenieros que usan Claude Code en varios códigos base, lenguajes y entornos. Para saber cómo funciona el bucle agencial bajo el capó, consulte [Cómo funciona Claude Code](/docs/es/how-claude-code-works).15Esta guía cubre patrones que han demostrado ser efectivos en los equipos internos de Anthropic y para ingenieros que usan Claude Code en varios códigos base, lenguajes y entornos. Para saber cómo funciona el bucle agencial, consulte [Cómo funciona Claude Code](/docs/es/how-claude-code-works).

16 16 

17***17***

18 18 

channels.md +3 −1

Details

247 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.247 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

248 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.248 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.

249 249 

250 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos. Si el resumen de instalación reporta `Run /reload-plugins to activate.`, puede omitir eso aquí, porque reiniciar en el siguiente paso recoge el plugin.250 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos.

251 

252 Si el resumen de instalación reporta `Run /reload-plugins to activate.`, no necesita actuar sobre ello aquí, porque reiniciar en el siguiente paso recoge el plugin.

251 </Step>253 </Step>

252 254 

253 <Step title="Reiniciar con el channel habilitado">255 <Step title="Reiniciar con el channel habilitado">

Details

66 66 

67<Steps>67<Steps>

68 <Step title="Crear el proyecto">68 <Step title="Crear el proyecto">

69 Los ejemplos de relé de permisos más adelante en esta página importan `zod` directamente, por lo que se instala junto con el SDK de MCP. Crea un nuevo directorio e instala ambos:69 Los ejemplos de [relé de permisos](#relay-permission-prompts) importan `zod` directamente, por lo que se instala junto con el SDK de MCP. Crea un nuevo directorio e instala ambos:

70 70 

71 ```bash theme={null}71 ```bash theme={null}

72 mkdir webhook-channel && cd webhook-channel72 mkdir webhook-channel && cd webhook-channel


116 })116 })

117 ```117 ```

118 118 

119 El archivo hace tres cosas en orden:119 El archivo configura el servidor, se conecta a través de stdio e inicia un oyente HTTP, en ese orden:

120 120 

121 * **Configuración del servidor**: crea el servidor MCP con `claude/channel` en sus capacidades, que es lo que le dice a Claude Code que esto es un canal. Claude Code entrega la cadena [`instructions`](#server-options) a Claude como contexto cuando el servidor se conecta: dile a Claude qué eventos esperar, si debe responder y cómo enrutar las respuestas si debe hacerlo.121 * **Configuración del servidor**: crea el servidor MCP con `claude/channel` en sus capacidades, que es lo que le dice a Claude Code que esto es un canal. Claude Code entrega la cadena [`instructions`](#server-options) a Claude como contexto cuando el servidor se conecta: dile a Claude qué eventos esperar, si debe responder y cómo enrutar las respuestas si debe hacerlo.

122 * **Conexión stdio**: se conecta a Claude Code a través de stdin/stdout. Esto es estándar para cualquier [servidor MCP](https://modelcontextprotocol.io/docs/concepts/transports#standard-io).122 * **Conexión stdio**: se conecta a Claude Code a través de stdin/stdout. Esto es estándar para cualquier [servidor MCP](https://modelcontextprotocol.io/docs/concepts/transports#standard-io).


509 509 

510El enmascaramiento no cambia quién recibe los campos. Lo que permanece sin enmascarar va solo a servidores que optaste por con `--channels` o la bandera de desarrollo. Trata ambos campos como no confiables a menos que controles la flota de clientes.510El enmascaramiento no cambia quién recibe los campos. Lo que permanece sin enmascarar va solo a servidores que optaste por con `--channels` o la bandera de desarrollo. Trata ambos campos como no confiables a menos que controles la flota de clientes.

511 511 

512El veredicto que tu servidor envía de vuelta es `notifications/claude/channel/permission` con dos campos: `request_id` repitiendo el ID anterior, y `behavior` establecido en `'allow'` o `'deny'`. Permitir deja que la llamada de herramienta continúe; denegar la rechaza, lo mismo que responder No en el diálogo local. Ningún veredicto afecta llamadas futuras.512El veredicto que tu servidor envía de vuelta es `notifications/claude/channel/permission` con dos campos: `request_id` repitiendo el ID anterior, y `behavior` establecido en `'allow'` o `'deny'`. Permitir deja que la llamada de herramienta continúe; denegar la rechaza. Ningún veredicto afecta llamadas futuras.

513 513 

514<h3 id="add-relay-to-a-chat-bridge">514<h3 id="add-relay-to-a-chat-bridge">

515 Agregar retransmisión a un puente de chat515 Agregar retransmisión a un puente de chat

Details

85 Los cambios de comandos Bash no se rastrean85 Los cambios de comandos Bash no se rastrean

86</h3>86</h3>

87 87 

88El checkpointing no rastrea archivos modificados por comandos bash. Por ejemplo, si Claude Code ejecuta:88El checkpointing no rastrea archivos modificados por comandos Bash. Por ejemplo, si Claude Code ejecuta:

89 89 

90```bash theme={null}90```bash theme={null}

91rm file.txt91rm file.txt

Details

62Este inicio rápido recorre la ruta mínima: registre un cliente OAuth en su IdP, escriba un `gateway.yaml`, ejecute la puerta de enlace junto con Postgres con Docker Compose, y verifique el inicio de sesión de extremo a extremo. Utiliza un ascendente de Amazon Bedrock; la Plataforma de Claude en AWS, la Plataforma de Agentes de Google Cloud, Microsoft Foundry, y la API de Anthropic son igualmente compatibles intercambiando el bloque `upstreams` como se muestra en la [referencia de configuración](/docs/es/claude-apps-gateway-config#upstreams). Al final tiene una puerta de enlace a la que un desarrollador puede `/login`.62Este inicio rápido recorre la ruta mínima: registre un cliente OAuth en su IdP, escriba un `gateway.yaml`, ejecute la puerta de enlace junto con Postgres con Docker Compose, y verifique el inicio de sesión de extremo a extremo. Utiliza un ascendente de Amazon Bedrock; la Plataforma de Claude en AWS, la Plataforma de Agentes de Google Cloud, Microsoft Foundry, y la API de Anthropic son igualmente compatibles intercambiando el bloque `upstreams` como se muestra en la [referencia de configuración](/docs/es/claude-apps-gateway-config#upstreams). Al final tiene una puerta de enlace a la que un desarrollador puede `/login`.

63 63 

64<Note>64<Note>

65 **Implemente en su red privada.** Claude Code solo se conecta a una puerta de enlace cuya dirección es privada. Esta es una protección de seguridad, porque una puerta de enlace confiable puede insertar configuración que ejecute comandos en máquinas de desarrolladores. Coloque la puerta de enlace detrás de un equilibrador de carga interno o VPN y asígnele un nombre de host que se resuelva solo a direcciones IP privadas.65 **Implemente en su red privada.** Claude Code solo se conecta a una puerta de enlace cuya dirección es privada. Esta es una protección de seguridad, porque una puerta de enlace confiable puede insertar configuración que ejecute comandos en máquinas de desarrolladores. Coloque la puerta de enlace detrás de un equilibrador de carga interno o VPN y asígnele un nombre de host que se resuelva solo a direcciones IP privadas. Si su red interna está numerada desde espacio IPv4 público que su organización posee, consulte [Permitir una puerta de enlace en espacio de dirección público que usted posee](#allow-a-gateway-on-public-address-space-you-own).

66</Note>66</Note>

67 67 

68<h3 id="prerequisites">68<h3 id="prerequisites">


72Tenga estos en lugar antes de comenzar:72Tenga estos en lugar antes de comenzar:

73 73 

74| Lo que necesita | Detalles |74| Lo que necesita | Detalles |

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

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

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

78| PostgreSQL 14 o posterior | Respalda el flujo de inicio de sesión del dispositivo, donde la devolución de llamada del navegador escribe y la CLI de sondeo lee, más contadores de límite de velocidad. Cualquier Postgres administrado funciona, incluido el nivel más pequeño. Sin límites de gasto configurados, la puerta de enlace almacena algunos KB de estado de autenticación de corta duración; con [límites de gasto](/docs/es/claude-apps-gateway-spend-limits), también mantiene tablas de gasto, auditoría e identidad duraderas que deben respaldarse. TLS a través de `?sslmode=require` se recomienda. |78| PostgreSQL 14 o posterior | Respalda el flujo de inicio de sesión del dispositivo, donde la devolución de llamada del navegador escribe y la CLI de sondeo lee, más contadores de límite de velocidad. Cualquier Postgres administrado funciona, incluido el nivel más pequeño. Sin límites de gasto configurados, la puerta de enlace almacena algunos KB de estado de autenticación de corta duración; con [límites de gasto](/docs/es/claude-apps-gateway-spend-limits), también mantiene tablas de gasto, auditoría e identidad duraderas que deben respaldarse. TLS a través de `?sslmode=require` se recomienda. |

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

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

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

82| Tiempo de ejecución de Linux | El servidor de puerta de enlace solo se ejecuta en el binario nativo de Linux. macOS funciona para desarrollo local. Windows no es compatible como plataforma de servidor. |82| Tiempo de ejecución de Linux | El servidor de puerta de enlace solo se ejecuta en el binario nativo de Linux. macOS funciona para desarrollo local. Windows no es compatible como plataforma de servidor. |

83 83 

84<h3 id="steps">84<h3 id="steps">


132 auto_include_builtin_models: true132 auto_include_builtin_models: true

133 ```133 ```

134 134 

135 Esta configuración es suficiente para un bucle de inicio de sesión funcional con el catálogo de modelos predeterminado de Bedrock. Una vez que se ejecute, agregue RBAC por grupo y configuración administrada a través de [`managed.policies`](/docs/es/claude-apps-gateway-config#managed), distribución de telemetría a través de [`telemetry`](/docs/es/claude-apps-gateway-config#telemetry), y conmutación por error de múltiples ascendentes, ARNs de rendimiento aprovisionado, o regiones no estadounidenses a través de [`models`](/docs/es/claude-apps-gateway-config#models).135 Esta configuración es suficiente para un bucle de inicio de sesión funcional con el catálogo de modelos predeterminado de Amazon Bedrock. Una vez que se ejecute, agregue RBAC por grupo y configuración administrada a través de [`managed.policies`](/docs/es/claude-apps-gateway-config#managed), distribución de telemetría a través de [`telemetry`](/docs/es/claude-apps-gateway-config#telemetry), y conmutación por error de múltiples ascendentes, ARNs de rendimiento aprovisionado, o regiones no estadounidenses a través de [`models`](/docs/es/claude-apps-gateway-config#models).

136 136 

137 <Note>137 <Note>

138 El ascendente de Amazon Bedrock necesita un principal de AWS con `bedrock:InvokeModel` y `bedrock:InvokeModelWithResponseStream` en los ARNs `inference-profile/us.anthropic.*` y los ARNs `foundation-model/anthropic.*` subyacentes, y el formulario de caso de uso único de Anthropic enviado para la cuenta desde el catálogo de modelos de la consola de Bedrock. Suministre la credencial con IRSA en EKS, un rol de tarea de ECS, o un perfil de instancia de EC2 en lugar de claves estáticas. La [referencia `upstreams`](/docs/es/claude-apps-gateway-config#upstreams) tiene los detalles completos de IAM, la matriz de credenciales entre nubes, y los bloques `auth` para los otros proveedores.138 El ascendente de Amazon Bedrock necesita un principal de AWS con `bedrock:InvokeModel` y `bedrock:InvokeModelWithResponseStream` en los ARNs `inference-profile/us.anthropic.*` y los ARNs `foundation-model/anthropic.*` subyacentes. También necesita el formulario de caso de uso único de Anthropic enviado para la cuenta desde el catálogo de modelos de la consola de Bedrock.

139 

140 Suministre la credencial con IRSA en EKS, un rol de tarea de ECS, o un perfil de instancia de EC2 en lugar de claves estáticas. La [referencia `upstreams`](/docs/es/claude-apps-gateway-config#upstreams) tiene los detalles completos de IAM, la matriz de credenciales entre nubes, y los bloques `auth` para los otros proveedores.

139 </Note>141 </Note>

140 </Step>142 </Step>

141 143 


172 174 

173 La puerta de enlace es un único binario de Linux que lee la configuración, se conecta a Postgres y aplica sus migraciones de esquema, ejecuta el descubrimiento OIDC contra su IdP, construye clientes ascendentes, e inicia la escucha. El arranque es de cierre fallido para la configuración, la conexión de Postgres con un tiempo de espera de 5 segundos, el descubrimiento OIDC, y la construcción del cliente ascendente. Si alguno de esos es inaccesible o está mal configurado, la puerta de enlace sale con un error en lugar de servir tráfico en un estado degradado.175 La puerta de enlace es un único binario de Linux que lee la configuración, se conecta a Postgres y aplica sus migraciones de esquema, ejecuta el descubrimiento OIDC contra su IdP, construye clientes ascendentes, e inicia la escucha. El arranque es de cierre fallido para la configuración, la conexión de Postgres con un tiempo de espera de 5 segundos, el descubrimiento OIDC, y la construcción del cliente ascendente. Si alguno de esos es inaccesible o está mal configurado, la puerta de enlace sale con un error en lugar de servir tráfico en un estado degradado.

174 176 

175 Un arranque exitoso no valida la ruta de inferencia, porque las credenciales de instancia de Bedrock y Agent Platform se resuelven en la primera solicitud, no al arrancar.177 Un arranque exitoso no valida la ruta de inferencia, porque las credenciales de instancia de Amazon Bedrock y la Plataforma de Agentes de Google Cloud se resuelven en la primera solicitud, no al arrancar.

176 178 

177 Observe stderr para la secuencia de arranque. Las líneas de registro utilizan el formato `[gateway] <timestamp> <level> <message>`, los eventos de auditoría son JSON de una sola línea con un campo `evt`, y un banner de inicio, omitido a continuación, se imprime entre las líneas de migración y escucha. Una base de datos nueva imprime una línea `migration N applied` por migración de esquema; una base de datos ya migrada no imprime ninguna. Debería ver, en orden:179 Observe stderr para la secuencia de arranque. Las líneas de registro utilizan el formato `[gateway] <timestamp> <level> <message>`, los eventos de auditoría son JSON de una sola línea con un campo `evt`, y un banner de inicio, omitido a continuación, se imprime entre las líneas de migración y escucha. Una base de datos nueva imprime una línea `migration N applied` por migración de esquema; una base de datos ya migrada no imprime ninguna. Debería ver, en orden:

178 180 


185 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080187 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080

186 ```188 ```

187 189 

190 La puerta de enlace también registra una advertencia de que `access_control.allow_cidrs` está vacío. Eso es lo esperado aquí, porque nada limita qué direcciones de cliente sirve la puerta de enlace hasta que establezca una lista de permitidos. La [referencia `access_control`](/docs/es/claude-apps-gateway-config#http-tuning) tiene los rangos recomendados.

191 

188 Si el arranque sale antes de la línea `claude gateway listening on`, la última línea de stderr nombra el problema:192 Si el arranque sale antes de la línea `claude gateway listening on`, la última línea de stderr nombra el problema:

189 193 

190 * un Postgres inaccesible194 * un Postgres inaccesible


291 295 

292Un desarrollador no puede configurar esto manualmente. El selector de inicio de sesión no tiene opción de puerta de enlace, y `forceLoginGatewayUrl` se ignora en los archivos de configuración propios de un desarrollador. `forceLoginMethod` solo, sin una URL, deja al desarrollador en un mensaje "Contacte a su administrador de TI". Las claves de inicio de sesión pertenecen al archivo que inserta en máquinas, no en el bloque `managed.policies[].cli` de la puerta de enlace, que solo llega a clientes que ya están conectados.296Un desarrollador no puede configurar esto manualmente. El selector de inicio de sesión no tiene opción de puerta de enlace, y `forceLoginGatewayUrl` se ignora en los archivos de configuración propios de un desarrollador. `forceLoginMethod` solo, sin una URL, deja al desarrollador en un mensaje "Contacte a su administrador de TI". Las claves de inicio de sesión pertenecen al archivo que inserta en máquinas, no en el bloque `managed.policies[].cli` de la puerta de enlace, que solo llega a clientes que ya están conectados.

293 297 

298<h3 id="allow-a-gateway-on-public-address-space-you-own">

299 Permitir una puerta de enlace en espacio de direcciones público que usted posee

300</h3>

301 

302Algunas organizaciones numeran su red interna desde un bloque IPv4 público que poseen, como el espacio de direcciones propio de un operador o un `/8` heredado, por lo que su puerta de enlace no puede tener una dirección privada. Liste esos bloques en la configuración administrada `gatewayInternalNetworks`. `/login` entonces acepta una puerta de enlace dentro de un bloque listado cuando la máquina del desarrollador se conecta a ella desde una dirección dentro del mismo bloque. Esto requiere Claude Code v2.1.268 o posterior en la máquina del desarrollador; las versiones anteriores ignoran la clave y aplican la regla de dirección privada.

303 

304<Warning>

305 `gatewayInternalNetworks` es para redes internas que resultan estar numeradas desde espacio de direcciones público. No hace que sea seguro exponer una puerta de enlace a internet: una puerta de enlace confiable puede insertar configuración que ejecute comandos en máquinas de desarrolladores.

306 

307 Mantenga la puerta de enlace inaccesible desde fuera de su red con sus reglas de firewall o balanceador de carga. Establezca el [`access_control.allow_cidrs`](/docs/es/claude-apps-gateway-config#http-tuning) de la puerta de enlace a los mismos bloques que declara aquí, para que la puerta de enlace en sí rechace clientes desde cualquier otro lugar. Detrás de un balanceador de carga o ingress, establezca también `listen.trusted_proxies` a ese front end, porque la puerta de enlace de otro modo coincide con `allow_cidrs` contra la dirección del front end en sí en lugar de la del desarrollador.

308</Warning>

309 

310Agregue la clave a la misma fuente de configuración administrada que las claves de inicio de sesión: el archivo de configuración administrada, perfil MDM, o política de registro. Claude Code la ignora en configuración administrada por el usuario, proyecto, y servidor.

311 

312Este ejemplo declara un bloque. Reemplace `203.0.113.0/24` con su propio bloque. Es un rango de documentación, y Claude Code rechaza esos.

313 

314```json theme={null}

315{

316 "gatewayInternalNetworks": ["203.0.113.0/24"]

317}

318```

319 

320Claude Code valida la lista en `/login` antes de que contacte a cualquier puerta de enlace:

321 

322* Cada entrada es un bloque IPv4 escrito como su primera dirección y un prefijo de `/8` a `/32`.

323* La lista contiene como máximo cuatro bloques, y ninguno dos se superponen.

324* Ningún bloque se superpone con espacio de direcciones privadas: `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `127.0.0.0/8`, `169.254.0.0/16`, y `100.64.0.0/10`. `/login` ya acepta una puerta de enlace allí sin esta clave.

325* Ningún bloque se superpone con espacio que nunca es la red de una organización: `198.18.0.0/15` y `192.0.0.0/24`, que clientes VPN y NAT64 mantienen como direcciones locales; los rangos de documentación `192.0.2.0/24`, `198.51.100.0/24`, y `203.0.113.0/24`; y los rangos reservados `0.0.0.0/8`, `192.88.99.0/24`, y multidifusión `224.0.0.0/4`. Puede declarar bloques dentro de `240.0.0.0/4`, que algunas redes grandes usan como espacio de unidifusión interno.

326 

327Los bloques de `managed-settings.json` y sus archivos drop-in `managed-settings.d/` se combinan en una lista, y estos límites se aplican a la lista combinada. Para estrechar un bloque, reemplace su entrada en lugar de agregar una segunda, superpuesta en un drop-in; `/login` rechaza la superposición.

328 

329Si una entrada rompe una regla, o el valor no es una lista de cadenas, Claude Code rechaza cada nuevo inicio de sesión de puerta de enlace en esa máquina y nombra el problema en el mensaje. El inicio de sesión a una puerta de enlace en una dirección privada también falla, y los inicios de sesión existentes siguen funcionando. Intente el valor en una máquina antes de implementarlo. Claude Code también lista un valor tipado incorrectamente entre la [configuración administrada inválida que reporta](/docs/es/managed-settings#keys-that-fail-closed).

330 

331Con una lista válida, `/login` aplica tres verificaciones a una puerta de enlace cuya dirección está dentro de un bloque listado:

332 

333* Cada dirección a la que se resuelve el nombre de host de la puerta de enlace está dentro de ese bloque. Claude Code rechaza un nombre que también tiene registros fuera de él, direcciones privadas e IPv6 incluidas.

334* La máquina del desarrollador se conecta desde dentro del mismo bloque. Claude Code rechaza una máquina detrás de NAT, dentro de un contenedor o WSL2, o en una VPN cuyo grupo de direcciones se encuentra fuera del bloque, y nombra la dirección desde la que se conectó la máquina.

335* La conexión es directa. Si `HTTPS_PROXY` se aplica al host de la puerta de enlace, `/login` rechaza y nombra la entrada `NO_PROXY` a agregar.

336 

337Cuando los tres pasan, el [indicador de confianza](#connect-developers) agrega una línea nombrando la dirección de la máquina, la dirección de la puerta de enlace, y el bloque declarado que contiene ambas.

338 

339La clave no cambia nada para otras puertas de enlace: el inicio de sesión a una en una dirección privada funciona como antes, y el inicio de sesión a una en una dirección pública fuera de cada bloque listado se rechaza como antes.

340 

341Un bloque declarado estrecha quién puede iniciar sesión pero no prueba dónde está una máquina, por lo que declare solo espacio de direcciones que su organización controla. Un bloque compartido con otros inquilinos, como un rango público de un proveedor de nube, permite que cualquiera en él pase la misma verificación.

342 

294<h3 id="deliver-policy-to-claude-desktop-sessions">343<h3 id="deliver-policy-to-claude-desktop-sessions">

295 Entregar política a sesiones de Claude Desktop344 Entregar política a sesiones de Claude Desktop

296</h3>345</h3>


381 Comportamiento de bloqueo entre fuentes430 Comportamiento de bloqueo entre fuentes

382</h4>431</h4>

383 432 

384Establecer un bloqueo no restringe los otros; cada clave está documentada en la [referencia de configuración](/docs/es/settings-reference#all-settings). De una fuente de administrador por debajo del ganador, los dos bloqueos de sandbox aún se aplican, y `allowManagedPermissionRulesOnly` aún bloquea reglas de permitir suministradas por el principal y `additionalDirectories`. Los bloqueos de hooks y servidor MCP, y el efecto de `allowManagedPermissionRulesOnly` en las reglas propias del desarrollador, necesitan la fuente ganadora por defecto; bajo la opción de participación de fusión `managedSourcesBehavior` en [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources), Claude Code aplica el valor más estricto que cualquier fuente establece para cada bloqueo. En flotas [`policyHelper`](/docs/es/settings-reference#policyhelper), los bloqueos se leen solo de la salida del asistente.433Establecer un bloqueo no restringe los otros; cada clave está documentada en la [referencia de configuración](/docs/es/settings-reference#all-settings).

434 

435De una fuente de administrador por debajo del ganador, los dos bloqueos de sandbox aún se aplican, y `allowManagedPermissionRulesOnly` aún bloquea reglas de permitir suministradas por el principal y `additionalDirectories`. En Claude Code v2.1.273 o posterior, el bloqueo de servidor MCP también se aplica desde una fuente por debajo del ganador, y mientras esté activado, la lista administrada `allowedMcpServers` proviene de la fuente de administrador de mayor prioridad que establece una.

436 

437El bloqueo de hooks y el efecto de `allowManagedPermissionRulesOnly` en las reglas propias del desarrollador necesitan la fuente ganadora por defecto; bajo la opción de participación de fusión `managedSourcesBehavior` en [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources), Claude Code aplica el valor más estricto que cualquier fuente establece para cada bloqueo. En flotas [`policyHelper`](/docs/es/settings-reference#policyhelper), Claude Code lee los bloqueos solo de la salida del asistente.

438 

439Cada bloqueo hace que Claude Code ignore las entradas propias del desarrollador para esa configuración, por lo que incluya las listas de permitidos de su organización junto a los bloqueos:

385 440 

386Cada bloqueo hace que Claude Code ignore las entradas propias del desarrollador para esa configuración, por lo que incluya las listas de permitidos de su organización junto a los bloqueos. Bloquear dominios de red con una lista de dominios administrados vacía bloquea todo el tráfico saliente en sandbox, y bloquear servidores MCP sin `allowedMcpServers` administrado o suministrado por el principal carga cada servidor que `deniedMcpServers` no bloquea. Las entradas `allowRead` solo vuelven a permitir rutas dentro de regiones `denyRead`, por lo que emparéjelas con un `denyRead` administrado.441* **Dominios de red**: bloquear con una lista de dominios administrados vacía bloquea todo el tráfico saliente en sandbox.

442* **Servidores MCP**: bloquear sin `allowedMcpServers` en ninguna fuente de administrador o en la configuración suministrada por el principal carga cada servidor que `deniedMcpServers` no bloquea.

443* **Rutas de lectura**: las entradas `allowRead` solo vuelven a permitir rutas dentro de regiones `denyRead`, por lo que emparéjelas con un `denyRead` administrado.

387 444 

388<h4 id="settings-the-locks-don’t-cover">445<h4 id="settings-the-locks-don’t-cover">

389 Configuración que los bloqueos no cubren446 Configuración que los bloqueos no cubren

390</h4>447</h4>

391 448 

392Cuatro configuraciones suministradas por el principal pasan el filtro incluso con los cinco bloqueos establecidos. Bajo la configuración de primer ganador predeterminada, el valor de administrador que bloquea el del principal es el de la fuente de administrador de mayor prioridad. Bajo la opción de participación de fusión `managedSourcesBehavior`, [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice qué valor de fuente se aplica en su lugar.449Cuatro configuraciones suministradas por el principal pasan el filtro incluso con los cinco bloqueos establecidos. Bajo la configuración de primer ganador predeterminada, el valor de administrador que bloquea el del principal es el de la fuente de administrador de mayor prioridad, excepto para `allowedMcpServers` mientras el [bloqueo de servidor MCP](#lock-behavior-across-sources) esté activado. Bajo la opción de participación de fusión `managedSourcesBehavior`, [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice qué valor de fuente se aplica en su lugar.

393 450 

394* **`forceLoginOrgUUID`**: Claude Code honra un valor suministrado por el principal cuando la fuente de administrador de mayor prioridad no establece un UUID de organización. El inicio de sesión de la puerta de enlace no verifica esta clave, por lo que importa solo para flotas que también usan inicios de sesión de Anthropic de primera parte. Un UUID de organización en la fuente de administrador de mayor prioridad bloquea el valor del principal y es el que Claude Code aplica, por lo que establezca `forceLoginOrgUUID` allí.451* **`forceLoginOrgUUID`**: Claude Code honra un valor suministrado por el principal cuando la fuente de administrador de mayor prioridad no establece un UUID de organización. El inicio de sesión de la puerta de enlace no verifica esta clave, por lo que importa solo para flotas que también usan inicios de sesión de Anthropic de primera parte. Un UUID de organización en la fuente de administrador de mayor prioridad bloquea el valor del principal y es el que Claude Code aplica, por lo que establezca `forceLoginOrgUUID` allí.

395* **`allowedMcpServers`**: Claude Code honra una lista de permitidos suministrada por el principal cuando la fuente de administrador de mayor prioridad no establece una, y `allowManagedMcpServersOnly` no la bloquea, porque el bloqueo aplica cualquier lista que gane como el valor administrado, incluida una lista suministrada por el principal cuando la fuente de administrador de mayor prioridad no establece una. Una lista en la fuente de administrador de mayor prioridad bloquea la del principal y es la lista que Claude Code aplica, por lo que establezca `allowedMcpServers` allí, junto al bloqueo. Antes de v2.1.223, un valor para cualquiera de las claves en cualquier fuente de administrador bloqueaba la del principal.452* **`allowedMcpServers`**: Claude Code honra una lista de permitidos suministrada por el principal cuando ninguna lista de administrador está en vigor. `allowManagedMcpServersOnly` no la bloquea, porque el bloqueo aplica cualquier lista que gane como el valor administrado, incluida una lista suministrada por el principal cuando ninguna fuente de administrador suministra una. Una lista en la fuente de administrador de mayor prioridad bloquea la del principal y es la lista que Claude Code aplica, por lo que establezca `allowedMcpServers` allí, junto al bloqueo. Antes de v2.1.223, un valor para cualquiera de las claves en cualquier fuente de administrador bloqueaba la del principal.

396* **`availableModels`**: Claude Code honra una lista de modelos suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe modelos, establezca `availableModels` en la fuente ganadora.453* **`availableModels`**: Claude Code honra una lista de modelos suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe modelos, establezca `availableModels` en la fuente ganadora.

397* **`strictPluginOnlyCustomization`**: esta clave pasa el filtro independientemente de cualquier bloqueo, y hace que Claude Code ignore la personalización propia del desarrollador, incluidos hooks protectores. Ningún bloqueo la bloquea.454* **`strictPluginOnlyCustomization`**: esta clave pasa el filtro independientemente de cualquier bloqueo, y hace que Claude Code ignore la personalización propia del desarrollador, incluidos hooks protectores. Ningún bloqueo la bloquea.

398 455 

Details

496```496```

497 497 

498| Campo | Requerido | Descripción |498| Campo | Requerido | Descripción |

499| ------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |499| ------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

500| `multiplier` | No | Predeterminado `1`. El medidor multiplica cada cantidad medida por esto, ya sea con precio de lista o anulada, por lo que `0.85` factura el 85% del precio. Debe ser mayor que 0 y como máximo 1. |500| `multiplier` | No | Predeterminado `1`. El medidor multiplica cada cantidad medida por esto, ya sea con precio de lista o anulada, por lo que `0.85` factura el 85% del precio. Debe ser mayor que 0 y como máximo 10, y un valor superior a 1 es un [marcado](#mark-prices-up). |

501| `overrides` | No | Filas de `{upstream, model, input, output, cache_read, cache_write}` en USD por millón de tokens. Las cuatro tasas son obligatorias. Cada una debe ser mayor que 0 y como máximo 10000. |501| `overrides` | No | Filas de `{upstream, model, input, output, cache_read, cache_write}` en USD por millón de tokens. Las cuatro tasas son obligatorias. Cada una debe ser mayor que 0 y como máximo 10000. |

502 502 

503Cómo el medidor coincide con una fila de anulación:503Cómo el medidor coincide con una fila de anulación:


510 510 

511Para tasas por región, proporcione a cada región su propio upstream nombrado y una fila por upstream.511Para tasas por región, proporcione a cada región su propio upstream nombrado y una fila por upstream.

512 512 

513<h4 id="mark-prices-up">

514 Marcar precios hacia arriba

515</h4>

516 

517Con v2.1.271 o posterior en el servidor de puerta de enlace, puede establecer `multiplier` por encima de 1, hasta 10, para medir más de lo que cobra el proveedor, por ejemplo una tasa de reembolso interno. Este ejemplo mide cada solicitud al 120% del precio:

518 

519```yaml theme={null}

520pricing:

521 multiplier: 1.2

522```

523 

524Con un bloque [`admin:`](#admin), el marcado también se aplica a los límites de gasto. El medidor cuenta el 120% del precio, por lo que los desarrolladores alcanzan sus límites más rápido. La puerta de enlace registra una advertencia al arrancar que lo dice.

525 

526El multiplicador no cambia lo que cobra el proveedor upstream por las solicitudes.

527 

528Si la puerta de enlace también [envía las tasas a clientes firmados](#send-the-rates-to-signed-in-clients), los desarrolladores necesitan Claude Code v2.1.271 o posterior para ver el marcado. Los clientes anteriores ignoran un `multiplier` superior a 1 y muestran costos sin él.

529 

530Un servidor de puerta de enlace anterior a v2.1.271 se niega a iniciar si establece un `multiplier` superior a 1.

531 

513<h4 id="send-the-rates-to-signed-in-clients">532<h4 id="send-the-rates-to-signed-in-clients">

514 Enviar las tasas a clientes firmados533 Enviar las tasas a clientes firmados

515</h4>534</h4>


892| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Límite de velocidad por IP en el punto final de autorización de dispositivo no autenticado. Aumente para una organización grande detrás de una IP de salida compartida o NAT. Estos límites se aplican solo al flujo de inicio de sesión de concesión de dispositivo, no a la inferencia `/v1/messages`. Consulte [Resistencia de fuerza bruta de código de usuario](/docs/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |911| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Límite de velocidad por IP en el punto final de autorización de dispositivo no autenticado. Aumente para una organización grande detrás de una IP de salida compartida o NAT. Estos límites se aplican solo al flujo de inicio de sesión de concesión de dispositivo, no a la inferencia `/v1/messages`. Consulte [Resistencia de fuerza bruta de código de usuario](/docs/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

893| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Límite de velocidad por IP en envíos de `user_code` en `/device` |912| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Límite de velocidad por IP en envíos de `user_code` en `/device` |

894 913 

914Si deja ambas listas `access_control` vacías, que es el predeterminado, la puerta de enlace sirve cualquier dirección de cliente, por lo que solo su red restringe quién puede alcanzarla. Eso importa porque una puerta de enlace puede empujar [configuración administrada](#managed) que ejecuta comandos en máquinas de desarrollador.

915 

916Mientras `allow_cidrs` esté vacío, la puerta de enlace advierte en dos lugares, sin cambiar cómo responde a ninguna solicitud:

917 

918* **Al arrancar**: una advertencia en el registro operacional recomienda permitir solo los rangos privados `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` y `fc00::/7`, más cualquier otro rango interno desde el que se conectan sus desarrolladores. Si vincula la puerta de enlace a una dirección de bucle de retorno y no establece ni `trusted_proxies` ni `public_url`, como en desarrollo local, la advertencia no aparece.

919* **En tiempo de ejecución**: la primera vez que llega una solicitud desde una dirección fuera de esos rangos privados, la puerta de enlace registra una advertencia y emite un evento de auditoría [`access.public_client`](/docs/es/claude-apps-gateway-deploy#logs) que lleva la IP del cliente. Ambos se disparan una vez por proceso. Las direcciones de enlace local, `169.254.0.0/16` y `fe80::/10`, no cuentan como públicas. La puerta de enlace responde `/healthz` y `/readyz` antes de que se ejecute esta verificación, por lo que los sondeos de salud desde rangos públicos no la desencadenan.

920 

921Ambas señales usan la dirección del cliente tal como la resuelve la puerta de enlace. Si un equilibrador de carga, reenvío de puerto o túnel retransmite tráfico y no está listado en `listen.trusted_proxies`, la puerta de enlace ve la dirección del relé, que generalmente es privada, por lo que ni la advertencia en tiempo de ejecución ni una lista de permitidos privada lo detecta.

922 

923Detrás de tal front end, establezca [`listen.trusted_proxies`](#listen) primero para que la puerta de enlace vea direcciones de cliente reales, y mantenga la puerta de enlace y todo lo que está frente a ella inaccesible desde Internet público independientemente.

924 

895<h2 id="complete-example">925<h2 id="complete-example">

896 Ejemplo completo926 Ejemplo completo

897</h2>927</h2>


962# enforcement:992# enforcement:

963# fail_closed_on_error: false993# fail_closed_on_error: false

964 994 

965# Medir a tasas contratadas en lugar del precio de lista USD. Requiere admin:.995# Medir a tasas contratadas en lugar del precio de lista USD. Requiere admin: o una

966# Con managed:, las mismas tasas también van a clientes con sesión iniciada.996# política managed:. Con managed:, las mismas tasas también van a clientes con sesión iniciada.

967# Las tasas a continuación son marcadores de posición, no precios de contrato reales.997# Las tasas a continuación son marcadores de posición, no precios de contrato reales.

968# pricing:998# pricing:

969# multiplier: 0.85999# multiplier: 0.85


1063 1093 

1064Para Claude Desktop, establezca la clave `bootstrapUrl` en la propia [configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop en `<listen.public_url>/user/bootstrap`. El flujo de inicio de sesión y la política por grupo coinciden entonces con los del CLI una vez que una política se acepta del lado del servidor con una clave `desktop`; sin la aceptación, `/user/bootstrap` devuelve 404. Consulte [Superposición de Claude Desktop](#claude-desktop-overlay) para la mitad del lado del servidor.1094Para Claude Desktop, establezca la clave `bootstrapUrl` en la propia [configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop en `<listen.public_url>/user/bootstrap`. El flujo de inicio de sesión y la política por grupo coinciden entonces con los del CLI una vez que una política se acepta del lado del servidor con una clave `desktop`; sin la aceptación, `/user/bootstrap` devuelve 404. Consulte [Superposición de Claude Desktop](#claude-desktop-overlay) para la mitad del lado del servidor.

1065 1095 

1066[`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl), y el valor `"gateway"` de [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod), se honran solo desde una fuente administrada en la máquina: `managed-settings.json`, la plist de macOS o el registro HKLM de Windows, o un asistente de política. Un desarrollador que los establezca en su propio `~/.claude/settings.json` no tiene efecto, y tampoco lo hace establecerlos en la carga útil de la puerta de enlace.1096Claude Code honra [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/es/settings-reference#gatewayinternalnetworks), y el valor `"gateway"` de [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod) solo desde una fuente administrada en la máquina: `managed-settings.json`, la plist de macOS o el registro HKLM de Windows, o un asistente de política. Un desarrollador que los establezca en su propio `~/.claude/settings.json` no tiene efecto, y tampoco lo hace establecerlos en la carga útil de la puerta de enlace.

1067 1097 

1068<h2 id="related">1098<h2 id="related">

1069 Relacionado1099 Relacionado

Details

18Si un inicio de sesión o arranque falla en el camino, vaya directamente a [Solución de problemas](#troubleshooting), que está indexada por el error que ve.18Si un inicio de sesión o arranque falla en el camino, vaya directamente a [Solución de problemas](#troubleshooting), que está indexada por el error que ve.

19 19 

20<Note>20<Note>

21 **Implemente en su red privada.** Claude Code solo se conecta a una puerta de enlace cuya dirección es privada. Esta es una protección de seguridad, porque una puerta de enlace de confianza puede enviar configuraciones que ejecuten comandos en máquinas de desarrolladores. Coloque la puerta de enlace que implemente detrás de un equilibrador de carga interno o VPN y asígnele un nombre de host que se resuelva solo en direcciones IP privadas.21 **Implemente en su red privada.** Claude Code solo se conecta a una puerta de enlace cuya dirección es privada. Esta es una protección de seguridad, porque una puerta de enlace de confianza puede enviar configuraciones que ejecuten comandos en máquinas de desarrolladores. Coloque la puerta de enlace que implemente detrás de un equilibrador de carga interno o VPN y asígnele un nombre de host que se resuelva solo en direcciones IP privadas. Si su red interna está numerada desde espacio IPv4 público que su organización posee, consulte [Permitir una puerta de enlace en espacio de dirección público que usted posee](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own).

22</Note>22</Note>

23 23 

24<h2 id="identity-provider-setup">24<h2 id="identity-provider-setup">


138 138 

139La puerta de enlace escribe dos flujos a stderr, ambos amigables con JSON:139La puerta de enlace escribe dos flujos a stderr, ambos amigables con JSON:

140 140 

141* **Audit events**: JSON de una sola línea por evento relevante para la seguridad. Canalice stderr a su agregador de registros. Los eventos emitidos incluyen `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert` y `admin.limit.delete`. Los campos varían según el evento:141* **Audit events**: JSON de una sola línea por evento relevante para la seguridad. Canalice stderr a su agregador de registros.

142 

143 Los eventos emitidos incluyen `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `device.callback`, `auth.denied`, `access.denied`, `access.public_client`, `inference`, `managed.serve`, `desktop_bootstrap.serve`, `desktop_bootstrap.denied`, `spend.blocked`, `admin.denied`, `admin.limit.upsert` y `admin.limit.delete`. Los campos varían según el evento:

144 

142 * Los eventos de acuñación y actualización exitosos llevan `sub`, `email`, `client_ip` y el resultado145 * Los eventos de acuñación y actualización exitosos llevan `sub`, `email`, `client_ip` y el resultado

143 * `auth.denied` y `access.denied` llevan la razón e IP del cliente, más la ruta de solicitud para `auth.denied`, ya que no existe identidad de usuario en esas denegaciones. Dos razones de `access.denied` cambian lo que el evento lleva:146 * `auth.denied` y `access.denied` llevan la razón e IP del cliente, más la ruta de solicitud para `auth.denied`, ya que no existe identidad de usuario en esas denegaciones. Dos razones de `access.denied` cambian lo que el evento lleva:

144 * `xff_unparseable`: el evento también lleva la entrada `X-Forwarded-For` que no se pudo leer147 * `xff_unparseable`: el evento también lleva la entrada `X-Forwarded-For` que no se pudo leer

145 * `client_ip_unknown`: el evento no lleva IP del cliente, porque la conexión no tenía dirección de par mientras se establecía una lista de `access_control`148 * `client_ip_unknown`: el evento no lleva IP del cliente, porque la conexión no tenía dirección de par mientras se establecía una lista de `access_control`

149 * `access.public_client` lleva la IP del cliente de la primera solicitud por proceso que llega desde una dirección pública mientras `access_control.allow_cidrs` está vacío. La puerta de enlace sirve la solicitud como de costumbre; el evento señala que la puerta de enlace puede ser alcanzable desde la internet pública. Vea la [referencia de `access_control`](/docs/es/claude-apps-gateway-config#http-tuning) para lo que cuenta como público y para la lista de permitidos recomendada.

146 * `inference` registra qué ascendente sirvió la solicitud y el estado de respuesta150 * `inference` registra qué ascendente sirvió la solicitud y el estado de respuesta

147 * `desktop_bootstrap.denied` registra una búsqueda de arranque de Claude Desktop rechazada con la razón (`not_configured`, `policy_not_opted_in` o `no_policy_matched`) y la identidad del usuario151 * `desktop_bootstrap.denied` registra una búsqueda de arranque de Claude Desktop rechazada con la razón (`not_configured`, `policy_not_opted_in` o `no_policy_matched`) y la identidad del usuario

148 * `admin.denied` registra un intento de autenticación de API de administrador rechazado con la IP del cliente, método, ruta y una razón, sin el material de clave presentado: `invalid_key` cuando se presentó una `x-api-key` pero no coincidió con ninguna clave configurada, `bearer_rejected` cuando solo se presentó un encabezado `Authorization` y no se verificó como una sesión de puerta de enlace en `admin.admin_groups`, o `no_credentials` cuando no se presentó ningún encabezado152 * `admin.denied` registra un intento de autenticación de API de administrador rechazado con la IP del cliente, método, ruta y una razón, sin el material de clave presentado: `invalid_key` cuando se presentó una `x-api-key` pero no coincidió con ninguna clave configurada, `bearer_rejected` cuando solo se presentó un encabezado `Authorization` y no se verificó como una sesión de puerta de enlace en `admin.admin_groups`, o `no_credentials` cuando no se presentó ningún encabezado


173 Rotación de secreto JWT177 Rotación de secreto JWT

174</h3>178</h3>

175 179 

176Rote el secreto de firma en tres pasos para que las sesiones existentes permanezcan válidas:180Rote el secreto de firma en etapas para que las sesiones existentes permanezcan válidas:

177 181 

1781. Genere un nuevo secreto. Antepóngalo a la matriz `session.jwt_secret`.1821. Genere un nuevo secreto. Antepóngalo a la matriz `session.jwt_secret`.

1792. Despliegue la implementación. Los nuevos tokens firman con el nuevo secreto; los tokens antiguos aún se verifican.1832. Despliegue la implementación. Los nuevos tokens firman con el nuevo secreto; los tokens antiguos aún se verifican.


285| Las solicitudes de un desarrollador fallan con `Not signed in to the Cloud gateway — run /login.` | La configuración administrada de la máquina establece `forceLoginMethod: "gateway"` o `forceLoginGatewayUrl`, y la sesión no tiene inicio de sesión de puerta de enlace. Un inicio de sesión de claude.ai sobrante no satisface el requisito. | Haga que el desarrollador ejecute `/login` y complete el inicio de sesión de la puerta de enlace. Consulte también [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |289| Las solicitudes de un desarrollador fallan con `Not signed in to the Cloud gateway — run /login.` | La configuración administrada de la máquina establece `forceLoginMethod: "gateway"` o `forceLoginGatewayUrl`, y la sesión no tiene inicio de sesión de puerta de enlace. Un inicio de sesión de claude.ai sobrante no satisface el requisito. | Haga que el desarrollador ejecute `/login` y complete el inicio de sesión de la puerta de enlace. Consulte también [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

286| Claude Desktop reporta que su configuración de arranque no se pudo obtener | `/user/bootstrap` devolvió 404: la política que coincide con el usuario no lleva una clave `desktop`, o ninguna política coincidió. El registro de auditoría de la puerta de enlace registra cada rechazo como `desktop_bootstrap.denied` con la razón. | Agregue un bloque `desktop` a la política que coincide con el usuario, o a la capa base `match: {}`; un `desktop: {}` vacío es suficiente. Consulte [superposición de Claude Desktop](/docs/es/claude-apps-gateway-config#claude-desktop-overlay). |290| Claude Desktop reporta que su configuración de arranque no se pudo obtener | `/user/bootstrap` devolvió 404: la política que coincide con el usuario no lleva una clave `desktop`, o ninguna política coincidió. El registro de auditoría de la puerta de enlace registra cada rechazo como `desktop_bootstrap.denied` con la razón. | Agregue un bloque `desktop` a la política que coincide con el usuario, o a la capa base `match: {}`; un `desktop: {}` vacío es suficiente. Consulte [superposición de Claude Desktop](/docs/es/claude-apps-gateway-config#claude-desktop-overlay). |

287| El inicio muestra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La compilación de Claude Code instalada es anterior al soporte de puerta de enlace | Haga que el desarrollador actualice Claude Code a una versión que incluya soporte de puerta de enlace en la nube |291| El inicio muestra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La compilación de Claude Code instalada es anterior al soporte de puerta de enlace | Haga que el desarrollador actualice Claude Code a una versión que incluya soporte de puerta de enlace en la nube |

292| El inicio sale con `Administrator policy requires a Cloud gateway sign-in on this machine` | El entorno del desarrollador establece `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, sus configuraciones configuran un [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), o una clave API de un inicio de sesión anterior de Claude Console aún está guardada | Haga que el desarrollador borre cada uno que se aplique: desestablezca la variable, elimine la entrada `apiKeyHelper`, o ejecute `claude auth logout` para eliminar la clave guardada. Luego haga que inicie `claude` e inicie sesión con `/login`. Consulte también [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

288| El inicio o `/login` reporta `Claude Code may not be enabled for your organization` después de un 403 en la carga de configuraciones administradas | La puerta de enlace, o algo frente a ella, respondió la solicitud `/managed/settings` con 403. La ruta de configuraciones de la puerta de enlace nunca responde 403. El estado proviene de las verificaciones de IP de [`access_control`](/docs/es/claude-apps-gateway-config#http-tuning) o de un proxy o WAF frente a la puerta de enlace. El registro de auditoría registra una negación de verificación de IP como `access.denied` con la razón. El desarrollador permanece conectado. | Verifique el registro de auditoría para `access.denied` en el momento del fallo y corrija las listas de `access_control` o el front end, luego haga que el desarrollador inicie `claude` de nuevo |293| El inicio o `/login` reporta `Claude Code may not be enabled for your organization` después de un 403 en la carga de configuraciones administradas | La puerta de enlace, o algo frente a ella, respondió la solicitud `/managed/settings` con 403. La ruta de configuraciones de la puerta de enlace nunca responde 403. El estado proviene de las verificaciones de IP de [`access_control`](/docs/es/claude-apps-gateway-config#http-tuning) o de un proxy o WAF frente a la puerta de enlace. El registro de auditoría registra una negación de verificación de IP como `access.denied` con la razón. El desarrollador permanece conectado. | Verifique el registro de auditoría para `access.denied` en el momento del fallo y corrija las listas de `access_control` o el front end, luego haga que el desarrollador inicie `claude` de nuevo |

289| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | El nombre de host de la puerta de enlace se resuelve a al menos una dirección IP pública. Claude Code verifica cada dirección resuelta y requiere que cada una sea privada. Una causa común es un nombre de pila dual donde una familia se resuelve a una dirección pública, incluidos los equilibradores de carga de pila dual internos de AWS, que devuelven direcciones AAAA de rango público. | Haga que el nombre de la puerta de enlace se resuelva solo a direcciones privadas en máquinas de desarrolladores. Para un nombre de pila dual, suelte el registro de rango público o sirva un nombre DNS solo interno separado. Consulte el [requisito previo de red privada](/docs/es/claude-apps-gateway#prerequisites). |294| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | El nombre de host de la puerta de enlace se resuelve a al menos una dirección IP pública. Claude Code verifica cada dirección resuelta y requiere que cada una sea privada. Una causa común es un nombre de pila dual donde una familia se resuelve a una dirección pública, incluidos los equilibradores de carga de pila dual internos de AWS, que devuelven direcciones AAAA de rango público. | Haga que el nombre de la puerta de enlace se resuelva solo a direcciones privadas en máquinas de desarrolladores. Para un nombre de pila dual, suelte el registro de rango público o sirva un nombre DNS solo interno separado. Consulte el [requisito previo de red privada](/docs/es/claude-apps-gateway#prerequisites). Si la dirección es espacio de dirección pública que su organización posee y usa internamente, [declare ese bloque](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en su lugar. |

290| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica al host de la puerta de enlace y el nombre de host del proxy se resuelve a una dirección pública. Un proxy cuyo host se resuelve solo a direcciones privadas está permitido y no desencadena este error | Agregue el host de la puerta de enlace a `NO_PROXY` en la máquina del desarrollador para que la conexión sea directa, o use un proxy cuyo nombre de host se resuelva a direcciones privadas. El mensaje nombra la entrada exacta de `NO_PROXY` a agregar |295| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica al host de la puerta de enlace y el nombre de host del proxy se resuelve a una dirección pública. Un proxy cuyo host se resuelve solo a direcciones privadas está permitido y no desencadena este error | Agregue el host de la puerta de enlace a `NO_PROXY` en la máquina del desarrollador para que la conexión sea directa, o use un proxy cuyo nombre de host se resuelva a direcciones privadas. El mensaje nombra la entrada exacta de `NO_PROXY` a agregar |

296| CLI `/login`: `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | La puerta de enlace está en un bloque declarado en [`gatewayInternalNetworks`](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), y la máquina del desarrollador la alcanzó desde una dirección fuera de ese bloque: un grupo de direcciones VPN, un segmento NAT de contenedor o WSL2, o una red que no es la suya | Haga que el desarrollador ejecute `/login` desde el SO del host en su red. Si la dirección mostrada también es espacio de dirección pública de su organización, reemplace la entrada de la puerta de enlace con un bloque que cubra ambas, hasta `/8`; se rechaza una segunda entrada superpuesta |

297| CLI `/login`: `Every address for gateway host <host> must be inside its declared network <block>, and it also resolves to <ip>` | El nombre de la puerta de enlace se resuelve a una dirección fuera del bloque declarado en [`gatewayInternalNetworks`](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own): un segundo sitio, o un registro IPv6 en un nombre de pila dual. Bajo un bloque declarado, cada registro debe estar dentro de ese único bloque IPv4, direcciones privadas e IPv6 incluidas | Publique solo registros dentro del bloque para el nombre de la puerta de enlace en máquinas de desarrolladores, o sirva un nombre solo interno separado |

298| CLI `/login`: `<host> is on the declared network <block>, which Claude Code checks over a direct connection, not through an HTTP proxy` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica a una puerta de enlace en un bloque declarado | En la máquina del desarrollador, agregue la entrada de `NO_PROXY` que el mensaje nombra |

299| CLI `/login`: un mensaje que comienza con `gatewayInternalNetworks in managed settings` | El valor infringe una de las [reglas de validación](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), y el mensaje nombra cuál. Hasta que lo corrija, Claude Code rechaza cada nuevo `/login` de puerta de enlace en la máquina, puertas de enlace en direcciones privadas incluidas; los inicios de sesión existentes siguen funcionando | En la fuente de configuraciones administradas que implementa, corrija la entrada que el mensaje nombra, luego reintente `/login` |

291| CLI `/login`: `Could not resolve the configured HTTP proxy` | El nombre de host en `HTTPS_PROXY` o `HTTP_PROXY` no se resuelve desde la máquina del desarrollador, típicamente porque no está conectada a la red corporativa | Haga que el desarrollador se conecte a su red o VPN e intente de nuevo, o corrija la URL del proxy |300| CLI `/login`: `Could not resolve the configured HTTP proxy` | El nombre de host en `HTTPS_PROXY` o `HTTP_PROXY` no se resuelve desde la máquina del desarrollador, típicamente porque no está conectada a la red corporativa | Haga que el desarrollador se conecte a su red o VPN e intente de nuevo, o corrija la URL del proxy |

292| CLI `/login`: `Could not resolve gateway host <host>` | La máquina no puede resolver el nombre DNS interno de la puerta de enlace, típicamente porque no está en la red corporativa | Haga que el desarrollador se conecte a su red o VPN, luego reintente `/login` |301| CLI `/login`: `Could not resolve gateway host <host>` | La máquina no puede resolver el nombre DNS interno de la puerta de enlace, típicamente porque no está en la red corporativa | Haga que el desarrollador se conecte a su red o VPN, luego reintente `/login` |

293| El arranque sale con un error de validación de configuración nombrando `store.postgres_url` | No hay Postgres configurado; la puerta de enlace requiere Postgres | Establezca `store.postgres_url`. Para desarrollo local, use un contenedor desechable: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |302| El arranque sale con un error de validación de configuración nombrando `store.postgres_url` | No hay Postgres configurado; la puerta de enlace requiere Postgres | Establezca `store.postgres_url`. Para desarrollo local, use un contenedor desechable: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

Details

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

8 8 

9<Note>9<Note>

10 Esta página describe una forma de ejecutar Claude apps gateway en Google Cloud. La configuración es un ejemplo funcional para infraestructura administrada por el cliente en lugar de una implementación de producción compatible; úsela para ver cómo encajan las piezas antes de adaptarla a su propio entorno. Para los requisitos independientes de la plataforma, consulte la [guía de implementación](/es/claude-apps-gateway-deploy).10 Esta página describe una forma de ejecutar Claude apps gateway en Google Cloud. La configuración es un ejemplo funcional para infraestructura administrada por el cliente en lugar de una implementación de producción compatible; úsela para ver cómo encajan las piezas antes de adaptarla a su propio entorno. Para los requisitos independientes de la plataforma, consulte la [guía de implementación](/docs/es/claude-apps-gateway-deploy).

11</Note>11</Note>

12 12 

13Este ejemplo aprovisiona Claude apps gateway en Google Cloud con Google Cloud's Agent Platform como el upstream del modelo, utilizando Cloud Run o GKE para la computación. Google Workspace es el ejemplo del proveedor de identidad (IdP), pero cualquier proveedor de identidad compatible con OpenID Connect (OIDC) funciona; solo cambia el bloque `oidc`. Consulte [Configuración del proveedor de identidad](/es/claude-apps-gateway-deploy#identity-provider-setup) para obtener detalles específicos de cada IdP.13Este ejemplo aprovisiona Claude apps gateway en Google Cloud con Google Cloud's Agent Platform como el upstream del modelo, utilizando Cloud Run o GKE para la computación. Google Workspace es el ejemplo del proveedor de identidad (IdP), pero cualquier proveedor de identidad compatible con OpenID Connect (OIDC) funciona; solo cambia el bloque `oidc`. Consulte [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup) para obtener detalles específicos de cada IdP.

14 14 

15<h2 id="what-you’ll-build">15<h2 id="what-you’ll-build">

16 Lo que construirá16 Lo que construirá


24 24 

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

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

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

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

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

30* **Equilibrador de carga de aplicaciones interno** en Cloud Run, o un **GKE Ingress** interno de clase `gce-internal` en GKE, para HTTPS30* **Equilibrador de carga de aplicaciones interno** en Cloud Run, o un **GKE Ingress** interno de clase `gce-internal` en GKE, para HTTPS


37* La CLI `gcloud`, autenticada con `gcloud auth login`, y Docker instalado localmente37* La CLI `gcloud`, autenticada con `gcloud auth login`, y Docker instalado localmente

38* Para la ruta de GKE: `kubectl` y un clúster de GKE en la VPC creada en el tutorial a continuación38* Para la ruta de GKE: `kubectl` y un clúster de GKE en la VPC creada en el tutorial a continuación

39* Acceso a los modelos de Claude que necesita en Model Garden, en una región que los publique39* Acceso a los modelos de Claude que necesita en Model Garden, en una región que los publique

40* Un cliente de aplicación web OAuth 2.0 de Google Workspace con URI de redirección `https://<gateway-host>/oauth/callback`; consulte [Configuración del proveedor de identidad](/es/claude-apps-gateway-deploy#identity-provider-setup)40* Un cliente de aplicación web OAuth 2.0 de Google Workspace con URI de redirección `https://<gateway-host>/oauth/callback`; consulte [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup)

41* Un nombre de host TLS para la puerta de enlace, típicamente un nombre DNS interno que apunta al equilibrador de carga41* Un nombre de host TLS para la puerta de enlace, típicamente un nombre DNS interno que apunta al equilibrador de carga

42 42 

43Establezca el proyecto y la región una vez:43Establezca el proyecto y la región una vez:


94 </Step>94 </Step>

95 95 

96 <Step title="Construir e insertar la imagen en Artifact Registry">96 <Step title="Construir e insertar la imagen en Artifact Registry">

97 Construya la imagen según los [requisitos de imagen de contenedor](/es/claude-apps-gateway-deploy#container-image), utilizando el binario glibc `linux-x64`, e insértela:97 Construya la imagen según los [requisitos de imagen de contenedor](/docs/es/claude-apps-gateway-deploy#container-image), utilizando el binario glibc `linux-x64`, e insértela:

98 98 

99 ```bash theme={null}99 ```bash theme={null}

100 gcloud artifacts repositories create claude-gateway \100 gcloud artifacts repositories create claude-gateway \


141 </Step>141 </Step>

142 142 

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

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

145 145 

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

147 147 

148 * `public_url`: requerido detrás de Cloud Run o un GKE Ingress. La puerta de enlace construye el `redirect_uri` del IdP y su documento de descubrimiento solo a partir de este valor, nunca a partir de encabezados `X-Forwarded-*`.148 * `public_url`: requerido detrás de Cloud Run o un GKE Ingress. La puerta de enlace construye el `redirect_uri` del IdP y su documento de descubrimiento solo a partir de este valor, nunca a partir de encabezados `X-Forwarded-*`.

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

150 150 

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

152 152 

153 | Front end | `trusted_proxies` |153 | Front end | `trusted_proxies` |

154 | ---------------------------------------------------------------- | ------------------------------------------------------- |154 | ---------------------------------------------------------------- | ------------------------------------------------------- |


188 ```188 ```

189 189 

190 <Note>190 <Note>

191 Los id\_tokens de Google no llevan ninguna reclamación `groups`. Para usar políticas basadas en grupos en [`managed.policies`](/es/claude-apps-gateway-config#managed) con Google Workspace como IdP, configure [`oidc.google_groups`](/es/claude-apps-gateway-config#oidc), que busca los grupos de cada usuario a través de la API de Admin SDK Directory usando una cuenta de servicio con delegación en todo el dominio. Sin ella, coincida con `email_domain` en su lugar.191 Los id\_tokens de Google no llevan ninguna reclamación `groups`. Para usar políticas basadas en grupos en [`managed.policies`](/docs/es/claude-apps-gateway-config#managed) con Google Workspace como IdP, configure [`oidc.google_groups`](/docs/es/claude-apps-gateway-config#oidc), que busca los grupos de cada usuario a través de la API de Admin SDK Directory usando una cuenta de servicio con delegación en todo el dominio. Sin ella, coincida con `email_domain` en su lugar.

192 </Note>192 </Note>

193 </Step>193 </Step>

194 194 


237 237 

238 La restricción de ingreso a través de `--ingress` es una capa separada e independiente de la verificación del invocador; manténgala establecida para limitar el servicio a su red corporativa.238 La restricción de ingreso a través de `--ingress` es una capa separada e independiente de la verificación del invocador; manténgala establecida para limitar el servicio a su red corporativa.

239 239 

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

241 241 

242 * **Equilibrador de carga de aplicaciones interno**, la topología que el comando de implementación anterior asume: implemente con `--ingress=internal-and-cloud-load-balancing`, aprovisione un equilibrador de carga de aplicaciones interno frente al servicio con un nombre DNS interno y certificado, y establezca `listen.public_url` en ese nombre de host.242 * **Equilibrador de carga de aplicaciones interno**, la topología que el comando de implementación anterior asume: implemente con `--ingress=internal-and-cloud-load-balancing`, aprovisione un equilibrador de carga de aplicaciones interno frente al servicio con un nombre DNS interno y certificado, y establezca `listen.public_url` en ese nombre de host.

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


272 iam.gke.io/gcp-service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com"272 iam.gke.io/gcp-service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com"

273 ```273 ```

274 274 

275 Implemente la puerta de enlace como un Deployment estándar más un Service e un Ingress interno, clase `gce-internal`, como se describe en [Implementación de Kubernetes](/es/claude-apps-gateway-deploy#kubernetes), con:275 Implemente la puerta de enlace como un Deployment estándar más un Service e un Ingress interno, clase `gce-internal`, como se describe en [Implementación de Kubernetes](/docs/es/claude-apps-gateway-deploy#kubernetes), con:

276 276 

277 * `serviceAccountName: gateway`277 * `serviceAccountName: gateway`

278 * el controlador CSI de Secret Manager montando secretos en `/secrets`278 * el controlador CSI de Secret Manager montando secretos en `/secrets`


280 280 

281 Adjunte un BackendConfig con un `timeoutSec` elevado al Service de la puerta de enlace: el servicio backend del equilibrador de carga detrás de GKE Ingress tiene un tiempo de espera predeterminado de 30 segundos, que corta las respuestas de transmisión larga.281 Adjunte un BackendConfig con un `timeoutSec` elevado al Service de la puerta de enlace: el servicio backend del equilibrador de carga detrás de GKE Ingress tiene un tiempo de espera predeterminado de 30 segundos, que corta las respuestas de transmisión larga.

282 282 

283 No aplique una NetworkPolicy de salida que bloquee `169.254.169.254` en un clúster de Workload Identity; el pod debe alcanzar el servidor de metadatos para las credenciales. La [protección SSRF](/es/claude-apps-gateway-deploy#threat-model-summary) integrada de la puerta de enlace es la defensa allí.283 No aplique una NetworkPolicy de salida que bloquee `169.254.169.254` en un clúster de Workload Identity; el pod debe alcanzar el servidor de metadatos para las credenciales. La [protección SSRF](/docs/es/claude-apps-gateway-deploy#threat-model-summary) integrada de la puerta de enlace es la defensa allí.

284 284 

285 La puerta de enlace registra una advertencia de arranque de que el punto final de metadatos es alcanzable y sugiere aplicar una NetworkPolicy de salida. Bajo Workload Identity esa advertencia es esperada, porque el pod necesita el punto final.285 La puerta de enlace registra una advertencia de arranque de que el punto final de metadatos es alcanzable y sugiere aplicar una NetworkPolicy de salida. Bajo Workload Identity esa advertencia es esperada, porque el pod necesita el punto final.

286 </Tab>286 </Tab>


288 </Step>288 </Step>

289 289 

290 <Step title="Insertar la URL de la puerta de enlace en máquinas de desarrolladores">290 <Step title="Insertar la URL de la puerta de enlace en máquinas de desarrolladores">

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

292 </Step>292 </Step>

293</Steps>293</Steps>

294 294 


310 Solución de problemas310 Solución de problemas

311</h2>311</h2>

312 312 

313Para errores de arranque y inicio de sesión de la puerta de enlace, consulte la tabla de [solución de problemas](/es/claude-apps-gateway-deploy#troubleshooting) independiente de la plataforma. Las entradas a continuación son específicas de Google Cloud.313Para errores de arranque y inicio de sesión de la puerta de enlace, consulte la tabla de [solución de problemas](/docs/es/claude-apps-gateway-deploy#troubleshooting) independiente de la plataforma. Las entradas a continuación son específicas de Google Cloud.

314 314 

315| Síntoma | Causa | Solución |315| Síntoma | Causa | Solución |

316| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |316| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


325 Próximos pasos325 Próximos pasos

326</h2>326</h2>

327 327 

328* [Referencia de configuración](/es/claude-apps-gateway-config): cada opción de `gateway.yaml`, incluyendo `managed.policies` y `telemetry`328* [Referencia de configuración](/docs/es/claude-apps-gateway-config): cada opción de `gateway.yaml`, incluyendo `managed.policies` y `telemetry`

329* [Implementación y operaciones](/es/claude-apps-gateway-deploy): configuración de IdP, verificaciones de salud, rotación de secretos JWT, actualizaciones y el modelo de seguridad329* [Implementación y operaciones](/docs/es/claude-apps-gateway-deploy): configuración de IdP, verificaciones de salud, rotación de secretos JWT, actualizaciones y el modelo de seguridad

330* [Descripción general de Claude apps gateway](/es/claude-apps-gateway): inicio rápido y conexión de desarrolladores330* [Descripción general de Claude apps gateway](/docs/es/claude-apps-gateway): inicio rápido y conexión de desarrolladores

Details

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

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

4 4 

5# Usar Claude Code en la web5# Usar Claude Code en la nube

6 6 

7> Mueve sesiones entre web y terminal con `--cloud` y `--teleport`, administra y comparte sesiones, y corrige automáticamente solicitudes de extracción desde la nube.7> Ejecute sesiones de Claude Code en la nube desde su navegador, teléfono, aplicación de escritorio o terminal, muévalas con --cloud y --teleport, y corrija automáticamente solicitudes de extracción.

8 8 

9<Note>9<Note>

10 Claude Code en la web está en vista previa de investigación para usuarios Pro, Max y Team, y para usuarios Enterprise con asientos premium o asientos Chat + Claude Code.10 Las sesiones en la nube están en vista previa de investigación para usuarios Pro, Max y Team, y para usuarios Enterprise con asientos premium o asientos Chat + Claude Code.

11</Note>11</Note>

12 12 

13Claude Code en la web ejecuta tareas en infraestructura en la nube administrada por Anthropic en [claude.ai/code](https://claude.ai/code), o en el [entorno autohospedado](/docs/es/self-hosted-environments) de su organización cuando se enruta allí. Las sesiones persisten incluso si cierra su navegador, y puede monitorearlas desde la aplicación móvil Claude.13Una sesión en la nube es una sesión de Claude Code que se ejecuta en infraestructura en la nube en lugar de en su máquina. De forma predeterminada, se ejecuta en infraestructura que Anthropic administra, o en el [entorno autohospedado](/docs/es/self-hosted-environments) de su organización cuando se enruta allí. La sesión sigue ejecutándose después de cerrar su portátil, y puede verificarla o dirigirla desde cualquier dispositivo.

14 

15Puede iniciar una sesión en la nube desde cualquiera de estas superficies:

16 

17* **Navegador**: [claude.ai/code](https://claude.ai/code), también llamado Claude Code en la web

18* **Móvil**: la pestaña **Code** en la [aplicación Claude](/docs/es/mobile)

19* **Aplicación de escritorio**: seleccione **Cloud** en lugar de **Local** cuando [inicie una sesión](/docs/es/desktop#run-long-running-tasks-in-the-cloud)

20* **Terminal**: [`claude --cloud`](#from-terminal-to-cloud)

21* **Rutinas**: [ejecuciones programadas y activadas](/docs/es/routines) cada una se ejecuta como una sesión en la nube

22 

23Para que Claude inicie y realice un seguimiento de muchas sesiones en la nube para un cuerpo de trabajo, use un [proyecto](/docs/es/claude-projects). Una sesión en su terminal, su IDE o la aplicación de escritorio con **Local** seleccionado se ejecuta en su propia máquina en su lugar. Para dirigir una de esas sesiones locales desde su teléfono o navegador, use [Control remoto](/docs/es/remote-control).

14 24 

15<Tip>25<Tip>

16 ¿Nuevo en Claude Code en la web? Comience con [Primeros pasos](/docs/es/web-quickstart) para conectar su cuenta de GitHub y enviar su primera tarea.26 ¿Nuevo en sesiones en la nube? Comience con [Primeros pasos](/docs/es/web-quickstart) para conectar su cuenta de GitHub y enviar su primera tarea.

17</Tip>27</Tip>

18 28 

19Esta página cubre el producto web en sí:29Esta página cubre:

20 30 

21* [Entornos en la nube](#cloud-environments): dónde se ejecutan las sesiones y dónde configurar eso31* [Entornos en la nube](#cloud-environments): dónde se ejecutan las sesiones y dónde configurar eso

22* [Opciones de autenticación de GitHub](#github-authentication-options): dos formas de conectar GitHub32* [Opciones de autenticación de GitHub](#github-authentication-options): dos formas de conectar GitHub

23* [Mover tareas entre web y terminal](#move-tasks-between-web-and-terminal) con `--cloud` y `--teleport`33* [Mover tareas entre terminal y nube](#move-tasks-between-terminal-and-cloud) con `--cloud` y `--teleport`

24* [Trabajar con sesiones](#work-with-sessions): modos de permisos, revisión, uso compartido, archivo, eliminación34* [Trabajar con sesiones](#work-with-sessions): modos de permisos, revisión, uso compartido, archivo, eliminación

25* [Correcciones automáticas de solicitudes de extracción](#auto-fix-pull-requests): responder automáticamente a fallos de CI y comentarios de revisión35* [Correcciones automáticas de solicitudes de extracción](#auto-fix-pull-requests): responder automáticamente a fallos de CI y comentarios de revisión

26* [Seguridad y aislamiento](#security-and-isolation): cómo se aíslan las sesiones36* [Seguridad y aislamiento](#security-and-isolation): cómo se aíslan las sesiones


32 42 

33Cada sesión en la nube se ejecuta en un [entorno en la nube](/docs/es/cloud-environments), la configuración guardada que controla el acceso a la red, las variables de entorno y los scripts de configuración. Si aún no tiene un entorno, la incorporación configura un entorno **Predeterminado** con [acceso a la red **Confiable**](/docs/es/cloud-environments#access-levels), ya sea creándolo para usted o pidiéndole que lo cree. Consulte [El entorno predeterminado](/docs/es/cloud-environments#the-default-environment) para ver cuál de esos sucede en su plan y cómo las sesiones eligen un entorno cuando tiene más de uno.43Cada sesión en la nube se ejecuta en un [entorno en la nube](/docs/es/cloud-environments), la configuración guardada que controla el acceso a la red, las variables de entorno y los scripts de configuración. Si aún no tiene un entorno, la incorporación configura un entorno **Predeterminado** con [acceso a la red **Confiable**](/docs/es/cloud-environments#access-levels), ya sea creándolo para usted o pidiéndole que lo cree. Consulte [El entorno predeterminado](/docs/es/cloud-environments#the-default-environment) para ver cuál de esos sucede en su plan y cómo las sesiones eligen un entorno cuando tiene más de uno.

34 44 

35Los mismos entornos se aplican dondequiera que inicie una sesión en la nube: la web, la terminal, [Claude Tag](https://claude.com/docs/claude-tag/overview), [rutinas](/docs/es/routines) y las aplicaciones móvil y de escritorio. Las sesiones de canales de Claude Tag utilizan solo entornos a nivel de organización, ya sean [entornos compartidos](/docs/es/cloud-environments#organization-shared-environments) o [entornos autohospedados](/docs/es/self-hosted-environments).45Los mismos entornos se aplican dondequiera que inicie una sesión en la nube: el navegador, la terminal, [Claude Tag](https://claude.com/docs/claude-tag/overview), [rutinas](/docs/es/routines) y las aplicaciones móvil y de escritorio. Las sesiones de canales de Claude Tag utilizan solo entornos a nivel de organización, ya sean [entornos compartidos](/docs/es/cloud-environments#organization-shared-environments) o [entornos autohospedados](/docs/es/self-hosted-environments).

36 46 

37Consulte [Configurar entornos en la nube](/docs/es/cloud-environments) para cambiar lo que permite un entorno, establecer variables o agregar un script de configuración, y [Herramientas instaladas](/docs/es/cloud-environments#installed-tools) para ver qué incluyen las sesiones sin ninguna configuración.47Consulte [Configurar entornos en la nube](/docs/es/cloud-environments) para cambiar lo que permite un entorno, establecer variables o agregar un script de configuración, y [Herramientas instaladas](/docs/es/cloud-environments#installed-tools) para ver qué incluyen las sesiones sin ninguna configuración.

38 48 


49 59 

50Instalar la aplicación Claude GitHub en un repositorio también habilita [Correcciones automáticas](#auto-fix-pull-requests) para solicitudes de extracción en él.60Instalar la aplicación Claude GitHub en un repositorio también habilita [Correcciones automáticas](#auto-fix-pull-requests) para solicitudes de extracción en él.

51 61 

62Los hilos en un [proyecto](/docs/es/claude-projects) necesitan que la aplicación esté instalada en cada repositorio que clonan, independientemente del método con el que se conectó. Consulte [Configurar acceso a GitHub](/docs/es/claude-projects#set-up-github-access).

63 

52Para ver cómo `/schedule` verifica el acceso al repositorio antes de crear una rutina, consulte [Repositorios y permisos de rama](/docs/es/routines#repositories-and-branch-permissions). Consulte [Conectar desde su terminal](/docs/es/web-quickstart#connect-from-your-terminal) para el tutorial de `/web-setup`, incluyendo qué almacena `/web-setup` y cómo eliminarlo.64Para ver cómo `/schedule` verifica el acceso al repositorio antes de crear una rutina, consulte [Repositorios y permisos de rama](/docs/es/routines#repositories-and-branch-permissions). Consulte [Conectar desde su terminal](/docs/es/web-quickstart#connect-from-your-terminal) para el tutorial de `/web-setup`, incluyendo qué almacena `/web-setup` y cómo eliminarlo.

53 65 

54La configuración rápida de web es una configuración de organización que permite a los miembros conectar GitHub con `/web-setup`, omite la solicitud de instalación de la aplicación Claude GitHub durante la incorporación en navegador, y hace que la incorporación en navegador cree el entorno [**Predeterminado**](/docs/es/cloud-environments#the-default-environment) para ellos en lugar de mostrar el formulario de entorno. En planes Team y Enterprise está deshabilitada de forma predeterminada, lo que oculta `/web-setup`. Un [Propietario](/docs/es/server-managed-settings#access-control) la activa con el interruptor **Configuración rápida de web** en [**Configuración de administrador > Claude Code**](https://claude.ai/admin-settings/claude-code).66La configuración rápida de web es una configuración de organización que permite a los miembros conectar GitHub con `/web-setup`, omite la solicitud de instalación de la aplicación Claude GitHub durante la incorporación en navegador, y hace que la incorporación en navegador cree el entorno [**Predeterminado**](/docs/es/cloud-environments#the-default-environment) para ellos en lugar de mostrar el formulario de entorno. En planes Team y Enterprise está deshabilitada de forma predeterminada, lo que oculta `/web-setup`. Un [Propietario](/docs/es/server-managed-settings#access-control) la activa con el interruptor **Configuración rápida de web** en [**Configuración de administrador > Claude Code**](https://claude.ai/admin-settings/claude-code).


57 Las organizaciones con [Retención de datos cero](/docs/es/zero-data-retention) habilitada no pueden usar `/web-setup` u otras características de sesión en la nube.69 Las organizaciones con [Retención de datos cero](/docs/es/zero-data-retention) habilitada no pueden usar `/web-setup` u otras características de sesión en la nube.

58</Note>70</Note>

59 71 

60<h2 id="move-tasks-between-web-and-terminal">72<h2 id="move-tasks-between-terminal-and-cloud">

61 Mover tareas entre web y terminal73 Mover tareas entre terminal y nube

62</h2>74</h2>

63 75 

64Estos flujos de trabajo requieren la [CLI de Claude Code](/docs/es/quickstart) conectada a la misma cuenta de claude.ai. Puede iniciar nuevas sesiones en la nube desde su terminal, o extraer sesiones en la nube en su terminal para continuar localmente. Las sesiones en la nube persisten incluso si cierra su portátil, y puede monitorearlas desde cualquier lugar, incluyendo la aplicación móvil Claude.76Estos flujos de trabajo requieren la [CLI de Claude Code](/docs/es/quickstart) conectada a la misma cuenta de claude.ai. Puede iniciar nuevas sesiones en la nube desde su terminal, o extraer sesiones en la nube en su terminal para continuar localmente. Las sesiones en la nube persisten incluso si cierra su portátil, y puede monitorearlas desde cualquier lugar, incluyendo la aplicación móvil Claude.

65 77 

66<Note>78<Note>

67 Desde la CLI, la transferencia de sesión es unidireccional: puede extraer sesiones en la nube en su terminal con `--teleport`, pero no puede insertar una sesión de terminal existente en la web. La bandera `--cloud` con una descripción de tarea crea una nueva sesión en la nube para su repositorio actual; con `-p` y un ID de sesión o URL de claude.ai/code, en su lugar [pone en cola un mensaje en esa sesión existente](/docs/es/claude-code-on-the-web#send-follow-ups-from-the-cli). La [aplicación de escritorio](/docs/es/desktop#continue-in-another-surface) proporciona un menú Continuar en que puede enviar una sesión local a la web.79 Desde la CLI, la transferencia de sesión es unidireccional: puede extraer sesiones en la nube en su terminal con `--teleport`, pero no puede insertar una sesión de terminal existente en la nube. La bandera `--cloud` con una descripción de tarea crea una nueva sesión en la nube para su repositorio actual; con `-p` y un ID de sesión o URL de claude.ai/code, en su lugar [pone en cola un mensaje en esa sesión existente](/docs/es/claude-code-on-the-web#send-follow-ups-from-the-cli). La [aplicación de escritorio](/docs/es/desktop#continue-in-another-surface) proporciona un menú **Continuar en** que puede enviar una sesión local a la nube.

68</Note>80</Note>

69 81 

70<h3 id="from-terminal-to-web">82<h3 id="from-terminal-to-cloud">

71 De terminal a web83 De terminal a nube

72</h3>84</h3>

73 85 

74Inicie una sesión en la nube desde la línea de comandos con la bandera `--cloud`:86Inicie una sesión en la nube desde la línea de comandos con la bandera `--cloud`:


84Mientras se inicia el contenedor en la nube, la CLI muestra una lista de verificación en vivo de pasos de configuración, como clonar el repositorio y ejecutar su [script de configuración](/docs/es/cloud-environments#setup-scripts). Pone en cola los mensajes que escribe durante el aprovisionamiento y los envía una vez que la sesión está lista.96Mientras se inicia el contenedor en la nube, la CLI muestra una lista de verificación en vivo de pasos de configuración, como clonar el repositorio y ejecutar su [script de configuración](/docs/es/cloud-environments#setup-scripts). Pone en cola los mensajes que escribe durante el aprovisionamiento y los envía una vez que la sesión está lista.

85 97 

86<Note>98<Note>

87 `--cloud` crea sesiones en la nube. `--remote-control` no está relacionado: expone una sesión de CLI local para monitoreo desde la web. Consulte [Control Remoto](/docs/es/remote-control).99 `--cloud` crea sesiones en la nube. `--remote-control` no está relacionado: permite monitorear y dirigir una sesión de CLI local desde claude.ai o la aplicación Claude. Consulte [Remote Control](/docs/es/remote-control).

88</Note>100</Note>

89 101 

90Abra la sesión en claude.ai o la aplicación móvil Claude para verificar el progreso o interactuar directamente. Desde allí puede dirigir Claude, proporcionar retroalimentación o responder preguntas como en cualquier otra conversación.102Abra la sesión en claude.ai o la aplicación móvil Claude para verificar el progreso o interactuar directamente. Desde allí puede dirigir Claude, proporcionar retroalimentación o responder preguntas como en cualquier otra conversación.


95 Consejos para tareas en la nube107 Consejos para tareas en la nube

96</h4>108</h4>

97 109 

98**Planifique localmente, ejecute remotamente**: para tareas complejas, inicie Claude en modo de plan para colaborar en el enfoque, luego envíe el trabajo a la nube:110**Planifique localmente, ejecute en la nube**: para tareas complejas, inicie Claude en modo de plan para colaborar en el enfoque, luego envíe el trabajo a la nube:

99 111 

100```bash theme={null}112```bash theme={null}

101claude --permission-mode plan113claude --permission-mode plan


115claude --cloud "Refactor the logger to use structured output"127claude --cloud "Refactor the logger to use structured output"

116```128```

117 129 

118Cuando una sesión se completa, puede crear una PR desde la interfaz web o [teleportar](#from-web-to-terminal) la sesión a su terminal para continuar trabajando.130Cuando una sesión se completa, puede crear una PR desde claude.ai/code o [teleportar](#from-cloud-to-terminal) la sesión a su terminal para continuar trabajando.

119 131 

120<h4 id="send-local-repositories-without-github">132<h4 id="send-local-repositories-without-github">

121 Envíe repositorios locales sin GitHub133 Envíe repositorios locales sin GitHub


183| `Session not found: <id>` | El ID o URL no coincide con una sesión a la que pueda acceder. Verifíquelo contra la URL de claude.ai/code de la sesión. |195| `Session not found: <id>` | El ID o URL no coincide con una sesión a la que pueda acceder. Verifíquelo contra la URL de claude.ai/code de la sesión. |

184| `cloud session <id> is archived and cannot accept new messages` | La sesión ha sido archivada. Inicie una nueva sesión en su lugar. |196| `cloud session <id> is archived and cannot accept new messages` | La sesión ha sido archivada. Inicie una nueva sesión en su lugar. |

185 197 

186<h3 id="from-web-to-terminal">198<h3 id="from-cloud-to-terminal">

187 De web a terminal199 De nube a terminal

188</h3>200</h3>

189 201 

190Extraiga una sesión en la nube en su terminal usando cualquiera de estos:202Extraiga una sesión en la nube en su terminal usando cualquiera de estos:


192* **Usando `--teleport`**: desde la línea de comandos, ejecute `claude --teleport` para un selector de sesión interactivo, o `claude --teleport <session-id>` para reanudar una sesión específica directamente. Si tiene cambios sin confirmar, se le pedirá que los guarde primero.204* **Usando `--teleport`**: desde la línea de comandos, ejecute `claude --teleport` para un selector de sesión interactivo, o `claude --teleport <session-id>` para reanudar una sesión específica directamente. Si tiene cambios sin confirmar, se le pedirá que los guarde primero.

193* **Usando `/teleport`**: dentro de una sesión de CLI existente, ejecute `/teleport` o `/tp` para abrir el mismo selector de sesión sin reiniciar Claude Code.205* **Usando `/teleport`**: dentro de una sesión de CLI existente, ejecute `/teleport` o `/tp` para abrir el mismo selector de sesión sin reiniciar Claude Code.

194* **Desde `/tasks`**: ejecute `/tasks` para ver sus sesiones de fondo, luego presione `t` para teleportarse a una.206* **Desde `/tasks`**: ejecute `/tasks` para ver sus sesiones de fondo, luego presione `t` para teleportarse a una.

195* **Desde la interfaz web**: seleccione **Abrir en > Terminal** desde el menú de sesión para copiar un comando que puede pegar en su terminal.207* **Desde claude.ai/code**: seleccione **Abrir en > Terminal** desde el menú de sesión para copiar un comando que puede pegar en su terminal.

196* **Desde dentro de la sesión en la nube**: escriba `/teleport` y Claude Code responde con el comando exacto `claude --teleport <session-id>` para esa sesión, listo para ejecutar desde una desprotección del repositorio. Requiere Claude Code v2.1.223 o posterior en el entorno de la sesión.208* **Desde dentro de la sesión en la nube**: escriba `/teleport` y Claude Code responde con el comando exacto `claude --teleport <session-id>` para esa sesión, listo para ejecutar desde una desprotección del repositorio. Requiere Claude Code v2.1.223 o posterior en el entorno de la sesión.

197 209 

198Cuando teleporta una sesión, Claude verifica que esté en el repositorio correcto, obtiene y verifica la rama de la sesión en la nube, y carga el historial de conversación completo en su terminal. La terminal obtiene su propia copia de la sesión: el nuevo trabajo allí permanece local y no aparece en la sesión en la nube en claude.ai o la aplicación móvil Claude. Para continuar dirigiendo desde su teléfono después de teleportar, inicie [`/remote-control`](/docs/es/remote-control) en la sesión local.210Cuando teleporta una sesión, Claude verifica que esté en el repositorio correcto, obtiene y verifica la rama de la sesión en la nube, y carga el historial de conversación completo en su terminal. La terminal obtiene su propia copia de la sesión: el nuevo trabajo allí permanece local y no aparece en la sesión en la nube en claude.ai o la aplicación móvil Claude. Para continuar dirigiendo desde su teléfono después de teleportar, inicie [`/remote-control`](/docs/es/remote-control) en la sesión local.


224 236 

225Las sesiones aparecen en la barra lateral en claude.ai/code. Desde allí puede revisar cambios, compartir con compañeros de equipo, archivar trabajo terminado o eliminar sesiones de forma permanente.237Las sesiones aparecen en la barra lateral en claude.ai/code. Desde allí puede revisar cambios, compartir con compañeros de equipo, archivar trabajo terminado o eliminar sesiones de forma permanente.

226 238 

239<h3 id="take-back-a-queued-message">

240 Recuperar un mensaje en cola

241</h3>

242 

243Si envía un mensaje mientras Claude está trabajando, el mensaje se pone en cola hasta que Claude lo lee. Para recuperar un mensaje en cola, haga clic en la ✕ que aparece en él. El texto vuelve al cuadro de mensaje para que pueda editarlo o enviar algo más.

244 

245Si Claude ya ha leído el mensaje, permanece en la conversación.

246 

227<h3 id="manage-context">247<h3 id="manage-context">

228 Gestionar contexto248 Gestionar contexto

229</h3>249</h3>

230 250 

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

232 252 

233* **`/model`, `/effort`, `/fast`, `/color` y `/rename`**: pase el valor como argumento, por ejemplo `/model sonnet`, en lugar de abrir el selector de terminal o el control deslizante. Los formularios de argumento requieren Claude Code v2.1.205 o posterior en el entorno de la sesión y siguen las [notas de disponibilidad](/docs/es/commands#all-commands) de cada comando: `/effort` reporta `Not applied` mientras que el [lanzamiento de nivel de esfuerzo predeterminado](/docs/es/model-config#adjust-effort-level) de un modelo está en vigor, y `/fast` funciona solo en una sesión que comenzó con el modo rápido activado.253* **`/model`, `/effort`, `/color` y `/rename`**: pase el valor como argumento, por ejemplo `/model sonnet`, en lugar de abrir el selector de terminal o el control deslizante. Los formularios de argumento requieren Claude Code v2.1.205 o posterior en el entorno de la sesión y siguen las [notas de disponibilidad](/docs/es/commands#all-commands) de cada comando: `/effort` reporta `Not applied` mientras que el [lanzamiento de nivel de esfuerzo predeterminado](/docs/es/model-config#adjust-effort-level) de un modelo está en vigor.

234* **`/config`**: en la web, abre la sección Claude Code de su configuración en lugar de establecer un valor, y el texto después del comando, incluido `key=value`, se ignora. Para cambiar la configuración de una sesión en la nube, use [variables de entorno](/docs/es/cloud-environments#set-environment-variables) o confirme [archivos de configuración](/docs/es/settings) en el repositorio.254* **`/fast`**: alterna el [modo rápido](/docs/es/fast-mode#use-fast-mode-in-cloud-sessions) para la sesión cuando el modo rápido está [disponible en su cuenta](/docs/es/fast-mode#requirements). Requiere Claude Code v2.1.271 o posterior en el entorno de la sesión.

255* **`/config`**: en su navegador en claude.ai/code, abre la sección Claude Code de su configuración en lugar de establecer un valor, y el texto después del comando, incluido `key=value`, se ignora. Para cambiar una configuración de una sesión en la nube, establezca una [variable de entorno](/docs/es/cloud-environments#set-environment-variables) en el entorno, o en una sesión con un repositorio, confirme la clave en el archivo `.claude/settings.json` de ese repositorio. [Configuración en sesiones en la nube](/docs/es/settings#settings-in-cloud-sessions) enumera lo que cada sesión lee.

235 256 

236Para la gestión de contexto específicamente:257Para la gestión de contexto específicamente:

237 258 


241| `/context` | Sí | Muestra lo que está actualmente en la ventana de contexto |262| `/context` | Sí | Muestra lo que está actualmente en la ventana de contexto |

242| `/clear` | No | Inicie una nueva sesión desde la barra lateral en su lugar |263| `/clear` | No | Inicie una nueva sesión desde la barra lateral en su lugar |

243 264 

244La compactación automática se ejecuta automáticamente cuando la ventana de contexto se aproxima a la capacidad. Claude Code en la web establece [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/es/env-vars) en sesiones en la nube por sí mismo, por lo que la compactación se activa a mitad de la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) en lugar de cuando la ventana se llena. Ese valor anula uno que agregue en sus [variables de entorno](/docs/es/cloud-environments#set-environment-variables), por lo que agregar la variable allí no cambia cuándo se activa la compactación.265La compactación automática se ejecuta automáticamente cuando la ventana de contexto se aproxima a la capacidad. Las sesiones en la nube establecen [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/es/env-vars) por sí mismas, por lo que la compactación se activa a mitad de la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) en lugar de cuando la ventana se llena. Ese valor anula uno que agregue en sus [variables de entorno](/docs/es/cloud-environments#set-environment-variables), por lo que agregar la variable allí no cambia cuándo se activa la compactación.

245 266 

246Para cambiar la ventana de compactación automática en su lugar, establezca [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/es/env-vars) en sus variables de entorno, o ejecute [`/autocompact`](/docs/es/commands#all-commands) con un recuento de tokens en una sesión donde la variable no está establecida.267Para cambiar la ventana de compactación automática en su lugar, establezca [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/es/env-vars) en sus variables de entorno, o ejecute [`/autocompact`](/docs/es/commands#all-commands) con un recuento de tokens en una sesión donde la variable no está establecida.

247 268 


320 341 

321Hay algunas formas de activar correcciones automáticas dependiendo de dónde provenga la PR y qué dispositivo esté usando:342Hay algunas formas de activar correcciones automáticas dependiendo de dónde provenga la PR y qué dispositivo esté usando:

322 343 

323* **PRs creadas en Claude Code en la web**: abra la barra de estado de CI y seleccione **Correcciones automáticas**344* **PRs creadas en una sesión en la nube**: abra la sesión en claude.ai/code, abra la barra de estado de CI y seleccione **Correcciones automáticas**

324* **Desde su terminal**: ejecute [`/autofix-pr`](/docs/es/commands) mientras está en la rama de la PR. Claude Code detecta la PR abierta con `gh`, genera una sesión web y activa correcciones automáticas en un paso345* **Desde su terminal**: ejecute [`/autofix-pr`](/docs/es/commands) mientras está en la rama de la PR. Claude Code detecta la PR abierta con `gh`, genera una sesión en la nube y activa correcciones automáticas en un paso

325* **Desde la aplicación móvil**: dígale a Claude que corrija automáticamente la PR, por ejemplo "observa esta PR y corrige cualquier fallo de CI o comentario de revisión"346* **Desde la aplicación móvil**: dígale a Claude que corrija automáticamente la PR, por ejemplo "observa esta PR y corrige cualquier fallo de CI o comentario de revisión"

326* **Cualquier PR existente**: pegue la URL de la PR en una sesión y dígale a Claude que la corrija automáticamente347* **Cualquier PR existente**: pegue la URL de la PR en una sesión y dígale a Claude que la corrija automáticamente

327 348 

328Las correcciones automáticas son un control por PR. Para dejar de monitorear, abra la barra de estado de CI en la sesión web y desactive el control **Correcciones automáticas**, o dígale a Claude que deje de observar la PR.349Las correcciones automáticas son un control por PR. Para dejar de monitorear, abra la barra de estado de CI en la sesión en claude.ai/code y desactive el control **Correcciones automáticas**, o dígale a Claude que deje de observar la PR.

329 350 

330<h3 id="how-claude-responds-to-pr-activity">351<h3 id="how-claude-responds-to-pr-activity">

331 Cómo Claude responde a la actividad de PR352 Cómo Claude responde a la actividad de PR


395 Entorno expirado416 Entorno expirado

396</h3>417</h3>

397 418 

398Las sesiones en la nube se detienen después de un período de inactividad y la VM de la sesión se reclama. Una sesión cuenta como inactiva mientras espera que apruebe una llamada de herramienta de [conector MCP](/docs/es/cloud-environments#network-access) o para iniciar sesión en un servidor MCP, y puede expirar durante esa espera. En la web, la sesión está marcada como expirada en la lista de sesiones.419Las sesiones en la nube se detienen después de un período de inactividad y la VM de la sesión se reclama. Una sesión cuenta como inactiva mientras espera que apruebe una llamada de herramienta de [conector MCP](/docs/es/cloud-environments#network-access) o para iniciar sesión en un servidor MCP, y puede expirar durante esa espera.

399 420 

400Reabra la sesión desde [claude.ai/code](https://claude.ai/code) para aprovisionar una VM nueva con su historial de conversación restaurado. El trabajo de fondo que aún se estaba ejecutando cuando se reclamó la VM, como subagentes y comandos de shell, no se restaura.421Reabra la sesión desde [claude.ai/code](https://claude.ai/code) para aprovisionar una VM nueva con su historial de conversación restaurado. El trabajo de fondo que aún se estaba ejecutando cuando se reclamó la VM, como subagentes y comandos de shell, no se restaura.

401 422 


405 426 

406Antes de confiar en sesiones en la nube para un flujo de trabajo, tenga en cuenta estas restricciones:427Antes de confiar en sesiones en la nube para un flujo de trabajo, tenga en cuenta estas restricciones:

407 428 

408* **Límites de velocidad**: Claude Code en la web comparte límites de velocidad con todo otro uso de Claude y Claude Code dentro de su cuenta. Ejecutar múltiples tareas en paralelo consume más límites de velocidad proporcionalmente. No hay cargo de computación separado para la VM en la nube.429* **Límites de velocidad**: las sesiones en la nube comparten límites de velocidad con todo otro uso de Claude y Claude Code dentro de su cuenta. Ejecutar múltiples tareas en paralelo consume más límites de velocidad proporcionalmente. No hay cargo de computación separado para la VM en la nube.

409* **Autenticación de repositorio**: solo puede mover sesiones de web a local cuando está autenticado en la misma cuenta430* **Autenticación de repositorio**: solo puede extraer una sesión en la nube a su terminal cuando está autenticado en la misma cuenta

410* **Restricciones de plataforma**: la clonación de repositorio y la creación de solicitudes de extracción requieren GitHub. Las instancias autohospedadas de [GitHub Enterprise Server](/docs/es/github-enterprise-server) son compatibles con planes de Team y Enterprise. Puede enviar un repositorio de GitLab, Bitbucket u otro que no sea GitHub a una sesión en la nube como un [paquete local](#send-local-repositories-without-github) estableciendo `CCR_FORCE_BUNDLE=1`, pero la sesión no puede insertar resultados de vuelta a ese remoto431* **Restricciones de plataforma**: la clonación de repositorio y la creación de solicitudes de extracción requieren GitHub. Las instancias autohospedadas de [GitHub Enterprise Server](/docs/es/github-enterprise-server) son compatibles con planes de Team y Enterprise. Puede enviar un repositorio de GitLab, Bitbucket u otro que no sea GitHub a una sesión en la nube como un [paquete local](#send-local-repositories-without-github) estableciendo `CCR_FORCE_BUNDLE=1`, pero la sesión no puede insertar resultados de vuelta a ese remoto

411* **Lista de permitidos de IP de la organización**: las sesiones en la nube llaman a la API de Anthropic desde infraestructura administrada por Anthropic, no desde su red, mientras que las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) la llaman desde su propia red. Si su organización tiene [lista de permitidos de IP](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) habilitada, cada sesión en la nube alojada por Anthropic falla con un error de autenticación. Lo mismo se aplica a [Revisión de código](/docs/es/code-review) y a [Rutinas](/docs/es/routines) que se ejecutan en entornos alojados por Anthropic; una rutina enrutada a un entorno autohospedado llama a la API desde su propia red. Contacte al [soporte de Anthropic](https://support.claude.com/) para eximir los servicios alojados por Anthropic de la lista de permitidos de IP de su organización.432* **Lista de permitidos de IP de la organización**: las sesiones en la nube llaman a la API de Anthropic desde infraestructura administrada por Anthropic, no desde su red, mientras que las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) la llaman desde su propia red. Si su organización tiene [lista de permitidos de IP](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) habilitada, cada sesión en la nube alojada por Anthropic falla con un error de autenticación. Lo mismo se aplica a [Revisión de código](/docs/es/code-review) y a [Rutinas](/docs/es/routines) que se ejecutan en entornos alojados por Anthropic; una rutina enrutada a un entorno autohospedado llama a la API desde su propia red. Contacte al [soporte de Anthropic](https://support.claude.com/) para eximir los servicios alojados por Anthropic de la lista de permitidos de IP de su organización.

412 433 


415</h2>436</h2>

416 437 

417* [Entornos en la nube](/docs/es/cloud-environments): configure el acceso a la red, las variables de entorno y los scripts de configuración para sesiones en la nube438* [Entornos en la nube](/docs/es/cloud-environments): configure el acceso a la red, las variables de entorno y los scripts de configuración para sesiones en la nube

439* [Proyectos](/docs/es/claude-projects): una conversación donde Claude coordina sesiones en la nube paralelas en sus repositorios e informa los resultados

418* [Ultrareview](/docs/es/ultrareview): ejecute una revisión de código profunda de múltiples agentes en un sandbox en la nube440* [Ultrareview](/docs/es/ultrareview): ejecute una revisión de código profunda de múltiples agentes en un sandbox en la nube

419* [Rutinas](/docs/es/routines): automatice el trabajo en un cronograma, a través de llamada de API o en respuesta a eventos de GitHub441* [Rutinas](/docs/es/routines): automatice el trabajo en un cronograma, a través de llamada de API o en respuesta a eventos de GitHub

420* [Configuración de hooks](/docs/es/hooks): ejecute scripts en eventos del ciclo de vida de la sesión442* [Configuración de hooks](/docs/es/hooks): ejecute scripts en eventos del ciclo de vida de la sesión

421* [Toda la configuración](/docs/es/settings-reference): todas las opciones de configuración443* [Toda la configuración](/docs/es/settings-reference): todas las opciones de configuración

422* [Seguridad](/docs/es/security): garantías de aislamiento y manejo de datos444* [Seguridad](/docs/es/security): garantías de aislamiento y manejo de datos

423* [Uso de datos](/docs/es/data-usage): qué retiene Anthropic de sesiones en la nube445* [Uso de datos](/docs/es/data-usage): qué retiene Anthropic de sesiones en la nube

424* [Claude Tag](https://claude.com/docs/claude-tag/overview): una @Claude administrada por la organización en Slack que se ejecuta en el mismo entorno en la nube446* [Claude Tag](https://claude.com/docs/claude-tag/overview): una @Claude administrada por la organización en Slack que se ejecuta en la misma infraestructura en la nube

Details

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

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

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

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

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

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

40 40 


640 color: '#5AA7A7',640 color: '#5AA7A7',

641 oneLiner: 'Custom instruction sets that adjust how Claude works',641 oneLiner: 'Custom instruction sets that adjust how Claude works',

642 when: 'Files read at startup; the style you select with outputStyle applies to every response',642 when: 'Files read at startup; the style you select with outputStyle applies to every response',

643 description: [<>Each markdown file defines an output style: a set of instructions for Claude that, by default, also replaces the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],643 description: [<>Each markdown file defines an output style: a set of instructions for Claude that, by default, also replaces the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/output-style</C>, <C>/config</C>, or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

644 tips: ['Built-in styles Default, Proactive, Concise, Explanatory, and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Switching styles mid-session applies from your next message; in the terminal, a style file you create or edit mid-session is picked up after a restart'],644 tips: ['Built-in styles Default, Proactive, Concise, Explanatory, and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Switching styles mid-session applies from your next message; in the terminal, a style file you create or edit mid-session is picked up after a restart'],

645 docsLink: '/en/output-styles',645 docsLink: '/en/output-styles',

646 children: [{646 children: [{


1434 1434 

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

1436 1436 

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

1438 1438 

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

1440 Explorar el directorio1440 Explorar el directorio


1451El explorador cubre archivos que usted crea y edita. Algunos archivos relacionados viven en otros lugares:1451El explorador cubre archivos que usted crea y edita. Algunos archivos relacionados viven en otros lugares:

1452 1452 

1453| Archivo | Ubicación | Propósito |1453| Archivo | Ubicación | Propósito |

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

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

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

1457| Plugins instalados | `~/.claude/plugins` | Mercados clonados, versiones de plugins instaladas y datos por plugin, administrados por comandos `claude plugin`. Para un plugin instalado desde un marketplace con [fuente `command`](/docs/es/plugin-marketplaces#command-sources) en modo de enlace, Claude Code almacena enlaces aquí en lugar de una copia, y los archivos del plugin permanecen en el directorio que imprime el comando. Una fuente `command` requiere Claude Code v2.1.229 o posterior. Consulte [almacenamiento en caché de plugins](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para saber cómo se limpian las versiones huérfanas. |1457| `AGENTS.md` | Raíz del proyecto, `.claude/`, o cualquier directorio | Instrucciones del proyecto que usted escribe para agentes de codificación de IA. Claude Code puede [cargarlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. |

1458| Plugins instalados | `~/.claude/plugins` | Mercados clonados, versiones de plugins instaladas y datos por plugin, administrados por comandos `claude plugin`. Para un plugin instalado desde un marketplace con [fuente `command`](/docs/es/plugin-marketplaces#command-sources) en modo de enlace, Claude Code almacena enlaces aquí en lugar de una copia, y los archivos del plugin permanecen en el directorio que imprime el comando. Una fuente `command` requiere Claude Code v2.1.229 o posterior. Un plugin listado por ruta relativa en un marketplace de directorio local también [se carga en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde su directorio de origen en lugar de desde una copia en caché. Consulte [almacenamiento en caché de plugins](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para saber cómo se limpian las versiones huérfanas. |

1458 1459 

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

1460 1461 


1551| `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 |1552| `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 |

1552| `feedback/drafts/` | [Comentarios redactados por Claude](/docs/es/tools-reference#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. |1553| `feedback/drafts/` | [Comentarios redactados por Claude](/docs/es/tools-reference#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. |

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

1555| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins-reference#synced-plugins) sincronizados desde claude.ai que Claude Code eliminó. Se mueven aquí en lugar de eliminarse para que pueda recuperar los archivos |

1554| `todos/`, `statsig/`, `logs/` | Directorios heredados de versiones anteriores. Ya no se escriben. El barrido elimina su contenido y luego el directorio vacío. |1556| `todos/`, `statsig/`, `logs/` | Directorios heredados de versiones anteriores. Ya no se escriben. El barrido elimina su contenido y luego el directorio vacío. |

1555 1557 

1556Los archivos de sesión en `sessions/`, memoria automática, y transcripciones de Claude Desktop y Cowork cada uno sigue su propia regla de retención:1558Los archivos de sesión en `sessions/`, memoria automática, y transcripciones de Claude Desktop y Cowork cada uno sigue su propia regla de retención:


1576| `stats-cache.json` | Conteos de tokens y costos agregados mostrados por `/usage` |1578| `stats-cache.json` | Conteos de tokens y costos agregados mostrados por `/usage` |

1577| `remote-settings.json` | Copia en caché de [configuración administrada por servidor](/docs/es/server-managed-settings) para su organización, o `{}` cuando su organización no ha configurado ninguna. Solo presente cuando la sesión [las obtiene](/docs/es/server-managed-settings#platform-availability). Claude Code verifica actualizaciones al inicio y cada hora durante una sesión. Claude Code lo elimina cuando cierra sesión. |1579| `remote-settings.json` | Copia en caché de [configuración administrada por servidor](/docs/es/server-managed-settings) para su organización, o `{}` cuando su organización no ha configurado ninguna. Solo presente cuando la sesión [las obtiene](/docs/es/server-managed-settings#platform-availability). Claude Code verifica actualizaciones al inicio y cada hora durante una sesión. Claude Code lo elimina cuando cierra sesión. |

1578| `cache/changelog.md` | Copia en caché del registro de cambios de Claude Code, mostrada por `/release-notes`. Se actualiza en segundo plano. |1580| `cache/changelog.md` | Copia en caché del registro de cambios de Claude Code, mostrada por `/release-notes`. Se actualiza en segundo plano. |

1579| `policy-limits.json` | Configuración de política de características en caché para su organización. Solo presente para algunos tipos de cuenta. Se actualiza automáticamente. Claude Code lo elimina cuando cierra sesión. |1581| `policy-limits.json` | Configuración de política de características en caché para su organización. Solo presente para algunos tipos de cuenta. Se actualiza automáticamente. Un archivo sidecar `policy-limits.json.stamp.json` registra a qué cuenta o clave API pertenece el caché. Claude Code elimina ambos archivos cuando cierra sesión. |

1580 1582 

1581<span id="state-files-to-keep" />1583<span id="state-files-to-keep" />

1582 1584 


1658También puede eliminar cualquiera de las rutas de datos de aplicación anteriores manualmente, aparte de los [archivos de estado a mantener](#state-files-to-keep). Las nuevas sesiones no se ven afectadas. La tabla a continuación muestra qué pierde para sesiones pasadas.1660También puede eliminar cualquiera de las rutas de datos de aplicación anteriores manualmente, aparte de los [archivos de estado a mantener](#state-files-to-keep). Las nuevas sesiones no se ven afectadas. La tabla a continuación muestra qué pierde para sesiones pasadas.

1659 1661 

1660| Eliminar | Pierde |1662| Eliminar | Pierde |

1661| ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |1663| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1662| `~/.claude/projects/` | Reanudar, continuar y rebobinar para sesiones pasadas, y memoria automática para cada proyecto |1664| `~/.claude/projects/` | Reanudar, continuar y rebobinar para sesiones pasadas, y memoria automática para cada proyecto |

1663| `~/.claude/history.jsonl` | Recuperación de prompt de flecha hacia arriba, búsqueda de historial `Ctrl+R` y finalización de comando shell `!` |1665| `~/.claude/history.jsonl` | Recuperación de prompt de flecha hacia arriba, búsqueda de historial `Ctrl+R` y finalización de comando shell `!` |

1664| `~/.claude/paste-cache/` | Texto pegado en prompts recordados; vea [pegar contenido grande](/docs/es/terminal-config#paste-large-content) |1666| `~/.claude/paste-cache/` | Texto pegado en prompts recordados; vea [pegar contenido grande](/docs/es/terminal-config#paste-large-content) |


1672| `~/.claude/cache/changelog.md` | Nada. Se actualiza en segundo plano. |1674| `~/.claude/cache/changelog.md` | Nada. Se actualiza en segundo plano. |

1673| `~/.claude/policy-limits.json` | Nada. Se actualiza automáticamente. |1675| `~/.claude/policy-limits.json` | Nada. Se actualiza automáticamente. |

1674| `~/.claude/tasks/` | Listas de tareas que una sesión reanudada recogería |1676| `~/.claude/tasks/` | Listas de tareas que una sesión reanudada recogería |

1677| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La oportunidad de recuperar [skills sincronizados](/docs/es/skills#how-synced-skills-behave) y [plugins sincronizados](/docs/es/plugins-reference#synced-plugins) que Claude Code eliminó |

1675| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nada orientado al usuario |1678| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nada orientado al usuario |

1676| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/` | Nada. Directorios heredados no escritos por versiones actuales. |1679| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/` | Nada. Directorios heredados no escritos por versiones actuales. |

1677 1680 

claude-projects.md +538 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Deje que Claude coordine el trabajo en curso con Projects

6 

7> Proporcione a Claude un conjunto de trabajo relacionado en una conversación y deje que coordine sesiones en la nube paralelas que compartan repositorios, instrucciones y memoria.

8 

9<Note>

10 Projects está en versión beta pública en los planes Pro y Max y se está implementando gradualmente, comenzando con cuentas que han utilizado [sesiones en la nube](/docs/es/claude-code-on-the-web) y no tienen proyectos existentes en el chat de claude.ai o en Cowork. Aún no está disponible en los planes Team o Enterprise. Si **Projects** no aparece en la barra lateral en [claude.ai/code](https://claude.ai/code) o en la pestaña Code de la [aplicación de escritorio](/docs/es/desktop), el despliegue aún no ha llegado a su cuenta, y puede [unirse a la lista de espera](https://claude.com/form/projects). [Ejecutar agentes en paralelo](/docs/es/agents) enumera lo que puede usar mientras tanto.

11</Note>

12 

13Un proyecto es una conversación en curso donde Claude coordina un flujo de trabajo relacionado para usted. Usted le dice qué necesita hacerse y comienza un hilo para cada tarea. Cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web): Claude Code ejecutándose en la nube en lugar de en su máquina. Los hilos se ejecutan en paralelo y continúan después de cerrar la computadora portátil, y puede verificarlos y dirigirlos desde su teléfono.

14 

15Sin un proyecto, ejecutar varias sesiones significa hacer la coordinación usted mismo: decide en qué trabaja cada una, repite el mismo contexto al inicio de cada una, y verifica cuál terminó o necesita una respuesta. Con un proyecto, en su lugar:

16 

17* **Envíe trabajo a un solo lugar**: pegue un informe de error, un seguimiento de pila o una lista de tareas en la conversación cada vez que surja uno. Claude comienza un hilo para cada pieza de trabajo o lo pasa al hilo que ya está trabajando en esa área, y responde preguntas rápidas en su lugar.

18* **Establezca el contexto una sola vez**: cada nuevo hilo comienza con los repositorios, instrucciones y memoria del proyecto, por lo que una regla que establezca una sola vez, como qué rama dirigirse, llega a todos ellos.

19* **Aléjese y regrese al trabajo terminado**: cuando regrese una hora después o a la mañana siguiente, el panel **Overview** muestra qué hilos terminaron, qué solicitudes de extracción están listas para revisión y qué hilo está esperando su respuesta.

20 

21Si ya sabe el trabajo que desea que un proyecto ejecute, vaya directamente a [Crear un proyecto](#create-a-project).

22 

23<h2 id="when-to-use-a-project">

24 Cuándo usar un proyecto

25</h2>

26 

27Vale la pena crear un proyecto cuando el trabajo tiene un objetivo que perdura más allá de una sesión y sigue produciendo tareas. Estos tipos de trabajo se adaptan bien a un proyecto:

28 

29* **Un objetivo en muchos repositorios**: "Llevar cada servicio a la nueva configuración de lint." Claude puede ejecutar un hilo por repositorio, cada uno con su propia solicitud de extracción, y el panel [**Overview**](#see-what-needs-you-in-overview) muestra cuáles están listas para revisión.

30* **Un área que sigues alimentando**: los errores, seguimientos de pila y solicitudes de revisión para un servicio, pegados en la conversación a medida que te llegan. Una trampa que le dices a Claude que recuerde después de una corrección está en [memoria del proyecto](#give-a-project-standing-context) para la siguiente.

31* **Una compilación o migración más grande que una sesión**: "Construir lo que describe `docs/spec.md`" o "Mover la aplicación del ORM obsoleto." El trabajo se divide en hilos que cada uno toma una parte, las decisiones que le pides a Claude que recuerde al principio llegan a los hilos posteriores, y la especificación cambia y los errores que encuentras durante la compilación van a la misma conversación.

32* **Trabajo que no es código**: una carpeta de contratos o una exportación de tickets de soporte a la que sigues regresando con nuevas preguntas, como "encontrar los diez errores de integración más comunes en estos tickets." Carga los documentos en lugar de agregar un repositorio, y los hilos entregan cada informe como un archivo en la pestaña [**Library**](#see-what-needs-you-in-overview) del proyecto.

33 

34En cualquiera de ellos puedes enviar un lote de tareas, decirle a Claude que comience sin pedirte que confirmes, alejarte, y encontrar los hilos que te necesitan bajo [**Waiting on you**](#see-what-needs-you-in-overview) cuando regreses, o pedirle a Claude que ponga parte del trabajo en un horario como una [rutina](/docs/es/routines). Si esta es tu situación, [crea un proyecto](#create-a-project).

35 

36<h3 id="when-something-else-fits-better">

37 Cuándo algo más se adapta mejor

38</h3>

39 

40Los hilos funcionan en repositorios de GitHub y en los archivos, carpetas y carpetas de Google Drive que cargues en el proyecto, no en archivos o herramientas que existan solo en tu máquina. Algo más se adapta mejor en estos casos:

41 

42* **Una tarea que cabe en una sesión**: "Arreglar la prueba de inicio de sesión inestable." Comienza una [sesión en la nube](/docs/es/claude-code-on-the-web) tú mismo.

43* **Trabajo que necesita herramientas o servicios que solo tu máquina puede alcanzar**: una base de datos local, un emulador de dispositivo, una API detrás de tu VPN. Usa una sesión local, o [vista de agente](/docs/es/agent-view) para ejecutar varias a la vez. Si el trabajo solo necesita archivos locales, cárgalos en el proyecto en su lugar.

44* **Una tarea que se repite en un horario sin conversación alrededor**: "Publicar un informe de dependencias cada lunes." Crea una [rutina](/docs/es/routines) por su cuenta.

45* **Varias personas dándole trabajo a Claude y dirigiéndolo juntos en un canal de Slack**: ver [Claude Tag](https://claude.com/docs/claude-tag/overview).

46 

47Un proyecto utiliza los mismos límites de plan que tus otras sesiones de Claude Code y los utiliza más rápido. [Uso y costo](#usage-and-cost) cubre qué utiliza tu plan y cómo mantenerlo bajo.

48 

49<h2 id="how-a-project-is-organized">

50 Cómo se organiza un proyecto

51</h2>

52 

53Un proyecto es una conversación coordinadora con Claude más los hilos que comienza para hacer el trabajo. Estas son sus partes:

54 

55* **La conversación del proyecto**: una sesión de larga duración donde Claude actúa como coordinador. Toma lo que envías, decide qué se convierte en un hilo, y mantiene un registro de cada hilo que comenzó. Ve lo que los hilos reportan, no cada paso que toman.

56* **Hilos**: los trabajadores. Cada uno es una [sesión en la nube](/docs/es/claude-code-on-the-web) separada con su propia ventana de contexto que hace una pieza de trabajo en su propia rama, abre una solicitud de extracción cuando el trabajo lo requiere, e informa a la conversación cuando termina.

57* **Lo que cada hilo comienza con**:

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

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

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

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

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

63 

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

65 

66Así es como esas partes se conectan, desde ti a través de la conversación hasta los hilos haciendo el trabajo, con **Overview** rastreando su estado:

67 

68<Frame>

69 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagrama de un proyecto. Escribes en la conversación del proyecto, donde Claude responde o comienza un hilo. Cada hilo es una sesión en la nube trabajando en su propia rama y solicitud de extracción. El panel Overview enumera hilos por estado, como listo para revisión, esperando por ti, y trabajando." width="600" height="250" data-path="images/claude-projects-overview.svg" />

70 

71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagrama de un proyecto. Escribes en la conversación del proyecto, donde Claude responde o comienza un hilo. Cada hilo es una sesión en la nube trabajando en su propia rama y solicitud de extracción. El panel Overview enumera hilos por estado, como listo para revisión, esperando por ti, y trabajando." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />

72</Frame>

73 

74<h2 id="create-a-project">

75 Crear un proyecto

76</h2>

77 

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

79 

80* **Desde cero**, cuando sabes el flujo de trabajo que deseas que ejecute Claude: abre el diálogo **New project** y nómbralo. [Comienza un nuevo proyecto desde cero](#start-a-new-project-from-scratch) te guía a través del diálogo.

81* **Desde una sesión en la nube que ya está haciendo el trabajo**: elige **Continue as a project** del menú de esa sesión, y Claude propone la configuración del proyecto a partir de lo que la sesión estaba haciendo. Ver [Comenzar desde una sesión en la nube existente](#start-from-an-existing-cloud-session).

82 

83De cualquier forma, [verifica los requisitos previos](#check-the-prerequisites) primero.

84 

85<h3 id="check-the-prerequisites">

86 Verifica los requisitos previos

87</h3>

88 

89Antes de crear un proyecto, verifica tu plan, tu configuración de GitHub, y a qué necesita llegar el trabajo:

90 

91* **Plan**: estás en Pro o Max y **Projects** aparece en tu barra lateral.

92* **GitHub, si el proyecto trabajará en código**: tu código está en github.com en lugar de GitHub Enterprise Server, GitLab o Bitbucket, tu cuenta de GitHub conectada tiene acceso de inserción a él, y la Claude GitHub App está instalada en él. Si conectaste GitHub con [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal), ese token permite que tus otras sesiones en la nube accedan a un repositorio pero no es suficiente para hilos de proyecto, que necesitan la Claude GitHub App. [Configurar acceso a GitHub](#set-up-github-access) tiene los pasos.

93* **Red, credenciales y herramientas**: estos provienen del [entorno en la nube](#choose-an-environment-for-threads) del proyecto. El entorno predeterminado ya alcanza [registros de paquetes comunes](/docs/es/cloud-environments#default-allowed-domains), así que verifica esto solo si el trabajo necesita otros dominios, un secreto, o una herramienta que no esté preinstalada. Si el trabajo necesita un servidor MCP, verifica que aparezca como conectado en tus [conectores de claude.ai](https://claude.ai/customize/connectors).

94 

95<h3 id="start-a-new-project-from-scratch">

96 Comienza un nuevo proyecto desde cero

97</h3>

98 

99Comenzar un proyecto desde cero significa abrir el diálogo **New project**, nombrar el flujo de trabajo, y opcionalmente darle un objetivo y los repositorios y archivos en los que trabaja. Solo el nombre es requerido, así que puedes crear el proyecto primero y llenar el resto a medida que el trabajo toma forma.

100 

101<Steps>

102 <Step title="Abre Projects">

103 En [claude.ai/code](https://claude.ai/code) o en la pestaña Code de la aplicación de escritorio, selecciona **Projects** en la barra lateral izquierda, luego selecciona **New project**. En un navegador también puedes ir directamente a [claude.ai/code/projects/browse](https://claude.ai/code/projects/browse).

104 </Step>

105 

106 <Step title="Completa el diálogo New project">

107 Limita el proyecto a un flujo de trabajo que seguirás agregando, como todo lo que se necesita para mantener una API bajo su objetivo de latencia. [Cuándo usar un proyecto](#when-to-use-a-project) tiene más ejemplos. Luego completa los campos del diálogo:

108 

109 * **Name**: cómo aparece el proyecto en la lista **Projects**.

110 * **Goal** (opcional): una línea de lo que estás tratando de lograr, como "Mantener la latencia p95 de la API por debajo de 200 ms". Claude en la conversación trabaja hacia él. Sin un objetivo, Claude trabaja a partir de las tareas que envías, y puedes agregar un objetivo más tarde en **Project settings > General**.

111 * **Context** (opcional): los repositorios de GitHub en los que trabaja este proyecto, más cualquier archivo, carpeta o carpeta de Google Drive que los hilos deban leer. Haz clic en **Add** para cada uno. Agrega los repositorios que la mayoría de las tareas necesitan en lugar de cada uno que el trabajo podría tocar; [Decide qué repositorios agregar](#decide-which-repositories-to-add) cubre la elección, y puedes agregar más tarde en **Project settings > Environment**.

112 

113 Las reglas permanentes sobre cómo deben trabajar los hilos van en [instrucciones del proyecto](#give-a-project-standing-context), que estableces después de que el proyecto exista.

114 </Step>

115 

116 <Step title="Crea el proyecto">

117 Haz clic en **Create project**. La conversación del proyecto se abre con un cuadro de mensaje en la parte inferior, donde describes trabajo para Claude.

118 

119 En tu primer proyecto, Claude toma un turno por su cuenta tan pronto como se crea el proyecto, a menos que envíes un mensaje primero. Ese turno utiliza tu plan. En él, Claude puede:

120 

121 * Comenzar un hilo que explora el repositorio sin cambiar nada y propone los próximos pasos, si el proyecto tiene un repositorio que puede leer.

122 * Publicar **Setup recommendations** extraídas de tus sesiones en la nube recientes: repositorios para agregar, rutinas para crear, e hilos que podría comenzar. Cada repositorio y rutina recomendados comienzan activados. Desactiva los que no deseas, luego haz clic en **Update setup** para agregar el resto, o ignora las recomendaciones y describe el trabajo tú mismo.

123 </Step>

124</Steps>

125 

126El proyecto ahora está listado bajo **Projects** en la barra lateral, y su conversación está abierta. [Tu primer lote](#your-first-batch) cubre qué configurar antes de enviarle trabajo.

127 

128<h3 id="start-from-an-existing-cloud-session">

129 Comienza desde una sesión en la nube existente

130</h3>

131 

132Si ya tienes una sesión en la nube haciendo trabajo que pertenece a un proyecto, abre el menú de la sesión en la barra lateral y elige **Continue as a project** o **Move to project**:

133 

134* **Continue as a project** crea un nuevo proyecto nombrado después de la sesión y lo abre. Claude lee la sesión y publica **Setup recommendations** en la conversación para que confirmes. La sesión original permanece en tu lista de sesiones, y si estaba en medio de un turno sigue ejecutándose, así que detenla tú mismo si no deseas que ambas trabajen a la vez. Si usas el banner **Set up project** que puede aparecer arriba del cuadro de mensaje de la sesión en la nube, el resultado es el mismo, excepto que el turno en ejecución de la sesión se detiene una vez que se abre el proyecto.

135* **Move to project** trae el trabajo de la sesión a un proyecto existente. Publica un mensaje en la conversación de ese proyecto pidiéndole a Claude que lea la sesión y continúe desde donde se quedó, y el nuevo trabajo continúa en los propios hilos del proyecto. La sesión original permanece en tu lista de sesiones, sin cambios.

136 

137<h3 id="set-up-github-access">

138 Configurar acceso a GitHub

139</h3>

140 

141La mayoría de la configuración de GitHub sucede una vez, no por proyecto. Conectas tu cuenta de GitHub a Claude una vez, y la Claude GitHub App se instala una vez por repositorio, o una vez para toda una organización de GitHub si le das todos los repositorios. Vuelves a estos pasos cuando agregas un repositorio que la Claude GitHub App aún no cubre o uno en una organización de GitHub que aplica SSO.

142 

143<Steps>

144 <Step title="Conecta tu cuenta de GitHub">

145 Si no has usado claude.ai/code antes, tu primera visita te guía a través de conectar GitHub; ver [Conectar GitHub](/docs/es/web-quickstart#connect-github). De lo contrario, usa una de las [opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options).

146 </Step>

147 

148 <Step title="Instala la Claude GitHub App en los repositorios del proyecto">

149 Instala la [Claude GitHub App](https://github.com/apps/claude) y otórgale los repositorios que el proyecto usará. En un repositorio propiedad de una organización de GitHub, solo un propietario de la organización puede completar la instalación; si no eres uno, GitHub envía al propietario una solicitud de instalación y el proyecto no puede usar el repositorio hasta que lo apruebe.

150 </Step>

151 

152 <Step title="Autoriza SSO para organizaciones que lo aplican">

153 Si una organización de GitHub aplica SAML SSO, reconecta GitHub y autoriza la aplicación Claude para esa organización. Hasta que lo hagas, los repositorios privados de esa organización no aparecen en el diálogo **New project** o **Project settings > Environment**.

154 </Step>

155</Steps>

156 

157Cuando uno de estos pasos está incompleto, el diálogo **New project** y la página del proyecto nombran el paso faltante y enlazan a donde lo terminas. Termina el paso allí, luego haz clic en **Check again** si el diálogo lo ofrece. Si un repositorio aún falta de la lista después, abre la instalación de la Claude GitHub App en GitHub, en [github.com/settings/installations](https://github.com/settings/installations) para una cuenta personal, y confirma que el repositorio está listado bajo **Repository access**. Para los mensajes de error que un hilo o el proyecto reportan cuando el acceso aún es incorrecto, ver [Errores de acceso al repositorio](#repository-access-errors).

158 

159<h2 id="work-in-a-project">

160 Trabaja en un proyecto

161</h2>

162 

163Dale trabajo a Claude a través de la conversación del proyecto: tareas una a la vez o varias a la vez, más actualizaciones y pensamientos sueltos a medida que surjan. Claude enruta cada mensaje, y los hilos hacen el trabajo e informan.

164 

165<h3 id="your-first-batch">

166 Tu primer lote

167</h3>

168 

169Antes de enviar a un nuevo proyecto un lote de trabajo, configúralo para que los primeros hilos regresen como deseas:

170 

1711. [Escribe instrucciones del proyecto](#write-project-instructions): el resumen que cada hilo comienza, como qué rama dirigirse, cómo un hilo verifica su trabajo, y qué necesita tu aprobación.

1722. Envía una pequeña pieza del trabajo real, o comienza uno de los hilos que Claude sugirió, y abre el hilo cuando termine para ver cómo informa y qué hizo en su rama. Si asumió algo incorrecto o no pudo alcanzar lo que necesitaba, [Los hilos adivinaron o se estancaron en lugar de preguntar](#threads-guessed-or-stalled-instead-of-asking) cubre dónde arreglarlo.

1733. Verifica **Thread model** y **Thread effort** en **Project settings > General**. Un nuevo proyecto ejecuta cada hilo en Opus con alto esfuerzo, que utiliza tu plan más rápido; [Elige modelos y deja que Claude maneje el contexto](#choose-models-and-let-claude-manage-context) cubre las alternativas.

1744. Pídele a Claude que [proponga hilos antes de comenzarlos y que ejecute algunos a la vez](#tune-how-claude-runs-a-project), y suelta esos límites una vez que algunos hilos regresen como deseas.

175 

176<h3 id="send-work-and-read-results">

177 Envía trabajo y lee resultados

178</h3>

179 

180Claude decide dónde va cada mensaje que envías en la conversación:

181 

182* Una pregunta rápida generalmente obtiene una respuesta en la conversación.

183* El nuevo trabajo va a un hilo nuevo o a un hilo que ya está trabajando en esa área, y Claude te dice cuál. Cada hilo nuevo aparece bajo tu mensaje como una tarjeta: una caja con el título y estado del hilo, que haces clic para abrir el hilo.

184* Varias tareas no relacionadas en un mensaje se convierten en hilos separados.

185 

186Si Claude enruta algo diferente a lo que querías, dilo. [Ajusta cómo Claude ejecuta un proyecto](#tune-how-claude-runs-a-project) enumera cosas que puedes decirle, como reutilizar un hilo existente para seguimientos o responder en el lugar en lugar de comenzar un hilo.

187 

188Los resultados completos de un hilo permanecen en el hilo, y abres su tarjeta en la conversación para leerlos. Los archivos que produjo un hilo también están en la pestaña **Library** en **Overview**.

189 

190A veces Claude propone hilos en lugar de comenzarlos, en una lista **Suggested threads**. Haz clic en la flecha en una sugerencia para comenzar ese hilo. Cuando se enumeran varios, un botón debajo de la lista comienza todos ellos.

191 

192<h3 id="review-a-thread’s-pull-request">

193 Revisa la solicitud de extracción de un hilo

194</h3>

195 

196Cuando un hilo cambia código, esto es lo que hace a menos que le digas lo contrario:

197 

198* **Branch**: trabaja en una rama nueva, comenzada desde la rama predeterminada del repositorio.

199* **Pull request**: abre una cuando lo pides, y puede abrir una por su cuenta para una corrección de error u otro cambio concreto.

200* **Después de que se abre**: observa la solicitud de extracción con [auto-fix](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) activado, independientemente de si auto-fix está activado para tus otras sesiones en la nube. Inserta correcciones cuando CI falla, aborda comentarios de revisión, y responde en el hilo cuando las verificaciones pasan y la solicitud de extracción está lista para ti.

201 

202Cuando un hilo ha insertado una rama o abierto una solicitud de extracción, su tarjeta en la conversación puede mostrar un botón para el próximo paso:

203 

204* **Resolve conflicts**, **Fix CI**, **Address comments**, y **Merge it** envían esa instrucción al hilo como un mensaje de ti, así que puedes indicar al hilo tú mismo en lugar de esperar a que reaccione a la solicitud de extracción.

205* **Review PR** abre la solicitud de extracción en GitHub.

206* **Create PR** aparece cuando un hilo inactivo ha insertado una rama pero no ha abierto una solicitud de extracción. Hacerlo clic crea la solicitud de extracción desde esa rama directamente en lugar de enviar al hilo una instrucción para abrir una.

207 

208Para cambiar cuándo los hilos abren solicitudes de extracción, por ejemplo solo cuando lo pides, o qué rama comienzan, dilo en la tarea o en [instrucciones del proyecto](#write-project-instructions).

209 

210<h3 id="see-what-needs-you-in-overview">

211 Ve qué te necesita en Overview

212</h3>

213 

214El panel **Overview** junto a la conversación rastrea los hilos del proyecto. Ya está abierto la primera vez que abres un nuevo proyecto. El botón **Overview** en el encabezado del proyecto lo cierra y reabre, y muestra un punto cuando un hilo te está esperando.

215 

216En la aplicación de escritorio, también obtienes una notificación de escritorio cuando Claude publica en la conversación, un hilo golpea un error, o un hilo necesita tu entrada, así que no tienes que mantener el proyecto abierto para enterarte. Para también obtener uno cada vez que un hilo termina un turno, o para desactivarlos para un proyecto, elige **Notifications** en el menú de la barra lateral del proyecto. Estas notificaciones son solo de escritorio: en un navegador, verifica el punto en el botón **Overview**.

217 

218La pestaña **Threads** del panel agrupa hilos por estado:

219 

220| Grupo | Qué hay en él |

221| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

222| **Ready for review** | Hilos cuya solicitud de extracción está abierta y esperando revisión |

223| **Waiting on you** | Hilos que necesitan tu respuesta o aprobación, o que fallaron |

224| **Working** | Hilos aún en ejecución |

225| **Landing** | Hilos cuya solicitud de extracción está aprobada o en cola para fusionar |

226| **Idle** | Hilos que terminaron y no están esperando nada |

227| **Resolved** | Hilos marcados como hecho: por ti desde el menú del hilo, por Claude una vez que hayas tomado el último paso, como fusionar su solicitud de extracción, o automáticamente después de una semana sin actividad. Puedes reabrir uno desde el mismo menú |

228 

229Las otras pestañas del panel son **Library** para los archivos y carpetas que agregaste y los archivos que produjeron los hilos, **Pull requests** una vez que los hilos hayan abierto alguno, y **Routines** para las [rutinas](/docs/es/routines) que Claude configuró desde este proyecto.

230 

231<h3 id="open-a-thread-when-you-need-control">

232 Abre un hilo cuando necesites control

233</h3>

234 

235Haz clic en la tarjeta de un hilo en la conversación o su fila en **Overview** para abrir su transcripción en el panel Overview. Desde allí puedes:

236 

237* Leer qué hizo Claude, paso a paso.

238* Dirige la tarea escribiendo en el cuadro de mensaje del hilo. Un mensaje allí va directamente a ese hilo, mientras que un seguimiento en la conversación del proyecto lo alcanza solo cuando Claude coincide el seguimiento con ese hilo.

239* Responde a un aviso de permiso que el hilo está esperando.

240* Interrumpe el hilo con **Stop**, que reemplaza el botón enviar mientras el hilo está trabajando, o presionando Esc.

241 

242<h3 id="choose-models-and-let-claude-manage-context">

243 Elige modelos y deja que Claude maneje el contexto

244</h3>

245 

246Establece modelos y esfuerzo en **Project settings > General**. Un nuevo proyecto ejecuta Opus en todas partes, con alto [esfuerzo](/docs/es/model-config#adjust-effort-level) para hilos y bajo esfuerzo para la conversación:

247 

248* **Thread model** y **Thread effort** se aplican a los hilos. Para usar un modelo diferente para una tarea, pídelo en la tarea; para un hilo ya en ejecución, usa el selector de modelo de ese hilo.

249* **Coordinator model** y **Coordinator effort** se aplican a Claude en la conversación del proyecto.

250 

251No administras ventanas de contexto en un proyecto. Los hilos se compactan automáticamente, y la conversación funciona a partir de mensajes recientes, hilos recientes, y memoria del proyecto en lugar de su historial completo, así que sigue funcionando mientras el proyecto se ejecute. Pon cualquier cosa que nunca deba descartarse en [memoria del proyecto](#give-a-project-standing-context). Si un hilo crece más allá de su contexto, muestra [Claude ran out of context on this turn](#context-limit).

252 

253<h3 id="tune-how-claude-runs-a-project">

254 Ajusta cómo Claude ejecuta un proyecto

255</h3>

256 

257Dile a Claude en la conversación cuántos hilos ejecutar a la vez, cuándo publicar actualizaciones, y cuándo abrir solicitudes de extracción. Si Claude está coordinando de una manera que no deseas, dilo. Por ejemplo, puedes decir:

258 

259* "Propón hilos y espera mi aprobación antes de comenzarlos" o "Comienza estos ahora sin pedirme que confirme"

260* "Ejecuta como máximo dos hilos a la vez" o "Reutiliza un hilo existente para seguimientos en la misma área"

261* "Publica actualizaciones más cortas" o "Solo publica cuando algo termina o está bloqueado"

262* "Dame una actualización de estado en cada hilo"

263* "Haz esta tarea con un modelo más pequeño"

264* "No abras una solicitud de extracción hasta que haya visto el plan"

265* "Dime qué está mal en estos repositorios y no arregles nada todavía", cuando deseas revisar los hallazgos antes de que cualquiera se convierta en un hilo

266* "Responde eso aquí en lugar de comenzar un hilo", cuando Claude comienza un hilo para algo que quisiste como una pregunta rápida

267 

268Claude guarda preferencias como estas en [memoria del proyecto](#give-a-project-standing-context) por su cuenta y las sigue en hilos posteriores. Son instrucciones que Claude mantiene, no configuraciones aplicadas, así que un límite de hilos que das de esta manera no es un límite duro. Agrega uno a las instrucciones del proyecto cuando deseas que esté redactado exactamente y aplicado a cada hilo desde el inicio.

269 

270<h3 id="unblock-a-thread-waiting-on-approval">

271 Desbloquea un hilo esperando aprobación

272</h3>

273 

274Los hilos se ejecutan en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) cuando el modelo del hilo lo soporta, así que la mayoría de las llamadas de herramientas se ejecutan sin pedirte. Cuando un hilo necesita tu aprobación, el aviso está dentro de ese hilo y el hilo espera hasta que respondas allí. Decirle a Claude en la conversación del proyecto que adelante no lo alcanza.

275 

276Cada aprobación cubre ese aviso, o el resto de ese hilo si eliges la opción más amplia. Para permitir que cada hilo ejecute ciertos comandos sin preguntar, o para bloquear algunos, agrega [reglas de permiso](/docs/es/permissions) al `.claude/settings.json` del repositorio. Los hilos las aplican solo en un proyecto con un repositorio; ver [Lo que los hilos recogen de tus repositorios](#what-threads-pick-up-from-your-repositories).

277 

278<h2 id="give-a-project-standing-context">

279 Proporcione contexto permanente al proyecto

280</h2>

281 

282La memoria del proyecto, las instrucciones del proyecto y los repositorios, archivos y entorno del proyecto llevan contexto entre hilos. Usted establece cada uno una sola vez y se aplica a cada nuevo hilo.

283 

284| Contexto | Lo que lleva | Cómo lo establece |

285| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

286| Memoria del proyecto | Notas que Claude mantiene sobre el proyecto, como requisitos, decisiones y trampas, almacenadas como archivos. Cada hilo lee el archivo de índice `MEMORY.md` cuando comienza y abre los otros archivos cuando los necesita | Pida a Claude en la conversación del proyecto o en cualquier hilo que recuerde un requisito, una decisión o una trampa, o que olvide uno. Lea, edite y elimine los archivos en **Configuración del proyecto > Memoria** |

287| Instrucciones del proyecto | Texto enviado a cada nuevo hilo y a Claude en la conversación del proyecto, hasta 16.000 caracteres. [Escribir instrucciones del proyecto](#write-project-instructions) cubre qué poner en él | **Configuración del proyecto > Memoria > Instrucciones del proyecto**, o pida a Claude que cambie las instrucciones |

288| Repositorios, archivos y entorno | Los repositorios que cada hilo clona, las carpetas y archivos que cada hilo puede leer en `/mnt/project-files`, y el entorno en la nube en el que se ejecutan los hilos | Repositorios y entorno en **Configuración del proyecto > Entorno**, o pida a Claude en la conversación que agregue un repositorio al proyecto. Archivos y carpetas desde **Agregar** en la pestaña **Biblioteca** en **Descripción general** |

289 

290**Configuración del proyecto > Memoria** enumera estos archivos en **Memoria automática**, porque Claude los escribe a sí mismo mientras trabaja en el proyecto. Son separados de la [memoria automática](/docs/es/memory) que Claude Code mantiene en su máquina, aunque ambos usen un índice `MEMORY.md`. La memoria del proyecto también es separada de los archivos `CLAUDE.md` en los repositorios del proyecto. Cada hilo aún lee esos archivos `CLAUDE.md` de su clon cuando comienza, así que ponga instrucciones sobre un repositorio en su `CLAUDE.md` y notas sobre el proyecto en la memoria del proyecto.

291 

292<h3 id="write-project-instructions">

293 Escribir instrucciones del proyecto

294</h3>

295 

296Las instrucciones del proyecto son el resumen con el que comienza cada nuevo hilo. Haga clic en el icono de engranaje en el encabezado del proyecto para abrir **Configuración del proyecto**, luego vaya a **Memoria > Instrucciones del proyecto**. Un resumen útil cubre:

297 

298* Para qué es el proyecto

299* Dónde ocurre el trabajo: qué repositorios, de qué rama comenzar, cómo nombrar solicitudes de extracción

300* Cómo un hilo verifica su propio trabajo antes de considerarlo terminado

301* Qué hacer cuando falta algo que necesita

302* Qué necesita su aprobación primero

303 

304Por ejemplo:

305 

306```text theme={null}

307Este proyecto mantiene la latencia p95 de la API de pagos por debajo de 200 ms: perfilado, correcciones de consultas y almacenamiento en caché, y las actualizaciones de dependencias que vienen con ellas, en el repositorio payments-api.

308 

309- Rama desde main y abre una solicitud de extracción de borrador por hilo.

310- Antes de considerar el trabajo terminado, ejecuta `make test` y `make lint` y pega las líneas de resumen en tu mensaje final.

311- Si no puedes acceder a algo que necesitas, como un repositorio, un secreto, una API o un conector, di exactamente qué falta en tu primer mensaje y detente. No sustituyas, simules ni adivines.

312- No fusiones, no hagas push forzado ni cambies la configuración de CI sin preguntarme en el hilo.

313```

314 

315Las reglas sobre un repositorio, como sus comandos de compilación, pertenecen al `CLAUDE.md` de ese repositorio, que cada hilo lee cuando el repositorio es parte del proyecto. Una vez que el trabajo está en marcha, cuando corrija un hilo, también dígale a Claude que recuerde la corrección: va a la [memoria del proyecto](#give-a-project-standing-context) y los hilos posteriores comienzan con ella.

316 

317<h3 id="decide-which-repositories-to-add">

318 Decidir qué repositorios agregar

319</h3>

320 

321Los repositorios que agrega a un proyecto vienen con todo lo que contienen, su código, `CLAUDE.md` y skills, en cada hilo. Los repositorios que no agrega aún están al alcance: un hilo puede agregar uno a sí mismo cuando su tarea lo necesita. La mayoría de los proyectos usan ambos:

322 

323* **Agréguelo al proyecto**, en el diálogo **Nuevo proyecto**, en **Configuración del proyecto > Entorno**, o pidiendo a Claude en la conversación que lo agregue al proyecto. Cada hilo a partir de entonces lo clona y comienza con su `CLAUDE.md` y skills cargados, independientemente de si la tarea lo toca. Pasar de un repositorio a varios también cambia lo que los hilos toman de cada `settings.json` del repositorio `.claude/`; vea [Lo que los hilos recogen de sus repositorios](#what-threads-pick-up-from-your-repositories).

324* **Déjelo fuera y deje que los hilos lo agreguen cuando sea necesario.** Un hilo cuya tarea necesita un repositorio que el proyecto no tiene puede agregarlo a sí mismo, y una nota en el hilo dice que fue agregado solo a este hilo. El clon ocurre a mitad de la tarea, por lo que el `CLAUDE.md` y skills de ese repositorio no estaban allí cuando el hilo comenzó. El siguiente hilo comienza sin él de nuevo. Un repositorio que un hilo agrega necesita los mismos [requisitos previos](#check-the-prerequisites) que un repositorio del proyecto: la aplicación GitHub de Claude instalada en él y acceso de push desde su cuenta de GitHub.

325 

326Un proyecto no necesita un repositorio en absoluto. Sus hilos aún pueden investigar, escribir documentos, y escribir y ejecutar código en su propio sandbox, y entregan archivos a la pestaña **Biblioteca**. Un hilo allí también puede agregar un repositorio a sí mismo cuando una tarea lo requiere.

327 

328Una vez que el proyecto tiene repositorios, Claude solo puede agregar repositorios de un propietario de GitHub que el proyecto ya usa, ya sea que agregue uno al proyecto o un hilo agregue uno a sí mismo. Para traer un repositorio de un propietario diferente, agréguelo al proyecto usted mismo en **Configuración del proyecto > Entorno**.

329 

330Para un proyecto que abarca muchos repositorios, como una característica con código de servidor, web, móvil y escritorio, agregue uno o dos repositorios que casi todas las tareas tocan y nombre los otros en [instrucciones del proyecto](#write-project-instructions) para que Claude sepa dónde vive el resto del código. Los hilos entonces comienzan pequeños y traen los otros repositorios solo para las tareas que los necesitan.

331 

332<h3 id="what-threads-pick-up-from-your-repositories">

333 Lo que los hilos recogen de sus repositorios

334</h3>

335 

336Cada hilo clona cada repositorio en el proyecto y carga `CLAUDE.md`, skills y plugins de todos ellos. Las reglas de permisos, hooks y `env` vienen solo del `settings.json` de `.claude/` en el directorio en el que comienza el hilo: dentro del repositorio cuando el proyecto tiene uno, y encima de los clones cuando tiene varios, donde no se lee el archivo de ningún repositorio para ellos.

337 

338| En cada repositorio | Un repositorio | Varios repositorios |

339| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

340| `CLAUDE.md` | Se carga cuando comienza el hilo | Se carga desde cada repositorio cuando comienza el hilo |

341| Skills, agentes y comandos bajo `.claude/` | Se cargan | Se cargan desde cada repositorio |

342| Plugins habilitados en `.claude/settings.json` | Se cargan | Se cargan desde cada repositorio. Si dos repositorios no están de acuerdo sobre un plugin, configúrelo en **Configuración del proyecto > Plugins**, que tiene prioridad |

343| Reglas de permisos, hooks y `env` definidos en `.claude/settings.json` | Se aplican al hilo, excepto las claves `env` que [ninguna sesión en la nube honra](/docs/es/cloud-environments#what-carries-over-from-your-setup) | No se aplican |

344 

345En un proyecto con varios repositorios, cada clon se adjunta al hilo como un [directorio adicional](/docs/es/memory#load-from-additional-directories) con carga de `CLAUDE.md` activada, por lo que el `CLAUDE.md` y skills de cada repositorio se cargan al inicio aunque el hilo comience encima de ellos. En cualquier caso, los hooks que proporciona un plugin habilitado aún se ejecutan, ya que los plugins se cargan desde cada repositorio. En un proyecto con varios repositorios, ponga reglas permanentes en instrucciones del proyecto y proporcione a los hilos variables de entorno a través del [entorno en la nube](#choose-an-environment-for-threads).

346 

347<h3 id="choose-an-environment-for-threads">

348 Elegir un entorno para los hilos

349</h3>

350 

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

352 

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

354 

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

356 Obtener skills, plugins, conectores y herramientas en los hilos

357</h3>

358 

359Los hilos son sesiones en la nube, por lo que no tienen los skills, servidores MCP, plugins y herramientas instalados solo en su máquina. Para que cada uno de estos esté disponible para los hilos:

360 

361* Skills, subagentes y comandos: confirme que están en un repositorio que agregó al proyecto, por ejemplo un skill en `.claude/skills/<skill-name>/SKILL.md`. Cada hilo clona cada repositorio en el proyecto y carga `.claude/skills/`, `.claude/agents/` y `.claude/commands/` de cada uno de ellos, por lo que un skill confirmado en un repositorio está disponible en cada nuevo hilo. Los hilos también cargan los skills que habilita para su cuenta de claude.ai.

362* Plugins: agréguelos en **Configuración del proyecto > Plugins**; se cargan en cada nuevo hilo. Los plugins que un repositorio declara en su `.claude/settings.json` también se cargan; vea [Lo que se lleva de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup).

363* Servidores MCP: los hilos obtienen sus herramientas MCP de los conectores en su cuenta de claude.ai, que son servidores MCP que conecta una sola vez en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) o a través del enlace **Administrar conectores** en **Configuración del proyecto > Entorno**. Cada hilo puede usar todos ellos sin configuración por proyecto. La conversación del proyecto en sí no tiene conectores, así que envíe el trabajo que necesita uno como una tarea para un hilo. En un proyecto con un repositorio, los hilos también cargan servidores MCP del [`.mcp.json`](/docs/es/cloud-environments#what-carries-over-from-your-setup) de ese repositorio. [Cómo los conectores llegan a Claude Code](/docs/es/mcp#how-connectors-reach-claude-code) enumera las reglas para sesiones en la nube y la configuración que desactiva los conectores.

364* Herramientas de línea de comandos y paquetes: instálelos en el [script de configuración](/docs/es/cloud-environments#setup-scripts) del entorno.

365 

366Para ver qué conectores tiene un hilo en ejecución en claude.ai/code, abra el hilo y seleccione **Conectores** en el menú **+** junto a su cuadro de mensaje. Desactivar un conector allí lo elimina de ese hilo y guarda eso como su predeterminado de cuenta, por lo que los nuevos hilos y chats de claude.ai comienzan sin él hasta que lo vuelva a activar. Un hilo recoge un conector que agrega o reconecta después del siguiente mensaje que le envía.

367 

368<h2 id="project-settings-reference">

369 Referencia de configuración del proyecto

370</h2>

371 

372Cambias la configuración del proyecto en claude.ai/code o en la aplicación de escritorio, no en `settings.json`. Abre **Project settings** desde **Settings** en el menú de la barra lateral del proyecto o desde el icono de engranaje en el encabezado del proyecto.

373 

374Los cambios se guardan a medida que los realizas; un campo de texto que estés editando, como el objetivo o las instrucciones, muestra **Save changes** y **Discard** hasta que lo dejes. Los cambios en instrucciones, repositorios, plugins, y entorno en **Project settings** llegan a hilos nuevos, no a hilos ya en ejecución.

375 

376| Configuración | Sección | Qué controla |

377| :---------------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------- |

378| Nombre, icono y objetivo | General | El nombre e icono del proyecto en la barra lateral, y su objetivo de una línea |

379| Modelo coordinador y esfuerzo | General | El modelo y [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) para Claude en la conversación del proyecto |

380| Modelo de hilo y esfuerzo | General | El modelo y nivel de esfuerzo para hilos |

381| Instrucciones del proyecto | Memory | [Reglas permanentes](#give-a-project-standing-context) que cada hilo nuevo recibe |

382| Repositorios del proyecto | Environment | Los repositorios que los hilos nuevos clonan |

383| Entorno en la nube | Environment | El [entorno en la nube](#choose-an-environment-for-threads) en el que se ejecutan los hilos nuevos |

384| Conectores | Environment | Un enlace para administrar los conectores de claude.ai que obtienen los hilos |

385| Plugins | Plugins | Los plugins que se cargan en cada hilo nuevo |

386| Uso | Usage | [Uso de tokens](#usage-and-cost) por hilo y por modelo |

387| Memory | Memory | Los [archivos de memoria](#give-a-project-standing-context) del proyecto |

388| Reiniciar Claude | General | Reinicia la conversación del proyecto cuando [Claude deja de responder allí](#claude-hasnt-responded) |

389| Pausar, Archivar, Eliminar | General | Detiene, oculta, o elimina el proyecto; ver [Pausar, archivar, o eliminar un proyecto](#pause-archive-or-delete-a-project) |

390 

391<h3 id="pause-archive-or-delete-a-project">

392 Pausar, archivar, o eliminar un proyecto

393</h3>

394 

395Los tres controles están en la parte inferior de **Project settings > General**:

396 

397* **Pause**: detiene todo a la vez. Cada hilo en ejecución y la conversación se interrumpen, no comienzan hilos nuevos, las rutinas no se ejecutan, y el proyecto no acepta mensajes hasta que lo reanudes. Haz clic en **Resume** en el mismo lugar o en el banner arriba del cuadro de mensaje del proyecto; un hilo pausado continúa cuando le envías un mensaje después de eso.

398* **Archive**: oculta el proyecto de la barra lateral y archiva sus hilos, que detiene cualquier hilo que estaba en ejecución o observando una solicitud de extracción. Las rutinas en el proyecto no se ejecutan mientras está archivado. Para traer el proyecto de vuelta, ábrelo desde la página Projects y haz clic en **Unarchive**. Sus hilos permanecen archivados hasta que los desarchives individualmente desde la lista de sesiones.

399* **Delete**: elimina permanentemente el proyecto junto con sus hilos, su memoria, y sus archivos, y desactiva las rutinas del proyecto. Esto no se puede deshacer. Las ramas y solicitudes de extracción que los hilos insertaron en GitHub no se ven afectadas.

400 

401<h2 id="usage-and-cost">

402 Uso y costo

403</h2>

404 

405El uso del proyecto cuenta contra los mismos [límites de plan](/docs/es/errors#youve-hit-your-session-limit) que tus otras sesiones de Claude Code, y un proyecto no puede gastar más allá de esos límites por su cuenta.

406 

407Un hilo que alcanza el límite de tu plan espera y continúa por su cuenta cuando el límite se reinicia, así que el trabajo que dejaste en ejecución comienza a usar tu siguiente ventana de uso sin un mensaje de ti. [Un hilo alcanzó el límite de uso](#usage-limit-reached) cubre lo que ves, cómo detenerlo, y el único caso que no espera.

408 

409El trabajo va más allá de los límites de tu plan solo si has activado [créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription) para tu cuenta. Un hilo no puede activarlos para ti.

410 

411<h3 id="what-draws-on-your-plan">

412 Qué utiliza tu plan

413</h3>

414 

415Un proyecto utiliza tus límites más rápido que una sola sesión, y en un plan Pro en particular deberías esperar alcanzar tu límite más pronto en días que ejecutes uno. Estas son las partes de un proyecto que utilizan tu plan:

416 

417* **Hilos en ejecución**: cada uno es una sesión completa, y varios pueden ejecutarse a la vez. No hay un número fijo; Claude comienza tantos como el trabajo requiera, y un límite que [pidas](#tune-how-claude-runs-a-project) es una preferencia en lugar de un límite. El límite aplicado es 200 hilos nuevos por día en todos tus proyectos.

418* **La conversación**: Claude utiliza tokens propios leyendo lo que los hilos reportan y decidiendo qué hacer a continuación.

419* **Hilos observando una solicitud de extracción**: un hilo inactivo se despierta y utiliza tu plan de nuevo cuando CI falla o llega un comentario de revisión en su solicitud de extracción. Para detener eso, pídele en el hilo que deje de observar la solicitud de extracción.

420 

421Un proyecto sin hilos en ejecución, sin solicitudes de extracción observadas, y sin mensajes nuevos no utiliza tu plan mientras se sienta inactivo, y tampoco un proyecto archivado.

422 

423<h3 id="see-and-reduce-a-project’s-usage">

424 Ve y reduce el uso de un proyecto

425</h3>

426 

427Abre **Usage** en **Project settings** para ver el uso de tokens por hilo y por modelo, y cuánto fue a la conversación del proyecto. Para reducirlo:

428 

429* Un seguimiento enrutado a un hilo que ha estado inactivo más tiempo que la [vida útil del caché](/docs/es/prompt-caching#cache-lifetime), una hora en Pro y Max dentro de los límites de tu plan, vuelve a leer toda la conversación de ese hilo antes de hacer nada. Para trabajo nuevo, pedirle a Claude que comience un hilo fresco puede usar menos que revivir uno antiguo grande.

430* Para trabajo que no necesita el modelo más grande, [elige un modelo más pequeño o un nivel de esfuerzo más bajo](#choose-models-and-let-claude-manage-context) para hilos, la conversación, o ambos.

431* Pídele a Claude en la conversación del proyecto que ejecute menos hilos a la vez, o que responda pequeñas preguntas él mismo en lugar de comenzar un hilo.

432 

433<h2 id="how-projects-relate-to-other-claude-code-features">

434 Cómo los proyectos se relacionan con otras características de Claude Code

435</h2>

436 

437Varias características de Claude Code permiten que más de una sesión trabaje al mismo tiempo, así que ejecutar trabajo en paralelo no es por sí solo para qué es un proyecto. En un proyecto, Claude comienza y rastrea las sesiones en lugar de ti, cada una comienza desde los mismos repositorios, instrucciones y memoria, y el trabajo vive en la nube mientras dure. Así es como cada característica vecina se conecta a un proyecto:

438 

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

440* **Sesiones en la nube**: cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web), comenzada y rastreada por Claude en lugar de por ti. Una sesión en la nube que comenzaste tú mismo puede convertirse en un proyecto o alimentar uno a través de [**Continue as a project** o **Move to project**](#start-from-an-existing-cloud-session).

441* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.

442* **Sesiones locales y vista de agente**: las sesiones en tu terminal, IDE, o el entorno local de la aplicación de escritorio se ejecutan en tu máquina y no pueden ser parte de un proyecto. [Vista de agente](/docs/es/agent-view) es una pantalla para rastrear varias de esas sesiones locales; no tiene coordinador.

443* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio para que las sesiones paralelas en tu máquina no se sobrescriban entre sí. Los hilos no los necesitan: cada hilo clona sus repositorios en su propia sandbox en la nube y trabaja en su propia rama.

444* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.

445* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.

446 

447[Ejecutar agentes en paralelo](/docs/es/agents) compara estas opciones lado a lado.

448 

449<h2 id="limitations">

450 Limitaciones

451</h2>

452 

453* Los proyectos están disponibles en claude.ai/code, en la aplicación de escritorio y en la aplicación móvil de Claude, no en el CLI de terminal ni a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. El comando [`claude project`](/docs/es/cli-reference) del CLI, que administra el estado local de Claude Code para un directorio, no está relacionado.

454* Los hilos del proyecto son [sesiones en la nube](/docs/es/claude-code-on-the-web) con Anthropic como proveedor de modelo. [Seguridad](/docs/es/security) y [Uso de datos](/docs/es/data-usage) cubren cómo se aíslan las sesiones en la nube y qué se retiene.

455* Una sesión local no puede ser parte de un proyecto.

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

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

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

459 

460<h2 id="troubleshooting">

461 Solución de problemas

462</h2>

463 

464Para los avisos de configuración de GitHub en el diálogo **New project**, ver [Configurar acceso a GitHub](#set-up-github-access).

465 

466<h3 id="a-thread-looks-stuck">

467 Un hilo parece estar atascado

468</h3>

469 

470Claude no publica cada paso que toma un hilo, así que un hilo que se muestra como en ejecución sin mensajes nuevos en la conversación del proyecto generalmente aún está trabajando. Un hilo nuevo también aprovisiona su [entorno en la nube](/docs/es/cloud-environments) antes de que Claude comience, así que su primera actualización toma un momento. Abre el hilo para leer su transcripción. Si el hilo está esperando un aviso de permiso, respóndelo allí.

471 

472<h3 id="threads-guessed-or-stalled-instead-of-asking">

473 Los hilos adivinaron o se estancaron en lugar de preguntar

474</h3>

475 

476Cuando varios hilos regresan habiendo asumido algo incorrecto, trabajado alrededor del acceso faltante, o detenido con "bloqueado", la causa generalmente es la misma brecha en la configuración del proyecto en lugar de un problema con cada tarea. Ordena qué hilos son sólidos antes de arreglar nada:

477 

4781. Pídele a Claude en la conversación: "Para cada hilo abierto, enumera lo que le pediste que hiciera, qué asumió o no pudo alcanzar, y en qué está esperando." Claude lee cada hilo y responde en la conversación.

4792. Para hilos que comenzaron desde una suposición incorrecta, abre el hilo desde **Overview** y márcalo resuelto desde su menú, o dile qué hacer en su lugar en su cuadro de mensaje. Su rama y cualquier solicitud de extracción permanecen en GitHub hasta que las elimines.

4803. Arregla la brecha una vez, en [instrucciones del proyecto](#give-a-project-standing-context) o el [entorno](#choose-an-environment-for-threads), luego envía un hilo antes de enviar el resto del trabajo de nuevo como hilos nuevos.

481 

482<h3 id="claude-hasnt-responded">

483 Claude no ha respondido

484</h3>

485 

486La conversación del proyecto muestra un banner "Claude hasn't responded" cuando Claude está en ejecución pero sus respuestas no llegan al proyecto. Haz clic en **Restart Claude** en el banner, o ve a **Project settings > General** y haz clic en **Restart** en la fila **Restart Claude**. Claude se reconecta a la conversación; cualquier respuesta que estaba en medio de escribir se pierde, y los hilos no se ven afectados.

487 

488<h3 id="repository-access-errors">

489 Errores de acceso al repositorio

490</h3>

491 

492Tres mensajes significan que un hilo o el proyecto no puede alcanzar uno de sus repositorios. Un hilo del proyecto necesita los [requisitos previos de GitHub](#check-the-prerequisites) incluso cuando tus otras sesiones en la nube clonan el mismo repositorio sin problemas.

493 

494* **"Couldn't start the session — Claude doesn't have GitHub access to this project's repository"**, reportado antes de que comience el hilo, cuando la Claude GitHub App no está instalada en ese repositorio, está suspendida, o no está vinculada a la cuenta de GitHub que conectaste.

495* **"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.

496* **"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.

497 

498Para 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.

499 

500<h3 id="usage-limit-reached">

501 Un hilo alcanzó el límite de uso

502</h3>

503 

504Cuando un hilo o la conversación del proyecto alcanza el límite de cinco horas o semanal de tu plan, sigue reintentando por su cuenta y continúa cuando el límite se reinicia. Mientras espera, el hilo muestra **Service is busy** con "Claude is still retrying and will continue automatically." No necesitas hacer nada para que el trabajo continúe. Si prefieres que no use tu siguiente ventana de uso, haz clic en **Stop** en el hilo, o [pausa el proyecto](#pause-archive-or-delete-a-project) para mantener cada hilo. Un hilo que una rutina comenzó no espera: su turno se detiene con un error de límite, y le envías un mensaje después de que el límite se reinicia.

505 

506[Errores de límite de uso](/docs/es/errors#youve-hit-your-session-limit) explican los límites y cuándo se reinician.

507 

508<h3 id="additional-usage-credits-are-required">

509 Se requieren créditos de uso adicionales

510</h3>

511 

512Un hilo o la conversación del proyecto hizo una solicitud que tu plan cubre solo con créditos de uso, como una a un modelo o tamaño de contexto que tu plan no incluye, y los créditos de uso no están activados para tu cuenta. [Agregar créditos de uso a tu suscripción](/docs/es/costs#add-usage-credits-to-your-subscription) cubre quién puede activarlos o comprarlos en cada plan. Una vez que los créditos estén disponibles, envía otro mensaje para reintentar.

513 

514<h3 id="context-limit">

515 Otros mensajes

516</h3>

517 

518Estos mensajes nombran su propia causa. La tabla da el próximo paso para cada uno.

519 

520| Mensaje | Qué hacer |

521| :-------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

522| "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 |

523| "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 |

524| "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 |

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

526| "Setup script failed" | Haz clic en **Edit setup script** en el error, arregla el script en el entorno, luego envía otro mensaje. [Setup script failed](/docs/es/web-quickstart#setup-script-failed) enumera las causas comunes |

527| "Claude ran out of context on this turn" | El hilo llenó su ventana de contexto. Si el mensaje dice que el hilo continúa en una sesión fresca, continúa por sí solo; de lo contrario, pídele a Claude en la conversación del proyecto que comience un hilo nuevo para el trabajo restante |

528| "Reached the turn limit" | El hilo alcanzó el límite de pasos agenticos que [`CLAUDE_CODE_MAX_TURNS`](/docs/es/env-vars) establece. Envía otro mensaje para continuar, o aumenta o elimina esa variable donde esté establecida |

529 

530<h2 id="related-resources">

531 Recursos relacionados

532</h2>

533 

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

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

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

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

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

cli-reference.md +94 −94

Details

57 Banderas CLI57 Banderas CLI

58</h2>58</h2>

59 59 

60Personalice el comportamiento de Claude Code con estas banderas de línea de comandos. `claude --help` no enumera todas las banderas, por lo que la ausencia de una bandera en `--help` no significa que no esté disponible.60Personaliza el comportamiento de Claude Code con estas banderas de línea de comandos. `claude --help` no enumera todas las banderas, por lo que la ausencia de una bandera en `--help` no significa que no esté disponible.

61 61 

62| Bandera | Descripción | Ejemplo |62| Bandera | Descripción | Ejemplo |

63| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- |63| :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |

64| `--add-dir` | Agregar directorios de trabajo adicionales para que Claude lea y edite archivos. Otorga acceso a archivos; Claude Code [no descubre](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) la mayoría de la configuración de `.claude/` desde estos directorios. Valida que cada ruta exista como directorio. No puede agregar la mayoría de [rutas de red](/docs/es/errors#working-directory-is-a-network-path), como `\\server\share`. Para persistir estos directorios entre sesiones, establezca [`permissions.additionalDirectories`](/docs/es/settings-reference#permissions-additionaldirectories) en configuración | `claude --add-dir ../apps ../lib` |64| `--add-dir` | Añade directorios de trabajo adicionales para que Claude lea y edite archivos. Otorga acceso a archivos; Claude Code [no descubre](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) la mayoría de la configuración de `.claude/` desde estos directorios. Valida que cada ruta exista como un directorio. No puedes añadir la mayoría de [rutas de red](/docs/es/errors#working-directory-is-a-network-path), como `\\server\share`. Para persistir estos directorios entre sesiones, establece [`permissions.additionalDirectories`](/docs/es/settings-reference#permissions-additionaldirectories) en la configuración | `claude --add-dir ../apps ../lib` |

65| `--advisor <model>` | Habilitar la [herramienta advisor](/docs/es/advisor) del lado del servidor para esta sesión con un alias de modelo, `fable`, `opus` u `sonnet`, o un ID de modelo completo. Tiene prioridad sobre la configuración `advisorModel` para la sesión. `fable` requiere [acceso a Fable](/docs/es/advisor#choose-an-advisor-model) | `claude --advisor opus` |65| `--advisor <model>` | Habilita la [herramienta advisor](/docs/es/advisor) del lado del servidor para esta sesión con un alias de modelo, `fable`, `opus`, u `sonnet`, o un ID de modelo completo. Tiene prioridad sobre la configuración `advisorModel` para la sesión. `fable` requiere [acceso a Fable](/docs/es/advisor#choose-an-advisor-model) | `claude --advisor opus` |

66| `--agent` | Especificar un agente para la sesión actual (anula la configuración `agent`) | `claude --agent my-custom-agent` |66| `--agent` | Especifica un agente para la sesión actual (anula la configuración `agent`) | `claude --agent my-custom-agent` |

67| `--agents` | Definir subagentes personalizados dinámicamente a través de JSON. Acepta los [campos enumerados para subagentes definidos por CLI](/docs/es/sub-agents#choose-the-subagent-scope). Claude Code valida el JSON al iniciar y sale en un valor inválido; consulte [`Invalid --agents configuration`](/docs/es/errors#invalid-agents-configuration) para el mensaje y para las banderas y variable de entorno que omiten la validación. La validación requiere Claude Code v2.1.242 o posterior | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |67| `--agents` | Define subagentes personalizados dinámicamente a través de JSON. Acepta los [campos enumerados para subagentes definidos por CLI](/docs/es/sub-agents#choose-the-subagent-scope). Claude Code valida el JSON al inicio y sale si hay un valor inválido; consulta [`Invalid --agents configuration`](/docs/es/errors#invalid-agents-configuration) para el mensaje y para las banderas y variable de entorno que omiten la validación. La validación requiere Claude Code v2.1.242 o posterior | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

68| `--allow-dangerously-skip-permissions` | Agregar `bypassPermissions` al ciclo de modo `Shift+Tab` sin comenzar en él. Permite comenzar en un modo diferente como `plan` y cambiar a `bypassPermissions` más tarde. Consulte [modos de permiso](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |68| `--allow-dangerously-skip-permissions` | Añade `bypassPermissions` al ciclo de modo `Shift+Tab` sin comenzar en él. Te permite comenzar en un modo diferente como `plan` y cambiar a `bypassPermissions` más tarde. Consulta [modos de permisos](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

69| `--allowedTools`, `--allowed-tools` | Herramientas que se ejecutan sin solicitar permiso. Consulte [sintaxis de regla de permiso](/docs/es/settings-reference#permission-rule-syntax) para coincidencia de patrones. Para restringir qué herramientas están disponibles, use `--tools` en su lugar. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/tools-reference#task-tool-availability) aquí, Claude Code también opta por la sesión | `"Bash(git log *)" "Bash(git diff *)" "Read"` |69| `--allowedTools`, `--allowed-tools` | Herramientas que se ejecutan sin solicitar permiso. Consulta [sintaxis de regla de permisos](/docs/es/settings-reference#permission-rule-syntax) para coincidencia de patrones. Para restringir qué herramientas están disponibles, usa `--tools` en su lugar. Si nombras una de las [herramientas de seguimiento de tareas](/docs/es/tools-reference#task-tool-availability) aquí, Claude Code también opta por la sesión | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

70| `--append-subagent-system-prompt` | Agregar texto personalizado al final del indicador del sistema de cada [subagente](/docs/es/sub-agents), incluidos subagentes anidados, excepto un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation), que reutiliza el indicador de la conversación. Solo se aplica en modo no interactivo con `-p`. Requiere Claude Code v2.1.205 o posterior | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |70| `--append-subagent-system-prompt` | Añade texto personalizado al final del indicador del sistema de cada [subagente](/docs/es/sub-agents), incluyendo subagentes anidados, excepto un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation), que reutiliza el indicador de la propia conversación. Solo se aplica en modo no interactivo con `-p`. Requiere Claude Code v2.1.205 o posterior | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |

71| `--append-subagent-system-prompt-file` | Cargar texto desde un archivo y agregarlo a los indicadores del sistema de [subagentes](/docs/es/sub-agents). Una alternativa a `--append-subagent-system-prompt` para texto demasiado largo para pasar en la línea de comandos. Las dos banderas no se pueden combinar. Solo se aplica en modo no interactivo con `-p`. Requiere Claude Code v2.1.261 o posterior | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |71| `--append-subagent-system-prompt-file` | Carga texto de un archivo y lo añade a los indicadores del sistema de [subagentes](/docs/es/sub-agents). Una alternativa a `--append-subagent-system-prompt` para texto demasiado largo para pasar en la línea de comandos. Las dos banderas no se pueden combinar. Solo se aplica en modo no interactivo con `-p`. Requiere Claude Code v2.1.261 o posterior | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |

72| `--append-system-prompt` | Agregar texto personalizado al final del indicador del sistema predeterminado | `claude --append-system-prompt "Always use TypeScript"` |72| `--append-system-prompt` | Añade texto personalizado al final del indicador del sistema predeterminado | `claude --append-system-prompt "Always use TypeScript"` |

73| `--append-system-prompt-file` | Cargar texto de indicación del sistema adicional desde un archivo y agregar al indicador predeterminado | `claude --append-system-prompt-file ./extra-rules.txt` |73| `--append-system-prompt-file` | Carga texto de indicador del sistema adicional de un archivo y lo añade al indicador predeterminado | `claude --append-system-prompt-file ./extra-rules.txt` |

74| `--autocompact <auto\|tokens>` | Establecer la [ventana auto-compact](/docs/es/model-config#set-the-auto-compact-window) para esta sesión sin cambiar la configuración guardada. Acepta los mismos valores que `/autocompact`; esa sección cubre las formas de valor y qué anula la bandera. Requiere Claude Code v2.1.221 o posterior | `claude --autocompact 500k` |74| `--autocompact <auto\|tokens>` | Establece la [ventana auto-compact](/docs/es/model-config#set-the-auto-compact-window) para esta sesión sin cambiar tu configuración guardada. Acepta los mismos valores que `/autocompact`; esa sección cubre las formas de valor y qué anula la bandera. Requiere Claude Code v2.1.221 o posterior | `claude --autocompact 500k` |

75| `--ax-screen-reader` | Renderizar salida compatible con lector de pantalla: texto plano sin bordes decorativos ni animaciones. Fuerza el renderizador clásico, por lo que la configuración [`tui`](/docs/es/settings-reference#tui) no tiene efecto; las [sesiones de fondo](/docs/es/agent-view) adjuntas aún se renderizan a pantalla completa. Tiene prioridad sobre [`CLAUDE_AX_SCREEN_READER`](/docs/es/env-vars) y la configuración [`axScreenReader`](/docs/es/settings-reference#axscreenreader). Requiere Claude Code v2.1.181 o posterior | `claude --ax-screen-reader` |75| `--ax-screen-reader` | Renderiza salida amigable para lectores de pantalla: texto plano sin bordes decorativos ni animaciones. Fuerza el renderizador clásico, por lo que la configuración [`tui`](/docs/es/settings-reference#tui) no tiene efecto; las [sesiones en segundo plano](/docs/es/agent-view) adjuntas aún se renderizan a pantalla completa. Tiene prioridad sobre [`CLAUDE_AX_SCREEN_READER`](/docs/es/env-vars) y la configuración [`axScreenReader`](/docs/es/settings-reference#axscreenreader). Requiere Claude Code v2.1.181 o posterior | `claude --ax-screen-reader` |

76| `--bare` | Modo mínimo: omitir el descubrimiento automático de hooks, skills, comandos personalizados, subagentes, plugins, servidores MCP, memoria automática y CLAUDE.md para que las llamadas con script se inicien más rápido. Los skills en un directorio que pasa con `--add-dir` aún se cargan. Claude tiene acceso a herramientas Bash, lectura de archivos y edición de archivos. Establece [`CLAUDE_CODE_SIMPLE`](/docs/es/env-vars). Consulte [bare mode](/docs/es/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |76| `--bare` | Modo mínimo: omite el descubrimiento automático de hooks, skills, comandos personalizados, subagentes, plugins, servidores MCP, memoria automática y CLAUDE.md para que las llamadas con script se inicien más rápido. Los skills en un directorio que pases con `--add-dir` aún se cargan. Claude tiene acceso a herramientas Bash, lectura de archivos y edición de archivos. Establece [`CLAUDE_CODE_SIMPLE`](/docs/es/env-vars). Consulta [modo bare](/docs/es/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

77| `--betas` | Encabezados beta para incluir en solicitudes de API (solo usuarios con clave API) | `claude --betas interleaved-thinking` |77| `--betas` | Encabezados beta para incluir en solicitudes de API (solo usuarios de clave API) | `claude --betas interleaved-thinking` |

78| `--bg`, `--background` | Iniciar la sesión como un [agente de fondo](/docs/es/agent-view) y regresar inmediatamente. Imprime el ID de sesión y comandos de administración. Combine con `--exec` para ejecutar un comando de shell como un trabajo de fondo en lugar de una sesión de Claude, o con `--agent` para ejecutar un subagente específico. No se puede combinar con `-p`/`--print`; consulte la [referencia de errores](/docs/es/errors#command-line-errors) | `claude --bg "investigate the flaky test"` |78| `--bg`, `--background` | Inicia la sesión como un [agente en segundo plano](/docs/es/agent-view) y regresa inmediatamente. Imprime el ID de sesión y comandos de gestión. Combina con `--exec` para ejecutar un comando de shell como un trabajo en segundo plano en lugar de una sesión de Claude, o con `--agent` para ejecutar un subagente específico. No se puede combinar con `-p`/`--print`; consulta la [referencia de errores](/docs/es/errors#command-line-errors) | `claude --bg "investigate the flaky test"` |

79| `--channels` | (Vista previa de investigación) Servidores MCP cuyas notificaciones de [channel](/docs/es/channels) Claude debe escuchar en esta sesión. Lista separada por espacios de entradas `plugin:<name>@<marketplace>`. Requiere autenticación de Anthropic a través de claude.ai o una clave API de Console | `claude --channels plugin:my-notifier@my-marketplace` |79| `--channels` | (Vista previa de investigación) Servidores MCP cuyas notificaciones de [canal](/docs/es/channels) Claude debe escuchar en esta sesión. Lista separada por espacios de entradas `plugin:<name>@<marketplace>`. Requiere autenticación de Anthropic a través de claude.ai o una clave API de Console | `claude --channels plugin:my-notifier@my-marketplace` |

80| `--chrome` | Habilitar [integración del navegador Chrome](/docs/es/chrome) para automatización web y pruebas | `claude --chrome` |80| `--chrome` | Habilita la [integración del navegador Chrome](/docs/es/chrome) para automatización web y pruebas | `claude --chrome` |

81| `--cloud` | Con una descripción de tarea, crear una nueva [sesión web](/docs/es/claude-code-on-the-web) en claude.ai. Con un ID de sesión (`session_...` o `cse_...`) o una URL de claude.ai/code, encolar un mensaje en esa sesión existente en su lugar, con `-p`. Consulte [enviar un mensaje de seguimiento](/docs/es/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |81| `--cloud` | Con una descripción de tarea, crea una nueva [sesión en la nube](/docs/es/claude-code-on-the-web). Con un ID de sesión (`session_...` o `cse_...`) o una URL de claude.ai/code, encola un mensaje en esa sesión existente en su lugar, con `-p`. Consulta [enviar un mensaje de seguimiento](/docs/es/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |

82| `--continue`, `-c` | Cargar la conversación más reciente en el directorio actual, incluida una [sesión de fondo que ha finalizado](/docs/es/sessions#resume-a-session); abrir sesiones de fondo finalizadas requiere Claude Code v2.1.257 o posterior. Omite sesiones creadas con `claude -p` o el Agent SDK, y sesiones cuyo primer indicador fue `/loop`. `claude -p --continue` incluye sesiones `-p`, SDK y `/loop`. Incluye sesiones que agregaron este directorio con `/add-dir` | `claude --continue` |82| `--continue`, `-c` | Carga la conversación más reciente en el directorio actual, incluyendo una [sesión en segundo plano que ha terminado](/docs/es/sessions#resume-a-session); abrir sesiones en segundo plano terminadas requiere Claude Code v2.1.257 o posterior. Omite sesiones creadas con `claude -p` o el Agent SDK, y sesiones cuyo primer indicador fue `/loop`. `claude -p --continue` incluye sesiones `-p`, SDK y `/loop`. Incluye sesiones que añadieron este directorio con `/add-dir` | `claude --continue` |

83| `--dangerously-load-development-channels` | Habilitar [channels](/docs/es/channels-reference#test-during-the-research-preview) que no están en la lista de permitidos aprobada, para desarrollo local. Acepta entradas `plugin:<name>@<marketplace>` y `server:<name>`. Solicita confirmación | `claude --dangerously-load-development-channels server:webhook` |83| `--dangerously-load-development-channels` | Habilita [canales](/docs/es/channels-reference#test-during-the-research-preview) que no están en la lista de permitidos aprobada, para desarrollo local. Acepta entradas `plugin:<name>@<marketplace>` y `server:<name>`. Solicita confirmación | `claude --dangerously-load-development-channels server:webhook` |

84| `--dangerously-skip-permissions` | Omitir indicadores de permiso. Equivalente a `--permission-mode bypassPermissions`. Consulte [modos de permiso](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) para ver qué hace y no hace esto. Para sesiones iniciadas con `--bg`, el modo [persiste cuando el supervisor reinicia la sesión](/docs/es/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |84| `--dangerously-skip-permissions` | Omite solicitudes de permiso. Equivalente a `--permission-mode bypassPermissions`. Consulta [modos de permisos](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) para ver qué esto hace y no omite. Para sesiones iniciadas con `--bg`, el modo [persiste cuando el supervisor reinicia la sesión](/docs/es/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

85| `--debug` | Habilitar modo de depuración con filtrado de categoría opcional, como `--debug='mcp,startup'` o `--debug='!1p'`. El filtro se vincula solo en la forma `=`; un filtro separado por espacios habilita el modo de depuración sin filtrar | `claude --debug='mcp,startup'` |85| `--debug` | Habilita el modo de depuración con filtrado de categoría opcional, como `--debug='mcp,startup'` o `--debug='!1p'`. El filtro se vincula solo en la forma `=`; un filtro separado por espacios habilita el modo de depuración sin filtrado | `claude --debug='mcp,startup'` |

86| `--debug-file <path>` | Escribir registros de depuración en una ruta de archivo específica. Habilita implícitamente el modo de depuración. Tiene prioridad sobre `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |86| `--debug-file <path>` | Escribe registros de depuración en una ruta de archivo específica. Habilita implícitamente el modo de depuración. Tiene prioridad sobre `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

87| `--disable-slash-commands` | Deshabilitar todos los skills y comandos para esta sesión | `claude --disable-slash-commands` |87| `--disable-slash-commands` | Deshabilita todos los skills y comandos para esta sesión | `claude --disable-slash-commands` |

88| `--disallowedTools`, `--disallowed-tools` | Reglas de denegación. Un nombre de herramienta simple elimina esa herramienta del contexto de Claude: `"Edit"` elimina Edit, `"*"` elimina todas las herramientas, y `"mcp__*"` elimina todas las herramientas MCP. Una regla con alcance como `Bash(rm *)` deja la herramienta disponible y deniega solo las llamadas que coinciden [como se escriben](/docs/es/permissions#bash-rule-limits). Una regla que nombra [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) no puede eliminarla mientras cualquier otra herramienta permanezca | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |88| `--disallowedTools`, `--disallowed-tools` | Reglas de negación. Un nombre de herramienta desnudo elimina las herramientas coincidentes del contexto de Claude: `"Edit"` elimina Edit, `"*"` elimina todas las herramientas, y `"mcp__*"` elimina todas las herramientas MCP. Una regla con alcance como `Bash(rm *)` deja la herramienta disponible y niega solo llamadas que coincidan [como se escriben](/docs/es/permissions#bash-rule-limits). Una regla que nombra [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) no puede eliminarla mientras cualquier otra herramienta permanezca | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

89| `--effort` | Establecer el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) para la sesión actual. Opciones: `low`, `medium`, `high`, `xhigh`, `max`, o `ultracode`. Los niveles disponibles dependen del modelo. `ultracode` solicita esfuerzo `xhigh` con [ultracode](/docs/es/workflows#let-claude-decide-with-ultracode) activado, y requiere Claude Code v2.1.203 o posterior. Anula la configuración [`modelSettings`](/docs/es/settings-reference#modelsettings) y [`effortLevel`](/docs/es/settings-reference#effortlevel) para esta sesión y no persiste | `claude --effort high` |89| `--effort` | Establece el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) para la sesión actual. Opciones: `low`, `medium`, `high`, `xhigh`, `max`, o `ultracode`. Los niveles disponibles dependen del modelo. `ultracode` solicita esfuerzo `xhigh` con [ultracode](/docs/es/workflows#let-claude-decide-with-ultracode) activado, y requiere Claude Code v2.1.203 o posterior. Anula la configuración [`modelSettings`](/docs/es/settings-reference#modelsettings) y [`effortLevel`](/docs/es/settings-reference#effortlevel) para esta sesión y no persiste | `claude --effort high` |

90| `--enable-auto-mode` | Eliminado en v2.1.111. Auto mode ahora está en el ciclo `Shift+Tab` de forma predeterminada; use `--permission-mode auto` para comenzar en él | `claude --permission-mode auto` |90| `--enable-auto-mode` | Eliminado en v2.1.111. El modo automático ahora está en el ciclo `Shift+Tab` por defecto; usa `--permission-mode auto` para comenzar en él | `claude --permission-mode auto` |

91| `--environment <environment-id>` | Crear una nueva sesión en la nube que se ejecute en el [entorno autohospedado](/docs/es/self-hosted-environments) con el ID dado. Los IDs de entorno comienzan con `ccpool_`. Consulte [comportamiento de envío de `--environment`](/docs/es/self-hosted-environments-testing#environment-dispatch-behavior) para el comportamiento de envío y las combinaciones de banderas que rechaza. Requiere Claude Code v2.1.224 o posterior | `claude -p "Fix the login bug" --environment ccpool_abc123` |91| `--environment <environment-id>` | Crea una nueva sesión en la nube que se ejecuta en el [entorno autohospedado](/docs/es/self-hosted-environments) con el ID dado. Los IDs de entorno comienzan con `ccpool_`. Consulta [comportamiento de envío de `--environment`](/docs/es/self-hosted-environments-testing#environment-dispatch-behavior) para el comportamiento de envío y las combinaciones de banderas que rechaza. Requiere Claude Code v2.1.224 o posterior | `claude -p "Fix the login bug" --environment ccpool_abc123` |

92| `--exclude-dynamic-system-prompt-sections` | Mover secciones por máquina del indicador del sistema (directorio de trabajo, información del entorno, rutas de memoria, bandera de git-repo) al primer mensaje del usuario. Mejora la reutilización de caché de indicación en diferentes usuarios y máquinas que ejecutan la misma tarea. Solo se aplica con el indicador del sistema predeterminado; se ignora cuando se establece `--system-prompt` o `--system-prompt-file`. Use con `-p` para cargas de trabajo con script y múltiples usuarios | `claude -p --exclude-dynamic-system-prompt-sections "query"` |92| `--exclude-dynamic-system-prompt-sections` | Mueve secciones por máquina del indicador del sistema (directorio de trabajo, información del entorno, rutas de memoria, bandera de repositorio git) al primer mensaje del usuario. Mejora la reutilización de caché de indicadores entre diferentes usuarios y máquinas que ejecutan la misma tarea. Solo se aplica con el indicador del sistema predeterminado; se ignora cuando se establece `--system-prompt` o `--system-prompt-file`. Usa con `-p` para cargas de trabajo con script y multiusuario | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

93| `--exec` | Ejecutar un comando de shell como un trabajo de fondo respaldado por PTY en lugar de iniciar una sesión de Claude. Use con `--bg` para lanzar desde el shell | `claude --bg --exec 'pytest -x'` |93| `--exec` | Ejecuta un comando de shell como un trabajo en segundo plano respaldado por PTY en lugar de iniciar una sesión de Claude. Usa con `--bg` para lanzar desde el shell | `claude --bg --exec 'pytest -x'` |

94| `--fallback-model` | Habilitar fallback automático a los modelos especificados cuando el modelo principal está sobrecargado o no está disponible, por ejemplo un modelo retirado. Acepta una lista separada por comas probada en orden. Consulte [Cadenas de modelo de fallback](/docs/es/model-config#fallback-model-chains). Para persistir una cadena entre sesiones, use la configuración [`fallbackModel`](/docs/es/settings-reference#fallbackmodel), que esta bandera anula | `claude --fallback-model sonnet,haiku` |94| `--fallback-model` | Habilita la alternancia automática al modelo especificado cuando el modelo principal está sobrecargado o no disponible, por ejemplo un modelo retirado. Acepta una lista separada por comas probada en orden. Consulta [Cadenas de modelo alternativo](/docs/es/model-config#fallback-model-chains). Para persistir una cadena entre sesiones, usa la configuración [`fallbackModel`](/docs/es/settings-reference#fallbackmodel), que esta bandera anula | `claude --fallback-model sonnet,haiku` |

95| `--fork-session` | Al reanudar, crear un nuevo ID de sesión en lugar de reutilizar el original (usar con `--resume` o `--continue`) | `claude --resume abc123 --fork-session` |95| `--fork-session` | Al reanudar, crea un nuevo ID de sesión en lugar de reutilizar el original (usa con `--resume` o `--continue`) | `claude --resume abc123 --fork-session` |

96| `--forward-subagent-text` | Emitir bloques de texto y pensamiento de [subagentes](/docs/es/sub-agents) en el flujo de salida como mensajes `assistant` y `user` con `parent_tool_use_id` establecido, para que pueda reconstruir la transcripción de cada subagente. Sin esta bandera, Claude Code omite los bloques de texto y pensamiento de un subagente que se ejecuta en el [primer plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background). Requiere `--print` y `--output-format stream-json`. Claude Code también reenvía mensajes de [subagentes anidados](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents), estableciendo `parent_tool_use_id` en el ID de la llamada de herramienta Agent que generó cada uno; esto requiere Claude Code v2.1.219 o posterior. La variable de entorno [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/es/env-vars) habilita el mismo comportamiento. Requiere Claude Code v2.1.211 o posterior | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` |96| `--forward-subagent-text` | Emite bloques de texto y pensamiento de [subagentes](/docs/es/sub-agents) en el flujo de salida como mensajes `assistant` y `user` con `parent_tool_use_id` establecido, para que puedas reconstruir la transcripción de cada subagente. Sin esta bandera, Claude Code omite el texto y los bloques de pensamiento de un subagente que se ejecuta en el [primer plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background). Requiere `--print` y `--output-format stream-json`. Claude Code también reenvía mensajes de [subagentes anidados](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents), estableciendo `parent_tool_use_id` al ID de la llamada de herramienta Agent que generó cada uno; esto requiere Claude Code v2.1.219 o posterior. La variable de entorno [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/es/env-vars) habilita el mismo comportamiento. Requiere Claude Code v2.1.211 o posterior | `claude -p --output-format stream-json --verbose --forward-subagent-text "query"` |

97| `--from-pr` | Abrir el selector de sesión filtrado a sesiones vinculadas a una solicitud de extracción específica. Acepta un número de PR, una URL de PR de GitHub o GitHub Enterprise, una URL de solicitud de fusión de GitLab o una URL de solicitud de extracción de Bitbucket. Las sesiones se vinculan automáticamente cuando Claude crea la solicitud de extracción | `claude --from-pr 123` |97| `--from-pr` | Abre el selector de sesión filtrado a sesiones vinculadas a una solicitud de extracción específica. Acepta un número de PR, una URL de PR de GitHub o GitHub Enterprise, una URL de solicitud de fusión de GitLab, o una URL de solicitud de extracción de Bitbucket. Las sesiones se vinculan automáticamente cuando Claude crea la solicitud de extracción | `claude --from-pr 123` |

98| `--ide` | Conectarse automáticamente al IDE al iniciar si exactamente un IDE válido está disponible | `claude --ide` |98| `--ide` | Se conecta automáticamente al IDE al inicio si exactamente un IDE válido está disponible | `claude --ide` |

99| `--init` | Ejecutar [Setup hooks](/docs/es/hooks#setup) con el matcher `init` antes de la sesión (solo modo impresión) | `claude -p --init "query"` |99| `--init` | Ejecuta [hooks de Setup](/docs/es/hooks#setup) con el matcher `init` antes de la sesión (solo modo print) | `claude -p --init "query"` |

100| `--init-only` | Ejecutar hooks de [Setup](/docs/es/hooks#setup) y `SessionStart`, luego salir sin iniciar una conversación | `claude --init-only` |100| `--init-only` | Ejecuta hooks [Setup](/docs/es/hooks#setup) y `SessionStart`, luego sale sin iniciar una conversación | `claude --init-only` |

101| `--include-hook-events` | Incluir eventos del ciclo de vida del hook en el flujo de salida. Los eventos de hook `SessionStart` y `Setup` siempre se incluyen y no necesitan esta bandera. Algunos eventos de hook, como `Notification`, `SessionEnd`, `PreCompact` y `PostCompact`, nunca producen un evento `hook_started`, incluso con esta bandera. Para esos eventos, Claude Code aún emite `hook_progress` mientras un hook de comando que se ejecuta durante más de un segundo produce salida, y emite `hook_response` solo cuando un [hook que se ejecuta en segundo plano](/docs/es/hooks#run-hooks-in-the-background) finaliza. Requiere `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-hook-events "query"` |101| `--include-hook-events` | Incluye eventos del ciclo de vida del hook en el flujo de salida. Los eventos de hook `SessionStart` y `Setup` siempre se incluyen y no necesitan esta bandera. Algunos eventos de hook, como `Notification`, `SessionEnd`, `PreCompact`, y `PostCompact`, nunca producen un evento `hook_started`, incluso con esta bandera. Para esos eventos, Claude Code aún emite `hook_progress` mientras un hook de comando que se ejecuta durante más de un segundo produce salida, y emite `hook_response` solo cuando un [hook que se ejecuta en segundo plano](/docs/es/hooks#run-hooks-in-the-background) termina. Requiere `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-hook-events "query"` |

102| `--include-partial-messages` | Incluir eventos de transmisión parcial en la salida. Requiere `--print` y `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-partial-messages "query"` |102| `--include-partial-messages` | Incluye eventos de transmisión parcial en la salida. Requiere `--print` y `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-partial-messages "query"` |

103| `--input-format` | Especificar formato de entrada para modo impresión (opciones: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |103| `--input-format` | Especifica el formato de entrada para el modo print (opciones: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

104| `--json-schema` | Obtener salida JSON validada que coincida con un JSON Schema después de que el agente complete su flujo de trabajo (solo modo impresión). Consulte [salidas estructuradas](/docs/es/agent-sdk/structured-outputs). Claude Code sale con un error en un esquema inválido y acepta la palabra clave `format` como anotación sin validación del lado del cliente | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |104| `--json-schema` | Obtén salida JSON validada que coincida con un JSON Schema después de que el agente complete su flujo de trabajo (solo modo print). Consulta [salidas estructuradas](/docs/es/agent-sdk/structured-outputs). Claude Code sale con un error en un esquema inválido y acepta la palabra clave `format` como anotación sin validación del lado del cliente | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

105| `--maintenance` | Ejecutar [Setup hooks](/docs/es/hooks#setup) con el matcher `maintenance` antes de la sesión (solo modo impresión) | `claude -p --maintenance "query"` |105| `--maintenance` | Ejecuta [hooks de Setup](/docs/es/hooks#setup) con el matcher `maintenance` antes de la sesión (solo modo print) | `claude -p --maintenance "query"` |

106| `--max-budget-usd` | Cantidad máxima en dólares a gastar en llamadas API antes de detener (solo modo impresión). El gasto de [subagentes](/docs/es/sub-agents) cuenta hacia el límite. Una vez que el gasto alcanza el límite, generar otro subagente falla con `Budget limit reached`, y Claude Code detiene los subagentes de fondo que aún se ejecutan; los comportamientos de aplicación de límite requieren Claude Code v2.1.217 o posterior | `claude -p --max-budget-usd 5.00 "query"` |106| `--max-budget-usd` | Cantidad máxima en dólares a gastar en llamadas de API antes de detener (solo modo print). El gasto de [subagentes](/docs/es/sub-agents) cuenta hacia el límite. Una vez que el gasto alcanza el límite, generar otro subagente falla con `Budget limit reached`, y Claude Code detiene los subagentes en segundo plano que aún se ejecutan; los comportamientos de cumplimiento del límite requieren Claude Code v2.1.217 o posterior | `claude -p --max-budget-usd 5.00 "query"` |

107| `--max-turns` | Limitar el número de turnos de agente (solo modo impresión). Sale con un error cuando se alcanza el límite. Sin límite por defecto. Con `--input-format stream-json`, un mensaje aún en cola cuando el límite termina un turno permanece en cola e inicia un nuevo turno con su propio límite | `claude -p --max-turns 3 "query"` |107| `--max-turns` | Limita el número de turnos agentivos (solo modo print). Sale con un error cuando se alcanza el límite. Sin límite por defecto. Con `--input-format stream-json`, un mensaje aún en cola cuando el límite termina un turno permanece en cola e inicia un nuevo turno con su propio límite | `claude -p --max-turns 3 "query"` |

108| `--mcp-config` | Cargar servidores MCP desde archivos JSON o cadenas (separados por espacios). Cuando pasa esta bandera con `-p`, Claude Code espera a que los servidores aún pendientes se conecten antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto; un servidor con una [lista de herramientas en caché](/docs/es/mcp#managing-your-servers) omite la espera y se conecta en el primer uso. La espera requiere Claude Code v2.1.221 o posterior | `claude --mcp-config ./mcp.json` |108| `--mcp-config` | Carga servidores MCP desde archivos JSON o cadenas (separados por espacios). Cuando pasas esta bandera con `-p`, Claude Code espera a que los servidores aún pendientes se conecten antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto; un servidor con una [lista de herramientas en caché](/docs/es/mcp#managing-your-servers) omite la espera y se conecta en el primer uso. La espera requiere Claude Code v2.1.221 o posterior | `claude --mcp-config ./mcp.json` |

109| `--model` | Establece el modelo para la sesión actual con un [alias de modelo](/docs/es/model-config#model-aliases) como `sonnet`, `opus`, `haiku` o `fable`, o el nombre completo de un modelo. Anula la configuración [`model`](/docs/es/settings-reference#model) y [`ANTHROPIC_MODEL`](/docs/es/model-config#environment-variables) | `claude --model claude-sonnet-5` |109| `--model` | Establece el modelo para la sesión actual con un [alias de modelo](/docs/es/model-config#model-aliases) como `sonnet`, `opus`, `haiku`, o `fable`, o el nombre completo de un modelo. Anula la configuración [`model`](/docs/es/settings-reference#model) y [`ANTHROPIC_MODEL`](/docs/es/model-config#environment-variables) | `claude --model claude-sonnet-5` |

110| `--name`, `-n` | Establecer un nombre para mostrar para la sesión, que se muestra en `/resume` y en el título de la terminal. Puede reanudar una sesión nombrada con `claude --resume <name>`. En una sesión interactiva, si otra sesión activa en esta máquina ya usa el nombre, Claude Code aplica [una variante del mismo](/docs/es/sessions#name-your-sessions) en su lugar. <br /><br />[`/rename`](/docs/es/commands) cambia el nombre durante la sesión y también lo muestra en la barra de indicación | `claude -n "my-feature-work"` |110| `--name`, `-n` | Establece un nombre para mostrar para la sesión, mostrado en `/resume` y el título de la terminal. Puedes reanudar una sesión nombrada con `claude --resume <name>`. En una sesión interactiva, si otra sesión activa en esta máquina ya usa el nombre, Claude Code aplica [una variante del mismo](/docs/es/sessions#name-your-sessions). <br /><br />[`/rename`](/docs/es/commands) cambia el nombre a mitad de sesión y también lo muestra en la barra de indicador | `claude -n "my-feature-work"` |

111| `--no-chrome` | Deshabilitar [integración del navegador Chrome](/docs/es/chrome) para esta sesión | `claude --no-chrome` |111| `--no-chrome` | Deshabilita la [integración del navegador Chrome](/docs/es/chrome) para esta sesión | `claude --no-chrome` |

112| `--no-session-persistence` | Deshabilitar la persistencia de sesión para que las sesiones no se guarden en disco y no se puedan reanudar. Solo modo impresión. La variable de entorno [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/es/env-vars) hace lo mismo en cualquier modo | `claude -p --no-session-persistence "query"` |112| `--no-session-persistence` | Deshabilita la persistencia de sesión para que las sesiones no se guarden en disco y no se puedan reanudar. Solo modo print. La variable de entorno [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/es/env-vars) hace lo mismo en cualquier modo | `claude -p --no-session-persistence "query"` |

113| `--output-format` | Especificar formato de salida para modo impresión (opciones: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |113| `--output-format` | Especifica el formato de salida para el modo print (opciones: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

114| `--permission-mode` | Comenzar en un [modo de permiso](/docs/es/permission-modes) especificado. Acepta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, o `manual` como alias para `default`. El alias `manual` selecciona el modo de permiso que la interfaz de usuario etiqueta como Manual y requiere Claude Code v2.1.200 o posterior; `claude --help` lo enumera en lugar de `default`, y ambos valores funcionan. Anula `defaultMode` de archivos de configuración. Sin esta bandera o `--dangerously-skip-permissions`, una nueva sesión comienza en el modo de permiso descrito en [qué modo de permiso comienza una sesión](/docs/es/permission-modes#which-mode-a-session-starts-in). Para `-p`, eso es `default` cuando nada está configurado | `claude --permission-mode plan` |114| `--permission-mode` | Comienza en un [modo de permisos](/docs/es/permission-modes) especificado. Acepta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, o `manual` como alias para `default`. El alias `manual` selecciona el modo de permisos que la UI etiqueta como Manual y requiere Claude Code v2.1.200 o posterior; `claude --help` lo enumera en lugar de `default`, y ambos valores funcionan. Anula `defaultMode` de archivos de configuración. Sin esta bandera o `--dangerously-skip-permissions`, una nueva sesión comienza en el modo de permisos descrito en [qué modo de permisos comienza una sesión](/docs/es/permission-modes#which-mode-a-session-starts-in). Para `-p`, eso es `default` cuando nada está configurado | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Especificar una herramienta MCP para manejar indicadores de permiso en modo no interactivo. Claude Code espera a que el servidor MCP de esa herramienta se conecte antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto. <br /><br />La herramienta de indicación no puede aprobar una herramienta MCP marcada como [requiriendo interacción del usuario](/docs/es/mcp#require-approval-for-a-specific-tool): Claude Code convierte un resultado `allow` para una en una denegación. Esta restricción requiere Claude Code v2.1.199 o posterior | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |115| `--permission-prompt-tool` | Especifica una herramienta MCP para manejar solicitudes de permiso en modo no interactivo. Claude Code espera a que el servidor MCP de esa herramienta se conecte antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto. <br /><br />La herramienta de indicador no puede aprobar una herramienta MCP marcada como [requiriendo interacción del usuario](/docs/es/mcp#require-approval-for-a-specific-tool): Claude Code convierte un resultado `allow` para una en una negación. Esta restricción requiere Claude Code v2.1.199 o posterior | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Establecer quién responde indicadores de permiso en modo impresión. Con el `host` predeterminado, Claude Code los envía al host de Agent SDK o a la herramienta `--permission-prompt-tool`. Pase `none` cuando nadie pueda responder, y Claude Code los deniega en su lugar. Consulte [Desactivar indicadores de permiso en ejecuciones desatendidas](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs). Requiere Claude Code v2.1.259 o posterior | `claude -p --permission-prompts none "query"` |116| `--permission-prompts` | Establece quién responde solicitudes de permiso en modo print. Con el `host` predeterminado, Claude Code las envía al host del Agent SDK o a la herramienta `--permission-prompt-tool`. Pasa `none` cuando nadie puede responder, y Claude Code las niega en su lugar. Consulta [Desactivar solicitudes de permiso en ejecuciones desatendidas](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs). Requiere Claude Code v2.1.259 o posterior | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Cargar un plugin desde un directorio o archivo `.zip`, o varios desde una [carpeta de plugins](/docs/es/plugins#test-your-plugins-locally), solo para esta sesión. Cada bandera toma una ruta. Repita la bandera para más rutas: `--plugin-dir A --plugin-dir B.zip`. Pasar una carpeta de plugins requiere Claude Code v2.1.265 o posterior | `claude --plugin-dir ./my-plugin` |117| `--plugin-dir` | Carga un plugin desde un directorio o archivo `.zip`, o varios desde una [carpeta de plugins](/docs/es/plugins#test-your-plugins-locally), solo para esta sesión. Cada bandera toma una ruta. Repite la bandera para más rutas: `--plugin-dir A --plugin-dir B.zip`. Pasar una carpeta de plugins requiere Claude Code v2.1.265 o posterior | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Obtener un archivo `.zip` de plugin desde una URL solo para esta sesión. Repita la bandera para múltiples plugins, o pase URLs separadas por espacios en un valor único entre comillas | `claude --plugin-url https://example.com/plugin.zip` |118| `--plugin-url` | Obtén un archivo `.zip` de plugin desde una URL solo para esta sesión. Repite la bandera para múltiples plugins, o pasa URLs separadas por espacios en un valor entrecomillado único | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Imprimir respuesta sin modo interactivo (consulte [documentación de Agent SDK](/docs/es/agent-sdk/overview) para detalles de uso programático) | `claude -p "query"` |119| `--print`, `-p` | Imprime la respuesta sin modo interactivo (consulta la [documentación del Agent SDK](/docs/es/agent-sdk/overview) para detalles de uso programático) | `claude -p "query"` |

120| `--prompt-suggestions` | Emitir un mensaje `prompt_suggestion` con un siguiente indicador de usuario predicho después de cada turno que genere uno; conversaciones muy cortas pueden no producir ninguno. Requiere `--print`, `--output-format stream-json` y `--verbose`. Consulte [Sugerencias de indicación](/docs/es/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |120| `--prompt-suggestions` | Emite un mensaje `prompt_suggestion` con un indicador de usuario siguiente predicho después de cada turno que genera uno; conversaciones muy cortas pueden no producir ninguno. Requiere `--print`, `--output-format stream-json`, y `--verbose`. Consulta [Sugerencias de indicador](/docs/es/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |

121| `--ref <branch>` | Con `--environment`, basar el checkout de la nueva sesión en una ref nombrada en lugar de `HEAD` local | `claude -p "Run the smoke test" --environment ccpool_abc123 --ref main` |121| `--ref <branch>` | Con `--environment`, basa el checkout de la nueva sesión en una ref nombrada en lugar de `HEAD` local | `claude -p "Run the smoke test" --environment ccpool_abc123 --ref main` |

122| `--remote` | Alias obsoleto para `--cloud`, incluida la forma de sesión existente | `claude --remote "Fix the login bug"` |122| `--remote` | Alias deprecado para `--cloud`, incluyendo la forma de sesión existente | `claude --remote "Fix the login bug"` |

123| `--remote-control`, `--rc` | Iniciar una sesión interactiva con [Remote Control](/docs/es/remote-control#start-a-remote-control-session) habilitado para que también pueda controlarlo desde claude.ai o la aplicación Claude. Opcionalmente pase un nombre para la sesión | `claude --remote-control "My Project"` |123| `--remote-control`, `--rc` | Inicia una sesión interactiva con [Remote Control](/docs/es/remote-control#start-a-remote-control-session) habilitado para que también puedas controlarla desde claude.ai o la aplicación Claude. Opcionalmente pasa un nombre para la sesión | `claude --remote-control "My Project"` |

124| `--remote-control-session-name-prefix <prefix>` | Prefijo para nombres de sesión de [Remote Control](/docs/es/remote-control) generados automáticamente cuando no se establece un nombre explícito. Por defecto es el nombre de host de su máquina, produciendo nombres como `myhost-graceful-unicorn`. Establezca `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` para el mismo efecto | `claude remote-control --remote-control-session-name-prefix dev-box` |124| `--remote-control-session-name-prefix <prefix>` | Prefijo para nombres de sesión de [Remote Control](/docs/es/remote-control) generados automáticamente cuando no se establece un nombre explícito. Por defecto es el nombre de host de tu máquina, produciendo nombres como `myhost-graceful-unicorn`. Establece `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` para el mismo efecto | `claude remote-control --remote-control-session-name-prefix dev-box` |

125| `--replay-user-messages` | Re-emitir mensajes de usuario desde stdin de vuelta en stdout para reconocimiento. Requiere `--input-format stream-json` y `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |125| `--replay-user-messages` | Re-emite mensajes del usuario desde stdin de vuelta en stdout para reconocimiento. Requiere `--input-format stream-json` y `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |

126| `--restricted` | Comenzar en modo restringido. Úselo cuando un arnés de evaluación ejecute `claude` en una máquina compartida y Claude Code no debe ejecutar comandos ni leer la configuración de usuario y proyecto de esa máquina. Claude Code elimina las herramientas integradas que ejecutan comandos o código, y WebFetch, a menos que las nombre individualmente en `--tools`, no a través del preset `default`. También confina las herramientas de archivo integradas a los [directorios de trabajo](/docs/es/permissions#working-directories), carga solo [configuración administrada](/docs/es/managed-settings) y `--settings`, rechaza [`bypassPermissions`](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode), y [rechaza crear sesiones en la nube](/docs/es/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Requiere Claude Code v2.1.248 o posterior | `claude --restricted -p "query"` |126| `--restricted` | Comienza en modo restringido. Úsalo cuando un arnés de evaluación ejecute `claude` en una máquina compartida y Claude Code no debe ejecutar comandos ni leer la configuración de usuario y proyecto de esa máquina. Claude Code elimina las herramientas integradas que ejecutan comandos o código, y WebFetch, a menos que las nombres individualmente en `--tools`, no a través del preset `default`. También confina las herramientas de archivo integradas a los [directorios de trabajo](/docs/es/permissions#working-directories), carga solo [configuración gestionada](/docs/es/managed-settings) y `--settings`, rechaza [`bypassPermissions`](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode), y [rechaza crear sesiones en la nube](/docs/es/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Requiere Claude Code v2.1.248 o posterior | `claude --restricted -p "query"` |

127| `--resume`, `-r` | Reanudar una sesión específica por ID o nombre, o mostrar un selector interactivo para elegir una sesión. En lugar de un ID, puede pasar la ruta absoluta al archivo de [transcripción](/docs/es/sessions#where-transcripts-are-stored) `.jsonl` de una sesión. El selector y la búsqueda de nombre incluyen sesiones que agregaron este directorio con `/add-dir`. Cuando pasa un ID de sesión, Claude Code busca en el directorio del proyecto actual y sus git worktrees, luego en todos los demás proyectos en esta máquina. Antes de v2.1.223, la búsqueda de ID cubría solo el directorio del proyecto actual y sus git worktrees. [Las sesiones de fondo](/docs/es/agent-view) aparecen en el selector marcadas con `bg` | `claude --resume auth-refactor` |127| `--resume`, `-r` | Reanuda una sesión específica por ID o nombre, o muestra un selector interactivo para elegir una sesión. En lugar de un ID, puedes pasar la ruta absoluta al archivo de [transcripción](/docs/es/sessions#where-transcripts-are-stored) `.jsonl` de una sesión. El selector y búsqueda de nombre incluyen sesiones que añadieron este directorio con `/add-dir`. Cuando pasas un ID de sesión, Claude Code busca en el directorio del proyecto actual y sus git worktrees, luego en todos los demás proyectos en esta máquina. Antes de v2.1.223, la búsqueda de ID cubría solo el directorio del proyecto actual y sus git worktrees. [Las sesiones en segundo plano](/docs/es/agent-view) aparecen en el selector marcadas con `bg` | `claude --resume auth-refactor` |

128| `--safe-mode` | Comenzar con todas las personalizaciones deshabilitadas para solucionar problemas de una configuración rota: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y sugerencia de archivos, servidores LSP y memoria automática no se cargan. La autenticación, selección de modelo, herramientas integradas y permisos funcionan normalmente, lo que difiere de [`--bare`](/docs/es/headless#start-faster-with-bare-mode). La política de configuración administrada aún se aplica, incluidos hooks configurados por política, línea de estado y comandos de sugerencia de archivos; plugins administrados, skills administrados, CLAUDE.md administrado y servidores MCP configurados por política no. Útil para verificar si una personalización es lo que desencadena [fallback automático de modelo](/docs/es/model-config#automatic-model-fallback). Establece [`CLAUDE_CODE_SAFE_MODE`](/docs/es/env-vars) | `claude --safe-mode` |128| `--safe-mode` | Comienza con todas las personalizaciones deshabilitadas para solucionar problemas de una configuración rota: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y sugerencia de archivos, servidores LSP, y memoria automática no se cargan. La autenticación, selección de modelo, herramientas integradas y permisos funcionan normalmente, lo que difiere de [`--bare`](/docs/es/headless#start-faster-with-bare-mode). La política de configuración gestionada aún se aplica, incluyendo hooks configurados por política, línea de estado y comandos de sugerencia de archivos; plugins gestionados, skills gestionados, CLAUDE.md gestionado, y servidores MCP configurados por política no. Útil para verificar si una personalización es lo que desencadena [alternancia automática de modelo](/docs/es/model-config#automatic-model-fallback). Establece [`CLAUDE_CODE_SAFE_MODE`](/docs/es/env-vars) | `claude --safe-mode` |

129| `--session-id` | Usar un ID de sesión específico para la conversación (debe ser un UUID válido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |129| `--session-id` | Usa un ID de sesión específico para la conversación (debe ser un UUID válido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

130| `--setting-sources` | Lista separada por comas de fuentes de configuración a cargar (`user`, `project`, `local`) | `claude --setting-sources user,project` |130| `--setting-sources` | Lista separada por comas de fuentes de configuración a cargar (`user`, `project`, `local`) | `claude --setting-sources user,project` |

131| `--settings` | Ruta a un archivo JSON de configuración o una cadena JSON en línea. Los valores que establezca aquí anulan las mismas claves en sus archivos `settings.json` para esta sesión. Las claves que omita mantienen sus valores basados en archivos. El archivo debe ser un archivo regular no mayor de 2 MiB. Consulte [precedencia de configuración](/docs/es/settings#settings-precedence) | `claude --settings ./settings.json` |131| `--settings` | Ruta a un archivo JSON de configuración o una cadena JSON en línea. Los valores que estableces aquí anulan las mismas claves en tus archivos `settings.json` para esta sesión. Las claves que omites mantienen sus valores basados en archivos. El archivo debe ser un archivo regular no mayor de 2 MiB. Consulta [precedencia de configuración](/docs/es/settings#settings-precedence) | `claude --settings ./settings.json` |

132| `--strict-mcp-config` | Usar solo servidores MCP de `--mcp-config`, ignorando todas las demás configuraciones de MCP. Consulte [Control exclusivo con managed-mcp.json](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) para ver qué hace la bandera bajo un archivo MCP administrado | `claude --strict-mcp-config --mcp-config ./mcp.json` |132| `--strict-mcp-config` | Solo usa servidores MCP de `--mcp-config`, ignorando todas las demás configuraciones de MCP. Consulta [Control exclusivo con managed-mcp.json](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) para ver qué hace la bandera bajo un archivo MCP gestionado | `claude --strict-mcp-config --mcp-config ./mcp.json` |

133| `--system-prompt` | Reemplazar todo el indicador del sistema con texto personalizado | `claude --system-prompt "You are a Python expert"` |133| `--system-prompt` | Reemplaza el indicador del sistema completo con texto personalizado | `claude --system-prompt "You are a Python expert"` |

134| `--system-prompt-file` | Cargar indicación del sistema desde un archivo, reemplazando el indicador predeterminado | `claude --system-prompt-file ./custom-prompt.txt` |134| `--system-prompt-file` | Carga el indicador del sistema desde un archivo, reemplazando el indicador predeterminado | `claude --system-prompt-file ./custom-prompt.txt` |

135| `--system-prompt-snapshot` | Pasar `off` para reconstruir el indicador del sistema en cada solicitud en lugar de reutilizar el indicador [registrado en la primera solicitud de la conversación](#system-prompt-flags-in-resumed-conversations), por ejemplo mientras itera en el texto `--append-system-prompt` en ejecuciones `--continue`. Requiere Claude Code v2.1.257 o posterior | `claude --system-prompt-snapshot off` |135| `--system-prompt-snapshot` | Pasa `off` para reconstruir el indicador del sistema en cada solicitud en lugar de reutilizar el indicador [registrado en la primera solicitud de la conversación](#system-prompt-flags-in-resumed-conversations), por ejemplo mientras iteras en el texto `--append-system-prompt` entre ejecuciones de `--continue`. Requiere Claude Code v2.1.257 o posterior | `claude --system-prompt-snapshot off` |

136| `--teleport` | Reanudar una [sesión web](/docs/es/claude-code-on-the-web) en su terminal local | `claude --teleport` |136| `--teleport` | Reanuda una [sesión en la nube](/docs/es/claude-code-on-the-web) en tu terminal local | `claude --teleport` |

137| `--teammate-mode` | Establecer cómo se muestran los compañeros de [equipo de agente](/docs/es/agent-teams): `in-process` (predeterminado), `auto`, `tmux`, o `iterm2` (agregado en v2.1.186). Anula la configuración [`teammateMode`](/docs/es/settings-reference#teammatemode) para esta sesión. Consulte [Elegir un modo de visualización](/docs/es/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |137| `--teammate-mode` | Establece cómo los compañeros de [equipo de agentes](/docs/es/agent-teams) se muestran: `in-process` (predeterminado), `auto`, `tmux`, o `iterm2` (añadido en v2.1.186). Anula la configuración [`teammateMode`](/docs/es/settings-reference#teammatemode) para esta sesión. Consulta [Elige un modo de visualización](/docs/es/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |

138| `--tmux` | Crear una sesión tmux para el worktree. Requiere `--worktree`. Utiliza paneles nativos de iTerm2 cuando están disponibles; pase `--tmux=classic` para tmux tradicional | `claude -w feature-auth --tmux` |138| `--tmux` | Crea una sesión tmux para el worktree. Requiere `--worktree`. Usa paneles nativos de iTerm2 cuando estén disponibles; pasa `--tmux=classic` para tmux tradicional | `claude -w feature-auth --tmux` |

139| `--tools` | Restringir qué herramientas integradas puede usar Claude. Use `""` para deshabilitar todas, `"default"` para el conjunto predeterminado, o nombres de herramientas como `"Bash,Edit,Read"`. En macOS, Linux y WSL, el conjunto predeterminado deja fuera `Glob` y `Grep`, como se describe en [Comportamiento de la herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/tools-reference#task-tool-availability) aquí, Claude Code también opta por la sesión. La bandera no afecta a las herramientas MCP; para denegar también esas, use `--disallowedTools "mcp__*"`. Una lista que omita [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) no la elimina; `""` la elimina solo cuando no quedan herramientas MCP | `claude --tools "Bash,Edit,Read"` |139| `--tools` | Restringe qué herramientas integradas puede usar Claude. Usa `""` para deshabilitar todas, `"default"` para el conjunto predeterminado, o nombres de herramientas como `"Bash,Edit,Read"`. En macOS, Linux y WSL, el conjunto predeterminado deja fuera `Glob` y `Grep`, como se describe en [Comportamiento de la herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Si nombras una de las [herramientas de seguimiento de tareas](/docs/es/tools-reference#task-tool-availability) aquí, Claude Code también opta por la sesión. La bandera no afecta herramientas MCP; para negar esas también, usa `--disallowedTools "mcp__*"`. Una lista que omite [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) no la elimina; `""` la elimina solo cuando no quedan herramientas MCP | `claude --tools "Bash,Edit,Read"` |

140| `--verbose` | Habilitar registro detallado, muestra salida completa turno por turno. Anula la configuración [`viewMode`](/docs/es/settings-reference#viewmode) para esta sesión | `claude --verbose` |140| `--verbose` | Habilita el registro detallado, muestra la salida completa turno por turno. Anula la configuración [`viewMode`](/docs/es/settings-reference#viewmode) para esta sesión | `claude --verbose` |

141| `--version`, `-v` | Mostrar el número de versión | `claude -v` |141| `--version`, `-v` | Imprime el número de versión | `claude -v` |

142| `--worktree`, `-w` | Iniciar Claude en un [git worktree](/docs/es/worktrees) aislado en `<repo>/.claude/worktrees/<name>`. Si no se proporciona un nombre, Claude Code genera uno. Pase `#<number>`, una URL de solicitud de extracción de GitHub o una URL de solicitud de fusión de GitLab para [obtener ese PR o MR de `origin` y ramificar el worktree desde él](/docs/es/worktrees#branch-from-a-pull-request). La ramificación desde una solicitud de fusión de GitLab requiere Claude Code v2.1.233 o posterior | `claude -w feature-auth` |142| `--worktree`, `-w` | Inicia Claude en un [git worktree](/docs/es/worktrees) aislado en `<repo>/.claude/worktrees/<name>`. Si no das un nombre, Claude Code genera uno. Pasa `#<number>`, una URL de solicitud de extracción de GitHub, o una URL de solicitud de fusión de GitLab para [obtener ese PR o MR de `origin` y ramificar el worktree desde él](/docs/es/worktrees#branch-from-a-pull-request). Ramificar desde una solicitud de fusión de GitLab requiere Claude Code v2.1.233 o posterior | `claude -w feature-auth` |

143 143 

144<h3 id="system-prompt-flags">144<h3 id="system-prompt-flags">

145 Banderas de indicación del sistema145 Banderas de indicador del sistema

146</h3>146</h3>

147 147 

148Claude Code proporciona cinco banderas para personalizar el indicador del sistema. Cuatro establecen su texto, y con `--system-prompt-snapshot` controla si una conversación mantiene el texto con el que comenzó. Las cinco funcionan tanto en modo interactivo como no interactivo.148Claude Code proporciona cinco banderas para personalizar el indicador del sistema. Cuatro establecen su texto, y con `--system-prompt-snapshot` controlas si una conversación mantiene el texto con el que comenzó. Las cinco funcionan tanto en modos interactivos como no interactivos.

149 149 

150| Bandera | Comportamiento | Ejemplo |150| Bandera | Comportamiento | Ejemplo |

151| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |151| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

152| `--system-prompt` | Reemplaza todo el indicador predeterminado | `claude --system-prompt "You are a Python expert"` |152| `--system-prompt` | Reemplaza el indicador predeterminado completo | `claude --system-prompt "You are a Python expert"` |

153| `--system-prompt-file` | Reemplaza con contenido del archivo | `claude --system-prompt-file ./prompts/review.txt` |153| `--system-prompt-file` | Reemplaza con contenido del archivo | `claude --system-prompt-file ./prompts/review.txt` |

154| `--append-system-prompt` | Agrega al indicador predeterminado | `claude --append-system-prompt "Always use TypeScript"` |154| `--append-system-prompt` | Añade al indicador predeterminado | `claude --append-system-prompt "Always use TypeScript"` |

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

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

157 157 

158`--system-prompt` y `--system-prompt-file` son mutuamente excluyentes. Las banderas de adición se pueden combinar con cualquiera de las banderas de reemplazo.158`--system-prompt` y `--system-prompt-file` son mutuamente excluyentes. Las banderas de añadir se pueden combinar con cualquiera de las banderas de reemplazo.

159 159 

160Elija según si la identidad predeterminada de Claude Code aún se ajusta a su tarea. Use una bandera de adición cuando Claude deba seguir siendo un asistente de codificación que también sigue sus reglas adicionales: instrucciones por invocación, formato de salida o contexto de dominio para un script `-p`. Agregar preserva la orientación de herramientas predeterminada, instrucciones de seguridad y convenciones de codificación, por lo que solo proporciona lo que difiere. Use una bandera de reemplazo cuando la superficie, identidad o modelo de permiso difiera del de Claude Code, como un agente no codificador en una canalización que ningún humano observa. Reemplazar elimina todo el indicador predeterminado, incluida la orientación de herramientas e instrucciones de seguridad, por lo que usted es responsable de lo que su tarea aún necesita.160Elige basándote en si la identidad predeterminada de Claude Code aún se ajusta a tu tarea. Usa una bandera de añadir cuando Claude debe permanecer como un asistente de codificación que también sigue tus reglas adicionales: instrucciones por invocación, formato de salida, o contexto de dominio para un script `-p`. Añadir preserva la orientación de herramientas predeterminada, instrucciones de seguridad y convenciones de codificación, por lo que solo suministras lo que difiere. Usa una bandera de reemplazo cuando la superficie, identidad, o modelo de permisos difiere del de Claude Code, como un agente no codificador en una canalización que ningún humano observa. Reemplazar elimina todo el indicador predeterminado, incluyendo orientación de herramientas e instrucciones de seguridad, por lo que asumes la responsabilidad de lo que tu tarea aún necesita.

161 161 

162Para personas persistentes que puede cambiar y compartir en un proyecto, use [estilos de salida](/docs/es/output-styles). Para convenciones de proyecto que Claude siempre debe seguir, use [CLAUDE.md](/docs/es/memory). La [guía de Agent SDK sobre indicaciones del sistema](/docs/es/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) cubre la misma decisión con más profundidad.162Para personas persistentes que puedas cambiar entre ellas y compartir entre un proyecto, usa [estilos de salida](/docs/es/output-styles). Para convenciones de proyecto que Claude siempre debe seguir, usa [CLAUDE.md](/docs/es/memory). La [guía del Agent SDK sobre indicadores del sistema](/docs/es/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) cubre la misma decisión con más profundidad.

163 163 

164<h4 id="system-prompt-flags-in-resumed-conversations">164<h4 id="system-prompt-flags-in-resumed-conversations">

165 Banderas de indicación del sistema en conversaciones reanudadas165 Banderas de indicador del sistema en conversaciones reanudadas

166</h4>166</h4>

167 167 

168De forma predeterminada, Claude Code construye el indicador del sistema una vez, en la primera solicitud de una conversación, con el texto de cualquier bandera de indicación del sistema aplicada, y lo registra en la sesión. Hasta que la conversación se compacte, cada solicitud posterior usa ese indicador registrado, incluido después de que regrese a la conversación con `--resume` o `--continue`. Si pasa texto de bandera de indicación del sistema diferente, o ninguno, en ese lanzamiento posterior, entra en vigor una vez que la conversación se compacta o cuando inicia una nueva conversación.168Por defecto, Claude Code construye el indicador del sistema una vez, en la primera solicitud de una conversación, con el texto de cualquier bandera de indicador del sistema aplicada, y lo registra en la sesión. Hasta que la conversación se compacte, cada solicitud posterior usa ese indicador registrado, incluyendo después de que regreses a la conversación con `--resume` o `--continue`. Si pasas texto de bandera de indicador del sistema diferente, o ninguno, en ese lanzamiento posterior, entra en efecto una vez que la conversación se compacta o cuando comienzas una nueva conversación.

169 169 

170Si inicia Claude Code en [bare mode](/docs/es/headless#start-faster-with-bare-mode), pasando `--bare` o configurando `CLAUDE_CODE_SIMPLE=1`, el registro se mantiene desactivado a menos que pase `--system-prompt-snapshot on`. Antes de v2.1.268, las sesiones que no [obtienen banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), incluidas sesiones en Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, reconstruían el indicador en cada solicitud y `--system-prompt-snapshot` no tenía efecto.170Fuera de [sesiones en la nube](/docs/es/cloud-environments), si comienzas Claude Code en [modo bare](/docs/es/headless#start-faster-with-bare-mode) pasando `--bare` o estableciendo `CLAUDE_CODE_SIMPLE=1`, el registro permanece desactivado a menos que pases `--system-prompt-snapshot on`. Antes de v2.1.268, sesiones que no [obtienen banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), incluyendo sesiones en Amazon Bedrock, Google Cloud's Agent Platform, y Microsoft Foundry, reconstruían el indicador en cada solicitud y `--system-prompt-snapshot` no tenía efecto.

171 171 

172Para reconstruir el indicador en cada solicitud en su lugar, por ejemplo mientras itera en su redacción en ejecuciones `--continue`, pase `--system-prompt-snapshot off`. Antes de v2.1.265, pasar cualquiera de las banderas de indicación del sistema también desactivaba el registro a menos que pasara `--system-prompt-snapshot on`.172Para reconstruir el indicador en cada solicitud en su lugar, por ejemplo mientras iteras en su redacción entre ejecuciones de `--continue`, pasa `--system-prompt-snapshot off`. Antes de v2.1.265, pasar cualquiera de las banderas de indicador del sistema también desactivaba el registro a menos que pasaras `--system-prompt-snapshot on`.

173 173 

174<h2 id="see-also">174<h2 id="see-also">

175 Ver también175 Ver también

Details

7> Configure entornos en la nube para sesiones en la nube de Claude Code: niveles de acceso a la red, variables de entorno, scripts de configuración y almacenamiento en caché de entornos.7> Configure entornos en la nube para sesiones en la nube de Claude Code: niveles de acceso a la red, variables de entorno, scripts de configuración y almacenamiento en caché de entornos.

8 8 

9<Note>9<Note>

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

11</Note>11</Note>

12 12 

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

14 14 

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

16 16 

17<Info>17<Info>

18 Las sesiones de [Remote Control](/docs/es/remote-control) conectan las interfaces web y móvil a una sesión en su propia máquina, que utiliza la red y los archivos de su máquina, no un entorno en la nube. Las sesiones de canales de Claude Tag utilizan entornos a nivel de organización únicamente, ya sean [entornos compartidos](#organization-shared-environments) o [entornos autohospedados](/docs/es/self-hosted-environments).18 Las sesiones de [Remote Control](/docs/es/remote-control) conectan las interfaces web y móvil a una sesión en su propia máquina, que utiliza la red y los archivos de su máquina, no un entorno en la nube. Las sesiones de canales de Claude Tag utilizan entornos a nivel de organización únicamente, ya sean [entornos compartidos](#organization-shared-environments) o [entornos autohospedados](/docs/es/self-hosted-environments).


35 35 

36Con solo **Default** disponible, cada sesión se ejecuta en él. Cuando tiene más de un entorno, las sesiones eligen uno por superficie:36Con solo **Default** disponible, cada sesión se ejecuta en él. Cuando tiene más de un entorno, las sesiones eligen uno por superficie:

37 37 

38* En la web, la aplicación de escritorio y la aplicación móvil, las sesiones utilizan el entorno que se muestra en el [selector](#configure-your-environment). Un [valor predeterminado de la organización](#organization-shared-environments) establecido por un Propietario completa la selección cuando no ha elegido uno.38* En la aplicación de escritorio, la aplicación móvil y en claude.ai/code, las sesiones que inicia usted mismo utilizan el entorno que se muestra en el [selector](#configure-your-environment). Un [valor predeterminado de la organización](#organization-shared-environments) establecido por un Propietario completa la selección cuando no ha elegido uno. Los hilos en un [proyecto](/docs/es/claude-projects#project-settings-reference) utilizan el entorno establecido en la configuración del proyecto en su lugar.

39* Desde la CLI, Claude Code utiliza su selección de [`/remote-env`](#select-an-environment-from-the-cli), o recurre al entorno alojado por Anthropic cuando su lista tiene uno, y de lo contrario al primer entorno en su lista que no sea un entorno puente, una entrada [Remote Control](/docs/es/remote-control) que registra para representar su propia máquina en lugar de un entorno en la nube. Para un [entorno autohospedado](/docs/es/self-hosted-environments), pasar `--environment <environment-id>` con su ID `ccpool_` [cuando distribuya una sesión](/docs/es/self-hosted-environments-testing#run-the-test-loop) anula la selección de `/remote-env` y el respaldo para esa invocación. Claude Code rechaza los IDs `env_` alojados por Anthropic pasados a la bandera, así que use `/remote-env` para dirigirse a esos. La bandera requiere Claude Code v2.1.224 o posterior.39* Desde la CLI, Claude Code utiliza su selección de [`/remote-env`](#select-an-environment-from-the-cli), o recurre al entorno alojado por Anthropic cuando su lista tiene uno, y de lo contrario al primer entorno en su lista que no sea un entorno puente, una entrada [Remote Control](/docs/es/remote-control) que registra para representar su propia máquina en lugar de un entorno en la nube. Para un [entorno autohospedado](/docs/es/self-hosted-environments), pasar `--environment <environment-id>` con su ID `ccpool_` [cuando distribuya una sesión](/docs/es/self-hosted-environments-testing#run-the-test-loop) anula la selección de `/remote-env` y el respaldo para esa invocación. Claude Code rechaza los IDs `env_` alojados por Anthropic pasados a la bandera, así que use `/remote-env` para dirigirse a esos. La bandera requiere Claude Code v2.1.224 o posterior.

40 40 

41Configure un entorno cuando el valor predeterminado no sea suficiente: cuando Claude necesita alcanzar dominios fuera de la [lista permitida predeterminada](#default-allowed-domains), necesita variables de entorno establecidas para sus sesiones, o necesita dependencias instaladas antes de que comience a trabajar.41Configure un entorno cuando el valor predeterminado no sea suficiente: cuando Claude necesita alcanzar dominios fuera de la [lista permitida predeterminada](#default-allowed-domains), necesita variables de entorno establecidas para sus sesiones, o necesita dependencias instaladas antes de que comience a trabajar.


80 80 

81Cada sesión copia los valores del entorno una vez, al inicio, en variables de entorno ordinarias que cualquier comando que ejecute Claude puede leer. Debido a que las sesiones en ejecución no vuelven a leer la configuración, editar o agregar variables afecta a las sesiones que inicia después; las sesiones ya en ejecución mantienen los valores con los que comenzaron.81Cada sesión copia los valores del entorno una vez, al inicio, en variables de entorno ordinarias que cualquier comando que ejecute Claude puede leer. Debido a que las sesiones en ejecución no vuelven a leer la configuración, editar o agregar variables afecta a las sesiones que inicia después; las sesiones ya en ejecución mantienen los valores con los que comenzaron.

82 82 

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

84 84 

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

86 86 


154 Seleccionar un entorno desde la CLI154 Seleccionar un entorno desde la CLI

155</h3>155</h3>

156 156 

157Ejecute `/remote-env` en su terminal para elegir el entorno predeterminado para sesiones en la nube que crea desde la CLI, como [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-web). El comando abre un selector de sus entornos existentes y guarda su elección en la clave `remote.defaultEnvironmentId` en su [configuración de usuario](/docs/es/settings#where-settings-live), por lo que se aplica en cada proyecto en su máquina hasta que lo cambie, a menos que la misma clave esté establecida en una [capa de configuración](/docs/es/settings#settings-precedence) de mayor precedencia, como la configuración del proyecto de un repositorio.157Ejecute `/remote-env` en su terminal para elegir el entorno predeterminado para sesiones en la nube que crea desde la CLI, como [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud). El comando abre un selector de sus entornos existentes y guarda su elección en la clave `remote.defaultEnvironmentId` en su [configuración de usuario](/docs/es/settings#where-settings-live), por lo que se aplica en cada proyecto en su máquina hasta que lo cambie, a menos que la misma clave esté establecida en una [capa de configuración](/docs/es/settings#settings-precedence) de mayor precedencia, como la configuración del proyecto de un repositorio.

158 158 

159Un ID de [entorno autohospedado](/docs/es/self-hosted-environments), que tiene la forma `ccpool_...`, sigue una regla de origen más estricta. Consulte [`remote.defaultEnvironmentId`](/docs/es/settings-reference#remote-defaultenvironmentid) para las capas de configuración que Claude Code honra.159Un ID de [entorno autohospedado](/docs/es/self-hosted-environments), que tiene la forma `ccpool_...`, sigue una regla de origen más estricta. Consulte [`remote.defaultEnvironmentId`](/docs/es/settings-reference#remote-defaultenvironmentid) para las capas de configuración que Claude Code honra.

160 160 


201Para cambiar el acceso a la red de un entorno, [ábralo para editar](#configure-your-environment) y use el selector **Network access** en el diálogo. El icono de nube que abre el selector aparece en las superficies de la aplicación enumeradas bajo [El entorno Default](#the-default-environment) y en el [editor de routines](/docs/es/routines#environments-and-network-access); los entornos personales no tienen una página separada en la configuración de su cuenta claude.ai.201Para cambiar el acceso a la red de un entorno, [ábralo para editar](#configure-your-environment) y use el selector **Network access** en el diálogo. El icono de nube que abre el selector aparece en las superficies de la aplicación enumeradas bajo [El entorno Default](#the-default-environment) y en el [editor de routines](/docs/es/routines#environments-and-network-access); los entornos personales no tienen una página separada en la configuración de su cuenta claude.ai.

202 202 

203<Note>203<Note>

204 Los conectores MCP que habilita en una sesión o routine funcionan sin agregar sus hosts a **Allowed domains**, porque el tráfico del conector viaja a través de los servidores de Anthropic en lugar de la red de la sesión. Configura conectores por sesión o por routine; elimina los que no necesites para limitar qué herramientas puede alcanzar Claude. Esto se basa en el mismo canal vinculado a Anthropic anotado bajo [Seguridad y aislamiento](/docs/es/claude-code-on-the-web#security-and-isolation).204 Los conectores MCP que habilita en una sesión o routine funcionan sin agregar sus hosts a **Allowed domains**, porque el tráfico del conector viaja a través de los servidores de Anthropic en lugar de la red de la sesión. Esto se basa en el mismo canal vinculado a Anthropic anotado bajo [Seguridad y aislamiento](/docs/es/claude-code-on-the-web#security-and-isolation). Desactive cualquier conector que no necesite para limitar qué herramientas puede alcanzar Claude.

205</Note>205</Note>

206 206 

207<h3 id="access-levels">207<h3 id="access-levels">


243* **Las sesiones en este entorno abren artefactos públicos de otra organización**: Claude Code obtiene esos del host directamente, así que agréguelo a esta lista.243* **Las sesiones en este entorno abren artefactos públicos de otra organización**: Claude Code obtiene esos del host directamente, así que agréguelo a esta lista.

244* **Está configurando la CLI local o un ejecutor autohospedado**: mantenga el host en esa lista permitida. Consulte [requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) y los [requisitos de red](/docs/es/self-hosted-environments-deploy#network-requirements) autohospedados.244* **Está configurando la CLI local o un ejecutor autohospedado**: mantenga el host en esa lista permitida. Consulte [requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) y los [requisitos de red](/docs/es/self-hosted-environments-deploy#network-requirements) autohospedados.

245 245 

246Cada entorno tiene su propia lista de dominios permitidos; no hay una lista permitida a nivel de organización que los administradores puedan enviar a los entornos de cada miembro. La [configuración administrada por servidor](/docs/es/server-managed-settings) aún se aplica dentro de sesiones en la nube, pero ninguna de ellas agrega dominios a la lista permitida de red del entorno.246Cada entorno tiene su propia lista de dominios permitidos; no hay una lista permitida a nivel de organización que los administradores puedan enviar a los entornos de cada miembro. La [configuración administrada por servidor](/docs/es/server-managed-settings) aún se aplica dentro de sesiones en la nube, pero ninguna de ellas agrega dominios a la lista permitida de red del entorno. Para dar a un equipo una lista estándar, un Propietario puede crear un [entorno compartido de la organización](#organization-shared-environments) con acceso a la red **Custom** y esa lista.

247 247 

248<h3 id="github-proxy">248<h3 id="github-proxy">

249 Proxy de GitHub249 Proxy de GitHub


289| | Disponible en sesiones en la nube | Por qué |289| | Disponible en sesiones en la nube | Por qué |

290| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |290| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

291| Su `CLAUDE.md` del repositorio | Sí | Parte del clon |291| Su `CLAUDE.md` del repositorio | Sí | Parte del clon |

292| Sus hooks `.claude/settings.json` del repositorio | Sí | Parte del clon |292| Sus hooks `.claude/settings.json` del repositorio y reglas de permisos | Sí, en una sesión con un repositorio | Parte del clon. Una sesión con varios repositorios, incluido un hilo de [proyecto](/docs/es/claude-projects#what-threads-pick-up-from-your-repositories), comienza por encima de los clones y no los lee |

293| Sus servidores MCP `.mcp.json` del repositorio | Sí | Parte del clon |293| Sus servidores MCP `.mcp.json` del repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión |

294| Su `.claude/rules/` del repositorio | Sí | Parte del clon |294| Su `.claude/rules/` del repositorio | Sí | Parte del clon |

295| Su `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repositorio | Sí | Parte del clon |295| Su `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repositorio | Sí | Parte del clon |

296| Plugins declarados en `.claude/settings.json` | Sí | Instalados al inicio de la sesión desde el [marketplace](/docs/es/plugin-marketplaces) que declaró. Requiere acceso a la red para alcanzar la fuente del marketplace |296| Plugins declarados en `.claude/settings.json` | Sí | Instalados al inicio de la sesión desde el [marketplace](/docs/es/plugin-marketplaces) que declaró. Requiere acceso a la red para alcanzar la fuente del marketplace |


298| Su `~/.claude/CLAUDE.md` de usuario | No | Vive en su máquina, no en el repositorio |298| Su `~/.claude/CLAUDE.md` de usuario | No | Vive en su máquina, no en el repositorio |

299| Su `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` de usuario | No | Viven en su máquina, no en el repositorio. Confirme los en el directorio `.claude/` del repositorio en su lugar. Las sesiones en la nube cargan automáticamente las skills que habilita en claude.ai |299| Su `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` de usuario | No | Viven en su máquina, no en el repositorio. Confirme los en el directorio `.claude/` del repositorio en su lugar. Las sesiones en la nube cargan automáticamente las skills que habilita en claude.ai |

300| Plugins habilitados solo en su configuración de usuario | No | El `enabledPlugins` con alcance de usuario vive en `~/.claude/settings.json`. Declárelos en el `.claude/settings.json` del repositorio en su lugar, o habilítelos para su cuenta claude.ai para que Claude Code los cargue como [plugins sincronizados](/docs/es/plugins-reference#synced-plugins) |300| Plugins habilitados solo en su configuración de usuario | No | El `enabledPlugins` con alcance de usuario vive en `~/.claude/settings.json`. Declárelos en el `.claude/settings.json` del repositorio en su lugar, o habilítelos para su cuenta claude.ai para que Claude Code los cargue como [plugins sincronizados](/docs/es/plugins-reference#synced-plugins) |

301| Servidores MCP que agregó con `claude mcp add` en el alcance local predeterminado o el alcance de usuario | No | Esos escriben en `~/.claude.json` en su máquina, no en el repositorio. Agregue el servidor con `claude mcp add --scope project`, que escribe el [`.mcp.json`](/docs/es/mcp#project-scope) del repositorio, y confirme ese archivo |301| Servidores MCP que agregó con `claude mcp add` en el alcance local predeterminado o el alcance de usuario | No | Esos escriben en `~/.claude.json` en su máquina, no en el repositorio. Agregue el servidor con `claude mcp add --scope project`, que escribe el [`.mcp.json`](/docs/es/mcp#project-scope) del repositorio, y confirme ese archivo. Una sesión con un repositorio lo carga |

302| Variables de transporte en el bloque `env` de `.claude/settings.json` de su repositorio, como `NODE_EXTRA_CA_CERTS` y las [variables de certificado de cliente mTLS](/docs/es/network-config#mtls-authentication) | No | El entorno de alojamiento administra la conexión de API de la sesión, por lo que Claude Code ignora estas claves y anota cada clave ignorada en el registro de depuración de la sesión |302| Variables de transporte en el bloque `env` de `.claude/settings.json` de su repositorio, como `NODE_EXTRA_CA_CERTS` y las [variables de certificado de cliente mTLS](/docs/es/network-config#mtls-authentication) | No | El entorno de alojamiento administra la conexión de API de la sesión, por lo que Claude Code ignora estas claves y anota cada clave ignorada en el registro de depuración de la sesión |

303| Claves de API y tokens para servicios que Claude llama | En planes Pro y Max, como [credenciales de API](#add-api-credentials) | Agrega la clave una vez en el entorno y el proxy del agente la adjunta a las solicitudes de los hosts que enumera. Una clave que el proxy del agente [no puede adjuntar](#requests-that-never-get-the-credential), o cualquier clave en un plan Team o Enterprise, permanece en una variable de entorno |303| Claves de API y tokens para servicios que Claude llama | En planes Pro y Max, como [credenciales de API](#add-api-credentials) | Agrega la clave una vez en el entorno y el proxy del agente la adjunta a las solicitudes de los hosts que enumera. Una clave que el proxy del agente [no puede adjuntar](#requests-that-never-get-the-credential), o cualquier clave en un plan Team o Enterprise, permanece en una variable de entorno |

304| Autenticación interactiva como AWS SSO | No | No compatible. SSO requiere inicio de sesión basado en navegador que no puede ejecutarse en una sesión en la nube |304| Autenticación interactiva como AWS SSO | No | No compatible. SSO requiere inicio de sesión basado en navegador que no puede ejecutarse en una sesión en la nube |


329 329 

330¹ Bun está instalado pero tiene [problemas de compatibilidad](#install-dependencies-with-a-sessionstart-hook) conocidos con proxy para obtención de paquetes.330¹ Bun está instalado pero tiene [problemas de compatibilidad](#install-dependencies-with-a-sessionstart-hook) conocidos con proxy para obtención de paquetes.

331 331 

332Para obtener las versiones de la mayoría de las herramientas en esta tabla, pida a Claude que ejecute `check-tools` en una sesión en la nube. Es un comando de shell instalado en la VM de la sesión, no un slash command; pide a Claude porque [Claude ejecuta todos los comandos de VM para usted](#run-tests-start-services-and-add-packages). Para una herramienta que no reporta, como Ruby, PHP, bun, PostgreSQL o Redis, pida a Claude que ejecute el comando de versión propia de la herramienta, por ejemplo `psql --version`.332Para obtener las versiones de la mayoría de las herramientas en esta tabla, pida a Claude que ejecute `check-tools` en una sesión en la nube. Es un comando de shell instalado en la VM de la sesión, no un comando que escriba con `/`; pide a Claude porque [Claude ejecuta todos los comandos de VM para usted](#run-tests-start-services-and-add-packages). Para una herramienta que no reporta, como Ruby, PHP, bun, PostgreSQL o Redis, pida a Claude que ejecute el comando de versión propia de la herramienta, por ejemplo `psql --version`.

333 333 

334Las versiones de Node.js se instalan en `/opt/node20`, `/opt/node21` y `/opt/node22`, con 22 en `PATH` de forma predeterminada. Para trabajar con una versión diferente, pida a Claude que anteponga el directorio `bin` de esa versión, como `/opt/node20/bin`, a `PATH`.334Las versiones de Node.js se instalan en `/opt/node20`, `/opt/node21` y `/opt/node22`, con 22 en `PATH` de forma predeterminada. Para trabajar con una versión diferente, pida a Claude que anteponga el directorio `bin` de esa versión, como `/opt/node20/bin`, a `PATH`.

335 335 


358 358 

359Cada sesión en la nube tiene una URL de transcripción en claude.ai, y la sesión puede leer su propio ID desde la variable de entorno `CLAUDE_CODE_REMOTE_SESSION_ID`. Úselo para poner un enlace rastreable en cuerpos de PR, mensajes de confirmación, publicaciones de Slack o informes generados para que un revisor pueda abrir la ejecución que los produjo.359Cada sesión en la nube tiene una URL de transcripción en claude.ai, y la sesión puede leer su propio ID desde la variable de entorno `CLAUDE_CODE_REMOTE_SESSION_ID`. Úselo para poner un enlace rastreable en cuerpos de PR, mensajes de confirmación, publicaciones de Slack o informes generados para que un revisor pueda abrir la ejecución que los produjo.

360 360 

361Las confirmaciones que Claude crea en una sesión en la nube incluyen un remolque de git `Claude-Session: <url>`, y los cuerpos de PR incluyen la URL de la sesión en su propia línea. Esto requiere v2.1.179 o posterior. Para omitir el remolque y el enlace del cuerpo de PR, establezca [`attribution.sessionUrl`](/docs/es/settings-reference#attribution-sessionurl) en `false`. La configuración requiere v2.1.182 o posterior.361Las confirmaciones que Claude crea en una sesión en la nube incluyen un remolque de git `Claude-Session: <url>`, y los cuerpos de PR incluyen la URL de la sesión en su propia línea. Para omitir el remolque y el enlace del cuerpo de PR, establezca [`attribution.sessionUrl`](/docs/es/settings-reference#attribution-sessionurl) en `false`.

362 362 

363Para incluir el enlace de la sesión en algo que no sea una confirmación o PR, como un mensaje de Slack que Claude publica o un archivo de informe que escribe, pida a Claude que ejecute el siguiente comando y use su salida. El comando convierte el prefijo `cse_` en el valor de la variable de entorno al prefijo `session_` que espera la URL de transcripción:363Para incluir el enlace de la sesión en algo que no sea una confirmación o PR, como un mensaje de Slack que Claude publica o un archivo de informe que escribe, pida a Claude que ejecute el siguiente comando y use su salida. El comando convierte el prefijo `cse_` en el valor de la variable de entorno al prefijo `session_` que espera la URL de transcripción:

364 364 


467| **Cuándo se ejecutan** | Antes de que se lance Claude Code, omitido cuando existe un [entorno en caché](#environment-caching) | Después de que se lance Claude Code, en cada sesión incluyendo reanudadas |467| **Cuándo se ejecutan** | Antes de que se lance Claude Code, omitido cuando existe un [entorno en caché](#environment-caching) | Después de que se lance Claude Code, en cada sesión incluyendo reanudadas |

468| **Dónde se ejecutan** | Solo sesiones en la nube | Sesiones locales y en la nube |468| **Dónde se ejecutan** | Solo sesiones en la nube | Sesiones locales y en la nube |

469 469 

470Si tiene hooks SessionStart en su `~/.claude/settings.json` a nivel de usuario, no espere que estén en la nube: la configuración a nivel de usuario permanece en su máquina. En una sesión en la nube, Claude Code ejecuta hooks del repositorio y de la [configuración administrada por servidor](/docs/es/server-managed-settings) de su organización.470Si tiene hooks SessionStart en su `~/.claude/settings.json` a nivel de usuario, no espere que estén en la nube. La configuración a nivel de usuario permanece en su máquina. Qué otros hooks se ejecutan depende de dónde se ejecute la sesión:

471 471 

472En un [entorno autohospedado](/docs/es/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code también ejecuta los hooks que el operador sembró desde el `~/.claude/` del host del ejecutor, y los hooks en el archivo de configuración administrada de la imagen del ejecutor cuando ese archivo es uno de los [orígenes administrados que Claude Code aplica](/docs/es/managed-settings#how-claude-code-combines-managed-sources).472* **Entorno alojado por Anthropic**: Claude Code ejecuta hooks del repositorio y de la [configuración administrada por servidor](/docs/es/server-managed-settings) de su organización.

473* **[Entorno autohospedado](/docs/es/self-hosted-environments-configuration#permissions-and-tool-approval)**: Claude Code también ejecuta los hooks que el operador sembró desde el `~/.claude/` del host del ejecutor, y los hooks en el archivo de configuración administrada de la imagen del ejecutor cuando ese archivo es uno de los [orígenes administrados que Claude Code aplica](/docs/es/managed-settings#how-claude-code-combines-managed-sources).

473 474 

474<h3 id="install-dependencies-with-a-sessionstart-hook">475<h3 id="install-dependencies-with-a-sessionstart-hook">

475 Instalar dependencias con un hook SessionStart476 Instalar dependencias con un hook SessionStart


523 524 

524Los hooks SessionStart se comportan igual en la nube que localmente, con estas advertencias:525Los hooks SessionStart se comportan igual en la nube que localmente, con estas advertencias:

525 526 

526* **Sin alcance solo en la nube**: los hooks se ejecutan en sesiones locales y en la nube. Para omitir la ejecución local, verifique la variable de entorno `CLAUDE_CODE_REMOTE` como se muestra arriba.527* **Un repositorio por sesión**: una sesión con varios repositorios no carga hooks de ningún `.claude/settings.json` del repositorio, por lo que un hook SessionStart que defina allí no se ejecuta. Instale dependencias para esas sesiones con un [script de configuración](#setup-scripts) en su lugar.

528* **Sin alcance solo en la nube**: los hooks se ejecutan en sesiones locales y en la nube. Para omitir la ejecución local, salga temprano a menos que la variable de entorno `CLAUDE_CODE_REMOTE` sea `true`, de la manera que lo hace el [script de instalación de dependencias](#install-dependencies-with-a-sessionstart-hook).

527* **Requiere acceso a la red**: los comandos de instalación necesitan alcanzar registros de paquetes. Si su entorno usa acceso a la red **None**, estos hooks fallan. La [lista permitida predeterminada](#default-allowed-domains) bajo **Trusted** cubre npm, PyPI, RubyGems y crates.io.529* **Requiere acceso a la red**: los comandos de instalación necesitan alcanzar registros de paquetes. Si su entorno usa acceso a la red **None**, estos hooks fallan. La [lista permitida predeterminada](#default-allowed-domains) bajo **Trusted** cubre npm, PyPI, RubyGems y crates.io.

528* **Compatibilidad con proxy**: en entornos alojados por Anthropic, todo el tráfico saliente pasa por un [proxy de seguridad](#security-proxy), y algunos administradores de paquetes no funcionan correctamente con él; Bun es un ejemplo conocido. En un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#default-deny-egress), el tráfico saliente va a través de su propio límite de red en su lugar.530* **Compatibilidad con proxy**: en entornos alojados por Anthropic, todo el tráfico saliente pasa por un [proxy de seguridad](#security-proxy), y algunos administradores de paquetes no funcionan correctamente con él; Bun es un ejemplo conocido. En un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#default-deny-egress), el tráfico saliente va a través de su propio límite de red en su lugar.

529* **Agrega latencia de inicio**: los hooks se ejecutan cada vez que comienza o se reanuda una sesión, a diferencia de los scripts de configuración que se benefician del [almacenamiento en caché del entorno](#environment-caching). Mantenga los scripts de instalación rápidos verificando si las dependencias ya están presentes antes de reinstalar.531* **Agrega latencia de inicio**: los hooks se ejecutan cada vez que comienza o se reanuda una sesión, a diferencia de los scripts de configuración que se benefician del [almacenamiento en caché del entorno](#environment-caching). Mantenga los scripts de instalación rápidos verificando si las dependencias ya están presentes antes de reinstalar.


792 Recursos relacionados794 Recursos relacionados

793</h2>795</h2>

794 796 

795* [Claude Code en la web](/docs/es/claude-code-on-the-web): inicie, administre y comparta sesiones en la nube797* [Cloud sessions reference](/docs/es/claude-code-on-the-web): inicie, administre y comparta sesiones en la nube

796* [Inicio rápido web](/docs/es/web-quickstart): conecte GitHub e inicie su primera sesión en la nube798* [Cloud sessions quickstart](/docs/es/web-quickstart): conecte GitHub e inicie su primera sesión en la nube

797* [Claude Tag](https://claude.com/docs/claude-tag/overview): las sesiones que Claude inicia desde Slack se ejecutan en los mismos entornos799* [Claude Tag](https://claude.com/docs/claude-tag/overview): las sesiones que Claude inicia desde Slack se ejecutan en los mismos entornos

798* [Routines](/docs/es/routines): las ejecuciones programadas utilizan los mismos entornos y niveles de acceso a la red800* [Routines](/docs/es/routines): las ejecuciones programadas utilizan los mismos entornos y niveles de acceso a la red

799* [Remote Control](/docs/es/remote-control): ejecute sesiones en la red y archivos de su propia máquina en su lugar801* [Remote Control](/docs/es/remote-control): ejecute sesiones en la red y archivos de su propia máquina en su lugar

800* [Entornos autohospedados](/docs/es/self-hosted-environments): ejecute sesiones en la nube en la infraestructura propia de su organización802* [Entornos autohospedados](/docs/es/self-hosted-environments): ejecute sesiones en la nube en la infraestructura propia de su organización

801* [Hooks SessionStart](/docs/es/hooks#sessionstart): configuración confirmada en el repositorio que se ejecuta en sesiones locales y en la nube803* [SessionStart hooks](/docs/es/hooks#sessionstart): configuración confirmada en el repositorio que se ejecuta en sesiones locales y en la nube

802* [Configuración administrada por servidor](/docs/es/server-managed-settings): política de la organización que llega a sesiones en la nube804* [Configuración administrada por servidor](/docs/es/server-managed-settings): política de la organización que llega a sesiones en la nube

code-review.md +4 −2

Details

58 58 

59Responder a un comentario en línea no solicita a Claude que responda o actualice el PR. Para actuar sobre un hallazgo, corrija el código y haga push. Si el PR está suscrito a revisiones activadas por push, la siguiente ejecución resuelve el hilo cuando se corrige el problema. Para solicitar una revisión nueva sin hacer push, comente `@claude review` como un [comentario de PR de nivel superior](#manually-trigger-reviews).59Responder a un comentario en línea no solicita a Claude que responda o actualice el PR. Para actuar sobre un hallazgo, corrija el código y haga push. Si el PR está suscrito a revisiones activadas por push, la siguiente ejecución resuelve el hilo cuando se corrige el problema. Para solicitar una revisión nueva sin hacer push, comente `@claude review` como un [comentario de PR de nivel superior](#manually-trigger-reviews).

60 60 

61Para descartar un hallazgo sin un cambio de código, resuelva su hilo; responder no lo descarta.

62 

61<h3 id="check-run-output">63<h3 id="check-run-output">

62 Salida de ejecución de verificación64 Salida de ejecución de verificación

63</h3>65</h3>


195 197 

196`REVIEW.md` es un archivo en la raíz de su repositorio que personaliza Code Review para su repositorio. Los agentes en la canalización de revisión que encuentran y verifican hallazgos reciben su contenido como las instrucciones de revisión de su repositorio, junto con la orientación de revisión predeterminada de Code Review, y los agentes que clasifican y reportan hallazgos la consultan antes de establecer la severidad y escribir la revisión.198`REVIEW.md` es un archivo en la raíz de su repositorio que personaliza Code Review para su repositorio. Los agentes en la canalización de revisión que encuentran y verifican hallazgos reciben su contenido como las instrucciones de revisión de su repositorio, junto con la orientación de revisión predeterminada de Code Review, y los agentes que clasifican y reportan hallazgos la consultan antes de establecer la severidad y escribir la revisión.

197 199 

198Los agentes leen el texto del archivo tal como está, por lo que `REVIEW.md` son instrucciones simples: la [sintaxis de importación `@`](/docs/es/memory#import-additional-files) no se expande, y los archivos referenciados no se leen junto con ella. Ponga las reglas que desea aplicar directamente en el archivo.200Ponga las reglas que desea aplicar directamente en `REVIEW.md`.

199 201 

200<h4 id="what-you-can-tune">202<h4 id="what-you-can-tune">

201 Qué puede ajustar203 Qué puede ajustar


359 </Step>361 </Step>

360</Steps>362</Steps>

361 363 

362Claude reporta los hallazgos como texto en la respuesta en ambas ejecuciones, incluso cuando una aplicación host solicita la lista de hallazgos descrita a continuación:364Claude reporta los hallazgos como texto en la respuesta en ambas ejecuciones, incluso cuando una aplicación host solicita una lista de hallazgos:

363 365 

364* En una sesión de terminal, donde `/code-review` ejecuta la revisión como un [subagente bifurcado](/docs/es/skills#run-skills-in-a-subagent)366* En una sesión de terminal, donde `/code-review` ejecuta la revisión como un [subagente bifurcado](/docs/es/skills#run-skills-in-a-subagent)

365* En una ejecución `-p` con salida de texto o JSON367* En una ejecución `-p` con salida de texto o JSON

commands.md +55 −54

Details

52</Note>52</Note>

53 53 

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

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

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

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

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

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

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

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

62| `/autofix-pr [prompt]` | Genera una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) que observa el PR de la rama actual y envía correcciones cuando CI falla o los revisores dejan comentarios. Detecta el PR abierto de tu rama extraída con `gh pr view`; para observar un PR diferente, primero extrae su rama. De forma predeterminada, se le dice a la sesión en la nube que corrija todos los fallos de CI y comentarios de revisión; pasa un prompt para darle instrucciones diferentes, por ejemplo `/autofix-pr only fix lint and type errors`. Requiere la CLI `gh` y acceso a [Claude Code en la web](/docs/es/claude-code-on-the-web) |62| `/autofix-pr [prompt]` | Genera una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) que observa el PR de la rama actual y envía correcciones cuando CI falla o los revisores dejan comentarios. Detecta el PR abierto desde tu rama extraída con `gh pr view`; para observar un PR diferente, primero extrae su rama. De forma predeterminada, se le dice a la sesión en la nube que corrija cada fallo de CI y comentario de revisión; pasa un prompt para darle instrucciones diferentes, por ejemplo `/autofix-pr only fix lint and type errors`. Requiere la CLI `gh` y acceso a [Claude Code en la web](/docs/es/claude-code-on-the-web) |

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

64| `/batch <instruction>` | **[Skill](/docs/es/skills#bundled-skills).** Orquesta cambios a gran escala en una base de código en paralelo. Investiga la base de código, descompone el trabajo en 5 a 30 unidades independientes y presenta un plan. Una vez aprobado, genera un [subagente de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) por unidad en un [git worktree](/docs/es/worktrees) aislado. Cada subagente implementa su unidad, ejecuta pruebas y abre una solicitud de extracción. Requiere un repositorio git. Ejemplo: `/batch migrate src/ from JavaScript to TypeScript` |64| `/batch <instruction>` | **[Skill](/docs/es/skills#bundled-skills).** Orquesta cambios a gran escala en toda una base de código en paralelo. Investiga la base de código, descompone el trabajo en 5 a 30 unidades independientes y presenta un plan. Una vez aprobado, genera un [subagente de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) por unidad en un [git worktree](/docs/es/worktrees) aislado. Cada subagente implementa su unidad, ejecuta pruebas y abre una solicitud de extracción. Requiere un repositorio git. Ejemplo: `/batch migrate src/ from JavaScript to TypeScript` |

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

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

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

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

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

70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Ejecuta `migrate` para actualizar el código existente de Claude API a un modelo más nuevo. Ejecuta `upgrade` para mover la dependencia del SDK de Anthropic de tu proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x. Ejecuta `managed-agents-onboard` para un tutorial que crea un nuevo Managed Agent. Ejecuta `prompt-audit` para marcar instrucciones escritas para modelos más antiguos en tus prompts, skills y descripciones de herramientas y proponer correcciones como un diff. Ejecuta `cost-optimize` para perfilar dónde va el gasto de Claude API de tu proyecto y proponer ahorros de opciones como almacenamiento en caché de prompts, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez. El subcomando `prompt-audit` requiere Claude Code v2.1.221 o posterior, `upgrade` requiere v2.1.236 o posterior, y `cost-optimize` requiere v2.1.247 o posterior |70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Ejecuta `migrate` para actualizar el código existente de Claude API a un modelo más nuevo. Ejecuta `upgrade` para mover la dependencia del SDK de Anthropic de tu proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x. Ejecuta `managed-agents-onboard` para un tutorial que crea un nuevo Managed Agent. Ejecuta `prompt-audit` para marcar instrucciones escritas para modelos más antiguos en tus prompts, skills y descripciones de herramientas y proponer correcciones como un diff. Ejecuta `cost-optimize` para perfilar dónde va el gasto de Claude API de tu proyecto y proponer ahorros de opciones como almacenamiento en caché de prompts, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez. Ejecuta `build-eval` para construir un conjunto de evaluación para tu aplicación impulsada por Claude, e `hillclimb` para mejorar iterativamente la aplicación contra una evaluación existente. El subcomando `prompt-audit` requiere Claude Code v2.1.221 o posterior, `upgrade` requiere v2.1.236 o posterior, `cost-optimize` requiere v2.1.247 o posterior, y `build-eval` e `hillclimb` requieren v2.1.259 o posterior |

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

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

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

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

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

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

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

78| `/cost` | Alias para `/usage` |78| `/cost` | Alias para `/usage` |

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

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

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

82| `/design [brief]` | **[Skill](/docs/es/skills#bundled-skills).** Redacta maquetas de UI, flujos de pantalla, páginas de destino o carteles como artículos en un lienzo, publicados como un [artefacto](/docs/es/artifacts#draft-a-design-canvas) que ejecuta una vista previa de investigación del editor de Claude Design, por ejemplo `/design a settings screen for a mobile banking app`. Donde el guardado está habilitado para tu cuenta, editas los artículos en el lienzo y guardas para publicar una nueva versión; de lo contrario, ves el borrador y lo exportas como PNG o PDF. Requiere una sesión donde los [artefactos estén disponibles](/docs/es/artifacts#availability) y Claude Code v2.1.234 o posterior. Disponible en la API de Anthropic. En Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y Claude Platform en AWS, los artefactos no están disponibles, por lo que el comando no está disponible allí |82| `/design [brief]` | **[Skill](/docs/es/skills#bundled-skills).** Redacta maquetas de UI, flujos de pantalla, páginas de destino o carteles como artículos en un lienzo, publicados como un [artefacto](/docs/es/artifacts#draft-a-design-canvas) que ejecuta una vista previa de investigación del editor de Claude Design, por ejemplo `/design a settings screen for a mobile banking app`. Donde el guardado está habilitado para tu cuenta, editas los artículos en el lienzo y guardas para publicar una nueva versión; de lo contrario, ves el borrador y lo exportas como PNG o PDF. Requiere una sesión donde [los artefactos estén disponibles](/docs/es/artifacts#availability) y Claude Code v2.1.234 o posterior. Disponible en la API de Anthropic. En Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y Claude Platform en AWS, los artefactos no están disponibles, por lo que el comando no está disponible allí |

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

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

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

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

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

88| `/effort [level\|auto\|status]` | Establece el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level): `low` a `xhigh`, `max`, [`ultracode`](/docs/es/workflows#let-claude-decide-with-ultracode), o `auto`; `status` lo imprime. `max` y `ultracode` son solo de sesión; la clave [`ultracode`](/docs/es/settings-reference#ultracode) persiste. Ejecútalo mientras Claude está respondiendo y, una vez que confirmes la [advertencia de caché](/docs/es/prompt-caching#changing-effort-level), si Claude Code muestra una, Claude Code aplica el nuevo nivel a la siguiente solicitud en ese turno. Antes de v2.1.242, Claude Code decidía desde una bandera de característica que obtenía de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](/docs/es/third-party-integrations). Funciona en `-p` fuera de la [retención de esfuerzo](/docs/es/model-config#adjust-effort-level) |88| `/effort [level\|auto\|status]` | Establece el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level): `low` a `xhigh`, `max`, [`ultracode`](/docs/es/workflows#let-claude-decide-with-ultracode), o `auto`; `status` lo imprime. `max` y `ultracode` son solo de sesión; la clave [`ultracode`](/docs/es/settings-reference#ultracode) persiste. Ejecútalo mientras Claude está respondiendo y, una vez que confirmes la [advertencia de caché](/docs/es/prompt-caching#changing-effort-level), si Claude Code muestra una, Claude Code aplica el nuevo nivel a la siguiente solicitud en ese turno. Antes de v2.1.242, Claude Code decidió desde una bandera de característica que obtuvo de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](/docs/es/third-party-integrations). Funciona en `-p` fuera de la [retención de esfuerzo](/docs/es/model-config#adjust-effort-level) |

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

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

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

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

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

94| `/focus` | Alterna la vista de enfoque, que muestra solo tu último prompt, un resumen de llamada de herramienta de una línea con estadísticas de diff de edición, y la respuesta final. El resumen de llamada de herramienta también cuenta los subagentes lanzados en el turno y colapsa notificaciones de tareas de fondo completadas en un solo conteo. La selección persiste entre sesiones; establece [`viewMode`](/docs/es/settings-reference#viewmode) en la configuración para anularlo. Solo disponible en [renderizado de pantalla completa](/docs/es/fullscreen). La [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box) ofrece su propia vista de enfoque como un toggle de menú de comandos, almacenado como una configuración de extensión, independiente de `viewMode` |94| `/focus` | Alterna la vista de enfoque, que muestra solo tu último prompt, un resumen de llamada de herramienta de una línea con estadísticas de diff de edición, y la respuesta final. El resumen de llamada de herramienta también cuenta los subagentes lanzados en el turno y colapsa notificaciones de tareas de fondo completadas en un solo conteo. La selección persiste entre sesiones; establece [`viewMode`](/docs/es/settings-reference#viewmode) en la configuración para anularlo. Solo disponible en [renderizado de pantalla completa](/docs/es/fullscreen). La [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box) ofrece su propia vista de enfoque como un comando de menú alternado, almacenado como una configuración de extensión, independiente de `viewMode` |

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

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

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

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

99| `/hooks` | Ver configuraciones de [hook](/docs/es/hooks) para eventos de herramientas |99| `/hooks` | Ver configuraciones de [hook](/docs/es/hooks) para eventos de herramientas |

100| `/ide` | Gestiona integraciones de IDE y muestra estado |100| `/ide` | Gestiona integraciones de IDE y muestra estado |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

131| `/resume [session]` | Reanuda una conversación por ID o nombre, o abre el selector de sesión. Las [sesiones de fondo](/docs/es/agent-view) aparecen en el selector marcadas con `bg`; una que aún se está ejecutando no se puede reanudar aquí, así que adjúntate a ella desde `claude agents` o detenla allí primero. Alias: `/continue` |132| `/resume [session]` | Reanuda una conversación por ID o nombre, o abre el selector de sesión. [Las sesiones de fondo](/docs/es/agent-view) aparecen en el selector marcadas con `bg`; una que aún se está ejecutando no se puede reanudar aquí, así que adjúntate a ella desde `claude agents` o detenla allí primero. Alias: `/continue` |

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

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

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

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

136| `/sandbox` | Alterna [modo sandbox](/docs/es/sandboxing). Disponible solo en plataformas soportadas |137| `/sandbox` | Alterna [modo sandbox](/docs/es/sandboxing). Disponible solo en plataformas compatibles |

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

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

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

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

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

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

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

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

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

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

147| `/statusline` | Configura la [línea de estado](/docs/es/statusline) de Claude Code. Describe lo que quieres, o ejecuta sin argumentos para auto-configurar desde tu prompt de shell |148| `/statusline` | Configura la [línea de estado](/docs/es/statusline) de Claude Code. Describe lo que quieres, o ejecuta sin argumentos para auto-configurar desde tu prompt de shell |

148| `/stickers` | Ordena pegatinas de Claude Code |149| `/stickers` | Ordena pegatinas de Claude Code |

149| `/stop` | Detiene la [sesión de fondo](/docs/es/agent-view) actual. Solo disponible mientras estás adjunto a una sesión de fondo; la transcripción y cualquier worktree se mantienen. Para desvincularse sin detener, usa `/exit` o presiona `←` |150| `/stop` | Detiene la [sesión de fondo](/docs/es/agent-view) actual. Solo disponible mientras estés adjunto a una sesión de fondo; la transcripción y cualquier worktree se mantienen. Para desvincularse sin detener, usa `/exit` o presiona `←` |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

168 169 

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

170 Cómo el menú de comandos coincide con lo que escribe171 Cómo el menú de comandos coincide con lo que escribe

Details

1586 1586 

1587La sesión recorre un flujo realista con conteos de tokens representativos:1587La sesión recorre un flujo realista con conteos de tokens representativos:

1588 1588 

1589* **Antes de que escriba algo**: CLAUDE.md, memoria automática, nombres de herramientas MCP y descripciones de skills se cargan en el contexto. Su propia configuración puede agregar más aquí, como un [estilo de salida](/docs/es/output-styles) o texto de [`--append-system-prompt`](/docs/es/cli-reference).1589* **Antes de que escriba algo**: CLAUDE.md, memoria automática, nombres de herramientas MCP y descripciones de skills se cargan en el contexto. [Los archivos AGENTS.md](/docs/es/memory#agents-md) también pueden cargarse, por su cuenta o junto con CLAUDE.md. Su propia configuración puede agregar más aquí, como un [estilo de salida](/docs/es/output-styles) o texto de [`--append-system-prompt`](/docs/es/cli-reference).

1590* **Mientras Claude trabaja**: cada lectura de archivo se suma al contexto, [reglas con alcance de ruta](/docs/es/memory#path-specific-rules) se cargan automáticamente junto con archivos coincidentes, y un [hook PostToolUse](/docs/es/hooks-guide) se activa después de cada edición.1590* **Mientras Claude trabaja**: cada lectura de archivo se suma al contexto, [reglas con alcance de ruta](/docs/es/memory#path-specific-rules) se cargan automáticamente junto con archivos coincidentes, y un [hook PostToolUse](/docs/es/hooks-guide) se activa después de cada edición.

1591* **El prompt de seguimiento**: un [subagent](/docs/es/sub-agents) maneja la investigación en su propia ventana de contexto separada, por lo que las lecturas de archivos grandes se mantienen fuera de la suya. Solo el resumen y un pequeño remolque de metadatos regresan.1591* **El prompt de seguimiento**: un [subagent](/docs/es/sub-agents) maneja la investigación en su propia ventana de contexto separada, por lo que las lecturas de archivos grandes se mantienen fuera de la suya. Solo el resumen y un pequeño remolque de metadatos regresan.

1592* **Al final**: `/compact` reemplaza la conversación con un resumen estructurado. La mayoría del contenido de inicio se recarga automáticamente; la tabla a continuación muestra qué sucede con cada mecanismo.1592* **Al final**: `/compact` reemplaza la conversación con un resumen estructurado. La mayoría del contenido de inicio se recarga automáticamente; la tabla a continuación muestra qué sucede con cada mecanismo.


1598Cuando una sesión larga se compacta, Claude Code resume el historial de conversación para que quepa en la ventana de contexto. A partir de v2.1.198, la solicitud de resumen hereda la configuración de [pensamiento extendido](/docs/es/model-config#extended-thinking) de su sesión, por lo que razona con el pensamiento habilitado cuando su sesión lo tiene habilitado y se mantiene desactivado en caso contrario. El pensamiento afecta solo cómo se produce el resumen; la configuración de su sesión permanece sin cambios después. Lo que sucede con cada tipo de contenido depende de cómo se cargó:1598Cuando una sesión larga se compacta, Claude Code resume el historial de conversación para que quepa en la ventana de contexto. A partir de v2.1.198, la solicitud de resumen hereda la configuración de [pensamiento extendido](/docs/es/model-config#extended-thinking) de su sesión, por lo que razona con el pensamiento habilitado cuando su sesión lo tiene habilitado y se mantiene desactivado en caso contrario. El pensamiento afecta solo cómo se produce el resumen; la configuración de su sesión permanece sin cambios después. Lo que sucede con cada tipo de contenido depende de cómo se cargó:

1599 1599 

1600| Mecanismo | Después de la compactación |1600| Mecanismo | Después de la compactación |

1601| :------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- |1601| :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------- |

1602| Prompt del sistema y estilo de salida | Ambos siguen aplicándose |1602| Prompt del sistema y estilo de salida | Ambos siguen aplicándose |

1603| CLAUDE.md de raíz del proyecto y reglas sin alcance | Re-inyectadas desde el disco |1603| CLAUDE.md de raíz del proyecto y reglas sin alcance | Re-inyectadas desde el disco |

1604| Memoria automática | Re-inyectada desde el disco |1604| Memoria automática | Re-inyectada desde el disco |


1607| CLAUDE.md anidado en subdirectorios | Claude Code lo recarga cuando Claude lee archivos en ese subdirectorio |1607| CLAUDE.md anidado en subdirectorios | Claude Code lo recarga cuando Claude lee archivos en ese subdirectorio |

1608| Archivos que Claude leyó o editó | Claude Code re-lee hasta cinco, los más recientemente modificados primero |1608| Archivos que Claude leyó o editó | Claude Code re-lee hasta cinco, los más recientemente modificados primero |

1609| Cuerpos de skills invocados | Re-inyectados, limitados a 5,000 tokens por skill y 25,000 tokens en total; los más antiguos se descartan primero |1609| Cuerpos de skills invocados | Re-inyectados, limitados a 5,000 tokens por skill y 25,000 tokens en total; los más antiguos se descartan primero |

1610| [Comandos en segundo plano](/docs/es/interactive-mode#background-bash-commands) y [subagentes](/docs/es/sub-agents#run-subagents-in-foreground-or-background) en segundo plano | Continúan ejecutándose. Claude Code le recuerda a Claude cuáles siguen ejecutándose para que no inicie uno duplicado |

1610| Contexto que los hooks agregaron anteriormente | Resumido con el resto de la conversación |1611| Contexto que los hooks agregaron anteriormente | Resumido con el resto de la conversación |

1611| [Hooks SessionStart](/docs/es/hooks-guide#re-inject-context-after-compaction) que coinciden con la fuente `compact` | Claude Code los ejecuta y agrega su salida al contexto compactado |1612| [Hooks SessionStart](/docs/es/hooks-guide#re-inject-context-after-compaction) que coinciden con la fuente `compact` | Claude Code los ejecuta y agrega su salida al contexto compactado |

1612 1613 

1613Las reglas con alcance de ruta y los archivos CLAUDE.md anidados se cargan en el historial de mensajes cuando se lee su archivo de activación, por lo que la compactación los resume junto con todo lo demás. Justo después de la compactación, Claude Code re-lee hasta cinco de los archivos que Claude ha leído o editado en la sesión, eligiendo los modificados más recientemente, y recarga las reglas y archivos CLAUDE.md anidados que se aplican a esos archivos. Un archivo de más de 5,000 tokens regresa como una referencia de ruta sin su contenido, mostrado como `Referenced file` en lugar de `Read`. Sus reglas aún se recargan. Si una regla debe persistir a través de la compactación, elimine el frontmatter `paths:` o muévalo a CLAUDE.md de raíz del proyecto.1614Justo después de la compactación, Claude Code re-lee hasta cinco de los archivos que Claude ha leído o editado en la sesión, eligiendo los modificados más recientemente. Un archivo de más de 5,000 tokens regresa como una referencia de ruta sin su contenido, mostrado como `Referenced file` en lugar de `Read`.

1615 

1616Las reglas con alcance de ruta y los archivos CLAUDE.md anidados se cargan en el historial de mensajes cuando se lee su archivo de activación, por lo que la compactación los resume junto con todo lo demás. Si una regla debe persistir a través de la compactación, elimine el frontmatter `paths:` o muévalo a CLAUDE.md de raíz del proyecto.

1614 1617 

1615Los cuerpos de skills se re-inyectan después de la compactación, pero los skills grandes se truncan para ajustarse al límite por skill, y los skills invocados más antiguos se descartan una vez que se excede el presupuesto total. El truncamiento mantiene el inicio del archivo, por lo que coloque las instrucciones más importantes cerca de la parte superior de `SKILL.md`.1618Los cuerpos de skills se re-inyectan después de la compactación, pero los skills grandes se truncan para ajustarse al límite por skill, y los skills invocados más antiguos se descartan una vez que se excede el presupuesto total. El truncamiento mantiene el inicio del archivo, por lo que coloque las instrucciones más importantes cerca de la parte superior de `SKILL.md`.

1616 1619 

Details

10 10 

11`CLAUDE_CODE_PROCESS_WRAPPER` inicia cada proceso que Claude Code lanza desde su propio binario a través de su lanzador: el servicio de fondo, cada sesión que aloja en [vista de agente](/docs/es/agent-view), y los relanzamientos de Claude Code después de una actualización. Establézcalo en la ruta absoluta de su lanzador, y Claude Code ejecuta el lanzador con el comando de Claude Code como sus argumentos.11`CLAUDE_CODE_PROCESS_WRAPPER` inicia cada proceso que Claude Code lanza desde su propio binario a través de su lanzador: el servicio de fondo, cada sesión que aloja en [vista de agente](/docs/es/agent-view), y los relanzamientos de Claude Code después de una actualización. Establézcalo en la ruta absoluta de su lanzador, y Claude Code ejecuta el lanzador con el comando de Claude Code como sus argumentos.

12 12 

13Un lanzador que envuelve el comando `claude` en su `PATH` no puede alcanzar estos procesos, porque se inician desde la ruta directa del binario sin buscar `claude`.13Un lanzador que envuelve el comando `claude` en su `PATH` no puede alcanzar el servicio de fondo o las sesiones que aloja, porque se inician desde la ruta directa del binario sin buscar `claude`.

14 14 

15<Note>15<Note>

16 `CLAUDE_CODE_PROCESS_WRAPPER` requiere Claude Code v2.1.208 o posterior. Las versiones anteriores ignoran la variable e inician cada proceso sin envolver. La configuración equivalente [`processWrapper`](/docs/es/settings-reference#processwrapper) requiere v2.1.210 o posterior. Las versiones anteriores la ignoran como una clave desconocida, no aplican ningún lanzador y no reportan ningún error.16 `CLAUDE_CODE_PROCESS_WRAPPER` requiere Claude Code v2.1.208 o posterior. Las versiones anteriores ignoran la variable e inician cada proceso sin envolver. La configuración equivalente [`processWrapper`](/docs/es/settings-reference#processwrapper) requiere v2.1.210 o posterior. Las versiones anteriores la ignoran como una clave desconocida, no aplican ningún lanzador y no reportan ningún error.


40Los siguientes procesos no se inician a través del lanzador:40Los siguientes procesos no se inician a través del lanzador:

41 41 

42* Un [servicio de fondo instalado](/docs/es/agent-view#the-supervisor-process) cuya unidad se escribió antes de que se configurara el lanzador: `launchd` o `systemd` inicia ese proceso desde su archivo de unidad. `/status` y `claude daemon status` advierten cuando el servicio en ejecución y el lanzador configurado no coinciden, y las sesiones que el servicio genera aún se inician a través del lanzador una vez que el servicio se reinicia con la variable en su configuración.42* Un [servicio de fondo instalado](/docs/es/agent-view#the-supervisor-process) cuya unidad se escribió antes de que se configurara el lanzador: `launchd` o `systemd` inicia ese proceso desde su archivo de unidad. `/status` y `claude daemon status` advierten cuando el servicio en ejecución y el lanzador configurado no coinciden, y las sesiones que el servicio genera aún se inician a través del lanzador una vez que el servicio se reinicia con la variable en su configuración.

43* Una sesión que usted inicia usted mismo en una terminal, que se ejecuta como la invocó. Para cubrir estas sesiones, coloque un script llamado `claude` en un directorio anterior en `PATH` que ejecute su lanzador con el binario real; no reemplace el enlace simbólico administrado. Los auto-generados no consultan `PATH`, por lo que los dos lanzadores nunca se apilan.43* Una sesión que usted inicia usted mismo en una terminal, que se ejecuta como la invocó. Para cubrir estas sesiones, coloque un script llamado `claude` en un directorio anterior en `PATH` que ejecute su lanzador con el binario real; no reemplace el enlace simbólico administrado. El servicio de fondo y sus sesiones se inician sin una búsqueda de `PATH`, por lo que los dos lanzadores no se apilan allí.

44* El primer proceso de un enlace profundo `claude-cli://`, que el controlador de protocolo del sistema operativo inicia directamente. Todo lo que esa sesión inicia en el fondo después se ejecuta a través del lanzador. Para cerrar completamente este camino, [evite el registro del controlador](/docs/es/deep-links#registration-and-supported-platforms) con la configuración `disableDeepLinkRegistration`.44* El primer proceso de un enlace profundo `claude-cli://`, que el controlador de protocolo del sistema operativo inicia directamente. Todo lo que esa sesión inicia en el fondo después se ejecuta a través del lanzador. Para cerrar completamente este camino, [evite el registro del controlador](/docs/es/deep-links#registration-and-supported-platforms) con la configuración `disableDeepLinkRegistration`.

45* El relanzamiento que `--worktree` combinado con `--tmux` realiza: el multiplexor de terminal inicia ese panel, no el binario de Claude Code.45* El relanzamiento que `--worktree` combinado con `--tmux` realiza: el multiplexor de terminal inicia ese panel, no el binario de Claude Code.

46* El host de mensajería nativa que [Claude en Chrome](/docs/es/chrome) registra: el navegador lo inicia, no el binario de Claude Code.46* El host de mensajería nativa que [Claude en Chrome](/docs/es/chrome) registra: el navegador lo inicia, no el binario de Claude Code.

costs.md +1 −1

Details

146 </Step>146 </Step>

147 147 

148 <Step title="Escriba la configuración">148 <Step title="Escriba la configuración">

149 Establezca `multiplier` para un descuento de porcentaje fijo del precio de lista, enumere las cuatro tasas por token de cada modelo en `overrides`, o haga ambas. La [entrada `modelPricing`](/docs/es/settings-reference#modelpricing) tiene la forma y un ejemplo listo para pegar.149 Establezca `multiplier` por debajo de 1 para un descuento fijo o por encima de 1 para un margen, enumere las cuatro tasas por token de cada modelo en `overrides`, o haga ambas. Un margen requiere Claude Code v2.1.271 o posterior. La [entrada `modelPricing`](/docs/es/settings-reference#modelpricing) tiene la forma y un ejemplo listo para pegar.

150 </Step>150 </Step>

151 151 

152 <Step title="Implántelo a través de configuración administrada">152 <Step title="Implántelo a través de configuración administrada">

Details

240 240 

241Más allá de editar un archivo de configuración, puedes seleccionar el valor en la fila `/config` **Mensajes de tus otras sesiones**. Claude Code escribe el valor que seleccionas en tu configuración de usuario. La fila requiere Claude Code v2.1.232 o posterior y no aparece mientras la configuración administrada o la bandera `--settings` establece la clave, ya que un valor de configuración de usuario no se aplicaría entonces. Claude Code rechaza el atajo `/config crossSessionInbound=value` para esta clave.241Más allá de editar un archivo de configuración, puedes seleccionar el valor en la fila `/config` **Mensajes de tus otras sesiones**. Claude Code escribe el valor que seleccionas en tu configuración de usuario. La fila requiere Claude Code v2.1.232 o posterior y no aparece mientras la configuración administrada o la bandera `--settings` establece la clave, ya que un valor de configuración de usuario no se aplicaría entonces. Claude Code rechaza el atajo `/config crossSessionInbound=value` para esta clave.

242 242 

243Para ver qué valor se aplica, sigue las reglas de precedencia `crossSessionInbound` en la [referencia de configuración](/docs/es/settings-reference#crosssessioninbound). Cuando no se aplica ningún valor, Claude Code decide por mensaje de las dos clases de modo de permiso de las sesiones. Agrupa sesiones que [omiten mensajes de permiso](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) en una clase, y todas las otras sesiones en la otra. El modo Plan cuenta como omisión en sesiones con permisos de omisión disponibles, y [auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), `acceptEdits` y `dontAsk` cuentan como mensajes:243Para ver qué valor se aplica, sigue las reglas de precedencia `crossSessionInbound` en la [referencia de configuración](/docs/es/settings-reference#crosssessioninbound).

244 

245Cuando no se aplica ningún valor, Claude Code decide por mensaje de las dos clases de modo de permiso de las sesiones. Agrupa sesiones que [omiten mensajes de permiso](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) en una clase, y todas las otras sesiones en la otra. El modo Plan cuenta como omisión en sesiones con permisos de omisión disponibles, y [auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), `acceptEdits` y `dontAsk` cuentan como mensajes:

244 246 

245* **La sesión receptora solicita permisos**: Claude Code entrega cada mensaje. Retiene uno para tu aprobación solo cuando la sesión de envío se identifica como omitiendo mensajes de permiso.247* **La sesión receptora solicita permisos**: Claude Code entrega cada mensaje. Retiene uno para tu aprobación solo cuando la sesión de envío se identifica como omitiendo mensajes de permiso.

246* **La sesión receptora omite mensajes de permiso**: Claude Code retiene cada mensaje para tu aprobación. Entrega uno solo cuando la sesión de envío se identifica como también omitiendo.248* **La sesión receptora omite mensajes de permiso**: Claude Code retiene cada mensaje para tu aprobación. Entrega uno solo cuando la sesión de envío se identifica como también omitiendo.


254* Si la clase de modo de permiso de esta sesión cambia mientras los mensajes están retenidos, Claude Code re-aplica las reglas de entrada, entrega los mensajes que ahora acepta, y muestra un aviso.256* Si la clase de modo de permiso de esta sesión cambia mientras los mensajes están retenidos, Claude Code re-aplica las reglas de entrada, entrega los mensajes que ahora acepta, y muestra un aviso.

255* Si un cambio de configuración hace que `refuse` se aplique mientras los mensajes están retenidos, Claude Code descarta cada mensaje retenido e informa un rechazo a cada remitente que puede alcanzar.257* Si un cambio de configuración hace que `refuse` se aplique mientras los mensajes están retenidos, Claude Code descarta cada mensaje retenido e informa un rechazo a cada remitente que puede alcanzar.

256 258 

257Cuando el remitente es una sesión interactiva en la misma máquina, Claude Code muestra un aviso allí cuando el receptor retiene el mensaje, y un seguimiento cuando el receptor después lo entrega, lo deniega, o expira. Si el receptor lo rechaza, Claude Code muestra un aviso allí que el receptor no está aceptando mensajes entre sesiones y le dice al Claude del remitente que no espere o reenvíe.259Cuando el remitente es una sesión en la misma máquina, Claude Code envía un aviso de vuelta a ella cuando el receptor retiene el mensaje, y un seguimiento cuando el receptor después lo entrega, lo deniega, o expira. El aviso llega al Claude de envío, así que sabe que no debe seguir esperando un mensaje que la otra sesión no ha leído.

260 

261En una sesión de envío interactiva, el aviso aparece en la transcripción. Un remitente [`claude -p`](/docs/es/headless) lo recibe en [salida transmitida](/docs/es/headless#stream-responses) como un [mensaje `system` informativo](/docs/es/agent-sdk/typescript#sdkinformationalmessage). Los avisos a remitentes `claude -p` requieren Claude Code v2.1.271 o posterior.

262 

263Si el receptor rechaza el mensaje, el aviso del remitente dice que el receptor no está aceptando mensajes entre sesiones y le dice al Claude del remitente que no espere o reenvíe.

258 264 

259Claude Code retiene como máximo 100 mensajes, separados de la cola de entrega, y pasado eso descarta los más antiguos.265Claude Code retiene como máximo 100 mensajes, separados de la cola de entrega, y pasado eso descarta los más antiguos.

260 266 


357 Disponibilidad363 Disponibilidad

358</h2>364</h2>

359 365 

360La mensajería entre sesiones requiere Claude Code v2.1.224 o posterior en macOS, Linux y WSL 2, y v2.1.234 o posterior en Windows nativo. La disponibilidad, y qué sesiones Claude puede enviar mensajes, también dependen de tu sistema operativo, proveedor y configuración:366La mensajería entre sesiones requiere Claude Code v2.1.224 o posterior en macOS, Linux y WSL 2, y v2.1.234 o posterior en Windows nativo. La disponibilidad, y qué sesiones Claude puede enviar mensajes, también dependen de su sistema operativo, proveedor y configuración:

361 367 

362* **Sistema operativo**: disponible en macOS, Windows y Linux, incluido Linux dentro de WSL 2.368* **Sistema operativo**: disponible en macOS, Windows y Linux, incluido Linux dentro de WSL 2.

363 369 

364* **Sesiones en esta máquina**: disponible en cada proveedor, incluido Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform y Microsoft Foundry, y en sesiones que se ejecutan con [obtención de bandera de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching) desactivada. En esos proveedores, y con obtención de bandera desactivada, la mensajería en la misma máquina requiere Claude Code v2.1.248 o posterior. Claude Code entrega estos mensajes sobre un [socket por sesión en tu máquina](#the-sessions-inbox-socket), nunca a través de servidores de Anthropic.370* **Sesiones en esta máquina**: disponible en cada proveedor, incluido Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform y Microsoft Foundry, y en sesiones que se ejecutan con [obtención de bandera de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching) desactivada. En esos proveedores, y con obtención de bandera desactivada, la mensajería en la misma máquina requiere Claude Code v2.1.248 o posterior. Claude Code entrega estos mensajes sobre un [socket por sesión en su máquina](#the-sessions-inbox-socket), nunca a través de servidores de Anthropic.

365 371 

366 Para evitar que una sesión los reciba, establece [`crossSessionInbound`](#turn-off-cross-session-messaging) a `refuse`.372 Para evitar que una sesión los reciba, establezca [`crossSessionInbound`](#turn-off-cross-session-messaging) a `refuse`.

367 373 

368* **Sesiones más allá de esta máquina**: Claude encuentra tus sesiones de [Claude Code en la web](/docs/es/claude-code-on-the-web) y tus sesiones en otras máquinas desde una sesión que está conectada a Control Remoto, que necesita un inicio de sesión en claude.ai como autenticación activa de esta sesión y los otros [requisitos de Control Remoto](/docs/es/remote-control#requirements). Claude no puede encontrar esas sesiones con una clave API o en Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform y Microsoft Foundry.374* **Sesiones más allá de esta máquina**: Claude encuentra sus [sesiones en la nube](/docs/es/claude-code-on-the-web) y sus sesiones en otras máquinas desde una sesión que está conectada a Control Remoto, que necesita un inicio de sesión en claude.ai como autenticación activa de esta sesión y los otros [requisitos de Control Remoto](/docs/es/remote-control#requirements). Claude no puede encontrar esas sesiones con una clave API o en Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform y Microsoft Foundry.

369 375 

370Para verificar una sesión, escribe `/list-agents`, también disponible como `/peers`. El resultado separa una sesión que no tiene la característica de una sesión donde algo más estrecho bloqueó un mensaje, como una herramienta `SendMessage` faltante o un envío rechazado:376Para verificar una sesión, escriba `/list-agents`, también disponible como `/peers`. El resultado separa una sesión que no tiene la característica de una sesión donde algo más estrecho bloqueó un mensaje, como una herramienta `SendMessage` faltante o un envío rechazado:

371 377 

372* **`/list-agents` no se reconoce**: la sesión no tiene mensajería entre sesiones. Trabaja a través de los requisitos anteriores, comenzando con `claude --version` para el requisito de versión.378* **`/list-agents` no se reconoce**: la sesión no tiene mensajería entre sesiones. Trabaje a través de los requisitos anteriores, comenzando con `claude --version` para el requisito de versión.

373* **`/list-agents` funciona pero un envío no llegó**: la mensajería está activada, y algo más estrecho se aplica:379* **`/list-agents` funciona pero un envío no llegó**: la mensajería está activada, y algo más estrecho se aplica:

374 * **Reglas de denegación**: una [regla de permiso de denegación](#turn-off-cross-session-messaging) elimina las herramientas `SendMessage` y `ListAgents`.380 * **Reglas de denegación**: una [regla de permiso de denegación](#turn-off-cross-session-messaging) elimina las herramientas `SendMessage` y `ListAgents`.

375 * **Controles de entrada**: los [controles de entrada de la sesión receptora](#control-inbound-messages) pueden retener o descartar lo que envías.381 * **Controles de entrada**: los [controles de entrada de la sesión receptora](#control-inbound-messages) pueden retener o descartar lo que envía.

376 * **Sesión en la nube faltante**: una sesión en la nube aparece solo mientras esta sesión está conectada a [Control Remoto](/docs/es/remote-control).382 * **Sesión en la nube faltante**: una sesión en la nube aparece solo mientras esta sesión está conectada a [Control Remoto](/docs/es/remote-control).

377 * **Sesión en otra máquina faltante**: una sesión en otra de tus máquinas aparece solo cuando se ejecuta con [Control Remoto](/docs/es/remote-control) y esta sesión también está conectada.383 * **Sesión en otra máquina faltante**: una sesión en otra de sus máquinas aparece solo cuando se ejecuta con [Control Remoto](/docs/es/remote-control) y esta sesión también está conectada.

378 * **Sesión en otra máquina `offline`**: un mensaje a una sesión listada como `offline` se envía, pero [llega solo después de que la máquina de esa sesión se reconecte](#message-sessions-on-other-machines).384 * **Sesión en otra máquina `offline`**: un mensaje a una sesión listada como `offline` se envía, pero [llega solo después de que la máquina de esa sesión se reconecte](#message-sessions-on-other-machines).

379 * **Sesión en la nube o en otra máquina más antigua faltante**: Claude Code [lee esas listas de sesiones más nuevas primero y se detiene después de un número acotado de páginas](#see-which-sessions-claude-can-reach), así que Claude no puede enviar un mensaje a una sesión que cayó pasado ellas por nombre.385 * **Sesión en la nube o en otra máquina más antigua faltante**: Claude Code [lee esas listas de sesiones más nuevas primero y se detiene después de un número acotado de páginas](#see-which-sessions-claude-can-reach), así que Claude no puede enviar un mensaje a una sesión que cayó pasado ellas por nombre.

380 * **Iniciando una conversación**: [Enviar mensajes a sesiones en otras máquinas](#message-sessions-on-other-machines) cubre iniciar una conversación con una sesión más allá de esta máquina.386 * **Iniciando una conversación**: [Enviar mensajes a sesiones en otras máquinas](#message-sessions-on-other-machines) cubre iniciar una conversación con una sesión más allá de esta máquina.

data-usage.md +2 −2

Details

69 69 

70 Las transcripciones de sesiones iniciadas o continuadas más recientemente en Claude Desktop o Cowork están [exentas de ese límite de forma predeterminada](/docs/es/claude-directory#cleaned-up-automatically).70 Las transcripciones de sesiones iniciadas o continuadas más recientemente en Claude Desktop o Cowork están [exentas de ese límite de forma predeterminada](/docs/es/claude-directory#cleaned-up-automatically).

71 71 

72Puede eliminar sesiones individuales de Claude Code en la web en cualquier momento. Eliminar una sesión elimina permanentemente los datos de eventos de la sesión. Para obtener instrucciones sobre cómo eliminar sesiones, consulte [Delete sessions](/docs/es/claude-code-on-the-web#delete-sessions).72Puede eliminar sesiones individuales de la nube en cualquier momento. Eliminar una sesión elimina permanentemente los datos de eventos de la sesión. Para obtener instrucciones sobre cómo eliminar sesiones, consulte [Delete sessions](/docs/es/claude-code-on-the-web#delete-sessions).

73 73 

74Obtenga más información sobre las prácticas de retención de datos en nuestro [Privacy Center](https://privacy.anthropic.com/).74Obtenga más información sobre las prácticas de retención de datos en nuestro [Privacy Center](https://privacy.anthropic.com/).

75 75 


108 Cloud execution: Flujo de datos y dependencias108 Cloud execution: Flujo de datos y dependencias

109</h3>109</h3>

110 110 

111Cuando se utiliza [Claude Code en la web](/docs/es/claude-code-on-the-web), las sesiones se ejecutan en máquinas virtuales administradas por Anthropic de forma predeterminada en lugar de localmente. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en infraestructura que usted controla; para saber qué permanece en sus máquinas y qué aún va a Anthropic, consulte [Lo que permanece en su infraestructura](/docs/es/self-hosted-environments#what-stays-on-your-infrastructure). En sesiones en la nube alojadas por Anthropic:111Las sesiones de [Claude Code en la web](/docs/es/claude-code-on-the-web) se ejecutan en máquinas virtuales administradas por Anthropic de forma predeterminada en lugar de localmente. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en infraestructura que usted controla; para saber qué permanece en sus máquinas y qué aún va a Anthropic, consulte [Lo que permanece en su infraestructura](/docs/es/self-hosted-environments#what-stays-on-your-infrastructure). En sesiones en la nube alojadas por Anthropic:

112 112 

113* **Almacenamiento de código y datos:** Su repositorio se clona en una VM aislada. El código y los datos de sesión están sujetos a las políticas de retención y uso para su tipo de cuenta (consulte la sección Retención de datos anterior)113* **Almacenamiento de código y datos:** Su repositorio se clona en una VM aislada. El código y los datos de sesión están sujetos a las políticas de retención y uso para su tipo de cuenta (consulte la sección Retención de datos anterior)

114* **Credenciales:** La autenticación de GitHub se maneja a través de un proxy seguro; sus credenciales de GitHub nunca ingresan al sandbox114* **Credenciales:** La autenticación de GitHub se maneja a través de un proxy seguro; sus credenciales de GitHub nunca ingresan al sandbox

Details

105La mayoría de las sorpresas de configuración se remontan a un pequeño conjunto de reglas de ubicación y sintaxis. Verifique estos antes de asumir un error:105La mayoría de las sorpresas de configuración se remontan a un pequeño conjunto de reglas de ubicación y sintaxis. Verifique estos antes de asumir un error:

106 106 

107| Síntoma | Causa | Solución |107| Síntoma | Causa | Solución |

108| :------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |108| :------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

109| Hook nunca se dispara | `matcher` es una matriz JSON en lugar de una cadena | Use una cadena única con `\|` para coincidir con múltiples herramientas, por ejemplo `"Edit\|Write"`. Consulte [patrones de matcher](/docs/es/hooks#matcher-patterns). |109| Hook nunca se dispara | `matcher` es una matriz JSON en lugar de una cadena | Use una cadena única con `\|` para coincidir con múltiples herramientas, por ejemplo `"Edit\|Write"`. Consulte [patrones de matcher](/docs/es/hooks#matcher-patterns). |

110| Hook nunca se dispara | `matcher` usa `,` como separador en una versión anterior a v2.1.191 | Claude Code v2.1.191 o posterior trata `,` como un separador de lista como `\|`. Las versiones anteriores evalúan una coma como un carácter literal, por lo que `"Edit,Write"` no coincide con nada. Use `\|` en su lugar, o actualice Claude Code. |110| Hook nunca se dispara | `matcher` usa `,` como separador en una versión anterior a v2.1.191 | Claude Code v2.1.191 o posterior trata `,` como un separador de lista como `\|`. Las versiones anteriores evalúan una coma como un carácter literal, por lo que `"Edit,Write"` no coincide con nada. Use `\|` en su lugar, o actualice Claude Code. |

111| Hook nunca se dispara | El valor `matcher` está en minúsculas, por ejemplo `"bash"` | La coincidencia distingue mayúsculas de minúsculas. Los nombres de herramientas están capitalizados: `Bash`, `Edit`, `Write`, `Read`. |111| Hook nunca se dispara | El valor `matcher` está en minúsculas, por ejemplo `"bash"` | La coincidencia distingue mayúsculas de minúsculas. Los nombres de herramientas están capitalizados: `Bash`, `Edit`, `Write`, `Read`. |


115| Skill no aparece en `/skills` | El archivo de skill está en `.claude/skills/name.md` en lugar de en una carpeta | Use una carpeta con `SKILL.md` dentro: `.claude/skills/name/SKILL.md`. |115| Skill no aparece en `/skills` | El archivo de skill está en `.claude/skills/name.md` en lugar de en una carpeta | Use una carpeta con `SKILL.md` dentro: `.claude/skills/name/SKILL.md`. |

116| Skill aparece en `/skills` pero Claude nunca lo invoca | Skill tiene `disable-model-invocation: true` en su frontmatter, o su descripción no coincide con cómo formula la solicitud | Verifique la insignia en `/skills`: una etiqueta "user-only" significa que Claude no lo activará por su cuenta. Consulte [invocación de skill](/docs/es/skills). |116| Skill aparece en `/skills` pero Claude nunca lo invoca | Skill tiene `disable-model-invocation: true` en su frontmatter, o su descripción no coincide con cómo formula la solicitud | Verifique la insignia en `/skills`: una etiqueta "user-only" significa que Claude no lo activará por su cuenta. Consulte [invocación de skill](/docs/es/skills). |

117| Las instrucciones de `CLAUDE.md` del subdirectorio parecen ignoradas | Los archivos del subdirectorio se cargan bajo demanda, no al inicio de la sesión | Se cargan cuando Claude lee un archivo en ese directorio con la herramienta Read, no al lanzar y no al escribir o crear archivos allí. Consulte [cómo se cargan los archivos CLAUDE.md](/docs/es/memory#how-claude-md-files-load). |117| Las instrucciones de `CLAUDE.md` del subdirectorio parecen ignoradas | Los archivos del subdirectorio se cargan bajo demanda, no al inicio de la sesión | Se cargan cuando Claude lee un archivo en ese directorio con la herramienta Read, no al lanzar y no al escribir o crear archivos allí. Consulte [cómo se cargan los archivos CLAUDE.md](/docs/es/memory#how-claude-md-files-load). |

118| El subagente ignora las instrucciones de `CLAUDE.md` | Los agentes Explore y Plan integrados omiten `CLAUDE.md`. Los subagentes personalizados lo cargan de la misma manera que la conversación principal | Para Explore o Plan, restate la instrucción en su indicador delegado. Para un subagente personalizado, coloque las instrucciones críticas en el cuerpo del archivo del agente, que se convierte en el indicador del sistema del subagente. Consulte [qué se carga al inicio](/docs/es/sub-agents#what-loads-at-startup). |118| El subagente ignora las instrucciones de `CLAUDE.md` | Los agentes Explore y Plan integrados omiten `CLAUDE.md`. Un subagente personalizado lo carga de la misma manera que la conversación principal, a menos que su definición establezca [`omitClaudeMd`](/docs/es/sub-agents#supported-frontmatter-fields) | Para Explore o Plan, restate la instrucción en su indicador delegado. Para un subagente que establece `omitClaudeMd`, elimine el campo. Para cualquier otro subagente personalizado, coloque las instrucciones críticas en el cuerpo del archivo del agente, que se convierte en el indicador del sistema del agente. Consulte [qué se carga al inicio](/docs/es/sub-agents#what-loads-at-startup). |

119| La lógica de limpieza nunca se ejecuta al final de la sesión | No hay hook `SessionEnd` configurado | Agregue un hook `SessionEnd` en `settings.json`. Consulte la [lista de eventos de hook](/docs/es/hooks#hook-events). |119| La lógica de limpieza nunca se ejecuta al final de la sesión | No hay hook `SessionEnd` configurado | Agregue un hook `SessionEnd` en `settings.json`. Consulte la [lista de eventos de hook](/docs/es/hooks#hook-events). |

120| Los servidores MCP en `.mcp.json` nunca se cargan | El archivo está bajo `.claude/`, o sus servidores se encuentran bajo una clave `servers` de nivel superior, como en el `mcp.json` de VS Code, en lugar de `mcpServers` | La configuración de MCP del proyecto va en la raíz del repositorio como `.mcp.json`, no dentro de `.claude/`, con servidores bajo la clave `mcpServers`. Consulte [configuración de MCP](/docs/es/mcp). |120| Los servidores MCP en `.mcp.json` nunca se cargan | El archivo está bajo `.claude/`, o sus servidores se encuentran bajo una clave `servers` de nivel superior, como en el `mcp.json` de VS Code, en lugar de `mcpServers` | La configuración de MCP del proyecto va en la raíz del repositorio como `.mcp.json`, no dentro de `.claude/`, con servidores bajo la clave `mcpServers`. Consulte [configuración de MCP](/docs/es/mcp). |

121| Los servidores MCP agregados bajo `mcpServers` en `settings.json` nunca aparecen | `settings.json` no lee una clave `mcpServers` | Defina servidores de proyecto en `.mcp.json` en la raíz del repositorio, o ejecute `claude mcp add --scope user` para servidores con ámbito de usuario. Consulte [configuración de MCP](/docs/es/mcp). |121| Los servidores MCP agregados bajo `mcpServers` en `settings.json` nunca aparecen | `settings.json` no lee una clave `mcpServers` | Defina servidores de proyecto en `.mcp.json` en la raíz del repositorio, o ejecute `claude mcp add --scope user` para servidores con ámbito de usuario. Consulte [configuración de MCP](/docs/es/mcp). |

desktop.md +30 −20

Details

36* Permitir que Claude [verifique, envíe mensajes o archive sus otras sesiones](#work-across-sessions)36* Permitir que Claude [verifique, envíe mensajes o archive sus otras sesiones](#work-across-sessions)

37* [Conectar herramientas externas](#connect-external-tools) como GitHub, Slack y Linear37* [Conectar herramientas externas](#connect-external-tools) como GitHub, Slack y Linear

38* Permitir que Claude [abra aplicaciones y controle su pantalla](#let-claude-use-your-computer)38* Permitir que Claude [abra aplicaciones y controle su pantalla](#let-claude-use-your-computer)

39* Ejecutar en su máquina, en la [nube](#run-long-running-tasks-remotely), o sobre [SSH](#ssh-sessions)39* Ejecutar en su máquina, en la [nube](#run-long-running-tasks-in-the-cloud), o sobre [SSH](#ssh-sessions)

40 40 

41Para [trabajo recurrente programado](/docs/es/desktop-scheduled-tasks), [atajos de teclado](#keyboard-shortcuts), o [enviar tareas desde su teléfono](#sessions-from-dispatch), consulte las páginas y secciones vinculadas. Si ya usa la CLI basada en terminal, consulte la [comparación de CLI](#coming-from-the-cli) para ver qué se transfiere.41Para [trabajo recurrente programado](/docs/es/desktop-scheduled-tasks), [atajos de teclado](#keyboard-shortcuts), o [enviar tareas desde su teléfono](#sessions-from-dispatch), consulte las páginas y secciones vinculadas. Si ya usa la CLI basada en terminal, consulte la [comparación de CLI](#coming-from-the-cli) para ver qué se transfiere.

42 42 


47Antes de enviar su primer mensaje, configure cuatro cosas en el área de solicitud:47Antes de enviar su primer mensaje, configure cuatro cosas en el área de solicitud:

48 48 

49* **Entorno**: elija dónde se ejecuta Claude. Seleccione **Local** para su máquina, **Cloud** para una [sesión en la nube](#cloud-sessions) que continúa después de cerrar la aplicación, una [**conexión SSH**](#ssh-sessions) para una máquina remota que usted administra, o en Windows una [**distribución WSL**](/docs/es/desktop-wsl). Consulte [configuración del entorno](#environment-configuration).49* **Entorno**: elija dónde se ejecuta Claude. Seleccione **Local** para su máquina, **Cloud** para una [sesión en la nube](#cloud-sessions) que continúa después de cerrar la aplicación, una [**conexión SSH**](#ssh-sessions) para una máquina remota que usted administra, o en Windows una [**distribución WSL**](/docs/es/desktop-wsl). Consulte [configuración del entorno](#environment-configuration).

50* **Carpeta del proyecto**: seleccione la carpeta o repositorio en el que Claude trabaja. Para sesiones en la nube, puede agregar [múltiples repositorios](#run-long-running-tasks-remotely).50* **Carpeta del proyecto**: seleccione la carpeta o repositorio en el que Claude trabaja. Para sesiones en la nube, puede agregar [múltiples repositorios](#run-long-running-tasks-in-the-cloud).

51* **Modelo**: elija un [modelo](/docs/es/model-config#available-models) del menú desplegable junto al botón de envío. Puede cambiar esto durante la sesión.51* **Modelo**: elija un [modelo](/docs/es/model-config#available-models) del menú desplegable junto al botón de envío. Puede cambiar esto durante la sesión.

52* **Modo de permisos**: elija cuánta autonomía tiene Claude desde el [selector de modo](#choose-a-permission-mode). Puede cambiar esto durante la sesión.52* **Modo de permisos**: elija cuánta autonomía tiene Claude desde el [selector de modo](#choose-a-permission-mode). Puede cambiar esto durante la sesión.

53 53 


207 207 

208La pestaña Code está construida alrededor de paneles que puede organizar en cualquier diseño: chat, diff, navegador, terminal, archivo, plan, tareas y subagente, junto con el [iOS Simulator](/docs/es/desktop-ios-simulator) en macOS. Arrastre un panel por su encabezado para reposicionarlo, o arrastre un borde de panel para redimensionarlo. Presione **Cmd+\\** en macOS o **Ctrl+\\** en Windows para cerrar el panel enfocado. Abra paneles adicionales desde el menú **Views** en la barra de herramientas de la sesión.208La pestaña Code está construida alrededor de paneles que puede organizar en cualquier diseño: chat, diff, navegador, terminal, archivo, plan, tareas y subagente, junto con el [iOS Simulator](/docs/es/desktop-ios-simulator) en macOS. Arrastre un panel por su encabezado para reposicionarlo, o arrastre un borde de panel para redimensionarlo. Presione **Cmd+\\** en macOS o **Ctrl+\\** en Windows para cerrar el panel enfocado. Abra paneles adicionales desde el menú **Views** en la barra de herramientas de la sesión.

209 209 

210Para trabajar en múltiples pantallas, extraiga un panel como el diff o terminal en su propia ventana, y acóplelo de nuevo cuando haya terminado. Claude continúa trabajando en la ventana principal.

211 

210<Note>212<Note>

211 El diseño del panel, terminal, editor de archivos y modos de vista en esta sección requieren Claude Desktop v1.2581.0 o posterior. Abra **Claude → Check for Updates** en macOS o **Help → Check for Updates** en Windows para actualizar.213 El diseño del panel, terminal, editor de archivos y modos de vista en esta sección requieren Claude Desktop v1.2581.0 o posterior. Abra **Claude → Check for Updates** en macOS o **Help → Check for Updates** en Windows para actualizar.

212</Note>214</Note>


240 Cambiar modos de vista242 Cambiar modos de vista

241</h3>243</h3>

242 244 

243Los modos de vista controlan cuánto detalle aparece en la transcripción del chat. Cambie de modo desde el menú desplegable **Transcript view** junto al botón de envío, o presione **Ctrl+O** en macOS o Windows para ciclar a través de ellos.245Los modos de vista controlan cuánto detalle aparece en la transcripción del chat. Cambie de modo desde el menú desplegable **Transcript view** junto al botón de envío, o presione **Ctrl+O** en macOS o Windows para ciclar a través de ellos. El modo Thinking aparece en el menú desplegable solo después de que Claude ha producido pensamiento en la sesión que está viendo.

244 246 

245| Modo | Lo que muestra |247| Modo | Lo que muestra |

246| ----------- | ---------------------------------------------------------------------------------- |248| ------------ | --------------------------------------------------------------------------------------------------------------- |

247| **Normal** | Llamadas de herramientas contraídas en resúmenes, con respuestas de texto completo |249| **Normal** | Llamadas de herramientas contraídas en resúmenes, con respuestas de texto completo |

248| **Verbose** | Cada llamada de herramienta, lectura de archivo y paso intermedio que Claude toma |250| **Thinking** | Llamadas de herramientas contraídas en resúmenes, más el pensamiento de Claude |

249| **Summary** | Solo las respuestas finales de Claude y los cambios que realizó |251| **Verbose** | Cada llamada de herramienta, lectura de archivo y paso intermedio que Claude toma, más el pensamiento de Claude |

250 252 

251Use Verbose cuando depure por qué Claude tomó una acción particular. Use Summary cuando esté ejecutando múltiples sesiones y desee escanear resultados rápidamente.253Use Thinking para seguir el razonamiento de Claude con llamadas de herramientas aún contraídas. Use Verbose cuando depure por qué Claude tomó una acción particular. Las versiones de Claude Desktop anteriores a 1.46388.1 también enumeran un modo Summary, y una sesión aún configurada en Summary se abre en Normal una vez que actualiza.

252 254 

253<h3 id="keyboard-shortcuts">255<h3 id="keyboard-shortcuts">

254 Atajos de teclado256 Atajos de teclado


296 298 

297El uso de computadora está deshabilitado de forma predeterminada. [Habilítelo en Configuración](#enable-computer-use) antes de que Claude pueda controlar su pantalla. En macOS, también necesita otorgar permisos de Accesibilidad y Grabación de pantalla.299El uso de computadora está deshabilitado de forma predeterminada. [Habilítelo en Configuración](#enable-computer-use) antes de que Claude pueda controlar su pantalla. En macOS, también necesita otorgar permisos de Accesibilidad y Grabación de pantalla.

298 300 

301En macOS, el uso de computadora también puede ejecutarse en segundo plano: Claude trabaja en las aplicaciones que ha aprobado mientras usted continúa trabajando.

302 

299<Warning>303<Warning>

300 A diferencia de la [herramienta Bash sandboxed](/docs/es/sandboxing), el uso de computadora se ejecuta en su escritorio real con acceso a lo que apruebe. Claude verifica cada acción e identifica posibles inyecciones de solicitud desde contenido en pantalla, pero el límite de confianza es diferente. Consulte la [guía de seguridad de uso de computadora](https://support.claude.com/en/articles/14128542) para obtener mejores prácticas.304 A diferencia de la [herramienta Bash sandboxed](/docs/es/sandboxing), el uso de computadora se ejecuta en su escritorio real con acceso a lo que apruebe. Claude verifica cada acción e identifica posibles inyecciones de solicitud desde contenido en pantalla, pero el límite de confianza es diferente. Consulte la [guía de seguridad de uso de computadora](https://support.claude.com/en/articles/14128542) para obtener mejores prácticas.

301</Warning>305</Warning>


360Puede configurar dos configuraciones en **Configuración > General** (bajo **Aplicación de escritorio**):364Puede configurar dos configuraciones en **Configuración > General** (bajo **Aplicación de escritorio**):

361 365 

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

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

364 368 

365<h2 id="manage-sessions">369<h2 id="manage-sessions">

366 Gestionar sesiones370 Gestionar sesiones


388 392 

389Para verificar el uso del contexto, consulte [Verificar uso](#check-usage). Cuando el contexto se llena, Claude resume automáticamente la conversación y continúa trabajando. También puede escribir `/compact` para activar la compresión antes y liberar espacio de contexto. Consulte [la ventana de contexto](/docs/es/how-claude-code-works#the-context-window) para obtener detalles sobre cómo funciona la compresión.393Para verificar el uso del contexto, consulte [Verificar uso](#check-usage). Cuando el contexto se llena, Claude resume automáticamente la conversación y continúa trabajando. También puede escribir `/compact` para activar la compresión antes y liberar espacio de contexto. Consulte [la ventana de contexto](/docs/es/how-claude-code-works#the-context-window) para obtener detalles sobre cómo funciona la compresión.

390 394 

391La aplicación de escritorio envía una notificación del sistema operativo cuando una sesión de Code termina una tarea y usted no está viendo actualmente esa sesión.395La aplicación de escritorio envía una notificación del sistema operativo cuando una sesión de Code termina una tarea y usted no está viendo actualmente esa sesión. Para sesiones que pertenecen a un [proyecto](/docs/es/claude-projects#see-what-needs-you-in-overview), obtiene las notificaciones del proyecto en su lugar.

392 396 

393<h3 id="ask-a-side-question-without-derailing-the-session">397<h3 id="ask-a-side-question-without-derailing-the-session">

394 Hacer una pregunta lateral sin descarrilar la sesión398 Hacer una pregunta lateral sin descarrilar la sesión


427 431 

428Claude también puede sugerir nuevas sesiones. Cuando nota algo que vale la pena arreglar que está fuera del alcance de la tarea actual, ofrece el trabajo como una tarjeta de tarea en el chat. Haga clic en la tarjeta para comenzar ese trabajo en una nueva sesión con su propio worktree; Claude continúa su sesión actual sin interrupciones.432Claude también puede sugerir nuevas sesiones. Cuando nota algo que vale la pena arreglar que está fuera del alcance de la tarea actual, ofrece el trabajo como una tarjeta de tarea en el chat. Haga clic en la tarjeta para comenzar ese trabajo en una nueva sesión con su propio worktree; Claude continúa su sesión actual sin interrupciones.

429 433 

430<h3 id="run-long-running-tasks-remotely">434<h3 id="run-long-running-tasks-in-the-cloud">

431 Ejecutar tareas de larga duración de forma remota435 Ejecutar tareas de larga duración en la nube

432</h3>436</h3>

433 437 

434Para refactorizaciones grandes, suites de pruebas, migraciones u otras tareas de larga duración, seleccione **Cloud** en lugar de **Local** al iniciar una sesión. Las sesiones en la nube se ejecutan en la infraestructura administrada por Anthropic de forma predeterminada y continúan incluso si cierra la aplicación o apaga su computadora. Regrese en cualquier momento para ver el progreso o dirigir a Claude en una dirección diferente. También puede monitorear sesiones en la nube desde [claude.ai/code](https://claude.ai/code) o la [aplicación móvil de Claude](/docs/es/mobile).438Para refactorizaciones grandes, suites de pruebas, migraciones u otras tareas de larga duración, seleccione **Cloud** en lugar de **Local** al iniciar una sesión. Las sesiones en la nube se ejecutan en la infraestructura administrada por Anthropic de forma predeterminada y continúan incluso si cierra la aplicación o apaga su computadora. Regrese en cualquier momento para ver el progreso o dirigir a Claude en una dirección diferente. También puede monitorear sesiones en la nube desde [claude.ai/code](https://claude.ai/code) o la [aplicación móvil de Claude](/docs/es/mobile).

435 439 

436Las sesiones en la nube también admiten múltiples repositorios. Después de seleccionar un entorno en la nube, haga clic en el botón **+** junto a la píldora de repositorio para agregar repositorios adicionales a la sesión. Cada repositorio obtiene su propio selector de rama. Esto es útil para tareas que abarcan múltiples bases de código, como actualizar una biblioteca compartida y sus consumidores.440Las sesiones en la nube también admiten múltiples repositorios. Después de seleccionar un entorno en la nube, haga clic en el botón **+** junto al repositorio seleccionado para agregar repositorios adicionales a la sesión. Cada repositorio obtiene su propio selector de rama. Esto es útil para tareas que abarcan múltiples bases de código, como actualizar una biblioteca compartida y sus consumidores.

437 441 

438Consulte [Claude Code en la web](/docs/es/claude-code-on-the-web) para obtener más información sobre cómo funcionan las sesiones en la nube.442Consulte [Usar Claude Code en la nube](/docs/es/claude-code-on-the-web) para obtener más información sobre cómo funcionan las sesiones en la nube. Cuando un cuerpo de trabajo necesita muchas sesiones en la nube, seleccione **Projects** en la barra lateral para crear un [proyecto](/docs/es/claude-projects), donde Claude inicia y rastrea las sesiones para usted desde una conversación.

439 443 

440<h3 id="continue-in-another-surface">444<h3 id="continue-in-another-surface">

441 Continuar en otra superficie445 Continuar en otra superficie


443 447 

444El menú **Continue in**, accesible desde el icono de VS Code en la esquina inferior derecha de la barra de herramientas de la sesión, le permite mover su sesión a otra superficie:448El menú **Continue in**, accesible desde el icono de VS Code en la esquina inferior derecha de la barra de herramientas de la sesión, le permite mover su sesión a otra superficie:

445 449 

446* **Claude Code on the Web**: envía su sesión local para continuar ejecutándose de forma remota. Desktop empuja su rama, genera un resumen de la conversación y crea una nueva sesión en la nube con el contexto completo. Luego puede elegir archivar la sesión local o mantenerla. Esto requiere un árbol de trabajo limpio y no está disponible para sesiones SSH.450* **Claude Code on the Web**: envía su sesión local para continuar ejecutándose en la nube. Desktop empuja su rama, genera un resumen de la conversación y crea una nueva sesión en la nube con el contexto completo. Luego puede elegir archivar la sesión local o mantenerla. Esto requiere un árbol de trabajo limpio y no está disponible para sesiones SSH.

447* **Your IDE**: abre su proyecto en un IDE compatible en el directorio de trabajo actual.451* **Your IDE**: abre su proyecto en un IDE compatible en el directorio de trabajo actual.

448 452 

449<h3 id="sessions-from-dispatch">453<h3 id="sessions-from-dispatch">


468 472 

469Conecte servicios externos, agregue flujos de trabajo reutilizables, personalice el comportamiento de Claude y configure servidores de vista previa. Para administrar conectores, skills y plugins en un solo lugar, haga clic en **Customize** en la barra lateral. La pestaña [Cowork](https://claude.com/product/cowork) en la aplicación de escritorio obtiene sus skills, plugins y conectores de esta configuración de Customize, que se sincroniza a través de su cuenta de claude.ai, no desde el directorio `~/.claude` de la CLI.473Conecte servicios externos, agregue flujos de trabajo reutilizables, personalice el comportamiento de Claude y configure servidores de vista previa. Para administrar conectores, skills y plugins en un solo lugar, haga clic en **Customize** en la barra lateral. La pestaña [Cowork](https://claude.com/product/cowork) en la aplicación de escritorio obtiene sus skills, plugins y conectores de esta configuración de Customize, que se sincroniza a través de su cuenta de claude.ai, no desde el directorio `~/.claude` de la CLI.

470 474 

475Claude Code también carga los skills y plugins habilitados para su cuenta de claude.ai en sesiones de terminal donde inicia sesión con la misma cuenta. Consulte [Skills sincronizados desde claude.ai](/docs/es/skills#how-synced-skills-behave) y [Plugins sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins).

476 

471<h3 id="connect-external-tools">477<h3 id="connect-external-tools">

472 Conectar herramientas externas478 Conectar herramientas externas

473</h3>479</h3>


488 494 

489Puede enviar un comando mientras Claude está trabajando, igual que cualquier otro mensaje, y la sesión vuelve a estar inactiva una vez que se completa el turno. Antes de v2.1.206, un comando enviado a mitad de turno podría dejar la sesión mostrándose como en ejecución y los mensajes que envió después no se entregaban.495Puede enviar un comando mientras Claude está trabajando, igual que cualquier otro mensaje, y la sesión vuelve a estar inactiva una vez que se completa el turno. Antes de v2.1.206, un comando enviado a mitad de turno podría dejar la sesión mostrándose como en ejecución y los mensajes que envió después no se entregaban.

490 496 

491Los skills personales en `~/.claude/skills/` se aplican a sesiones locales; una sesión [SSH](#ssh-sessions) lee `~/.claude/skills/` desde el directorio de inicio del host remoto, no desde su máquina. Las sesiones en la nube cargan los skills habilitados para su cuenta de claude.ai en su lugar. Consulte [Skills en sesiones de Cowork y en la nube](/docs/es/skills#skills-in-cowork-and-cloud-sessions).497Las sesiones locales cargan sus skills personales desde `~/.claude/skills/`. Una sesión [SSH](#ssh-sessions) lee `~/.claude/skills/` desde el directorio de inicio del host remoto, no desde su máquina.

498 

499Las sesiones locales y en la nube también cargan los skills habilitados para su cuenta de claude.ai. Las sesiones en la nube los cargan en lugar de `~/.claude/skills/`, como describe [Skills en sesiones de Cowork y en la nube](/docs/es/skills#skills-in-cowork-and-cloud-sessions).

492 500 

493<h3 id="install-plugins">501<h3 id="install-plugins">

494 Instalar plugins502 Instalar plugins


565| `port` | number | El puerto en el que escucha su servidor. Por defecto es 3000 |573| `port` | number | El puerto en el que escucha su servidor. Por defecto es 3000 |

566| `cwd` | string | Directorio de trabajo relativo a la raíz de su proyecto. Por defecto es la raíz del proyecto. Use `${workspaceFolder}` para hacer referencia a la raíz del proyecto explícitamente |574| `cwd` | string | Directorio de trabajo relativo a la raíz de su proyecto. Por defecto es la raíz del proyecto. Use `${workspaceFolder}` para hacer referencia a la raíz del proyecto explícitamente |

567| `env` | object | Variables de entorno adicionales como pares clave-valor, como `{ "NODE_ENV": "development" }`. No ponga secretos aquí ya que este archivo se confirma en su repositorio. Para pasar secretos a su servidor de desarrollo, establézcalos en el [editor de entorno local](#local-sessions) en su lugar. |575| `env` | object | Variables de entorno adicionales como pares clave-valor, como `{ "NODE_ENV": "development" }`. No ponga secretos aquí ya que este archivo se confirma en su repositorio. Para pasar secretos a su servidor de desarrollo, establézcalos en el [editor de entorno local](#local-sessions) en su lugar. |

568| `autoPort` | boolean | Cómo manejar conflictos de puerto. Consulte a continuación |576| `autoPort` | boolean | Cómo manejar conflictos de puerto. Consulte [Conflictos de puerto](#port-conflicts) |

569| `program` | string | Un script a ejecutar con `node`. Consulte [cuándo usar `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |577| `program` | string | Un script a ejecutar con `node`. Consulte [cuándo usar `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

570| `args` | string\[] | Argumentos pasados a `program`. Solo se usa cuando `program` está establecido |578| `args` | string\[] | Argumentos pasados a `program`. Solo se usa cuando `program` está establecido |

571| `url` | string | La dirección que abre la vista previa en lugar de `http://localhost:<port>`. Consulte [abrir la vista previa en una URL específica](#open-the-preview-at-a-specific-url) |579| `url` | string | La dirección que abre la vista previa en lugar de `http://localhost:<port>`. Consulte [abrir la vista previa en una URL específica](#open-the-preview-at-a-specific-url) |


603}611}

604```612```

605 613 

606Las direcciones localhost se abren directamente, exactamente como la dirección de puerto predeterminada. Esto incluye `localhost`, cualquier subdominio `*.localhost`, `127.0.0.1` y `::1`. Por seguridad, una `url` localhost debe ser solo el origen de su servidor — sin ruta ni consulta, y el puerto debe coincidir con el puerto de la entrada. Para mostrar una página específica, pida a Claude que navegue allí después de que se abra la vista previa. Una `url` localhost con una ruta, consulta o puerto no coincidente se reporta como un error de configuración que nombra la url y muestra la corrección.614Las direcciones localhost se abren directamente, exactamente como la dirección de puerto predeterminada. Esto incluye `localhost`, cualquier subdominio `*.localhost`, `127.0.0.1` y `::1`. Por seguridad, una `url` localhost debe ser solo el origen de su servidor, sin ruta ni consulta. Su puerto debe coincidir con el puerto de la entrada. Para mostrar una página específica, pida a Claude que navegue allí después de que se abra la vista previa. Una `url` localhost con una ruta, consulta o puerto no coincidente se reporta como un error de configuración que nombra la url y muestra la corrección.

607 615 

608Para cualquier otra dirección, Desktop solicita su permiso la primera vez que la vista previa la abre, igual que cuando navega a un sitio nuevo en la vista previa. Las direcciones externas pueden incluir rutas. Elija **Always allow** para omitir el aviso para ese sitio en el futuro. Las políticas organizacionales que restringen sitios externos en la vista previa aún se aplican.616Para cualquier otra dirección, Desktop solicita su permiso la primera vez que la vista previa la abre, igual que cuando navega a un sitio nuevo en la vista previa. Las direcciones externas pueden incluir rutas. Elija **Always allow** para omitir el aviso para ese sitio en el futuro. Las políticas organizacionales que restringen sitios externos en la vista previa aún se aplican.

609 617 


822Estas configuraciones se configuran a través de la [consola de configuración de administración](https://claude.ai/admin-settings/claude-code):830Estas configuraciones se configuran a través de la [consola de configuración de administración](https://claude.ai/admin-settings/claude-code):

823 831 

824* **Code in the desktop**: controle si los usuarios en su organización pueden acceder a Claude Code en la aplicación de escritorio832* **Code in the desktop**: controle si los usuarios en su organización pueden acceder a Claude Code en la aplicación de escritorio

825* **Code in the web**: habilite o deshabilite [sesiones web](/docs/es/claude-code-on-the-web) para su organización833* **Code in the web**: habilite o deshabilite [sesiones en la nube](/docs/es/claude-code-on-the-web) para su organización

826* **Remote Control**: habilite o deshabilite [Remote Control](/docs/es/remote-control) para su organización834* **Remote Control**: habilite o deshabilite [Remote Control](/docs/es/remote-control) para su organización

827* **Disable Bypass permissions mode**: evite que los usuarios en su organización habiliten el modo bypass permissions835* **Disable Bypass permissions mode**: evite que los usuarios en su organización habiliten el modo bypass permissions

828 836 


949 ¿Viene de la CLI?957 ¿Viene de la CLI?

950</h2>958</h2>

951 959 

952Si ya usa la CLI de Claude Code, Desktop ejecuta el mismo motor subyacente con una interfaz gráfica. Puede ejecutar ambos simultáneamente en la misma máquina, incluso en el mismo proyecto. Cada uno mantiene historial de sesión separado, pero comparten configuración y memoria del proyecto a través de archivos CLAUDE.md.960Si ya usa la CLI de Claude Code, Desktop ejecuta el mismo motor subyacente con una interfaz gráfica. Puede ejecutar ambos simultáneamente en la misma máquina, incluso en el mismo proyecto. Cada uno mantiene su propia lista de sesiones, y puede traer una sesión de CLI a Desktop. Comparten configuración y memoria del proyecto a través de archivos CLAUDE.md.

953 961 

954Para mover una sesión de CLI a Desktop, ejecute `/desktop` en la terminal. Claude guarda su sesión y la abre en la aplicación de escritorio, luego sale de la CLI. Este comando está disponible en macOS y Windows x64 cuando inicia sesión con una suscripción de Claude. No está disponible con autenticación de clave API ni en Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.962Para mover una sesión de CLI a Desktop, ejecute `/desktop` en la terminal. Claude guarda su sesión y la abre en la aplicación de escritorio, luego sale de la CLI. Este comando está disponible en macOS y Windows x64 cuando inicia sesión con una suscripción de Claude. No está disponible con autenticación de clave API ni en Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.

955 963 

964Para retomar una sesión de CLI desde dentro de Desktop, escriba `/resume` en el cuadro de solicitud. Desktop enumera las sesiones que inició desde la CLI, y puede buscarlas por título, carpeta o rama y obtener una vista previa de dónde dejó cada una. Seleccione una sesión y continuará en la aplicación con su conversación completa y contexto.

965 

956<Tip>966<Tip>

957 Cuándo usar Desktop vs CLI: use Desktop cuando desee gestionar sesiones paralelas en una ventana, organizar paneles lado a lado o revisar cambios visualmente. Use la CLI cuando necesite scripting, automatización o prefiera un flujo de trabajo de terminal.967 Cuándo usar Desktop vs CLI: use Desktop cuando desee gestionar sesiones paralelas en una ventana, organizar paneles lado a lado o revisar cambios visualmente. Use la CLI cuando necesite scripting, automatización o prefiera un flujo de trabajo de terminal.

958</Tip>968</Tip>


966| CLI | Equivalente de Desktop |976| CLI | Equivalente de Desktop |

967| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |977| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

968| `--model sonnet` | Menú desplegable de modelo junto al botón de envío |978| `--model sonnet` | Menú desplegable de modelo junto al botón de envío |

969| `--resume`, `--continue` | Haga clic en una sesión en la barra lateral |979| `--resume`, `--continue` | Haga clic en una sesión en la barra lateral, o escriba `/resume` en el cuadro de solicitud para retomar una sesión que inició desde la CLI |

970| `--permission-mode` | Selector de modo junto al botón de envío |980| `--permission-mode` | Selector de modo junto al botón de envío |

971| `--dangerously-skip-permissions` | Modo Bypass permissions. En planes Pro y Max, habilítelo en Configuración → Claude Code → "Allow bypass permissions mode"; en planes Team y Enterprise, la política de la organización lo controla |981| `--dangerously-skip-permissions` | Modo Bypass permissions. En planes Pro y Max, habilítelo en Configuración → Claude Code → "Allow bypass permissions mode"; en planes Team y Enterprise, la política de la organización lo controla |

972| `--add-dir` | Agregue múltiples repositorios con el botón **+** en sesiones en la nube |982| `--add-dir` | Agregue múltiples repositorios con el botón **+** en sesiones en la nube |

Details

29 En esta página, "dispositivo" se refiere a un iPhone o iPad simulado, uno de los mismos dispositivos del simulador que administras en Xcode en **Window → Devices and Simulators**, no hardware físico.29 En esta página, "dispositivo" se refiere a un iPhone o iPad simulado, uno de los mismos dispositivos del simulador que administras en Xcode en **Window → Devices and Simulators**, no hardware físico.

30</Note>30</Note>

31 31 

32El panel del simulador está disponible solo en sesiones locales. En sesiones en [nube](/docs/es/desktop#run-long-running-tasks-remotely) y [SSH](/docs/es/desktop#ssh-sessions), Claude se ejecuta en una máquina que no puede acceder a los simuladores en tu Mac.32El panel del simulador está disponible solo en sesiones locales. En sesiones en [nube](/docs/es/desktop#run-long-running-tasks-in-the-cloud) y [SSH](/docs/es/desktop#ssh-sessions), Claude se ejecuta en una máquina que no puede acceder a los simuladores en su Mac.

33 33 

34<h2 id="run-your-app-in-the-simulator">34<h2 id="run-your-app-in-the-simulator">

35 Ejecuta tu aplicación en el simulador35 Ejecuta tu aplicación en el simulador

Details

70 70 

71 También puede seleccionar:71 También puede seleccionar:

72 72 

73 * **Cloud**: Ejecute sesiones en la nube que continúen incluso si cierra la aplicación. Las sesiones en la nube utilizan la misma infraestructura que [Claude Code en la web](/docs/es/claude-code-on-the-web).73 * **Cloud**: Ejecute sesiones en la nube que continúen incluso si cierra la aplicación. Consulte [Usar Claude Code en la nube](/docs/es/claude-code-on-the-web) para saber cómo funcionan las sesiones en la nube.

74 * **SSH**: Conéctese a una máquina remota a través de SSH, como sus propios servidores, máquinas virtuales en la nube o contenedores de desarrollo. Desktop instala Claude Code en la máquina remota automáticamente la primera vez que se conecta.74 * **SSH**: Conéctese a una máquina remota a través de SSH, como sus propios servidores, máquinas virtuales en la nube o contenedores de desarrollo. Desktop instala Claude Code en la máquina remota automáticamente la primera vez que se conecta.

75 * **WSL** (Windows): Ejecute la sesión dentro de una [distribución WSL 2](/docs/es/desktop-wsl); Claude Code, las herramientas y git se ejecutan en el lado de Linux con rutas nativas.75 * **WSL** (Windows): Ejecute la sesión dentro de una [distribución WSL 2](/docs/es/desktop-wsl); Claude Code, las herramientas y git se ejecutan en el lado de Linux con rutas nativas.

76 </Step>76 </Step>


134 134 

135**Ponga a Claude en un horario.** Configure [tareas programadas](/docs/es/desktop-scheduled-tasks) para ejecutar Claude automáticamente de forma recurrente: una revisión de código diaria cada mañana, una auditoría de dependencias semanal, o un resumen que extraiga de sus herramientas conectadas.135**Ponga a Claude en un horario.** Configure [tareas programadas](/docs/es/desktop-scheduled-tasks) para ejecutar Claude automáticamente de forma recurrente: una revisión de código diaria cada mañana, una auditoría de dependencias semanal, o un resumen que extraiga de sus herramientas conectadas.

136 136 

137**Escale cuando esté listo.** Abra [sesiones paralelas](/docs/es/desktop#work-in-parallel-with-sessions) desde la barra lateral para trabajar en múltiples tareas a la vez, cada una en su propio Git worktree, y abra el [panel de tareas](/docs/es/desktop#watch-background-tasks) para ver los subagentes y comandos en segundo plano que una sesión tiene en ejecución. Abra un [chat lateral](/docs/es/desktop#ask-a-side-question-without-derailing-the-session) para hacer una pregunta sin descarrilar el hilo principal. Envíe [trabajo de larga duración a la nube](/docs/es/desktop#run-long-running-tasks-remotely) para que continúe incluso si cierra la aplicación, o [continúe una sesión en la web o en su IDE](/docs/es/desktop#continue-in-another-surface) si una tarea toma más tiempo del esperado. [Conecte herramientas externas](/docs/es/desktop#extend-claude-code) como GitHub, Slack y Linear para reunir su flujo de trabajo.137**Escale cuando esté listo.** Abra [sesiones paralelas](/docs/es/desktop#work-in-parallel-with-sessions) desde la barra lateral para trabajar en múltiples tareas a la vez, cada una en su propio Git worktree, y abra el [panel de tareas](/docs/es/desktop#watch-background-tasks) para ver los subagentes y comandos en segundo plano que una sesión tiene en ejecución. Abra un [chat lateral](/docs/es/desktop#ask-a-side-question-without-derailing-the-session) para hacer una pregunta sin descarrilar el hilo principal. Envíe [trabajo de larga duración a la nube](/docs/es/desktop#run-long-running-tasks-in-the-cloud) para que continúe incluso si cierra la aplicación, o [continúe una sesión en la web o en su IDE](/docs/es/desktop#continue-in-another-surface) si una tarea toma más tiempo del esperado. [Conecte herramientas externas](/docs/es/desktop#extend-claude-code) como GitHub, Slack y Linear para reunir su flujo de trabajo.

138 138 

139<h2 id="what’s-next">139<h2 id="what’s-next">

140 Qué sigue140 Qué sigue

desktop-wsl.md +1 −1

Details

52 Dispositivos administrados52 Dispositivos administrados

53</h2>53</h2>

54 54 

55En dispositivos administrados por una organización, las sesiones WSL pueden no estar disponibles. Si el inicio de sesión falla con un mensaje de que el dispositivo está administrado, eso está controlado por su administrador. Administradores: consulte [cómo llegan las configuraciones a los dispositivos](/es/admin-setup#decide-how-settings-reach-devices) en la guía de implementación.55En dispositivos administrados por una organización, las sesiones WSL pueden no estar disponibles. Si el inicio de sesión falla con un mensaje de que el dispositivo está administrado, eso está controlado por su administrador. Administradores: consulte [cómo llegan las configuraciones a los dispositivos](/docs/es/admin-setup#decide-how-settings-reach-devices) en la guía de implementación.

devcontainer.md +1 −1

Details

138 138 

139`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` también desactiva la evaluación de banderas de características de la que dependen [Control Remoto](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), por lo que las sesiones en el contenedor no pueden usarlas.139`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` también desactiva la evaluación de banderas de características de la que dependen [Control Remoto](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), por lo que las sesiones en el contenedor no pueden usarlas.

140 140 

141La Característica Dev Container siempre instala la última versión de Claude Code. Para fijar una versión específica de Claude Code para compilaciones reproducibles, instálala desde tu Dockerfile con `npm install -g @anthropic-ai/claude-code@X.Y.Z` en lugar de usar la característica, y establece `DISABLE_AUTOUPDATER` como se muestra arriba.141La Característica Dev Container siempre instala la última versión de Claude Code. Para fijar una versión específica de Claude Code para compilaciones reproducibles, instálala desde tu Dockerfile con `npm install -g @anthropic-ai/claude-code@X.Y.Z` en lugar de usar la característica, y establece `DISABLE_AUTOUPDATER` en `1` en `containerEnv`.

142 142 

143Para la lista completa de controles de política incluyendo reglas de permiso, restricciones de herramientas y listas blancas de servidores MCP, consulta [Configurar Claude Code para tu organización](/docs/es/admin-setup).143Para la lista completa de controles de política incluyendo reglas de permiso, restricciones de herramientas y listas blancas de servidores MCP, consulta [Configurar Claude Code para tu organización](/docs/es/admin-setup).

144 144 

Details

8 8 

9Los plugins extienden Claude Code con skills, agentes, hooks y servidores MCP. Los mercados de plugins son catálogos que le ayudan a descubrir e instalar estas extensiones sin construirlas usted mismo.9Los plugins extienden Claude Code con skills, agentes, hooks y servidores MCP. Los mercados de plugins son catálogos que le ayudan a descubrir e instalar estas extensiones sin construirlas usted mismo.

10 10 

11También puede habilitar plugins en claude.ai, para usted mismo o a través de su organización. Claude Code sincroniza los que están en sus sesiones sin una instalación de mercado, como describe [Plugins sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins).

12 

11¿Busca crear y distribuir su propio mercado? Consulte [Crear y distribuir un mercado de plugins](/docs/es/plugin-marketplaces).13¿Busca crear y distribuir su propio mercado? Consulte [Crear y distribuir un mercado de plugins](/docs/es/plugin-marketplaces).

12 14 

13<h2 id="how-marketplaces-work">15<h2 id="how-marketplaces-work">


78También puede [crear su propio plugin LSP](/docs/es/plugins-reference#lsp-servers) para otros lenguajes.80También puede [crear su propio plugin LSP](/docs/es/plugins-reference#lsp-servers) para otros lenguajes.

79 81 

80<Note>82<Note>

81 Si ve `Executable not found in $PATH` en la pestaña Errors de `/plugin` después de instalar un plugin, instale el binario requerido de la tabla anterior.83 Si ve `Executable not found in $PATH` en la pestaña Errors de `/plugin` después de instalar un plugin, instale el binario que la tabla de [code intelligence](#code-intelligence) lista para ese plugin.

82</Note>84</Note>

83 85 

84<h4 id="what-claude-gains-from-code-intelligence-plugins">86<h4 id="what-claude-gains-from-code-intelligence-plugins">


237* **URLs de Git**: cualquier URL de repositorio de git, incluyendo GitLab, Bitbucket y servidores auto-hospedados239* **URLs de Git**: cualquier URL de repositorio de git, incluyendo GitLab, Bitbucket y servidores auto-hospedados

238* **Rutas locales**: directorios o rutas directas a archivos `marketplace.json`240* **Rutas locales**: directorios o rutas directas a archivos `marketplace.json`

239* **URLs remotas**: URLs directas a archivos `marketplace.json` hospedados241* **URLs remotas**: URLs directas a archivos `marketplace.json` hospedados

242* **claude.ai**: mercados hospedados en claude.ai para su cuenta, como la biblioteca de plugins de su organización, que [agrega por nombre desde la pestaña **Marketplaces** o su shell](#add-from-claude-ai) en lugar de por fuente

240 243 

241<h3 id="add-from-github">244<h3 id="add-from-github">

242 Agregar desde GitHub245 Agregar desde GitHub


314 Los mercados basados en URL tienen algunas limitaciones en comparación con los mercados basados en Git. Si encuentra errores al instalar plugins desde un mercado basado en URL, consulte [Troubleshooting](/docs/es/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).317 Los mercados basados en URL tienen algunas limitaciones en comparación con los mercados basados en Git. Si encuentra errores al instalar plugins desde un mercado basado en URL, consulte [Troubleshooting](/docs/es/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

315</Note>318</Note>

316 319 

320<h3 id="add-from-claude-ai">

321 Agregar desde claude.ai

322</h3>

323 

324En sesiones de terminal donde [los plugins se sincronizan desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins), claude.ai también puede listar mercados para usted, como la biblioteca de plugins de su organización y sus propias cargas en claude.ai. `claude plugin marketplace list` los imprime en una sección `From claude.ai:`, y la pestaña **Marketplaces** de `/plugin` los lista. Seleccione uno allí para agregarlo. Agregar un mercado desde claude.ai requiere Claude Code v2.1.273 o posterior.

325 

326Para agregar uno desde su shell, ejecute `claude plugin marketplace add` con la bandera `--claudeai` y el nombre que se muestra en la lista:

327 

328```bash theme={null}

329claude plugin marketplace add --claudeai claudeai-organization-library

330```

331 

332Claude Code registra el mercado bajo un nombre local que comienza con `claudeai-`, derivado del nombre que claude.ai lo lista: un mercado listado como "Organization library" se registra como `claudeai-organization-library`. Instale sus plugins por ese nombre, por ejemplo con `claude plugin install <plugin>@claudeai-organization-library`.

333 

334Si cierra sesión o inicia sesión con una cuenta diferente, el mercado permanece configurado pero no muestra plugins, y los plugins que ya instaló desde él continúan cargándose.

335 

336La sección `From claude.ai:` también puede listar mercados basados en git compartidos a través de claude.ai. Agrega esos con el comando `marketplace add` ordinario, usando la fuente que la lista imprime.

337 

317<h2 id="install-plugins">338<h2 id="install-plugins">

318 Instalar plugins339 Instalar plugins

319</h2>340</h2>

320 341 

321Una vez que haya agregado mercados, puede instalar un plugin por nombre:342Una vez que haya agregado mercados, puede instalar un plugin por nombre. Para un mercado que aún no ha agregado, puede en su lugar [agregarlo e instalarlo en un comando](#add-a-marketplace-and-install-in-one-command).

343 

344Para instalar por nombre:

322 345 

323```shell theme={null}346```shell theme={null}

324/plugin install plugin-name@marketplace-name347/plugin install plugin-name@marketplace-name


360 Asegúrese de confiar en un plugin antes de instalarlo. Anthropic no controla qué servidores MCP, archivos u otro software se incluyen en los plugins y no puede verificar que funcionen como se pretende. Consulte la página de inicio de cada plugin para obtener más información.383 Asegúrese de confiar en un plugin antes de instalarlo. Anthropic no controla qué servidores MCP, archivos u otro software se incluyen en los plugins y no puede verificar que funcionen como se pretende. Consulte la página de inicio de cada plugin para obtener más información.

361</Warning>384</Warning>

362 385 

386<h3 id="add-a-marketplace-and-install-in-one-command">

387 Agregar un mercado e instalar en un comando

388</h3>

389 

390Para instalar un plugin desde un mercado que aún no ha agregado, nombre la fuente del mercado con `--marketplace`. Requiere Claude Code v2.1.275 o posterior.

391 

392```shell theme={null}

393/plugin install quality-review-plugin --marketplace your-org/plugins

394```

395 

396La fuente toma [las mismas formas que `/plugin marketplace add`](#add-marketplaces), como GitHub `owner/repo`, una URL de git o una ruta local, excepto que no puede contener espacios. Dé el nombre del plugin sin un sufijo `@marketplace`.

397 

398Si aún no ha agregado ese mercado, Claude Code muestra la fuente que resolvió y le pide que confirme antes de agregarlo. Rechazar cancela la instalación y no agrega nada. Una vez que se agrega el mercado, los detalles del plugin se abren y elige un [alcance de instalación](/docs/es/settings#where-settings-live).

399 

363<h2 id="manage-installed-plugins">400<h2 id="manage-installed-plugins">

364 Administrar plugins instalados401 Administrar plugins instalados

365</h2>402</h2>


372* escribir para filtrar por nombre o descripción del plugin409* escribir para filtrar por nombre o descripción del plugin

373* presionar Enter para abrir la vista de detalles de un plugin y habilitarlo, deshabilitarlo o desinstalarlo410* presionar Enter para abrir la vista de detalles de un plugin y habilitarlo, deshabilitarlo o desinstalarlo

374 411 

412Claude Code también enumera los [plugins sincronizados desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins) en la pestaña **Installed**, con `synced` como su origen. Puede habilitar o deshabilitar uno allí a menos que su organización lo haya marcado como requerido. Para eliminar uno, apáguelo en claude.ai. Los plugins sincronizados aparecen en sesiones de terminal en Claude Code v2.1.273 o posterior.

413 

375Cuando desinstala un plugin que el `.claude/settings.json` de un proyecto habilita, Claude Code pregunta qué alcance quiere decir: deshabilitarlo solo para usted, lo que escribe una anulación en su `.claude/settings.local.json` y deja el plugin instalado para el proyecto, o desinstalarlo para todos, lo que lo elimina del `.claude/settings.json` compartido.414Cuando desinstala un plugin que el `.claude/settings.json` de un proyecto habilita, Claude Code pregunta qué alcance quiere decir: deshabilitarlo solo para usted, lo que escribe una anulación en su `.claude/settings.local.json` y deja el plugin instalado para el proyecto, o desinstalarlo para todos, lo que lo elimina del `.claude/settings.json` compartido.

376 415 

377La vista de detalles muestra los componentes que contribuye el plugin: comandos, skills, agentes, hooks, servidores MCP y servidores LSP. El mismo inventario está disponible desde la línea de comandos con `claude plugin details`.416La vista de detalles muestra los componentes que contribuye el plugin: comandos, skills, agentes, hooks, servidores MCP y servidores LSP. El mismo inventario está disponible desde la línea de comandos con `claude plugin details`.


444* Un comando `claude plugin` que ejecutó en otra terminal483* Un comando `claude plugin` que ejecutó en otra terminal

445* Ediciones a un plugin que cargó con [`--plugin-dir`](/docs/es/plugins#test-your-plugins-locally) mientras lo desarrolla484* Ediciones a un plugin que cargó con [`--plugin-dir`](/docs/es/plugins#test-your-plugins-locally) mientras lo desarrolla

446* Un plugin [actualización automática](#configure-auto-updates) cuya notificación le pide que recargue485* Un plugin [actualización automática](#configure-auto-updates) cuya notificación le pide que recargue

486* Una [sincronización desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins) que agregó, actualizó o eliminó un plugin y mostró una notificación pidiéndole que recargue

447* Un cambio en una carpeta [`--plugin-dir`](/docs/es/plugins#test-your-plugins-locally) que Claude Code mantuvo porque aplicarlo invalidaría la caché de prompts487* Un cambio en una carpeta [`--plugin-dir`](/docs/es/plugins#test-your-plugins-locally) que Claude Code mantuvo porque aplicarlo invalidaría la caché de prompts

448 488 

449Antes de v2.1.268, los plugins que habilitó, deshabilitó o desinstaló en el menú, e instalaciones que no se activaron durante la instalación, permanecían pendientes hasta que ejecutaba `/reload-plugins`.489Antes de v2.1.268, los plugins que habilitó, deshabilitó o desinstaló en el menú, e instalaciones que no se activaron durante la instalación, permanecían pendientes hasta que ejecutaba `/reload-plugins`.


5213. Elija un mercado de la lista5613. Elija un mercado de la lista

5224. Seleccione **Enable auto-update** o **Disable auto-update**5624. Seleccione **Enable auto-update** o **Disable auto-update**

523 563 

524`claude-plugins-official` y la mayoría de otros mercados oficiales de Anthropic tienen la actualización automática habilitada por defecto. Los mercados de terceros y de desarrollo local tienen la actualización automática deshabilitada por defecto.564`claude-plugins-official`, la mayoría de otros mercados oficiales de Anthropic, y [mercados agregados desde claude.ai](#add-from-claude-ai) tienen la actualización automática habilitada por defecto. Otros mercados de terceros y mercados de desarrollo local tienen la actualización automática deshabilitada por defecto.

525 565 

526Los administradores también pueden establecer `"autoUpdate": true` en cada entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en la configuración administrada para habilitar la actualización automática para un mercado de la organización sin requerir que cada usuario la active.566Los administradores también pueden establecer `"autoUpdate": true` en cada entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en la configuración administrada para habilitar la actualización automática para un mercado de la organización sin requerir que cada usuario la active.

527 567 

env-vars.md +194 −181

Details

142</Note>142</Note>

143 143 

144| Variable | Propósito |144| Variable | Propósito |

145| :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |145| :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

146| `ANTHROPIC_API_KEY` | Clave de API enviada como encabezado `X-Api-Key`. Cuando se establece, esta clave se usa en lugar de su suscripción a Claude Pro, Max, Team o Enterprise incluso si ha iniciado sesión. En modo no interactivo (`-p`), la clave siempre se usa cuando está presente. En modo interactivo, se le solicita que apruebe la clave una vez antes de que anule su suscripción. Para usar su suscripción en su lugar, ejecute `unset ANTHROPIC_API_KEY` |146| `ANTHROPIC_API_KEY` | Clave de API enviada como encabezado `X-Api-Key`. Cuando se establece, esta clave se usa en lugar de su suscripción a Claude Pro, Max, Team o Enterprise incluso si ha iniciado sesión. En modo no interactivo (`-p`), la clave siempre se usa cuando está presente. En modo interactivo, se le solicita que apruebe la clave una vez antes de que anule su suscripción. Para usar su suscripción en su lugar, ejecute `unset ANTHROPIC_API_KEY` |

147| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para el encabezado `Authorization` (el valor que establezca aquí tendrá el prefijo `Bearer `) |147| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para el encabezado `Authorization` (el valor que establezca aquí tendrá el prefijo `Bearer `) |

148| `ANTHROPIC_AWS_API_KEY` | Clave de API del espacio de trabajo para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), generada en la Consola de AWS. Se envía como `x-api-key` y tiene precedencia sobre AWS SigV4 |148| `ANTHROPIC_AWS_API_KEY` | Clave de API del espacio de trabajo para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), generada en la Consola de AWS. Se envía como `x-api-key` y tiene precedencia sobre AWS SigV4 |

149| `ANTHROPIC_AWS_BASE_URL` | Anule la URL del punto de conexión de [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Use para regiones personalizadas o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). El valor predeterminado es `https://aws-external-anthropic.{region}.api.aws`. Claude Code resuelve la región con la [misma precedencia que en Amazon Bedrock](/docs/es/amazon-bedrock#3-configure-claude-code) |149| `ANTHROPIC_AWS_BASE_URL` | Anule la URL del punto de conexión de [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Use para regiones personalizadas o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). El valor predeterminado es `https://aws-external-anthropic.{region}.api.aws`. Claude Code resuelve la región con la [misma precedencia que en Amazon Bedrock](/docs/es/amazon-bedrock#3-configure-claude-code) |

150| `ANTHROPIC_AWS_WORKSPACE_ID` | Requerido para [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Se envía en cada solicitud como el encabezado `anthropic-workspace-id` |150| `ANTHROPIC_AWS_WORKSPACE_ID` | Requerido para [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Se envía en cada solicitud como el encabezado `anthropic-workspace-id` |

151| `ANTHROPIC_BASE_URL` | Anule el punto de conexión de la API para enrutar solicitudes a través de un proxy o puerta de enlace. Cuando se establece en un host que no es de primera parte, [la búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search) está deshabilitada de forma predeterminada. Establezca `ENABLE_TOOL_SEARCH=true` si su proxy reenvía bloques `tool_reference`. A partir de v2.1.196, [Control Remoto](/docs/es/remote-control#requirements) está deshabilitado cuando esto apunta a un host que no sea `api.anthropic.com`, coincidiendo con su comportamiento en Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry |151| `ANTHROPIC_BASE_URL` | Anule el punto de conexión de la API para enrutar solicitudes a través de un proxy o puerta de enlace. Cuando se establece en un host que no es de primera parte, [la búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search) está deshabilitada de forma predeterminada. Establezca `ENABLE_TOOL_SEARCH=true` si su proxy reenvía bloques `tool_reference`. A partir de v2.1.196, [Remote Control](/docs/es/remote-control#requirements) está deshabilitado cuando esto apunta a un host que no sea `api.anthropic.com`, coincidiendo con su comportamiento en Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry |

152| `ANTHROPIC_BEDROCK_BASE_URL` | Anule la URL del punto de conexión de Amazon Bedrock. Use para puntos de conexión personalizados de Amazon Bedrock o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). Vea [Amazon Bedrock](/docs/es/amazon-bedrock) |152| `ANTHROPIC_BEDROCK_BASE_URL` | Anule la URL del punto de conexión de Amazon Bedrock. Use para puntos de conexión personalizados de Amazon Bedrock o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). Vea [Amazon Bedrock](/docs/es/amazon-bedrock) |

153| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Anule la URL del punto de conexión de Amazon Bedrock Mantle. Vea [Punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) |153| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Anule la URL del punto de conexión de Amazon Bedrock Mantle. Vea [Punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) |

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

155| `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`. Vea [Amazon Bedrock](/docs/es/amazon-bedrock#service-tiers) |155| `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`. Vea [Amazon Bedrock](/docs/es/amazon-bedrock#service-tiers) |

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

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

158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modelo para agregar como entrada personalizada en el selector `/model`. Use esto para hacer que un modelo no estándar o específico de puerta de enlace sea seleccionable sin reemplazar alias integrados. Vea [Configuración de modelo](/docs/es/model-config#add-a-custom-model-option) |158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modelo para agregar como entrada personalizada en el selector `/model`. Use esto para hacer que un modelo no estándar o específico de puerta de enlace sea seleccionable sin reemplazar alias integrados. Vea [Configuración de modelo](/docs/es/model-config#add-a-custom-model-option) |

159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Descripción de visualización para la entrada de modelo personalizado en el selector `/model`. El valor predeterminado es `Custom model (<model-id>)` cuando no se establece |159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Descripción de visualización para la entrada de modelo personalizado en el selector `/model`. El valor predeterminado es `Custom model (<model-id>)` cuando no se establece |

160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nombre de visualización para la entrada de modelo personalizado en el selector `/model`. Cuando no se establece, la entrada muestra el nombre del modelo si Claude Code [reconoce el ID](/docs/es/model-config#customize-pinned-model-display-and-capabilities), y el ID del modelo en caso contrario |160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nombre de visualización para la entrada de modelo personalizado en el selector `/model`. Cuando no se establece, la entrada muestra el nombre del modelo si Claude Code [reconoce el ID](/docs/es/model-config#customize-pinned-model-display-and-capabilities), y el ID del modelo en caso contrario |

161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo personalizado admite, por ejemplo `effort,thinking`. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo personalizado admite, por ejemplo `effort,thinking`. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | ID de modelo al que se resuelve el alias `fable`, y el ID que Claude Code reconoce como modelo Fable para [alternancia automática de modelo](/docs/es/model-config#automatic-model-fallback) en proveedores de terceros. Vea [Configuración de modelo](/docs/es/model-config#environment-variables) |162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | ID de modelo al que se resuelve el alias `fable`, e ID que Claude Code reconoce como modelo Fable para [alternancia automática de modelo](/docs/es/model-config#automatic-model-fallback) en proveedores de terceros. Vea [Configuración de modelo](/docs/es/model-config#environment-variables) |

163| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Descripción de visualización para el modelo Fable fijado en el selector `/model`. Cuando no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Fable model`. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |163| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Descripción de visualización para el modelo Fable fijado en el selector `/model`. Cuando no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Fable model`. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nombre de visualización para el modelo Fable fijado en el selector `/model`. Cuando no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nombre de visualización para el modelo Fable fijado en el selector `/model`. Cuando no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo Fable fijado admite, por ejemplo `effort,thinking`. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo Fable fijado admite, por ejemplo `effort,thinking`. Vea [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |


181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Token portador para autenticación de Microsoft Foundry, como un token de acceso de Microsoft Entra. Claude Code lo envía como el encabezado `Authorization: Bearer`. Tiene precedencia sobre `ANTHROPIC_FOUNDRY_API_KEY` y sobre la cadena de credenciales predeterminada de Azure. Vea [Microsoft Foundry](/docs/es/microsoft-foundry). Requiere Claude Code v2.1.203 o posterior |181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Token portador para autenticación de Microsoft Foundry, como un token de acceso de Microsoft Entra. Claude Code lo envía como el encabezado `Authorization: Bearer`. Tiene precedencia sobre `ANTHROPIC_FOUNDRY_API_KEY` y sobre la cadena de credenciales predeterminada de Azure. Vea [Microsoft Foundry](/docs/es/microsoft-foundry). Requiere Claude Code v2.1.203 o posterior |

182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL base completa para el recurso de Microsoft Foundry (por ejemplo, `https://my-resource.services.ai.azure.com/anthropic`). Alternativa a `ANTHROPIC_FOUNDRY_RESOURCE` (vea [Microsoft Foundry](/docs/es/microsoft-foundry)) |182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL base completa para el recurso de Microsoft Foundry (por ejemplo, `https://my-resource.services.ai.azure.com/anthropic`). Alternativa a `ANTHROPIC_FOUNDRY_RESOURCE` (vea [Microsoft Foundry](/docs/es/microsoft-foundry)) |

183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nombre del recurso de Microsoft Foundry (por ejemplo, `my-resource`). Requerido si `ANTHROPIC_FOUNDRY_BASE_URL` no se establece (vea [Microsoft Foundry](/docs/es/microsoft-foundry)) |183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nombre del recurso de Microsoft Foundry (por ejemplo, `my-resource`). Requerido si `ANTHROPIC_FOUNDRY_BASE_URL` no se establece (vea [Microsoft Foundry](/docs/es/microsoft-foundry)) |

184| `ANTHROPIC_MODEL` | Nombre de la configuración de modelo a usar (vea [Configuración de Modelo](/docs/es/model-config#environment-variables)) |184| `ANTHROPIC_MODEL` | Nombre de la configuración de modelo a usar (vea [Configuración de modelo](/docs/es/model-config#environment-variables)) |

185| `ANTHROPIC_ORGANIZATION_ID` | ID de organización para [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establézcalo junto con `ANTHROPIC_FEDERATION_RULE_ID`. Vea [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |185| `ANTHROPIC_ORGANIZATION_ID` | ID de organización para [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establézcalo junto con `ANTHROPIC_FEDERATION_RULE_ID`. Vea [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |

186| `ANTHROPIC_PROFILE` | Nombre del perfil de Anthropic con el que autenticarse, como uno creado por [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) o por [iniciar sesión en una cuenta de Consola sin clave de API](/docs/es/authentication#sign-in-without-an-api-key). Vea [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |186| `ANTHROPIC_PROFILE` | Nombre del perfil de Anthropic con el que autenticarse, como uno creado por [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) o por [iniciar sesión en una cuenta de Console sin clave de API](/docs/es/authentication#sign-in-without-an-api-key). Vea [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |

187| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nombre de [modelo de clase Haiku para tareas de fondo](/docs/es/costs) |187| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nombre de [modelo de clase Haiku para tareas de fondo](/docs/es/costs) |

188| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Anule la región de AWS para el modelo de clase Haiku cuando use Amazon Bedrock o Amazon Bedrock Mantle. En Amazon Bedrock, esto solo tiene efecto cuando `ANTHROPIC_DEFAULT_HAIKU_MODEL` o el `ANTHROPIC_SMALL_FAST_MODEL` deprecado también se establece, ya que Amazon Bedrock de otra manera ejecuta tareas de fondo en el [modelo Sonnet predeterminado o el modelo principal](/docs/es/amazon-bedrock#4-pin-model-versions) en la región de sesión |188| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Anule la región de AWS para el modelo de clase Haiku cuando use Amazon Bedrock o Amazon Bedrock Mantle. En Amazon Bedrock, esto solo tiene efecto cuando `ANTHROPIC_DEFAULT_HAIKU_MODEL` o el deprecated `ANTHROPIC_SMALL_FAST_MODEL` también se establece, ya que Amazon Bedrock de otra manera ejecuta tareas de fondo en el [modelo Sonnet predeterminado o el modelo principal](/docs/es/amazon-bedrock#4-pin-model-versions) en la región de sesión |

189| `ANTHROPIC_VERTEX_BASE_URL` | Anule la URL del punto de conexión de Google Cloud's Agent Platform. Use para puntos de conexión personalizados de Google Cloud's Agent Platform o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). Vea [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |189| `ANTHROPIC_VERTEX_BASE_URL` | Anule la URL del punto de conexión de Google Cloud's Agent Platform. Use para puntos de conexión personalizados de Google Cloud's Agent Platform o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). Vea [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |

190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID de proyecto de GCP para solicitudes de Google Cloud's Agent Platform. Anulado por `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, o el proyecto en su archivo de credenciales `GOOGLE_APPLICATION_CREDENTIALS`. Vea [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID de proyecto de GCP al que se dirigen las solicitudes de Google Cloud's Agent Platform. Vea [Configurar credenciales de GCP](/docs/es/google-vertex-ai#3-configure-gcp-credentials) |

191| `ANTHROPIC_WORKSPACE_ID` | ID de espacio de trabajo para [federación de identidad de carga de trabajo](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establézcalo cuando su regla de federación tenga alcance a más de un espacio de trabajo para que el intercambio de tokens sepa cuál es el espacio de trabajo objetivo |191| `ANTHROPIC_WORKSPACE_ID` | ID de espacio de trabajo para [federación de identidad de carga de trabajo](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establézcalo cuando su regla de federación tenga un alcance de más de un espacio de trabajo para que el intercambio de tokens sepa a qué espacio de trabajo dirigirse |

192| `API_FORCE_IDLE_TIMEOUT` | Anule el tiempo de espera de inactividad del cuerpo de 5 minutos que aborta una respuesta de modelo de transmisión cuando no llegan bytes. Establezca en `0` para desactivar el tiempo de espera, por ejemplo cuando una [puerta de enlace](/docs/es/llm-gateway) lenta o un modelo local hace una pausa más larga que 5 minutos entre fragmentos, o `1` para mantenerlo activado para cada proveedor. Cuando no se establece, el tiempo de espera está activo en proveedores que no sean la API de Anthropic directa y [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Los [perros guardianes de transmisión](/docs/es/network-config#streaming-idle-watchdogs) se ejecutan independientemente de él y abortan una pausa larga silenciosa incluso cuando establece `0` aquí |192| `API_FORCE_IDLE_TIMEOUT` | Anule el tiempo de espera de inactividad del cuerpo de 5 minutos que aborta una respuesta del modelo de transmisión cuando no llegan bytes. Establezca en `0` para desactivar el tiempo de espera, por ejemplo cuando una [puerta de enlace](/docs/es/llm-gateway) lenta o un modelo local hace una pausa más larga que 5 minutos entre fragmentos, o `1` para mantenerlo activado para cada proveedor. Cuando no se establece, el tiempo de espera está activo en proveedores que no sean la API directa de Anthropic y [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Los [perros guardianes de transmisión](/docs/es/network-config#streaming-idle-watchdogs) se ejecutan independientemente de él y abortan una pausa larga silenciosa incluso cuando establece `0` aquí |

193| `API_TIMEOUT_MS` | Tiempo de espera para solicitudes de API en milisegundos (predeterminado: 600000, o 10 minutos; máximo: 2147483647). Aumente esto cuando las solicitudes agoten el tiempo de espera en redes lentas o cuando enrute a través de un proxy. Los valores por encima del máximo desbordan el temporizador subyacente y causan que las solicitudes fallen inmediatamente |193| `API_TIMEOUT_MS` | Tiempo de espera para solicitudes de API en milisegundos (predeterminado: 600000, o 10 minutos; máximo: 2147483647). Aumente esto cuando las solicitudes agoten el tiempo de espera en redes lentas o cuando enrute a través de un proxy. Los valores por encima del máximo desbordan el temporizador subyacente y causan que las solicitudes fallen inmediatamente |

194| `AWS_BEARER_TOKEN_BEDROCK` | Clave de API de Amazon Bedrock para autenticación (vea [Claves de API de Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |194| `AWS_BEARER_TOKEN_BEDROCK` | Clave de API de Amazon Bedrock para autenticación (vea [Claves de API de Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

195| `BASH_DEFAULT_TIMEOUT_MS` | Tiempo de espera predeterminado para comandos bash de larga duración (predeterminado: 120000, o 2 minutos) |195| `BASH_DEFAULT_TIMEOUT_MS` | Tiempo de espera predeterminado para comandos bash de larga duración (predeterminado: 120000, o 2 minutos) |

196| `BASH_MAX_OUTPUT_LENGTH` | Número máximo de caracteres de salida de bash que Claude Code lee en el resultado de un comando (predeterminado: 30000; máximo: 150000). Si establece la configuración [`bashOutputMaxChars`](/docs/es/settings-reference#bashoutputmaxchars), Claude Code ignora esta variable. Vea [Límites de salida](/docs/es/tools-reference#output-limits) |196| `BASH_MAX_OUTPUT_LENGTH` | Número máximo de caracteres de salida de bash que Claude Code lee en el resultado de un comando (predeterminado: 30000; máximo: 150000). Si establece la configuración [`bashOutputMaxChars`](/docs/es/settings-reference#bashoutputmaxchars), Claude Code ignora esta variable. Vea [Límites de salida](/docs/es/tools-reference#output-limits) |

197| `BASH_MAX_TIMEOUT_MS` | Tiempo de espera máximo que el modelo puede establecer para comandos bash de larga duración (predeterminado: 600000, o 10 minutos). El techo efectivo es el mayor de este y `BASH_DEFAULT_TIMEOUT_MS` |197| `BASH_MAX_TIMEOUT_MS` | Tiempo de espera máximo que el modelo puede establecer para comandos bash de larga duración (predeterminado: 600000, o 10 minutos). El techo efectivo es el mayor de este y `BASH_DEFAULT_TIMEOUT_MS` |

198| `BETA_TRACING_ENDPOINT` | Punto de conexión OTLP para [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta): con `ENABLE_BETA_TRACING_DETAILED=1`, los registros y rastreos van allí en lugar de a los exportadores configurados. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |198| `BETA_TRACING_ENDPOINT` | Punto de conexión OTLP para [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta): con `ENABLE_BETA_TRACING_DETAILED=1`, los registros y rastreos van allí en lugar de a los exportadores configurados. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

199| `CCR_FORCE_BUNDLE` | Establezca en `1` para forzar [`claude --cloud`](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) a empaquetar y cargar su repositorio local incluso cuando el acceso a GitHub está disponible |199| `CCR_FORCE_BUNDLE` | Establezca en `1` para forzar [`claude --cloud`](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) a agrupar y cargar su repositorio local en lugar de clonar desde su remoto |

200| `CLAUDECODE` | Establezca en `1` en subprocesos que Claude Code genera (herramientas Bash y PowerShell, sesiones tmux, comandos [hook](/docs/es/hooks), comandos [línea de estado](/docs/es/statusline), subprocesos de [servidor MCP](/docs/es/mcp) stdio). Las extensiones IDE también establecen esto en sus terminales integrados. Use para detectar cuándo un script se ejecuta dentro de un subproceso generado por Claude Code. Para verificar si el proceso actual fue generado directamente por una llamada de herramienta o hook, en lugar de dentro de un servidor MCP stdio que Claude Code inició, use `CLAUDE_CODE_CHILD_SESSION` en su lugar |200| `CLAUDECODE` | Establezca en `1` en subprocesos que Claude Code genera (herramientas Bash y PowerShell, sesiones tmux, comandos [hook](/docs/es/hooks), comandos [línea de estado](/docs/es/statusline), subprocesos de [servidor MCP](/docs/es/mcp) stdio). Las extensiones IDE también establecen esto en sus terminales integrados. Use para detectar cuándo un script se ejecuta dentro de un subproceso generado por Claude Code. Para verificar si el proceso actual fue generado directamente por una llamada de herramienta o hook, en lugar de dentro de un servidor MCP stdio que Claude Code inició, use `CLAUDE_CODE_CHILD_SESSION` en su lugar |

201| `CLAUDE_AFK_COUNTDOWN_MS` | Cuántos milisegundos antes de auto-continuar aparece la cuenta regresiva en pantalla en un diálogo [`AskUserQuestion`](/docs/es/tools-reference) sin respuesta. Predeterminado `20000` (20 segundos), limitado al tiempo de espera de auto-continuación. No tiene efecto a menos que la auto-continuación esté activada; vea la configuración [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout) y `CLAUDE_AFK_TIMEOUT_MS`. Requiere Claude Code v2.1.198 o posterior |201| `CLAUDE_AFK_COUNTDOWN_MS` | Cuántos milisegundos antes de auto-continuar aparece la cuenta regresiva en pantalla en un diálogo [`AskUserQuestion`](/docs/es/tools-reference) sin respuesta. Predeterminado `20000` (20 segundos), limitado al tiempo de espera de auto-continuación. No tiene efecto a menos que la auto-continuación esté activada; vea la configuración [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout) y `CLAUDE_AFK_TIMEOUT_MS`. Requiere Claude Code v2.1.198 o posterior |

202| `CLAUDE_AFK_TIMEOUT_MS` | Cuántos milisegundos de tiempo inactivo antes de que un diálogo [`AskUserQuestion`](/docs/es/tools-reference) sin respuesta se auto-continúe sin usted. La auto-continuación está desactivada de forma predeterminada; opte por ella con la configuración [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout). Esta variable es una anulación para demostraciones y pruebas automatizadas: cuando se establece, tiene precedencia sobre esa configuración y activa la auto-continuación incluso cuando la configuración no se establece o es `never`. Establecer `0` no desactiva el tiempo de espera; cierra el diálogo inmediatamente. En v2.1.198 y v2.1.199, la auto-continuación estaba activada de forma predeterminada con un tiempo de espera de `60000` (60 segundos). Requiere Claude Code v2.1.198 o posterior |202| `CLAUDE_AFK_TIMEOUT_MS` | Cuántos milisegundos de tiempo inactivo antes de que un diálogo [`AskUserQuestion`](/docs/es/tools-reference) sin respuesta se auto-continúe sin usted. La auto-continuación está desactivada de forma predeterminada; opte por ella con la configuración [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout). Esta variable es una anulación para demostraciones y pruebas automatizadas: cuando se establece, tiene precedencia sobre esa configuración y activa la auto-continuación incluso cuando la configuración no se establece o es `never`. Establecer `0` no desactiva el tiempo de espera; cierra el diálogo inmediatamente. En v2.1.198 y v2.1.199, la auto-continuación estaba activada de forma predeterminada con un tiempo de espera de `60000` (60 segundos). Requiere Claude Code v2.1.198 o posterior |

203| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establezca en `1` para desabilitar todos los tipos de [subagente](/docs/es/sub-agents) integrados como Explore y Plan. Solo se aplica en modo no interactivo (la bandera `-p`). Útil para usuarios de SDK que desean una pizarra en blanco. Esto también elimina `general-purpose`, el subagente que Claude Code ejecuta cuando una llamada de herramienta de Agent omite `subagent_type`. Tal llamada entonces falla con [`subagent_type is required`](/docs/es/errors#subagent-type-is-required) |203| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establezca en `1` para desabilitar todos los tipos de [subagente](/docs/es/sub-agents) integrados como Explore y Plan. Solo se aplica en modo no interactivo (la bandera `-p`). Útil para usuarios de SDK que desean una pizarra en blanco. Esto también elimina `general-purpose`, el subagente que Claude Code ejecuta cuando una llamada de herramienta de Agent omite `subagent_type`. Tal llamada entonces falla con [`subagent_type is required`](/docs/es/errors#subagent-type-is-required) |

204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Establezca en `1` para omitir el prefijo `mcp__<server>__` en nombres de herramientas de servidores MCP creados por SDK. Las herramientas usan sus nombres originales. Solo uso de SDK |204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Establezca en `1` para omitir el prefijo `mcp__<server>__` en nombres de herramientas de servidores MCP creados por SDK. Las herramientas usan sus nombres originales. Solo uso de SDK |

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

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

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

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

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

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

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

212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos para el perro guardián de inactividad de transmisión a nivel de byte; cuando se establece, tiene precedencia sobre `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para ese perro guardián y deja el perro guardián a nivel de evento sin cambios. Claude Code fija esta variable entre 10 segundos y 30 minutos. Requiere Claude Code v2.1.210 o posterior |212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos para el perro guardián de inactividad de transmisión a nivel de byte; cuando se establece, tiene precedencia sobre `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para ese perro guardián y deja el perro guardián a nivel de evento sin cambios. Claude Code fija esta variable entre 10 segundos y 30 minutos. Requiere Claude Code v2.1.210 o posterior |

213| `CLAUDE_CLIENT_PRESENCE_FILE` | Ruta a un archivo que una herramienta externa, como un oyente de bloqueo de pantalla, crea cuando desbloquea su pantalla y elimina cuando la bloquea. Mientras el archivo existe, Claude Code omite [notificaciones push móviles de Control Remoto](/docs/es/remote-control#mobile-push-notifications), por lo que deja de recibir notificaciones mientras usa activamente la computadora. Cuando el archivo está ausente o no se puede leer, las notificaciones se envían normalmente. Claude Code verifica el archivo una vez por evento de activación de notificación en lugar de sondear. Requiere Claude Code v2.1.181 o posterior |213| `CLAUDE_CLIENT_PRESENCE_FILE` | Ruta a un archivo que una herramienta externa, como un oyente de bloqueo de pantalla, crea cuando desbloquea su pantalla y elimina cuando la bloquea. Mientras el archivo existe, Claude Code omite [notificaciones push móviles de Remote Control](/docs/es/remote-control#mobile-push-notifications), por lo que deja de recibir notificaciones mientras usa activamente la computadora. Cuando el archivo está ausente o no se puede leer, las notificaciones se envían normalmente. Claude Code verifica el archivo una vez por evento de activación de notificación en lugar de sondear. Requiere Claude Code v2.1.181 o posterior |

214| `CLAUDE_CODE_ACCESSIBILITY` | Establezca en `1` para mantener visible el cursor de terminal nativo y desabilitar el indicador de cursor de texto invertido. Permite que ampliadores de pantalla como macOS Zoom rastreen la posición del cursor |214| `CLAUDE_CODE_ACCESSIBILITY` | Establezca en `1` para mantener visible el cursor de terminal nativo y desabilitar el indicador de cursor de texto invertido. Permite que ampliadores de pantalla como macOS Zoom rastreen la posición del cursor |

215| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Establezca en `1` para cargar archivos de memoria de directorios especificados con `--add-dir`. Carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, y `CLAUDE.local.md`. De forma predeterminada, los directorios adicionales no cargan archivos de memoria |215| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Establezca en `1` para cargar archivos de memoria de directorios especificados con `--add-dir`. Carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, y `CLAUDE.local.md`. De forma predeterminada, los directorios adicionales no cargan archivos de memoria |

216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Establezca en `1` para repintar la pantalla completa en cada fotograma en [renderizado de pantalla completa](/docs/es/fullscreen) en lugar de enviar actualizaciones incrementales. Use esto si el modo de pantalla completa muestra fragmentos de texto obsoletos o mal colocados. Claude Code habilita esto automáticamente para sesiones de fondo y [vista de agente](/docs/es/agent-view) en Windows |216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Establezca en `1` para repintar la pantalla completa en cada fotograma en [renderizado de pantalla completa](/docs/es/fullscreen) en lugar de enviar actualizaciones incrementales. Use esto si el modo de pantalla completa muestra fragmentos de texto obsoletos o mal colocados. Claude Code habilita esto automáticamente para sesiones de fondo y [vista de agente](/docs/es/agent-view) en Windows |

217| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Establezca en `1` para enviar el parámetro [effort](/docs/es/model-config#adjust-effort-level) con cada solicitud, incluso cuando Claude Code no reconoce el ID del modelo como capaz de esfuerzo. Use esto cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway) o proveedor de terceros que sirve modelos bajo identificadores personalizados. Los modelos que rechazan el parámetro de esfuerzo en la API, incluidos los modelos Claude 3, Sonnet 4.0 y 4.5, Opus 4.0 y 4.1, y Haiku 4.5, aún se excluyen para que las solicitudes no fallen |217| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Establezca en `1` para enviar el parámetro [effort](/docs/es/model-config#adjust-effort-level) con cada solicitud, incluso cuando Claude Code no reconoce el ID del modelo como capaz de esfuerzo. Use esto cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway) o proveedor de terceros que sirve modelos bajo identificadores personalizados. Los modelos que rechazan el parámetro de esfuerzo en la API, incluidos los modelos Claude 3, Sonnet 4.0 y 4.5, Opus 4.0 y 4.1, y Haiku 4.5, aún se excluyen para que las solicitudes no fallen |

218| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo en milisegundos en el que se deben actualizar las credenciales (cuando se usa [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper)) |218| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo en milisegundos en el que se deben actualizar las credenciales (cuando se usa [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper)) |

219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Establezca en `0` para evitar que Claude Code abra el navegador automáticamente cuando se publica un nuevo [artefacto](/docs/es/artifacts). Volver a publicar un artefacto existente no abre el navegador independientemente de esta configuración |219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Establezca en `0` para evitar que Claude Code abra el navegador automáticamente cuando se publica un nuevo [artefacto](/docs/es/artifacts#create-an-artifact) |

220| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Establezca en `0` para evitar que Claude lea y responda a [comentarios en un artefacto](/docs/es/artifacts#collect-comments-on-an-artifact). No tiene efecto cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ha [desactivado artefactos](/docs/es/artifacts#availability). Requiere Claude Code v2.1.221 o posterior |220| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Establezca en `0` para evitar que Claude lea y responda a [comentarios en un artefacto](/docs/es/artifacts#collect-comments-on-an-artifact). No tiene efecto cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ha [desactivado artefactos](/docs/es/artifacts#availability). Requiere Claude Code v2.1.221 o posterior |

221| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Establezca en `0` para evitar que Claude [responda por su cuenta a comentarios enviados a él](/docs/es/artifacts#let-claude-reply-to-comments-on-its-own). Requiere Claude Code v2.1.228 o posterior |221| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Establezca en `0` para evitar que Claude [responda por su cuenta a comentarios enviados a él](/docs/es/artifacts#let-claude-reply-to-comments-on-its-own). Requiere Claude Code v2.1.228 o posterior |

222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Establezca en `0` para omitir el [bloque de atribución](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), que lleva la versión del cliente y una huella digital del prompt, desde el inicio del prompt del sistema. El almacenamiento en caché en una conexión directa a la API de Anthropic no se ve afectado de ninguna manera. En algunas configuraciones de conexión directa, Claude Code mantiene el bloque en solicitudes del clasificador [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) incluso cuando establece `0`. En [Bloque de atribución del prompt del sistema](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), verifique qué conexiones y credenciales cubre esto. Antes de v2.1.181, el bloque incluía un token por solicitud en URLs de base personalizada y conexiones de Microsoft Foundry, por lo que en esas versiones establézcalo en `0` cuando su puerta de enlace LLM almacena en caché el cuerpo de la solicitud o reenvía solicitudes a un proveedor de terceros, o cuando se conecta a Microsoft Foundry directamente |222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Establezca en `0` para omitir el [bloque de atribución](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), que lleva la versión del cliente y una huella digital del prompt, desde el inicio del prompt del sistema. El almacenamiento en caché en una conexión directa a la API de Anthropic no se ve afectado de ninguna manera. En algunas configuraciones de conexión directa, Claude Code mantiene el bloque en solicitudes de clasificador [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) incluso cuando establece `0`. En [Bloque de atribución del prompt del sistema](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), verifique qué conexiones y credenciales cubre esto. Antes de v2.1.181, el bloque incluía un token por solicitud en URLs base personalizadas y conexiones de Microsoft Foundry, por lo que en esas versiones establézcalo en `0` cuando su puerta de enlace LLM almacena en caché el cuerpo de la solicitud o reenvía solicitudes a un proveedor de terceros, o cuando se conecta a Microsoft Foundry directamente |

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Cuando `CLAUDE_AUTO_BACKGROUND_TASKS` está habilitado, segundos entre recordatorios a Claude para verificar [subagentes de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que aún se están ejecutando. Solo acepta un entero simple de `1` a `86400`; cualquier otro valor o deletreo se lee como no establecido. Cuando no se establece, no hay recordatorios de verificación. Requiere Claude Code v2.1.248 o posterior |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Cuando `CLAUDE_AUTO_BACKGROUND_TASKS` está habilitado, segundos entre recordatorios a Claude para verificar [subagentes de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que aún se están ejecutando. Solo acepta un entero simple de `1` a `86400`; cualquier otro valor o deletreo se lee como no establecido. Cuando no se establece, no hay recordatorios de verificación. Requiere Claude Code v2.1.248 o posterior |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la [ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) en tokens, de `100000` a `1000000`. Solo acepta un entero simple como `500000`: un valor como `500k` se lee como `500` y se fija al mínimo de 100K. La ventana efectiva también se limita a la ventana de contexto del modelo. Tiene precedencia sobre el comando `/autocompact`, la bandera `--autocompact` y la configuración `autoCompactWindow`. La `used_percentage` de la línea de estado siempre mide contra la ventana de contexto completa del modelo, por lo que una vez que se establece esta variable, ese porcentaje ya no indica cuándo se ejecutará la compactación |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la [ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) en tokens, de `100000` a `1000000`. Solo acepta un entero simple como `500000`: un valor como `500k` se lee como `500` y se fija al mínimo de 100K. La ventana efectiva también se limita a la ventana de contexto del modelo. Tiene precedencia sobre el comando `/autocompact`, la bandera `--autocompact` y la configuración `autoCompactWindow`. La `used_percentage` de la línea de estado siempre mide contra la ventana de contexto completa del modelo, por lo que una vez que se establece esta variable, ese porcentaje ya no indica cuándo se ejecutará la compactación |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión IDE](/docs/es/vs-code) automática. De forma predeterminada, Claude Code se conecta automáticamente cuando se inicia dentro de la terminal integrada de un IDE compatible. Establezca en `false` para evitar esto. Establezca en `true` para forzar un intento de conexión cuando la detección automática falla, como cuando tmux oculta la terminal padre. Tiene precedencia sobre la configuración global [`autoConnectIde`](/docs/es/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión IDE](/docs/es/vs-code) automática. De forma predeterminada, Claude Code se conecta automáticamente cuando se inicia dentro de un terminal integrado de IDE compatible. Establezca en `false` para evitar esto. Establezca en `true` para forzar un intento de conexión cuando la auto-detección falla, como cuando tmux oscurece la terminal padre. Tiene precedencia sobre la configuración global [`autoConnectIde`](/docs/es/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Tiempo en milisegundos que Claude Code espera a que la cadena de proveedor de credenciales predeterminada de AWS produzca credenciales antes de que la solicitud falle con [`AWS default-chain credential resolve timed out`](/docs/es/errors#aws-default-chain-credential-resolve-timed-out) (predeterminado: `60000`). Aumente cuando un paso en su cadena legítimamente necesita más tiempo, como un inicio de sesión SSO basado en navegador con MFA a través de un contenedor como `aws-vault`. Se aplica dondequiera que Claude Code firme con la cadena predeterminada: [Amazon Bedrock](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y el [punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Requiere Claude Code v2.1.207 o posterior |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | En Amazon Bedrock, Google Cloud's Agent Platform, y Microsoft Foundry, establezca en `1` para que el clasificador del lado del servidor de la plataforma revise acciones de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode); donde la plataforma no ejecuta el clasificador, Claude Code vuelve a sus propias solicitudes de clasificador. Cuando no se establece o es `0`, el clasificador se ejecuta a través de solicitudes que Claude Code mismo envía. No tiene efecto en otros proveedores, incluida la API de Anthropic. Requiere Claude Code v2.1.271 o posterior |

227| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Se establece automáticamente en subprocesos de herramienta Bash y [comando hook](/docs/es/hooks) mientras la sesión tiene una conexión activa de [Control Remoto](/docs/es/remote-control), y se elimina cuando la conexión termina. El valor es el ID de la sesión en forma `session_`, el mismo identificador que aparece en la URL `claude.ai/code` de la sesión, para que un script pueda vincularse de nuevo a la sesión que lo ejecutó. Requiere Claude Code v2.1.199 o posterior. En [sesiones en la nube](/docs/es/claude-code-on-the-web), lea `CLAUDE_CODE_REMOTE_SESSION_ID` en su lugar |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Tiempo en milisegundos que Claude Code espera a que la cadena de proveedores de credenciales predeterminada de AWS produzca credenciales antes de que la solicitud falle con [`AWS default-chain credential resolve timed out`](/docs/es/errors#aws-default-chain-credential-resolve-timed-out) (predeterminado: `60000`). Aumente cuando un paso en su cadena legítimamente necesita más tiempo, como un inicio de sesión SSO basado en navegador con MFA a través de un contenedor como `aws-vault`. Se aplica dondequiera que Claude Code firme con la cadena predeterminada: [Amazon Bedrock](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y el [punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Requiere Claude Code v2.1.207 o posterior |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Establezca en `0` para desactivar la [diferencia de los archivos que cambió un comando Bash](/docs/es/hooks#bash), o `1` para registrarlo en cada modo de permiso. Tiene precedencia sobre la configuración [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled). Requiere Claude Code v2.1.269 o posterior |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Establezca en `0` para hacer que una sesión no interactiva informe un estado inactivo a su host en cada final de turno, incluso mientras el trabajo de fondo aún se está ejecutando. De forma predeterminada, la sesión continúa informando un estado de ejecución después del final del turno mientras el trabajo de fondo como un agente de fondo o una ejecución de [flujo de trabajo](/docs/es/workflows) aún está activo. Esto mantiene un host que observa el estado, como una lista de sesión remota, de anunciar que Claude está esperando su entrada a mitad del trabajo. Los comandos de shell de fondo, como un servidor de desarrollo, no mantienen el estado de ejecución. El predeterminado de estado de ejecución y el opt-out de `0` requieren Claude Code v2.1.269 o posterior; en versiones anteriores, establezca `1` para mantener el estado de ejecución |

230| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Se establece automáticamente en subprocesos de herramienta Bash y [comando hook](/docs/es/hooks) mientras la sesión tiene una conexión [Remote Control](/docs/es/remote-control) activa, y se elimina cuando la conexión termina. El valor es el ID de la sesión en forma `session_`, el mismo identificador que aparece en la URL `claude.ai/code` de la sesión, para que un script pueda vincularse de nuevo a la sesión que lo ejecutó. Requiere Claude Code v2.1.199 o posterior. En [sesiones en la nube](/docs/es/claude-code-on-the-web), lea `CLAUDE_CODE_REMOTE_SESSION_ID` en su lugar |

228| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Establezca en `0` para hacer que Claude Code lea el byte `0x08`, también escrito `^H`, como Retroceso simple, o `1` para leerlo como Ctrl+Retroceso. Cualquier valor reemplaza el predeterminado de la plataforma. De forma predeterminada, Claude Code lo lee como Ctrl+Retroceso en Windows, excepto cuando `TERM_PROGRAM` es `mintty` o `TERM` es `cygwin`, y como Retroceso simple en macOS y Linux. Establezca `0` en una terminal de Windows donde [Retroceso elimina una palabra completa](/docs/es/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |231| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Establezca en `0` para hacer que Claude Code lea el byte `0x08`, también escrito `^H`, como Retroceso simple, o `1` para leerlo como Ctrl+Retroceso. Cualquier valor reemplaza el predeterminado de la plataforma. De forma predeterminada, Claude Code lo lee como Ctrl+Retroceso en Windows, excepto cuando `TERM_PROGRAM` es `mintty` o `TERM` es `cygwin`, y como Retroceso simple en macOS y Linux. Establezca `0` en una terminal de Windows donde [Retroceso elimina una palabra completa](/docs/es/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |

229| `CLAUDE_CODE_CERT_STORE` | Lista separada por comas de fuentes de certificados de CA para conexiones TLS. `bundled` es el conjunto de CA de Mozilla enviado con Claude Code. `system` es el almacén de confianza del sistema operativo, leído solo en tiempos de ejecución con `tls.getCACertificates`: el binario nativo, o Node 22.15 o posterior para instalaciones npm. Vea [Almacén de certificados de CA](/docs/es/network-config#ca-certificate-store). El predeterminado es `bundled,system` |232| `CLAUDE_CODE_CERT_STORE` | Lista separada por comas de fuentes de certificados de CA para conexiones TLS. `bundled` es el conjunto de CA de Mozilla enviado con Claude Code. `system` es el almacén de confianza del sistema operativo, leído solo en tiempos de ejecución con `tls.getCACertificates`: el binario nativo, o Node 22.15 o posterior para instalaciones npm. Vea [Almacén de certificados de CA](/docs/es/network-config#ca-certificate-store). El predeterminado es `bundled,system` |

230| `CLAUDE_CODE_CHILD_SESSION` | Se establece en `1` en subprocesos que Claude Code genera a través de las herramientas Bash, PowerShell y Monitor, comandos [hook](/docs/es/hooks), y comandos [línea de estado](/docs/es/statusline). No se establece para subprocesos de [servidor MCP](/docs/es/mcp) stdio, que son de larga duración y sobreviven a la sesión que los generó. A diferencia de `CLAUDECODE`, esto solo se establece por Claude Code mismo cuando inicia un subproceso y no por extensiones IDE, por lo que distingue de manera confiable una sesión anidada de un `claude` de nivel superior lanzado en una terminal integrada de IDE. Un `claude` TUI interactivo anidado iniciado de esta manera se excluye automáticamente de `--resume`, `--continue`, historial de flecha hacia arriba, y la lista `claude agents`. Las sesiones `claude -p` no interactivas aún persisten. Establezca `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` para anular esta exclusión. Requiere Claude Code v2.1.172 o posterior |233| `CLAUDE_CODE_CHILD_SESSION` | Se establece en `1` en subprocesos que Claude Code genera a través de las herramientas Bash, PowerShell y Monitor, comandos [hook](/docs/es/hooks), y comandos [línea de estado](/docs/es/statusline). No se establece para subprocesos de [servidor MCP](/docs/es/mcp) stdio, que son de larga duración y sobreviven a la sesión que los generó. A diferencia de `CLAUDECODE`, esto solo se establece por Claude Code mismo cuando inicia un subproceso y no por extensiones IDE, por lo que distingue de manera confiable una sesión anidada de un `claude` de nivel superior lanzado en un terminal integrado de IDE. Una `claude` TUI interactiva anidada iniciada de esta manera se excluye automáticamente de `--resume`, `--continue`, historial de flecha hacia arriba, y la lista `claude agents`. Las sesiones `claude -p` no interactivas aún persisten. Establezca `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` para anular esta exclusión. Requiere Claude Code v2.1.172 o posterior |

231| `CLAUDE_CODE_CLIENT_CERT` | Ruta al archivo de certificado de cliente para autenticación mTLS |234| `CLAUDE_CODE_CLIENT_CERT` | Ruta al archivo de certificado de cliente para autenticación mTLS |

232| `CLAUDE_CODE_CLIENT_KEY` | Ruta al archivo de clave privada de cliente para autenticación mTLS |235| `CLAUDE_CODE_CLIENT_KEY` | Ruta al archivo de clave privada de cliente para autenticación mTLS |

233| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frase de contraseña para CLAUDE\_CODE\_CLIENT\_KEY cifrado (opcional) |236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frase de contraseña para CLAUDE\_CODE\_CLIENT\_KEY cifrado (opcional) |

234| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Eliminado en v2.1.186 y ahora es un no-op. Anteriormente establecía un tiempo de espera separado para la fase de conexión, TLS y encabezado de respuesta de una solicitud de API de transmisión. Use `API_TIMEOUT_MS` para el tiempo de espera por solicitud. Para la fase de encabezado de respuesta de una solicitud de transmisión, vea `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Eliminado en v2.1.186 y ahora es un no-op. Anteriormente establecía un tiempo de espera separado para la fase de conexión, TLS y encabezado de respuesta de una solicitud de API de transmisión. Use `API_TIMEOUT_MS` para el tiempo de espera por solicitud. Para la fase de encabezado de respuesta de una solicitud de transmisión, vea `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

235| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Anule la ruta del archivo de registro de depuración. A pesar del nombre, esta es una ruta de archivo, no un directorio. Requiere que el modo de depuración se habilite por separado a través de `--debug`, `/debug`, o la variable de entorno `DEBUG`: establecer solo esta variable no habilita el registro. La bandera [`--debug-file`](/docs/es/cli-reference#cli-flags) hace ambas cosas a la vez. El predeterminado es `~/.claude/debug/<session-id>.txt` |238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Anule la ruta del archivo de registro de depuración. A pesar del nombre, esta es una ruta de archivo, no un directorio. Requiere que el modo de depuración se habilite por separado a través de `--debug`, `/debug`, o la variable de entorno `DEBUG`: establecer solo esta variable no habilita el registro. La bandera [`--debug-file`](/docs/es/cli-reference#cli-flags) hace ambas cosas a la vez. El valor predeterminado es `~/.claude/debug/<session-id>.txt` |

236| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Nivel de registro mínimo escrito en el archivo de registro de depuración. Valores: `verbose`, `debug` (predeterminado), `info`, `warn`, `error`. Establezca en `verbose` para incluir diagnósticos de alto volumen como salida completa de comandos de línea de estado, o aumente a `error` para reducir ruido |239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Nivel de registro mínimo escrito en el archivo de registro de depuración. Valores: `verbose`, `debug` (predeterminado), `info`, `warn`, `error`. Establezca en `verbose` para incluir diagnósticos de alto volumen como salida de comando de línea de estado completa, o aumente a `error` para reducir ruido |

237| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Establezca en `1` para desabilitar el soporte de [ventana de contexto de 1M](/docs/es/model-config#extended-context). Cuando se establece, las variantes de modelo de 1M no están disponibles en el selector de modelo, y Claude Code mantiene sesiones en modelos con una ventana nativa de 1M, como [Sonnet 5](/docs/es/model-config#sonnet-5-context-window) y los modelos Fable, a una ventana de 200K; vea [Contexto extendido](/docs/es/model-config#extended-context) para cómo se aplica la retención. Útil para entornos empresariales con requisitos de cumplimiento. Para su papel en corregir la ventana para un ID de modelo no reconocido `[1m]`, vea [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Establezca en `1` para desabilitar el soporte de [ventana de contexto de 1M](/docs/es/model-config#extended-context). Cuando se establece, las variantes de modelo de 1M no están disponibles en el selector de modelo, y Claude Code mantiene sesiones en modelos con una ventana nativa de 1M, como [Sonnet 5](/docs/es/model-config#sonnet-5-context-window) y los modelos Fable, a una ventana de 200K; vea [Contexto extendido](/docs/es/model-config#extended-context) para cómo se aplica la retención. Útil para entornos empresariales con requisitos de cumplimiento. Para su papel en corregir la ventana para un ID de modelo \[1m] no reconocido, vea [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |

238| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Establezca en `1` para desabilitar [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) en Opus 4.6 y Sonnet 4.6 y vuelva al presupuesto de pensamiento fijo controlado por `MAX_THINKING_TOKENS`. No tiene efecto en [modelos Fable](/docs/es/model-config#extended-thinking), Sonnet 5, u Opus 4.7 y posterior, que siempre usan razonamiento adaptativo |241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Establezca en `1` para desabilitar [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) en Opus 4.6 y Sonnet 4.6 y volver al presupuesto de pensamiento fijo controlado por `MAX_THINKING_TOKENS`. No tiene efecto en [modelos Fable](/docs/es/model-config#extended-thinking), Sonnet 5, u Opus 4.7 y posterior, que siempre usan razonamiento adaptativo |

239| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Establezca en `1` para evitar que Claude Code fusione bloques `env` de [configuración administrada](/docs/es/managed-settings#precedence-within-the-managed-tier) por clave entre fuentes de administrador, para que solo se aplique el bloque `env` completo de la fuente de mayor prioridad, como antes de v2.1.223. Establézcalo en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de configuración. Requiere Claude Code v2.1.223 o posterior |242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Establezca en `1` para evitar que Claude Code fusione bloques `env` de [configuración administrada](/docs/es/managed-settings#precedence-within-the-managed-tier) por clave en todas las fuentes de administrador, por lo que solo se aplica el bloque `env` de la fuente de mayor prioridad, como antes de v2.1.223. Establézcalo en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de configuración. Requiere Claude Code v2.1.223 o posterior |

240| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Establezca en `1` para desabilitar la [herramienta de asesor](/docs/es/advisor). El comando `/advisor` se vuelve no disponible, cualquier `advisorModel` configurado se ignora, y la bandera `--advisor` se acepta pero no tiene efecto, para que los scripts existentes que la pasan continúen funcionando sin errores |243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Establezca en `1` para desabilitar la [herramienta asesor](/docs/es/advisor). El comando `/advisor` se vuelve no disponible, cualquier `advisorModel` configurado se ignora, y la bandera `--advisor` se acepta pero no tiene efecto, por lo que los scripts existentes que la pasan continúan funcionando sin errores |

241| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Establezca en `1` para desactivar [agentes de fondo y vista de agente](/docs/es/agent-view): `claude agents`, `--bg`, `/background`, y el supervisor bajo demanda. Equivalente a la configuración [`disableAgentView`](/docs/es/settings-reference#disableagentview) |244| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Establezca en `1` para desactivar [agentes de fondo y vista de agente](/docs/es/agent-view): `claude agents`, `--bg`, `/background`, y el supervisor bajo demanda. Equivalente a la configuración [`disableAgentView`](/docs/es/settings-reference#disableagentview) |

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

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

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

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

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

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

248| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Establezca en `1` para omitir la verificación de que una respuesta de transmisión de [Amazon Bedrock](/docs/es/amazon-bedrock) lleve el tipo de contenido `application/vnd.amazon.eventstream`. Sin esta variable, cuando una respuesta lleva un tipo de contenido diferente, Claude Code falla la solicitud con un error que nombra ese tipo, lo que significa que una [puerta de enlace o proxy está transformando la respuesta](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Configure la puerta de enlace para reenviar el encabezado `Content-Type` y el cuerpo sin modificar en lugar de establecer esta variable. Requiere Claude Code v2.1.208 o posterior |251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Establezca en `1` para omitir la verificación de que una respuesta de transmisión de [Amazon Bedrock](/docs/es/amazon-bedrock) lleve el tipo de contenido `application/vnd.amazon.eventstream`. Sin esta variable, cuando una respuesta lleva un tipo de contenido diferente, Claude Code falla la solicitud con un error que nombra ese tipo, lo que significa que una [puerta de enlace o proxy está transformando la respuesta](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Configure la puerta de enlace para reenviar el encabezado `Content-Type` y el cuerpo sin modificar en lugar de establecer esta variable. Requiere Claude Code v2.1.208 o posterior |

249| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Establezca en `1` para evitar que los comandos de shell de fondo en ejecución de una [sesión de fondo](/docs/es/agent-view), flujos de trabajo dinámicos, y, a partir de v2.1.198, subagentes de fondo cuando el [supervisor](/docs/es/agent-view#the-supervisor-process) detiene, reinicia o actualiza el proceso de esa sesión, en lugar de entregarlos al siguiente proceso de la sesión. Afecta solo esa entrega: enviar una sesión a segundo plano con `←` o [`/background`](/docs/es/agent-view#from-inside-a-session) aún lleva trabajo en vuelo, y `CLAUDE_DISABLE_ADOPT` desactiva ambos. Requiere Claude Code v2.1.196 o posterior |252| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Establezca en `1` para evitar que los comandos de shell de fondo en ejecución de una [sesión de fondo](/docs/es/agent-view), flujos de trabajo dinámicos, y, a partir de v2.1.198, subagentes de fondo cuando el [supervisor](/docs/es/agent-view#the-supervisor-process) detiene, reinicia o actualiza el proceso de esa sesión, en lugar de entregarlos al siguiente proceso de la sesión. Solo afecta esa entrega: enviar una sesión a segundo plano con `←` o [`/background`](/docs/es/agent-view#from-inside-a-session) aún lleva el trabajo en vuelo, y `CLAUDE_DISABLE_ADOPT` desactiva ambos. Requiere Claude Code v2.1.196 o posterior |

250| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Establezca en `1` para evitar que Claude Code termine [comandos de shell de fondo](/docs/es/interactive-mode#background-bash-commands) cuando el sistema operativo informa presión de memoria. De forma predeterminada, en macOS y Linux, Claude Code termina un shell de fondo iniciado en la sesión principal en una señal de presión de memoria una vez que la sesión ha estado inactiva durante 30 minutos y ningún turno o subagente se está ejecutando. Windows no tiene una señal de presión de memoria, por lo que esta variable no tiene efecto allí. Requiere Claude Code v2.1.193 o posterior |253| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Establezca en `1` para evitar que Claude Code termine [comandos de shell de fondo](/docs/es/interactive-mode#background-bash-commands) cuando el sistema operativo informa presión de memoria. De forma predeterminada, en macOS y Linux, Claude Code termina un shell de fondo iniciado en la sesión principal en una señal de presión de memoria una vez que la sesión ha estado inactiva durante 30 minutos y ningún turno o subagente se está ejecutando. 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 |

251| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establezca en `1` para desabilitar los [skills](/docs/es/skills) y flujos de trabajo incluidos con Claude Code: los skills agrupados y flujos de trabajo se eliminan completamente, mientras que los comandos integrados como `/init` permanecen escribibles pero se ocultan del modelo. `/doctor` permanece escribible 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. Equivalente a la configuración [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills) |254| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establezca en `1` para desabilitar las [skills](/docs/es/skills) e flujos de trabajo incluidos con Claude Code: las skills agrupadas y los flujos de trabajo se eliminan completamente, mientras que los comandos integrados como `/init` permanecen escribibles pero se ocultan del modelo. `/doctor` permanece escribible como los comandos integrados; ocúltalo con `DISABLE_DOCTOR_COMMAND` en su lugar. Las skills de plugins, `.claude/skills/`, y `.claude/commands/` no se ven afectadas. Equivalente a la configuración [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills) |

252| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Establezca en `1` para mantener las herramientas de navegador [Claude in Chrome](/docs/es/chrome) disponibles mientras omite la sección de Chrome del prompt del sistema y el [skill agrupado](/docs/es/skills#bundled-skills) `/claude-in-chrome`. Para hosts que incrustan Claude Code y suministran su propia orientación de navegador. Requiere Claude Code v2.1.257 o posterior |255| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Establezca en `1` para mantener las herramientas de navegador [Claude in Chrome](/docs/es/chrome) disponibles mientras omite la sección de Chrome del prompt del sistema y la [skill agrupada](/docs/es/skills#bundled-skills) `/claude-in-chrome`. Para hosts que incrustan Claude Code y suministran su propia orientación de navegador. Requiere Claude Code v2.1.257 o posterior |

253| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Establezca en `1` para evitar cargar archivos de memoria CLAUDE.md en contexto, incluidos archivos de memoria de usuario, proyecto y automática |256| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Establezca en `1` para evitar cargar archivos de memoria CLAUDE.md en contexto, incluidos archivos de memoria de usuario, proyecto y automática |

254| `CLAUDE_CODE_DISABLE_CRON` | Establezca en `1` para desabilitar [tareas programadas](/docs/es/scheduled-tasks). El skill `/loop` y las herramientas cron se vuelven no disponibles y cualquier tarea ya programada deja de activarse, incluidas las tareas que ya se están ejecutando a mitad de sesión |257| `CLAUDE_CODE_DISABLE_CRON` | Establezca en `1` para desabilitar [tareas programadas](/docs/es/scheduled-tasks). La skill `/loop` y las herramientas cron se vuelven no disponibles y cualquier tarea ya programada deja de activarse, incluidas las tareas que ya se están ejecutando a mitad de sesión |

255| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Establezca en `1` para eliminar encabezados de solicitud `anthropic-beta` específicos de Anthropic y campos de esquema de herramienta beta (como `defer_loading` y `eager_input_streaming`) de solicitudes de API. Use esto cuando una puerta de enlace proxy rechace solicitudes con errores como "Unexpected value(s) for the `anthropic-beta` header" o "Extra inputs are not permitted". Los campos estándar (`name`, `description`, `input_schema`, `cache_control`) se conservan. [La búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search) está deshabilitada y todas las herramientas MCP se cargan por adelantado, incluso cuando establece `ENABLE_TOOL_SEARCH`. En Claude Code v2.1.227 o posterior, [la configuración administrada](/docs/es/managed-settings) puede mantener la búsqueda de herramientas activada. [Desabilitar capacidades previas al lanzamiento](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities) cubre dónde se aplica la anulación |258| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Establezca en `1` para eliminar encabezados de solicitud `anthropic-beta` específicos de Anthropic y campos de esquema de herramienta beta (como `defer_loading` y `eager_input_streaming`) de solicitudes de API. Use esto cuando una puerta de enlace proxy rechace solicitudes con errores como "Unexpected value(s) for the `anthropic-beta` header" o "Extra inputs are not permitted". Los campos estándar (`name`, `description`, `input_schema`, `cache_control`) se conservan. [La búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search) está deshabilitada y todas las herramientas MCP se cargan por adelantado, incluso cuando establece `ENABLE_TOOL_SEARCH`. En Claude Code v2.1.227 o posterior, [la configuración administrada](/docs/es/managed-settings) puede mantener la búsqueda de herramientas activada. [Desabilitar capacidades de pre-lanzamiento](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities) cubre dónde se aplica la anulación |

256| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Establezca en `1` para desabilitar los [subagentes Explore y Plan](/docs/es/sub-agents#built-in-subagents) integrados. Claude explora con sus herramientas de búsqueda o el subagente de propósito general en su lugar, y [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) lee archivos directamente en lugar de lanzar agentes Explore y Plan. Los subagentes personalizados nombrados `Explore` o `Plan` no se ven afectados. Para eliminar cada tipo de subagente integrado en el Agent SDK o modo no interactivo, use `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` en su lugar. Requiere Claude Code v2.1.198 o posterior |259| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Establezca en `1` para desabilitar los [subagentes Explore y Plan](/docs/es/sub-agents#built-in-subagents) integrados. Claude explora con sus herramientas de búsqueda o el subagente de propósito general en su lugar, y [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) lee archivos directamente en lugar de lanzar agentes Explore y Plan. Los subagentes personalizados nombrados `Explore` o `Plan` no se ven afectados. Para eliminar cada tipo de subagente integrado en el Agent SDK o modo no interactivo, use `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` en su lugar. Requiere Claude Code v2.1.198 o posterior |

257| `CLAUDE_CODE_DISABLE_FAST_MODE` | Establezca en `1` para desabilitar [modo rápido](/docs/es/fast-mode) |260| `CLAUDE_CODE_DISABLE_FAST_MODE` | Establezca en `1` para desabilitar [modo rápido](/docs/es/fast-mode) |

258| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Establezca en `1` para desabilitar las encuestas de calidad de sesión "¿Cómo está Claude?". Las encuestas también se desabilitan cuando `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` se establece, a menos que `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` opte por volver a entrar. Para establecer una tasa de muestreo en lugar de desabilitar completamente, use la configuración [`feedbackSurveyRate`](/docs/es/settings-reference#feedbacksurveyrate). Vea [Encuestas de calidad de sesión](/docs/es/data-usage#session-quality-surveys) |261| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Establezca en `1` para desabilitar las encuestas de calidad de sesión "¿Cómo está Claude?". Las encuestas también se desabilitan cuando `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` se establece, a menos que `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` opte por volver a entrar. Para establecer una tasa de muestreo en lugar de desabilitar completamente, use la configuración [`feedbackSurveyRate`](/docs/es/settings-reference#feedbacksurveyrate). Vea [Encuestas de calidad de sesión](/docs/es/data-usage#session-quality-surveys) |

259| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Establezca en `1` para desabilitar el [checkpointing](/docs/es/checkpointing) de archivos. El comando `/rewind` no podrá restaurar cambios de código. Anula la configuración [`fileCheckpointingEnabled`](/docs/es/settings-reference#filecheckpointingenabled) |262| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Establezca en `1` para desabilitar [checkpointing](/docs/es/checkpointing) de archivo. El comando `/rewind` no podrá restaurar cambios de código. Anula la configuración [`fileCheckpointingEnabled`](/docs/es/settings-reference#filecheckpointingenabled) |

260| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Establezca en `1` para eliminar instrucciones de flujo de trabajo de commit y PR integradas y la instantánea de estado de git del prompt del sistema de Claude. Útil cuando se usan sus propios skills de flujo de trabajo de git. Tiene precedencia sobre la configuración [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) cuando se establece |263| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Establezca en `1` para eliminar instrucciones de flujo de trabajo de commit y PR integradas y la instantánea de estado de git del prompt del sistema de Claude. Útil cuando usa sus propias skills de flujo de trabajo de git. Tiene precedencia sobre la configuración [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) cuando se establece |

261| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Establezca en `1` para evitar la remapeo automática de Opus 4.0 y 4.1 a la versión actual de Opus en la API de Anthropic. Use cuando desee fijar intencionalmente un modelo más antiguo. El remapeo no se ejecuta en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry |264| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Establezca en `1` para evitar la remapeo automático de Opus 4.0 y 4.1 a la versión actual de Opus en la API de Anthropic. Use cuando desee fijar intencionalmente un modelo más antiguo. El remapeo no se ejecuta en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry |

262| `CLAUDE_CODE_DISABLE_MOUSE` | Establezca en `1` para desabilitar el seguimiento del ratón en [renderizado de pantalla completa](/docs/es/fullscreen). El desplazamiento por teclado con `PgUp` y `PgDn` aún funciona. Use esto para mantener el comportamiento de copia al seleccionar nativo de su terminal |265| `CLAUDE_CODE_DISABLE_MOUSE` | Establezca en `1` para desabilitar el seguimiento del ratón en [renderizado de pantalla completa](/docs/es/fullscreen). El desplazamiento por teclado con `PgUp` y `PgDn` aún funciona. Use esto para mantener el comportamiento de copia al seleccionar nativo de su terminal |

263| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Establezca en `1` para desabilitar el manejo de clics, arrastres y desplazamientos en [renderizado de pantalla completa](/docs/es/fullscreen) mientras mantiene el desplazamiento de rueda del ratón. Use esto cuando desee que el desplazamiento de rueda funcione dentro de Claude Code pero no desee que los clics posicionen el cursor, expandan la salida de herramientas, o abran enlaces. `CLAUDE_CODE_DISABLE_MOUSE` tiene precedencia cuando ambos se establecen. Requiere Claude Code v2.1.195 o posterior |266| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Establezca en `1` para desabilitar el manejo de clics, arrastres y desplazamientos en [renderizado de pantalla completa](/docs/es/fullscreen) mientras mantiene el desplazamiento de rueda del ratón. Use esto cuando desee que el desplazamiento de rueda funcione dentro de Claude Code pero no desee que los clics posicionen el cursor, expandan la salida de herramientas, o abran enlaces. `CLAUDE_CODE_DISABLE_MOUSE` tiene precedencia cuando ambos se establecen. Requiere Claude Code v2.1.195 o posterior |

264| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Establezca en `1` para evitar que Claude Code relea el [certificado de cliente mTLS y la clave](/docs/es/network-config#mtls-authentication) cuando una solicitud de API falla con un error a nivel de conexión, como un reinicio de conexión o un error de protocolo de enlace TLS. Con la recarga deshabilitada, Claude Code carga archivos rotados solo cuando aplica configuración nuevamente o en el siguiente inicio. Requiere Claude Code v2.1.232 o posterior |267| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Establezca en `1` para evitar que Claude Code vuelva a leer el [certificado de cliente mTLS y la clave](/docs/es/network-config#mtls-authentication) cuando una solicitud de API falla con un error a nivel de conexión, como un reinicio de conexión o un error de protocolo de enlace TLS. Con la recarga deshabilitada, Claude Code carga archivos rotados solo cuando aplica configuración nuevamente o en el siguiente inicio. Requiere Claude Code v2.1.232 o posterior |

265| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Establezca en cualquier valor no vacío, como `1`, para desabilitar el tráfico de red no esencial: actualizaciones automáticas, telemetría, informes de errores, el comando `/feedback`, [retroalimentación redactada por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), notas de lanzamiento, las verificaciones de [insignia de estado de PR y MR](/docs/es/interactive-mode#pr-review-status), y verificaciones de disponibilidad como la verificación de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). También detiene las [ejecuciones de fondo de fuentes de comando de plugin](/docs/es/plugin-marketplaces#when-claude-code-re-runs-the-command), que son comandos locales en lugar de tráfico de red, porque pueden desencadenar instalaciones de dependencias. **Establecerlo en `0` o `false` aún desabilita este tráfico**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para permitirlo de nuevo. También desabilita la obtención de banderas de características, lo que hace que [Control Remoto](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. La instalación automática del marketplace de plugins oficial no se cubre; deshabilitela con `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. No afecta [descubrimiento de modelo de puerta de enlace](/docs/es/llm-gateway-connect#add-gateway-models-to-the-model-picker), que tiene su propio opt-in |268| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Establezca en cualquier valor no vacío, como `1`, para desabilitar el tráfico de red no esencial: auto-actualizaciones, telemetría, informes de errores, el comando `/feedback`, [retroalimentación redactada por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), notas de lanzamiento, las [comprobaciones de insignia de estado de PR y MR](/docs/es/interactive-mode#pr-review-status), y comprobaciones de disponibilidad como la comprobación de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). También detiene las [ejecuciones de fondo de fuentes de comando de plugin](/docs/es/plugin-marketplaces#when-claude-code-re-runs-the-command), que son comandos locales en lugar de tráfico de red, porque pueden desencadenar instalaciones de dependencias. **Establecerlo en `0` o `false` aún desabilita este tráfico**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para permitirlo de nuevo. También desabilita la obtención de banderas de características, lo que hace que [Remote Control](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. La auto-instalación del mercado de plugins oficial no se cubre; deshabilitela con `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. No afecta [descubrimiento de modelo de puerta de enlace](/docs/es/llm-gateway-connect#add-gateway-models-to-the-model-picker), que tiene su propio opt-in |

266| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Establezca en `1` para desabilitar el respaldo no transmitido cuando una solicitud de transmisión falla a mitad de transmisión. Los errores de transmisión se propagan a la capa de reintento en su lugar. Útil cuando un proxy o puerta de enlace causa que el respaldo produzca ejecución de herramientas duplicada |269| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Establezca en `1` para desabilitar el respaldo no transmitido cuando una solicitud de transmisión falla a mitad de transmisión. Los errores de transmisión se propagan a la capa de reintento en su lugar. Útil cuando un proxy o puerta de enlace causa que el respaldo produzca ejecución de herramientas duplicada |

267| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Establezca en `1` para enviar la notificación de escritorio de la herramienta `PushNotification` incluso mientras escribe en o se enfoca en la terminal. De forma predeterminada, la herramienta omite tanto la notificación de escritorio como el [push móvil](/docs/es/remote-control#mobile-push-notifications) cuando detecta actividad de teclado reciente o enfoque de terminal. Esta variable desabilita solo esa verificación local, por lo que el servidor aún puede suprimir el push móvil cuando detecta que está activo. Requiere Claude Code v2.1.193 o posterior |270| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Establezca en `1` para enviar la notificación de escritorio de la herramienta `PushNotification` incluso mientras está escribiendo en o enfocado en la terminal. De forma predeterminada, la herramienta omite tanto la notificación de escritorio como el [push móvil](/docs/es/remote-control#mobile-push-notifications) cuando detecta actividad de teclado reciente o enfoque de terminal. Esta variable desabilita solo esa verificación local, por lo que el servidor aún puede suprimir el push móvil cuando detecta que está activo. Requiere Claude Code v2.1.193 o posterior |

268| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Establezca en `1` para desabilitar el registro automático del marketplace de plugins oficial. Claude Code lee la variable cuando está a punto de registrar el marketplace, generalmente durante el primer lanzamiento interactivo de una máquina. Si la variable se establece en ese punto, Claude Code omite el registro permanentemente. Desestablecerla más tarde no deshace la omisión. Ejecute `claude plugin marketplace add anthropics/claude-plugins-official` para registrar el marketplace en cualquier momento |271| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Establezca en `1` para desabilitar el registro automático del mercado de plugins oficial. Claude Code lee la variable cuando está a punto de registrar el mercado, generalmente durante el primer lanzamiento interactivo de una máquina. Si la variable se establece en ese punto, Claude Code omite el registro permanentemente. Desestablecerla más tarde no deshace la omisión. Ejecute `claude plugin marketplace add anthropics/claude-plugins-official` para registrar el mercado en cualquier momento |

269| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Establezca en `1` para evitar que Claude Code ejecute sus [hooks de `Notification` para solicitudes de permiso sin respuesta](/docs/es/hooks#notification) en sesiones donde Claude Code las envía a la devolución de llamada `canUseTool` del Agent SDK, que es cómo Claude Desktop y la extensión VS Code alojan Claude Code. No tiene efecto en sesiones de terminal. Requiere Claude Code v2.1.233 o posterior |272| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Establezca en `1` para evitar que Claude Code ejecute sus [hooks de Notification para solicitudes de permiso sin respuesta](/docs/es/hooks#notification) en sesiones donde Claude Code las envía a la devolución de llamada `canUseTool` del Agent SDK, que es cómo Claude Desktop y la extensión VS Code alojan Claude Code. No tiene efecto en sesiones de terminal. Requiere Claude Code v2.1.233 o posterior |

270| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Establezca en `1` para omitir la carga de skills del directorio de skills administrado en todo el sistema. Útil para sesiones de contenedor o CI que no deben cargar skills aprovisionados por operador |273| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Establezca en `1` para omitir la carga de skills del directorio de skills administrado en todo el sistema. Útil para sesiones de contenedor o CI que no deben cargar skills aprovisionadas por operador |

271| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Establezca en `1` para desabilitar las actualizaciones automáticas del título de la terminal basadas en el contexto de la conversación. En sesiones del Agent SDK y `claude -p`, esto también omite la solicitud de modelo pequeño/rápido de fondo que genera el título de la sesión |274| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Establezca en `1` para desabilitar actualizaciones automáticas del título de terminal basadas en contexto de conversación. En sesiones de Agent SDK y `claude -p`, esto también omite la solicitud de modelo pequeño/rápido de fondo que genera el título de sesión |

272| `CLAUDE_CODE_DISABLE_THINKING` | Establezca en `1` para omitir el parámetro `thinking` completamente de solicitudes de API. Esta es una opción de compatibilidad para proxies y puertas de enlace que rechazan el parámetro. El comportamiento de la variable no cambia desde versiones anteriores; en modelos que piensan de forma predeterminada, omitir el parámetro significa que el modelo aún puede pensar. Para desabilitar explícitamente [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) en la API de Anthropic, use `MAX_THINKING_TOKENS=0` en su lugar, que también es inefectivo en [modelos Fable](/docs/es/model-config#extended-thinking) ya que no pueden tener el pensamiento desactivado. En [proveedores de terceros](/docs/es/third-party-integrations), `0` igualmente omite el parámetro, por lo que las dos variables se comportan igual allí |275| `CLAUDE_CODE_DISABLE_THINKING` | Establezca en `1` para omitir completamente el parámetro `thinking` de solicitudes de API. Esta es una opción de compatibilidad para proxies y puertas de enlace que rechazan el parámetro. En modelos que piensan de forma predeterminada, omitir el parámetro significa que el modelo aún puede pensar. Para desabilitar explícitamente [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) en la API de Anthropic, use `MAX_THINKING_TOKENS=0` en su lugar. Ninguna variable desactiva el pensamiento en modelos Fable, que no pueden tener el pensamiento desactivado. En [proveedores de terceros](/docs/es/third-party-integrations), `MAX_THINKING_TOKENS=0` de manera similar omite el parámetro, por lo que las dos variables se comportan igual allí |

273| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Establezca en `1` para omitir [auto-compactación](/docs/es/costs#reduce-token-usage) proactiva cuando Claude Code no reconoce el ID del modelo, como un alias de [puerta de enlace LLM](/docs/es/llm-gateway). Sin esta variable, Claude Code compacta en la ventana de contexto que asume para el ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` puede corregir la ventana asumida en su lugar; vea [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) para cuándo se aplica cada variable. Requiere Claude Code v2.1.223 o posterior |276| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Establezca en `1` para omitir [auto-compactación](/docs/es/costs#reduce-token-usage) proactiva cuando Claude Code no reconoce el ID del modelo, como un alias de [puerta de enlace LLM](/docs/es/llm-gateway). Sin esta variable, Claude Code compacta en la ventana de contexto que asume para el ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` puede corregir la ventana asumida en su lugar; vea [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) para cuándo se aplica cada variable. Requiere Claude Code v2.1.223 o posterior |

274| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Establezca en `1` para desabilitar el desplazamiento virtual en [renderizado de pantalla completa](/docs/es/fullscreen) y renderizar cada mensaje en la transcripción. Use esto si el desplazamiento en modo de pantalla completa muestra regiones en blanco donde deberían aparecer mensajes |277| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Establezca en `1` para desabilitar el desplazamiento virtual en [renderizado de pantalla completa](/docs/es/fullscreen) y renderizar cada mensaje en la transcripción. Use esto si el desplazamiento en modo de pantalla completa muestra regiones en blanco donde deberían aparecer mensajes |

278| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Establezca en `1` para iniciar comandos de [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) en Windows directamente en lugar de a través del lanzador `cmd.exe`. De forma predeterminada, el lanzador permite que un comando de PowerShell [ejecutándose en el fondo](/docs/es/tools-reference#background-commands) [se lleve al siguiente proceso de la sesión](/docs/es/agent-view#the-supervisor-process), como cuando [envía la sesión a segundo plano](/docs/es/agent-view#from-inside-a-session). Si establece la variable, un comando de PowerShell enviado a segundo plano se detiene cuando sale el proceso de la sesión. Los comandos Bash no se ven afectados. Requiere Claude Code v2.1.269 o posterior |

275| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Establezca en `1` para desabilitar [flujos de trabajo](/docs/es/workflows#turn-workflows-off). Equivalente a la configuración [`disableWorkflows`](/docs/es/settings-reference#disableworkflows) |279| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Establezca en `1` para desabilitar [flujos de trabajo](/docs/es/workflows#turn-workflows-off). Equivalente a la configuración [`disableWorkflows`](/docs/es/settings-reference#disableworkflows) |

276| `CLAUDE_CODE_EFFORT_LEVEL` | Establezca el nivel de esfuerzo para modelos compatibles. Valores: `low`, `medium`, `high`, `xhigh`, `max`, o `auto` para usar el predeterminado del modelo. Los niveles disponibles dependen del modelo. Tiene precedencia sobre `--effort`, `/effort`, y las configuraciones `modelSettings` y `effortLevel`. Vea [Ajustar nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) |280| `CLAUDE_CODE_EFFORT_LEVEL` | Establezca el nivel de esfuerzo para modelos compatibles. Valores: `low`, `medium`, `high`, `xhigh`, `max`, o `auto` para usar el predeterminado del modelo. Los niveles disponibles dependen del modelo. Tiene precedencia sobre `--effort`, `/effort`, y las configuraciones `modelSettings` y `effortLevel`. Un límite [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) aún se aplica. Vea [Ajustar nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) |

277| `CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT` | Establezca en `1` para habilitar la adición de texto extra al final del prompt del sistema de cada [subagente](/docs/es/sub-agents) que no sea un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation). Las banderas [`--append-subagent-system-prompt`](/docs/es/cli-reference#cli-flags) y [`--append-subagent-system-prompt-file`](/docs/es/cli-reference#cli-flags) suministran el texto añadido y establecen esta variable automáticamente, por lo que no necesita establecerla usted mismo. Requiere Claude Code v2.1.205 o posterior |

278| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Aceptado para compatibilidad con versiones anteriores y no tiene efecto. El modo automático está disponible de forma predeterminada en cada proveedor, incluidos Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, y sesiones de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) con sesión iniciada. En v2.1.158 a través de v2.1.206, establecer esto en `1` era necesario para hacer que [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) estuviera disponible en esos proveedores |281| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Aceptado para compatibilidad con versiones anteriores y no tiene efecto. El modo automático está disponible de forma predeterminada en cada proveedor, incluidos Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, y sesiones de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) con sesión iniciada. En v2.1.158 a través de v2.1.206, establecer esto en `1` era necesario para hacer que [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) estuviera disponible en esos proveedores |

279| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Anule la disponibilidad de [resumen de sesión](/docs/es/interactive-mode#session-recap). Establezca en `0` para forzar los resúmenes desactivados independientemente del toggle `/config`. Establezca en `1` para forzar los resúmenes activados cuando [`awaySummaryEnabled`](/docs/es/settings-reference#awaysummaryenabled) es `false`. Tiene precedencia sobre la configuración y toggle `/config` |282| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Anule la disponibilidad de [resumen de sesión](/docs/es/interactive-mode#session-recap). Establezca en `0` para forzar los resúmenes desactivados independientemente del toggle `/config`. Establezca en `1` para forzar los resúmenes activados cuando [`awaySummaryEnabled`](/docs/es/settings-reference#awaysummaryenabled) es `false`. Tiene precedencia sobre la configuración y toggle `/config` |

280| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Establezca en `1` para actualizar el estado del plugin en límites de turno en [modo no interactivo](/docs/es/headless) después de que se complete una instalación de fondo. Desactivado de forma predeterminada porque la actualización cambia el prompt del sistema a mitad de sesión, lo que invalida [almacenamiento en caché de prompt](/docs/es/prompt-caching) para ese turno |283| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Establezca en `1` para actualizar el estado del plugin en límites de turno en [modo no interactivo](/docs/es/headless) después de que se complete una instalación de fondo. Desactivado de forma predeterminada porque la actualización cambia el prompt del sistema a mitad de sesión, lo que invalida [almacenamiento en caché de prompt](/docs/es/prompt-caching) para ese turno |

281| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Establezca en `1` para enrutar la encuesta de calidad de sesión "¿Cómo está Claude?" a su propio [recopilador de OpenTelemetry](/docs/es/monitoring-usage) cuando el tráfico no esencial vinculado a Anthropic está bloqueado. Las calificaciones de encuesta se emiten solo como eventos OTEL a su recopilador configurado. Ningún dato de encuesta se envía a Anthropic en este modo. Se aplica cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, o `DO_NOT_TRACK` se establece, y no tiene efecto de otra manera. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` y la política de retroalimentación del producto de la organización tienen precedencia |284| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Establezca en `1` para enrutar la encuesta de calidad de sesión "¿Cómo está Claude?" a su propio [recopilador OpenTelemetry](/docs/es/monitoring-usage) cuando el tráfico no esencial vinculado a Anthropic está bloqueado. Las calificaciones de encuesta se emiten solo como eventos OTEL a su recopilador configurado. Ningún dato de encuesta se envía a Anthropic en este modo. Se aplica cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, o `DO_NOT_TRACK` se establece, y no tiene efecto de otra manera. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` y la política de retroalimentación del producto de la organización tienen precedencia |

282| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Controla si las entradas de llamadas de herramientas se transmiten desde la API mientras Claude las genera. Con esto desactivado, una entrada de herramienta grande como una escritura de archivo larga llega solo después de que Claude termina de generarla, lo que puede parecer que se cuelga. Habilitado de forma predeterminada en la API de Anthropic. En Amazon Bedrock y Google Cloud's Agent Platform, habilitado por modelo donde el contenedor implementado lo admite. Establezca en `0` para optar por no participar. Establezca en `1` para forzar cuando enrute a través de un proxy a través de `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, o `ANTHROPIC_BEDROCK_BASE_URL`. Desactivado de forma predeterminada en Microsoft Foundry y conexiones de [puerta de enlace](/docs/es/llm-gateway) |285| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Controla si las entradas de llamadas de herramientas se transmiten desde la API mientras Claude las genera. Con esto desactivado, una entrada de herramienta grande como una escritura de archivo larga llega solo después de que Claude termina de generarla, lo que puede parecer que se cuelga. Habilitado de forma predeterminada en la API de Anthropic. En Amazon Bedrock y Google Cloud's Agent Platform, habilitado por modelo donde el contenedor implementado lo admite. Establezca en `0` para optar por no participar. Establezca en `1` para forzar cuando enrute a través de un proxy a través de `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, o `ANTHROPIC_BEDROCK_BASE_URL`. Desactivado de forma predeterminada en Microsoft Foundry y conexiones de [puerta de enlace](/docs/es/llm-gateway) |

283| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Establezca en `1` para rellenar el selector `/model` desde el punto de conexión `/v1/models` de su puerta de enlace cuando `ANTHROPIC_BASE_URL` apunta a una puerta de enlace compatible con Anthropic como LiteLLM, Kong, o un proxy interno. Desactivado de forma predeterminada porque las puertas de enlace respaldadas por una clave de API compartida de otra manera mostrarían a cada usuario cada modelo al que la clave puede acceder. Los modelos descubiertos aún se filtran por una lista de permitidos [`availableModels`](/docs/es/settings-reference#availablemodels) que la sesión recibe; entregue la lista a través de [MDM o un archivo de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya que [la entrega administrada por servidor no está disponible en configuraciones de puerta de enlace](/docs/es/server-managed-settings#platform-availability) |286| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Establezca en `1` para rellenar el selector `/model` desde el punto de conexión `/v1/models` de su puerta de enlace cuando `ANTHROPIC_BASE_URL` apunta a una puerta de enlace compatible con Anthropic como LiteLLM, Kong, o un proxy interno. Desactivado de forma predeterminada porque las puertas de enlace respaldadas por una clave de API compartida de otra manera mostrarían a cada usuario cada modelo que la clave puede acceder. Los modelos descubiertos aún se filtran por una lista de permitidos [`availableModels`](/docs/es/settings-reference#availablemodels) que la sesión recibe; entregue la lista a través de [MDM o un archivo de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya que [la entrega administrada por servidor no está disponible en configuraciones de puerta de enlace](/docs/es/server-managed-settings#platform-availability) |

284| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Eliminado en v2.1.142, cuando el predeterminado de [modo rápido](/docs/es/fast-mode) se movió de Opus 4.6 a Opus 4.7 |287| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Eliminado en v2.1.142, cuando el predeterminado de [modo rápido](/docs/es/fast-mode) se movió de Opus 4.6 a Opus 4.7 |

285| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Establezca en `false` para desactivar sugerencias de prompt, las predicciones atenuadas que aparecen en su entrada de prompt. Tiene precedencia sobre la configuración [`promptSuggestionEnabled`](/docs/es/settings-reference#promptsuggestionenabled), que es lo que el toggle **Prompt suggestions** en `/config` escribe. Claude Code también [pausa sugerencias mientras su cuenta está cerca o en su límite de uso](/docs/es/interactive-mode#when-claude-code-skips-suggestions). Establezca en `true` para mantenerlas activadas hasta que alcance el límite. Requiere Claude Code v2.1.238 o posterior. Vea [Sugerencias de prompt](/docs/es/interactive-mode#prompt-suggestions) |288| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Establezca en `false` para desactivar sugerencias de prompt, las predicciones atenuadas que aparecen en su entrada de prompt. Tiene precedencia sobre la configuración [`promptSuggestionEnabled`](/docs/es/settings-reference#promptsuggestionenabled), que es lo que el toggle **Sugerencias de prompt** en `/config` escribe. Claude Code también [pausa sugerencias mientras su cuenta está cerca o en su límite de uso](/docs/es/interactive-mode#when-claude-code-skips-suggestions). Establezca en `true` para mantenerlas activadas hasta que alcance el límite. Requiere Claude Code v2.1.238 o posterior. Vea [Sugerencias de prompt](/docs/es/interactive-mode#prompt-suggestions) |

286| `CLAUDE_CODE_ENABLE_TASKS` | Selecciona qué herramientas de seguimiento de tareas proporciona Claude Code en [sesiones que las tienen](/docs/es/tools-reference#task-tool-availability). De forma predeterminada, Claude Code proporciona las herramientas de Tarea `TaskCreate`, `TaskUpdate`, `TaskGet`, y `TaskList`. Establezca en `0` para obtener la herramienta `TodoWrite` heredada en su lugar. Vea [Lista de tareas](/docs/es/interactive-mode#task-list) |289| `CLAUDE_CODE_ENABLE_TASKS` | Selecciona qué herramientas de seguimiento de tareas proporciona Claude Code en [sesiones que las tienen](/docs/es/tools-reference#task-tool-availability). De forma predeterminada, Claude Code proporciona las herramientas Task `TaskCreate`, `TaskUpdate`, `TaskGet`, y `TaskList`. Establezca en `0` para obtener la herramienta legacy `TodoWrite` en su lugar. Vea [Lista de tareas](/docs/es/interactive-mode#task-list) |

287| `CLAUDE_CODE_ENABLE_TELEMETRY` | Establezca en `1` para habilitar la recopilación de datos de OpenTelemetry para métricas y registro. Requerido antes de configurar exportadores de OTel. Vea [Monitoreo](/docs/es/monitoring-usage) |290| `CLAUDE_CODE_ENABLE_TELEMETRY` | Establezca en `1` para habilitar la recopilación de datos OpenTelemetry para métricas y registro. Requerido antes de configurar exportadores OTel. Vea [Monitoreo](/docs/es/monitoring-usage) |

288| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Establezca en `1` para obtener las herramientas de seguimiento de tareas en los modelos enumerados bajo [Disponibilidad de herramienta de tarea](/docs/es/tools-reference#task-tool-availability), donde Claude Code de otra manera las deja fuera. `CLAUDE_CODE_ENABLE_TASKS` aún selecciona las herramientas de Tarea o `TodoWrite`. Requiere Claude Code v2.1.233 o posterior |291| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Establezca en `1` para obtener las herramientas de seguimiento de tareas en cada modelo. Sin él, Claude Code las proporciona de forma predeterminada solo en los modelos enumerados en [Disponibilidad de herramienta Task](/docs/es/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` aún selecciona las herramientas Task o `TodoWrite`. Requiere Claude Code v2.1.233 o posterior |

289| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tiempo en milisegundos para esperar después de que el bucle de consulta se vuelva inactivo antes de salir automáticamente. Útil para flujos de trabajo automatizados y scripts que usan modo SDK |292| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tiempo en milisegundos para esperar después de que el bucle de consulta se vuelva inactivo antes de salir automáticamente. Útil para flujos de trabajo automatizados y scripts que usan modo SDK |

290| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Establezca en `1` para habilitar [equipos de agentes](/docs/es/agent-teams). Los equipos de agentes son experimentales y están deshabilitados de forma predeterminada |293| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Establezca en `1` para habilitar [equipos de agentes](/docs/es/agent-teams). Los equipos de agentes son experimentales y están deshabilitados de forma predeterminada |

291| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON para fusionar en el nivel superior de cada cuerpo de solicitud de API. Útil para pasar parámetros específicos del proveedor que Claude Code no expone directamente. Un valor exportado en su shell también se aplica a las [sesiones de fondo](/docs/es/agent-view) que envía con `claude agents` o `--bg`. Antes de v2.1.206, las sesiones de fondo ignoraban un valor exportado por shell y usaban cualquier copia que el proceso supervisor de fondo heredara |294| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON para fusionar en el nivel superior de cada cuerpo de solicitud de API. Útil para pasar parámetros específicos del proveedor que Claude Code no expone directamente. Un valor exportado en su shell también se aplica a las [sesiones de fondo](/docs/es/agent-view) que distribuye con `claude agents` o `--bg`. Antes de v2.1.206, las sesiones de fondo ignoraban un valor exportado por shell y usaban cualquier copia que el proceso supervisor de fondo heredara |

292| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Anule el límite de token predeterminado para lecturas de archivo. Útil cuando necesita leer archivos más grandes en su totalidad |295| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Anule el límite de token predeterminado para lecturas de archivo. Útil cuando necesita leer archivos más grandes en su totalidad |

293| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Establezca en `1` para forzar la persistencia de transcripción, historial de prompts, y registro de `claude agents` incluso cuando este `claude` se lanzó desde dentro de otra sesión de Claude Code. Use cuando un valor heredado de `CLAUDE_CODE_CHILD_SESSION`, por ejemplo de una sesión `screen` o un lanzador de fondo iniciado primero por la herramienta Bash de Claude Code, causa que una sesión genuina de nivel superior se clasifique erróneamente como anidada. A partir de v2.1.178, Claude Code detecta automáticamente el caso de tmux e ignora el marcador heredado, por lo que tmux ya no necesita esta variable. También se honra en v2.1.169 y anterior; no tiene efecto en v2.1.170 y v2.1.171, donde se eliminó la detección de sesión anidada que anula |296| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Establezca en `1` para forzar la persistencia de transcripción, historial de prompts, y registro de `claude agents` incluso cuando este `claude` se lanzó desde dentro de otra sesión de Claude Code. Use cuando un valor heredado de `CLAUDE_CODE_CHILD_SESSION`, por ejemplo de una sesión `screen` o un lanzador de fondo iniciado primero por la herramienta Bash de Claude Code, causa que una sesión genuina de nivel superior se clasifique erróneamente como anidada. A partir de v2.1.178, Claude Code detecta el caso de tmux automáticamente e ignora el marcador heredado, por lo que tmux ya no necesita esta variable. También se honra en v2.1.169 y anterior; no tiene efecto en v2.1.170 y v2.1.171, donde se eliminó la detección de sesión anidada que anula |

294| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Establezca en `1` para forzar el renderizado de tachado para `~~text~~` en respuestas de Claude cuando su terminal lo admite pero no se detecta automáticamente, como sobre SSH sin `TERM_PROGRAM` reenviado. Sin esto, los terminales no detectados muestran los marcadores literales `~~` en lugar de renderizar el texto como tachado. Requiere Claude Code v2.1.186 o posterior |297| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Establezca en `1` para forzar el renderizado de tachado para `~~text~~` en respuestas de Claude cuando su terminal lo admite pero no se auto-detecta, como sobre SSH sin `TERM_PROGRAM` reenviado. Sin esto, los terminales no detectados muestran los marcadores literales `~~` en lugar de renderizar el texto como tachado. Requiere Claude Code v2.1.186 o posterior |

295| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Establezca en `1` para forzar la habilitación del modo privado DEC 2026 [salida sincronizada](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) cuando su terminal lo admite pero no se detecta automáticamente. Útil para emuladores como `eat` de Emacs que implementan BSU/ESU pero no responden a la sonda de capacidad. No tiene efecto bajo tmux. A diferencia de `CLAUDE_CODE_NO_FLICKER`, que cambia a [renderizado de pantalla completa](/docs/es/fullscreen), esto no cambia el renderizador |298| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Establezca en `1` para forzar la habilitación del modo privado DEC 2026 [salida sincronizada](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) cuando su terminal lo admite pero no se auto-detecta. Útil para emuladores como `eat` de Emacs que implementan BSU/ESU pero no responden a la sonda de capacidad. No tiene efecto bajo tmux. A diferencia de `CLAUDE_CODE_NO_FLICKER`, que cambia a [renderizado de pantalla completa](/docs/es/fullscreen), esto no cambia el renderizador |

296| `CLAUDE_CODE_FORK_SUBAGENT` | Controla [modo bifurcación](/docs/es/sub-agents#turn-fork-mode-on-or-off), que permite a Claude generar [subagentes bifurcados](/docs/es/sub-agents#fork-the-current-conversation) a sí mismo y está activado de forma predeterminada solo en sesiones interactivas. Establezca en `1` para activarlo en `claude -p` y el Agent SDK también, o `0` para desactivarlo en cada tipo de sesión. Puede ejecutar `/subtask` independientemente de si el modo bifurcación está activado. El predeterminado interactivo requiere Claude Code v2.1.232 o posterior; en versiones anteriores, establezca la variable en `1` para activar el modo bifurcación |299| `CLAUDE_CODE_FORK_SUBAGENT` | Controla [modo bifurcación](/docs/es/sub-agents#turn-fork-mode-on-or-off), que permite que Claude genere [subagentes bifurcados](/docs/es/sub-agents#fork-the-current-conversation) a sí mismo y está activado de forma predeterminada solo en sesiones interactivas. Establezca en `1` para activarlo en `claude -p` y el Agent SDK también, o `0` para desactivarlo en cada tipo de sesión. Puede ejecutar `/subtask` independientemente de si el modo bifurcación está activado. El predeterminado interactivo requiere Claude Code v2.1.232 o posterior; en versiones anteriores, establezca la variable en `1` para activar el modo bifurcación |

297| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Establezca en `1` para emitir bloques de texto y pensamiento de [subagente](/docs/es/sub-agents) en la salida `claude -p --output-format stream-json`, el mismo comportamiento que la bandera [`--forward-subagent-text`](/docs/es/cli-reference#cli-flags). Use la variable cuando un arnés invoca `claude` y no puede pasar la bandera a sí mismo. A diferencia de la bandera, que sale con un error fuera del modo no interactivo con salida stream-json, la variable se ignora allí para que las invocaciones anidadas continúen funcionando cuando se establece en todo el proceso. Requiere Claude Code v2.1.211 o posterior |300| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Establezca en `1` para emitir bloques de texto y pensamiento de [subagente](/docs/es/sub-agents) en la salida `claude -p --output-format stream-json`, el mismo comportamiento que la bandera [`--forward-subagent-text`](/docs/es/cli-reference#cli-flags). Use la variable cuando un arnés invoca `claude` y no puede pasar la bandera a sí mismo. A diferencia de la bandera, que sale con un error fuera del modo no interactivo con salida stream-json, la variable se ignora allí para que las invocaciones anidadas continúen funcionando cuando se establece en todo el proceso. Requiere Claude Code v2.1.211 o posterior |

298| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: ruta al ejecutable de Git Bash (`bash.exe`). Use cuando Git Bash está instalado pero no en su PATH. Si la ruta no existe o el archivo no se nombra `bash.exe`, `sh.exe`, `bash`, o `sh`, Claude Code ignora la variable y detecta automáticamente Git Bash como si no estuviera establecida, registrando una advertencia visible con `--debug`. Antes de v2.1.219, Claude Code salía al inicio cuando la ruta no existía, y usaba cualquier archivo existente como shell sin verificar que fuera bash o sh. Vea [Configuración de Windows](/docs/es/setup#set-up-on-windows) |301| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | Tiempo de espera en milisegundos para la solicitud de [descubrimiento de modelo de puerta de enlace](/docs/es/llm-gateway-protocol#model-discovery) que `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` activa (predeterminado: `3000`). Aumente cuando su puerta de enlace necesita más de tres segundos para responder `/v1/models` al inicio. Solo acepta dígitos simples; `0`, valores negativos, y otros deletreos mantienen el predeterminado. Requiere Claude Code v2.1.269 o posterior |

299| `CLAUDE_CODE_GLOB_HIDDEN` | Establezca en `false` para excluir archivos de punto de los resultados cuando Claude invoca la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Incluido de forma predeterminada. No afecta la autocompletación de archivos `@`, `ls`, Grep, o Read |302| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: ruta al ejecutable de Git Bash (`bash.exe`). Use cuando Git Bash está instalado pero no en su PATH. Si la ruta no existe o el archivo no se nombra `bash.exe`, `sh.exe`, `bash`, o `sh`, Claude Code ignora la variable y auto-detecta Git Bash como si no estuviera establecida, registrando una advertencia visible con `--debug`. Antes de v2.1.219, Claude Code salía al inicio cuando la ruta no existía, y usaba cualquier archivo existente como shell sin verificar que fuera bash o sh. Vea [Configuración de Windows](/docs/es/setup#set-up-on-windows) |

300| `CLAUDE_CODE_GLOB_NO_IGNORE` | Establezca en `false` para hacer que la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior) respete patrones `.gitignore`. De forma predeterminada, Glob devuelve todos los archivos coincidentes, incluidos los ignorados por git. No afecta la autocompletación de archivos `@`, que tiene su propia configuración [`respectGitignore`](/docs/es/settings-reference#respectgitignore) |303| `CLAUDE_CODE_GLOB_HIDDEN` | Establezca en `false` para excluir dotfiles de resultados cuando Claude invoca la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Incluido de forma predeterminada. No afecta autocompletado de archivo `@`, `ls`, Grep, o Read |

301| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Tiempo de espera en segundos para el descubrimiento de archivos de la herramienta Glob. El predeterminado es 20 segundos en la mayoría de plataformas y 60 segundos en WSL |304| `CLAUDE_CODE_GLOB_NO_IGNORE` | Establezca en `false` para hacer que la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior) respete patrones `.gitignore`. De forma predeterminada, Glob devuelve todos los archivos coincidentes incluidos los ignorados por git. No afecta autocompletado de archivo `@`, que tiene su propia configuración [`respectGitignore`](/docs/es/settings-reference#respectgitignore) |

302| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Cuántos minutos el trabajo de fondo puede mantener un objetivo activo esperando antes de que Claude Code [pida a Claude que lo verifique](/docs/es/goal#background-work-defers-evaluation). Predeterminado `30`. Establezca `0` para desactivar las verificaciones. Dé minutos completos en dígitos simples, como máximo `10080`, que es una semana. Claude Code trata cualquier otro valor como no establecido y usa el predeterminado. Requiere Claude Code v2.1.234 o posterior |305| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Tiempo de espera en segundos para descubrimiento de archivos de herramienta Glob. El valor predeterminado es 20 segundos en la mayoría de plataformas y 60 segundos en WSL |

306| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Cuántos minutos el trabajo de fondo puede mantener un objetivo activo esperando antes de que Claude Code [le pida a Claude que lo verifique](/docs/es/goal#background-work-defers-evaluation). Predeterminado `30`. Establezca `0` para desactivar las verificaciones. Dé minutos completos en dígitos simples, como máximo `10080`, que es una semana. Claude Code trata cualquier otro valor como no establecido y usa el predeterminado. Requiere Claude Code v2.1.234 o posterior |

303| `CLAUDE_CODE_HIDE_CWD` | Establezca en `1` para ocultar el directorio de trabajo en el logo de inicio. Útil para comparticiones de pantalla o grabaciones donde la ruta expone su nombre de usuario del SO |307| `CLAUDE_CODE_HIDE_CWD` | Establezca en `1` para ocultar el directorio de trabajo en el logo de inicio. Útil para comparticiones de pantalla o grabaciones donde la ruta expone su nombre de usuario del SO |

304| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Anule la dirección de host utilizada para conectarse a la extensión IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |308| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Anule la dirección de host utilizada para conectarse a la extensión IDE. De forma predeterminada, Claude Code auto-detecta la dirección correcta, incluido el enrutamiento de WSL a Windows |

305| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Establezca en `1` para omitir la instalación automática de extensiones IDE. Equivalente a establecer [`autoInstallIdeExtension`](/docs/es/settings-reference#autoinstallideextension) en `false` |309| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Establezca en `1` para omitir la auto-instalación de extensiones IDE. Equivalente a establecer [`autoInstallIdeExtension`](/docs/es/settings-reference#autoinstallideextension) en `false` |

306| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establezca en `1` para omitir la validación de entradas de archivo de bloqueo IDE durante la conexión. Use cuando la auto-conexión no encuentra su IDE a pesar de que se está ejecutando |310| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establezca en `1` para omitir la validación de entradas de archivo de bloqueo IDE durante la conexión. Use cuando la auto-conexión falla para encontrar su IDE a pesar de que se está ejecutando |

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

308| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Anule el tamaño de la ventana de contexto que Claude Code asume para el modelo activo. A partir de v2.1.193, cómo se aplica depende de cómo Claude Code resuelve el ID del modelo; vea [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Use esto cuando enrute a un modelo a través de `ANTHROPIC_BASE_URL` cuya ventana de contexto no coincida con el tamaño integrado para su nombre |312| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Anule el tamaño de la ventana de contexto que Claude Code asume para el modelo activo. A partir de v2.1.193, cómo se aplica depende de cómo Claude Code resuelve el ID del modelo; vea [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Use esto cuando enrute a un modelo a través de `ANTHROPIC_BASE_URL` cuya ventana de contexto no coincida con el tamaño integrado para su nombre |

309| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Establezca el número máximo de tokens de salida para la mayoría de solicitudes. Los predeterminados y límites varían según el modelo; vea [tokens de salida máximos](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code tiene un predeterminado de 32000 para IDs de modelo que no reconoce, como nombres específicos de puerta de enlace, y reduce valores por encima del límite de un modelo al límite. Aumentar este valor reduce la ventana de contexto efectiva disponible antes de que se active [auto-compactación](/docs/es/costs#reduce-token-usage) |313| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Establezca el número máximo de tokens de salida para la mayoría de solicitudes. Los valores predeterminados y límites varían por modelo; vea [tokens de salida máximos](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code tiene un valor predeterminado de 32000 para IDs de modelo que no reconoce, como nombres específicos de puerta de enlace, y reduce valores por encima del límite de un modelo al límite. Aumentar este valor reduce la ventana de contexto efectiva disponible antes de que se active [auto-compactación](/docs/es/costs#reduce-token-usage) |

310| `CLAUDE_CODE_MAX_RETRIES` | Anule el número de veces para reintentar solicitudes de API fallidas (predeterminado: 10). Limitado a 15 a partir de v2.1.186; a partir de v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el predeterminado y elimina el límite. Para sesiones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG` en su lugar |314| `CLAUDE_CODE_MAX_RETRIES` | Anule el número de veces para reintentar solicitudes de API fallidas (predeterminado: 10). Limitado a 15 a partir de v2.1.186; a partir de v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el predeterminado y elimina el límite. Para sesiones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG` en su lugar |

311| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Eliminado en v2.1.224 y ahora es un no-op. Anteriormente limitaba el número total de [subagentes](/docs/es/sub-agents) que Claude podía generar con la herramienta de Agent en una sesión (predeterminado: 200); generar más allá del límite fallaba con `Subagent spawn limit reached`. El [límite de subagente concurrente](/docs/es/sub-agents#concurrent-subagent-limit) y el [límite de profundidad](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) aún se aplican |315| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Eliminado en v2.1.224 y ahora es un no-op. Anteriormente limitaba el número total de [subagentes](/docs/es/sub-agents) que Claude podía generar con la herramienta Agent en una sesión (predeterminado: 200); generar más allá del límite falló con `Subagent spawn limit reached`. El [límite de subagente concurrente](/docs/es/sub-agents#concurrent-subagent-limit) y el [límite de profundidad](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) aún se aplican |

312| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | Número de [capas de subagente](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) permitidas debajo de la conversación principal (predeterminado: 3). En el predeterminado, los subagentes pueden generar sus propios subagentes, y un subagente en la tercera capa no puede generar más; establezca `1` para desactivar el anidamiento. En v2.1.217 a través de v2.1.218, el predeterminado era 1, por lo que un subagente no podía generar el suyo a menos que aumentara el límite; v2.1.219 aumentó el predeterminado a 3. Acepta un número entero positivo en dígitos simples; cualquier otra cosa se ignora, por lo que el límite puede ajustarse pero no eliminarse. Requiere Claude Code v2.1.217 o posterior |316| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | Número de [capas de subagente](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) permitidas debajo de la conversación principal (predeterminado: 3). En el predeterminado, los subagentes pueden generar sus propios subagentes, y un subagente en la tercera capa no puede generar más; establezca `1` para desactivar el anidamiento. En v2.1.217 a través de v2.1.218, el predeterminado era 1, por lo que un subagente no podía generar el suyo a menos que aumentara el límite; v2.1.219 aumentó el predeterminado a 3. Acepta un número entero positivo en dígitos simples; cualquier otra cosa se ignora, por lo que el límite puede ajustarse pero no eliminarse. Requiere Claude Code v2.1.217 o posterior |

313| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Número máximo de herramientas de solo lectura y subagentes que pueden ejecutarse en paralelo (predeterminado: 10). Los valores más altos aumentan el paralelismo pero consumen más recursos |317| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Número máximo de herramientas de solo lectura y subagentes que pueden ejecutarse en paralelo (predeterminado: 10). Los valores más altos aumentan el paralelismo pero consumen más recursos |

314| `CLAUDE_CODE_MAX_TURNS` | Limite el número de turnos agénticos cuando no se pasa un límite explícito. Equivalente a pasar [`--max-turns`](/docs/es/cli-reference#cli-flags), que tiene precedencia cuando ambos se establecen. Un valor que no es un entero positivo se rechaza al inicio con un error en lugar de tratarse como sin límite |318| `CLAUDE_CODE_MAX_TURNS` | Limite el número de turnos agénticos cuando no se pasa un límite explícito. Equivalente a pasar [`--max-turns`](/docs/es/cli-reference#cli-flags), que tiene precedencia cuando ambos se establecen. Un valor que no es un entero positivo se rechaza al inicio con un error en lugar de tratarse como sin límite |

315| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Límite en el número total de llamadas [WebSearch](/docs/es/tools-reference#websearch-tool-behavior) que una sesión puede hacer (predeterminado: 200). Cuando Claude alcanza el límite, las llamadas posteriores de WebSearch devuelven un aviso diciéndole que continúe con la información que ya ha reunido. Acepta un número entero positivo sin límite superior. Cualquier otra cosa se ignora y se aplica el predeterminado, por lo que el límite puede aumentarse pero no desactivarse. Requiere Claude Code v2.1.212 o posterior |319| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Límite en el número total de llamadas [WebSearch](/docs/es/tools-reference#websearch-tool-behavior) que una sesión puede hacer (predeterminado: 200). Cuando Claude alcanza el límite, las llamadas WebSearch adicionales devuelven un aviso diciéndole que continúe con la información que ya ha reunido. Acepta un número entero positivo sin límite superior. Cualquier otra cosa se ignora y se aplica el predeterminado, por lo que el límite puede aumentarse pero no desactivarse. Requiere Claude Code v2.1.212 o posterior |

316| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Establezca en `1` para generar servidores MCP stdio con solo un entorno de línea base segura más el `env` configurado del servidor, en lugar de heredar su entorno de shell |320| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Establezca en `1` para generar servidores MCP stdio con solo un entorno de línea base segura más el `env` configurado del servidor, en lugar de heredar su entorno de shell |

317| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Tiempo transcurrido en milisegundos antes de que una llamada de herramienta MCP aún en ejecución [se mueva a una tarea de fondo](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) (predeterminado: 120000, o 2 minutos). Establezca en `0` para desactivar el envío automático a segundo plano. Requiere Claude Code v2.1.212 o posterior |321| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Tiempo transcurrido en milisegundos antes de que una llamada de herramienta MCP aún en ejecución [se mueva a una tarea de fondo](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) (predeterminado: 120000, o 2 minutos). Establezca en `0` para desactivar el envío automático a segundo plano. Requiere Claude Code v2.1.212 o posterior |

318| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Tiempo de espera de inactividad en milisegundos para llamadas de herramientas MCP. Cuando un servidor MCP stdio, HTTP, SSE, WebSocket, o [conector claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) no envía respuesta ni notificación de progreso durante este tiempo, la llamada de herramienta se aborta con un error en lugar de esperar el `MCP_TOOL_TIMEOUT` general. Anula los predeterminados por transporte de 300000 (5 minutos) para servidores de red y 1800000 (30 minutos) para servidores stdio. Establezca en `0` para desabilitar la verificación de inactividad. Los valores por debajo de 1000 se aumentan a un segundo, y el valor se limita al `MCP_TOOL_TIMEOUT` efectivo. Un `timeout` por servidor en `.mcp.json` de al menos 1000 aumenta la ventana de inactividad de ese servidor a al menos el valor de `timeout`. No se aplica a servidores IDE o servidores en proceso del SDK. Requiere Claude Code v2.1.187 o posterior. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad |322| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Cuánto tiempo en milisegundos el primer turno de una sesión [no interactiva](/docs/es/headless) espera a que los servidores MCP que aún se están conectando, en lugar de la [espera de primer turno](/docs/es/agent-sdk/mcp#connection-timing) predeterminada. Cuando se establece, la espera cubre cada servidor pendiente. Establezca en `0` para omitir la espera. Un servidor [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) mantiene su propia espera `MCP_TIMEOUT` independientemente del valor. Requiere Claude Code v2.1.274 o posterior |

319| `CLAUDE_CODE_MESSAGING_SOCKET` | Se establece por Claude Code, no por usted: en sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta la ruta de ese socket a hooks y comandos Bash cuando vincula el socket. En una sesión que comienza con mensajería activada, Claude Code vincula el socket antes de que se ejecute cualquier hook. Otras sesiones en la máquina entregan mensajes a esta ruta. Cada sesión exporta su propio socket en lugar de uno heredado de un padre, y los mensajes que llegan a él pasan a través de los [controles de entrada](/docs/es/cross-session-messaging#control-inbound-messages) de la sesión. Los bloques `env` de configuración no pueden establecerlo. Requiere Claude Code v2.1.224 o posterior |323| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Tiempo de espera de inactividad en milisegundos para llamadas de herramientas MCP. Cuando un servidor MCP stdio, HTTP, SSE, WebSocket, o [conector claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) no envía respuesta ni notificación de progreso durante este tiempo, la llamada de herramienta se aborta con un error en lugar de esperar el `MCP_TOOL_TIMEOUT` general. Anula los valores predeterminados por transporte de 300000 (5 minutos) para servidores de red y 1800000 (30 minutos) para servidores stdio. Establezca en `0` para desabilitar la verificación de inactividad. Los valores por debajo de 1000 se aumentan a un segundo, y el valor se limita al `MCP_TOOL_TIMEOUT` efectivo. Un `timeout` por servidor en `.mcp.json` de al menos 1000 aumenta la ventana de inactividad de ese servidor a al menos el valor `timeout`. No se aplica a servidores IDE o servidores en proceso del SDK. Requiere Claude Code v2.1.187 o posterior. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad |

324| `CLAUDE_CODE_MESSAGING_SOCKET` | Se establece por Claude Code, no por usted: en sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta la ruta de ese socket a hooks y comandos Bash cuando vincula el socket. En una sesión que comienza con mensajería activada, Claude Code vincula el socket antes de que se ejecute cualquier hook. Otras sesiones en la máquina entregan mensajes a esta ruta. Cada sesión exporta su propio socket en lugar de uno heredado de un padre, y los mensajes que llegan en él pasan a través de los [controles de entrada](/docs/es/cross-session-messaging#control-inbound-messages) de la sesión. Los bloques `env` de configuración no pueden establecerlo. Requiere Claude Code v2.1.224 o posterior |

320| `CLAUDE_CODE_MESSAGING_TOKEN` | Se establece por Claude Code, no por usted: en sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta este token por sesión a hooks y comandos Bash junto a `CLAUDE_CODE_MESSAGING_SOCKET`. Un script que publica en el socket puede enviar `{"type":"auth","token":"<token>"}` como su primera línea para probar que pertenece a la sesión. En Windows nativo, Claude Code requiere esta línea y cierra cualquier conexión que no se abra con una válida. Las [reglas de hijo propio](/docs/es/cross-session-messaging#the-sessions-inbox-socket) dicen cuándo Claude Code consulta el token. Cada sesión exporta su propio token, nunca uno heredado de una sesión padre. Los bloques `env` de configuración no pueden establecerlo. Requiere Claude Code v2.1.228 o posterior |325| `CLAUDE_CODE_MESSAGING_TOKEN` | Se establece por Claude Code, no por usted: en sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta este token por sesión a hooks y comandos Bash junto a `CLAUDE_CODE_MESSAGING_SOCKET`. Un script que publica en el socket puede enviar `{"type":"auth","token":"<token>"}` como su primera línea para probar que pertenece a la sesión. En Windows nativo, Claude Code requiere esta línea y cierra cualquier conexión que no se abra con una válida. Las [reglas de hijo propio](/docs/es/cross-session-messaging#the-sessions-inbox-socket) dicen cuándo Claude Code consulta el token. Cada sesión exporta su propio token, nunca uno heredado de una sesión padre. Los bloques `env` de configuración no pueden establecerlo. Requiere Claude Code v2.1.228 o posterior |

321| `CLAUDE_CODE_NATIVE_CURSOR` | Establezca en `1` para mostrar el cursor propio de la terminal en el símbolo de intercalación de entrada en lugar de un bloque dibujado. El cursor respeta la configuración de parpadeo, forma y enfoque de la terminal |326| `CLAUDE_CODE_NATIVE_CURSOR` | Establezca en `1` para mostrar el cursor propio de la terminal en el cursor de entrada en lugar de un bloque dibujado. El cursor respeta el parpadeo, forma y configuración de enfoque de la terminal |

322| `CLAUDE_CODE_NEW_INIT` | Establezca en `1` para hacer que `/init` ejecute un flujo de configuración interactivo. El flujo pregunta qué archivos generar, incluidos CLAUDE.md, skills, y hooks, antes de explorar la base de código y escribirlos. Sin esta variable, `/init` genera un CLAUDE.md automáticamente sin preguntar |327| `CLAUDE_CODE_NEW_INIT` | Establezca en `1` para hacer que `/init` ejecute un flujo de configuración interactivo. El flujo pregunta qué archivos generar, incluidos CLAUDE.md, skills, y hooks, antes de explorar la base de código y escribirlos. Sin esta variable, `/init` genera un CLAUDE.md automáticamente sin preguntar |

328| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Establezca en `1` para escribir la salida del terminal a través de un segundo descriptor de archivo no bloqueante, para que una terminal que deja de leer, como un panel de modo de control de tmux pausado o una conexión SSH estancada, no pueda congelar Claude Code a mitad de sesión. Se aplica en macOS, Linux, y WSL cuando stdout es una terminal. Requiere Claude Code v2.1.261 o posterior |

323| `CLAUDE_CODE_NO_FLICKER` | Establezca en `1` para habilitar [renderizado de pantalla completa](/docs/es/fullscreen), una vista previa de investigación que reduce el parpadeo y mantiene la memoria plana en conversaciones largas. Anula la configuración [`tui`](/docs/es/settings-reference#tui); también puede cambiar con `/tui fullscreen` |329| `CLAUDE_CODE_NO_FLICKER` | Establezca en `1` para habilitar [renderizado de pantalla completa](/docs/es/fullscreen), una vista previa de investigación que reduce el parpadeo y mantiene la memoria plana en conversaciones largas. Anula la configuración [`tui`](/docs/es/settings-reference#tui); también puede cambiar con `/tui fullscreen` |

324| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token de actualización de OAuth para autenticación de Claude.ai. Cuando se establece, `claude auth login` intercambia este token directamente en lugar de abrir un navegador. Requiere `CLAUDE_CODE_OAUTH_SCOPES`. Útil para aprovisionar autenticación en entornos automatizados |330| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token de actualización OAuth para autenticación de Claude.ai. Cuando se establece, `claude auth login` intercambia este token directamente en lugar de abrir un navegador. Requiere `CLAUDE_CODE_OAUTH_SCOPES`. Útil para provisionar autenticación en entornos automatizados |

325| `CLAUDE_CODE_OAUTH_SCOPES` | Alcances de OAuth separados por espacios con los que se emitió el token de actualización, como `"user:profile user:inference user:sessions:claude_code"`. Requerido cuando `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` se establece |331| `CLAUDE_CODE_OAUTH_SCOPES` | Alcances OAuth separados por espacios con los que se emitió el token de actualización, como `"user:profile user:inference user:sessions:claude_code"`. Requerido cuando `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` se establece |

326| `CLAUDE_CODE_OAUTH_TOKEN` | Token de acceso de OAuth para autenticación de claude.ai. Alternativa a `/login` para SDK y entornos automatizados. Tiene precedencia sobre credenciales almacenadas en llavero. Genere uno con [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token). A menos que ejecute [`/login`](/docs/es/authentication#authentication-precedence), Claude Code usa el token que establece para toda la sesión. Para reemplazar un token expirado, genere uno nuevo y reinicie |332| `CLAUDE_CODE_OAUTH_TOKEN` | Token de acceso OAuth para autenticación de claude.ai. Alternativa a `/login` para SDK y entornos automatizados. Tiene precedencia sobre credenciales almacenadas en llavero. Genere uno con [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token). A menos que ejecute [`/login`](/docs/es/authentication#authentication-precedence), Claude Code usa el token que establece para toda la sesión. Para reemplazar un token expirado, genere uno nuevo y reinicie |

327| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Eliminado en v2.1.160 y ahora es un no-op. Anteriormente fijaba [modo rápido](/docs/es/fast-mode) a Claude Opus 4.6 en lugar del predeterminado actual. Opus 4.6 ya no admite modo rápido |333| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Eliminado en v2.1.160 y ahora es un no-op. Anteriormente fijaba [modo rápido](/docs/es/fast-mode) a Claude Opus 4.6 en lugar del predeterminado actual. Opus 4.6 ya no admite modo rápido |

328| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Longitud máxima de atributos de OpenTelemetry que llevan contenido (respuestas de modelo, contenido de herramienta, prompts del sistema, cuerpos de API sin procesar), marcador de truncamiento incluido, en unidades de código UTF-16 (predeterminado: 61440, es decir, 60 KB). Aumente solo si su backend de telemetría acepta valores de atributo más grandes que 64 KB, o reduzca para cortar volumen de telemetría. Requiere Claude Code v2.1.214 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage) |334| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Longitud máxima de atributos OpenTelemetry que llevan contenido (respuestas del modelo, contenido de herramientas, prompts del sistema, cuerpos de API sin procesar), marcador de truncamiento incluido, en unidades de código UTF-16 (predeterminado: 61440, es decir, 60 KB). Aumente solo si su backend de telemetría acepta valores de atributo mayores que 64 KB, o reduzca para cortar volumen de telemetría. Requiere Claude Code v2.1.214 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage) |

329| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Establezca en `1` para escribir errores de diagnóstico del exportador de OpenTelemetry a stderr. De forma predeterminada, estos errores solo aparecen con `--debug`, por lo que un exportador mal configurado como una colisión de puerto de Prometheus de otra manera falla silenciosamente. Requiere Claude Code v2.1.179 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage) |335| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Establezca en `1` para escribir errores de diagnóstico del exportador OpenTelemetry en stderr. De forma predeterminada, estos errores solo aparecen con `--debug`, por lo que un exportador mal configurado como una colisión de puerto Prometheus de otra manera falla silenciosamente. Requiere Claude Code v2.1.179 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage) |

330| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tiempo de espera en milisegundos para vaciar tramos de OpenTelemetry pendientes (predeterminado: 5000). Vea [Monitoreo](/docs/es/monitoring-usage) |336| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tiempo de espera en milisegundos para vaciar tramos OpenTelemetry pendientes (predeterminado: 5000). Vea [Monitoreo](/docs/es/monitoring-usage) |

331| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para actualizar encabezados dinámicos de OpenTelemetry en milisegundos (predeterminado: 1740000 / 29 minutos). Vea [Encabezados dinámicos](/docs/es/monitoring-usage#dynamic-headers) |337| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para actualizar encabezados OpenTelemetry dinámicos en milisegundos (predeterminado: 1740000 / 29 minutos). Vea [Encabezados dinámicos](/docs/es/monitoring-usage#dynamic-headers) |

332| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Tiempo de espera en milisegundos para que el exportador de OpenTelemetry termine al apagar (predeterminado: 2000). Aumente si se pierden métricas al salir. Vea [Monitoreo](/docs/es/monitoring-usage) |338| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Tiempo de espera en milisegundos para que el exportador OpenTelemetry termine al apagar (predeterminado: 2000). Aumente si se descartan métricas al salir. Vea [Monitoreo](/docs/es/monitoring-usage) |

333| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Establezca en `1` para permitir que Claude Code ejecute el comando de actualización de su gestor de paquetes en el fondo cuando hay una nueva versión disponible. Se aplica a instalaciones de Homebrew y WinGet. Otros gestores de paquetes continúan mostrando el comando de actualización sin ejecutarlo. Vea [Actualizaciones automáticas](/docs/es/setup#auto-updates) |339| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Establezca en `1` para permitir que Claude Code ejecute el comando de actualización de su gestor de paquetes en el fondo cuando una nueva versión esté disponible. Se aplica a instalaciones de Homebrew y WinGet. Otros gestores de paquetes continúan mostrando el comando de actualización sin ejecutarlo. Vea [Auto-actualizaciones](/docs/es/setup#auto-updates) |

334| `CLAUDE_CODE_PERFORCE_MODE` | Establezca en `1` para habilitar la protección de escritura consciente de Perforce. Cuando se establece, Edit, Write, y NotebookEdit fallan con una pista `p4 edit <file>` si el archivo objetivo carece del bit de escritura del propietario, que Perforce borra en archivos sincronizados hasta que `p4 edit` los abre. Esto evita que Claude Code evite el seguimiento de cambios de Perforce |340| `CLAUDE_CODE_PERFORCE_MODE` | Establezca en `1` para habilitar protección de escritura consciente de Perforce. Cuando se establece, Edit, Write, y NotebookEdit fallan con una sugerencia `p4 edit <file>` si el archivo de destino carece del bit de escritura del propietario, que Perforce borra en archivos sincronizados hasta que `p4 edit` los abre. Esto evita que Claude Code evite el seguimiento de cambios de Perforce |

335| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Anule el directorio raíz de plugins. A pesar del nombre, esto establece el directorio padre, no la caché en sí: los marketplaces y la caché de plugins viven en subdirectorios bajo esta ruta. El predeterminado es `~/.claude/plugins` |341| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Anule el directorio raíz de plugins. A pesar del nombre, esto establece el directorio padre, no el caché en sí: los mercados y el caché de plugins viven en subdirectorios bajo esta ruta. El valor predeterminado es `~/.claude/plugins` |

336| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para operaciones de git al instalar o actualizar plugins (predeterminado: 120000). Aumente este valor para repositorios grandes o conexiones de red lentas. Vea [Las operaciones de Git agotan el tiempo de espera](/docs/es/plugin-marketplaces#git-operations-time-out) |342| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para operaciones de git al instalar o actualizar plugins (predeterminado: 120000). Aumente este valor para repositorios grandes o conexiones de red lentas. Vea [Las operaciones de Git agotan el tiempo de espera](/docs/es/plugin-marketplaces#git-operations-time-out) |

337| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establezca en `1` para omitir el intento de re-clonación y mantener el uso de la caché de marketplace existente cuando un `git pull` falla. Útil en entornos sin conexión o aislados donde la re-clonación fallaría de la misma manera. Vea [Las actualizaciones de Marketplace fallan en entornos sin conexión](/docs/es/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |343| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establezca en `1` para omitir el intento de re-clonación y mantener el uso del caché de mercado existente cuando un `git pull` falla. Útil en entornos sin conexión o aislados donde la re-clonación fallaría de la misma manera. Vea [Las actualizaciones del mercado fallan en entornos sin conexión](/docs/es/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

338| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establezca en `1` para clonar fuentes de acceso directo de GitHub `owner/repo` sobre HTTPS en lugar de SSH. Se aplica a la instalación y actualización de plugins, y a `/plugin marketplace add` y `update`. Útil en ejecutores de CI, contenedores, o cualquier entorno sin una clave SSH configurada para `github.com` |344| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establezca en `1` para clonar fuentes de abreviatura de GitHub `owner/repo` sobre HTTPS en lugar de SSH. Se aplica a instalación y actualización de plugins, y a `/plugin marketplace add` y `update`. Útil en ejecutores de CI, contenedores, o cualquier entorno sin una clave SSH configurada para `github.com` |

339| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Ruta a uno o más directorios de semilla de plugins de solo lectura, separados por `:` en Unix o `;` en Windows. Use esto para agrupar un directorio de plugins pre-poblado en una imagen de contenedor. Claude Code registra marketplaces de estos directorios al inicio y usa plugins pre-almacenados en caché sin re-clonar. Vea [Pre-rellenar plugins para contenedores](/docs/es/plugin-marketplaces#pre-populate-plugins-for-containers) |345| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Ruta a uno o más directorios de semilla de plugins de solo lectura, separados por `:` en Unix o `;` en Windows. Use esto para agrupar un directorio de plugins pre-poblado en una imagen de contenedor. Claude Code registra mercados de estos directorios al inicio y usa plugins pre-almacenados en caché sin re-clonar. Vea [Pre-poblar plugins para contenedores](/docs/es/plugin-marketplaces#pre-populate-plugins-for-containers) |

340| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Establezca en `1` para evitar que Claude Code pase `-ExecutionPolicy Bypass` al generar PowerShell para llamadas de herramientas, hooks, y comandos de línea de estado, y respete la política de ejecución efectiva de la máquina en su lugar. De forma predeterminada, Claude Code evita la política de ejecución en el alcance del proceso para que los scripts `.ps1` e importaciones de módulos funcionen en instalaciones de Windows predeterminadas restringidas. El bypass de alcance de proceso nunca anula la Política de Grupo `MachinePolicy` o `UserPolicy` independientemente de esta configuración |346| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Establezca en `1` para evitar que Claude Code pase `-ExecutionPolicy Bypass` al generar PowerShell para llamadas de herramientas, hooks, y comandos de línea de estado, y respete la política de ejecución efectiva de la máquina en su lugar. De forma predeterminada, Claude Code evita la política de ejecución en el alcance del proceso para que los scripts `.ps1` e importaciones de módulos funcionen en instalaciones de Windows con Restricted predeterminado. El bypass de alcance de proceso nunca anula la política de grupo `MachinePolicy` o `UserPolicy` independientemente de esta configuración |

341| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Techo en milisegundos en la espera inactiva de subagentes de fondo y flujos de trabajo después del turno final en [modo no interactivo](/docs/es/headless#background-tasks-at-exit) con la bandera `-p`. La espera inactiva comienza de nuevo cada vez que Claude toma un turno para manejar un resultado de fondo. Predeterminado: `600000`, o 10 minutos. Cuando la espera inactiva alcanza el techo, Claude Code deja de esperar las tareas de fondo restantes y sale. Establezca en `0` para esperar indefinidamente. Este límite es separado del período de gracia de cinco segundos que se aplica a shells de fondo simples. Requiere Claude Code v2.1.182 o posterior |347| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Techo en milisegundos en la espera inactiva para subagentes de fondo y flujos de trabajo después del turno final en [modo no interactivo](/docs/es/headless#background-tasks-at-exit) con la bandera `-p`. La espera inactiva comienza de nuevo cada vez que Claude toma un turno para manejar un resultado de fondo. Predeterminado: `600000`, o 10 minutos. Cuando la espera inactiva alcanza el techo, Claude Code deja de esperar las tareas de fondo restantes y sale. Establezca en `0` para esperar indefinidamente. Este límite es separado del período de gracia de cinco segundos que se aplica a shells de fondo simples. Requiere Claude Code v2.1.182 o posterior |

342| `CLAUDE_CODE_PROCESS_WRAPPER` | Lance los procesos que Claude Code inicia desde su propio binario, como el servicio de fondo que aloja sesiones de [vista de agente](/docs/es/agent-view), a través de un lanzador corporativo dado como un prefijo argv como `/opt/corp/launcher`. Establézcalo en el bloque `env` de configuración de usuario o [administrada](/docs/es/managed-settings), no como una exportación de shell, para que el servicio de fondo desconectado lo herede; la configuración de proyecto y local no puede establecerlo. Equivalente a la configuración [`processWrapper`](/docs/es/settings-reference#processwrapper), que requiere Claude Code v2.1.210 o posterior; esta variable tiene precedencia cuando ambas se establecen. La extensión VS Code configura su propio lanzador por separado a través de su configuración `claudeProcessWrapper`. Se ignora en Windows. Vea [Ejecutar Claude Code detrás de un lanzador corporativo](/docs/es/corporate-launcher) para el formato de valor, qué cubre el lanzador, y el contrato que el lanzador debe satisfacer. Requiere Claude Code v2.1.208 o posterior |348| `CLAUDE_CODE_PROCESS_WRAPPER` | Lance los procesos que Claude Code inicia desde su propio binario, como el servicio de fondo que aloja sesiones de [vista de agente](/docs/es/agent-view), a través de un lanzador corporativo dado como un prefijo argv como `/opt/corp/launcher`. Establézcalo en el bloque `env` de configuración de usuario o [administrada](/docs/es/managed-settings), no como una exportación de shell, para que el servicio de fondo desconectado lo herede; la configuración de proyecto y local no puede establecerlo. Equivalente a la configuración [`processWrapper`](/docs/es/settings-reference#processwrapper), que requiere Claude Code v2.1.210 o posterior; esta variable tiene precedencia cuando ambas se establecen. La extensión VS Code configura su propio lanzador por separado a través de su configuración `claudeProcessWrapper`. Se ignora en Windows. Vea [Ejecutar Claude Code detrás de un lanzador corporativo](/docs/es/corporate-launcher) para el formato de valor, qué cubre el lanzador, y el contrato que el lanzador debe satisfacer. Requiere Claude Code v2.1.208 o posterior |

343| `CLAUDE_CODE_PROJECT_DIR_NAME` | Establezca junto con `CLAUDE_CONFIG_DIR` para elegir el nombre del directorio `projects/` donde Claude Code almacena las transcripciones y memoria automática de esa sesión, en lugar de uno derivado de la ruta del directorio de trabajo. Por ejemplo, iniciar Claude Code con `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` los almacena bajo `/srv/tenant-a/projects/work/`. Claude Code ignora esta variable cuando `CLAUDE_CONFIG_DIR` no se establece, y la lee solo del entorno desde el que inicia `claude`, nunca desde un bloque `env` de [archivo de configuración](#in-settings-files). Vea [Nombrar el directorio del proyecto usted mismo](/docs/es/sessions#name-the-project-directory-yourself). Requiere Claude Code v2.1.234 o posterior |349| `CLAUDE_CODE_PROJECT_DIR_NAME` | Establezca junto con `CLAUDE_CONFIG_DIR` para elegir el nombre del directorio `projects/` donde Claude Code almacena las transcripciones y memoria automática de esa sesión, en lugar de uno derivado de la ruta del directorio de trabajo. Por ejemplo, iniciar Claude Code con `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` las almacena bajo `/srv/tenant-a/projects/work/`. Claude Code ignora esta variable cuando `CLAUDE_CONFIG_DIR` no se establece, y la lee solo del entorno desde el que inicia `claude`, nunca desde un bloque `env` de [archivo de configuración](#in-settings-files). Vea [Nombre el directorio del proyecto usted mismo](/docs/es/sessions#name-the-project-directory-yourself). Requiere Claude Code v2.1.234 o posterior |

344| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Establezca `5m` o `1h`, los únicos valores que Claude Code acepta, para elegir el [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) para la conversación principal: sus turnos interactivos, `-p`, y SDK, más los ayudantes que se ejecutan en línea con ellos. Tiene precedencia sobre la configuración `promptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la anula. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Requiere Claude Code v2.1.242 o posterior |350| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Establezca `5m` o `1h`, los únicos valores que Claude Code acepta, para elegir el [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) para la conversación principal: sus turnos interactivos, `-p`, y SDK, más los ayudantes que se ejecutan en línea con ellos. Tiene precedencia sobre la configuración `promptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la anula. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Requiere Claude Code v2.1.242 o posterior |

345| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Establezca en `1` para propagar el contexto de rastreo W3C cuando `ANTHROPIC_BASE_URL` apunta a un proxy personalizado. La propagación cubre el encabezado `traceparent` en solicitudes de modelo y MCP HTTP y la variable de entorno `TRACEPARENT` para subprocesos Bash, PowerShell, y hook. De forma predeterminada, la propagación se habilita solo cuando se conecta directamente a la API de Anthropic. Agregado en v2.1.152. Vea [Rastreos (beta)](/docs/es/monitoring-usage#traces-beta) |351| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Establezca en `1` para propagar contexto de rastreo W3C cuando `ANTHROPIC_BASE_URL` apunta a un proxy personalizado. La propagación cubre el encabezado `traceparent` en solicitudes de modelo y MCP HTTP y la variable de entorno `TRACEPARENT` para subprocesos Bash, PowerShell, y hook. De forma predeterminada, la propagación está habilitada solo cuando se conecta directamente a la API de Anthropic. Agregado en v2.1.152. Vea [Rastreos (beta)](/docs/es/monitoring-usage#traces-beta) |

346| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Se establece por plataformas host que incrustan Claude Code y administran el enrutamiento del proveedor de modelo en su nombre. Cuando se establece, Claude Code ignora variables de selección de proveedor, punto de conexión, y autenticación como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, y `ANTHROPIC_API_KEY` en archivos de configuración, para que la configuración de usuario no pueda anular el enrutamiento del host. Claude Code también ignora claves de selección de modelo como `model`, `fallbackModel`, y `modelOverrides` en [configuración administrada](/docs/es/managed-settings), cualquiera que sea la fuente administrada que las entregue, para que la configuración de modelo del host tenga precedencia sobre un pin de modelo desactualizado. Claude Code también ignora variables de selección de modelo como `ANTHROPIC_MODEL` y la familia `ANTHROPIC_DEFAULT_*_MODEL` en un bloque `env` administrado; una lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) en configuración administrada aún se aplica a menos que el host suministre la suya. Claude Code también omite la opción de exclusión de telemetría automática que de otra manera aplica en proveedores de terceros como Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, y Microsoft Foundry, para que la telemetría siga la opción de exclusión estándar `DISABLE_TELEMETRY`. Vea [Comportamientos predeterminados por proveedor de API](/docs/es/data-usage#default-behaviors-by-api-provider) |352| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Se establece por plataformas host que incrustan Claude Code y administran el enrutamiento del proveedor de modelo en su nombre. Cuando se establece, Claude Code ignora variables de selección de proveedor, punto de conexión, y autenticación como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, y `ANTHROPIC_API_KEY` en archivos de configuración, por lo que la configuración de usuario no puede anular el enrutamiento del host. Claude Code también ignora claves de selección de modelo como `model`, `fallbackModel`, y `modelOverrides` en [configuración administrada](/docs/es/managed-settings), cualquiera que sea la fuente administrada que las entregue, por lo que la configuración de modelo del host tiene precedencia sobre un pin de modelo administrado desactualizado. Claude Code también ignora variables de selección de modelo como `ANTHROPIC_MODEL` y la familia `ANTHROPIC_DEFAULT_*_MODEL` en un bloque `env` administrado; una lista de permitidos [`availableModels`](/docs/es/settings-reference#availablemodels) en configuración administrada aún se aplica a menos que el host suministre la suya. Claude Code también omite la exclusión de telemetría automática que de otra manera aplica en proveedores de terceros como Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, y Microsoft Foundry, por lo que la telemetría sigue el opt-out estándar `DISABLE_TELEMETRY`. Vea [Comportamientos predeterminados por proveedor de API](/docs/es/data-usage#default-behaviors-by-api-provider) |

347| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Establezca en `1` para permitir que el proxy realice la resolución de DNS en lugar de la persona que llama. Opción de participación para entornos donde el proxy debe manejar la resolución de nombres de host |353| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Establezca en `1` para permitir que el proxy realice la resolución de DNS en lugar de la persona que llama. Opt-in para entornos donde el proxy debe manejar la resolución de nombres de host |

348| `CLAUDE_CODE_REMOTE` | Se establece automáticamente en `true` cuando Claude Code se ejecuta como una [sesión en la nube](/docs/es/claude-code-on-the-web). Lea esto desde un hook o script de configuración para detectar si está en una sesión en la nube |354| `CLAUDE_CODE_REMOTE` | Se establece automáticamente en `true` cuando Claude Code se ejecuta como una [sesión en la nube](/docs/es/claude-code-on-the-web). Lea esto desde un hook o script de configuración para detectar si está en una sesión en la nube |

349| `CLAUDE_CODE_REMOTE_SESSION_ID` | Se establece automáticamente en [sesiones en la nube](/docs/es/claude-code-on-the-web) al ID de la sesión actual. Lea esto para construir un enlace de vuelta a la transcripción de la sesión. Vea [Vincular salida de vuelta a la sesión](/docs/es/cloud-environments#link-output-back-to-the-session) |355| `CLAUDE_CODE_REMOTE_SESSION_ID` | Se establece automáticamente en [sesiones en la nube](/docs/es/claude-code-on-the-web) al ID de la sesión actual. Lea esto para construir un enlace de vuelta a la transcripción de la sesión. Vea [Enlace de salida de vuelta a la sesión](/docs/es/cloud-environments#link-output-back-to-the-session) |

350| `CLAUDE_CODE_RESTRICTED` | Establezca en `1` para iniciar la sesión en modo restringido, lo mismo que pasar [`--restricted`](/docs/es/cli-reference#cli-flags). Claude Code ignora esta variable en el bloque `env` de un archivo de configuración. Requiere Claude Code v2.1.248 o posterior |356| `CLAUDE_CODE_RESTRICTED` | Establezca en `1` para iniciar la sesión en modo restringido, lo mismo que pasar [`--restricted`](/docs/es/cli-reference#cli-flags). Claude Code ignora esta variable en el bloque `env` de un archivo de configuración. Requiere Claude Code v2.1.248 o posterior |

351| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Establezca en `1` para reanudar automáticamente si la sesión anterior terminó a mitad de turno. Se usa en modo SDK para que el modelo continúe sin requerir que el SDK reenvíe el prompt. Para desactivar esto, desestablezca la variable o establézcala en `0`. Antes de v2.1.221, Claude Code ignoraba `0` y otros valores falsos, por lo que establecer `0` aún activaba la reanudación en modo no interactivo y desestablecerla era la única forma de desactivarla |357| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Establezca en `1` para reanudar automáticamente si la sesión anterior terminó a mitad de turno. Se usa en modo SDK para que el modelo continúe sin requerir que el SDK reenvíe el prompt. Para desactivar esto, desestablezca la variable o establézcala en `0`. Antes de v2.1.221, Claude Code ignoraba `0` y otros valores falsos, por lo que establecer `0` aún activaba la reanudación en modo no interactivo y desestablecerla era la única forma de desactivarla |

352| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Edad máxima en milisegundos del último mensaje de transcripción para que una sesión que terminó a mitad de turno continúe automáticamente al reanudar. Cuando el último mensaje es más antiguo que este límite, Claude Code omite tanto la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` como el mensaje de continuación inyectado de `CLAUDE_CODE_RESUME_PROMPT`, y la sesión comienza inactiva para que continúe explícitamente. Sin establecer o `0` significa sin límite; un valor negativo o no numérico aplica un límite de una hora. Los scripts de generación para agentes de larga duración pueden establecer esto para que un reinicio contra una transcripción antigua no re-ejecute un prompt obsoleto. Claude Code establece un límite de una hora a sí mismo cuando reinicia una sesión de [vista de agente](/docs/es/agent-view) que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |358| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Edad máxima en milisegundos del último mensaje de transcripción para una sesión que terminó a mitad de turno para continuar automáticamente al reanudar. Cuando el último mensaje es más antiguo que este límite, Claude Code omite tanto la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` como el mensaje de continuación inyectado de `CLAUDE_CODE_RESUME_PROMPT`, y la sesión comienza inactiva para que continúe explícitamente. Sin establecer o `0` significa sin límite; un valor negativo o no numérico aplica un límite de una hora. Los scripts de generación para agentes de larga duración pueden establecer esto para que un reinicio contra una transcripción antigua no re-ejecute un prompt obsoleto. Claude Code establece un límite de una hora a sí mismo cuando reinicia una sesión de [vista de agente](/docs/es/agent-view) que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |

353| `CLAUDE_CODE_RESUME_PROMPT` | Anule el mensaje de continuación inyectado cuando se reanuda una sesión que terminó a mitad de turno. El predeterminado es `Continue from where you left off.`. Los scripts de generación para agentes de larga duración pueden establecer esto en un mensaje de arranque más directivo. Una cadena vacía usa el predeterminado |359| `CLAUDE_CODE_RESUME_PROMPT` | Anule el mensaje de continuación inyectado cuando se reanuda una sesión que terminó a mitad de turno. El valor predeterminado es `Continue from where you left off.`. Los scripts de generación para agentes de larga duración pueden establecer esto en un mensaje de arranque más directivo. Una cadena vacía usa el predeterminado |

354| `CLAUDE_CODE_RETRY_WATCHDOG` | Establezca en `1` para sesiones desatendidas como arneses de evaluación, trabajos de CI, o trabajadores remotos. Reintenta errores de capacidad `429` y `529` indefinidamente en lugar de fallar después de intentos de `CLAUDE_CODE_MAX_RETRIES`. Claude Code falla de inmediato en un `429` que informa un límite de gasto o créditos de uso agotados, incluso uno de un [límite de gasto de puerta de enlace](/docs/es/errors#spend-limit-reached) que se reinicia en un horario. Antes de v2.1.239, el perro guardián reintentaba estos indefinidamente. El perro guardián se retira hasta 5 minutos entre intentos, o hasta que se reinicia el límite cuando la respuesta lleva un tiempo de reinicio de límite de velocidad, por lo que una sesión que alcanza un límite de uso espera la ventana restante. En v2.1.199 o posterior también aumenta el conteo de reintentos predeterminado para otros errores transitorios, como errores de servidor, tiempos de espera, y conexiones caídas, a 300, aproximadamente tres horas de retiro, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si establece esa variable explícitamente. Requiere Claude Code v2.1.186 o posterior |360| `CLAUDE_CODE_RETRY_WATCHDOG` | Establezca en `1` para sesiones desatendidas como arneses de evaluación, trabajos de CI, o trabajadores remotos. Reintentos `429` y `529` errores de capacidad indefinidamente en lugar de fallar después de intentos de `CLAUDE_CODE_MAX_RETRIES`. Claude Code falla de inmediato cuando una solicitud de velocidad estándar obtiene un `429` que informa un límite de gasto o créditos de uso agotados, incluso uno de un [límite de gasto de puerta de enlace](/docs/es/errors#spend-limit-reached) que se reinicia en un horario. Antes de v2.1.239, el perro guardián reintentaba estos indefinidamente. Para solicitudes de modo rápido, vea [Manejar límites de velocidad](/docs/es/fast-mode#handle-rate-limits). El perro guardián se retira hasta 5 minutos entre intentos, o hasta que se reinicie el límite cuando la respuesta lleva un tiempo de reinicio de límite de velocidad, por lo que una sesión que alcanza un límite de uso espera la ventana restante. En v2.1.199 o posterior también aumenta el conteo de reintento predeterminado para otros errores transitorios, como errores de servidor, tiempos de espera, y conexiones caídas, a 300, aproximadamente tres horas de retroceso, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si establece esa variable explícitamente. Requiere Claude Code v2.1.186 o posterior |

355| `CLAUDE_CODE_SAFE_MODE` | Establezca en `1` para iniciar en modo seguro: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y sugerencia de archivo, servidores LSP, y memoria automática no se cargan, para solucionar problemas de una configuración rota. La política de configuración administrada aún se aplica, incluidos hooks configurados por política, línea de estado, y comandos de sugerencia de archivo; plugins administrados, skills administrados, CLAUDE.md administrado, y servidores MCP configurados por política no lo hacen. Equivalente a pasar [`--safe-mode`](/docs/es/cli-reference#cli-flags). Los procesos secundarios generados directamente heredan la variable |361| `CLAUDE_CODE_SAFE_MODE` | Establezca en `1` para iniciar en modo seguro: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y sugerencia de archivo, servidores LSP, y memoria automática no se cargan, para solucionar problemas de una configuración rota. La política de configuración administrada aún se aplica, incluidos hooks configurados por política, línea de estado, y comandos de sugerencia de archivo; plugins administrados, skills administradas, CLAUDE.md administrado, y servidores MCP configurados por política no lo hacen. Equivalente a pasar [`--safe-mode`](/docs/es/cli-reference#cli-flags). Los procesos secundarios generados directamente heredan la variable |

356| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON que limita cuántas veces se pueden invocar scripts específicos por sesión cuando `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` se establece. Las claves son subcadenas coincidentes contra el texto del comando; los valores son límites de llamadas enteros. Por ejemplo, `{"deploy.sh": 2}` permite que `deploy.sh` se llame como máximo dos veces. La coincidencia es basada en subcadenas para que trucos de expansión de shell como `./scripts/deploy.sh $(evil)` aún cuenten contra el límite. El fan-out en tiempo de ejecución a través de `xargs` o `find -exec` no se detecta; esto es un control de defensa en profundidad |362| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON que limita cuántas veces se pueden invocar scripts específicos por sesión cuando `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` se establece. Las claves son subcadenas coincidentes contra el texto del comando; los valores son límites de llamadas enteros. Por ejemplo, `{"deploy.sh": 2}` permite que `deploy.sh` se llame como máximo dos veces. La coincidencia es basada en subcadenas para que trucos de expansión de shell como `./scripts/deploy.sh $(evil)` aún cuenten contra el límite. El fan-out en tiempo de ejecución a través de `xargs` o `find -exec` no se detecta; esto es un control de defensa en profundidad |

357| `CLAUDE_CODE_SCROLL_SPEED` | Establezca el multiplicador de desplazamiento de rueda del ratón en [renderizado de pantalla completa](/docs/es/fullscreen#mouse-wheel-scrolling). Acepta cualquier valor positivo hasta 20, incluidos valores fraccionarios por debajo de 1 como `0.5` para ralentizar el desplazamiento de trackpad y rueda acelerado en terminales que ya amplifican eventos de rueda. Establezca en `3` para coincidir con `vim` si su terminal envía un evento de rueda por muesca sin amplificación. Se ignora en la terminal IDE de JetBrains, donde Claude Code usa su propio manejo de desplazamiento |363| `CLAUDE_CODE_SCROLL_SPEED` | Establezca el multiplicador de desplazamiento de rueda del ratón en [renderizado de pantalla completa](/docs/es/fullscreen#mouse-wheel-scrolling). Acepta cualquier valor positivo hasta 20, incluidos valores fraccionarios por debajo de 1 como `0.5` para ralentizar el desplazamiento de trackpad y rueda acelerado en terminales que ya amplifican eventos de rueda. Establezca en `3` para coincidir con `vim` si su terminal envía un evento de rueda por muesca sin amplificación. Se ignora en el terminal IDE de JetBrains, donde Claude Code usa su propio manejo de desplazamiento |

358| `CLAUDE_CODE_SEND_FEEDBACK` | Establezca en `0` para desactivar [retroalimentación redactada por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior) para una sesión. Establezca en `1` para activarla donde su cuenta ya tiene acceso; la variable no puede otorgar acceso a sí misma, y los otros interruptores que desactivan la retroalimentación, como `DISABLE_FEEDBACK_COMMAND` y el valor `off` de la configuración [`feedbackDrafts`](/docs/es/settings-reference#feedbackdrafts), aún se aplican |364| `CLAUDE_CODE_SEND_FEEDBACK` | Establezca en `0` para desactivar [retroalimentación redactada por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior) para una sesión. Establezca en `1` para activarla donde su cuenta ya tiene acceso; la variable no puede otorgar acceso a sí misma, y los otros interruptores que desactivan la retroalimentación, como `DISABLE_FEEDBACK_COMMAND` y el valor `off` de la configuración [`feedbackDrafts`](/docs/es/settings-reference#feedbackdrafts), aún se aplican |

359| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Anule el presupuesto de tiempo en milisegundos para hooks [SessionEnd](/docs/es/hooks#sessionend). Se aplica a la salida de sesión, `/clear`, y cambio de sesiones a través de `/resume` interactivo. De forma predeterminada, el presupuesto es 1.5 segundos, aumentado automáticamente al `timeout` más alto por hook configurado en archivos de configuración, hasta 60 segundos. Los tiempos de espera en hooks proporcionados por plugins no aumentan el presupuesto |365| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Anule el presupuesto de tiempo en milisegundos para hooks [SessionEnd](/docs/es/hooks#sessionend). El valor es también el tiempo de espera para cada hook que no establece su propio `timeout`. Se aplica a salida de sesión, `/clear`, y cambio de sesiones a través de `/resume` interactivo. De forma predeterminada, el presupuesto es 1.5 segundos, aumentado automáticamente al `timeout` por hook más alto configurado en archivos de configuración, hasta 60 segundos. Los tiempos de espera en hooks proporcionados por plugins no aumentan el presupuesto |

360| `CLAUDE_CODE_SESSION_ID` | Se establece automáticamente al ID de sesión actual en subprocesos de herramientas Bash y PowerShell, subprocesos de [comando hook](/docs/es/hooks), y subprocesos de [servidor MCP](/docs/es/mcp) stdio. Para Bash, PowerShell, y hooks, esto coincide con el campo `session_id` en la entrada JSON del hook y se actualiza en `/clear`. Un subproceso de servidor MCP retiene el ID con el que fue generado. En `--resume <session-id>` recibe el ID reanudado, coincidiendo con hooks y Bash. En `--continue` o `--resume` sin un ID explícito puede recibir el ID de inicio inicial en su lugar. Use para correlacionar scripts y herramientas externas con la sesión de Claude Code que los lanzó |366| `CLAUDE_CODE_SESSION_ID` | Se establece automáticamente al ID de sesión actual en subprocesos de herramienta Bash y PowerShell, subprocesos de [comando hook](/docs/es/hooks), y subprocesos de [servidor MCP](/docs/es/mcp) stdio. Para Bash, PowerShell, y hooks, esto coincide con el campo `session_id` en la entrada JSON del hook y se actualiza en `/clear`. Un subproceso de servidor MCP retiene el ID con el que fue generado. En `--resume <session-id>` recibe el ID reanudado, coincidiendo con hooks y Bash. En `--continue` o `--resume` sin un ID explícito puede recibir el ID de inicio inicial en su lugar. Use para correlacionar scripts y herramientas externas con la sesión de Claude Code que las lanzó |

361| `CLAUDE_CODE_SHELL` | Establezca el shell que Claude Code usa para ejecutar comandos de herramientas Bash. Acepta una ruta a un binario `bash` o `zsh`, por ejemplo `/opt/homebrew/bin/bash`. Otros shells como `fish` no son compatibles. Si el valor no es una ruta de trabajo `bash` o `zsh`, Claude Code lo ignora y vuelve a la detección automática. La detección automática usa su `$SHELL` cuando apunta a `bash` o `zsh`, de otra manera elige el primer `zsh` que funciona y luego `bash` encontrado en su `PATH` y ubicaciones de instalación estándar |367| `CLAUDE_CODE_SHELL` | Establezca el shell que Claude Code usa para ejecutar comandos de herramienta Bash. Acepta una ruta a un binario `bash` o `zsh`, por ejemplo `/opt/homebrew/bin/bash`. Otros shells como `fish` no son compatibles. Si el valor no es una ruta de trabajo `bash` o `zsh`, Claude Code lo ignora y vuelve a la auto-detección. La auto-detección usa su `$SHELL` cuando apunta a `bash` o `zsh`, de otra manera elige el primer `zsh` que funciona y luego `bash` encontrado en su `PATH` y ubicaciones de instalación estándar |

362| `CLAUDE_CODE_SHELL_PREFIX` | Prefijo de comando que envuelve comandos de shell que Claude Code genera: llamadas de herramientas Bash, comandos [hook](/docs/es/hooks), comandos [línea de estado](/docs/es/statusline), y comandos de inicio de [servidor MCP](/docs/es/mcp) stdio. Los hooks de PowerShell y hooks de forma exec se ejecutan sin el prefijo. Útil para registro o auditoría. Establecer una ruta de ejecutable simple como `/path/to/logger.sh` ejecuta cada comando como `/path/to/logger.sh '<command>'`. El contenedor recibe la línea de comando como un argumento de shell único entrecomillado en `$1`, por lo que el contenedor debe re-evaluar `$1` con un shell, por ejemplo `exec bash -c "$1"`. Tratar `$1` como una ruta de ejecutable simple rompe servidores MCP stdio que pasan argumentos como `npx -y <package>`. Para llamadas de herramientas Bash,`$1` contiene la invocación de shell completa que Claude Code ensambla, incluida la configuración del entorno, no solo el comando que Claude ejecutó |368| `CLAUDE_CODE_SHELL_PREFIX` | Prefijo de comando que envuelve comandos de shell que Claude Code genera: llamadas de herramienta Bash, comandos [hook](/docs/es/hooks), comandos [línea de estado](/docs/es/statusline), y comandos de inicio de [servidor MCP](/docs/es/mcp) stdio. Los hooks de PowerShell y hooks de forma exec se ejecutan sin el prefijo. Útil para registro o auditoría. Establecer una ruta de ejecutable simple como `/path/to/logger.sh` ejecuta cada comando como `/path/to/logger.sh '<command>'`. El contenedor recibe la línea de comando como un argumento de shell único entre comillas en `$1`, por lo que el contenedor debe re-evaluar `$1` con un shell, por ejemplo `exec bash -c "$1"`. Tratar `$1` como una ruta de ejecutable simple rompe servidores MCP stdio que pasan argumentos como `npx -y <package>`. Para llamadas de herramienta Bash, `$1` contiene la invocación de shell completa que Claude Code ensambla, incluida la configuración del entorno, no solo el comando que Claude ejecutó |

363| `CLAUDE_CODE_SIMPLE` | Establezca en `1` para ejecutar con un prompt del sistema mínimo y solo las herramientas Bash, lectura de archivo, y edición de archivo. Las herramientas MCP de `--mcp-config` aún están disponibles. Desabilita el descubrimiento automático de hooks, skills, comandos personalizados, subagentes, plugins, servidores MCP, memoria automática, y CLAUDE.md. Los skills en un directorio que pasa con `--add-dir` aún se cargan. Los tokens de OAuth y credenciales de llavero no se leen, por lo que la autenticación de Anthropic debe provenir de `ANTHROPIC_API_KEY` o un `apiKeyHelper` en `--settings`. Equivalente a pasar [`--bare`](/docs/es/headless#start-faster-with-bare-mode) |369| `CLAUDE_CODE_SIMPLE` | Establezca en `1` para ejecutar con un prompt del sistema mínimo y solo las herramientas Bash, lectura de archivo, y edición de archivo. Las herramientas MCP de `--mcp-config` aún están disponibles. Desabilita el auto-descubrimiento de hooks, skills, comandos personalizados, subagentes, plugins, servidores MCP, memoria automática, y CLAUDE.md. Las skills en un directorio que pasa con `--add-dir` aún se cargan. Los tokens OAuth y credenciales de llavero no se leen, por lo que la autenticación de Anthropic debe provenir de `ANTHROPIC_API_KEY` o un `apiKeyHelper` en `--settings`. Equivalente a pasar [`--bare`](/docs/es/headless#start-faster-with-bare-mode) |

364| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Establezca en `1` para usar un prompt del sistema más corto y descripciones de herramientas abreviadas en cualquier modelo. Establezca en `0`, `false`, `no`, u `off` para optar por no participar incluso en modelos donde el experimento o la configuración del servidor de otra manera lo habilitaría. El conjunto completo de herramientas, descubrimiento de hooks, servidores MCP, y CLAUDE.md permanecen habilitados |370| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Establezca en `1` para usar un prompt del sistema más corto y descripciones de herramientas abreviadas en cualquier modelo. Establezca en `0`, `false`, `no`, u `off` para optar por no participar incluso en modelos donde el experimento o la configuración del servidor de otra manera lo habilitaría. El conjunto completo de herramientas, descubrimiento de hooks, servidores MCP, y descubrimiento de CLAUDE.md permanecen habilitados |

365| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Omita la autenticación del lado del cliente para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), para puertas de enlace que firman solicitudes a sí mismas |371| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Omita la autenticación del lado del cliente para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), para puertas de enlace que firman solicitudes a sí mismas |

366| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Establezca en `1` para desactivar la caché en proceso de credenciales resueltas de la cadena de proveedor de credenciales predeterminada de AWS, para que Claude Code resuelva la cadena en cada solicitud de API. Con la caché desactivada, un perfil respaldado por SSO solicita credenciales de IAM Identity Center en cada solicitud. Vea [almacenamiento en caché de credenciales y tiempo de espera de resolución](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout). Requiere Claude Code v2.1.207 o posterior |372| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Establezca en `1` para desactivar el caché en proceso de credenciales resueltas de la cadena de proveedores de credenciales predeterminada de AWS, por lo que Claude Code resuelve la cadena en cada solicitud de API. Con el caché desactivado, un perfil respaldado por SSO solicita credenciales de IAM Identity Center en cada solicitud. Vea [almacenamiento en caché de credenciales y tiempo de espera de resolución](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout). Requiere Claude Code v2.1.207 o posterior |

367| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Omita la autenticación de AWS para Amazon Bedrock (por ejemplo, cuando use una puerta de enlace LLM) |373| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Omita la autenticación de AWS para Amazon Bedrock (por ejemplo, cuando use una puerta de enlace LLM) |

368| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Establezca en `1` para tratar una verificación de disponibilidad de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) fallida como disponible, para redes que bloquean la solicitud directa de la verificación a `api.anthropic.com`. Claude Code aún honra una respuesta "deshabilitado por su organización" |374| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Establezca en `1` para tratar una comprobación de disponibilidad de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) fallida como disponible, para redes que bloquean la solicitud directa de la comprobación a `api.anthropic.com`. Claude Code aún honra una respuesta "deshabilitada por su organización" |

369| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Establezca en `1` para omitir la verificación de disponibilidad de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) del lado del cliente, para proxies que interceptan la solicitud de la verificación en lugar de rechazarla. La API aún rechaza solicitudes de modo rápido cuando su organización tiene modo rápido deshabilitado |375| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Establezca en `1` para omitir la comprobación de disponibilidad de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) del lado del cliente, para proxies que interceptan la solicitud de la comprobación en lugar de rechazarla. La API aún rechaza solicitudes de modo rápido cuando su organización tiene modo rápido deshabilitado |

370| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Omita la autenticación de Azure para Microsoft Foundry, para un proxy o puerta de enlace que inyecta su propio encabezado `Authorization`. Claude Code envía solicitudes sin una credencial de Azure y preserva el encabezado `Authorization` que suministra, por ejemplo a través de `ANTHROPIC_CUSTOM_HEADERS`. Se ignora cuando `ANTHROPIC_FOUNDRY_API_KEY` o `ANTHROPIC_FOUNDRY_AUTH_TOKEN` se establece. Antes de v2.1.203, esta variable dejaba el cliente de Microsoft Foundry incapaz de enviar solicitudes a menos que también se estableciera una clave de API |376| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Omita la autenticación de Azure para Microsoft Foundry, para un proxy o puerta de enlace que inyecta su propio encabezado `Authorization`. Claude Code envía solicitudes sin una credencial de Azure y preserva el encabezado `Authorization` que suministra, por ejemplo a través de `ANTHROPIC_CUSTOM_HEADERS`. Se ignora cuando `ANTHROPIC_FOUNDRY_API_KEY` o `ANTHROPIC_FOUNDRY_AUTH_TOKEN` se establece. Antes de v2.1.203, esta variable dejó al cliente de Microsoft Foundry incapaz de enviar solicitudes a menos que también se estableciera una clave de API |

371| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Omita la autenticación de AWS para Amazon Bedrock Mantle (por ejemplo, cuando use una puerta de enlace LLM) |377| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Omita la autenticación de AWS para Amazon Bedrock Mantle (por ejemplo, cuando Use una puerta de enlace LLM) |

372| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Establezca en `1` para omitir escribir historial de prompts y transcripciones de sesión en disco. Las sesiones iniciadas con esta variable establecida no aparecen en `--resume`, `--continue`, o historial de flecha hacia arriba. Útil para sesiones de script efímeras |378| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Establezca en `1` para omitir escribir historial de prompts y transcripciones de sesión en disco. Las sesiones iniciadas con esta variable establecida no aparecen en `--resume`, `--continue`, o historial de flecha hacia arriba. Útil para sesiones de script efímeras |

373| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Omita la autenticación de Google para Google Cloud's Agent Platform (por ejemplo, cuando use una puerta de enlace LLM) |379| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Omita la autenticación de Google para Google Cloud's Agent Platform (por ejemplo, cuando Use una puerta de enlace LLM) |

374| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Número máximo de veces consecutivas que un hook [Stop](/docs/es/hooks#stop) o [SubagentStop](/docs/es/hooks#subagentstop) puede bloquear el turno de terminar antes de que Claude Code lo anule y termine el turno de todas formas (predeterminado: 8). Establezca en `0` para desabilitar el límite. Aumente esto si su hook legítimamente necesita más iteraciones para resolver |380| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Establezca en `1` para que una sesión iniciada con `--output-format stream-json` escriba un [mensaje de resultado que nombre por qué Claude Code se negó a iniciar](/docs/es/agent-sdk/typescript#startup_failure_reason) para fallos de inicio que de otra manera terminan solo con stderr. Requiere Claude Code v2.1.274 o posterior |

381| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Número máximo de veces consecutivas que un hook [Stop](/docs/es/hooks#stop) o [SubagentStop](/docs/es/hooks#subagentstop) puede bloquear el final del turno antes de que Claude Code lo anule y termine el turno de todas formas (predeterminado: 8). Establezca en `0` para desabilitar el límite. Aumente esto si su hook legítimamente necesita más iteraciones para resolver |

375| `CLAUDE_CODE_SUBAGENT_MODEL` | El modelo predeterminado para [subagentes](/docs/es/sub-agents#choose-a-model), compañeros de [equipo de agentes](/docs/es/agent-teams#specify-teammates-and-models), y agentes de [flujo de trabajo](/docs/es/workflows) que no se asignan un modelo de otra manera. Acepta un alias como `haiku` o un nombre de modelo completo. Dos fuentes tienen precedencia sobre él: un modelo que Claude pasa cuando genera el agente, y un campo `model` en la definición del agente, incluido `inherit`. Para cambiar eso, establezca [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/es/sub-agents#run-every-subagent-on-one-model). Vea [Elegir un modelo](/docs/es/sub-agents#choose-a-model) para el orden completo. Establecerlo en `inherit` es lo mismo que dejarlo sin establecer. Antes de v2.1.251, esta variable anulaba tanto el modelo por invocación como el campo `model` de la definición |382| `CLAUDE_CODE_SUBAGENT_MODEL` | El modelo predeterminado para [subagentes](/docs/es/sub-agents#choose-a-model), compañeros de [equipo de agentes](/docs/es/agent-teams#specify-teammates-and-models), y agentes de [flujo de trabajo](/docs/es/workflows) que no se asignan un modelo de otra manera. Acepta un alias como `haiku` o un nombre de modelo completo. Dos fuentes tienen precedencia sobre él: un modelo que Claude pasa cuando genera el agente, y un campo `model` en la definición del agente, incluido `inherit`. Para cambiar eso, establezca [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/es/sub-agents#run-every-subagent-on-one-model). Vea [Elegir un modelo](/docs/es/sub-agents#choose-a-model) para el orden completo. Establecerlo en `inherit` es lo mismo que dejarlo sin establecer. Antes de v2.1.251, esta variable anulaba tanto el modelo por invocación como el campo `model` de la definición |

376| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Establezca en `1` para forzar un modelo en subagentes, compañeros, y agentes de flujo de trabajo. [Ejecutar cada subagente en un modelo](/docs/es/sub-agents#run-every-subagent-on-one-model) dice cuál es ese modelo. Requiere Claude Code v2.1.257 o posterior |383| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Establezca en `1` para forzar un modelo en subagentes, compañeros, y agentes de flujo de trabajo. [Ejecutar cada subagente en un modelo](/docs/es/sub-agents#run-every-subagent-on-one-model) dice cuál es ese modelo. Requiere Claude Code v2.1.257 o posterior |

377| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Establezca `5m` o `1h`, los únicos valores que Claude Code acepta, para elegir el [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) para solicitudes fuera de la conversación principal, como [subagentes](/docs/es/sub-agents), flujos de trabajo, y trabajo de fondo. Tiene precedencia sobre la configuración `subagentPromptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la anula. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Requiere Claude Code v2.1.242 o posterior |384| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Establezca `5m` o `1h`, los únicos valores que Claude Code acepta, para elegir el [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) para solicitudes fuera de la conversación principal, como [subagentes](/docs/es/sub-agents), flujos de trabajo, y trabajo de fondo. Tiene precedencia sobre la configuración `subagentPromptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la anula. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Requiere Claude Code v2.1.242 o posterior |

378| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Establezca en `1` para eliminar credenciales de entornos de subprocesos (herramienta Bash, hooks, servidores MCP stdio): credenciales de Anthropic y proveedor de nube, cualquier otra variable que Claude Code reconozca como credencial, y credenciales incrustadas en URLs de registro de paquetes. El proceso de Claude padre mantiene estas credenciales para llamadas de API, pero los procesos secundarios no pueden leerlas, reduciendo la exposición a ataques de inyección de prompts que intentan exfiltrar secretos a través de expansión de shell. En Linux, esto también ejecuta subprocesos Bash en un espacio de nombres PID aislado para que no puedan leer entornos de procesos host a través de `/proc`; como efecto secundario, `ps`, `pgrep`, y `kill` no pueden ver o señalar procesos host. `claude-code-action` establece esto automáticamente cuando `allowed_non_write_users` se configura |385| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Establezca en `1` para eliminar credenciales de entornos de subproceso (herramienta Bash, hooks, servidores MCP stdio): credenciales de Anthropic y proveedor de nube, cualquier otra variable que Claude Code reconozca como credencial, y credenciales incrustadas en URLs de registro de paquetes. El proceso Claude padre mantiene estas credenciales para llamadas de API, pero los procesos secundarios no pueden leerlas, reduciendo la exposición a ataques de inyección de prompts que intentan exfiltrar secretos a través de expansión de shell. En v2.1.251 o posterior, el scrub también elimina variables de puntero de almacén de configuración de Claude Code (como `CLAUDE_CONFIG_DIR`), por lo que un proceso secundario no puede ubicar un directorio de configuración reubicado. Deje el scrub sin establecer si un subproceso necesita estas variables. En Linux, esto también ejecuta subprocesos Bash en un espacio de nombres PID aislado para que no puedan leer entornos de proceso host a través de `/proc`; como efecto secundario, `ps`, `pgrep`, y `kill` no pueden ver o señalar procesos host. `claude-code-action` establece esto automáticamente cuando `allowed_non_write_users` se configura |

379| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Establezca en `1` en modo no interactivo (la bandera `-p`) para esperar a que se complete la instalación del plugin antes de la primera consulta. Sin esto, los plugins se instalan en el fondo y pueden no estar disponibles en el primer turno. Combine con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar la espera |386| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Establezca en `1` en modo no interactivo (la bandera `-p`) para esperar a que se complete la instalación del plugin antes de la primera consulta. Sin esto, los plugins se instalan en el fondo y pueden no estar disponibles en el primer turno. Combine con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar la espera |

380| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para instalación sincrónica de plugins. Cuando se excede, Claude Code procede sin plugins y registra un error. Sin predeterminado: sin esta variable, la instalación sincrónica espera hasta completarse |387| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para instalación sincrónica de plugins. Cuando se excede, Claude Code procede sin plugins y registra un error. Sin predeterminado: sin esta variable, la instalación sincrónica espera hasta completarse |

381| `CLAUDE_CODE_SYNC_SKILLS` | Establezca en `1` para descargar sus skills de claude.ai habilitados en `~/.claude/skills/synced/` y resincronizar cada 10 minutos. Antes de ejecutar la primera consulta, Claude Code espera hasta `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` para la lista de sus skills. Las descargas en sí se terminan en el fondo, y Claude espera la descarga de un skill cuando lo invoca. El nombre de carpeta `synced` está [reservado para esta descarga](/docs/es/skills#where-skills-live). Antes de v2.1.227, los skills se descargaban en `~/.claude/skills/` directamente. Solo se aplica en modo no interactivo con la bandera `-p`. Requiere autenticación de claude.ai. Las sesiones de [Claude Code en la web](/docs/es/claude-code-on-the-web) reciben sus skills de claude.ai habilitados automáticamente; no necesita establecer esto allí. Claude Code aplica [reglas adicionales a los skills descargados](/docs/es/skills#how-synced-skills-behave), como no ejecutar sus comandos `!` en su máquina |388| `CLAUDE_CODE_SYNC_SKILLS` | Establezca en `1` en modo no interactivo con la bandera `-p` para hacer que Claude Code descargue las skills habilitadas para su cuenta de claude.ai en esa ejecución y espere la lista de ellas, hasta `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, antes de ejecutar la primera consulta. Las descargas en sí se completan en el fondo, y Claude espera la descarga de una skill cuando la invoca. Requiere autenticación de claude.ai. Las sesiones de terminal donde inicia sesión con su cuenta de claude.ai [descargan estas skills](/docs/es/skills#where-synced-skills-load) en `~/.claude/skills/synced/` y resincronizan aproximadamente cada 10 minutos sin esta variable, por lo que establézcala solo cuando una ejecución `-p` necesite sus skills actuales en su primera consulta. Antes de v2.1.273, las sesiones de terminal las descargaban solo en una ejecución `-p` con esta variable establecida. El nombre de carpeta `synced` está [reservado para esta descarga](/docs/es/skills#where-skills-live). Antes de v2.1.227, las skills se descargaban en `~/.claude/skills/` directamente. Claude Code aplica [reglas extra a las skills descargadas](/docs/es/skills#how-synced-skills-behave), como no ejecutar sus comandos `!` en su máquina |

382| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para una resincronización de skills a mitad de sesión cuando `CLAUDE_CODE_SYNC_SKILLS` se establece (predeterminado: 30000). Limita la descarga activada cuando el host solicita una recarga de skill durante la sesión. Cuando se excede, la resincronización se detiene y las descargas restantes continúan en el fondo |389| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la resincronización de skills que se ejecuta a mitad de sesión cuando una aplicación construida en el [Agent SDK](/docs/es/agent-sdk/typescript#query-object) recarga skills (predeterminado: 30000). Cuando se excede, la recarga continúa con cualquiera que sea las skills que hayan llegado, y las descargas restantes se completan en el fondo |

383| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para que la primera consulta espere la lista de skills inicial cuando `CLAUDE_CODE_SYNC_SKILLS` se establece (predeterminado: 5000). Cuando se excede, la primera consulta se ejecuta con los skills que hayan llegado. Las descargas se terminan en el fondo de cualquier forma, y Claude espera la descarga de un skill cuando lo invoca |390| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para que la primera consulta espere la lista de skills inicial cuando `CLAUDE_CODE_SYNC_SKILLS` se establece (predeterminado: 5000). Cuando se excede, la primera consulta se ejecuta con cualquiera que sea las skills que hayan llegado. Las descargas se completan en el fondo de cualquier forma, y Claude espera la descarga de una skill cuando la invoca |

384| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Establezca en `false` para desabilitar el resaltado de sintaxis en la salida de diff. Útil cuando los colores interfieren con su configuración de terminal. Para también desabilitar el resaltado en bloques de código y vistas previas de archivos, use la configuración [`syntaxHighlightingDisabled`](/docs/es/settings-reference#syntaxhighlightingdisabled) |391| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Establezca en `false` para desabilitar el resaltado de sintaxis en la salida de diferencia. Útil cuando los colores interfieren con su configuración de terminal. Para también desabilitar el resaltado en bloques de código y vistas previas de archivo, use la configuración [`syntaxHighlightingDisabled`](/docs/es/settings-reference#syntaxhighlightingdisabled) |

385| `CLAUDE_CODE_TASK_LIST_ID` | Comparta una lista de tareas entre sesiones. Establezca el mismo ID en múltiples instancias de Claude Code para coordinar en una lista de tareas compartida, en [sesiones que tienen las herramientas de Tarea](/docs/es/tools-reference#task-tool-availability). Vea [Lista de tareas](/docs/es/interactive-mode#task-list) |392| `CLAUDE_CODE_TASK_LIST_ID` | Comparta una lista de tareas entre sesiones. Establezca el mismo ID en múltiples instancias de Claude Code para coordinar en una lista de tareas compartida, en [sesiones que tienen las herramientas Task](/docs/es/tools-reference#task-tool-availability). Vea [Lista de tareas](/docs/es/interactive-mode#task-list) |

386| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Anule, en milisegundos, cuánto tiempo una sesión no interactiva espera al salir para que su [equipo de agentes](/docs/es/agent-teams) termine de desmantelarse. Acepta 1000 a 60000; un valor fuera de rango se ignora y se aplica el predeterminado de 10000. Requiere Claude Code v2.1.206 o posterior |393| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Anule, en milisegundos, cuánto tiempo una sesión no interactiva espera al salir para que su [equipo de agentes](/docs/es/agent-teams) termine de desmantelarse. Acepta 1000 a 60000; un valor fuera de rango se ignora y se aplica el predeterminado de 10000. Requiere Claude Code v2.1.206 o posterior |

387| `CLAUDE_CODE_TMPDIR` | Anule el directorio temporal usado para archivos temporales internos. Claude Code añade `/claude-{uid}/` en Unix o `/claude/` en Windows a esta ruta. Predeterminado: `/tmp` en macOS, `os.tmpdir()` en Linux y Windows. En macOS y Linux, los subprocesos Bash [sandboxed](/docs/es/sandboxing) reciben un `$TMPDIR` de respaldo corto bajo el predeterminado del sistema cuando su anulación es una ruta larga, ya que algunas herramientas fallan cuando las rutas temporales se vuelven demasiado largas. Los comandos Bash no sandboxed heredan su `$TMPDIR` de shell sin cambios. Los archivos temporales propios de Claude Code siempre usan su anulación. Establézcalo en su shell, configuración de usuario, o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |394| `CLAUDE_CODE_TMPDIR` | Anule el directorio temporal utilizado para archivos temporales internos. Claude Code añade `/claude-{uid}/` en Unix o `/claude/` en Windows a esta ruta. Predeterminado: `/tmp` en macOS, `os.tmpdir()` en Linux y Windows. En macOS y Linux, los subprocesos Bash [sandboxed](/docs/es/sandboxing) reciben un `$TMPDIR` de respaldo corto bajo el predeterminado del sistema cuando su anulación es una ruta larga, ya que algunas herramientas fallan cuando las rutas temporales se vuelven demasiado largas. Los comandos Bash no sandboxed heredan su `$TMPDIR` de shell sin cambios. Los archivos temporales propios de Claude Code siempre usan su anulación. Establézcalo en su shell, configuración de usuario, o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

388| `CLAUDE_CODE_TMUX_TRUECOLOR` | Establezca en cualquier valor no vacío, como `1`, para permitir salida de truecolor de 24 bits dentro de tmux. **Establecerlo en `0` o `false` aún permite truecolor**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para restaurar el límite de 256 colores. De forma predeterminada, Claude Code se limita a 256 colores cuando `$TMUX` se establece porque tmux no pasa secuencias de escape de truecolor a menos que se configure. Establezca esto después de agregar `set -ga terminal-overrides ',*:Tc'` a su `~/.tmux.conf`. Vea [Configuración de terminal](/docs/es/terminal-config) para otras configuraciones de tmux |395| `CLAUDE_CODE_TMUX_TRUECOLOR` | Establezca en cualquier valor no vacío, como `1`, para permitir salida de truecolor de 24 bits dentro de tmux. **Establecerlo en `0` o `false` aún permite truecolor**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para restaurar el límite de 256 colores. De forma predeterminada, Claude Code se limita a 256 colores cuando `$TMUX` se establece porque tmux no pasa secuencias de escape de truecolor a menos que se configure. Establezca esto después de agregar `set -ga terminal-overrides ',*:Tc'` a su `~/.tmux.conf`. Vea [Configuración de terminal](/docs/es/terminal-config) para otras configuraciones de tmux |

389| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | En Linux y WSL, establezca en una lista separada por comas de los tipos de procesos que Claude Code [excluye del límite de memoria de herramientas](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), como `mcp` o `lsp`. Establezca `none` para limitar cada tipo, o `all-new` para limitar solo comandos de herramientas Bash, PowerShell, y Monitor. Claude Code mantiene comandos de herramientas Bash, PowerShell, y Monitor bajo el límite cualquiera que sea lo que enumere. Requiere Claude Code v2.1.246 o posterior |396| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | En Linux y WSL, establezca en una lista separada por comas de los tipos de procesos que Claude Code [excluye del límite de memoria de herramientas](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), como `mcp` o `lsp`. Establezca `none` para limitar cada tipo, o `all-new` para limitar solo comandos de herramientas Bash, PowerShell, y Monitor. Claude Code mantiene comandos de herramientas Bash, PowerShell, y Monitor bajo el límite cualquiera que sea lo que enumere. Requiere Claude Code v2.1.246 o posterior |

390| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | En Linux y WSL, establezca en un tamaño como `4G` para [limitar la memoria que los comandos de herramientas Bash y PowerShell pueden usar](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), y comandos de herramientas Monitor en v2.1.246 o posterior. Escriba el tamaño en dígitos simples, solo para un número de bytes o con un sufijo `K`, `M`, `G`, o `T`. Establezca `0` u `off` para desactivar el límite. Una vez que el primer proceso que Claude Code inicia ha activado o desactivado el límite, un valor cambiado tiene efecto la próxima vez que inicia `claude`. Requiere Claude Code v2.1.233 o posterior |397| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | En Linux y WSL, establezca en un tamaño como `4G` para [limitar la memoria que los comandos de herramientas Bash y PowerShell pueden usar](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), y comandos de herramientas Monitor en v2.1.246 o posterior. Escriba el tamaño en dígitos simples, solo para un número de bytes o con un sufijo `K`, `M`, `G`, o `T`. Establezca `0` u `off` para desactivar el límite. Una vez que el primer proceso que Claude Code inicia ha activado o desactivado el límite, un valor cambiado tiene efecto la próxima vez que inicia `claude`. Requiere Claude Code v2.1.233 o posterior |

391| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Plazo en milisegundos para diálogos que Claude Code reenvía a un cliente remoto, como un [Control Remoto](/docs/es/remote-control) o host SDK, y para el diálogo de aprobación de un [mensaje entre sesiones retenido](/docs/es/cross-session-messaging#control-inbound-messages), antes de que Claude Code los cancele; los prompts de permiso y preguntas `AskUserQuestion` usan sus propios flujos y no se rigen por él. También limita el prompt de consentimiento de créditos de uso de [Fable](/docs/es/model-config#fable-and-usage-credits) a mitad de sesión en una sesión que puede estar ejecutándose desatendida. [Controlar mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages) y [sesiones no interactivas](/docs/es/cross-session-messaging#non-interactive-sessions) cubren las reglas de vencimiento de mensaje retenido completo, incluidos los casos donde el plazo no se aplica. Anula la configuración [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry); `0` o un valor negativo desabilita el plazo |398| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Plazo en milisegundos antes de que Claude Code cancele un diálogo que reenvía a un cliente remoto como un [Remote Control](/docs/es/remote-control) o host SDK, o el diálogo de aprobación para un [mensaje entre sesiones retenido](/docs/es/cross-session-messaging#control-inbound-messages); los prompts de permiso y las preguntas `AskUserQuestion` usan sus propios flujos y no se rigen por él. En Claude Code v2.1.236 o posterior, también limita el [prompt de consentimiento de créditos de uso de Fable](/docs/es/model-config#fable-and-usage-credits) a mitad de sesión en una sesión que puede estar ejecutándose desatendida. [Controlar mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages) y [sesiones no interactivas](/docs/es/cross-session-messaging#non-interactive-sessions) cubren las reglas de vencimiento de mensaje retenido completo, incluidos los casos donde el plazo no se aplica. Anula la configuración [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry). `0` o un valor negativo desabilita el plazo |

392| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Use [Claude Platform on AWS](/docs/es/claude-platform-on-aws) |399| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Use [Claude Platform on AWS](/docs/es/claude-platform-on-aws) |

393| `CLAUDE_CODE_USE_BEDROCK` | Use [Amazon Bedrock](/docs/es/amazon-bedrock) |400| `CLAUDE_CODE_USE_BEDROCK` | Use [Amazon Bedrock](/docs/es/amazon-bedrock) |

394| `CLAUDE_CODE_USE_FOUNDRY` | Use [Microsoft Foundry](/docs/es/microsoft-foundry) |401| `CLAUDE_CODE_USE_FOUNDRY` | Use [Microsoft Foundry](/docs/es/microsoft-foundry) |

395| `CLAUDE_CODE_USE_MANTLE` | Use el punto de conexión [Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock |402| `CLAUDE_CODE_USE_MANTLE` | Use el punto de conexión [Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock |

396| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Establezca en `1` para descubrir comandos personalizados, subagentes, y estilos de salida usando APIs de archivo de Node.js en lugar de ripgrep. Establezca esto si el binario ripgrep agrupado no está disponible o está bloqueado en su entorno. No afecta las herramientas Grep o búsqueda de archivos |403| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Establezca en `1` para descubrir comandos personalizados, subagentes, y estilos de salida usando APIs de archivo de Node.js en lugar de ripgrep. Establezca esto si el binario ripgrep agrupado no está disponible o está bloqueado en su entorno. No afecta las herramientas Grep o búsqueda de archivo |

397| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Controla la herramienta PowerShell. En Windows sin Git Bash, la herramienta se habilita automáticamente; establezca en `0` para deshabilitarla. En Windows con Git Bash instalado, la herramienta está activada de forma predeterminada para cuentas de claude.ai y Console; establezca en `1` para habilitarla en sesiones de Amazon Bedrock, Google Cloud's Agent Platform, y Microsoft Foundry, o `0` para desactivarla. En Linux, macOS, y WSL, establezca en `1` para habilitarla, que requiere `pwsh` en su `PATH`. Cuando está habilitada en Windows, Claude puede ejecutar comandos de PowerShell de forma nativa en lugar de enrutarlos a través de Git Bash. Vea [Herramienta PowerShell](/docs/es/tools-reference#powershell-tool) |404| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Controla la herramienta PowerShell. En Windows sin Git Bash, la herramienta está habilitada automáticamente; establezca en `0` para deshabilitarla. En Windows con Git Bash instalado, la herramienta está activada de forma predeterminada para cuentas de claude.ai y Console; establezca en `1` para habilitarla en sesiones de Amazon Bedrock, Google Cloud's Agent Platform, y Microsoft Foundry, o `0` para desactivarla. En Linux, macOS, y WSL, establezca en `1` para habilitarla, que requiere `pwsh` en su `PATH`. Cuando está habilitada en Windows, Claude puede ejecutar comandos de PowerShell de forma nativa en lugar de enrutarlos a través de Git Bash. Vea [Herramienta PowerShell](/docs/es/tools-reference#powershell-tool) |

398| `CLAUDE_CODE_USE_VERTEX` | Use [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |405| `CLAUDE_CODE_USE_VERTEX` | Use [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |

399| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | Establezca en el número de milisegundos que [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) mantiene la respuesta de cada URL obtenida en caché. El predeterminado es `900000`, que es 15 minutos. Solo acepta dígitos simples; `0`, un decimal, o cualquier otro deletreo mantiene el predeterminado. Claude Code lee el valor una vez por lanzamiento, por lo que un cambio en un bloque `env` de configuración se aplica cuando inicia `claude` nuevamente. Requiere Claude Code v2.1.233 o posterior |406| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | Establezca en el número de milisegundos que [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) mantiene la respuesta de cada URL obtenida en caché. El predeterminado es `900000`, que es 15 minutos. Solo acepta dígitos simples; `0`, un decimal, o cualquier otro deletreo mantiene el predeterminado. Claude Code lee el valor una vez por lanzamiento, por lo que un cambio en un bloque `env` de configuración se aplica cuando inicia `claude` nuevamente. Requiere Claude Code v2.1.233 o posterior |

400| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Límite superior en milisegundos en cuánto tiempo un agente de [flujo de trabajo](/docs/es/workflows) espera a que la primera respuesta de un hermano de mismo prefijo comience antes de enviar su propia primera solicitud. Cuando un fan-out inicia varios agentes que comparten un [prefijo de caché de prompt](/docs/es/workflows#prompt-caching-in-a-fan-out), Claude Code mantiene todos excepto el primer agente durante hasta este tiempo para que el resto lea el prefijo en caché en lugar de procesarlo sin caché. Predeterminado `5000`. Establezca en `0` para desabilitar la espera. Cuando `DISABLE_PROMPT_CACHING` se establece, los agentes nunca esperan. Requiere Claude Code v2.1.229 o posterior |407| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | Límite superior en milisegundos en cuánto tiempo [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) espera a que se descargue una página, incluidos los redireccionamientos que sigue. Una descarga que no se ha completado para entonces falla con un error de plazo. El predeterminado es `300000`, que es cinco minutos. Establezca en `0` para eliminar el límite. Solo acepta dígitos simples; un decimal o cualquier otro deletreo mantiene el predeterminado. Requiere Claude Code v2.1.268 o posterior |

408| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Cuántos agentes un único [flujo de trabajo](/docs/es/workflows) ejecuta a la vez, de `1` a `256`. De forma predeterminada, una ejecución ejecuta hasta 16 agentes a la vez, menos cuando Claude Code tiene menos CPUs disponibles; las llamadas `agent()` en cola esperan un espacio libre. La transcripción de cada agente en ejecución permanece en la memoria de Claude Code, por lo que los valores más altos aumentan el uso de memoria. Solo acepta dígitos simples; los valores fuera de rango y otros deletreos mantienen el predeterminado. Requiere Claude Code v2.1.269 o posterior |

409| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Límite superior en milisegundos en cuánto tiempo un agente de [flujo de trabajo](/docs/es/workflows) espera a que la primera respuesta de un hermano con el mismo prefijo comience antes de enviar su propia primera solicitud. Cuando un fan-out inicia varios agentes que comparten un [prefijo de caché de prompt](/docs/es/workflows#prompt-caching-in-a-fan-out), Claude Code mantiene todos excepto el primer agente durante hasta este tiempo para que el resto lea el prefijo en caché en lugar de procesarlo sin caché. Predeterminado `5000`. Establezca en `0` para desabilitar la espera. Cuando `DISABLE_PROMPT_CACHING` se establece, los agentes nunca esperan. Requiere Claude Code v2.1.229 o posterior |

401| `CLAUDE_CONFIG_DIR` | Anule el directorio de configuración (predeterminado: `~/.claude`). Toda la configuración, historial de sesión, y plugins se almacenan bajo esta ruta. Para credenciales, vea [dónde Claude Code almacena credenciales](/docs/es/authentication#credential-management). Útil para ejecutar múltiples cuentas lado a lado: por ejemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Establézcalo en su shell, configuración de usuario, o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |410| `CLAUDE_CONFIG_DIR` | Anule el directorio de configuración (predeterminado: `~/.claude`). Toda la configuración, historial de sesión, y plugins se almacenan bajo esta ruta. Para credenciales, vea [dónde Claude Code almacena credenciales](/docs/es/authentication#credential-management). Útil para ejecutar múltiples cuentas lado a lado: por ejemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Establézcalo en su shell, configuración de usuario, o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

402| `CLAUDE_DISABLE_ADOPT` | Establezca en `1` para detener el trabajo de fondo en vuelo en lugar de llevarlo cuando envía una sesión a segundo plano presionando `←` o con [`/background`](/docs/es/agent-view#from-inside-a-session). Claude Code le pide que confirme antes de enviar a segundo plano, luego detiene las tareas que de otra manera se llevarían. Requiere Claude Code v2.1.195 o posterior |411| `CLAUDE_DISABLE_ADOPT` | Establezca en `1` para detener el trabajo de fondo en vuelo en lugar de llevarlo cuando envía una sesión a segundo plano presionando `←` o con [`/background`](/docs/es/agent-view#from-inside-a-session). Claude Code le pide que confirme antes de enviar a segundo plano, luego detiene las tareas que de otra manera se llevarían. Requiere Claude Code v2.1.195 o posterior |

403| `CLAUDE_EFFORT` | Se establece automáticamente en subprocesos de herramientas Bash y comandos hook al [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) en efecto cuando el subproceso comienza: `low`, `medium`, `high`, `xhigh`, o `max`. Ultracode no es un nivel distinto e informa como `xhigh`. Coincide con el campo `effort.level` pasado a [hooks](/docs/es/hooks). Solo se establece cuando el modelo actual admite el parámetro de esfuerzo |412| `CLAUDE_EFFORT` | Se establece automáticamente en subprocesos de herramienta Bash y comandos hook al [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) en efecto cuando el subproceso comienza: `low`, `medium`, `high`, `xhigh`, o `max`. Ultracode no es un nivel distinto e informa como `xhigh`. Coincide con el campo `effort.level` pasado a [hooks](/docs/es/hooks). Solo se establece cuando el modelo actual admite el parámetro de esfuerzo |

404| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Establezca en `1` para forzar la habilitación del perro guardián de inactividad de transmisión a nivel de byte, o establezca en `0` para forzar su deshabilitación. `0` también desactiva el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs) en las conexiones donde se ejecuta ese plazo. Cuando no se establece, el perro guardián se habilita de forma predeterminada para conexiones directas de API de Anthropic y [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y para respuestas de transmisión en conexiones de [puerta de enlace](/docs/es/gateways) alcanzadas a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`; antes de v2.1.222 no se ejecutaba en esas conexiones de puerta de enlace, por lo que el perro guardián a nivel de evento podría informar un estancamiento allí incluso mientras se enviaban pings de mantenimiento de conexión. Para tiempos de espera y cómo interactúan los temporizadores, vea [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |413| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Establezca en `1` para forzar la habilitación del perro guardián de inactividad de transmisión a nivel de byte, o establezca en `0` para forzar su deshabilitación. `0` también desactiva el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs) en las conexiones donde se ejecuta ese plazo. Cuando no se establece, el perro guardián está habilitado de forma predeterminada para conexiones directas de API de Anthropic y [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y para respuestas de transmisión en conexiones de [puerta de enlace](/docs/es/gateways) alcanzadas a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`; antes de v2.1.222 no se ejecutaba en esas conexiones de puerta de enlace, por lo que el perro guardián a nivel de evento podría informar un estancamiento allí incluso mientras se llegaban pings de mantenimiento. Para tiempos de espera y cómo interactúan los temporizadores, vea [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |

405| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Establezca en `1` para habilitar el perro guardián de inactividad de transmisión a nivel de byte en respuestas de Amazon Bedrock `vnd.amazon.eventstream`, que también habilita el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs) en solicitudes de transmisión de Bedrock. Desactivado de forma predeterminada. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |414| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Establezca en `1` para habilitar el perro guardián de inactividad de transmisión a nivel de byte en respuestas de Amazon Bedrock `vnd.amazon.eventstream`, que también habilita el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs) en solicitudes de transmisión de Bedrock. Desactivado de forma predeterminada. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

406| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Establezca en `0` para forzar la deshabilitación del perro guardián de inactividad de transmisión a nivel de evento, o establezca en `1` para forzar su habilitación. Cuando no se establece, el perro guardián está activado de forma predeterminada para todos los proveedores. Antes de v2.1.196, el predeterminado sin establecer era controlado por servidor en la API de Anthropic directa y desactivado en otros proveedores. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; para los otros temporizadores de estancamiento que se ejecutan junto a este, vea [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |415| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Establezca en `0` para forzar la deshabilitación del perro guardián de inactividad de transmisión a nivel de evento, o establezca en `1` para forzar su habilitación. Cuando no se establece, el perro guardián está activado de forma predeterminada para todos los proveedores. Antes de v2.1.196, el predeterminado sin establecer era controlado por servidor en la API directa de Anthropic y desactivado en otros proveedores. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; para los otros temporizadores de estancamiento que se ejecutan junto a este, vea [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |

407| `CLAUDE_ENV_FILE` | Ruta a un script de shell cuyo contenido Claude Code ejecuta antes de cada comando Bash en el mismo proceso de shell, para que las exportaciones en el archivo sean visibles para el comando. Use para persistir activación de virtualenv o conda entre comandos. También se rellena dinámicamente por hooks [SessionStart](/docs/es/hooks#persist-environment-variables), [Setup](/docs/es/hooks#setup), [CwdChanged](/docs/es/hooks#cwdchanged), y [FileChanged](/docs/es/hooks#filechanged) |416| `CLAUDE_ENV_FILE` | Ruta a un script de shell cuyo contenido Claude Code ejecuta antes de cada comando Bash en el mismo proceso de shell, por lo que las exportaciones en el archivo son visibles para el comando. Use para persistir activación de virtualenv o conda entre comandos. También se rellena dinámicamente por hooks [SessionStart](/docs/es/hooks#persist-environment-variables), [Setup](/docs/es/hooks#setup), [CwdChanged](/docs/es/hooks#cwdchanged), y [FileChanged](/docs/es/hooks#filechanged) |

408| `CLAUDE_PID` | Claude Code establece esto en su propio ID de proceso en los subprocesos que genera: comandos de herramientas Bash y PowerShell y comandos hook. En Linux, la integración de shell de la herramienta Bash lo usa para rechazar un patrón `pkill` que coincidiría con el proceso de Claude Code en sí; vea [la referencia de errores](/docs/es/errors#pkill-pattern-matches-the-claude-code-process). Léalo desde sus propios scripts para identificar o señalar deliberadamente el proceso padre de Claude Code. Requiere Claude Code v2.1.214 o posterior |417| `CLAUDE_JOB_DIR` | Se establece por Claude Code en cada [sesión de fondo](/docs/es/agent-view) a ese directorio `~/.claude/jobs/<id>` de la sesión. Los comandos de shell que la sesión ejecuta lo heredan. Escriba archivos de borrador en [`$CLAUDE_JOB_DIR/tmp`](/docs/es/agent-view#where-state-is-stored). Las llamadas `Write` y `Edit` de Claude allí no solicitan permiso, y el directorio se elimina cuando se elimina la sesión |

409| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefijo para nombres de sesión de [Control Remoto](/docs/es/remote-control) generados automáticamente cuando no se proporciona un nombre explícito. El predeterminado es el nombre de host de su máquina, produciendo nombres como `myhost-graceful-unicorn`. La bandera CLI `--remote-control-session-name-prefix` establece el mismo valor para una invocación única |418| `CLAUDE_PID` | Claude Code establece esto en su propio ID de proceso en los subprocesos que genera: comandos de herramientas Bash y PowerShell y comandos hook. En Linux, la integración de shell de la herramienta Bash lo usa para rechazar un patrón `pkill` que coincidiría con el proceso Claude Code en sí; vea [la referencia de error](/docs/es/errors#pkill-pattern-matches-the-claude-code-process). Léalo desde sus propios scripts para identificar o señalar deliberadamente el proceso Claude Code padre. Requiere Claude Code v2.1.214 o posterior |

419| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefijo para nombres de sesión [Remote Control](/docs/es/remote-control) generados automáticamente cuando no se proporciona un nombre explícito. El valor predeterminado es el nombre de host de su máquina, produciendo nombres como `myhost-graceful-unicorn`. La bandera CLI `--remote-control-session-name-prefix` establece el mismo valor para una única invocación |

410| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Plazo en milisegundos para el primer byte de respuesta de una solicitud de transmisión, en las conexiones donde se ejecuta el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs). Para cómo Claude Code lo fija, el tiempo extra que agrega para cuerpos de solicitud grandes, y cómo elige el plazo cuando deja esto sin establecer, vea [Sin respuesta de API](/docs/es/errors#no-response-from-api). Requiere Claude Code v2.1.242 o posterior |420| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Plazo en milisegundos para el primer byte de respuesta de una solicitud de transmisión, en las conexiones donde se ejecuta el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs). Para cómo Claude Code lo fija, el tiempo extra que agrega para cuerpos de solicitud grandes, y cómo elige el plazo cuando deja esto sin establecer, vea [Sin respuesta de API](/docs/es/errors#no-response-from-api). Requiere Claude Code v2.1.242 o posterior |

411| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos antes de que los perros guardianes de inactividad de transmisión a nivel de evento y byte cierren una conexión estancada. Cuando establece esta variable explícitamente, el mínimo es `300000` (5 minutos); los valores más bajos se fijan silenciosamente para absorber pausas de pensamiento extendido y almacenamiento en búfer de proxy, y el perro guardián a nivel de byte limita el valor a 30 minutos. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` tiene precedencia sobre esta variable para el perro guardián a nivel de byte. Para los predeterminados sin establecer por perro guardián, vea [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |421| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos antes de que los perros guardianes de inactividad de transmisión a nivel de evento y byte cierren una conexión estancada. Cuando establece esta variable explícitamente, el mínimo es `300000` (5 minutos); los valores más bajos se fijan silenciosamente al mínimo para absorber pausas de pensamiento extendido y almacenamiento en búfer de proxy, y el perro guardián a nivel de byte limita el valor a 30 minutos. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` tiene precedencia sobre esta variable para el perro guardián a nivel de byte. Para los valores predeterminados sin establecer por perro guardián, vea [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |

412| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Vida útil máxima en milisegundos para un [comando de shell de fondo](/docs/es/interactive-mode#background-bash-commands) que un [subagente](/docs/es/sub-agents) inició. Predeterminado `3600000` (60 minutos). Cuando establece `0`, Claude Code aplica el predeterminado en lugar de eliminar el límite. Cuando el subagente se ejecuta en primer plano, Claude Code también termina el comando cuando ese subagente da su respuesta final, independientemente de este límite. Vea [las reglas de vida útil del comando de fondo](/docs/es/tools-reference#background-commands). Claude Code no limita los comandos de fondo de sesión principal de esta manera. Para el límite de presión de memoria que los cubre, vea [Cómo funciona el envío a segundo plano](/docs/es/interactive-mode#how-backgrounding-works) |422| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Eliminado en v2.1.260 y ahora es un no-op. Anteriormente limitaba cuánto tiempo un [comando de shell de fondo](/docs/es/interactive-mode#background-bash-commands) que un [subagente](/docs/es/sub-agents) iniciaba podía ejecutarse, en milisegundos, con un predeterminado de 60 minutos. Vea [las reglas de vida útil del comando de fondo](/docs/es/tools-reference#background-commands) |

413| `DEBUG` | Establezca en `1` para habilitar el modo de depuración, equivalente a lanzar con [`--debug`](/docs/es/cli-reference#cli-flags). Los registros de depuración se escriben en `~/.claude/debug/<session-id>.txt`, o en la ruta establecida por `CLAUDE_CODE_DEBUG_LOGS_DIR`. Solo los valores verdaderos `1`, `true`, `yes`, y `on` habilitan el modo de depuración, por lo que patrones de espacio de nombres como `DEBUG=express:*` establecidos para otras herramientas no lo activan |423| `DEBUG` | Establezca en `1` para habilitar el modo de depuración, equivalente a lanzar con [`--debug`](/docs/es/cli-reference#cli-flags). Los registros de depuración se escriben en `~/.claude/debug/<session-id>.txt`, o en la ruta establecida por `CLAUDE_CODE_DEBUG_LOGS_DIR`. Solo los valores verdaderos `1`, `true`, `yes`, y `on` habilitan el modo de depuración, por lo que patrones de espacio de nombres como `DEBUG=express:*` establecidos para otras herramientas no lo activan |

414| `DISABLE_AUTOUPDATER` | Establezca en `1` para desabilitar actualizaciones automáticas de fondo. El `claude update` manual aún funciona. Use `DISABLE_UPDATES` para bloquear ambos |424| `DISABLE_AUTOUPDATER` | Establezca en `1` para desabilitar actualizaciones automáticas de fondo. El `claude update` manual aún funciona. Use `DISABLE_UPDATES` para bloquear ambos |

415| `DISABLE_AUTO_COMPACT` | Establezca en `1` para desabilitar la compactación automática cuando se aproxima al límite de contexto. El comando manual `/compact` permanece disponible. Use cuando desee control explícito sobre cuándo ocurre la compactación. Anula la configuración [`autoCompactEnabled`](/docs/es/settings-reference#autocompactenabled) |425| `DISABLE_AUTO_COMPACT` | Establezca en `1` para desabilitar la compactación automática cuando se acerca al límite de contexto. El comando manual `/compact` permanece disponible. Use cuando desee control explícito sobre cuándo ocurre la compactación. Anula la configuración [`autoCompactEnabled`](/docs/es/settings-reference#autocompactenabled) |

416| `DISABLE_COMPACT` | Establezca en `1` para desabilitar toda la compactación: tanto la compactación automática como el comando manual `/compact` |426| `DISABLE_COMPACT` | Establezca en `1` para desabilitar toda la compactación: tanto la compactación automática como el comando manual `/compact` |

417| `DISABLE_COST_WARNINGS` | Establezca en `1` para desabilitar mensajes de advertencia de costo |427| `DISABLE_COST_WARNINGS` | Establezca en `1` para desabilitar mensajes de advertencia de costo |

418| `DISABLE_DOCTOR_COMMAND` | Establezca en `1` para ocultar el skill de verificación de configuración [`/doctor`](/docs/es/commands#all-commands) y su alias `/checkup`. Útil para implementaciones administradas donde los usuarios no deberían ejecutar diagnósticos de configuración desde una sesión. No afecta el comando de terminal `claude doctor`. Antes de v2.1.205, esta variable ocultaba la pantalla de diagnósticos `/doctor` |428| `DISABLE_DOCTOR_COMMAND` | Establezca en `1` para ocultar la skill [`/doctor`](/docs/es/commands#all-commands) de verificación de configuración y su alias `/checkup`. Útil para implementaciones administradas donde los usuarios no deberían ejecutar diagnósticos de configuración desde una sesión. No afecta el comando de terminal `claude doctor`. Antes de v2.1.205, esta variable ocultaba la pantalla de comando `/doctor` de diagnósticos |

419| `DISABLE_ERROR_REPORTING` | Establezca en cualquier valor no vacío, como `1`, para optar por no participar en informes de errores. **Establecerlo en `0` o `false` aún opta por no participar**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para volver a activar los informes de errores |429| `DISABLE_ERROR_REPORTING` | Establezca en cualquier valor no vacío, como `1`, para optar por no participar en informes de errores. **Establecerlo en `0` o `false` aún opta por no participar**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para volver a activar los informes de errores |

420| `DISABLE_EXTRA_USAGE_COMMAND` | Establezca en `1` para ocultar el comando `/usage-credits` que permite a los usuarios comprar uso adicional más allá de los límites de velocidad |430| `DISABLE_EXTRA_USAGE_COMMAND` | Establezca en `1` para ocultar el comando `/usage-credits` que permite a los usuarios comprar uso adicional más allá de límites de velocidad |

421| `DISABLE_FEEDBACK_COMMAND` | Establezca en `1` para desabilitar el comando `/feedback` y [retroalimentación redactada por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior). También desabilita `/bug` y `/share`, que informan a través de la misma ruta; antes de v2.1.212 eran alias de `/feedback`, por lo que el comando se deshabilitaba bajo cada nombre. El nombre anterior `DISABLE_BUG_COMMAND` también se acepta |431| `DISABLE_FEEDBACK_COMMAND` | Establezca en `1` para desabilitar el comando `/feedback` y [retroalimentación redactada por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior). También desabilita `/bug` y `/share`, que informan a través de la misma ruta; antes de v2.1.212 eran alias de `/feedback`, por lo que el comando se deshabilitaba bajo cada nombre. El nombre anterior `DISABLE_BUG_COMMAND` también se acepta |

422| `DISABLE_GROWTHBOOK` | Establezca en `1` o `true` para desabilitar la obtención de banderas de características de GrowthBook y usar predeterminados de código para cada bandera. Esto hace que [Control Remoto](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. Establecerlo en `0` o `false` deja la obtención activada. El registro de eventos de telemetría permanece activado a menos que `DISABLE_TELEMETRY` también se establezca |432| `DISABLE_GROWTHBOOK` | Establezca en `1` o `true` para desabilitar la obtención de banderas de características de GrowthBook y usar valores predeterminados de código para cada bandera. Esto hace que [Remote Control](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. Establecerlo en `0` o `false` deja la obtención activada. El registro de eventos de telemetría permanece activado a menos que `DISABLE_TELEMETRY` también se establezca |

423| `DISABLE_INSTALLATION_CHECKS` | Establezca en `1` para desabilitar advertencias de instalación. Use solo cuando administre manualmente la ubicación de instalación, ya que esto puede enmascarar problemas con instalaciones estándar |433| `DISABLE_INSTALLATION_CHECKS` | Establezca en `1` para desabilitar advertencias de instalación. Use solo cuando administre manualmente la ubicación de instalación, ya que esto puede enmascarar problemas con instalaciones estándar |

424| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Establezca en `1` para ocultar el comando `/install-github-app`. Ya está oculto cuando se usan proveedores de terceros (Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry) |434| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Establezca en `1` para ocultar el comando `/install-github-app`. Ya está oculto cuando se usan proveedores de terceros (Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry) |

425| `DISABLE_INTERLEAVED_THINKING` | Establezca en `1` para evitar enviar el encabezado beta de pensamiento intercalado. Útil cuando su puerta de enlace LLM o proveedor no admite [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |435| `DISABLE_INTERLEAVED_THINKING` | Establezca en `1` para evitar enviar el encabezado beta de pensamiento intercalado. Útil cuando su puerta de enlace LLM o proveedor no admite [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |


430| `DISABLE_PROMPT_CACHING_HAIKU` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Haiku |440| `DISABLE_PROMPT_CACHING_HAIKU` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Haiku |

431| `DISABLE_PROMPT_CACHING_OPUS` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Opus |441| `DISABLE_PROMPT_CACHING_OPUS` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Opus |

432| `DISABLE_PROMPT_CACHING_SONNET` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Sonnet |442| `DISABLE_PROMPT_CACHING_SONNET` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Sonnet |

433| `DISABLE_TELEMETRY` | Establezca en cualquier valor no vacío, como `1`, para optar por no participar en telemetría. **Establecerlo en `0` o `false` aún opta por no participar**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para volver a activar la telemetría. Los eventos de telemetría no incluyen datos de usuario como código, rutas de archivo, o comandos bash. También desabilita la obtención de banderas de características con el mismo efecto que `DISABLE_GROWTHBOOK`, que hace que [Control Remoto](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. Vea [Desactivar telemetría para su organización](/docs/es/managed-settings#turn-telemetry-off-for-your-organization) |443| `DISABLE_TELEMETRY` | Establezca en cualquier valor no vacío, como `1`, para optar por no participar en telemetría. **Establecerlo en `0` o `false` aún opta por no participar**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para volver a activar la telemetría. Los eventos de telemetría no incluyen datos de usuario como código, rutas de archivo, o comandos bash. También desabilita la obtención de banderas de características con el mismo efecto que `DISABLE_GROWTHBOOK`, que hace que [Remote Control](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. Vea [Desactivar telemetría para su organización](/docs/es/managed-settings#turn-telemetry-off-for-your-organization) |

434| `DISABLE_UPDATES` | Establezca en `1` para bloquear todas las actualizaciones, incluido el `claude update` manual y `claude install`. Más estricto que `DISABLE_AUTOUPDATER`. Use cuando distribuya Claude Code a través de sus propios canales y los usuarios no deberían auto-actualizar |444| `DISABLE_UPDATES` | Establezca en `1` para bloquear todas las actualizaciones, incluido el `claude update` manual y `claude install`. Más estricto que `DISABLE_AUTOUPDATER`. Use cuando distribuya Claude Code a través de sus propios canales y los usuarios no deberían auto-actualizar |

435| `DISABLE_UPGRADE_COMMAND` | Establezca en `1` para ocultar el comando `/upgrade` |445| `DISABLE_UPGRADE_COMMAND` | Establezca en `1` para ocultar el comando `/upgrade` |

436| `DO_NOT_TRACK` | Establezca en `1` para optar por no participar en telemetría, con el mismo efecto que `DISABLE_TELEMETRY`, incluida la no disponibilidad de [Control Remoto](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching). Claude Code lee esta variable como un booleano estándar, por lo que `0` deja la telemetría activada, y la honra como la convención entre herramientas reconocida por muchas CLI de desarrollador |446| `DO_NOT_TRACK` | Establezca en `1` para optar por no participar en telemetría, con el mismo efecto que `DISABLE_TELEMETRY`, incluida la no disponibilidad de [Remote Control](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching). Claude Code lee esta variable como un booleano estándar, por lo que `0` deja la telemetría activada, y la honra como la convención entre herramientas reconocida por muchas CLI de desarrollador |

437| `ENABLE_BETA_TRACING_DETAILED` | Establezca en `1`, junto con `BETA_TRACING_ENDPOINT`, para activar [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta), que agrega atributos de tramo que llevan contenido y el tramo `claude_code.hook`. Las sesiones de CLI interactivas también requieren que su organización esté en la lista de permitidos para la beta. Ambas variables se ignoran en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |447| `ENABLE_BETA_TRACING_DETAILED` | Establezca en `1`, junto con `BETA_TRACING_ENDPOINT`, para activar [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta), que agrega atributos que llevan contenido y el tramo `claude_code.hook`. Las sesiones CLI interactivas también requieren que su organización esté en la lista de permitidos para la beta. Ambas variables se ignoran en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

438| `ENABLE_CLAUDEAI_MCP_SERVERS` | Establezca en `false` para evitar que Claude Code obtenga [servidores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai). Habilitado de forma predeterminada para usuarios con sesión iniciada. Para desabilitar por proyecto u organización, establezca [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors) en configuración en su lugar |448| `ENABLE_CLAUDEAI_MCP_SERVERS` | Establezca en `false` para evitar que Claude Code obtenga [servidores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai). Habilitado de forma predeterminada para usuarios con sesión iniciada. Para desabilitar por proyecto u organización, establezca [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors) en configuración en su lugar |

439| `ENABLE_PROMPT_CACHING_1H` | Establezca en `1` para solicitar un [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) de 1 hora en lugar del predeterminado de 5 minutos. Destinado a usuarios de clave de API, [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai), [Microsoft Foundry](/docs/es/microsoft-foundry), y [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Los usuarios de suscripción dentro del uso incluido reciben el TTL de 1 hora automáticamente en la [conversación principal](/docs/es/prompt-caching#which-ttl-each-request-gets). Los usuarios de suscripción que extraen [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) pueden establecerlo para mantener el TTL de 1 hora. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Para elegir el TTL por depósito de solicitud en su lugar, use `CLAUDE_CODE_PROMPT_CACHE_TTL` y `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, que tienen precedencia sobre esta variable |449| `ENABLE_PROMPT_CACHING_1H` | Establezca en `1` para solicitar un [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) de 1 hora en lugar del predeterminado de 5 minutos. Destinado a usuarios de clave de API, [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai), [Microsoft Foundry](/docs/es/microsoft-foundry), y [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Los usuarios de suscripción dentro del uso incluido reciben el TTL de 1 hora automáticamente en la [conversación principal](/docs/es/prompt-caching#which-ttl-each-request-gets). Los usuarios de suscripción que extraen [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) pueden establecerlo para mantener el TTL de 1 hora. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Para elegir el TTL por depósito de solicitud en su lugar, use `CLAUDE_CODE_PROMPT_CACHE_TTL` y `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, que tienen precedencia sobre esta variable |

440| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecado. Use `ENABLE_PROMPT_CACHING_1H` en su lugar |450| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Use `ENABLE_PROMPT_CACHING_1H` en su lugar |

441| `ENABLE_TOOL_SEARCH` | Controla [búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search). Sin establecer, Claude Code difiere todas las herramientas MCP de forma predeterminada. Aún las carga por adelantado en modelos de Google Cloud's Agent Platform anteriores a la generación Claude 4.5, en una implementación de Microsoft Foundry alojada en Azure, y cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte. `true` siempre difiere y envía el encabezado beta, excepto en esos mismos modelos de Agent Platform y implementaciones de Microsoft Foundry; las solicitudes fallan en proxies que no admiten `tool_reference`. `auto` carga por adelantado cuando las definiciones de herramientas caben dentro del 10% del contexto. `auto:N` establece un umbral personalizado, como `auto:5` para 5%. `false` carga todas las herramientas por adelantado. Un valor que establece usted mismo se ignora cuando `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` se establece. Antes de v2.1.221, Claude Code deshabilitaba la búsqueda de herramientas para todos los modelos en Google Cloud's Agent Platform a menos que estableciera esta variable en `true` |451| `ENABLE_TOOL_SEARCH` | Controla [búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search). Sin establecer, Claude Code difiere todas las herramientas MCP de forma predeterminada. Aún las carga por adelantado en modelos de Google Cloud's Agent Platform anteriores a la generación Claude 4.5, en una implementación de Microsoft Foundry alojada en Azure, y cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte. `true` siempre difiere y envía el encabezado beta, excepto en esos mismos modelos de Agent Platform e implementaciones de Microsoft Foundry; las solicitudes fallan en proxies que no admiten `tool_reference`. `auto` carga por adelantado cuando las definiciones de herramientas caben dentro del 10% del contexto. `auto:N` establece un umbral personalizado, como `auto:5` para 5%. `false` carga todas las herramientas por adelantado. Un valor que establece usted mismo se ignora cuando `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` se establece. Antes de v2.1.221, Claude Code deshabilitaba la búsqueda de herramientas para todos los modelos en Google Cloud's Agent Platform a menos que estableciera esta variable en `true` |

442| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Establezca en cualquier valor no vacío, como `1`, para hacer que cada modelo deje de reintentar con un error de sobrecarga repetida cuando no hay modelo de respaldo configurado. **Establecerlo en `0` o `false` aún habilita esto**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para restaurar el comportamiento de reintento predeterminado. Sin él, los modelos que Claude Code reconoce como modelos Opus, Fable, o Mythos dejan de reintentar de esta manera cuando se autentica con una clave de API o un [proveedor de terceros](/docs/es/third-party-integrations) en lugar de una suscripción a Claude. A partir de v2.1.160, una [cadena de modelo de respaldo](/docs/es/model-config#fallback-model-chains) configurada se activa en errores de sobrecarga repetida para cualquier modelo principal, por lo que esta variable no afecta el cambio a un modelo de respaldo |452| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Establezca en cualquier valor no vacío, como `1`, para hacer que Claude Code deje de reintentar en errores de sobrecarga repetidos para cada modelo cuando no hay modelo de respaldo configurado. **Establecerlo en `0` o `false` aún habilita esto**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para restaurar el comportamiento de reintento predeterminado. Sin él, Claude Code deja de reintentar de esta manera en modelos que reconoce como modelos Opus, Fable, o Mythos cuando se autentica con una clave de API o un [proveedor de terceros](/docs/es/third-party-integrations) en lugar de una suscripción a Claude. En Claude Code v2.1.160 o posterior, Claude Code cambia a su [cadena de modelo de respaldo](/docs/es/model-config#fallback-model-chains) configurada en errores de sobrecarga repetidos para cualquier modelo principal, por lo que esta variable no afecta el cambio a un modelo de respaldo |

443| `FORCE_AUTOUPDATE_PLUGINS` | Establezca en `1` para forzar actualizaciones automáticas de plugins incluso cuando el actualizador automático principal está deshabilitado a través de `DISABLE_AUTOUPDATER` |453| `FORCE_AUTOUPDATE_PLUGINS` | Establezca en `1` para forzar auto-actualizaciones de plugins incluso cuando el auto-actualizador principal está deshabilitado a través de `DISABLE_AUTOUPDATER` |

444| `FORCE_HYPERLINK` | Establezca en `1` para habilitar hipervínculos OSC 8 clicables cuando su terminal los admite pero no se detectan automáticamente, o `0` para deshabilitarlos. Cuando no se establece, Claude Code habilita hipervínculos solo cuando detecta soporte de terminal. Claude Code analiza este valor como un número, no un booleano, por lo que un valor como `false`, `no`, u `off` habilita hipervínculos en lugar de deshabilitarlos. Claude Code renderiza el pie de página [insignia de PR o solicitud de fusión](/docs/es/interactive-mode#pr-review-status) como un hipervínculo incluso cuando no puede detectar soporte de terminal, como sobre SSH. Establezca `0` para renderizar la insignia como texto simple |454| `FORCE_HYPERLINK` | Establezca en `1` para habilitar hipervínculos OSC 8 clicables cuando su terminal los admite pero no se auto-detecta, o `0` para deshabilitarlos. Cuando no se establece, Claude Code habilita hipervínculos solo cuando detecta soporte de terminal. Claude Code analiza este valor como un número, no un booleano, por lo que un valor como `false`, `no`, u `off` habilita hipervínculos en lugar de deshabilitarlos. El pie de página [insignia de estado de PR o solicitud de fusión](/docs/es/interactive-mode#pr-review-status) se renderiza como un hipervínculo incluso cuando Claude Code no puede detectar soporte de terminal, como sobre SSH. Establezca `0` para renderizar la insignia como texto simple |

445| `FORCE_PROMPT_CACHING_5M` | Establezca en `1` para forzar el TTL de caché de prompt de 5 minutos incluso cuando el TTL de 1 hora se aplicaría de otra manera. Anula `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H`, y las configuraciones `promptCacheTtl` y `subagentPromptCacheTtl` |455| `FORCE_PROMPT_CACHING_5M` | Establezca en `1` para forzar el TTL de caché de prompt de 5 minutos incluso cuando el TTL de 1 hora se aplicaría de otra manera. Anula `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H`, y las configuraciones `promptCacheTtl` y `subagentPromptCacheTtl` |

446| `HTTP_PROXY` | Especifique el servidor proxy HTTP para conexiones de red |456| `HTTP_PROXY` | Especifique el servidor proxy HTTP para conexiones de red |

447| `HTTPS_PROXY` | Especifique el servidor proxy HTTPS para conexiones de red |457| `HTTPS_PROXY` | Especifique el servidor proxy HTTPS para conexiones de red |

448| `IS_DEMO` | Establezca en cualquier valor no vacío, como `1`, para habilitar el modo de demostración: oculta su correo electrónico y nombre de organización del encabezado y salida `/status`, y omite la incorporación. **Establecerlo en `0` o `false` aún habilita el modo de demostración**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para desactivarlo. Útil cuando transmite o graba una sesión |458| `IS_DEMO` | Establezca en cualquier valor no vacío, como `1`, para habilitar el modo de demostración: oculta su correo electrónico y nombre de organización del encabezado y salida `/status`, y omite la incorporación. **Establecerlo en `0` o `false` aún habilita el modo de demostración**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para desactivarlo. Útil cuando transmite o graba una sesión |

449| `MAX_MCP_OUTPUT_TOKENS` | Número máximo de tokens permitidos en respuestas de herramientas MCP. Claude Code muestra una advertencia cuando la salida excede 10,000 tokens. Las herramientas que declaran [`anthropic/maxResultSizeChars`](/docs/es/mcp#raise-the-limit-for-a-specific-tool) usan ese límite de caracteres para contenido de texto en su lugar, pero el contenido de imagen de esas herramientas aún está sujeto a esta variable (predeterminado: 25000) |459| `MAX_MCP_OUTPUT_TOKENS` | Número máximo de tokens permitidos en respuestas de herramientas MCP. Claude Code muestra una advertencia cuando la salida excede 10,000 tokens. Las herramientas que declaran [`anthropic/maxResultSizeChars`](/docs/es/mcp#raise-the-limit-for-a-specific-tool) usan ese límite de caracteres para contenido de texto en su lugar, pero el contenido de imagen de esas herramientas aún está sujeto a esta variable (predeterminado: 25000) |

450| `MAX_STRUCTURED_OUTPUT_RETRIES` | Número de veces que Claude Code reintenta cuando la respuesta del modelo falla la validación contra el [`--json-schema`](/docs/es/cli-reference#cli-flags) en modo no interactivo con la bandera `-p`. El mismo conteo de reintentos se aplica cuando la salida estructurada de un subagente de [flujo de trabajo](/docs/es/workflows) falla la validación. El predeterminado es 5 |460| `MAX_STRUCTURED_OUTPUT_RETRIES` | Número de intentos que Claude Code permite cuando la respuesta del modelo falla en la validación contra el [`--json-schema`](/docs/es/cli-reference#cli-flags) en modo no interactivo con la bandera `-p`; después de esa cantidad de intentos fallidos sin salida válida, la ejecución falla. El mismo límite se aplica cuando la salida estructurada de un subagente de [flujo de trabajo](/docs/es/workflows) falla en la validación. El valor predeterminado es 5, un primer intento más cuatro reintentos |

451| `MAX_THINKING_TOKENS` | Presupuesto de token fijo para [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code lo limita a un token por debajo de los tokens de salida máximos de la solicitud y nunca por debajo de 1,024; vea `CLAUDE_CODE_MAX_OUTPUT_TOKENS` para cómo se establece ese límite. Cuando no se establece y el pensamiento está habilitado, los modelos con [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) eligen su propia profundidad de pensamiento, y otros modelos usan el límite. Establezca en `0` para desabilitar el pensamiento en la API de Anthropic, excepto en [modelos Fable](/docs/es/model-config#extended-thinking), que no pueden tener el pensamiento desactivado; en [proveedores de terceros](/docs/es/third-party-integrations), `0` omite el parámetro `thinking` en su lugar. Con el pensamiento desactivado en la API de Anthropic, Claude Code envía esfuerzo `high` en lugar de un nivel más alto a modelos que sabe que [no aceptan esa combinación](/docs/es/errors#effort-isnt-available-with-thinking-turned-off), como Opus 5. Los valores distintos de cero se ignoran en modelos de razonamiento adaptativo a menos que `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` se establezca |461| `MAX_THINKING_TOKENS` | Presupuesto de token fijo para [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code lo limita a un token por debajo de los tokens de salida máximos de la solicitud y nunca por debajo de 1,024. Vea `CLAUDE_CODE_MAX_OUTPUT_TOKENS` para cómo se establece ese límite. Cuando no se establece y el pensamiento está habilitado, los modelos con [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) eligen su propia profundidad de pensamiento, y otros modelos usan el límite. Establezca en `0` para desabilitar el pensamiento en la API de Anthropic, excepto en modelos Fable, que no pueden tener el pensamiento deshabilitado. En [proveedores de terceros](/docs/es/third-party-integrations), `0` omite el parámetro `thinking` en su lugar. Con el pensamiento deshabilitado en la API de Anthropic, Claude Code envía esfuerzo `high` en lugar de un nivel más alto a modelos que sabe que [no aceptan esa combinación](/docs/es/errors#effort-isnt-available-with-thinking-turned-off), como Opus 5. Claude Code ignora valores distintos de cero en modelos de razonamiento adaptativo, excepto en los modelos donde `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` desactiva el razonamiento adaptativo |

452| `MCP_CLIENT_SECRET` | Secreto de cliente de OAuth para servidores MCP que requieren [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials). Evita el prompt interactivo al agregar un servidor con `--client-secret` |462| `MCP_CLIENT_SECRET` | Secreto de cliente OAuth para servidores MCP que requieren [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials). Evita el prompt interactivo al agregar un servidor con `--client-secret` |

453| `MCP_CONNECTION_NONBLOCKING` | Controla si el inicio espera a que los servidores MCP se conecten antes de la primera consulta. El inicio de MCP es no bloqueante de forma predeterminada: los servidores se conectan en el fondo y sus herramientas se vuelven disponibles a medida que se terminan. Establezca en `0` para hacer que Claude Code espere a que los servidores se conecten antes de la primera consulta. Los servidores configurados con [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral) aún hacen que el inicio espere independientemente, excepto cuando se sirven desde la [caché de descubrimiento](/docs/es/mcp#server-status-detail), ya que sus herramientas deben estar presentes cuando se construye el primer prompt. En modo no interactivo (`-p`), Claude Code también espera a los servidores aún pendientes antes del primer turno independientemente de esta variable, con un plazo más largo cuando pasa [`--mcp-config`](/docs/es/cli-reference#cli-flags) explícitamente; vea esa entrada de bandera para la excepción de servidor en caché |463| `MCP_CONNECTION_NONBLOCKING` | Controla si el inicio espera a que los servidores MCP se conecten antes de la primera consulta. El inicio de MCP es no bloqueante de forma predeterminada: los servidores se conectan en el fondo y sus herramientas se vuelven disponibles a medida que terminan. Establezca en `0` para hacer que Claude Code espere a que los servidores se conecten antes de la primera consulta. Los servidores configurados con [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral) aún hacen que el inicio espere independientemente, excepto cuando se sirven desde el [caché de descubrimiento](/docs/es/mcp#server-status-detail), ya que sus herramientas deben estar presentes cuando se construye el primer prompt. En modo no interactivo (`-p`), Claude Code también espera a los servidores aún pendientes antes del primer turno independientemente de esta variable, con un plazo más largo cuando pasa [`--mcp-config`](/docs/es/cli-reference#cli-flags) explícitamente; vea esa entrada de bandera para la excepción de servidor en caché |

454| `MCP_CONNECT_TIMEOUT_MS` | Cuánto tiempo espera el inicio de MCP bloqueante, en milisegundos, para el lote de conexión antes de tomar una instantánea de la lista de herramientas (predeterminado: 5000). Se aplica cuando `MCP_CONNECTION_NONBLOCKING=0` o para servidores marcados [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral). Los servidores aún pendientes en el plazo continúan conectándose en el fondo. Distinto de `MCP_TIMEOUT`, que limita el intento de conexión de un servidor individual |464| `MCP_CONNECT_TIMEOUT_MS` | Cuánto tiempo espera el inicio de MCP bloqueante, en milisegundos, para el lote de conexión antes de tomar una instantánea de la lista de herramientas (predeterminado: 5000). Se aplica cuando `MCP_CONNECTION_NONBLOCKING=0` o para servidores marcados [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral). Los servidores aún pendientes en el plazo continúan conectándose en el fondo. Distinto de `MCP_TIMEOUT`, que limita el intento de conexión de un servidor individual |

455| `MCP_DISCOVERY_CACHE` | Activa o desactiva la [caché de descubrimiento de MCP](/docs/es/mcp#server-status-detail). Con la caché activada, un servidor HTTP o SSE remoto que ha usado antes puede mostrar el [estado `cached`](/docs/es/mcp#server-status-detail), y Claude Code lo conecta en su primera llamada de herramienta en lugar de al inicio. La caché está desactivada de forma predeterminada a menos que un despliegue gradual la haya habilitado para su cuenta. Establezca en `1` para activarla, o `0` para mantenerla desactivada incluso cuando el despliegue la ha habilitado. Antes de v2.1.238, la caché estaba activada de forma predeterminada. El estado `cached` requiere Claude Code v2.1.221 o posterior |465| `MCP_DISCOVERY_CACHE` | Activa o desactiva el [caché de descubrimiento de MCP](/docs/es/mcp#server-status-detail). Con el caché activado, un servidor HTTP o SSE remoto que ha usado antes puede mostrar el [estado `cached`](/docs/es/mcp#server-status-detail), y Claude Code se conecta en su primera llamada de herramienta en lugar de al inicio. El caché está desactivado de forma predeterminada a menos que un lanzamiento gradual lo haya habilitado para su cuenta. Establezca en `1` para activarlo, o `0` para mantenerlo desactivado incluso cuando el lanzamiento lo ha habilitado. Antes de v2.1.238, el caché estaba activado de forma predeterminada. El estado `cached` requiere Claude Code v2.1.221 o posterior |

456| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Edad máxima, en segundos, de una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) (predeterminado: 14400, o 4 horas). En un inicio donde la entrada es más antigua que eso, Claude Code la descarta y conecta el servidor al inicio, como lo hace con la caché desactivada. Claude Code limita el valor a 7 días. Antes de v2.1.238, el predeterminado era 86400, o 24 horas, y Claude Code no limitaba el valor |466| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Edad máxima, en segundos, de una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) (predeterminado: 14400, o 4 horas). En un inicio donde la entrada es más antigua que eso, Claude Code la descarta y conecta el servidor al inicio, como lo hace con el caché desactivado. Claude Code limita el valor a 7 días. Antes de v2.1.238, el predeterminado era 86400, o 24 horas, y Claude Code no limitaba el valor |

457| `MCP_DISCOVERY_CACHE_STRIKES` | En un inicio donde una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) es más antigua que `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code la actualiza en el fondo. Esta variable establece cuántas actualizaciones seguidas pueden fallar antes de que Claude Code descarte la entrada y conecte el servidor en el siguiente inicio en su lugar (predeterminado: 1). Aumente si su conexión de red se cae ocasionalmente, para que una actualización fallida no descarte la entrada. Requiere Claude Code v2.1.238 o posterior |467| `MCP_DISCOVERY_CACHE_STRIKES` | En un inicio donde una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) es más antigua que `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code la actualiza en el fondo. Esta variable establece cuántas actualizaciones seguidas pueden fallar antes de que Claude Code descarte la entrada y conecte el servidor en el siguiente inicio en su lugar (predeterminado: 1). Aumente si su conexión de red se cae ocasionalmente, para que un fallo de actualización no descarte la entrada. Requiere Claude Code v2.1.238 o posterior |

458| `MCP_DISCOVERY_CACHE_TTL_S` | Segundos durante los cuales Claude Code usa una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) sin actualizarla (predeterminado: 900). En un inicio donde la entrada es más antigua que eso, Claude Code aún la usa pero la actualiza en el fondo. Una vez que la entrada es más antigua que `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code la descarta en su lugar. Claude Code limita el valor a `MCP_DISCOVERY_CACHE_MAX_STALE_S`, que es 4 horas de forma predeterminada. Antes de v2.1.238, Claude Code no limitaba el valor |468| `MCP_DISCOVERY_CACHE_TTL_S` | Segundos durante los cuales Claude Code usa una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) sin actualizarla (predeterminado: 900). En un inicio donde la entrada es más antigua que eso, Claude Code aún la usa pero la actualiza en el fondo. Una vez que la entrada es más antigua que `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code la descarta en su lugar. Claude Code limita el valor a `MCP_DISCOVERY_CACHE_MAX_STALE_S`, que es 4 horas de forma predeterminada. Antes de v2.1.238, Claude Code no limitaba el valor |

459| `MCP_OAUTH_CALLBACK_PORT` | Puerto fijo para la devolución de llamada de redirección de OAuth, como alternativa a `--callback-port` al agregar un servidor MCP con [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials) |469| `MCP_OAUTH_CALLBACK_PORT` | Puerto fijo para la devolución de llamada de redireccionamiento de OAuth, como alternativa a `--callback-port` al agregar un servidor MCP con [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials) |

460| `MCP_PROTOCOL_NEGOTIATION` | En el [tiempo de ejecución del cliente MCP v2](/docs/es/mcp#mcp-client-runtimes) solo, si Claude Code sondea servidores para la revisión del protocolo MCP 2026-07-28. Establezca `auto` para sondear servidores HTTP, conector claude.ai, y stdio; un servidor que no responde a la sonda se conecta en el protocolo anterior en su lugar, como siempre lo hacen los servidores SSE y WebSocket. Establezca `legacy` para omitir la sonda para cada servidor. Sin la variable, Claude Code sondea servidores HTTP y conector claude.ai en Claude Code v2.1.232 o posterior, con las excepciones que la sección [tiempos de ejecución del cliente MCP](/docs/es/mcp#mcp-client-runtimes) enumera. Cualquier otro valor se ignora con una advertencia en el registro de depuración. Requiere Claude Code v2.1.221 o posterior |470| `MCP_PROTOCOL_NEGOTIATION` | En el [tiempo de ejecución del cliente MCP v2](/docs/es/mcp#mcp-client-runtimes) solo, si Claude Code sondea servidores para la revisión del protocolo MCP 2026-07-28. Establezca `auto` para sondear servidores HTTP, conector de claude.ai, y stdio; un servidor que no responda al sondeo se conecta en el protocolo anterior en su lugar, como los servidores SSE y WebSocket siempre lo hacen. Establezca `legacy` para omitir el sondeo para cada servidor. Sin la variable, Claude Code sondea servidores HTTP y conector de claude.ai en Claude Code v2.1.232 o posterior, con las excepciones que la sección [tiempos de ejecución del cliente MCP](/docs/es/mcp#mcp-client-runtimes) enumera. Cualquier otro valor se ignora con una advertencia en el registro de depuración. Requiere Claude Code v2.1.221 o posterior |

461| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP remotos (HTTP/SSE) para conectar en paralelo durante el inicio (predeterminado: 20) |471| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP remotos (HTTP/SSE) para conectar en paralelo durante el inicio (predeterminado: 20) |

462| `MCP_SDK_GENERATION` | Fije cuál [tiempo de ejecución del cliente MCP](/docs/es/mcp#mcp-client-runtimes) este proceso se conecta a servidores MCP con: `v1`, construido en MCP TypeScript SDK 1.x, o `v2`, construido en [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Sin la variable, Claude Code usa v2 en Claude Code v2.1.232 o posterior, excepto donde esa sección dice que usa v1. En Claude Code v2.1.221 o posterior, el tiempo de ejecución v2 verifica el emisor que un servidor MCP de OAuth devuelve en su respuesta de autorización y falla el inicio de sesión con un error que comienza `Issuer mismatch in authorization response` cuando no coincide. El tiempo de ejecución v1 no ejecuta esta verificación. Si establece un valor no reconocido, Claude Code lo ignora y escribe una advertencia en el registro de depuración. Claude Code lee el valor una vez por proceso. Requiere Claude Code v2.1.218 o posterior |472| `MCP_SDK_GENERATION` | Fije qué [tiempo de ejecución del cliente MCP](/docs/es/mcp#mcp-client-runtimes) este proceso se conecta a servidores MCP con: `v1`, construido en MCP TypeScript SDK 1.x, o `v2`, construido en [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Sin la variable, Claude Code usa v2 en Claude Code v2.1.232 o posterior, excepto donde esa sección dice que usa v1. En Claude Code v2.1.221 o posterior, el tiempo de ejecución v2 verifica el emisor que un servidor OAuth de MCP devuelve en su respuesta de autorización y falla el inicio de sesión con un error que comienza `Issuer mismatch in authorization response` cuando no coincide. El tiempo de ejecución v1 no ejecuta esta verificación. Si establece un valor no reconocido, Claude Code lo ignora y escribe una advertencia en el registro de depuración. Claude Code lee el valor una vez por proceso. Requiere Claude Code v2.1.218 o posterior |

463| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP locales (stdio) para conectar en paralelo durante el inicio (predeterminado: 3) |473| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP locales (stdio) para conectar en paralelo durante el inicio (predeterminado: 3) |

464| `MCP_TIMEOUT` | Tiempo de espera en milisegundos para el inicio del servidor MCP (predeterminado: 30000, o 30 segundos) |474| `MCP_TIMEOUT` | Tiempo de espera en milisegundos para inicio de servidor MCP (predeterminado: 30000, o 30 segundos) |

465| `MCP_TOOL_TIMEOUT` | Tiempo de espera en milisegundos para la ejecución de herramientas MCP (predeterminado: 100000000, aproximadamente 28 horas). Para un servidor HTTP, SSE, o conector claude.ai, cada solicitud también agota el tiempo de espera después de 60 segundos de forma predeterminada; establezca esta variable, o el `timeout` por servidor, por encima de 60000 para aumentar ese límite por solicitud. Un valor más bajo aún acorta el tiempo de espera general de ejecución de herramientas pero deja el límite por solicitud en 60 segundos. Los servidores stdio y WebSocket no tienen temporizador por solicitud. Un campo `timeout` por servidor en `.mcp.json` anula esto para ese servidor. Un `timeout` por servidor de al menos 1000 también establece la ventana de inactividad mínima para las llamadas de herramientas de ese servidor, por lo que `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` nunca las aborta antes; este piso requiere Claude Code v2.1.203 o posterior. Para la variable env, los valores por debajo de 1000 se fijan a un segundo; para el campo por servidor, los valores por debajo de 1000 se ignoran |475| `MCP_TOOL_TIMEOUT` | Tiempo de espera en milisegundos para ejecución de herramientas MCP (predeterminado: 100000000, aproximadamente 28 horas). Para un servidor HTTP, SSE, o conector de claude.ai, cada solicitud también agota el tiempo de espera después de 60 segundos de forma predeterminada; establezca esta variable, o el `timeout` por servidor, por encima de 60000 para aumentar ese límite por solicitud. Un valor más bajo aún acorta el tiempo de espera general de ejecución de herramientas pero deja el límite por solicitud en 60 segundos. Los servidores Stdio y WebSocket no tienen temporizador por solicitud. Un campo `timeout` por servidor en `.mcp.json` anula esto para ese servidor. Un `timeout` por servidor de al menos 1000 también establece la ventana de inactividad mínima para las llamadas de herramientas de ese servidor, por lo que `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` nunca las aborta antes; este piso requiere Claude Code v2.1.203 o posterior. Para la variable env, los valores por debajo de 1000 se fijan a un segundo; para el campo por servidor, los valores por debajo de 1000 se ignoran |

466| `NO_PROXY` | Lista de dominios e IPs a los que se emitirán solicitudes directamente, omitiendo el proxy |476| `NO_PROXY` | Lista de dominios e IPs a los que se emitirán solicitudes directamente, omitiendo el proxy |

467| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Límite estándar del SDK de OpenTelemetry en la longitud del valor del atributo. Claude Code limita los atributos de telemetría que llevan contenido al menor de este y `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, para que el marcador de truncamiento permanezca dentro del límite del SDK. Claude Code lee las variantes `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` y `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` de la misma manera, y el valor más pequeño establecido se aplica a todas las señales. Requiere Claude Code v2.1.214 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage#common-configuration-variables) |477| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Límite estándar del SDK de OpenTelemetry en la longitud del valor del atributo. Claude Code limita los atributos de telemetría que llevan contenido al menor de este y `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, por lo que el marcador de truncamiento permanece dentro del límite del SDK. Claude Code lee las variantes `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` y `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` de la misma manera, y se aplica el valor más pequeño establecido a todas las señales. Requiere Claude Code v2.1.214 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage#common-configuration-variables) |

468| `OTEL_LOG_ASSISTANT_RESPONSES` | Establezca en `1` para incluir el texto de respuesta del modelo en eventos de registro de OpenTelemetry `assistant_response`. Cuando no se establece, se usa el valor de `OTEL_LOG_USER_PROMPTS` en su lugar. Establezca en `0` para mantener las respuestas redactadas incluso cuando `OTEL_LOG_USER_PROMPTS` se establece. Requiere Claude Code v2.1.193 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage#assistant-response-event) |478| `OTEL_LOG_ASSISTANT_RESPONSES` | Establezca en `1` para incluir el texto de respuesta del modelo en eventos de registro OpenTelemetry `assistant_response`. Cuando no se establece, se usa el valor de `OTEL_LOG_USER_PROMPTS` en su lugar. Establezca en `0` para mantener las respuestas redactadas incluso cuando `OTEL_LOG_USER_PROMPTS` se establece. Requiere Claude Code v2.1.193 o posterior. Vea [Monitoreo](/docs/es/monitoring-usage#assistant-response-event) |

469| `OTEL_LOG_RAW_API_BODIES` | Emita JSON de solicitud y respuesta de la API de Anthropic Messages como eventos de registro `api_request_body` / `api_response_body`. Establezca en `1` para cuerpos en línea truncados en el límite de contenido, o `file:<dir>` para escribir cuerpos sin truncar en disco y emitir una ruta `body_ref` en su lugar. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` configura el límite de contenido, 60 KB de forma predeterminada. Deshabilitado de forma predeterminada; los cuerpos incluyen el historial de conversación completo. Establézcalo en su shell, configuración de usuario, o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Vea [Monitoreo](/docs/es/monitoring-usage#api-request-body-event) |479| `OTEL_LOG_RAW_API_BODIES` | Emita solicitud y respuesta JSON de la API de Mensajes de Anthropic como eventos de registro `api_request_body` / `api_response_body`. Establezca en `1` para cuerpos en línea truncados en el límite de contenido, o `file:<dir>` para escribir cuerpos sin truncar en disco y emitir una ruta `body_ref` en su lugar. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` configura el límite de contenido, 60 KB de forma predeterminada. Deshabilitado de forma predeterminada; los cuerpos incluyen el historial de conversación completo. Establézcalo en su shell, configuración de usuario, o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Vea [Monitoreo](/docs/es/monitoring-usage#api-request-body-event) |

470| `OTEL_LOG_TOOL_CONTENT` | Establezca en `1` para incluir contenido de entrada y salida de herramientas en eventos de tramo de OpenTelemetry. Deshabilitado de forma predeterminada para proteger datos sensibles. Vea [Monitoreo](/docs/es/monitoring-usage) |480| `OTEL_LOG_TOOL_CONTENT` | Establezca en `1` para incluir contenido de herramientas en el evento de tramo OpenTelemetry `tool.output`. Los atributos de tramo llevan contenido de herramientas bajo [sus propias puertas](/docs/es/monitoring-usage#new-context-gates). Requiere [rastreo](/docs/es/monitoring-usage#traces-beta). Deshabilitado de forma predeterminada para proteger datos sensibles. Vea [Monitoreo](/docs/es/monitoring-usage#tool-output-span-event) |

471| `OTEL_LOG_TOOL_DETAILS` | Establezca en `1` para incluir argumentos de entrada de herramientas, nombres de servidores MCP, nombres de flujos de trabajo creados por el usuario, cadenas de error sin procesar en fallos de herramientas, la `category` de rechazo en eventos `api_refusal`, y otros detalles de herramientas en rastreos y registros de OpenTelemetry. Deshabilitado de forma predeterminada para proteger PII. Vea [Monitoreo](/docs/es/monitoring-usage) |481| `OTEL_LOG_TOOL_DETAILS` | Establezca en `1` para incluir argumentos de entrada de herramientas, nombres de servidores MCP, nombres de flujos de trabajo creados por el usuario, cadenas de error sin procesar en fallos de herramientas, la `category` de rechazo en eventos `api_refusal`, y otros detalles de herramientas en rastreos y registros de OpenTelemetry. Deshabilitado de forma predeterminada para proteger PII. Vea [Monitoreo](/docs/es/monitoring-usage) |

472| `OTEL_LOG_USER_PROMPTS` | Establezca en `1` para incluir texto de prompt de usuario en rastreos y registros de OpenTelemetry. Deshabilitado de forma predeterminada (los prompts se redactan). Vea [Monitoreo](/docs/es/monitoring-usage) |482| `OTEL_LOG_USER_PROMPTS` | Establezca en `1` para incluir texto de prompt de usuario en rastreos y registros de OpenTelemetry. Deshabilitado de forma predeterminada (los prompts se redactan). Vea [Monitoreo](/docs/es/monitoring-usage) |

473| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Establezca en `false` para excluir UUID de cuenta de atributos de métricas (predeterminado: incluido). Vea [Monitoreo](/docs/es/monitoring-usage) |483| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Establezca en `false` para excluir UUID de cuenta de atributos de métricas (predeterminado: incluido). Vea [Monitoreo](/docs/es/monitoring-usage) |

474| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Establezca en `true` para incluir el punto de entrada de sesión en atributos de métricas (predeterminado: excluido). Agregado en v2.1.152. Vea [Monitoreo](/docs/es/monitoring-usage) |484| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Establezca en `true` para incluir el punto de entrada de sesión en atributos de métricas (predeterminado: excluido). Agregado en v2.1.152. Vea [Monitoreo](/docs/es/monitoring-usage) |

475| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | A partir de v2.1.161, Claude Code adjunta claves de `OTEL_RESOURCE_ATTRIBUTES` a etiquetas de punto de datos de métrica. Establezca en `false` para excluirlas (predeterminado: incluidas). Vea [Monitoreo](/docs/es/monitoring-usage#multi-team-organization-support) |485| `OTEL_METRICS_INCLUDE_REPOSITORY` | Establezca en `true` para etiquetar métricas y eventos de OpenTelemetry con atributos `vcs.*` que identifiquen el repositorio de la sesión (predeterminado: excluido). Requiere Claude Code v2.1.269 o posterior. Vea [Atributos de repositorio](/docs/es/monitoring-usage#repository-attributes) |

486| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | A partir de v2.1.161, Claude Code adjunta claves `OTEL_RESOURCE_ATTRIBUTES` a etiquetas de punto de datos de métrica. Establezca en `false` para excluirlas (predeterminado: incluidas). Vea [Monitoreo](/docs/es/monitoring-usage#multi-team-organization-support) |

476| `OTEL_METRICS_INCLUDE_SESSION_ID` | Establezca en `false` para excluir ID de sesión de atributos de métricas (predeterminado: incluido). Vea [Monitoreo](/docs/es/monitoring-usage) |487| `OTEL_METRICS_INCLUDE_SESSION_ID` | Establezca en `false` para excluir ID de sesión de atributos de métricas (predeterminado: incluido). Vea [Monitoreo](/docs/es/monitoring-usage) |

477| `OTEL_METRICS_INCLUDE_VERSION` | Establezca en `true` para incluir la versión de Claude Code en atributos de métricas (predeterminado: excluido). Vea [Monitoreo](/docs/es/monitoring-usage) |488| `OTEL_METRICS_INCLUDE_VERSION` | Establezca en `true` para incluir la versión de Claude Code en atributos de métricas (predeterminado: excluido). Vea [Monitoreo](/docs/es/monitoring-usage) |

478| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Anule el presupuesto de caracteres para metadatos de skill mostrados a la [herramienta de Skill](/docs/es/skills#control-who-invokes-a-skill). El presupuesto se escala dinámicamente al 1% de la ventana de contexto, con un respaldo de 8,000 caracteres. Nombre heredado mantenido para compatibilidad hacia atrás |489| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Anule el presupuesto de caracteres para metadatos de skill mostrados a la [herramienta Skill](/docs/es/skills#control-who-invokes-a-skill). El presupuesto se escala dinámicamente al 1% de la ventana de contexto, con un respaldo de 8,000 caracteres. Nombre heredado mantenido para compatibilidad hacia atrás |

479| `TASK_MAX_OUTPUT_LENGTH` | Número máximo de caracteres de salida de una [tarea de fondo](/docs/es/tools-reference#background-commands) que la herramienta `TaskOutput` mantiene (predeterminado: 32000; máximo: 160000). Si establece la configuración [`taskOutputMaxChars`](/docs/es/settings-reference#taskoutputmaxchars), Claude Code ignora esta variable |490| `TASK_MAX_OUTPUT_LENGTH` | Número máximo de caracteres de salida de una [tarea de fondo](/docs/es/tools-reference#background-commands) que la herramienta `TaskOutput` mantiene (predeterminado: 32000; máximo: 160000). Si establece la configuración [`taskOutputMaxChars`](/docs/es/settings-reference#taskoutputmaxchars), Claude Code ignora esta variable |

480| `USE_BUILTIN_RIPGREP` | Establezca en `0` para usar `rg` instalado en el sistema en lugar de `rg` incluido con Claude Code |491| `USE_BUILTIN_RIPGREP` | Establezca en `0` para usar `rg` instalado en el sistema en lugar de `rg` incluido con Claude Code |

481| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Anule la región para Claude 3.5 Haiku cuando use Google Cloud's Agent Platform |492| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Anule la región para Claude 3.5 Haiku cuando use Google Cloud's Agent Platform |

482| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Anule la región para Claude 3.5 Sonnet cuando use Google Cloud's Agent Platform |493| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Anule la región para Claude 3.5 Sonnet cuando Use Google Cloud's Agent Platform |

483| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Anule la región para Claude 3.7 Sonnet cuando use Google Cloud's Agent Platform |494| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Anule la región para Claude 3.7 Sonnet cuando Use Google Cloud's Agent Platform |

484| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Anule la región para Claude 4.0 Opus cuando use Google Cloud's Agent Platform |495| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Anule la región para Claude 4.0 Opus cuando Use Google Cloud's Agent Platform |

485| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Anule la región para Claude 4.0 Sonnet cuando use Google Cloud's Agent Platform |496| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Anule la región para Claude 4.0 Sonnet cuando Use Google Cloud's Agent Platform |

486| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Anule la región para Claude 4.1 Opus cuando use Google Cloud's Agent Platform |497| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Anule la región para Claude 4.1 Opus cuando Use Google Cloud's Agent Platform |

487| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Anule la región para Claude Opus 4.5 cuando use Google Cloud's Agent Platform |498| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Anule la región para Claude Opus 4.5 cuando Use Google Cloud's Agent Platform |

488| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Anule la región para Claude Sonnet 4.5 cuando use Google Cloud's Agent Platform |499| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Anule la región para Claude Sonnet 4.5 cuando Use Google Cloud's Agent Platform |

489| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Anule la región para Claude Opus 4.6 cuando use Google Cloud's Agent Platform |500| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Anule la región para Claude Opus 4.6 cuando Use Google Cloud's Agent Platform |

490| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Anule la región para Claude Sonnet 4.6 cuando use Google Cloud's Agent Platform |501| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Anule la región para Claude Sonnet 4.6 cuando Use Google Cloud's Agent Platform |

491| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Anule la región para Claude Opus 4.7 cuando use Google Cloud's Agent Platform |502| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Anule la región para Claude Opus 4.7 cuando Use Google Cloud's Agent Platform |

492| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Anule la región para Claude Opus 4.8 cuando use Google Cloud's Agent Platform |503| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Anule la región para Claude Opus 4.8 cuando Use Google Cloud's Agent Platform |

493| `VERTEX_REGION_CLAUDE_5_OPUS` | Anule la región para Claude Opus 5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.219 |504| `VERTEX_REGION_CLAUDE_5_OPUS` | Anule la región para Claude Opus 5 cuando Use Google Cloud's Agent Platform. Agregado en v2.1.219 |

494| `VERTEX_REGION_CLAUDE_5_SONNET` | Anule la región para Claude Sonnet 5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.197 |505| `VERTEX_REGION_CLAUDE_5_SONNET` | Anule la región para Claude Sonnet 5 cuando Use Google Cloud's Agent Platform. Agregado en v2.1.197 |

495| `VERTEX_REGION_CLAUDE_FABLE_5` | Anule la región para Claude Fable 5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.170 |506| `VERTEX_REGION_CLAUDE_FABLE_5` | Anule la región para Claude Fable 5 cuando Use Google Cloud's Agent Platform. Agregado en v2.1.170 |

496| `VERTEX_REGION_CLAUDE_FABLE_5_1` | Anule la región para Claude Fable 5.1 cuando use Google Cloud's Agent Platform. Agregado en v2.1.255 |507| `VERTEX_REGION_CLAUDE_FABLE_5_1` | Anule la región para Claude Fable 5.1 cuando Use Google Cloud's Agent Platform. Agregado en v2.1.257 |

497| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Anule la región para Claude Haiku 4.5 cuando use Google Cloud's Agent Platform |508| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Anule la región para Claude Haiku 4.5 cuando Use Google Cloud's Agent Platform |

498 509 

499También se admiten variables estándar del exportador de OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES`, y variantes específicas de señal). Vea [Monitoreo](/docs/es/monitoring-usage) para detalles de configuración.510También se admiten variables de exportador OpenTelemetry estándar (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES`, y variantes específicas de señal). Vea [Monitoreo](/docs/es/monitoring-usage) para detalles de configuración.

500 511 

501<h2 id="features-that-need-feature-flag-fetching">512<h2 id="features-that-need-feature-flag-fetching">

502 Características que necesitan obtención de banderas de características513 Características que necesitan obtención de banderas de características


510 521 

511Con la obtención desactivada, usted no puede:522Con la obtención desactivada, usted no puede:

512 523 

524* Hacer que Claude Code [lea archivos `AGENTS.md`](/docs/es/memory#agents-md) como instrucciones del proyecto; carga solo archivos `CLAUDE.md`

513* [Iniciar sesiones en modo automático de forma predeterminada](/docs/es/permission-modes#which-mode-a-session-starts-in) en planes Pro, Max y Team525* [Iniciar sesiones en modo automático de forma predeterminada](/docs/es/permission-modes#which-mode-a-session-starts-in) en planes Pro, Max y Team

514* Hacer que la extensión de VS Code [lea archivos de configuración para el modo de permiso inicial](/docs/es/permission-modes#switch-permission-modes)526* Hacer que la extensión de VS Code [lea archivos de configuración para el modo de permiso inicial](/docs/es/permission-modes#switch-permission-modes)

515* Ejecutar [`/auto-mode-setup`](/docs/es/auto-mode-config#generate-environment-entries) para redactar entradas de `autoMode.environment`527* Ejecutar [`/auto-mode-setup`](/docs/es/auto-mode-config#generate-environment-entries) para redactar entradas de `autoMode.environment`


517* [Enviar mensajes a sesiones más allá de esta máquina](/docs/es/cross-session-messaging#message-sessions-on-other-machines); la mensajería entre sesiones en esta máquina funciona con la obtención desactivada529* [Enviar mensajes a sesiones más allá de esta máquina](/docs/es/cross-session-messaging#message-sessions-on-other-machines); la mensajería entre sesiones en esta máquina funciona con la obtención desactivada

518* Ejecutar [`claude import` o el comando `/import`](/docs/es/cli-reference#cli-commands)530* Ejecutar [`claude import` o el comando `/import`](/docs/es/cli-reference#cli-commands)

519* Ejecutar [`/skill-doctor`](/docs/es/skills#find-unused-skills) o abrir su informe en la pestaña **Stats** de `/plugin`531* Ejecutar [`/skill-doctor`](/docs/es/skills#find-unused-skills) o abrir su informe en la pestaña **Stats** de `/plugin`

532* Sincronizar las [skills](/docs/es/skills#where-synced-skills-load) y [plugins](/docs/es/plugins-reference#synced-plugins) habilitados para su cuenta de claude.ai en sus sesiones de terminal

520* Usar [la herramienta asesor](/docs/es/advisor#requirements)533* Usar [la herramienta asesor](/docs/es/advisor#requirements)

521* Leer o responder a [comentarios en un artefacto](/docs/es/artifacts#collect-comments-on-an-artifact)534* Leer o responder a [comentarios en un artefacto](/docs/es/artifacts#collect-comments-on-an-artifact)

522* Obtener [el tiempo de ejecución del cliente MCP v2](/docs/es/mcp#mcp-client-runtimes) y su sonda de protocolo sin establecer `MCP_SDK_GENERATION` y `MCP_PROTOCOL_NEGOTIATION`; Claude Code utiliza el tiempo de ejecución v1 a menos que usted establezca `MCP_SDK_GENERATION=v2`, y omite la sonda a menos que usted establezca `MCP_PROTOCOL_NEGOTIATION=auto`535* Hacer que Claude Code sondee servidores conectores de claude.ai para [revisión del protocolo MCP 2026-07-28](/docs/es/mcp#mcp-client-runtimes) a menos que usted establezca `MCP_PROTOCOL_NEGOTIATION=auto`

523* Obtener [la herramienta PowerShell](/docs/es/tools-reference#powershell-tool) de forma predeterminada para cuentas de claude.ai y Console en Windows con Git Bash instalado; Claude Code enruta comandos de shell a través de Git Bash a menos que usted establezca `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. En Windows sin Git Bash, la herramienta permanece activada536* Obtener [la herramienta PowerShell](/docs/es/tools-reference#powershell-tool) de forma predeterminada para cuentas de claude.ai y Console en Windows con Git Bash instalado; Claude Code enruta comandos de shell a través de Git Bash a menos que usted establezca `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. En Windows sin Git Bash, la herramienta permanece activada

524* Obtener [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), que Claude Code activa a través de una bandera obtenida537* Obtener [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), que Claude Code activa a través de una bandera obtenida

525* Hacer que Claude Code [excluya herramientas MCP cuyo esquema de entrada la API rechazaría](/docs/es/mcp#tools-with-invalid-input-schemas); envía el esquema de todas formas, y una solicitud que lo incluye falla con [un error 400 que nombra la herramienta por su posición](/docs/es/errors#tool-input-schema-is-invalid)538* Hacer que Claude Code [excluya herramientas MCP cuyo esquema de entrada la API rechazaría](/docs/es/mcp#tools-with-invalid-input-schemas); envía el esquema de todas formas, y una solicitud que lo incluye falla con [un error 400 que nombra la herramienta por su posición](/docs/es/errors#tool-input-schema-is-invalid)

errors.md +420 −44

Details

4 4 

5# Referencia de errores5# Referencia de errores

6 6 

7> Busque mensajes de error en tiempo de ejecución de Claude Code con lo que significa cada uno y cómo solucionarlo.7> Busque mensajes de error en tiempo de ejecución de Claude Code con lo que cada uno significa y cómo solucionarlo.

8 8 

9Esta página enumera los errores en tiempo de ejecución que Claude Code muestra y cómo recuperarse de cada uno, además de qué verificar cuando las respuestas parecen estar mal sin un error. Para errores de instalación como `command not found` o fallos de TLS durante la configuración, consulte [Solucionar problemas de instalación e inicio de sesión](/docs/es/troubleshoot-install).9Esta página enumera los errores en tiempo de ejecución que Claude Code muestra y cómo recuperarse de cada uno, además de qué verificar cuando las respuestas parecen estar mal sin un error. Para errores de instalación como `command not found` o fallos de TLS durante la configuración, consulte [Solucionar problemas de instalación e inicio de sesión](/docs/es/troubleshoot-install).

10 10 

11Excepto por [errores de Wrapper e IDE](#wrapper-and-ide-errors), que el programa de lanzamiento imprime en lugar de Claude Code mismo, estos errores y comandos de recuperación se aplican en toda la CLI, la [aplicación de escritorio](/docs/es/desktop) y [Claude Code en la web](/docs/es/claude-code-on-the-web), ya que los tres envuelven la misma CLI de Claude Code. Para otros problemas específicos de la superficie, consulte la sección de solución de problemas en la página de esa superficie.11Excepto por [Errores de Wrapper e IDE](#wrapper-and-ide-errors), que el programa de lanzamiento imprime en lugar de Claude Code en sí, estos errores y comandos de recuperación se aplican en toda la CLI, la [aplicación de escritorio](/docs/es/desktop) y [Claude Code en la web](/docs/es/claude-code-on-the-web), ya que los tres envuelven el mismo CLI de Claude Code. Para otros problemas específicos de la superficie, consulte la sección de solución de problemas en la página de esa superficie.

12 12 

13<Note>13<Note>

14 Claude Code llama a la API de Claude para respuestas del modelo, por lo que la mayoría de los errores en tiempo de ejecución se asignan a un código de error de API subyacente. Esta página cubre lo que significa cada error dentro de Claude Code y cómo recuperarse. Para las definiciones de código de estado HTTP sin procesar, consulte la [referencia de errores de la plataforma Claude](https://platform.claude.com/docs/en/api/errors).14 Claude Code llama a la API de Claude para respuestas del modelo, por lo que la mayoría de los errores en tiempo de ejecución se asignan a un código de error de API subyacente. Esta página cubre lo que cada error significa dentro de Claude Code y cómo recuperarse. Para las definiciones de código de estado HTTP sin procesar, consulte la [referencia de errores de la plataforma Claude](https://platform.claude.com/docs/en/api/errors).

15</Note>15</Note>

16 16 

17<h2 id="find-your-error">17<h2 id="find-your-error">


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

71| `API Error: 401 Invalid authentication credentials` | [Autenticación](#api-error-401-invalid-authentication-credentials) |71| `API Error: 401 Invalid authentication credentials` | [Autenticación](#api-error-401-invalid-authentication-credentials) |

72| `Login expired · Please run /login` | [Autenticación](#login-expired) |72| `Login expired · Please run /login` | [Autenticación](#login-expired) |

73| `Claude login not accepted · Run /login, then try again` | [Autenticación](#claude-login-not-accepted) |

73| `Not signed in to the Cloud gateway — run /login.` | [Autenticación](#administrator-policy-requires-a-cloud-gateway-sign-in) |74| `Not signed in to the Cloud gateway — run /login.` | [Autenticación](#administrator-policy-requires-a-cloud-gateway-sign-in) |

74| `Administrator policy requires a Cloud gateway sign-in on this machine` | [Autenticación](#administrator-policy-requires-a-cloud-gateway-sign-in) |75| `Administrator policy requires a Cloud gateway sign-in on this machine` | [Autenticación](#administrator-policy-requires-a-cloud-gateway-sign-in) |

75| `Failed to authenticate: OAuth session expired and could not be refreshed` | [Autenticación](#login-expired) |76| `Failed to authenticate: OAuth session expired and could not be refreshed` | [Autenticación](#login-expired) |


79| `Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile` | [Autenticación](#anthropic-profile-login-expired) |80| `Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile` | [Autenticación](#anthropic-profile-login-expired) |

80| `does not meet scope requirement user:profile` | [Autenticación](#oauth-scope-requirement) |81| `does not meet scope requirement user:profile` | [Autenticación](#oauth-scope-requirement) |

81| `claude.ai rejected the session token` / `session token rejected` | [Autenticación](#claude-ai-rejected-the-session-token) |82| `claude.ai rejected the session token` / `session token rejected` | [Autenticación](#claude-ai-rejected-the-session-token) |

83| `MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)` | [Autenticación](#mcp-server-needs-you-to-sign-in-again) |

84| `rejected the credential from its headersHelper` / `rejected the Authorization header in its config` | [Autenticación](#mcp-server-needs-you-to-sign-in-again) |

85| `MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate` | [Autenticación](#mcp-server-needs-you-to-sign-in-again) |

86| `MCP server "<name>" requires re-authorization (token expired)` | [Autenticación](#mcp-server-needs-you-to-sign-in-again) |

82| `Issuer mismatch in authorization response (RFC 9207)` | [Autenticación](#issuer-mismatch-in-authorization-response) |87| `Issuer mismatch in authorization response (RFC 9207)` | [Autenticación](#issuer-mismatch-in-authorization-response) |

83| `Cloud gateway session expired — run /login to reconnect.` | [Autenticación](#cloud-gateway-session-expired) |88| `Cloud gateway session expired — run /login to reconnect.` | [Autenticación](#cloud-gateway-session-expired) |

84| `Cloud gateway <url> no longer accepts this session` | [Autenticación](#cloud-gateway-session-expired) |89| `Cloud gateway <url> no longer accepts this session` | [Autenticación](#cloud-gateway-session-expired) |

85| `AWS credentials expired or invalid` | [Autenticación](#aws-credentials-expired-or-invalid) |90| `AWS credentials expired or invalid` | [Autenticación](#aws-credentials-expired-or-invalid) |

86| `AWS authentication failed` | [Autenticación](#aws-authentication-failed) |91| `AWS authentication failed` | [Autenticación](#aws-authentication-failed) |

92| `Google Cloud credentials expired or invalid` | [Autenticación](#google-cloud-credentials-expired-or-invalid) |

93| `Google Cloud authentication failed` | [Autenticación](#google-cloud-authentication-failed) |

94| `Microsoft Foundry authentication failed` | [Autenticación](#microsoft-foundry-authentication-failed) |

95| `Gateway refused the request` | [Autenticación](#gateway-refused-the-request) |

87| `Could not load AWS credentials` / `Could not load Google Cloud credentials` | [Autenticación](#could-not-load-aws-or-google-cloud-credentials) |96| `Could not load AWS credentials` / `Could not load Google Cloud credentials` | [Autenticación](#could-not-load-aws-or-google-cloud-credentials) |

88| `AWS default-chain credential resolve timed out` | [Autenticación](#aws-default-chain-credential-resolve-timed-out) |97| `AWS default-chain credential resolve timed out` | [Autenticación](#aws-default-chain-credential-resolve-timed-out) |

89| `Timed out after 60s waiting for AWS` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |98| `Timed out after 60s waiting for AWS` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |

90| `A request to AWS timed out. Check your network and proxy settings, then try again.` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |99| `A request to AWS timed out. Check your network and proxy settings, then try again.` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |

91| `Could not load the default credentials` on Google Cloud's Agent Platform | [Autenticación](#could-not-load-aws-or-google-cloud-credentials) |100| `Could not load the default credentials` on Google Cloud's Agent Platform | [Autenticación](#could-not-load-aws-or-google-cloud-credentials) |

92| `Unable to connect to API` | [Red](#unable-to-connect-to-api) |101| `Unable to connect to API` | [Red](#unable-to-connect-to-api) |

93| `Connection refused —` / `Can't reach the API server —` / `No internet route —` / `Couldn't connect through your proxy` / `Connection dropped`, each ending with an error code in parentheses | [Red](#unable-to-connect-to-api) |102| `Connection refused —` / `Can't reach the API server —` / `No internet route —` / `Couldn't connect through your proxy` / `Connection dropped`, each with an error code in parentheses | [Red](#unable-to-connect-to-api) |

94| `Unable to connect to Anthropic services` during setup | [Red](#unable-to-connect-to-anthropic-services) |103| `Unable to connect to Anthropic services` during setup | [Red](#unable-to-connect-to-anthropic-services) |

95| `Socket is closed` | [Red](#socket-is-closed) |104| `Socket is closed` | [Red](#socket-is-closed) |

96| `Waiting for API response · will retry in` | [Reintentos automáticos](#automatic-retries), o [Red](#unable-to-connect-to-api) si persiste |105| `Waiting for API response · will retry in` | [Reintentos automáticos](#automatic-retries), o [Red](#unable-to-connect-to-api) si persiste |


151| `Download timed out: exceeded the total deadline` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |160| `Download timed out: exceeded the total deadline` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |

152| `--bg and --print conflict` | [Errores de línea de comandos](#command-line-errors) |161| `--bg and --print conflict` | [Errores de línea de comandos](#command-line-errors) |

153| `Cloud sessions cannot be created from a --restricted session` | [Errores de línea de comandos](#cloud-sessions-cannot-be-created-from-a-restricted-session) |162| `Cloud sessions cannot be created from a --restricted session` | [Errores de línea de comandos](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

163| `Cloud sessions are disabled by your organization's policy` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |

164| `Couldn't verify your organization's policy for cloud sessions` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |

154| `Error: --json-schema is not a valid JSON Schema` | [Errores de línea de comandos](#command-line-errors) |165| `Error: --json-schema is not a valid JSON Schema` | [Errores de línea de comandos](#command-line-errors) |

155| `Error: Invalid --agents configuration:` | [Errores de línea de comandos](#invalid-agents-configuration) |166| `Error: Invalid --agents configuration:` | [Errores de línea de comandos](#invalid-agents-configuration) |

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


167| `Server rejected the Authorization header minted by the configured headersHelper` | [Errores de línea de comandos](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |178| `Server rejected the Authorization header minted by the configured headersHelper` | [Errores de línea de comandos](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |

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

169| `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) |180| `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) |

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

170| `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Errores de línea de comandos](#security-review-fails-without-origin-head) |182| `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Errores de línea de comandos](#security-review-fails-without-origin-head) |

171| `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Errores de línea de comandos](#security-review-fails-without-origin-head) |183| `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Errores de línea de comandos](#security-review-fails-without-origin-head) |

172| ``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) |184| ``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) |


181| `Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Errores de línea de comandos](#no-github-account-is-connected-to-your-claude-account) |193| `Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Errores de línea de comandos](#no-github-account-is-connected-to-your-claude-account) |

182| `Your connected GitHub account can't see <owner>/<repo>` | [Errores de línea de comandos](#your-connected-github-account-cant-see-the-repository) |194| `Your connected GitHub account can't see <owner>/<repo>` | [Errores de línea de comandos](#your-connected-github-account-cant-see-the-repository) |

183| `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Errores de línea de comandos](#the-github-app-preflight-failed-transiently) |195| `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Errores de línea de comandos](#the-github-app-preflight-failed-transiently) |

196| `GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud` | [Errores de línea de comandos](#github-isnt-connected-to-your-claude-account) |

197| `Single sign-on authorization needed` | [Errores de línea de comandos](#single-sign-on-authorization-needed) |

184| `Failed to resume the conversation` | [Errores de línea de comandos](#failed-to-resume-the-conversation) |198| `Failed to resume the conversation` | [Errores de línea de comandos](#failed-to-resume-the-conversation) |

185| `No conversation found with session ID: <session-id>` | [Errores de línea de comandos](#no-conversation-found-with-the-session-id) |199| `No conversation found with session ID: <session-id>` | [Errores de línea de comandos](#no-conversation-found-with-the-session-id) |

186| `Cannot switch renderers in this session` | [Errores de línea de comandos](#cannot-switch-renderers-in-this-session) |200| `Cannot switch renderers in this session` | [Errores de línea de comandos](#cannot-switch-renderers-in-this-session) |


188| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |202| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |

189| `Your Zed keymap isn't a readable list of keybindings` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |203| `Your Zed keymap isn't a readable list of keybindings` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |

190| `Skill usage reports are not available on this connection.` | [Errores de línea de comandos](#skill-usage-reports-are-not-available-on-this-connection) |204| `Skill usage reports are not available on this connection.` | [Errores de línea de comandos](#skill-usage-reports-are-not-available-on-this-connection) |

205| `Custom output styles can't be selected over Remote Control or from a relayed message` | [Errores de línea de comandos](#custom-output-styles-cant-be-selected-over-remote-control) |

206| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Errores de línea de comandos](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |

191| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Errores de plugins](#plugin-eval-is-currently-in-early-access) |207| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Errores de plugins](#plugin-eval-is-currently-in-early-access) |

192| `Marketplace "<name>" is registered from an untrusted source` | [Errores de plugins](#marketplace-is-registered-from-an-untrusted-source) |208| `Marketplace "<name>" is registered from an untrusted source` | [Errores de plugins](#marketplace-is-registered-from-an-untrusted-source) |

193| `references ${user_config.*} in a shell-form command` | [Errores de plugins](#plugin-command-references-user-config) |209| `references ${user_config.*} in a shell-form command` | [Errores de plugins](#plugin-command-references-user-config) |


207| `pkill: refusing to run` | [Errores de herramientas](#pkill-pattern-matches-the-claude-code-process) |223| `pkill: refusing to run` | [Errores de herramientas](#pkill-pattern-matches-the-claude-code-process) |

208| `Failed to write to <name>'s inbox — nothing was sent` | [Errores de herramientas](#failed-to-write-to-a-teammate-inbox) |224| `Failed to write to <name>'s inbox — nothing was sent` | [Errores de herramientas](#failed-to-write-to-a-teammate-inbox) |

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

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

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

211| `Too many messages to this session just now` | [Errores de herramientas](#too-many-messages-to-this-session-just-now) |228| `Too many messages to this session just now` | [Errores de herramientas](#too-many-messages-to-this-session-just-now) |

212| `Refusing to send: reply target is a symlink` / `Refusing to send: cannot vet reply target` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |229| `Refusing to send: reply target is a symlink` / `Refusing to send: cannot vet reply target` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |

213| `Refusing to send: connected endpoint is not the expected process` / `Refusing to send: connected endpoint identity could not be read` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |230| `Refusing to send: connected endpoint is not the expected process` / `Refusing to send: connected endpoint identity could not be read` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |

214| `Refusing to send: connected endpoint is not owned by this user` / `Refusing to send: connected endpoint owner could not be read` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |231| `Refusing to send: connected endpoint is not owned by this user` / `Refusing to send: connected endpoint owner could not be read` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |

215| `Refusing to send: connected endpoint is a different process with the expected pid` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |232| `Refusing to send: connected endpoint is a different process with the expected pid` | [Errores de herramientas](#refusing-to-send-a-cross-session-message) |

216| `Refusing to read <path>: its symlink resolution changed after permission was checked` / `Refusing to search <path>: its symlink resolution changed after permission was checked` | [Errores de herramientas](#refusing-after-a-symlink-changed) |233| `Refusing to read <path>: its symlink resolution changed after permission was checked (<reason>)` / `Refusing to search <path>: its symlink resolution changed after permission was checked` | [Errores de herramientas](#refusing-after-a-symlink-changed) |

217| `Refusing to write <path>: its parent-directory symlink resolution changed after permission was checked` / `Refusing to write <path>: it is a symbolic link. Write to the link's target path instead` | [Errores de herramientas](#refusing-after-a-symlink-changed) |234| `Refusing to write <path>: its parent-directory symlink resolution changed after permission was checked` / `Refusing to write <path>: it is a symbolic link. Write to the link's target path instead` | [Errores de herramientas](#refusing-after-a-symlink-changed) |

235| `Refusing to write through symlink: <path>` / `Refusing to write into symlinked directory: <path>` | [Errores de herramientas](#refusing-after-a-symlink-changed) |

218| `Refusing to search <path>: a path one of its Read deny rules is written through changed while the search was being prepared` / `Refusing to search <path>: it could not be opened` | [Errores de herramientas](#refusing-after-a-symlink-changed) |236| `Refusing to search <path>: a path one of its Read deny rules is written through changed while the search was being prepared` / `Refusing to search <path>: it could not be opened` | [Errores de herramientas](#refusing-after-a-symlink-changed) |

219| `its permission check expired before it ran (too many concurrent file operations)` / `ripgrep was found only by name on PATH` | [Errores de herramientas](#refusing-after-a-symlink-changed) |237| `its permission check expired before it ran (too many concurrent file operations)` / `ripgrep was found only by name on PATH` | [Errores de herramientas](#refusing-after-a-symlink-changed) |

220| `task output swap refused (tasks dir moved or linked)` | [Errores de herramientas](#task-output-swap-refused) |238| `task output swap refused (tasks dir moved or linked)` | [Errores de herramientas](#task-output-swap-refused) |

221| `Command killed: its output file was replaced or could no longer be verified` | [Errores de herramientas](#task-output-swap-refused) |239| `Command killed: its output file was replaced or could no longer be verified` | [Errores de herramientas](#task-output-swap-refused) |

222| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Errores de herramientas](#the-source-file-is-not-valid-utf-8-text) |240| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Errores de herramientas](#the-source-file-is-not-valid-utf-8-text) |

223| `the source file has the replacement character U+FFFD` | [Errores de herramientas](#the-source-file-is-not-valid-utf-8-text) |241| `the source file has the replacement character U+FFFD` | [Errores de herramientas](#the-source-file-is-not-valid-utf-8-text) |

242| `Reading a local file from outside this session's connected folders, or through a link, needs the approval card` | [Errores de herramientas](#reading-a-local-file-from-outside-the-connected-folders) |

243| `cannot read file_path (...) — the file could not be examined, and no one can answer the approval card` | [Errores de herramientas](#reading-a-local-file-from-outside-the-connected-folders) |

244| `WebFetch cannot fetch localhost or other hostnames without a dot` | [Errores de herramientas](#webfetch-cannot-fetch-localhost) |

224| `Can't open MCP settings while no terminal is attached to this background session` | [Errores de sesión en segundo plano](#commands-refused-in-a-background-session) |245| `Can't open MCP settings while no terminal is attached to this background session` | [Errores de sesión en segundo plano](#commands-refused-in-a-background-session) |

225| `Can't open MCP settings in a background session` | [Errores de sesión en segundo plano](#commands-refused-in-a-background-session) |246| `Can't open MCP settings in a background session` | [Errores de sesión en segundo plano](#commands-refused-in-a-background-session) |

226| `blocked because the path is spelled in a form that cannot be safely resolved` | [Errores de sesión en segundo plano](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) |247| `blocked because the path is spelled in a form that cannot be safely resolved` | [Errores de sesión en segundo plano](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) |


229| `Can't open — this session is running in another terminal` | [Errores de sesión en segundo plano](#this-session-is-running-in-another-terminal) |250| `Can't open — this session is running in another terminal` | [Errores de sesión en segundo plano](#this-session-is-running-in-another-terminal) |

230| `This conversation is already open in another running Claude session` | [Errores de sesión en segundo plano](#this-session-is-running-in-another-terminal) |251| `This conversation is already open in another running Claude session` | [Errores de sesión en segundo plano](#this-session-is-running-in-another-terminal) |

231| `This session's saved conversation is no longer on disk` | [Errores de sesión en segundo plano](#this-sessions-saved-conversation-is-no-longer-on-disk) |252| `This session's saved conversation is no longer on disk` | [Errores de sesión en segundo plano](#this-sessions-saved-conversation-is-no-longer-on-disk) |

253| `kept <id> — its worktree is still at <path>` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |

232| `kept <id> — <n> unpushed commits on <branch>` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |254| `kept <id> — <n> unpushed commits on <branch>` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |

233| `kept <id> — worktree has commits that are not pushed anywhere` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |255| `kept <id> — worktree has commits that are not pushed anywhere` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |

234| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Errores de sesión en segundo plano](#terminal-host-process-died) |256| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Errores de sesión en segundo plano](#terminal-host-process-died) |


242| `Couldn't start a background session (working directory no longer exists or is not accessible: ...)` | [Errores de sesión en segundo plano](#working-directory-no-longer-exists-when-starting-a-background-session) |264| `Couldn't start a background session (working directory no longer exists or is not accessible: ...)` | [Errores de sesión en segundo plano](#working-directory-no-longer-exists-when-starting-a-background-session) |

243| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Errores de sesión en segundo plano](#eacces-when-starting-a-background-session) |265| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Errores de sesión en segundo plano](#eacces-when-starting-a-background-session) |

244| `Claude Code process exited with code N` | [Errores de contenedor e IDE](#claude-code-process-exited-with-code-n) |266| `Claude Code process exited with code N` | [Errores de contenedor e IDE](#claude-code-process-exited-with-code-n) |

267| `The connection to Claude Code ended before this message completed` | [Errores de contenedor e IDE](#the-connection-to-claude-code-ended-before-this-message-completed) |

245| `Could not locate the Claude CLI on PATH` | [Errores de contenedor e IDE](#could-not-locate-the-claude-cli-on-path) |268| `Could not locate the Claude CLI on PATH` | [Errores de contenedor e IDE](#could-not-locate-the-claude-cli-on-path) |

246| `Restored the code, but skipped N files` | [Advertencias y errores de Rewind](#restored-the-code-but-skipped-files) |269| `Restored the code, but skipped N files` | [Advertencias y errores de Rewind](#restored-the-code-but-skipped-files) |

247| `No files were restored: N files failed (backup missing, or the file could not be updated)` | [Advertencias y errores de Rewind](#no-files-were-restored) |270| `No files were restored: N files failed (backup missing, or the file could not be updated)` | [Advertencias y errores de Rewind](#no-files-were-restored) |


325Puede ajustar el comportamiento de reintentos con estas variables de entorno:348Puede ajustar el comportamiento de reintentos con estas variables de entorno:

326 349 

327| Variable | Predeterminado | Efecto |350| Variable | Predeterminado | Efecto |

328| :---------------------------------------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |351| :---------------------------------------------------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

329| [`CLAUDE_CODE_MAX_RETRIES`](/docs/es/env-vars) | 10 | Número de intentos de reintento. Limitado a 15 a partir de v2.1.186; a partir de v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el predeterminado y elimina el límite. Redúzcalo para que los fallos aparezcan más rápido en scripts. |352| [`CLAUDE_CODE_MAX_RETRIES`](/docs/es/env-vars) | 10 | Número de intentos de reintento. Limitado a 15 a partir de v2.1.186; a partir de v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el predeterminado y elimina el límite. Redúzcalo para que los fallos aparezcan más rápido en scripts. |

330| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars) | sin establecer | Establézcalo en `1` en sesiones desatendidas como trabajos de CI para reintentar errores de capacidad `429` y `529` indefinidamente en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato en un `429` que reporta un límite de gasto o créditos de uso agotados, incluso uno de un [límite de gasto de puerta de enlace](#spend-limit-reached) que se reinicia en un horario. Antes de v2.1.239, el vigilante reintentaba estos indefinidamente. En v2.1.199 o posterior, también aumenta el recuento de reintentos predeterminado para otros errores transitorios, como errores del servidor, tiempos de espera y conexiones perdidas, a 300, aproximadamente tres horas de retroceso, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si establece esa variable explícitamente. |353| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars) | sin establecer | Establézcalo en `1` en sesiones desatendidas como trabajos de CI para reintentar errores de capacidad `429` y `529` indefinidamente en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato en un `429` que reporta un límite de gasto o créditos de uso agotados, incluso uno de un [límite de gasto de puerta de enlace](#spend-limit-reached) que se reinicia en un horario. Antes de v2.1.239, el vigilante reintentaba estos indefinidamente. Para solicitudes de modo rápido, vea [Handle rate limits](/docs/es/fast-mode#handle-rate-limits). En v2.1.199 o posterior, también aumenta el recuento de reintentos predeterminado para otros errores transitorios, como errores del servidor, tiempos de espera y conexiones perdidas, a 300, aproximadamente tres horas de retroceso, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si establece esa variable explícitamente. |

331| [`API_TIMEOUT_MS`](/docs/es/env-vars) | 600000 | Tiempo de espera por solicitud en milisegundos. Aumente para redes lentas o proxies. También limita cuánto tiempo Claude Code espera los encabezados de respuesta, descrito en [No response from API](#no-response-from-api). |354| [`API_TIMEOUT_MS`](/docs/es/env-vars) | 600000 | Tiempo de espera por solicitud en milisegundos. Aumente para redes lentas o proxies. También limita cuánto tiempo Claude Code espera los encabezados de respuesta, descrito en [No response from API](#no-response-from-api). |

332| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/es/env-vars) | sin establecer | Plazo en milisegundos para el primer byte de respuesta de una solicitud de transmisión. Requiere Claude Code v2.1.242 o posterior. Para cómo Claude Code elige el plazo cuando esto no está establecido, vea [No response from API](#no-response-from-api). |355| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/es/env-vars) | sin establecer | Plazo en milisegundos para el primer byte de respuesta de una solicitud de transmisión. Requiere Claude Code v2.1.242 o posterior. Para cómo Claude Code elige el plazo cuando esto no está establecido, vea [No response from API](#no-response-from-api). |

333 356 


591El modelo seleccionado utiliza la ventana de contexto extendida de 1M tokens, y su plan solo la incluye a través de créditos de uso.614El modelo seleccionado utiliza la ventana de contexto extendida de 1M tokens, y su plan solo la incluye a través de créditos de uso.

592 615 

593```text theme={null}616```text theme={null}

594API Error: Usage credits required for 1M context · run /usage-credits to turn them on, or /model to switch to standard context617API Error: Usage credits required for 1M context · run /usage-credits to turn them on (they take effect after you restart Claude Code), or /model to switch to standard context

595```618```

596 619 

597Esta es una verificación de derechos, no un agotamiento de cuota. Se activa incluso cuando sus asignaciones de sesión y semanales tienen capacidad restante. Consulte [Extended context](/docs/es/model-config#extended-context) para ver qué planes incluyen contexto de 1M directamente y cuáles requieren créditos de uso. Claude Code ejecuta esta verificación cuando elige el modelo con `/model`, y solo en una conexión directa a la API de Anthropic; si apunta `ANTHROPIC_BASE_URL` a una [puerta de enlace LLM](/docs/es/llm-gateway), `/model` permite la selección `[1m]` y la puerta de enlace decide si la solicitud tiene éxito.620Esta es una verificación de derechos, no un agotamiento de cuota. Se activa incluso cuando sus asignaciones de sesión y semanales tienen capacidad restante. Consulte [Extended context](/docs/es/model-config#extended-context) para ver qué planes incluyen contexto de 1M directamente y cuáles requieren créditos de uso. Claude Code ejecuta esta verificación cuando elige el modelo con `/model`, y solo en una conexión directa a la API de Anthropic; si apunta `ANTHROPIC_BASE_URL` a una [puerta de enlace LLM](/docs/es/llm-gateway), `/model` permite la selección `[1m]` y la puerta de enlace decide si la solicitud tiene éxito.


601**Qué hacer:**624**Qué hacer:**

602 625 

603* Ejecute `/model` y seleccione la variante sin el sufijo `[1m]` para volver a la ventana de contexto estándar626* Ejecute `/model` y seleccione la variante sin el sufijo `[1m]` para volver a la ventana de contexto estándar

604* Donde el mensaje menciona `/usage-credits`, ejecútelo para activar la facturación medida para la variante de 1M en Pro y Max, o para solicitar créditos de uso a su administrador en Team y Enterprise627* Donde el mensaje menciona `/usage-credits`, ejecútelo para activar la facturación medida para la variante de 1M en Pro y Max, o para solicitar créditos de uso a su administrador en Team y Enterprise. Reinicie Claude Code una vez que los créditos de uso estén activados. Hasta que reinicie, la sesión permanece en el límite de contexto estándar.

605* Si el error persiste después de `/model`, un ID de modelo de 1M puede estar configurado en otro lugar. Consulte [Setting your model](/docs/es/model-config#setting-your-model) para ver las ubicaciones de configuración a verificar en orden de prioridad.628* Si el error persiste después de `/model`, un ID de modelo de 1M puede estar configurado en otro lugar. Consulte [Setting your model](/docs/es/model-config#setting-your-model) para ver las ubicaciones de configuración a verificar en orden de prioridad.

606* Para eliminar variantes de 1M del selector de modelo por completo, establezca [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/es/env-vars)629* Para eliminar variantes de 1M del selector de modelo por completo, establezca [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/es/env-vars)

607 630 

631Antes de v2.1.268, el mensaje terminaba con `run /usage-credits to turn them on, or /model to switch to standard context` y no mencionaba reiniciar.

632 

608<h3 id="the-prompt-to-confirm-went-unanswered">633<h3 id="the-prompt-to-confirm-went-unanswered">

609 The prompt to confirm went unanswered634 The prompt to confirm went unanswered

610</h3>635</h3>


971 996 

972* Una variable de proveedor `CLAUDE_CODE_USE_*`, como `CLAUDE_CODE_USE_BEDROCK` para [Amazon Bedrock](/docs/es/amazon-bedrock) o `CLAUDE_CODE_USE_VERTEX` para [Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai)997* Una variable de proveedor `CLAUDE_CODE_USE_*`, como `CLAUDE_CODE_USE_BEDROCK` para [Amazon Bedrock](/docs/es/amazon-bedrock) o `CLAUDE_CODE_USE_VERTEX` para [Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai)

973* [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apuntando a un host que no sea `api.anthropic.com`, como una [puerta de enlace LLM](/docs/es/llm-gateway) o proxy, incluso cuando inicia sesión con claude.ai; antes de v2.1.196, una URL base personalizada no bloqueaba Remote Control998* [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apuntando a un host que no sea `api.anthropic.com`, como una [puerta de enlace LLM](/docs/es/llm-gateway) o proxy, incluso cuando inicia sesión con claude.ai; antes de v2.1.196, una URL base personalizada no bloqueaba Remote Control

999* `ANTHROPIC_UNIX_SOCKET` configurado, por lo que la sesión envía sus solicitudes a través de un socket local en lugar de a `api.anthropic.com`

974* Un inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway) empresarial realizado a través de `/login`, que no admite Remote Control y no tiene ninguna variable para desconfigurar1000* Un inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway) empresarial realizado a través de `/login`, que no admite Remote Control y no tiene ninguna variable para desconfigurar

975 1001 

976**Qué hacer:**1002**Qué hacer:**


1125* En modo no interactivo, ejecute `claude` en el mismo entorno, complete `/login`, luego reejecutar su comando. Para automatización que no puede iniciar sesión interactivamente, autentíquese con `ANTHROPIC_API_KEY` o [genere un token de larga duración con `claude setup-token`](/docs/es/authentication#generate-a-long-lived-token).1151* En modo no interactivo, ejecute `claude` en el mismo entorno, complete `/login`, luego reejecutar su comando. Para automatización que no puede iniciar sesión interactivamente, autentíquese con `ANTHROPIC_API_KEY` o [genere un token de larga duración con `claude setup-token`](/docs/es/authentication#generate-a-long-lived-token).

1126* Si iniciar sesión sigue fallando, consulte [Inicio de sesión y autenticación](/docs/es/troubleshoot-install#login-and-authentication)1152* Si iniciar sesión sigue fallando, consulte [Inicio de sesión y autenticación](/docs/es/troubleshoot-install#login-and-authentication)

1127 1153 

1154<h3 id="claude-login-not-accepted">

1155 Inicio de sesión de Claude no aceptado

1156</h3>

1157 

1158Intentó iniciar una [sesión en la nube](/docs/es/claude-code-on-the-web), y el servidor rechazó crearla con un 401: no aceptó el inicio de sesión de Claude que esta máquina envió, generalmente porque el inicio de sesión expiró o fue revocado.

1159 

1160La primera parte de la línea es la razón propia del servidor cuando da una. De lo contrario, la línea se lee:

1161 

1162```text theme={null}

1163Claude login not accepted · Run /login, then try again

1164```

1165 

1166**Qué hacer:**

1167 

1168* Ejecute `/login`, complete el inicio de sesión, luego inicie la sesión nuevamente

1169 

1128<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">1170<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">

1129 La política del administrador requiere un inicio de sesión de puerta de enlace en la nube1171 La política del administrador requiere un inicio de sesión de puerta de enlace en la nube

1130</h3>1172</h3>


1229 1271 

1230Antes de v2.1.222, Claude Code marcaba el conector como necesitando autenticación en su lugar, lo que lo señalaba al flujo de autorización del conector incluso aunque completarlo no resolviera el estado.1272Antes de v2.1.222, Claude Code marcaba el conector como necesitando autenticación en su lugar, lo que lo señalaba al flujo de autorización del conector incluso aunque completarlo no resolviera el estado.

1231 1273 

1274<h3 id="mcp-server-needs-you-to-sign-in-again">

1275 El servidor MCP necesita que inicie sesión nuevamente

1276</h3>

1277 

1278Un [servidor MCP](/docs/es/mcp) remoto rechazó la credencial en una llamada de herramienta a mitad de sesión, generalmente porque un inicio de sesión o token expiró o porque el token carece de un permiso que la herramienta necesita. La llamada de herramienta falla, y `/mcp` marca el servidor como [necesitando autenticación](/docs/es/mcp#authenticate-with-remote-mcp-servers).

1279 

1280Para un servidor en el que inicia sesión desde Claude Code, incluyendo un conector de claude.ai, el inicio de sesión expiró o fue revocado:

1281 

1282```text theme={null}

1283MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)

1284```

1285 

1286Ejecute `/mcp`, seleccione el servidor, e inicie sesión nuevamente desde su menú.

1287 

1288Para un servidor configurado con un script [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication), Claude Code ya ha vuelto a ejecutar el helper e intentado la llamada una vez antes de mostrar esto:

1289 

1290```text theme={null}

1291MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)

1292```

1293 

1294Verifique que el helper devuelva una credencial que el servidor acepte, luego reconecte desde `/mcp`, que ejecuta el helper nuevamente.

1295 

1296Para un servidor con un encabezado `Authorization` estático en su configuración:

1297 

1298```text theme={null}

1299MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)

1300```

1301 

1302Actualice el valor del encabezado donde el servidor está configurado, luego reconecte desde `/mcp`.

1303 

1304Antes de v2.1.273, los tres casos mostraban `MCP server "<name>" requires re-authorization (token expired)`.

1305 

1306Un servidor también puede rechazar una llamada de herramienta con HTTP 403 `insufficient_scope` para pedirle que autorice un alcance, a veces uno que su token ya enumera. El mensaje nombra ese alcance:

1307 

1308```text theme={null}

1309MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate

1310```

1311 

1312Ejecute `/mcp`, seleccione el servidor, y autentíquese nuevamente desde su menú.

1313 

1314Cuando la configuración del servidor no establece ni [`oauth.scopes`](/docs/es/mcp#restrict-oauth-scopes) ni [`authServerMetadataUrl`](/docs/es/mcp#override-oauth-metadata-discovery), Claude Code solicita el alcance que el servidor nombró. Con cualquiera de las dos configuraciones, Claude Code solicita los alcances de esa configuración en su lugar. Si fijó `oauth.scopes`, agregue el alcance faltante a esa lista antes de autenticarse nuevamente.

1315 

1316Antes de v2.1.274, este caso mostraba el mensaje `needs you to sign in again`, y antes de v2.1.273 mostraba `requires re-authorization (token expired)` como los otros casos.

1317 

1232<h3 id="issuer-mismatch-in-authorization-response">1318<h3 id="issuer-mismatch-in-authorization-response">

1233 Desajuste del emisor en la respuesta de autorización1319 Desajuste del emisor en la respuesta de autorización

1234</h3>1320</h3>


1253 Credenciales de AWS expiradas o inválidas1339 Credenciales de AWS expiradas o inválidas

1254</h3>1340</h3>

1255 1341 

1256Este mensaje requiere Claude Code v2.1.198 o posterior y solo aparece cuando [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) está configurado en su archivo de configuración. Su token de sesión de AWS expiró o fue rechazado, y la actualización automática que Claude Code ya ejecutó no produjo una credencial que la API acepte. Aparece en un 401 de [Claude Platform en AWS](/docs/es/claude-platform-on-aws) o el [punto final de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint), que es cómo esos proveedores informan un token de seguridad expirado.1342Su token de sesión de AWS expiró o fue rechazado. Este mensaje aparece en un 401 de [Claude Platform en AWS](/docs/es/claude-platform-on-aws) o el [punto final de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint), que es cómo esos proveedores informan un token de seguridad expirado.

1257 1343 

1258La sugerencia de acción en el medio nombra el comando `awsAuthRefresh` de su configuración, por lo que varía. La parte estable es el `AWS credentials expired or invalid` inicial:1344La sugerencia de acción en el medio varía con su configuración. La parte estable es el `AWS credentials expired or invalid` inicial:

1259 1345 

1260```text theme={null}1346```text theme={null}

1261AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...1347AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...

1262```1348```

1263 1349 

1264Sin `awsAuthRefresh` configurado, el mismo 401 muestra el mensaje genérico `Please run /login` en su lugar, que no puede actualizar credenciales de AWS.1350Antes de v2.1.273, este mensaje aparecía solo cuando `awsAuthRefresh` estaba configurado.

1265 1351 

1266**Qué hacer:**1352**Qué hacer:**

1267 1353 

1268* Ejecute el comando `awsAuthRefresh` nombrado en el mensaje, como `aws sso login --profile myprofile`, en otra terminal y complete el inicio de sesión del navegador, luego reintente1354* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code posee la credencial y los otros pasos aquí no se aplican: reintente, o contacte a su administrador

1269* En una sesión interactiva, ejecute `/login`, elija **3rd-party platform**, luego seleccione **Claude Platform on AWS · refresh credentials** en **Using 3rd-party platforms** para ejecutar el mismo comando sin reiniciar Claude Code. Consulte [Configurar credenciales de AWS](/docs/es/claude-platform-on-aws#1-configure-aws-credentials)1355* Si [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) está configurado, ejecute el comando nombrado en el mensaje, como `aws sso login --profile myprofile`, en otra terminal y complete el inicio de sesión del navegador, luego reintente. De lo contrario, actualice la credencial de AWS que usa usted mismo: su inicio de sesión SSO, claves de acceso, clave API, o token de proxy

1356* Con `awsAuthRefresh` configurado en una sesión interactiva, puede ejecutar `/login`, elegir **3rd-party platform**, luego seleccionar **Claude Platform on AWS · refresh credentials** en **Using 3rd-party platforms** para ejecutar el mismo comando sin reiniciar Claude Code. Consulte [Configurar credenciales de AWS](/docs/es/claude-platform-on-aws#1-configure-aws-credentials)

1270* Si el error se repite después de que el comando de actualización tenga éxito, confirme que la identidad es válida fuera de Claude Code con `aws sts get-caller-identity` en el mismo shell y perfil1357* Si el error se repite después de que el comando de actualización tenga éxito, confirme que la identidad es válida fuera de Claude Code con `aws sts get-caller-identity` en el mismo shell y perfil

1271 1358 

1272<h3 id="aws-authentication-failed">1359<h3 id="aws-authentication-failed">

1273 Falló la autenticación de AWS1360 Falló la autenticación de AWS

1274</h3>1361</h3>

1275 1362 

1276Este mensaje requiere Claude Code v2.1.198 o posterior y solo aparece cuando [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) está configurado en su archivo de configuración. Su proveedor de AWS devolvió un 403, o [Amazon Bedrock](/docs/es/amazon-bedrock) devolvió un 401.1363Su proveedor de AWS devolvió un 403, o [Amazon Bedrock](/docs/es/amazon-bedrock) devolvió un 401.

1277 1364 

1278Claude Code no puede decir cuál causa golpeó. Amazon Bedrock informa un token de seguridad expirado como un 403, pero un 403 también es cómo informa una denegación de autorización, como un `AccessDeniedException` de un permiso de IAM faltante o un modelo que no está habilitado para su cuenta.1365Amazon Bedrock informa un token de seguridad expirado como un 403, pero un 403 también es cómo informa una denegación de autorización, como un `AccessDeniedException` de un permiso de IAM faltante. Claude Code no puede distinguir esas dos causas.

1279 1366 

1280Un 401 de Amazon Bedrock también llega aquí en lugar de bajo [Credenciales de AWS expiradas o inválidas](#aws-credentials-expired-or-invalid), porque Amazon Bedrock no informa un token expirado como un 401. Un 401 de ese punto final típicamente proviene de algo más en la ruta de solicitud, como un proxy corporativo.1367Un 401 de Amazon Bedrock también llega aquí en lugar de bajo [Credenciales de AWS expiradas o inválidas](#aws-credentials-expired-or-invalid), porque Amazon Bedrock no informa un token expirado como un 401. Un 401 de ese punto final típicamente proviene de algo más en la ruta de solicitud, como un proxy corporativo.

1281 1368 


1285AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...1372AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...

1286```1373```

1287 1374 

1288La sugerencia de acción en el medio nombra el comando `awsAuthRefresh` de su configuración, por lo que varía. La parte estable es el `AWS authentication failed` inicial.1375La sugerencia de acción en el medio varía con su configuración. La parte estable es el `AWS authentication failed` inicial.

1376 

1377Cuando el 403 es la respuesta de Amazon Bedrock de que no tiene acceso al modelo con el ID de modelo especificado, la sugerencia en su lugar le dice que habilite el modelo para su cuenta y región en la consola de Amazon Bedrock.

1378 

1379Antes de v2.1.273, este mensaje aparecía solo cuando `awsAuthRefresh` estaba configurado.

1289 1380 

1290**Qué hacer:**1381**Qué hacer:**

1291 1382 

1292* Ejecute el comando `awsAuthRefresh` nombrado en el mensaje, o `aws sso login`, en caso de que una credencial expirada sea la causa1383* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code posee la credencial y los otros pasos aquí no se aplican: reintente, o contacte a su administrador

1384* Actualice sus credenciales de AWS en caso de que una credencial expirada sea la causa: ejecute el comando [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) nombrado en el mensaje cuando uno esté configurado, o actualice su inicio de sesión SSO, claves de acceso, clave API, o token de proxy usted mismo

1293* Si sus credenciales son actuales, confirme que los permisos de IAM en [Configuración de IAM](/docs/es/amazon-bedrock#iam-configuration) están adjuntos a la identidad que está usando y que el modelo seleccionado está habilitado para su cuenta y región1385* Si sus credenciales son actuales, confirme que los permisos de IAM en [Configuración de IAM](/docs/es/amazon-bedrock#iam-configuration) están adjuntos a la identidad que está usando y que el modelo seleccionado está habilitado para su cuenta y región

1294* Ejecute `aws sts get-caller-identity` para confirmar qué identidad usan sus solicitudes; un `AWS_PROFILE` obsoleto o perfil predeterminado es una causa común de una desajuste de permisos1386* Ejecute `aws sts get-caller-identity` para confirmar qué identidad usan sus solicitudes; un `AWS_PROFILE` obsoleto o perfil predeterminado es una causa común de una desajuste de permisos

1295 1387 

1388<h3 id="google-cloud-credentials-expired-or-invalid">

1389 Credenciales de Google Cloud expiradas o inválidas

1390</h3>

1391 

1392Sus credenciales de Google Cloud para [Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai) expiraron o fueron rechazadas: la solicitud devolvió un 401, que es cómo la Plataforma de Agentes informa la expiración de credenciales.

1393 

1394La sugerencia de acción en el medio varía con su configuración. La parte estable es el `Google Cloud credentials expired or invalid` inicial:

1395 

1396```text theme={null}

1397Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...

1398```

1399 

1400**Qué hacer:**

1401 

1402* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code posee la credencial y los otros pasos aquí no se aplican: reintente, o contacte a su administrador

1403* Si se autentica con credenciales predeterminadas de aplicación, ejecute el comando [`gcpAuthRefresh`](/docs/es/google-vertex-ai#advanced-credential-configuration) nombrado en el mensaje, o `gcloud auth application-default login`, y complete el inicio de sesión, luego reintente

1404* Si enruta a través de una [puerta de enlace LLM](/docs/es/llm-gateway) con `CLAUDE_CODE_SKIP_VERTEX_AUTH` configurado, actualice el token de puerta de enlace en `ANTHROPIC_AUTH_TOKEN` o `ANTHROPIC_CUSTOM_HEADERS`, luego reintente

1405* Si se autentica con un archivo de clave de cuenta de servicio, confirme que `GOOGLE_APPLICATION_CREDENTIALS` apunta a una clave válida. Consulte [Configurar credenciales de GCP](/docs/es/google-vertex-ai#3-configure-gcp-credentials)

1406* Si el error se repite después de una actualización, confirme que la identidad funciona fuera de Claude Code con `gcloud auth application-default print-access-token` en el mismo shell

1407 

1408Antes de v2.1.273, un 401 de la Plataforma de Agentes mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, que no puede actualizar credenciales de Google Cloud.

1409 

1410<h3 id="google-cloud-authentication-failed">

1411 Falló la autenticación de Google Cloud

1412</h3>

1413 

1414[Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai) devolvió un 403, que usa para denegaciones de autorización en lugar de credenciales expiradas. Generalmente, la identidad con la que se autentica carece de un permiso de IAM, o el modelo no está habilitado para su proyecto.

1415 

1416La sugerencia de acción en el medio varía con su configuración. La parte estable es el `Google Cloud authentication failed` inicial:

1417 

1418```text theme={null}

1419Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...

1420```

1421 

1422**Qué hacer:**

1423 

1424* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code posee la credencial y los otros pasos aquí no se aplican: reintente, o contacte a su administrador

1425* Confirme que los roles en [Configuración de IAM](/docs/es/google-vertex-ai#iam-configuration) se otorgan a la identidad con la que se autentica

1426* Confirme que el modelo está habilitado para su proyecto. Consulte [Solicitar acceso al modelo](/docs/es/google-vertex-ai#2-request-model-access)

1427 

1428Antes de v2.1.273, un 403 de la Plataforma de Agentes mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, que no puede actualizar credenciales de Google Cloud.

1429 

1430<h3 id="microsoft-foundry-authentication-failed">

1431 Falló la autenticación de Microsoft Foundry

1432</h3>

1433 

1434[Microsoft Foundry](/docs/es/microsoft-foundry) devolvió un 401 o 403: la credencial de Azure en la solicitud fue rechazada, o la identidad detrás de ella no tiene acceso al recurso de Foundry. `/login` no puede acuñar credenciales de Azure. La sugerencia de acción en el medio varía con su configuración. La parte estable es el `Microsoft Foundry authentication failed` inicial:

1435 

1436```text theme={null}

1437Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...

1438```

1439 

1440**Qué hacer:**

1441 

1442* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code posee la credencial y los otros pasos aquí no se aplican: reintente, o contacte a su administrador

1443* Actualice la credencial que configuró en [Configurar credenciales de Azure](/docs/es/microsoft-foundry#2-configure-azure-credentials): rote `ANTHROPIC_FOUNDRY_API_KEY`, acuñe un nuevo `ANTHROPIC_FOUNDRY_AUTH_TOKEN`, o ejecute `az login` para que la cadena de credenciales predeterminada de Microsoft Entra pueda iniciar sesión nuevamente

1444* Si la credencial es actual, confirme que la identidad tiene acceso al recurso de Foundry. Consulte [Configuración de RBAC de Azure](/docs/es/microsoft-foundry#azure-rbac-configuration)

1445 

1446Antes de v2.1.273, un 401 o 403 de Microsoft Foundry mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, que no puede actualizar credenciales de Azure.

1447 

1296<h3 id="could-not-load-aws-or-google-cloud-credentials">1448<h3 id="could-not-load-aws-or-google-cloud-credentials">

1297 No se pudieron cargar las credenciales de AWS o Google Cloud1449 No se pudieron cargar las credenciales de AWS o Google Cloud

1298</h3>1450</h3>


1383* Ejecute `/login` en la sesión y complete el inicio de sesión del navegador1535* Ejecute `/login` en la sesión y complete el inicio de sesión del navegador

1384* Para un lanzamiento no interactivo, inicie `claude` en el mismo entorno, ejecute `/login`, luego reejecutar su comando1536* Para un lanzamiento no interactivo, inicie `claude` en el mismo entorno, ejecute `/login`, luego reejecutar su comando

1385 1537 

1538<h3 id="gateway-refused-the-request">

1539 La puerta de enlace rechazó la solicitud

1540</h3>

1541 

1542Está conectado a través de una [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway), y una solicitud devolvió un 403: la puerta de enlace, o la ascendente detrás de ella, la rechazó. Iniciar sesión nuevamente no cambia un rechazo, por lo que el mensaje señala a su administrador de puerta de enlace:

1543 

1544```text theme={null}

1545Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...

1546```

1547 

1548**Qué hacer:**

1549 

1550* Pida a su administrador de puerta de enlace que busque la solicitud. La cola `API Error:` lleva el rechazo que la puerta de enlace devolvió

1551* Para administradores: una [regla de control de acceso](/docs/es/claude-apps-gateway-config#http-tuning) en la puerta de enlace devuelve un 403 que el [registro de auditoría](/docs/es/claude-apps-gateway-deploy#logs) registra con su razón, y una denegación de autorización ascendente pasa a través de por [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages)

1552 

1553Antes de v2.1.273, un 403 en una sesión de puerta de enlace mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, e iniciar sesión nuevamente no borraba el rechazo.

1554 

1386<h2 id="network-and-connection-errors">1555<h2 id="network-and-connection-errors">

1387 Errores de red y conexión1556 Errores de red y conexión

1388</h2>1557</h2>


1400Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)1569Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)

1401Can't reach the API server — check your internet or DNS (ENOTFOUND)1570Can't reach the API server — check your internet or DNS (ENOTFOUND)

1402No internet route — check your connection or VPN (EHOSTUNREACH)1571No internet route — check your connection or VPN (EHOSTUNREACH)

1403Couldn't connect through your proxy (ERR_PROXY_TUNNEL)1572Couldn't connect through your proxy (ERR_PROXY_TUNNEL) — the proxy refused the tunnel: check its credentials and that it allows this host

1404Connection dropped (ECONNRESET)1573Connection dropped (ECONNRESET)

1405fetch failed1574fetch failed

1406Request timed out. Check your internet connection and proxy settings1575Request timed out. Check your internet connection and proxy settings


1482 1651 

1483Antes de v2.1.234, el mensaje terminaba después de `intercepting the request`.1652Antes de v2.1.234, el mensaje terminaba después de `intercepting the request`.

1484 1653 

1654Antes de v2.1.271, una respuesta que llevaba un mensaje de API válido bajo un tipo de contenido que no es JSON como `text/plain` también terminaba el turno con este error. Algunas puertas de enlace LLM usan ese tipo de contenido para la respuesta sin transmisión.

1655 

1485**Qué hacer:**1656**Qué hacer:**

1486 1657 

1487* Lea la cláusula `Response:` para ver qué sistema respondió. Un cuerpo HTML, sin id de solicitud de Anthropic, o un servidor nombrado como `nginx` o `cloudflare` significa que algo entre Claude Code y la API respondió en su lugar1658* Lea la cláusula `Response:` para ver qué sistema respondió. Un cuerpo HTML, sin id de solicitud de Anthropic, o un servidor nombrado como `nginx` o `cloudflare` significa que algo entre Claude Code y la API respondió en su lugar


1530Un proxy o dispositivo de seguridad en su red está interceptando el tráfico TLS con su propio certificado, y Claude Code no lo confía.1701Un proxy o dispositivo de seguridad en su red está interceptando el tráfico TLS con su propio certificado, y Claude Code no lo confía.

1531 1702 

1532```text theme={null}1703```text theme={null}

1533Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates1704Unable to connect to API: SSL certificate verification failed (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). The certificate comes from an authority Claude Code doesn't trust, usually a TLS-inspecting corporate proxy or a gateway signed by a private CA: set NODE_EXTRA_CA_CERTS to that CA bundle, or add it to the system certificate store · see https://code.claude.com/docs/en/network-config

1534Unable to connect to API: Self-signed certificate detected. Check your proxy or corporate SSL certificates1705Unable to connect to API: Self-signed certificate detected (SELF_SIGNED_CERT_IN_CHAIN). The certificate comes from an authority Claude Code doesn't trust, usually a TLS-inspecting corporate proxy or a gateway signed by a private CA: set NODE_EXTRA_CA_CERTS to that CA bundle, or add it to the system certificate store · see https://code.claude.com/docs/en/network-config

1535```1706```

1536 1707 

1708Antes de v2.1.273, ambos mensajes terminaban en `Check your proxy or corporate SSL certificates`, sin el código OpenSSL o la sugerencia `NODE_EXTRA_CA_CERTS`.

1709 

1537A partir de v2.1.199, un fallo de validación de certificado no se reintenta, por lo que este error aparece en el primer intento en lugar de después del [presupuesto de reintento](#automatic-retries) completo. Las versiones anteriores pasaban unos minutos reintentando antes de mostrarlo. Las condiciones TLS transitorias, como un tiempo de espera de protocolo de enlace, aún se reintentan.1710A partir de v2.1.199, un fallo de validación de certificado no se reintenta, por lo que este error aparece en el primer intento en lugar de después del [presupuesto de reintento](#automatic-retries) completo. Las versiones anteriores pasaban unos minutos reintentando antes de mostrarlo. Las condiciones TLS transitorias, como un tiempo de espera de protocolo de enlace, aún se reintentan.

1538 1711 

1539Durante `/login` y la verificación de conectividad de inicio, el mismo fallo se informa con el código OpenSSL y la corrección en línea:1712Durante `/login` y la verificación de conectividad de inicio, el mismo fallo produce un mensaje diferente:

1540 1713 

1541```text theme={null}1714```text theme={null}

1542SSL certificate error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run `claude doctor` for details.1715SSL certificate error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run `claude doctor` for details.


1714 1887 

1715Resuelva el error nombrado primero; `/compact` falla en el mismo error hasta que lo haga. Antes de v2.1.229, una compactación automática fallida mostraba `Prompt is too long` sin la causa.1888Resuelva el error nombrado primero; `/compact` falla en el mismo error hasta que lo haga. Antes de v2.1.229, una compactación automática fallida mostraba `Prompt is too long` sin la causa.

1716 1889 

1890Cuando la compactación automática se ejecuta en este error, normalmente resume sus intercambios más antiguos y mantiene los más nuevos. Como último recurso, Claude Code resume de manera diferente:

1891 

1892* Cuando no puede resumir ningún intercambio completo, Claude Code mantiene su mensaje más reciente palabra por palabra y resume todo lo anterior.

1893* En ese caso, cuando la conversación no termina con su mensaje, Claude Code resume toda la conversación en su lugar.

1894 

1895Claude Code omite esta recuperación cuando el contenido que llevaría adelante no contiene respuesta del modelo y menos de aproximadamente 1.000 tokens de su propio texto, como un reintento corto enviado después de un pegado de tamaño excesivo. Ejecute `/clear` para comenzar de nuevo. Antes de v2.1.269, la compactación fallaba siempre que no pudiera resumir un intercambio completo, por lo que una sesión en ese estado golpeaba este error de nuevo en cada turno.

1896 

1717Una conversación de un solo intercambio no tiene turnos anteriores para resumir. Cuando la compactación automática se habría ejecutado en uno, Claude Code omite el intento y explica qué llena la solicitud en su lugar. Cuando la API no reporta conteos de tokens en su error, el mensaje dice:1897Una conversación de un solo intercambio no tiene turnos anteriores para resumir. Cuando la compactación automática se habría ejecutado en uno, Claude Code omite el intento y explica qué llena la solicitud en su lugar. Cuando la API no reporta conteos de tokens en su error, el mensaje dice:

1718 1898 

1719```text theme={null}1899```text theme={null}


1736 1916 

1737**Qué hacer:**1917**Qué hacer:**

1738 1918 

1739* En una conversación de múltiples turnos, ejecute `/compact` para resumir turnos anteriores y liberar espacio, o `/clear` para comenzar de nuevo. Una conversación de un solo intercambio no se puede compactar, así que reduzca la solicitud en su lugar1919* Ejecute `/compact` para resumir turnos anteriores y liberar espacio, o `/clear` para comenzar de nuevo. Si `/compact` responde `Not enough messages to compact.`, la conversación es un solo intercambio sin nada anterior para resumir, por lo que el espacio está ocupado por ese único mensaje y lo que Claude Code envía con cada solicitud: ejecute `/clear` y reenvíe con menos texto pegado o adjuntos más pequeños, o reduzca las definiciones de herramientas y archivos de memoria usando los pasos a continuación

1740* Ejecute `/context` para ver un desglose de lo que está consumiendo la ventana: prompt del sistema, herramientas, archivos de memoria y mensajes1920* Ejecute `/context` para ver un desglose de lo que está consumiendo la ventana: prompt del sistema, herramientas, archivos de memoria y mensajes

1741* Desactive los servidores MCP que no está utilizando con `/mcp disable <name>` para eliminar sus definiciones de herramientas del contexto1921* Desactive los servidores MCP que no está utilizando con `/mcp disable <name>` para eliminar sus definiciones de herramientas del contexto

1742* Recorte los archivos de memoria `CLAUDE.md` grandes, o mueva las instrucciones a [reglas con ámbito de ruta](/docs/es/memory#path-specific-rules) que se carguen solo cuando sea relevante1922* Recorte los archivos de memoria `CLAUDE.md` grandes, o mueva las instrucciones a [reglas con ámbito de ruta](/docs/es/memory#path-specific-rules) que se carguen solo cuando sea relevante


2019 El modelo está restringido por la configuración de su organización2199 El modelo está restringido por la configuración de su organización

2020</h3>2200</h3>

2021 2201 

2022Su administrador de organización ha deshabilitado este modelo en la consola de administración de claude.ai, o está excluido por una lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) en la configuración administrada. Cuando el modelo restringido se estableció con `--model`, `ANTHROPIC_MODEL` o la configuración `model`, Claude Code sustituye un modelo permitido y continúa. Escribir `/model <name>` para un modelo restringido se rechaza con `Run /model to choose a different model.` y la sesión mantiene su modelo actual.2202Su administrador de organización ha deshabilitado este modelo en la consola de administración de claude.ai, o está excluido por una lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) en la configuración administrada. Cuando el modelo restringido se estableció con `--model`, `ANTHROPIC_MODEL` o la configuración `model`, Claude Code sustituye un modelo permitido y continúa. Escribir `/model <name>` para un modelo restringido se rechaza con `Run /model to choose a different model.` y la sesión mantiene su modelo actual. El aviso de sustitución también puede aparecer a mitad de sesión después de que un administrador desactive el modelo en el que se ejecuta una sesión en la consola de administración de claude.ai.

2023 2203 

2024```text theme={null}2204```text theme={null}

2025Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.2205Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.


2303 Las sesiones en la nube no se pueden crear desde una sesión --restricted2483 Las sesiones en la nube no se pueden crear desde una sesión --restricted

2304</h3>2484</h3>

2305 2485 

2306Cuando inicia una sesión con [`--restricted`](/docs/es/cli-reference#cli-flags), Claude Code se niega a crear [sesiones en la nube](/docs/es/claude-code-on-the-web#from-terminal-to-web) desde ella, porque la nueva sesión se ejecutaría fuera del proceso restringido y no haría cumplir el modo restringido. Claude Code se niega en el cliente, antes de contactar al servidor, por lo que no se crea ninguna sesión en la nube:2486Cuando inicia una sesión con [`--restricted`](/docs/es/cli-reference#cli-flags), Claude Code se niega a crear [sesiones en la nube](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) desde ella, porque la nueva sesión se ejecutaría fuera del proceso restringido y no haría cumplir el modo restringido. Claude Code se niega en el cliente, antes de contactar al servidor, por lo que no se crea ninguna sesión en la nube:

2307 2487 

2308```text theme={null}2488```text theme={null}

2309Cloud sessions cannot be created from a --restricted session: they would not enforce it.2489Cloud sessions cannot be created from a --restricted session: they would not enforce it.


2316 2496 

2317Antes de v2.1.248, Claude Code no tenía la bandera `--restricted`; las versiones anteriores rechazan la bandera en sí con un error de opción desconocida.2497Antes de v2.1.248, Claude Code no tenía la bandera `--restricted`; las versiones anteriores rechazan la bandera en sí con un error de opción desconocida.

2318 2498 

2499<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">

2500 Las sesiones en la nube están deshabilitadas por la política de su organización

2501</h3>

2502 

2503La política `allow_remote_sessions` de su organización está desactivada, por lo que [sesiones en la nube](/docs/es/claude-code-on-the-web) y los comandos que las utilizan no están disponibles:

2504 

2505```text theme={null}

2506Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

2507```

2508 

2509El mensaje aparece cuando [crea una sesión en la nube desde la terminal](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) y cuando envía un comando que necesita sesiones en la nube, como `/teleport`, `/remote-env`, o `/web-setup`. Antes de v2.1.268, enviar uno de esos comandos devolvía [`Unknown command`](#unknown-command) en su lugar.

2510 

2511Esta es una política de organización del lado del servidor, por lo que no se puede anular desde la configuración local, variables de entorno o banderas de CLI.

2512 

2513Si Claude Code aún no ha cargado la política de su organización o no puede obtenerla, esos comandos responden `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` en su lugar.

2514 

2515**Qué hacer:**

2516 

2517* Pida a un [Propietario](/docs/es/server-managed-settings#access-control) en su organización que habilite las sesiones en la nube en la configuración de administrador de Claude Code en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

2518* Si el mensaje dice que no pudo verificar la política, verifique su conexión de red, luego reinicie Claude Code e intente nuevamente

2519 

2319<h3 id="the-json-schema-value-is-not-a-valid-json-schema">2520<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

2320 El valor de --json-schema no es un JSON Schema válido2521 El valor de --json-schema no es un JSON Schema válido

2321</h3>2522</h3>


2592* Si otro programa necesita ese puerto permanentemente, registre un URI de redirección diferente con el servidor y establezca su puerto con `MCP_OAUTH_CALLBACK_PORT` o `--callback-port`, el que use2793* Si otro programa necesita ese puerto permanentemente, registre un URI de redirección diferente con el servidor y establezca su puerto con `MCP_OAUTH_CALLBACK_PORT` o `--callback-port`, el que use

2593* Luego inicie el inicio de sesión nuevamente, por ejemplo seleccionando el servidor en `/mcp`2794* Luego inicie el inicio de sesión nuevamente, por ejemplo seleccionando el servidor en `/mcp`

2594 2795 

2796<h3 id="no-available-ports-for-oauth-redirect">

2797 No hay puertos disponibles para redirección OAuth

2798</h3>

2799 

2800Cuando inicia sesión en un servidor MCP remoto con [OAuth](/docs/es/mcp#authenticate-with-remote-mcp-servers), Claude Code inicia un oyente local para recibir la devolución de llamada de inicio de sesión. El inicio de sesión falla con este mensaje cuando Claude Code no puede vincular un puerto local para él. Algo en la máquina está impidiendo que escuche en `127.0.0.1`, por ejemplo software de seguridad o una política de sandbox que deniega oyentes locales.

2801 

2802```text theme={null}

2803No available ports for OAuth redirect

2804```

2805 

2806Antes de v2.1.268, Claude Code no recurría a un puerto asignado por el sistema operativo, por lo que el mensaje también aparecía cuando solo sus puertos autopickados no podían ser vinculados. Esto puede suceder en hosts Windows donde Hyper-V reserva rangos de puertos que cubren los puertos que Claude Code elige.

2807 

2808**Qué hacer:**

2809 

2810* Verifique si el software de seguridad o una política de sandbox bloquea procesos de escuchar en `127.0.0.1`, y permita que Claude Code vincule un puerto local

2811* Luego inicie el inicio de sesión nuevamente, por ejemplo seleccionando el servidor en `/mcp`

2812 

2595<h3 id="security-review-fails-without-origin-head">2813<h3 id="security-review-fails-without-origin-head">

2596 /security-review falla sin origin/HEAD2814 /security-review falla sin origin/HEAD

2597</h3>2815</h3>


2605'git <command> [<revision>...] -- [<file>...]'2823'git <command> [<revision>...] -- [<file>...]'

2606```2824```

2607 2825 

2608El comando citado varía entre ejecuciones: la revisión inicia varios comandos `git` contra `origin/HEAD` a la vez e informa cuál falla primero, por lo que puede ver `git log` o una `git diff` diferente en su lugar. Git crea la ref solo cuando la rama predeterminada del remoto es tanto anunciada por el remoto como cubierta por su refspec de obtención. Un `git clone` completo de un remoto con commits cumple ambas condiciones. Los clones de rama única y CI obtienen un refspec demasiado estrecho, un HEAD del lado del servidor dejado apuntando a una rama que nadie envió no anuncia ningún predeterminado, y un repositorio sin remoto `origin`, o uno del que nunca obtuvo, no proporciona ninguno.2826El mensaje puede citar `git log` o una `git diff` diferente en su lugar. Git crea `origin/HEAD` solo cuando el remoto anuncia una rama predeterminada y su refspec de obtención la cubre, que un `git clone` completo de un remoto con commits hace. La ref falta en estas configuraciones:

2609 2827 

2610Claude Code muestra el mismo error para cualquier skill que [inyecta contexto dinámico](/docs/es/skills#when-an-injected-command-fails). Un comando inyectado fallido aborta la invocación de ese skill. Dos cadenas hermanas se activan antes de que el comando se ejecute en absoluto:2828* Un checkout de rama única o CI, que obtiene un refspec demasiado estrecho

2829* Un remoto cuyo HEAD del lado del servidor apunta a una rama que nadie envió

2830* Un repositorio sin remoto `origin`, o uno del que nunca obtuvo

2611 2831 

2612* `Shell command permission check failed for pattern "..."`: la verificación de permiso del comando devolvió algo que no es permitir. Los comandos inyectados nunca solicitan, por lo que la invocación se aborta sin preguntarle. Pre-apruebe comandos que ninguna regla coincida con [`allowed-tools`](/docs/es/skills#pre-approve-tools-for-a-skill). Una regla de solicitud o denegación coincidente aún aborta la invocación independientemente de `allowed-tools`2832Claude Code muestra el mismo error para cualquier skill que [inyecta contexto dinámico](/docs/es/skills#when-an-injected-command-fails), y un comando inyectado fallido aborta la invocación de ese skill. Dos cadenas hermanas se activan antes de que el comando se ejecute en absoluto:

2833 

2834* `Shell command permission check failed for pattern "..."`: la verificación de permiso del comando no lo permitió. [Las verificaciones de permiso en comandos inyectados](/docs/es/skills#permission-checks-on-injected-commands) cubre qué resultados abortan en cada modo de permiso y cómo pre-aprobar un comando con `allowed-tools`

2613* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina sin él. Instale Git para Windows o cambie el frontmatter a `shell: powershell`. Consulte [Cómo se ejecutan los comandos inyectados](/docs/es/skills#how-injected-commands-run)2835* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina sin él. Instale Git para Windows o cambie el frontmatter a `shell: powershell`. Consulte [Cómo se ejecutan los comandos inyectados](/docs/es/skills#how-injected-commands-run)

2614 2836 

2615**Qué hacer:**2837**Qué hacer:**


2669 Comando desconocido2891 Comando desconocido

2670</h3>2892</h3>

2671 2893 

2672Envió un nombre `/` que no coincide con ningún comando en esta sesión, por lo que Claude Code reporta el nombre en lugar de ejecutar cualquier cosa:2894En una sesión de terminal interactiva, envió un nombre `/` que no coincide con ningún comando en esta sesión, por lo que Claude Code reporta el nombre en lugar de ejecutar cualquier cosa:

2673 2895 

2674```text theme={null}2896```text theme={null}

2675Unknown command: /hepl. Did you mean /help?2897Unknown command: /hepl. Did you mean /help?


2678Claude Code sugiere el nombre de comando o alias más cercano que el menú enumera en esta sesión. Cuando nada está cerca, el mensaje termina después del nombre. La causa es generalmente una de las siguientes:2900Claude Code sugiere el nombre de comando o alias más cercano que el menú enumera en esta sesión. Cuando nada está cerca, el mensaje termina después del nombre. La causa es generalmente una de las siguientes:

2679 2901 

2680* Un error tipográfico, como `/hepl` para `/help`. [Cómo el menú de comandos coincide con lo que escribe](/docs/es/commands#how-the-command-menu-matches-what-you-type) cubre elegir una coincidencia cercana antes de enviar2902* Un error tipográfico, como `/hepl` para `/help`. [Cómo el menú de comandos coincide con lo que escribe](/docs/es/commands#how-the-command-menu-matches-what-you-type) cubre elegir una coincidencia cercana antes de enviar

2681* Un comando que existe pero no está disponible en esta sesión porque no se cumple un requisito, como su plataforma, plan o método de autenticación. Las entradas de solución de problemas para [`/web-setup`](/docs/es/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) y [`/schedule`](/docs/es/routines#schedule-returns-unknown-command) recorren dos casos comunes. Algunos comandos responden con su propio mensaje cuando la política de su organización los desactiva2903* Un comando que existe pero no está disponible en esta sesión porque no se cumple un requisito, como su plataforma, plan o método de autenticación. Las entradas de solución de problemas para [`/web-setup`](/docs/es/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) y [`/schedule`](/docs/es/routines#schedule-returns-unknown-command) recorren dos casos comunes. Algunos comandos responden con su propio mensaje cuando la política de su organización los desactiva, como [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

2682* Un comando de un [plugin](/docs/es/plugins) o [servidor MCP](/docs/es/mcp#use-mcp-prompts-as-commands) que no está instalado o conectado en esta sesión2904* Un comando de un [plugin](/docs/es/plugins) o [servidor MCP](/docs/es/mcp#use-mcp-prompts-as-commands) que no está instalado o conectado en esta sesión

2683 2905 

2906Claude Code responde a un nombre `/` que no coincide con ningún comando de esta manera solo en una sesión de terminal interactiva. En todas las otras sesiones, envía el símbolo del sistema a Claude como un mensaje normal en su lugar, con una nota de que el comando no se ejecutó y una lista de comandos que Claude puede ejecutar en la sesión. Esas sesiones incluyen:

2907 

2908* Ejecuciones `-p`

2909* Aplicaciones [Agent SDK](/docs/es/agent-sdk/overview)

2910* La pestaña Code de la [aplicación Desktop](/docs/es/desktop)

2911* El panel de chat de la [extensión VS Code](/docs/es/vs-code)

2912* [Sesiones en la nube](/docs/es/claude-code-on-the-web) y [rutinas](/docs/es/routines)

2913 

2914Para un comando integrado que no puede ejecutarse en una de esas sesiones, Claude Code aún responde que el comando no está disponible en su lugar de enviarlo a Claude. Antes de v2.1.274, solo las sesiones en la nube y las rutinas enviaban un nombre que no coincidía a Claude. Antes de v2.1.273, también respondían `Unknown command`.

2915 

2684Claude Code no trata cada símbolo del sistema que comienza con `/` como un comando. Envía el símbolo del sistema a Claude como un mensaje normal cuando la primera palabra después del `/` comienza con puntuación, como el `/--` que abre un comentario de documento Lean, o es una ruta como `/var/log/syslog`.2916Claude Code no trata cada símbolo del sistema que comienza con `/` como un comando. Envía el símbolo del sistema a Claude como un mensaje normal cuando la primera palabra después del `/` comienza con puntuación, como el `/--` que abre un comentario de documento Lean, o es una ruta como `/var/log/syslog`.

2685 2917 

2686Antes de v2.1.236, si presionaba `Enter` mientras el menú de comandos enumeraba una coincidencia cercana para el nombre que escribió, Claude Code ejecutaba esa coincidencia, por lo que un error tipográfico como `/hepl` ejecutaba `/help` en lugar de producir este mensaje.2918Antes de v2.1.236, si presionaba `Enter` mientras el menú de comandos enumeraba una coincidencia cercana para el nombre que escribió, Claude Code ejecutaba esa coincidencia, por lo que un error tipográfico como `/hepl` ejecutaba `/help` en lugar de producir este mensaje.


2799 3031 

2800Antes de v2.1.251, Claude Code terminaba el mensaje con `Please set up GitHub on https://claude.ai/code` incluso cuando la verificación de GitHub falló solo transitoriamente, y el consejo de configuración no puede aclarar una falla transitoria.3032Antes de v2.1.251, Claude Code terminaba el mensaje con `Please set up GitHub on https://claude.ai/code` incluso cuando la verificación de GitHub falló solo transitoriamente, y el consejo de configuración no puede aclarar una falla transitoria.

2801 3033 

3034<h3 id="github-isnt-connected-to-your-claude-account">

3035 GitHub no está conectado a su cuenta de Claude

3036</h3>

3037 

3038Inició una [sesión en la nube](/docs/es/claude-code-on-the-web) desde su repositorio local, por ejemplo con `/autofix-pr`. Ninguna cuenta de GitHub está conectada a su cuenta de Claude, o la conexión expiró, por lo que Claude Code rechaza el lanzamiento:

3039 

3040```text theme={null}

3041GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github

3042```

3043 

3044Cuando crea una rutina con [`/schedule`](/docs/es/routines), el mismo mensaje aparece como una nota de configuración que nombra el repositorio; la nota no bloquea la creación de la rutina.

3045 

3046**Qué hacer:**

3047 

3048* Ejecute `/web-setup` para conectar su inicio de sesión de GitHub CLI a su cuenta de Claude, o conecte una cuenta en [claude.ai/connect-github](https://claude.ai/connect-github). Consulte [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options) para ver cómo difieren los dos.

3049* Vuelva a ejecutar el comando un minuto después de conectar

3050 

3051Antes de v2.1.268, Claude Code reportaba esto como una falla temporal de la verificación de la aplicación de GitHub de Claude y sugería reintentar o instalar la aplicación; ninguno conecta una cuenta de GitHub.

3052 

3053<h3 id="single-sign-on-authorization-needed">

3054 Autorización de inicio de sesión único necesaria

3055</h3>

3056 

3057Ejecutó [`/install-github-app`](/docs/es/github-actions#quick-setup) y eligió un repositorio cuya organización aplica inicio de sesión único SAML. Antes de la configuración, Claude Code verifica su acceso al repositorio con la CLI de GitHub, y GitHub rechazó esa verificación porque su token `gh` aún no está autorizado para la organización. El asistente muestra la advertencia con los pasos para autorizar:

3058 

3059```text theme={null}

3060Single sign-on authorization needed

3061<owner>/<repo> belongs to an organization that enforces SAML single sign-on, and your GitHub CLI token isn't authorized for it yet.

3062```

3063 

3064**Qué hacer:**

3065 

3066* Vuelva a autorizar su inicio de sesión de GitHub CLI con los alcances `repo` y `workflow` ejecutando `gh auth refresh -h github.com -s repo,workflow`, y autorice la organización cuando GitHub solicite inicio de sesión único

3067* Si se autentica con un token de acceso personal en `GH_TOKEN`, abra [github.com/settings/tokens](https://github.com/settings/tokens), seleccione **Configure SSO** en el token, y autorice la organización

3068* Ejecute `/install-github-app` nuevamente

3069 

3070Antes de v2.1.273, Claude Code mostraba la advertencia `Admin permissions required` para esta condición en su lugar.

3071 

2802<h3 id="failed-to-resume-the-conversation">3072<h3 id="failed-to-resume-the-conversation">

2803 No se pudo reanudar la conversación3073 No se pudo reanudar la conversación

2804</h3>3074</h3>


2868* En una sesión iniciada sin esas restricciones, ejecute `/tui fullscreen`, o `/tui default` para cambiar de vuelta. Claude Code guarda la [configuración `tui`](/docs/es/settings-reference#tui) allí3138* En una sesión iniciada sin esas restricciones, ejecute `/tui fullscreen`, o `/tui default` para cambiar de vuelta. Claude Code guarda la [configuración `tui`](/docs/es/settings-reference#tui) allí

2869 3139 

2870<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3140<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

2871 /terminal-setup dejó su mapa de teclas de Zed sin cambios3141 /terminal-setup dejó su mapa de atajos de teclado de Zed sin cambios

2872</h3>3142</h3>

2873 3143 

2874Ejecutó [`/terminal-setup`](/docs/es/terminal-config#enter-multiline-prompts) en Zed, y Claude Code no pudo completar la actualización a su `keymap.json` de Zed, por lo que lo dejó como estaba.3144Ejecutó [`/terminal-setup`](/docs/es/terminal-config#enter-multiline-prompts) en Zed, y Claude Code no pudo completar la actualización a su `keymap.json` de Zed, por lo que lo dejó como estaba.

2875 3145 

2876Cada mensaje nombra la ruta a su mapa de teclas y termina con el bloque de atajos de teclado para agregar usted mismo:3146Cada mensaje nombra la ruta a su mapa de atajos de teclado y termina con el bloque de atajos de teclado para agregar usted mismo:

2877 3147 

2878```text theme={null}3148```text theme={null}

2879Couldn't update your Zed keymap, so it was left unchanged.3149Couldn't update your Zed keymap, so it was left unchanged.


2886* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code no pudo leer el archivo, por ejemplo debido a permisos de archivo3156* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code no pudo leer el archivo, por ejemplo debido a permisos de archivo

2887* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: el archivo se leyó bien pero no se analiza como una matriz de bloques de atajos de teclado, incluso con comentarios `//` y comas finales permitidas3157* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: el archivo se leyó bien pero no se analiza como una matriz de bloques de atajos de teclado, incluso con comentarios `//` y comas finales permitidas

2888* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code no pudo copiar el archivo a una copia de seguridad `.bak` junto a él, por lo que no cambió nada3158* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code no pudo copiar el archivo a una copia de seguridad `.bak` junto a él, por lo que no cambió nada

2889* `Couldn't update your Zed keymap, so it was left unchanged.`: el resultado fusionado no se verificó como un mapa de teclas válido que lleve el atajo de teclado, por lo que Claude Code lo descartó en lugar de escribir. Un bloque de atajos de teclado con una clave duplicada puede causar esto3159* `Couldn't update your Zed keymap, so it was left unchanged.`: el resultado fusionado no se verificó como un mapa de atajos de teclado válido que lleve el atajo de teclado, por lo que Claude Code lo descartó en lugar de escribir. Un bloque de atajos de teclado con una clave duplicada puede causar esto

2890 3160 

2891**Qué hacer:**3161**Qué hacer:**

2892 3162 

2893* Copie el bloque del mensaje en la matriz de nivel superior en su `keymap.json` en la ruta que nombra el mensaje3163* Copie el bloque del mensaje en la matriz de nivel superior en su `keymap.json` en la ruta que nombra el mensaje

2894* Para `isn't a readable list of keybindings`, corrija el error de sintaxis, o haga que el valor de nivel superior del archivo sea una matriz, luego ejecute `/terminal-setup` nuevamente3164* Para `isn't a readable list of keybindings`, corrija el error de sintaxis, o haga que el valor de nivel superior del archivo sea una matriz, luego ejecute `/terminal-setup` nuevamente

2895 3165 

2896Antes de v2.1.247, `/terminal-setup` no podía analizar un mapa de teclas de Zed que usara comentarios `//` o comas finales, y reemplazó el archivo completo con solo su propio atajo de teclado mientras reportaba el atajo de teclado como instalado. Para restaurar un mapa de teclas que una versión anterior reemplazó, use el archivo de copia de seguridad `.bak` descrito en [Ingrese indicadores de varias líneas](/docs/es/terminal-config#enter-multiline-prompts).3166Antes de v2.1.247, `/terminal-setup` no podía analizar un mapa de atajos de teclado de Zed que usara comentarios `//` o comas finales, y reemplazó el archivo completo con solo su propio atajo de teclado mientras reportaba el atajo de teclado como instalado. Para restaurar un mapa de atajos de teclado que una versión anterior reemplazó, use el archivo de copia de seguridad `.bak` descrito en [Ingrese indicadores de varias líneas](/docs/es/terminal-config#enter-multiline-prompts).

2897 3167 

2898<h3 id="skill-usage-reports-are-not-available-on-this-connection">3168<h3 id="skill-usage-reports-are-not-available-on-this-connection">

2899 Los reportes de uso de skills no están disponibles en esta conexión3169 Los reportes de uso de skills no están disponibles en esta conexión


2909 3179 

2910* Ejecute `/skill-doctor` en la terminal en la máquina donde se ejecuta la sesión, o ejecute `claude -p "/skill-doctor"` allí3180* Ejecute `/skill-doctor` en la terminal en la máquina donde se ejecuta la sesión, o ejecute `claude -p "/skill-doctor"` allí

2911 3181 

3182<h3 id="custom-output-styles-cant-be-selected-over-remote-control">

3183 Los estilos de salida personalizados no se pueden seleccionar sobre Remote Control

3184</h3>

3185 

3186Ejecutó [`/output-style`](/docs/es/output-styles#change-your-output-style) desde la aplicación móvil o web a través de [Remote Control](/docs/es/remote-control), o el comando llegó en un mensaje retransmitido a la sesión. Porque tal turno puede no provenir del propietario de la cuenta, Claude Code enumera y selecciona solo [estilos integrados](/docs/es/output-styles#built-in-output-styles) en él, y agrega este aviso siempre que el comando enumera los estilos o no reconoce el nombre que dio. Un nombre de [estilo personalizado](/docs/es/output-styles#create-a-custom-output-style) obtiene la misma respuesta que un nombre que no existe:

3187 

3188```text theme={null}

3189Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.

3190```

3191 

3192**Qué hacer:**

3193 

3194* Elija un estilo integrado, por ejemplo `/output-style concise`

3195* Para usar un estilo personalizado, establezca [`outputStyle`](/docs/es/settings-reference#outputstyle) en `.claude/settings.local.json` del proyecto, o ejecute `/output-style <style>` en la terminal de la sesión si tiene una

3196 

3197<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">

3198 Los estilos de salida se guardan en la configuración local que esta sesión no carga

3199</h3>

3200 

3201Intentó cambiar [estilos de salida](/docs/es/output-styles) con `/output-style <style>` o `/config outputStyle=<style>` en una sesión cuyas fuentes de configuración excluyen `local`. Los ejemplos son una sesión [Agent SDK](/docs/es/agent-sdk/typescript) cuyo [`settingSources`](/docs/es/agent-sdk/typescript#options) deja fuera `"local"` y una sesión CLI iniciada con un valor [`--setting-sources`](/docs/es/cli-reference#cli-flags) que deja fuera `local`. Ambos comandos guardan el estilo en `.claude/settings.local.json`, un archivo que tal sesión nunca vuelve a leer, por lo que Claude Code se niega en lugar de escribir una configuración que no tendría efecto:

3202 

3203```text theme={null}

3204Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.

3205```

3206 

3207**Qué hacer:**

3208 

3209* Agregue `local` a las fuentes de configuración de la sesión y cambie nuevamente

3210* Establezca la clave [`outputStyle`](/docs/es/settings-reference#outputstyle) en un archivo de configuración que la sesión sí carga, como `.claude/settings.json` en el proyecto o `~/.claude/settings.json`. En el SDK de TypeScript, establezca `outputStyle` dentro del objeto `settings` en línea en su lugar; consulte [Activar un estilo de salida](/docs/es/agent-sdk/modifying-system-prompts#activate-an-output-style)

3211 

2912<h2 id="plugin-errors">3212<h2 id="plugin-errors">

2913 Errores de plugins3213 Errores de plugins

2914</h2>3214</h2>


3045 3345 

3046Claude Code le preguntó al sistema operativo si existe una ruta de plugin y obtuvo un error que no sea "no encontrado", por lo que no carga lo que la ruta nombra. Cuánto del plugin se carga depende de qué ruta falló:3346Claude Code le preguntó al sistema operativo si existe una ruta de plugin y obtuvo un error que no sea "no encontrado", por lo que no carga lo que la ruta nombra. Cuánto del plugin se carga depende de qué ruta falló:

3047 3347 

3048* Una de las [carpetas de componentes predeterminadas](/docs/es/plugins-reference#file-locations-reference) de un plugin, como `skills/` o `commands/`: los otros componentes del plugin aún se cargan3348* Una de las [carpetas de componentes predeterminadas](/docs/es/plugins-reference#file-locations-reference) de un plugin, como la carpeta `skills/`, el archivo `monitors/monitors.json`, o un [`SKILL.md` en la raíz del plugin](/docs/es/plugins-reference#skills): los otros componentes del plugin aún se cargan

3049* El directorio del plugin en sí: nada de ese plugin se carga3349* El directorio del plugin en sí: nada de ese plugin se carga

3050 3350 

3051No ve este error para una ruta que no existe en absoluto. En `/plugin`, el error aparece bajo el plugin y nombra la ruta y el código que devolvió el sistema operativo:3351No ve este error para una ruta que no existe en absoluto. En `/plugin`, el error aparece bajo el plugin y nombra la ruta y el código que devolvió el sistema operativo:


3254* Pida al remitente que reenvíe el mensaje; la contención por el bloqueo del buzón es transitoria y se resuelve al reintentar3554* Pida al remitente que reenvíe el mensaje; la contención por el bloqueo del buzón es transitoria y se resuelve al reintentar

3255* Verifique el espacio en disco libre y compruebe que `~/.claude/teams` y los archivos bajo él sean escribibles por su usuario3555* Verifique el espacio en disco libre y compruebe que `~/.claude/teams` y los archivos bajo él sean escribibles por su usuario

3256 3556 

3557<h3 id="teammate-agent-definition-not-restored">

3558 Teammate's agent definition was not restored

3559</h3>

3560 

3561Claude envió un mensaje a un compañero de [equipo de agentes](/docs/es/agent-teams) detenido, y Claude Code lo reactivó sin volver a aplicar la [definición de subagente](/docs/es/agent-teams#use-subagent-definitions-for-teammates) desde la que fue generado, porque su archivo de definición provenía de una carpeta sin confianza guardada. El aviso sigue el informe de reanudación en el resultado de la herramienta del agente remitente:

3562 

3563```text wrap theme={null}

3564Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.

3565```

3566 

3567La verificación se aplica a una definición en el directorio `.claude/agents/` del proyecto o de un directorio `--add-dir`, y aceptar el diálogo de confianza para una carpeta principal no lo satisface.

3568 

3569**Qué hacer:**

3570 

3571* Ejecute `claude` en la carpeta que el [registro de depuración](/docs/es/debug-your-config) nombra y acepte el diálogo de confianza. La definición se vuelve a aplicar la próxima vez que Claude Code reactivar el compañero; no necesita reiniciar la sesión del líder

3572* O configure la entrada `hasTrustDialogAccepted` a `true` en `~/.claude.json`, usando la clave exacta `projects["<path>"]` que el registro de depuración imprime

3573 

3257<h3 id="message-too-large-for-cross-session-delivery">3574<h3 id="message-too-large-for-cross-session-delivery">

3258 Message too large for cross-session delivery3575 Message too large for cross-session delivery

3259</h3>3576</h3>


3326 3643 

3327Claude Code verifica las [reglas de permiso](/docs/es/permissions#read-and-edit) de una ruta de archivo, luego confirma esa resolución nuevamente cuando la herramienta abre el archivo o inicia la búsqueda. Cuando no puede confirmar que la ruta aún conduce a la ubicación que la verificación aprobó, Claude Code se niega a la operación en lugar de seguirla. El rechazo aparece en el resultado de la herramienta:3644Claude Code verifica las [reglas de permiso](/docs/es/permissions#read-and-edit) de una ruta de archivo, luego confirma esa resolución nuevamente cuando la herramienta abre el archivo o inicia la búsqueda. Cuando no puede confirmar que la ruta aún conduce a la ubicación que la verificación aprobó, Claude Code se niega a la operación en lugar de seguirla. El rechazo aparece en el resultado de la herramienta:

3328 3645 

3329```text theme={null}3646```text wrap theme={null}

3330Refusing to read /path/to/file: its symlink resolution changed after permission was checked. If a link in the working directory is being rewritten concurrently, stop that and retry.3647Refusing to read /path/to/file: its symlink resolution changed after permission was checked (a link on the way now leads somewhere the check did not see). If a link in the working directory is being rewritten concurrently, stop that and retry.

3331```3648```

3332 3649 

3333El texto después de la ruta nombra la razón:3650El texto después de la ruta nombra la razón:

3334 3651 

3335* `its symlink resolution changed after permission was checked`: un enlace simbólico a lo largo de la ruta, o en una raíz de búsqueda Grep o Glob, fue reemplazado entre la verificación de permiso y la operación3652* `its symlink resolution changed after permission was checked`: un enlace simbólico a lo largo de la ruta, o en una raíz de búsqueda Grep o Glob, fue reemplazado entre la verificación de permiso y la operación. En un rechazo de lectura, la frase entre paréntesis nombra qué comparación falló.

3336* `its parent-directory symlink resolution changed after permission was checked`: un directorio por el que pasa la ruta de escritura ya no se resuelve a la ubicación aprobada3653* `its parent-directory symlink resolution changed after permission was checked`: un directorio por el que pasa la ruta de escritura ya no se resuelve a la ubicación aprobada

3337* `it is a symbolic link. Write to the link's target path instead`: un enlace simbólico se encuentra en la ubicación de escritura aprobada en sí3654* `it is a symbolic link. Write to the link's target path instead`: un enlace simbólico se encuentra en la ubicación de escritura aprobada en sí, por ejemplo un `CLAUDE.md` que es un enlace simbólico a `AGENTS.md`; el mensaje dirige a Claude a la ruta de destino del enlace

3655* `Refusing to write through symlink: <path>. Resolve the symlink and pass the real target path explicitly.`: la misma condición detectada cuando otro escritor abre el archivo, como una escritura a un `.mcp.json` enlazado simbólicamente

3656* `Refusing to write into symlinked directory: <path>`: el directorio que contiene el archivo es en sí mismo un enlace simbólico, por ejemplo el directorio `.claude/` de un proyecto vinculado a otra ubicación

3338* `a path one of its Read deny rules is written through changed while the search was being prepared. Retry.`: una regla de denegación `Read` para la búsqueda nombra una ruta que pasa a través de un enlace simbólico, y ese enlace cambió mientras Claude Code estaba preparando la búsqueda3657* `a path one of its Read deny rules is written through changed while the search was being prepared. Retry.`: una regla de denegación `Read` para la búsqueda nombra una ruta que pasa a través de un enlace simbólico, y ese enlace cambió mientras Claude Code estaba preparando la búsqueda

3339* `it could not be opened (EACCES) — it is unreadable, or is being replaced concurrently.`: la raíz de búsqueda existe pero no pudo abrirse; el código entre paréntesis es el error del sistema operativo3658* `it could not be opened (EACCES) — it is unreadable, or is being replaced concurrently.`: la raíz de búsqueda existe pero no pudo abrirse; el código entre paréntesis es el error del sistema operativo

3340* `its permission check expired before it ran (too many concurrent file operations). Retry.`: Claude Code desalojó el registro de aprobación bajo muchas operaciones de archivo simultáneas antes de que la herramienta lo usara; reintentar ejecuta una verificación de permiso nueva3659* `its permission check expired before it ran (too many concurrent file operations). Retry.`: Claude Code desalojó el registro de aprobación bajo muchas operaciones de archivo simultáneas antes de que la herramienta lo usara; reintentar ejecuta una verificación de permiso nueva


3345* Generalmente nada: el rechazo llega a Claude como el resultado de la herramienta, y la operación rechazada no se ejecuta3664* Generalmente nada: el rechazo llega a Claude como el resultado de la herramienta, y la operación rechazada no se ejecuta

3346* Si un rechazo de enlace simbólico se repite en una ruta, encuentre qué sigue reescribiendo un enlace allí, como una herramienta de compilación o un observador de archivos, o pida a Claude que use la ruta resuelta del archivo en lugar de la vinculada3665* Si un rechazo de enlace simbólico se repite en una ruta, encuentre qué sigue reescribiendo un enlace allí, como una herramienta de compilación o un observador de archivos, o pida a Claude que use la ruta resuelta del archivo en lugar de la vinculada

3347* Si este rechazo aparece para cada archivo mientras Claude Code se ejecuta en Windows dentro de un AppContainer o sandbox de token restringido, actualice a v2.1.265 o posterior3666* Si este rechazo aparece para cada archivo mientras Claude Code se ejecuta en Windows dentro de un AppContainer o sandbox de token restringido, actualice a v2.1.265 o posterior

3667* Si un rechazo de lectura aparece en macOS para un archivo que nada está reescribiendo, como una captura de pantalla arrastrada al mensaje, actualice a v2.1.273 o posterior

3348* Para el rechazo de ripgrep, instale ripgrep con su administrador de paquetes para que `rg` se resuelva a una ruta absoluta en `PATH`, o mantenga búsquedas bajo el directorio de trabajo3668* Para el rechazo de ripgrep, instale ripgrep con su administrador de paquetes para que `rg` se resuelva a una ruta absoluta en `PATH`, o mantenga búsquedas bajo el directorio de trabajo

3349 3669 

3350Antes de v2.1.251, Claude Code volvía a verificar la resolución de una ruta solo para escrituras de archivo, por lo que un enlace reemplazado después de la verificación de permiso podría redirigir una lectura o búsqueda a una ubicación diferente sin un mensaje. De estos rechazos, solo el rechazo de escritura del directorio principal aparece en versiones anteriores.3670Antes de v2.1.251, Claude Code volvía a verificar la resolución de una ruta solo para escrituras de archivo, por lo que un enlace reemplazado después de la verificación de permiso podría redirigir una lectura o búsqueda a una ubicación diferente sin un mensaje. De estos rechazos, solo el rechazo de escritura del directorio principal, a través de enlace simbólico y directorio enlazado simbólicamente aparecen en versiones anteriores.

3351 3671 

3352<h3 id="task-output-swap-refused">3672<h3 id="task-output-swap-refused">

3353 Task output swap refused3673 Task output swap refused


3396 3716 

3397Antes de v2.1.267, Claude Code cargaba tal archivo sin verificarlo, y el servidor se negaba a publicar en su lugar.3717Antes de v2.1.267, Claude Code cargaba tal archivo sin verificarlo, y el servidor se negaba a publicar en su lugar.

3398 3718 

3719<h3 id="reading-a-local-file-from-outside-the-connected-folders">

3720 Reading a local file from outside the connected folders in a Cowork session

3721</h3>

3722 

3723En una sesión de [Cowork](https://claude.com/docs/cowork/overview) ejecutándose en su máquina en la aplicación Claude Desktop, Claude nombró un archivo local para un [artefacto](/docs/es/artifacts). Claude Code no pudo confirmar que el archivo es un archivo simple dentro de las carpetas conectadas de la sesión: la ruta se encuentra fuera de esas carpetas, pasa a través de un enlace simbólico, o está escrita de una manera que puede nombrar un archivo diferente al que parece. Leer tal archivo necesita su aprobación, y en una sesión que no puede mostrarle la tarjeta de aprobación, como una configurada para omitir todas las aprobaciones, Claude Code se niega a la lectura.

3724 

3725El rechazo aparece en el resultado de la herramienta Artifact; cuando el archivo no pudo ser examinado en absoluto, nombra esa falla en su lugar:

3726 

3727```text wrap theme={null}

3728Reading a local file from outside this session's connected folders, or through a link, needs the approval card, and no one can answer it in this Cowork session. Use a plain file inside the connected folders; do not retry this file in this session.

3729 

3730cannot read file_path (ENOENT) — the file could not be examined, and no one can answer the approval card in this Cowork session. Check that the file exists as a plain file inside the connected folders, then retry with that path.

3731```

3732 

3733**Qué hacer:**

3734 

3735* Generalmente nada: el mensaje le dice a Claude que use un archivo simple dentro de las carpetas conectadas en su lugar

3736* Para poner ese archivo exacto en el artefacto, cópielo en una de las carpetas conectadas de la sesión como un archivo regular, no un enlace simbólico, y pregunte de nuevo

3737 

3738<h3 id="webfetch-cannot-fetch-localhost">

3739 WebFetch cannot fetch localhost

3740</h3>

3741 

3742Claude llamó a [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) con una URL cuyo nombre de host no tiene punto, como `http://localhost:3000` o un nombre de intranet simple como `http://wiki/`. WebFetch se niega a estas URL antes de hacer cualquier solicitud:

3743 

3744```text wrap theme={null}

3745WebFetch cannot fetch localhost or other hostnames without a dot. To reach a local server, use Bash with curl instead.

3746```

3747 

3748**Qué hacer:**

3749 

3750* Generalmente nada: el mensaje señala a Claude hacia `curl` a través de la herramienta Bash, que puede alcanzar servidores locales e intranet

3751 

3752Antes de v2.1.268, WebFetch reportaba estas URL con un error genérico `Invalid URL`.

3753 

3399<h2 id="background-session-errors">3754<h2 id="background-session-errors">

3400 Errores de sesión en segundo plano3755 Errores de sesión en segundo plano

3401</h2>3756</h2>


3521Intentó eliminar una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree contiene commits que Claude Code no puede confirmar que se guardan en otro lugar. Claude Code mantiene el worktree y la fila de sesión en lugar de destruir los commits sin verlos. `claude rm` nombra la rama y los commits no enviados, y dice cómo proceder:3876Intentó eliminar una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree contiene commits que Claude Code no puede confirmar que se guardan en otro lugar. Claude Code mantiene el worktree y la fila de sesión en lugar de destruir los commits sin verlos. `claude rm` nombra la rama y los commits no enviados, y dice cómo proceder:

3522 3877 

3523```text theme={null}3878```text theme={null}

3524kept 7c5dcf5d — 2 unpushed commits on claude/fix-login (a1b2c3d Fix login flow, … and 1 more)3879kept 7c5dcf5d — its worktree is still at "/home/you/project/.claude/worktrees/fix-login"

3525 worktree: /home/you/project/.claude/worktrees/fix-login3880 2 unpushed commits on "claude/fix-login": a1b2c3d "Fix login flow" and 1 more. They exist on no remote, so deleting the worktree would lose them.

3526 push them, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef3881 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

3527```3882```

3528 3883 

3529Cuando Claude Code no puede resumir los commits, el mensaje dice `worktree has commits that are not pushed anywhere` en su lugar. En [agent view](/docs/es/agent-view), la fila de la sesión muestra `not deleted` con la misma razón.3884Cuando Claude Code no puede resumir los commits, la línea de detalle dice `The worktree has unpushed commits` en su lugar. En [agent view](/docs/es/agent-view), la fila de la sesión muestra `not deleted` con la misma razón.

3530 3885 

3531Los commits en un remoto no bloquean la eliminación. Tampoco lo hacen los commits en la copia local de la rama predeterminada de su remoto `origin`, siempre que esa rama esté desprotegida en su checkout principal, el directorio del repositorio en sí en lugar de un worktree.3886Los commits en un remoto no bloquean la eliminación. Tampoco lo hacen los commits en la copia local de la rama predeterminada de su remoto `origin`, siempre que esa rama esté desprotegida en su checkout principal, el directorio del repositorio en sí en lugar de un worktree.

3532 3887 


3536* Para descartar los commits, ejecute el comando `claude rm <id> --discard-unpushed` que el mensaje imprimió, o presione `Ctrl+X` dos veces en la fila de la sesión en agent view nuevamente. Esto elimina la sesión y el worktree junto con su rama, los commits no enviados y cualquier cambio no confirmado. Si el worktree ha ganado un commit desde el rechazo, Claude Code lo mantiene nuevamente y muestra el estado actualizado3891* Para descartar los commits, ejecute el comando `claude rm <id> --discard-unpushed` que el mensaje imprimió, o presione `Ctrl+X` dos veces en la fila de la sesión en agent view nuevamente. Esto elimina la sesión y el worktree junto con su rama, los commits no enviados y cualquier cambio no confirmado. Si el worktree ha ganado un commit desde el rechazo, Claude Code lo mantiene nuevamente y muestra el estado actualizado

3537* Cuando el mensaje dice que el worktree también está registrado por otra sesión terminada, eliminar nuevamente no lo descarta: envíe los commits, luego elimine la sesión nuevamente3892* Cuando el mensaje dice que el worktree también está registrado por otra sesión terminada, eliminar nuevamente no lo descarta: envíe los commits, luego elimine la sesión nuevamente

3538 3893 

3894Antes de v2.1.268, `claude rm` ponía el resumen de commits en la línea `kept` en sí. Cuando `claude rm` no podía resumir los commits, la línea `kept` decía `worktree has commits that are not pushed anywhere` en lugar del resumen.

3895 

3539Antes de v2.1.260, el mensaje no nombraba la rama ni los commits, y eliminar nuevamente se rechazaba de la misma manera: eliminar la sesión sin enviar significaba eliminar el worktree usted mismo con `git worktree remove --force <path>`, luego ejecutar `claude rm <id>` nuevamente.3896Antes de v2.1.260, el mensaje no nombraba la rama ni los commits, y eliminar nuevamente se rechazaba de la misma manera: eliminar la sesión sin enviar significaba eliminar el worktree usted mismo con `git worktree remove --force <path>`, luego ejecutar `claude rm <id>` nuevamente.

3540 3897 

3541Antes de v2.1.248, la rama predeterminada desprotegida en su checkout principal no contaba: una rama que ya había fusionado allí aún activaba este rechazo hasta que sus commits llegaran a un remoto.3898Antes de v2.1.248, la rama predeterminada desprotegida en su checkout principal no contaba: una rama que ya había fusionado allí aún activaba este rechazo hasta que sus commits llegaran a un remoto.


3759Error: Claude Code process exited with code 14116Error: Claude Code process exited with code 1

3760```4117```

3761 4118 

4119En Windows, la compilación nativa puede salir con código `4294967295` justo después de que se completa un turno. Cuando esa salida llega a un límite de turno, sin mensaje esperando y sin tarea de fondo ejecutándose, la [extensión de VS Code](/docs/es/vs-code) cierra la sesión silenciosamente en lugar de mostrar este error. Su siguiente mensaje reanuda la conversación.

4120 

4121Antes de v2.1.273, la extensión mostraba el error para esa salida en cada límite de turno, aunque nada se perdiera.

4122 

3762**Qué hacer:**4123**Qué hacer:**

3763 4124 

3764* En VS Code, siga el enlace **Ver registros de salida** que se muestra con el error para ver el fallo subyacente4125* En VS Code, siga el enlace **Ver registros de salida** que se muestra con el error para ver el fallo subyacente


3782* Establezca la entrada de PATH como una variable de entorno de usuario o sistema, no en su perfil de PowerShell. La extensión no ejecuta su perfil, por lo que una edición de PATH que vive solo allí nunca la alcanza.4143* Establezca la entrada de PATH como una variable de entorno de usuario o sistema, no en su perfil de PowerShell. La extensión no ejecuta su perfil, por lo que una edición de PATH que vive solo allí nunca la alcanza.

3783* Reinicie VS Code después de cambiar PATH. La extensión verifica el PATH que VS Code capturó al inicio, por lo que un cambio de PATH solo tiene efecto después de un reinicio.4144* Reinicie VS Code después de cambiar PATH. La extensión verifica el PATH que VS Code capturó al inicio, por lo que un cambio de PATH solo tiene efecto después de un reinicio.

3784 4145 

4146<h3 id="the-connection-to-claude-code-ended-before-this-message-completed">

4147 La conexión a Claude Code terminó antes de que este mensaje se completara

4148</h3>

4149 

4150La [extensión de VS Code](/docs/es/vs-code) envió su mensaje al proceso `claude`, y la conexión terminó sin un error antes de que el proceso lo reconociera o lo completara. La extensión no puede saber si el mensaje fue procesado, por lo que le pide que lo envíe de nuevo:

4151 

4152```text theme={null}

4153The connection to Claude Code ended before this message completed — it may not have been processed, so please send it again.

4154```

4155 

4156**Qué hacer:**

4157 

4158* Envíe el mensaje de nuevo. El siguiente mensaje inicia un nuevo proceso `claude` que reanuda la conversación.

4159* Si se repite, ejecute `claude` en una terminal en el mismo proyecto. Un fallo que sigue terminando el proceso generalmente se reproduce allí con su mensaje de error real.

4160 

3785<h2 id="rewind-warnings-and-errors">4161<h2 id="rewind-warnings-and-errors">

3786 Advertencias y errores de Rewind4162 Advertencias y errores de Rewind

3787</h2>4163</h2>

fast-mode.md +16 −3

Details

32* Escribe `/fast` y presiona Tab para activar o desactivar32* Escribe `/fast` y presiona Tab para activar o desactivar

33* Establece `"fastMode": true` en tu [archivo de configuración de usuario](/docs/es/settings)33* Establece `"fastMode": true` en tu [archivo de configuración de usuario](/docs/es/settings)

34 34 

35De forma predeterminada, el modo rápido que activas en una sesión interactiva persiste entre sesiones. En [modo no interactivo](/docs/es/headless), con la bandera `-p`, `/fast` funciona solo en una sesión iniciada con el modo rápido en su valor [`--settings`](/docs/es/cli-reference#cli-flags), por ejemplo `claude -p --settings '{"fastMode": true}'`; el cambio se aplica solo a esa sesión y no se guarda como tu valor predeterminado, y en cualquier otra sesión no interactiva el comando reporta que el modo rápido no está disponible. Puedes configurar el modo rápido para que se reinicie cada sesión. Consulta [opción de participación por sesión](#require-per-session-opt-in) para obtener más detalles.35De forma predeterminada, el modo rápido que activas en una sesión interactiva persiste entre sesiones. Puedes configurar el modo rápido para que se reinicie cada sesión. Consulta [opción de participación por sesión](#require-per-session-opt-in) para obtener más detalles.

36 

37Fuera de una [sesión en la nube](#use-fast-mode-in-cloud-sessions), en [modo no interactivo](/docs/es/headless) con la bandera `-p`, `/fast` funciona solo en una sesión iniciada con el modo rápido en su valor [`--settings`](/docs/es/cli-reference#cli-flags), por ejemplo `claude -p --settings '{"fastMode": true}'`; el cambio se aplica solo a esa sesión y no se guarda como tu valor predeterminado. El formulario `-p` requiere Claude Code v2.1.205 o posterior. En cualquier otro lugar en modo no interactivo, el comando reporta que el modo rápido no está disponible.

36 38 

37Puedes ejecutar `/fast` mientras Claude está trabajando, y Claude Code activa o desactiva el modo rápido sin esperar a que termine el turno. Claude Code termina el turno en ejecución a su velocidad original, por lo que el cambio de velocidad entra en vigor a partir de tu siguiente turno. Si tu modelo actual no admite el modo rápido, activarlo también cambia tu modelo, y Claude Code utiliza el nuevo modelo a partir de su siguiente solicitud en ese turno.39Puedes ejecutar `/fast` mientras Claude está trabajando, y Claude Code activa o desactiva el modo rápido sin esperar a que termine el turno. Claude Code termina el turno en ejecución a su velocidad original, por lo que el cambio de velocidad entra en vigor a partir de tu siguiente turno. Si tu modelo actual no admite el modo rápido, activarlo también cambia tu modelo, y Claude Code utiliza el nuevo modelo a partir de su siguiente solicitud en ese turno.

38 40 


62 64 

63Claude Code reenvía el estado del modo rápido de la sesión a los dispositivos conectados a través de Control Remoto después de un cambio de modelo, una reconexión, o una [verificación de disponibilidad](#use-fast-mode-behind-proxies-and-llm-gateways) fallida.65Claude Code reenvía el estado del modo rápido de la sesión a los dispositivos conectados a través de Control Remoto después de un cambio de modelo, una reconexión, o una [verificación de disponibilidad](#use-fast-mode-behind-proxies-and-llm-gateways) fallida.

64 66 

67<h3 id="use-fast-mode-in-cloud-sessions">

68 Usar el modo rápido en sesiones en la nube

69</h3>

70 

71El modo rápido funciona en [sesiones en la nube](/docs/es/claude-code-on-the-web) cuando está disponible en tu cuenta, ya sea que la sesión se ejecute en infraestructura administrada por Anthropic o en un [ejecutor autohospedado](/docs/es/self-hosted-environments). Requiere Claude Code v2.1.271 o posterior en el entorno de la sesión.

72 

73Escribe `/fast on` en la sesión para activar el modo rápido. Se mantiene activado solo para esa sesión y no se guarda como tu valor predeterminado. Los [requisitos](#requirements) también se aplican en sesiones en la nube.

74 

65<h2 id="understand-the-cost-tradeoff">75<h2 id="understand-the-cost-tradeoff">

66 Comprender la compensación de costos76 Comprender la compensación de costos

67</h2>77</h2>


135* **Habilitación del propietario para Team y Enterprise**: el modo rápido está deshabilitado de forma predeterminada para organizaciones Team y Enterprise. Un propietario debe [habilitar explícitamente el modo rápido](#enable-fast-mode-for-your-organization) antes de que los usuarios puedan acceder a él.145* **Habilitación del propietario para Team y Enterprise**: el modo rápido está deshabilitado de forma predeterminada para organizaciones Team y Enterprise. Un propietario debe [habilitar explícitamente el modo rápido](#enable-fast-mode-for-your-organization) antes de que los usuarios puedan acceder a él.

136 146 

137<Note>147<Note>

138 Si el modo rápido no ha sido habilitado para su organización, el comando `/fast` mostrará "Fast mode has been disabled by your organization." Si la lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) de su organización excluye el modelo Opus del modo rápido, `/fast` se rechaza con "is not in your organization's allowed models". La excepción es una sesión ya en ejecución en un modelo Opus permitido que admita modo rápido: `/fast` habilita el modo rápido en su modelo actual en lugar de cambiar de modelos.148 Dos configuraciones de organización pueden bloquear la activación del modo rápido con `/fast`:

149 

150 * **Modo rápido no habilitado**: si el modo rápido no ha sido habilitado para su organización, activar el modo rápido con `/fast` muestra "Fast mode has been disabled by your organization."

151 * **Modelo de modo rápido no permitido**: si la lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) de su organización excluye el modelo Opus del modo rápido, activarlo se rechaza con "is not in your organization's allowed models". En una sesión ya en ejecución en un modelo Opus permitido que admita modo rápido, `/fast` en su lugar habilita el modo rápido en su modelo actual sin cambiar de modelos.

139</Note>152</Note>

140 153 

141<h3 id="enable-fast-mode-for-your-organization">154<h3 id="enable-fast-mode-for-your-organization">


173 186 

174En ambos casos, establezca `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1` para restaurar el modo rápido. `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` no se aplica a ninguno de estos casos, ya que solo omite verificaciones fallidas y ambos producen una respuesta deshabilitada en su lugar. La lista de permitidos de salida directa no ayuda en el caso de token portador, que nunca envía la solicitud.187En ambos casos, establezca `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1` para restaurar el modo rápido. `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` no se aplica a ninguno de estos casos, ya que solo omite verificaciones fallidas y ambos producen una respuesta deshabilitada en su lugar. La lista de permitidos de salida directa no ayuda en el caso de token portador, que nunca envía la solicitud.

175 188 

176Las variables afectan solo la verificación del lado del cliente. Cuando su organización tiene el modo rápido deshabilitado, la API rechaza solicitudes de modo rápido independientemente de si están configuradas.189Las variables afectan solo la verificación del lado del cliente. Cuando su organización tiene el modo rápido deshabilitado, la API rechaza solicitudes de modo rápido independientemente de si están configuradas. Un rechazo de la API se mantiene incluso con una variable de omisión configurada. Claude Code reintenta la solicitud rechazada a velocidad estándar, desactiva el modo rápido, y `/fast` reporta que su organización ha deshabilitado el modo rápido.

177 190 

178Establecer `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` también suprime la verificación de disponibilidad. Sin una verificación exitosa previamente en caché, `/fast` reporta "Fast mode is currently unavailable"; ambas variables de omisión restauran el modo rápido en esa configuración también.191Establecer `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` también suprime la verificación de disponibilidad. Sin una verificación exitosa previamente en caché, `/fast` reporta "Fast mode is currently unavailable"; ambas variables de omisión restauran el modo rápido en esa configuración también.

179 192 

Details

36* [Checkpoints](/docs/es/checkpointing), [sandboxing](/docs/es/sandboxing) y [Workflows](/docs/es/workflows)36* [Checkpoints](/docs/es/checkpointing), [sandboxing](/docs/es/sandboxing) y [Workflows](/docs/es/workflows)

37* Métricas [OpenTelemetry](/docs/es/monitoring-usage) y el [archivo de configuración administrado](/docs/es/managed-settings#delivery-mechanisms)37* Métricas [OpenTelemetry](/docs/es/monitoring-usage) y el [archivo de configuración administrado](/docs/es/managed-settings#delivery-mechanisms)

38 38 

39Tres de estos tienen diferencias específicas del proveedor:39Estos tienen diferencias específicas del proveedor:

40 40 

41* **Memoria CLAUDE.md**: los archivos `CLAUDE.md` se cargan en cada proveedor. Leer [archivos `AGENTS.md`](/docs/es/memory#agents-md) como instrucciones del proyecto también requiere una sesión que [obtiene banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching)

41* **Servidores MCP**: los [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) se cargan solo cuando su suscripción a claude.ai es el método de autenticación activo. La [búsqueda de herramientas](/docs/es/mcp#configure-tool-search) está desactivada de forma predeterminada cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte, y no es compatible con modelos de Google Cloud's Agent Platform anteriores a la generación Claude 4.5 ni con [implementaciones de Microsoft Foundry hospedadas en Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)42* **Servidores MCP**: los [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) se cargan solo cuando su suscripción a claude.ai es el método de autenticación activo. La [búsqueda de herramientas](/docs/es/mcp#configure-tool-search) está desactivada de forma predeterminada cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte, y no es compatible con modelos de Google Cloud's Agent Platform anteriores a la generación Claude 4.5 ni con [implementaciones de Microsoft Foundry hospedadas en Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)

42* **Subagentes**: el [subagente Explore integrado](/docs/es/sub-agents#built-in-subagents) limita su modelo heredado a Opus en la API de Claude, e hereda el modelo de la conversación principal directamente en cualquier otro proveedor, incluido Claude Platform en AWS43* **Subagentes**: el [subagente Explore integrado](/docs/es/sub-agents#built-in-subagents) limita su modelo heredado a Opus en la API de Claude, e hereda el modelo de la conversación principal directamente en cualquier otro proveedor, incluido Claude Platform en AWS

43* **[Comandos](/docs/es/commands#all-commands)**:44* **[Comandos](/docs/es/commands#all-commands)**:


226 227 

227<Note>228<Note>

228 Si se autentica a través de una [puerta de enlace LLM](/docs/es/llm-gateway), la disponibilidad de características coincide con el proveedor subyacente al que la puerta de enlace reenvía, excepto por las características que Claude Code desactiva. Siempre que `ANTHROPIC_BASE_URL` apunte a un host distinto de `api.anthropic.com`, Claude Code desactiva características como [Remote Control](/docs/es/remote-control#requirements) y [configuración administrada por servidor](/docs/es/server-managed-settings#platform-availability), sea lo que sea que la puerta de enlace reenvíe. Algunas características solo de Anthropic, como [Advisor](/docs/es/advisor), funcionan solo si la puerta de enlace reenvía solicitudes intactas a la API de Anthropic.229 Si se autentica a través de una [puerta de enlace LLM](/docs/es/llm-gateway), la disponibilidad de características coincide con el proveedor subyacente al que la puerta de enlace reenvía, excepto por las características que Claude Code desactiva. Siempre que `ANTHROPIC_BASE_URL` apunte a un host distinto de `api.anthropic.com`, Claude Code desactiva características como [Remote Control](/docs/es/remote-control#requirements) y [configuración administrada por servidor](/docs/es/server-managed-settings#platform-availability), sea lo que sea que la puerta de enlace reenvíe. Algunas características solo de Anthropic, como [Advisor](/docs/es/advisor), funcionan solo si la puerta de enlace reenvía solicitudes intactas a la API de Anthropic.

230 

231 Para ver cómo difieren las solicitudes que Claude Code envía entre una puerta de enlace con formato Amazon Bedrock o Agent Platform, una puerta de enlace `ANTHROPIC_BASE_URL` y un inicio de sesión de puerta de enlace de aplicaciones de Claude, consulte [comportamiento del cliente por método de conexión](/docs/es/llm-gateway-protocol#how-the-connection-method-changes-client-behavior).

229</Note>232</Note>

230 233 

231<h3 id="summary-by-provider">234<h3 id="summary-by-provider">


303 306 

304| Característica | Pro | Max | Team | Enterprise |307| Característica | Pro | Max | Team | Enterprise |

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

306| [Claude Code en la web](/docs/es/claude-code-on-the-web) | ✓ | ✓ | ✓ | ✓ <sup><a href="#fn6">6</a></sup> |309| [Cloud sessions](/docs/es/claude-code-on-the-web) | ✓ | ✓ | ✓ | ✓ <sup><a href="#fn6">6</a></sup> |

307| [Routines](/docs/es/routines) | ✓ | ✓ | ✓ | ✓ |310| [Routines](/docs/es/routines) | ✓ | ✓ | ✓ | ✓ |

308| [Remote Control](/docs/es/remote-control) | ✓ | ✓ | Habilitado por administrador | Habilitado por administrador |311| [Remote Control](/docs/es/remote-control) | ✓ | ✓ | Habilitado por administrador | Habilitado por administrador |

309| [Channels](/docs/es/channels) | ✓ | ✓ | Habilitado por administrador | Habilitado por administrador |312| [Channels](/docs/es/channels) | ✓ | ✓ | Habilitado por administrador | Habilitado por administrador |


319| [API de cumplimiento](https://platform.claude.com/docs/en/api/compliance) | ✗ | ✗ | ✗ | ✓ |322| [API de cumplimiento](https://platform.claude.com/docs/en/api/compliance) | ✗ | ✗ | ✗ | ✓ |

320| [Zero Data Retention](/docs/es/zero-data-retention) | ✗ | ✗ | ✗ | ✓ <sup><a href="#fn7">7</a></sup> |323| [Zero Data Retention](/docs/es/zero-data-retention) | ✗ | ✗ | ✗ | ✓ <sup><a href="#fn7">7</a></sup> |

321 324 

322<span id="fn6" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>6</sup> En Enterprise, requiere un asiento premium o un asiento de Chat + Claude Code. Consulte [Claude Code en la web](/docs/es/claude-code-on-the-web).<br />325<span id="fn6" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>6</sup> En Enterprise, requiere un asiento premium o un asiento de Chat + Claude Code. Consulte [Cloud sessions](/docs/es/claude-code-on-the-web).<br />

323<span id="fn7" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>7</sup> No incluido en el plan Enterprise estándar. Requiere habilitación separada por Anthropic para cuentas calificadas. Consulte [Zero Data Retention](/docs/es/zero-data-retention).326<span id="fn7" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>7</sup> No incluido en el plan Enterprise estándar. Requiere habilitación separada por Anthropic para cuentas calificadas. Consulte [Zero Data Retention](/docs/es/zero-data-retention).

324 327 

325Para precios y la comparación completa de planes, consulte [Planes Team](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) y [Planes Enterprise](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).328Para precios y la comparación completa de planes, consulte [Planes Team](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) y [Planes Enterprise](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).

Details

294 294 

295 * El prompt del sistema del agente, no el prompt del sistema de Claude Code295 * El prompt del sistema del agente, no el prompt del sistema de Claude Code

296 * Contenido completo de skills listadas en el campo `skills:` del agente296 * Contenido completo de skills listadas en el campo `skills:` del agente

297 * CLAUDE.md y estado de git, excepto los agentes Explore y Plan integrados [omiten ambos](/docs/es/sub-agents#what-loads-at-startup)297 * CLAUDE.md y estado de git, excepto los agentes Explore y Plan integrados [omiten ambos](/docs/es/sub-agents#what-loads-at-startup), y un agente cuya definición establece [`omitClaudeMd`](/docs/es/sub-agents#supported-frontmatter-fields) omite los archivos CLAUDE.md de usuario, proyecto y local

298 * Cualquier contexto que el agente principal pase en el prompt298 * Cualquier contexto que el agente principal pase en el prompt

299 299 

300 Para un [fork](/docs/es/sub-agents#fork-the-current-conversation), Claude Code carga la conversación del principal hasta ahora, el prompt del sistema y las herramientas en su lugar.300 Para un [fork](/docs/es/sub-agents#fork-the-current-conversation), Claude Code carga la conversación del principal hasta ahora, el prompt del sistema y las herramientas en su lugar.

fullscreen.md +1 −0

Details

102* **Haga clic en una sugerencia en la lista de comandos `/` o archivos `@`** para aceptarla. Pasar el ratón resalta la fila bajo su cursor.102* **Haga clic en una sugerencia en la lista de comandos `/` o archivos `@`** para aceptarla. Pasar el ratón resalta la fila bajo su cursor.

103* **Haga clic en una opción en un menú de selección** para elegirla. Esto cubre solicitudes de permisos, `/model`, `/config` y otros diálogos que muestran una lista de opciones. Pasar el ratón muestra un puntero en la fila bajo su cursor. Requiere Claude Code v2.1.187 o posterior.103* **Haga clic en una opción en un menú de selección** para elegirla. Esto cubre solicitudes de permisos, `/model`, `/config` y otros diálogos que muestran una lista de opciones. Pasar el ratón muestra un puntero en la fila bajo su cursor. Requiere Claude Code v2.1.187 o posterior.

104* **Haga clic en una opción en un menú de selección múltiple** para alternarla, y haga clic en el botón de envío para confirmar sus opciones. Hacer clic en una fila de texto libre, como la fila `Other` en una pregunta de opción múltiple, enfoca su campo de entrada para que pueda escribir una respuesta. Requiere Claude Code v2.1.208 o posterior.104* **Haga clic en una opción en un menú de selección múltiple** para alternarla, y haga clic en el botón de envío para confirmar sus opciones. Hacer clic en una fila de texto libre, como la fila `Other` en una pregunta de opción múltiple, enfoca su campo de entrada para que pueda escribir una respuesta. Requiere Claude Code v2.1.208 o posterior.

105* **Haga clic en un valor de configuración en el panel `/config`** para cambiarlo, y desplácese por la lista de configuración con la rueda del ratón. Requiere Claude Code v2.1.271 o posterior.

105* **Haga clic en un resultado de herramienta contraído** para expandirlo y ver la salida completa. Haga clic de nuevo para contraerlo. La llamada de herramienta y su resultado se expanden juntos. Solo los mensajes que tienen más para mostrar son clicables.106* **Haga clic en un resultado de herramienta contraído** para expandirlo y ver la salida completa. Haga clic de nuevo para contraerlo. La llamada de herramienta y su resultado se expanden juntos. Solo los mensajes que tienen más para mostrar son clicables.

106 * Hacer clic también expande la salida de un comando shell `!`, ya sea un resultado truncado anterior o la fila de progreso en vivo mientras se ejecuta el comando. Requiere Claude Code v2.1.257 o posterior.107 * Hacer clic también expande la salida de un comando shell `!`, ya sea un resultado truncado anterior o la fila de progreso en vivo mientras se ejecuta el comando. Requiere Claude Code v2.1.257 o posterior.

107* **Mantenga presionado `Cmd` en macOS, o `Ctrl` en Linux y Windows, y haga clic en una URL o ruta de archivo** para abrirla. Las URLs simples `http://` y `https://` se abren en su navegador, y las rutas de archivo en la salida de herramientas, como las que se imprimen después de un Edit o Write, se abren en su aplicación predeterminada. Un clic simple sin el modificador no abre enlaces, coincidiendo con el comportamiento de terminal nativo.108* **Mantenga presionado `Cmd` en macOS, o `Ctrl` en Linux y Windows, y haga clic en una URL o ruta de archivo** para abrirla. Las URLs simples `http://` y `https://` se abren en su navegador, y las rutas de archivo en la salida de herramientas, como las que se imprimen después de un Edit o Write, se abren en su aplicación predeterminada. Un clic simple sin el modificador no abre enlaces, coincidiendo con el comportamiento de terminal nativo.

Details

11Varios productos comparten el nombre Claude Code. Esta página cubre la integración de flujo de trabajo `claude-code-action`, que configura con archivos de flujo de trabajo en su repositorio. Para los productos relacionados, consulte:11Varios productos comparten el nombre Claude Code. Esta página cubre la integración de flujo de trabajo `claude-code-action`, que configura con archivos de flujo de trabajo en su repositorio. Para los productos relacionados, consulte:

12 12 

13* [Code Review](/docs/es/code-review): revisión automática en cada solicitud de extracción, sin escribir un flujo de trabajo13* [Code Review](/docs/es/code-review): revisión automática en cada solicitud de extracción, sin escribir un flujo de trabajo

14* [Claude Code en la web](/docs/es/claude-code-on-the-web): sesiones de Claude Code desde su navegador o teléfono14* [Claude Code en la nube](/docs/es/claude-code-on-the-web): sesiones de Claude Code que se ejecutan en infraestructura en la nube en lugar de su máquina

15* [Claude Agent SDK](/docs/es/agent-sdk/overview): automatización personalizada fuera de GitHub Actions. La GitHub Action de Claude Code se construye sobre el SDK15* [Claude Agent SDK](/docs/es/agent-sdk/overview): automatización personalizada fuera de GitHub Actions. La GitHub Action de Claude Code se construye sobre el SDK

16* [GitHub Enterprise Server](/docs/es/github-enterprise-server): Claude Code con GitHub autohospedado16* [GitHub Enterprise Server](/docs/es/github-enterprise-server): Claude Code con GitHub autohospedado

17 17 

Details

41 Configurar la integración41 Configurar la integración

42</h2>42</h2>

43 43 

44Más allá de los requisitos previos, crea cuatro cosas: una identidad de GitHub para Claude Code GitHub Action, la configuración de confianza del lado de la nube, los secretos del repositorio y el archivo de flujo de trabajo. Los pasos a continuación lo guían a través de cada uno.44Más allá de los requisitos previos, crea una identidad de GitHub para Claude Code GitHub Action, la configuración de confianza del lado de la nube, los secretos del repositorio y el archivo de flujo de trabajo. Los pasos a continuación lo guían a través de cada uno.

45 45 

46<Steps>46<Steps>

47 <Step title="Elija una identidad de GitHub">47 <Step title="Elija una identidad de GitHub">

48 Claude Code GitHub Action envía confirmaciones y publica comentarios a través de una identidad de GitHub. La [configuración rápida](/docs/es/github-actions#quick-setup) instala la aplicación oficial de Claude GitHub para esto. Con un proveedor en la nube, elige la identidad usted mismo:48 Claude Code GitHub Action envía confirmaciones y publica comentarios a través de una identidad de GitHub. La [configuración rápida](/docs/es/github-actions#quick-setup) instala la aplicación oficial de Claude GitHub para esto. Con un proveedor en la nube, elige la identidad usted mismo:

49 49 

50 * **[Aplicación oficial de Claude GitHub](https://github.com/apps/claude)**: instálela en el repositorio, o salte al siguiente paso si ya está instalada50 * **[Aplicación oficial de Claude GitHub](https://github.com/apps/claude)**: instálela en el repositorio, o salte al siguiente paso si ya está instalada

51 * **Aplicación personalizada de GitHub**: cree su propia aplicación, descrita a continuación, cuando desee solo los tres permisos que usa Claude Code GitHub Action en lugar del [conjunto completo de la aplicación oficial](/docs/es/github-actions#github-app-permissions)51 * **Aplicación personalizada de GitHub**: cree su propia aplicación cuando desee solo los tres permisos que usa Claude Code GitHub Action en lugar del [conjunto completo de la aplicación oficial](/docs/es/github-actions#github-app-permissions)

52 * **Token automático `GITHUB_TOKEN` de GitHub**: sin aplicación para crear o instalar, pero GitHub no activa sus flujos de trabajo de CI en confirmaciones realizadas con él52 * **Token automático `GITHUB_TOKEN` de GitHub**: sin aplicación para crear o instalar, pero GitHub no activa sus flujos de trabajo de CI en confirmaciones realizadas con él

53 53 

54 Los ejemplos de flujo de trabajo en el cuarto paso se autentican con una aplicación personalizada. Ese paso también dice qué cambiar para las otras dos opciones.54 Los ejemplos de flujo de trabajo en el cuarto paso se autentican con una aplicación personalizada. Ese paso también dice qué cambiar para las otras dos opciones.

Details

4 4 

5# Claude Code con GitHub Enterprise Server5# Claude Code con GitHub Enterprise Server

6 6 

7> Conecte Claude Code a su instancia de GitHub Enterprise Server autohospedada para sesiones web, revisión de código y mercados de plugins.7> Conecte Claude Code a su instancia de GitHub Enterprise Server autohospedada para sesiones en la nube, revisión de código y mercados de plugins.

8 8 

9<Note>9<Note>

10 La compatibilidad con GitHub Enterprise Server está disponible para planes Team y Enterprise.10 La compatibilidad con GitHub Enterprise Server está disponible para planes Team y Enterprise.

11</Note>11</Note>

12 12 

13La compatibilidad con GitHub Enterprise Server (GHES) permite que su organización use Claude Code con repositorios alojados en su instancia de GitHub autogestionada en lugar de github.com. Una vez que un propietario conecta su instancia de GHES, los desarrolladores pueden ejecutar sesiones web y obtener revisiones de código automatizadas sin ninguna configuración por repositorio. Los mercados de plugins alojados en su instancia también son compatibles; los requisitos de credenciales varían según la superficie, como se describe en [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes).13La compatibilidad con GitHub Enterprise Server (GHES) permite que su organización use Claude Code con repositorios alojados en su instancia de GitHub autogestionada en lugar de github.com. Una vez que un propietario conecta su instancia de GHES, los desarrolladores pueden ejecutar sesiones en la nube y obtener revisiones de código automatizadas sin ninguna configuración por repositorio. Los mercados de plugins alojados en su instancia también son compatibles; los requisitos de credenciales varían según la superficie, como se describe en [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes).

14 14 

15Para repositorios en github.com, consulte [Claude Code en la web](/docs/es/claude-code-on-the-web) y [Revisión de código](/docs/es/code-review). Para ejecutar Claude en su propia infraestructura de CI, consulte [GitHub Actions](/docs/es/github-actions).15Para repositorios en github.com, consulte [Claude Code en la nube](/docs/es/claude-code-on-the-web) y [Revisión de código](/docs/es/code-review). Para ejecutar Claude en su propia infraestructura de CI, consulte [GitHub Actions](/docs/es/github-actions).

16 16 

17<h2 id="what-works-with-github-enterprise-server">17<h2 id="what-works-with-github-enterprise-server">

18 Qué funciona con GitHub Enterprise Server18 Qué funciona con GitHub Enterprise Server


22 22 

23| Característica | Compatibilidad con GHES | Notas |23| Característica | Compatibilidad con GHES | Notas |

24| :----------------------- | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |24| :----------------------- | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| Claude Code en la web | ✅ Compatible | Un propietario conecta la instancia de GHES una vez; los desarrolladores usan `claude --cloud` o [claude.ai/code](https://claude.ai/code) como de costumbre |25| Sesiones en la nube | ✅ Compatible | Un propietario conecta la instancia de GHES una vez; los desarrolladores usan `claude --cloud` o [claude.ai/code](https://claude.ai/code) como de costumbre |

26| Revisión de código | ✅ Compatible | Las mismas revisiones automatizadas de PR que en github.com |26| Revisión de código | ✅ Compatible | Las mismas revisiones automatizadas de PR que en github.com |

27| Claude Security | ✅ Compatible | Disponible en versión beta pública para planes Enterprise en [claude.ai/security](https://claude.ai/security) |27| Claude Security | ✅ Compatible | Disponible en versión beta pública para planes Enterprise en [claude.ai/security](https://claude.ai/security) |

28| Sesiones de Teleport | ✅ Compatible | Mover sesiones entre web y terminal con `--teleport` |28| Sesiones de Teleport | ✅ Compatible | Mover sesiones entre nube y terminal con `--teleport` |

29| Mercados de plugins | ✅ Compatible | Los requisitos de credenciales difieren según la superficie. Consulte [Mercados de plugins en GHES](#plugin-marketplaces-on-ghes) |29| Mercados de plugins | ✅ Compatible | Los requisitos de credenciales difieren según la superficie. Consulte [Mercados de plugins en GHES](#plugin-marketplaces-on-ghes) |

30| Métricas de contribución | ✅ Compatible | Entregadas a través de webhooks al [panel de análisis](/docs/es/analytics) |30| Métricas de contribución | ✅ Compatible | Entregadas a través de webhooks al [panel de análisis](/docs/es/analytics) |

31| GitHub Actions | ✅ Compatible | Requiere configuración manual del flujo de trabajo; `/install-github-app` es solo para github.com |31| GitHub Actions | ✅ Compatible | Requiere configuración manual del flujo de trabajo; `/install-github-app` es solo para github.com |


110cd api-service110cd api-service

111```111```

112 112 

113Luego inicie una sesión web. Claude detecta el host de GHES desde su remoto de git y enruta la sesión a través de su instancia configurada de la organización:113Luego inicie una sesión en la nube. Claude detecta el host de GHES desde su remoto de git y enruta la sesión a través de su instancia configurada de la organización:

114 114 

115```bash theme={null}115```bash theme={null}

116claude --cloud "Add retry logic to the payment webhook handler"116claude --cloud "Add retry logic to the payment webhook handler"

117```117```

118 118 

119La sesión clona su repositorio desde GHES e inserta cambios en una rama. Monitoree el progreso en [claude.ai/code](https://claude.ai/code). Consulte [Claude Code en la web](/docs/es/claude-code-on-the-web) para el flujo de trabajo completo de sesión en la nube, incluida revisión de diferencias, corrección automática y rutinas.119La sesión clona su repositorio desde GHES e inserta cambios en una rama. Monitoree el progreso en [claude.ai/code](https://claude.ai/code). Consulte [Claude Code en la nube](/docs/es/claude-code-on-the-web) para el flujo de trabajo completo de sesión en la nube, incluida revisión de diferencias, corrección automática y rutinas.

120 120 

121<h3 id="teleport-sessions-to-your-terminal">121<h3 id="teleport-sessions-to-your-terminal">

122 Sesiones de Teleport a su terminal122 Sesiones de Teleport a su terminal

123</h3>123</h3>

124 124 

125Extraiga una sesión web a su terminal local con `claude --teleport`. Teleport verifica que esté en un checkout del mismo repositorio de GHES antes de obtener la rama y cargar el historial de sesiones. Consulte [requisitos de teleport](/docs/es/claude-code-on-the-web#teleport-requirements) para obtener detalles.125Extraiga una sesión en la nube a su terminal local con `claude --teleport`. Teleport verifica que esté en un checkout del mismo repositorio de GHES antes de obtener la rama y cargar el historial de sesiones. Consulte [requisitos de teleport](/docs/es/claude-code-on-the-web#teleport-requirements) para obtener detalles.

126 126 

127<h2 id="plugin-marketplaces-on-ghes">127<h2 id="plugin-marketplaces-on-ghes">

128 Mercados de plugins en GHES128 Mercados de plugins en GHES


136| Configuración administrada (`extraKnownMarketplaces`) | Claude Code registra la entrada y clona el repositorio usando las credenciales de git existentes de la máquina | Acceso a Git a su host de GHES desde su máquina |136| Configuración administrada (`extraKnownMarketplaces`) | Claude Code registra la entrada y clona el repositorio usando las credenciales de git existentes de la máquina | Acceso a Git a su host de GHES desde su máquina |

137| Configuración de plugins de la organización en claude.ai | Un Propietario selecciona la instancia de GHES como fuente; el backend de Anthropic obtiene y sincroniza el repositorio usando la GitHub App de [configuración de administrador](#admin-setup) | Nada por usuario una vez agregado. El Propietario que lo agrega necesita su propia cuenta de GitHub Enterprise conectada como verificación de acceso, y la GitHub App debe estar instalada en el repositorio del mercado |137| Configuración de plugins de la organización en claude.ai | Un Propietario selecciona la instancia de GHES como fuente; el backend de Anthropic obtiene y sincroniza el repositorio usando la GitHub App de [configuración de administrador](#admin-setup) | Nada por usuario una vez agregado. El Propietario que lo agrega necesita su propia cuenta de GitHub Enterprise conectada como verificación de acceso, y la GitHub App debe estar instalada en el repositorio del mercado |

138| Configuración de usuario en claude.ai | El backend de Anthropic obtiene el repositorio usando la conexión de GitHub Enterprise del usuario que lo envía | Su propia cuenta de GitHub Enterprise conectada a Claude |138| Configuración de usuario en claude.ai | El backend de Anthropic obtiene el repositorio usando la conexión de GitHub Enterprise del usuario que lo envía | Su propia cuenta de GitHub Enterprise conectada a Claude |

139| Claude Code en la web | Las sesiones en la nube clonan mercados dentro del sandbox de la sesión. El sandbox solo puede alcanzar su instancia de GHES cuando el repositorio de la sesión está en esa misma instancia, y sus credenciales de git se limitan a los repositorios de la sesión | No es confiable para mercados alojados en GHES: un host diferente al repositorio de la sesión no es accesible, e incluso las instalaciones en la misma instancia pueden fallar. Use la CLI, la configuración administrada o claude.ai en su lugar |139| Sesiones en la nube | Las sesiones en la nube clonan mercados dentro del sandbox de la sesión. El sandbox solo puede alcanzar su instancia de GHES cuando el repositorio de la sesión está en esa misma instancia, y sus credenciales de git se limitan a los repositorios de la sesión | No es confiable para mercados alojados en GHES: un host diferente al repositorio de la sesión no es accesible, e incluso las instalaciones en la misma instancia pueden fallar. Use la CLI, la configuración administrada o claude.ai en su lugar |

140 140 

141<Warning>141<Warning>

142 Las conexiones de GitHub Enterprise en claude.ai son por usuario cuando se agrega un mercado desde la configuración de usuario. La [configuración de administrador](#admin-setup) conecta su instancia de GHES a su organización, pero no conecta cuentas de usuario individuales: cada usuario que agregue un mercado de GHES desde su propia configuración debe conectar primero su propia cuenta de GitHub Enterprise, y la conexión de un usuario, incluida la del Propietario, no cubre a nadie más. Los mercados agregados por un Propietario en la configuración de plugins de la organización no imponen este requisito a los usuarios, porque las obtenciones continuas usan la GitHub App de la organización. El Propietario que agrega el mercado aún necesita su propia cuenta de GitHub Enterprise conectada en el momento de la adición.142 Las conexiones de GitHub Enterprise en claude.ai son por usuario cuando se agrega un mercado desde la configuración de usuario. La [configuración de administrador](#admin-setup) conecta su instancia de GHES a su organización, pero no conecta cuentas de usuario individuales: cada usuario que agregue un mercado de GHES desde su propia configuración debe conectar primero su propia cuenta de GitHub Enterprise, y la conexión de un usuario, incluida la del Propietario, no cubre a nadie más. Los mercados agregados por un Propietario en la configuración de plugins de la organización no imponen este requisito a los usuarios, porque las obtenciones continuas usan la GitHub App de la organización. El Propietario que agrega el mercado aún necesita su propia cuenta de GitHub Enterprise conectada en el momento de la adición.


220 Solución de problemas220 Solución de problemas

221</h2>221</h2>

222 222 

223<h3 id="web-session-fails-to-clone-repository">223<h3 id="cloud-session-fails-to-clone-repository">

224 La sesión web falla al clonar el repositorio224 La sesión en la nube falla al clonar el repositorio

225</h3>225</h3>

226 226 

227Si `claude --cloud` falla con un error de clonación, verifique que un Propietario haya completado la configuración para su instancia de GHES y que la GitHub App esté instalada en el repositorio en el que está trabajando. Pida al Propietario que conectó la instancia que confirme que el nombre de host registrado en la configuración de Claude coincida con el nombre de host en su remoto de git.227Si `claude --cloud` falla con un error de clonación, verifique que un Propietario haya completado la configuración para su instancia de GHES y que la GitHub App esté instalada en el repositorio en el que está trabajando. Pida al Propietario que conectó la instancia que confirme que el nombre de host registrado en la configuración de Claude coincida con el nombre de host en su remoto de git.


246 Instancia de GHES no accesible246 Instancia de GHES no accesible

247</h3>247</h3>

248 248 

249Si las revisiones o sesiones web se agotan, su instancia de GHES puede no ser accesible desde la infraestructura de Anthropic. Confirme que su firewall permite conexiones entrantes desde las [direcciones IP de salida](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) alcanzan GHES desde dentro de su red, así que para ellas verifique la ruta de red propia del ejecutor y el [conector SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) en su lugar.249Si las revisiones o sesiones en la nube alojadas por Anthropic se agotan, su instancia de GHES puede no ser accesible desde la infraestructura de Anthropic. Confirme que su firewall permite conexiones entrantes desde las [direcciones IP de salida](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) alcanzan GHES desde dentro de su red, así que para ellas verifique la ruta de red propia del ejecutor y el [conector SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) en su lugar.

250 250 

251<h3 id="session-start-fails-with-unable-to-get-organization-uuid">251<h3 id="session-start-fails-with-unable-to-get-organization-uuid">

252 El inicio de sesión falla con `Unable to get organization UUID`252 El inicio de sesión falla con `Unable to get organization UUID`

253</h3>253</h3>

254 254 

255Las sesiones web requieren una organización de Equipo o Empresa. Inicie sesión con `/login` usando su cuenta de organización. Si se autentica con una clave de API en su lugar, las sesiones web fallan antes con un mensaje pidiéndole que ejecute `/login`.255Las sesiones en la nube requieren una organización de Equipo o Empresa. Inicie sesión con `/login` usando su cuenta de organización. Si se autentica con una clave de API en su lugar, las sesiones en la nube fallan antes con un mensaje pidiéndole que ejecute `/login`.

256 256 

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

258 Recursos relacionados258 Recursos relacionados

glossary.md +22 −5

Details

12 A12 A

13</h2>13</h2>

14 14 

15<h3 id="agents-md">

16 AGENTS.md

17</h3>

18 

19Un archivo markdown de instrucciones de proyecto que usted escribe para agentes de codificación de IA. Si su repositorio tiene uno y no tiene [CLAUDE.md](#claude-md), Claude lo lee como sus instrucciones de proyecto sin que usted agregue un segundo archivo. Puede cambiar la configuración de **Project instructions** en `/config` para que Claude lea ambos archivos o solo `CLAUDE.md`. Leer `AGENTS.md` directamente requiere Claude Code v2.1.277 o posterior en una sesión que obtenga banderas de características; en otras versiones, impórtelo desde un CLAUDE.md.

20 

21Más información: [AGENTS.md](/docs/es/memory#agents-md)

22 

15<h3 id="agent-teams">23<h3 id="agent-teams">

16 Agent teams24 Agent teams

17</h3>25</h3>


122 130 

123Un archivo markdown de instrucciones persistentes que usted escribe para Claude, cargado al inicio de cada sesión como un mensaje de usuario después del prompt del sistema. Coloque convenciones de proyecto, notas de arquitectura y reglas "siempre haga X" aquí. El CLAUDE.md de raíz de proyecto sobrevive a [compaction](#compaction) y se relee fresco desde el disco después.131Un archivo markdown de instrucciones persistentes que usted escribe para Claude, cargado al inicio de cada sesión como un mensaje de usuario después del prompt del sistema. Coloque convenciones de proyecto, notas de arquitectura y reglas "siempre haga X" aquí. El CLAUDE.md de raíz de proyecto sobrevive a [compaction](#compaction) y se relee fresco desde el disco después.

124 132 

125Puede colocar CLAUDE.md en alcance de proyecto en `./CLAUDE.md` o `./.claude/CLAUDE.md`, en alcance de usuario en `~/.claude/CLAUDE.md`, o como [managed policy](#managed-settings) para su organización. Todos los archivos descubiertos se concatenan en contexto en lugar de anularse entre sí, ordenados de alcance más amplio a más específico.133Puede colocar CLAUDE.md en alcance de proyecto en `./CLAUDE.md` o `./.claude/CLAUDE.md`, en alcance de usuario en `~/.claude/CLAUDE.md`, o como [managed policy](#managed-settings) para su organización. Todos los archivos descubiertos se concatenan en contexto en lugar de anularse entre sí, ordenados de alcance más amplio a más específico. Claude Code también puede cargar archivos [AGENTS.md](#agents-md) de un proyecto, por sí solos o junto con CLAUDE.md.

126 134 

127Más información: [CLAUDE.md files](/docs/es/memory#claude-md-files)135Más información: [CLAUDE.md files](/docs/es/memory#claude-md-files)

128 136 

137<h3 id="cloud-session">

138 Cloud session

139</h3>

140 

141Una sesión de Claude Code que sigue ejecutándose después de cerrar su laptop, porque se ejecuta en infraestructura en la nube en lugar de su máquina: administrada por Anthropic de forma predeterminada, o un [entorno autohospedado](/docs/es/self-hosted-environments) que su organización opera. Inicia una desde claude.ai/code, la aplicación móvil de Claude, la aplicación de escritorio con **Cloud** seleccionado, `claude --cloud`, o una [rutina](/docs/es/routines). Una sesión en su terminal, IDE o la aplicación de escritorio con **Local** seleccionado es una sesión local; para acceder a una sesión local desde otro dispositivo, use [Remote Control](#remote-control).

142 

143Más información: [Use Claude Code in the cloud](/docs/es/claude-code-on-the-web)

144 

129<h3 id="command">145<h3 id="command">

130 Command146 Command

131</h3>147</h3>


332 Remote Control348 Remote Control

333</h3>349</h3>

334 350 

335Una forma de continuar una sesión local de Claude Code desde su teléfono o navegador a través de claude.ai. Su código se ejecuta y los archivos permanecen en su máquina; la interfaz es remota. Diferente de Claude Code en la web, que se ejecuta en un sandbox en la nube.351Una forma de continuar una sesión local de Claude Code desde su teléfono o navegador a través de claude.ai. Su código se ejecuta y los archivos permanecen en su máquina; la interfaz es remota. Diferente de una [sesión en la nube](/docs/es/claude-code-on-the-web), que se ejecuta en un sandbox en la nube.

336 352 

337Más información: [Remote Control](/docs/es/remote-control)353Más información: [Remote Control](/docs/es/remote-control)

338 354 


408 Teleport424 Teleport

409</h3>425</h3>

410 426 

411Un comando, `/teleport`, que extrae una sesión de Claude Code en la nube a su terminal local. Claude obtiene la rama, carga el historial de conversación y reanuda desde el último estado de la sesión web. La dirección inversa es `--cloud`, que envía una tarea local para ejecutarse en la web.427Un comando, `/teleport`, que extrae una sesión de Claude Code en la nube a su terminal local. Claude obtiene la rama, carga el historial de conversación y reanuda desde el último estado de la sesión en la nube. La dirección inversa es `--cloud`, que envía una tarea local para ejecutarse en la nube.

412 428 

413Más información: [De web a terminal](/docs/es/claude-code-on-the-web#from-web-to-terminal)429Más información: [De nube a terminal](/docs/es/claude-code-on-the-web#from-cloud-to-terminal)

414 430 

415<h3 id="tool">431<h3 id="tool">

416 Tool432 Tool


461Estos términos aparecen en documentos más antiguos, publicaciones de blog y contenido de la comunidad. Use el nombre actual cuando busque en este sitio.477Estos términos aparecen en documentos más antiguos, publicaciones de blog y contenido de la comunidad. Use el nombre actual cuando busque en este sitio.

462 478 

463| Término antiguo | Ahora llamado | Notas |479| Término antiguo | Ahora llamado | Notas |

464| --------------- | --------------------------------------------- | ---------------------------------------------- |480| ------------------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------- |

465| Headless mode | [Non-interactive mode](#non-interactive-mode) | Misma bandera `-p`, mismo comportamiento |481| Headless mode | [Non-interactive mode](#non-interactive-mode) | Misma bandera `-p`, mismo comportamiento |

482| Web session; "Claude Code on the web" como el nombre para cualquier sesión en la nube | [Cloud session](#cloud-session) | "Claude Code on the web" ahora nombra solo la superficie del navegador en claude.ai/code |

466| Custom commands | [Skills](#skill) | Los archivos `.claude/commands/` aún funcionan |483| Custom commands | [Skills](#skill) | Los archivos `.claude/commands/` aún funcionan |

467| Slash commands | Commands | "Slash" se eliminó de la copia del producto |484| Slash commands | Commands | "Slash" se eliminó de la copia del producto |

headless.md +7 −1

Details

343La bandera `--allowedTools` utiliza [sintaxis de regla de permiso](/docs/es/settings-reference#permission-rule-syntax). El ` *` final habilita la coincidencia de prefijo, por lo que `Bash(git diff *)` permite cualquier comando que comience con `git diff`. El espacio antes de `*` es importante: sin él, `Bash(git diff*)` también coincidiría con `git diff-index`.343La bandera `--allowedTools` utiliza [sintaxis de regla de permiso](/docs/es/settings-reference#permission-rule-syntax). El ` *` final habilita la coincidencia de prefijo, por lo que `Bash(git diff *)` permite cualquier comando que comience con `git diff`. El espacio antes de `*` es importante: sin él, `Bash(git diff*)` también coincidiría con `git diff-index`.

344 344 

345<Note>345<Note>

346 Las [skills](/docs/es/skills) invocadas por el usuario y los comandos personalizados funcionan en modo `-p`: incluya `/skill-name` en la cadena de indicador y Claude Code lo expande antes de ejecutar. Los comandos integrados que solo se ejecutan en la interfaz de terminal, como `/login`, no están disponibles en modo `-p`. `/model`, `/effort`, `/fast`, `/color` y `/rename` aceptan el valor como argumento, por ejemplo `/model sonnet`, y `/mcp` sin argumento imprime un resumen de texto del estado del servidor; estas formas requieren Claude Code v2.1.205 o posterior y siguen las [notas de disponibilidad](/docs/es/commands#all-commands) de cada comando. Para cambiar una configuración desde una invocación `-p`, pase `key=value` a `/config`, por ejemplo `/config thinking=false`.346 La compatibilidad de comandos difiere en modo `-p`:

347 

348 * Las [skills](/docs/es/skills) invocadas por el usuario y los comandos personalizados funcionan. Incluya `/skill-name` en la cadena de indicador y Claude Code lo expande antes de ejecutar.

349 * Los comandos integrados que solo se ejecutan en la interfaz de terminal, como `/login`, no están disponibles.

350 * `/model`, `/effort`, `/fast`, `/color` y `/rename` aceptan el valor como argumento, por ejemplo `/model sonnet`, y `/mcp` sin argumento imprime un resumen de texto del estado del servidor. Estas formas requieren Claude Code v2.1.205 o posterior y siguen las [notas de disponibilidad](/docs/es/commands#all-commands) de cada comando.

351 * Para cambiar una configuración, pase `key=value` a `/config`, por ejemplo `/config thinking=false`.

352 * `/output-style <style>` cambia [estilos de salida](/docs/es/output-styles) y `/output-style` solo los enumera. Requiere Claude Code v2.1.269 o posterior.

347</Note>353</Note>

348 354 

349<h3 id="customize-the-system-prompt">355<h3 id="customize-the-system-prompt">

hooks.md +1334 −572

Details

10 Para una guía de inicio rápido con ejemplos, consulte [Automatizar acciones con hooks](/docs/es/hooks-guide).10 Para una guía de inicio rápido con ejemplos, consulte [Automatizar acciones con hooks](/docs/es/hooks-guide).

11</Tip>11</Tip>

12 12 

13Los hooks son comandos de shell definidos por el usuario, puntos finales HTTP o prompts de LLM que se ejecutan automáticamente en puntos específicos del ciclo de vida de Claude Code. Utilice esta referencia para buscar esquemas de eventos, opciones de configuración, formatos de entrada/salida JSON y características avanzadas como hooks asincronos, hooks HTTP y hooks de herramientas MCP. Si está configurando hooks por primera vez, comience con la [guía](/docs/es/hooks-guide) en su lugar.13Los hooks son comandos de shell definidos por el usuario, puntos finales HTTP, llamadas a herramientas MCP, prompts de LLM o subagentes que se ejecutan automáticamente en puntos específicos del ciclo de vida de Claude Code. Claude Code dispara los mismos eventos de hooks dondequiera que se ejecute: sesiones en la terminal, extensiones de IDE, la [aplicación de escritorio](/docs/es/desktop-quickstart) y [Claude Code en la web](/docs/es/claude-code-on-the-web). Utilice esta referencia para buscar esquemas de eventos, opciones de configuración, formatos de entrada/salida JSON y características avanzadas como hooks asincronos, hooks HTTP y hooks de herramientas MCP.

14 14 

15<h2 id="hook-lifecycle">15<h2 id="hook-lifecycle">

16 Ciclo de vida de los hooks16 Ciclo de vida de los hooks

17</h2>17</h2>

18 18 

19Los hooks se activan en puntos específicos durante una sesión de Claude Code. Cuando se activa un evento y un matcher coincide, Claude Code pasa contexto JSON sobre el evento a su controlador de hook. Para hooks de comando, la entrada llega en stdin. Para hooks HTTP, llega como el cuerpo de la solicitud POST. Su controlador puede entonces inspeccionar la entrada, tomar medidas y opcionalmente devolver una decisión.19Claude Code ejecuta hooks en puntos específicos durante una sesión. Cuando se activa un evento y un matcher coincide, Claude Code pasa contexto JSON sobre el evento a su controlador de hook. Para hooks de comando, la entrada llega en stdin. Para hooks HTTP, llega como el cuerpo de la solicitud POST. Su controlador puede entonces inspeccionar la entrada, tomar medidas y opcionalmente devolver una decisión.

20 20 

21Los eventos se dividen en tres cadencias:21Los eventos se dividen en tres cadencias:

22 22 

23* una vez por sesión: `SessionStart` y `SessionEnd`23* por sesión: `SessionStart` y `SessionEnd`

24* una vez por turno: `UserPromptSubmit`, `Stop` y `StopFailure`24* por turno: `UserPromptSubmit`, `Stop` y `StopFailure`

25* en cada llamada a herramienta dentro del bucle agentico: `PreToolUse` y `PostToolUse`25* en cada llamada a herramienta dentro del bucle agentico: `PreToolUse` y `PostToolUse`, excepto las llamadas [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior), que omiten ambas

26 26 

27<div style={{maxWidth: "500px", margin: "0 auto"}}>27<div style={{maxWidth: "500px", margin: "0 auto"}}>

28 <Frame>28 <Frame>

29 <img src="https://mintcdn.com/claude-code/x7pO8l4XcvAXCoVc/images/hooks-lifecycle.svg?fit=max&auto=format&n=x7pO8l4XcvAXCoVc&q=85&s=81b9256c1bbe8832553485f5d9e9c746" alt="Diagrama del ciclo de vida de hooks que muestra Setup opcional alimentando a SessionStart, luego un bucle por turno que contiene UserPromptSubmit, UserPromptExpansion para slash commands, el bucle agentico anidado (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted), y Stop o StopFailure, seguido de TeammateIdle, PreCompact, PostCompact y SessionEnd, con Elicitation y ElicitationResult anidados dentro de la ejecución de herramientas MCP, PermissionDenied como una rama lateral de PermissionRequest para denegaciones en modo automático, WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged y FileChanged como eventos asincronos independientes, y MessageDisplay como un evento de solo visualización que se ejecuta mientras el texto del mensaje del asistente se transmite" width="520" height="1336" data-path="images/hooks-lifecycle.svg" />29 <img src="https://mintcdn.com/claude-code/x7pO8l4XcvAXCoVc/images/hooks-lifecycle.svg?fit=max&auto=format&n=x7pO8l4XcvAXCoVc&q=85&s=81b9256c1bbe8832553485f5d9e9c746" className="dark:hidden" alt="Diagrama del ciclo de vida de hooks que muestra Setup opcional alimentando a SessionStart, luego un bucle por turno que contiene UserPromptSubmit, UserPromptExpansion para slash commands, el bucle agentico anidado (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted), y Stop o StopFailure, seguido de TeammateIdle, PreCompact, PostCompact y SessionEnd, con Elicitation y ElicitationResult anidados dentro de la ejecución de herramientas MCP, PermissionDenied como una rama lateral de PermissionRequest para denegaciones en modo automático, WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged, FileChanged y DirectoryAdded como eventos asincronos independientes, PreModelSwitch como un evento secuencial independiente que se ejecuta antes de un cambio de modelo solicitado, PostModelSwitch como un evento asincrónico independiente que se ejecuta después de que cambia el modelo de la sesión, y MessageDisplay como un evento de solo visualización que se ejecuta mientras el texto del mensaje del asistente se transmite" width="520" height="1336" data-path="images/hooks-lifecycle.svg" />

30 

31 <img src="https://mintcdn.com/claude-code/x7pO8l4XcvAXCoVc/images/hooks-lifecycle-dark.svg?fit=max&auto=format&n=x7pO8l4XcvAXCoVc&q=85&s=c9b3d88487335f58cce0b52e2f9e7531" className="hidden dark:block" alt="Diagrama del ciclo de vida de hooks que muestra Setup opcional alimentando a SessionStart, luego un bucle por turno que contiene UserPromptSubmit, UserPromptExpansion para slash commands, el bucle agentico anidado (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted), y Stop o StopFailure, seguido de TeammateIdle, PreCompact, PostCompact y SessionEnd, con Elicitation y ElicitationResult anidados dentro de la ejecución de herramientas MCP, PermissionDenied como una rama lateral de PermissionRequest para denegaciones en modo automático, WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged, FileChanged y DirectoryAdded como eventos asincronos independientes, PreModelSwitch como un evento secuencial independiente que se ejecuta antes de un cambio de modelo solicitado, PostModelSwitch como un evento asincrónico independiente que se ejecuta después de que cambia el modelo de la sesión, y MessageDisplay como un evento de solo visualización que se ejecuta mientras el texto del mensaje del asistente se transmite" width="520" height="1336" data-path="images/hooks-lifecycle-dark.svg" />

30 </Frame>32 </Frame>

31</div>33</div>

32 34 

33La tabla a continuación resume cuándo se activa cada evento. La sección [Hook events](#hook-events) documenta el esquema de entrada completo y las opciones de control de decisión para cada uno.35La tabla a continuación resume cuándo se activa cada evento. La sección [Hook events](#hook-events) documenta el esquema de entrada completo y las opciones de control de decisión para cada uno.

34 36 

35| Event | When it fires |37| Evento | Cuándo se dispara |

36| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |38| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

37| `SessionStart` | When a session begins or resumes |39| `SessionStart` | Cuando una sesión comienza o se reanuda |

38| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |40| `Setup` | Cuando inicia Claude Code con `--init-only`, o con `--init` o `--maintenance` en modo `-p`. Para preparación única en CI o scripts |

39| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |41| `UserPromptSubmit` | Cuando envía un prompt, antes de que Claude lo procese |

40| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |42| `UserPromptExpansion` | Cuando un comando escrito por el usuario se expande en un prompt, antes de que llegue a Claude. Puede bloquear la expansión |

41| `PreToolUse` | Before a tool call executes. Can block it |43| `PreToolUse` | Antes de que se ejecute una llamada a herramienta. Puede bloquearlo |

42| `PermissionRequest` | When a tool call needs a permission decision |44| `PermissionRequest` | Cuando una llamada a herramienta necesita una decisión de permiso |

43| `PermissionDenied` | When auto mode denies a tool call, including denials without a classifier verdict. Use JSON `hookSpecificOutput.retry: true` to tell the model it may retry the denied tool call. Claude Code ignores `retry` when the classifier produced no verdict |45| `PermissionDenied` | Cuando el modo automático deniega una llamada a herramienta, incluidas las denegaciones sin un veredicto del clasificador. Use JSON `hookSpecificOutput.retry: true` para indicar al modelo que puede reintentar la llamada a herramienta denegada. Claude Code ignora `retry` cuando el clasificador no produjo veredicto |

44| `PostToolUse` | After a tool call succeeds |46| `PostToolUse` | Después de que una llamada a herramienta se ejecuta correctamente |

45| `PostToolUseFailure` | After a tool call fails |47| `PostToolUseFailure` | Después de que una llamada a herramienta falla |

46| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |48| `PostToolBatch` | Después de que se resuelve un lote completo de llamadas a herramientas paralelas, antes de la siguiente llamada al modelo |

47| `Notification` | When Claude Code sends a notification |49| `Notification` | Cuando Claude Code envía una notificación |

48| `MessageDisplay` | While assistant message text is displayed |50| `MessageDisplay` | Mientras se muestra el texto del mensaje del asistente |

49| `SubagentStart` | When a subagent is spawned |51| `SubagentStart` | Cuando se genera un subagente |

50| `SubagentStop` | When a subagent finishes |52| `SubagentStop` | Cuando un subagente finaliza |

51| `TaskCreated` | When a task is being created via `TaskCreate` |53| `TaskCreated` | Cuando se está creando una tarea a través de `TaskCreate` |

52| `TaskCompleted` | When a task is being marked as completed |54| `TaskCompleted` | Cuando se marca una tarea como completada |

53| `Stop` | When Claude finishes responding |55| `Stop` | Cuando Claude termina de responder |

54| `StopFailure` | When the turn ends due to an API error |56| `StopFailure` | Cuando el turno termina debido a un error de API |

55| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |57| `TeammateIdle` | Cuando un compañero de [equipo de agentes](/docs/es/agent-teams) está a punto de quedarse inactivo |

56| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |58| `InstructionsLoaded` | Cuando se carga un archivo CLAUDE.md o `.claude/rules/*.md` en el contexto. Se dispara al inicio de la sesión y cuando los archivos se cargan de forma diferida durante una sesión |

57| `ConfigChange` | When a configuration file changes during a session |59| `ConfigChange` | Cuando un archivo de configuración cambia durante una sesión |

58| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |60| `CwdChanged` | Cuando el directorio de trabajo cambia, por ejemplo cuando Claude ejecuta un comando `cd`. Útil para la gestión reactiva del entorno con herramientas como direnv |

59| `DirectoryAdded` | When a working directory is added mid-session via `/add-dir` or the SDK `register_repo_root` control request |61| `DirectoryAdded` | Cuando se agrega un directorio de trabajo a mitad de sesión a través de `/add-dir` o la solicitud de control `register_repo_root` del SDK |

60| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |62| `FileChanged` | Cuando un archivo observado cambia en el disco. El campo `matcher` especifica qué nombres de archivo observar |

61| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |63| `WorktreeCreate` | Cuando se está creando un worktree a través de `--worktree`, `isolation: "worktree"`, o para una sesión en segundo plano. Reemplaza el comportamiento predeterminado de git |

62| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |64| `WorktreeRemove` | Cuando se está eliminando un worktree al salir de la sesión, cuando un subagente finaliza, o cuando elimina una sesión en segundo plano |

63| `PreCompact` | Before context compaction |65| `PreCompact` | Antes de la compactación de contexto |

64| `PostCompact` | After context compaction completes |66| `PostCompact` | Después de que se completa la compactación de contexto |

65| `PreModelSwitch` | Before Claude Code applies a model switch that you or a client requested. Can block the switch |67| `PreModelSwitch` | Antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Puede bloquear el cambio |

66| `PostModelSwitch` | After the session's model changes, including changes Claude Code makes on its own, such as restoring the model when you resume a session |68| `PostModelSwitch` | Después de que cambia el modelo de la sesión, incluidos los cambios que Claude Code realiza por su cuenta, como restaurar el modelo cuando reanuda una sesión |

67| `Elicitation` | When an MCP server requests user input during a tool call |69| `Elicitation` | Cuando un servidor MCP solicita entrada del usuario durante una llamada a herramienta |

68| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |70| `ElicitationResult` | Después de que un usuario responde a una solicitud de MCP, antes de que la respuesta se envíe de vuelta al servidor |

69| `SessionEnd` | When a session terminates |71| `SessionEnd` | Cuando una sesión termina |

70 72 

71<h3 id="how-a-hook-resolves">73<h3 id="how-a-hook-resolves">

72 Cómo se resuelve un hook74 Cómo se resuelve un hook

73</h3>75</h3>

74 76 

75Para ver cómo encajan estas piezas, considere este hook `PreToolUse` que bloquea comandos de shell destructivos. El `matcher` se reduce a llamadas a herramientas Bash y la condición `if` se reduce aún más a subcomandos Bash que coinciden con `rm *`, por lo que `block-rm.sh` solo se genera cuando ambos filtros coinciden:77Para ver cómo encajan el evento, el matcher y el controlador, considere este hook `PreToolUse` que bloquea comandos de shell destructivos.

76 78 

77```json theme={null}79<Tabs>

78{80 <Tab title="macOS/Linux">

81 El `matcher` se reduce a llamadas a herramientas Bash y la condición `if` se reduce aún más a subcomandos Bash que coinciden con `rm *`, por lo que `block-rm.sh` solo se genera cuando ambos filtros coinciden:

82 

83 ```json theme={null}

84 {

79 "hooks": {85 "hooks": {

80 "PreToolUse": [86 "PreToolUse": [

81 {87 {


91 }97 }

92 ]98 ]

93 }99 }

94}100 }

95```101 ```

96 102 

97El script lee la entrada JSON desde stdin, extrae el comando y devuelve una `permissionDecision` de `"deny"` si contiene `rm -rf`:103 El script lee la entrada JSON desde stdin, extrae el comando y devuelve una `permissionDecision` de `"deny"` si contiene `rm -rf`. Guárdelo en `.claude/hooks/block-rm.sh` en su proyecto y hágalo ejecutable con `chmod +x .claude/hooks/block-rm.sh` para que Claude Code pueda ejecutarlo:

98 104 

99```bash theme={null}105 ```bash theme={null}

100#!/bin/bash106 #!/bin/bash

101# .claude/hooks/block-rm.sh107 # .claude/hooks/block-rm.sh

102COMMAND=$(jq -r '.tool_input.command')108 COMMAND=$(jq -r '.tool_input.command')

103 109 

104if echo "$COMMAND" | grep -q 'rm -rf'; then110 if echo "$COMMAND" | grep -q 'rm -rf'; then

105 jq -n '{111 jq -n '{

106 hookSpecificOutput: {112 hookSpecificOutput: {

107 hookEventName: "PreToolUse",113 hookEventName: "PreToolUse",


109 permissionDecisionReason: "Destructive command blocked by hook"115 permissionDecisionReason: "Destructive command blocked by hook"

110 }116 }

111 }'117 }'

112else118 else

113 exit 0 # no decision; normal permission flow applies119 exit 0 # no decision; normal permission flow applies

114fi120 fi

115```121 ```

122 

123 Este script, como los otros ejemplos de Bash en esta página que analizan entrada JSON, utiliza `jq`, así que instale `jq` y asegúrese de que esté en su `PATH` antes de intentarlos.

124 </Tab>

125 

126 <Tab title="Windows (PowerShell)">

127 El matcher `Bash|PowerShell` cubre la [herramienta PowerShell](#powershell) así como Bash. Una única regla `if` coincide solo con las llamadas de una herramienta, por lo que cada herramienta obtiene su propio controlador: el primero se reduce a subcomandos Bash que coinciden con `rm *`, el segundo a comandos PowerShell que coinciden con `Remove-Item *`. Ambos ejecutan el mismo script a través de `powershell.exe`:

128 

129 ```json theme={null}

130 {

131 "hooks": {

132 "PreToolUse": [

133 {

134 "matcher": "Bash|PowerShell",

135 "hooks": [

136 {

137 "type": "command",

138 "if": "Bash(rm *)",

139 "command": "powershell.exe",

140 "args": [

141 "-NoProfile",

142 "-ExecutionPolicy",

143 "Bypass",

144 "-File",

145 "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.ps1"

146 ]

147 },

148 {

149 "type": "command",

150 "if": "PowerShell(Remove-Item *)",

151 "command": "powershell.exe",

152 "args": [

153 "-NoProfile",

154 "-ExecutionPolicy",

155 "Bypass",

156 "-File",

157 "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.ps1"

158 ]

159 }

160 ]

161 }

162 ]

163 }

164 }

165 ```

166 

167 La bandera `-NoProfile` omite cargar su perfil de PowerShell para que el hook se inicie rápidamente, y `-ExecutionPolicy Bypass` permite que PowerShell ejecute el archivo de script local.

116 168 

117Ahora suponga que Claude Code decide ejecutar `Bash "rm -rf /tmp/build"`. Esto es lo que sucede:169 El script lee la entrada JSON desde stdin, extrae el comando y devuelve una `permissionDecision` de `"deny"` si contiene `rm -rf` o `Remove-Item` seguido de `-Recurse`. Guárdelo en `.claude/hooks/block-rm.ps1` en su proyecto:

170 

171 ```powershell theme={null}

172 # .claude/hooks/block-rm.ps1

173 $callInput = [Console]::In.ReadToEnd() | ConvertFrom-Json

174 $command = $callInput.tool_input.command

175 

176 if ($command -match 'rm -rf|Remove-Item.*-Recurse') {

177 @{

178 hookSpecificOutput = @{

179 hookEventName = "PreToolUse"

180 permissionDecision = "deny"

181 permissionDecisionReason = "Destructive command blocked by hook"

182 }

183 } | ConvertTo-Json

184 } else {

185 exit 0 # no decision; normal permission flow applies

186 }

187 ```

188 </Tab>

189</Tabs>

190 

191Ahora suponga que Claude Code decide ejecutar `Bash "rm -rf /tmp/build"` contra la configuración de macOS/Linux. Esto es lo que sucede:

118 192 

119<Frame>193<Frame>

120 <img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=be0bf3053550c26de5f54cd64674c197" alt="Diagrama de resolución de hooks: PreToolUse se activa, el matcher verifica la coincidencia de Bash, luego la condición if verifica la coincidencia de Bash(rm *). Si ambos coinciden, el comando del hook se ejecuta y devuelve permissionDecision deny, por lo que la llamada a la herramienta se bloquea y Claude Code continúa. Si alguna verificación no coincide, el hook se omite y la llamada a la herramienta se permite continuar." width="930" height="270" data-path="images/hook-resolution.svg" />194 <img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=be0bf3053550c26de5f54cd64674c197" className="dark:hidden" alt="Diagrama de resolución de hooks: PreToolUse se activa, el matcher verifica la coincidencia de Bash, luego la condición if verifica la coincidencia de Bash(rm *). Si ambos coinciden, el comando del hook se ejecuta y devuelve permissionDecision deny, por lo que la llamada a la herramienta se bloquea y Claude Code continúa. Si alguna verificación no coincide, el hook se omite y la llamada a la herramienta se permite continuar." width="930" height="270" data-path="images/hook-resolution.svg" />

195 

196 <img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/hook-resolution-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e80af91f8507cee6bd51ac3c2dd92f63" className="hidden dark:block" alt="Diagrama de resolución de hooks: PreToolUse se activa, el matcher verifica la coincidencia de Bash, luego la condición if verifica la coincidencia de Bash(rm *). Si ambos coinciden, el comando del hook se ejecuta y devuelve permissionDecision deny, por lo que la llamada a la herramienta se bloquea y Claude Code continúa. Si alguna verificación no coincide, el hook se omite y la llamada a la herramienta se permite continuar." width="930" height="270" data-path="images/hook-resolution-dark.svg" />

121</Frame>197</Frame>

122 198 

123<Steps>199<Steps>


166 242 

167Los hooks se definen en archivos de configuración JSON. La configuración tiene tres niveles de anidamiento:243Los hooks se definen en archivos de configuración JSON. La configuración tiene tres niveles de anidamiento:

168 244 

1691. Elija un [hook event](#hook-events) al que responder, como `PreToolUse` o `Stop`2451. Elige un [evento de hook](#hook-events) al que responder, como `PreToolUse` o `Stop`

1702. Agregue un [matcher group](#matcher-patterns) para filtrar cuándo se activa, como "solo para la herramienta Bash"2462. Añade un [grupo de matcher](#matcher-patterns) para filtrar cuándo se activa, como "solo para la herramienta Bash"

1713. Defina uno o más [hook handlers](#hook-handler-fields) para ejecutar cuando coincida2473. Define uno o más [manejadores de hook](#hook-handler-fields) para ejecutar cuando coincida

172 248 

173Consulte [Cómo se resuelve un hook](#how-a-hook-resolves) arriba para un recorrido completo con un ejemplo anotado.249Consulta [Cómo se resuelve un hook](#how-a-hook-resolves) arriba para un recorrido completo con un ejemplo anotado.

174 250 

175<Note>251<Note>

176 Esta página utiliza términos específicos para cada nivel: **hook event** para el punto del ciclo de vida, **matcher group** para el filtro y **hook handler** para el comando de shell, punto final HTTP, herramienta MCP, prompt o agente que se ejecuta. "Hook" por sí solo se refiere a la característica general.252 Esta página utiliza términos específicos para cada nivel: **evento de hook** para el punto del ciclo de vida, **grupo de matcher** para el filtro, y **manejador de hook** para el comando de shell, punto final HTTP, herramienta MCP, prompt o agente que se ejecuta. "Hook" por sí solo se refiere a la característica general.

177</Note>253</Note>

178 254 

179<h3 id="hook-locations">255<h3 id="hook-locations">

180 Ubicaciones de hooks256 Ubicaciones de hooks

181</h3>257</h3>

182 258 

183Dónde defina un hook determina su alcance:259Dónde definas un hook determina su alcance:

184 260 

185| Ubicación | Alcance | Compartible |261| Ubicación | Alcance | Compartible |

186| :-------------------------------------------------------- | :--------------------------------- | :---------------------------------------------- |262| :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

187| `~/.claude/settings.json` | Todos sus proyectos | No, local en su máquina |263| `~/.claude/settings.json` | Todos tus proyectos | No, local en tu máquina |

188| `.claude/settings.json` | Proyecto único | Sí, puede ser confirmado en el repositorio |264| `.claude/settings.json` | Proyecto único | Sí, puede confirmarse en el repositorio |

189| `.claude/settings.local.json` | Proyecto único | No, ignorado por git cuando Claude Code lo crea |265| `.claude/settings.local.json` | Proyecto único | No, ignorado por git cuando Claude Code guarda una configuración en él |

190| Configuración de política administrada | Toda la organización | Sí, controlado por administrador |266| Configuración de política administrada | Toda la organización | Sí, controlado por administrador |

191| [Plugin](/docs/es/plugins) `hooks/hooks.json` | Cuando el plugin está habilitado | Sí, incluido con el plugin |267| [Plugin](/docs/es/plugins) `hooks/hooks.json` | Cuando el plugin está habilitado | Sí, incluido con el plugin |

192| [Skill](/docs/es/skills) o [agent](/docs/es/sub-agents) frontmatter | Mientras el componente está activo | Sí, definido en el archivo del componente |268| [Skill](/docs/es/skills) frontmatter | El resto de la sesión una vez que se invoca la skill. Consulta [Hooks en skills y agentes](#hooks-in-skills-and-agents) | Sí, definido en el archivo de skill |

269| [Subagente](/docs/es/sub-agents) frontmatter | Mientras ese subagente se está ejecutando | Sí, definido en el archivo del subagente |

270 

271Las [sesiones en la nube](/docs/es/claude-code-on-the-web) no leen tu `~/.claude/settings.json` local; los hooks allí provienen del repositorio, lo que significa su `.claude/settings.json` en una sesión con un repositorio y los plugins que declara en cualquier sesión, y de la configuración administrada por servidor de tu organización. En un [entorno autohospedado](/docs/es/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code también ejecuta los hooks que el operador sembró desde `~/.claude/` del host del ejecutor, y ejecuta los hooks en el archivo de configuración administrada de la imagen del ejecutor cuando ese archivo está entre las [fuentes administradas que Claude Code aplica](/docs/es/managed-settings#how-claude-code-combines-managed-sources), lo que por defecto significa solo cuando ni la configuración administrada por servidor ni una política de Claude Code entregada por MDM suministran el nivel administrado. Consulta [qué se transfiere de tu configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup) para saber qué archivos llegan a una sesión en la nube.

193 272 

194Para obtener detalles sobre la resolución de archivos de configuración, consulte [settings](/docs/es/settings).273Para obtener detalles sobre la resolución de archivos de configuración, consulta [configuración](/docs/es/settings).

195 274 

196Los administradores empresariales pueden usar `allowManagedHooksOnly` para bloquear hooks de usuario, proyecto y plugin. Los hooks de plugins habilitados forzosamente en la configuración administrada `enabledPlugins` están exentos, por lo que los administradores pueden distribuir hooks verificados a través de un mercado de la organización. Consulte [Hook configuration](/docs/es/settings#hook-configuration).275Los hooks de archivos de configuración, configuración de política administrada y plugins también se ejecutan dentro de [subagentes](/docs/es/sub-agents). Cuando un subagente llama a una herramienta, eventos de herramienta como `PreToolUse` y `PostToolUse` activan los mismos hooks configurados que en la conversación principal, y la entrada lleva los campos de entrada comunes `agent_id` y `agent_type` [](#common-input-fields) que identifican al subagente.

276 

277Los administradores empresariales pueden usar `allowManagedHooksOnly` para restringir qué hooks se ejecutan:

278 

279* Tus hooks de usuario, proyecto, local y plugin están bloqueados. Los hooks de plugins forzados a habilitarse en la configuración administrada `enabledPlugins` están exentos

280* Claude Code también reduce tu configuración [`statusLine`](/docs/es/statusline), [`fileSuggestion`](/docs/es/settings-reference#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) a la configuración administrada

281* Claude Code también deshabilita plugins con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), incluidos los plugins forzados a habilitarse en la configuración administrada `enabledPlugins`, a menos que [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) esté explícitamente establecido en `false`. Las fuentes `command` requieren Claude Code v2.1.229 o posterior

282* Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la propia configuración administrada declare

283 

284Consulta [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly).

285 

286Las entradas de hook se fusionan entre niveles de configuración en lugar de reemplazarse entre sí: la configuración de usuario, proyecto y local añaden sus propios hooks sin eliminar los administrados, y la configuración [`disableAllHooks`](#disable-or-remove-hooks) no puede deshabilitar hooks administrados desde fuera de la configuración administrada.

287 

288Las [listas de permitidos de hooks HTTP](/docs/es/settings-reference#hook-and-skill-settings) se aplican a hooks de todas las fuentes, incluida la configuración de política administrada:

289 

290* `allowedHttpHookUrls`: cuando se define en cualquier nivel de configuración, Claude Code ejecuta un manejador de hook HTTP solo si su URL coincide con la lista de permitidos fusionada

291* `httpHookAllowedEnvVars`: cuando se define, Claude Code interpola solo las variables de entorno en esa lista en los encabezados de hook

197 292 

198<h3 id="matcher-patterns">293<h3 id="matcher-patterns">

199 Patrones de matcher294 Patrones de matcher

200</h3>295</h3>

201 296 

202El campo `matcher` filtra cuándo se activan los hooks. Cómo se evalúa un matcher depende de los caracteres que contenga:297El campo `matcher` filtra cuándo se activan los hooks. Cómo se evalúa un matcher depende de los caracteres que contiene:

203 298 

204| Valor del matcher | Evaluado como | Ejemplo |299| Valor de matcher | Evaluado como | Ejemplo |

205| :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |300| :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

206| `"*"`, `""` u omitido | Coincidir todo | se activa en cada ocurrencia del evento |301| `"*"`, `""` u omitido | Coincidir con todo | se activa en cada ocurrencia del evento |

207| Solo letras, dígitos, `_`, `-`, espacios, `,` y `\|` | Cadena exacta, o lista de cadenas exactas separadas por `\|` o `,` con espacios en blanco opcionales alrededor | `Bash` coincide solo con la herramienta Bash; `Edit\|Write` y `Edit, Write` cada uno coincide con cualquiera de las herramientas exactamente; `code-reviewer` coincide solo con ese tipo de agente |302| Solo letras, dígitos, `_`, `-`, espacios, `,` y `\|` | Cadena exacta, o lista de cadenas exactas separadas por `\|` o `,` con espacios en blanco opcionales alrededor | `Bash` coincide solo con la herramienta Bash; `Edit\|Write` y `Edit, Write` cada una coincide con cualquiera de las herramientas exactamente; `code-reviewer` coincide solo con ese tipo de agente |

208| Contiene cualquier otro carácter | Expresión regular de JavaScript, sin anclar | `^Notebook` coincide con cualquier herramienta cuyo nombre comience con Notebook; `mcp__memory__.*` coincide con cada herramienta del servidor `memory` |303| Contiene cualquier otro carácter | Expresión regular de JavaScript, sin anclar | `^Notebook` coincide con cualquier herramienta cuyo nombre comienza con `Notebook`; `mcp__memory__.*` coincide con cada herramienta del servidor `memory` |

209 304 

210Un matcher en la ruta de expresión regular se prueba con `RegExp.prototype.test` de JavaScript, que tiene éxito en una coincidencia en cualquier lugar del valor. `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`; envuelva el patrón en `^` y `$`, como en `^Edit$`, cuando necesite una coincidencia de cadena completa.305Un matcher en la ruta de expresión regular se prueba con `RegExp.prototype.test` de JavaScript, que tiene éxito en una coincidencia en cualquier lugar del valor. `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`; envuelve el patrón en `^` y `$`, como en `^Edit$`, cuando necesites una coincidencia de cadena completa.

211 306 

212Los separadores de coma y la tolerancia de espacios en blanco circundantes requieren Claude Code v2.1.191 o posterior.307Los separadores de coma y la tolerancia de espacios en blanco circundantes requieren Claude Code v2.1.191 o posterior.

213 308 

214Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un nombre con guiones como `code-reviewer` se evalúa como una expresión regular sin anclar, por lo que también se activa para `senior-code-reviewer`; anclelo como `^code-reviewer$` en esas versiones para coincidir solo con ese nombre.309Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un nombre con guiones como `code-reviewer` se evalúa como una expresión regular sin anclar, por lo que también se activa para `senior-code-reviewer`; anclalo como `^code-reviewer$` en esas versiones para coincidir solo con ese nombre.

215 310 

216`FileChanged` y `StopFailure` utilizan un conjunto de coincidencia exacta más estrecho de solo letras, dígitos, `_` y `|`. Un guión, espacio o coma en un matcher para esos dos eventos lo mantiene en la ruta de expresión regular, y solo `|` separa alternativas. Todos los demás eventos con soporte de matcher en la tabla que sigue aceptan `|` o `,`.311`FileChanged` y `StopFailure` utilizan un conjunto de coincidencia exacta más estrecho de solo letras, dígitos, `_` y `|`. Un guión, espacio o coma en un matcher para esos dos eventos lo mantiene en la ruta de expresión regular, y solo `|` separa alternativas. Todos los demás eventos con soporte de matcher en la tabla que sigue aceptan `|` o `,`.

217 312 

218El evento `FileChanged` no sigue estas reglas al construir su lista de vigilancia. Consulte [FileChanged](#filechanged).313El evento `FileChanged` no sigue estas reglas al construir su lista de vigilancia. Consulta [FileChanged](#filechanged).

219 314 

220Cada tipo de evento coincide en un campo diferente:315Cada tipo de evento coincide en un campo diferente:

221 316 

222| Evento | En qué filtra el matcher | Valores de matcher de ejemplo |317| Evento | Qué filtra el matcher | Valores de matcher de ejemplo |

223| :------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |318| :------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

224| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nombre de la herramienta | `Bash`, `Edit\|Write`, `mcp__.*` |319| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nombre de la herramienta | `Bash`, `Edit\|Write`, `mcp__.*` |

225| `SessionStart` | cómo comenzó la sesión | `startup`, `resume`, `clear`, `compact` |320| `SessionStart` | cómo comenzó la sesión | `startup`, `resume`, `clear`, `compact`, `fork` |

226| `Setup` | qué bandera CLI desencadenó la configuración | `init`, `maintenance` |321| `Setup` | qué bandera CLI activó la configuración | `init`, `maintenance` |

227| `SessionEnd` | por qué terminó la sesión | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |322| `SessionEnd` | por qué terminó la sesión | `clear`, `resume`, `logout`, `prompt_input_exit`, `other` |

228| `Notification` | tipo de notificación | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed` |323| `Notification` | tipo de notificación | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled` |

229| `SubagentStart` | tipo de agente | `general-purpose`, `Explore`, `Plan`, nombres de agentes personalizados, o nombres con alcance de plugin como `^my-plugin:reviewer$` |324| `SubagentStart` | tipo de agente | `general-purpose`, `Explore`, `Plan`, nombres de agentes personalizados, o nombres con alcance de plugin como `^my-plugin:reviewer$` |

230| `PreCompact`, `PostCompact` | qué desencadenó la compactación | `manual`, `auto` |325| `PreCompact`, `PostCompact` | qué activó la compactación | `manual`, `auto` |

326| `PreModelSwitch`, `PostModelSwitch` | nombre canónico del modelo al que cambia la sesión, como se describe en [PreModelSwitch](#premodelswitch) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |

231| `SubagentStop` | tipo de agente | los mismos valores que `SubagentStart` |327| `SubagentStop` | tipo de agente | los mismos valores que `SubagentStart` |

232| `ConfigChange` | fuente de configuración | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |328| `ConfigChange` | fuente de configuración | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

233| `CwdChanged` | sin soporte de matcher | siempre se activa en cada cambio de directorio |329| `CwdChanged` | sin soporte de matcher | siempre se activa en cada ocurrencia |

234| `FileChanged` | nombres de archivo literales a vigilar (consulte [FileChanged](#filechanged)) | `.envrc\|.env` |330| `DirectoryAdded` | cómo se añadió el directorio | `slash_command`, `register_repo_root` |

235| `StopFailure` | tipo de error | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `unknown` |331| `FileChanged` | nombres de archivo literales a vigilar (consulta [FileChanged](#filechanged)) | `.envrc\|.env` |

332| `StopFailure` | tipo de error | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, `unknown` |

236| `InstructionsLoaded` | razón de carga | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |333| `InstructionsLoaded` | razón de carga | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

237| `UserPromptExpansion` | nombre del comando | sus nombres de skill o comando |334| `UserPromptExpansion` | nombre del comando | tus nombres de skill o comando |

238| `Elicitation` | nombre del servidor MCP | sus nombres de servidor MCP configurados |335| `Elicitation` | nombre del servidor MCP | tus nombres de servidor MCP configurados |

239| `ElicitationResult` | nombre del servidor MCP | los mismos valores que `Elicitation` |336| `ElicitationResult` | nombre del servidor MCP | los mismos valores que `Elicitation` |

240| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` | sin soporte de matcher | siempre se activa en cada ocurrencia |337| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` | sin soporte de matcher | siempre se activa en cada ocurrencia |

241 338 

242El matcher se ejecuta contra un campo de la [entrada JSON](#hook-input-and-output) que Claude Code envía a su hook en stdin. Para eventos de herramientas, ese campo es `tool_name`. Cada sección [hook event](#hook-events) enumera el conjunto completo de valores de matcher y el esquema de entrada para ese evento.339Hacer coincidir `StopFailure` en `cloud_credential_error` requiere Claude Code v2.1.267 o posterior, la primera versión que reporta fallos de carga de credenciales bajo ese valor en lugar de `server_error` o `unknown`.

340 

341Para la mayoría de eventos, Claude Code evalúa el matcher contra un campo de la [entrada JSON](#hook-input-and-output) que envía a tu hook en stdin. Para eventos de herramienta, ese campo es `tool_name`. Para `PreModelSwitch` y `PostModelSwitch`, Claude Code evalúa el matcher contra el nombre canónico que deriva de `to_model`, como se describe en [PreModelSwitch](#premodelswitch). Cada sección de [evento de hook](#hook-events) lista el conjunto completo de valores de matcher y el esquema de entrada para ese evento.

243 342 

244Este ejemplo ejecuta un script de linting solo cuando Claude escribe o edita un archivo:343Este ejemplo ejecuta un script de linting solo cuando Claude escribe o edita un archivo:

245 344 


261}360}

262```361```

263 362 

264`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` y `CwdChanged` no admiten matchers y siempre se activan en cada ocurrencia. Si agrega un campo `matcher` a estos eventos, se ignora silenciosamente.363Si añades un campo `matcher` a un evento sin soporte de matcher, se ignora silenciosamente.

265 364 

266Para eventos de herramientas, puede filtrar más estrechamente estableciendo el campo [`if`](#common-fields) en controladores de hooks individuales. `if` utiliza [sintaxis de regla de permiso](/docs/es/permissions) para coincidir con el nombre de la herramienta y los argumentos juntos, por lo que `"Bash(git *)"` se ejecuta cuando cualquier subcomando de la entrada de Bash coincide con `git *` y `"Edit(*.ts)"` se ejecuta solo para archivos TypeScript.365Para eventos de herramienta, puedes filtrar más estrictamente estableciendo el campo [`if`](#common-fields) en manejadores de hook individuales. `if` utiliza [sintaxis de regla de permisos](/docs/es/permissions) para coincidir contra el nombre de la herramienta y los argumentos juntos, por lo que `"Bash(git *)"` se ejecuta cuando cualquier subcomando de la entrada de Bash coincide con `git *` y `"Edit(*.ts)"` se ejecuta solo para archivos TypeScript.

267 366 

268<h4 id="match-mcp-tools">367<h4 id="match-mcp-tools">

269 Coincidir herramientas MCP368 Coincidir herramientas MCP

270</h4>369</h4>

271 370 

272Las herramientas del servidor [MCP](/docs/es/mcp) aparecen como herramientas normales en eventos de herramientas (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), por lo que puede hacerlas coincidir de la misma manera que cualquier otro nombre de herramienta.371Las herramientas del servidor [MCP](/docs/es/mcp) aparecen como herramientas regulares en eventos de herramienta (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), por lo que puedes hacerlas coincidir de la misma manera que cualquier otro nombre de herramienta.

273 372 

274Las herramientas MCP siguen el patrón de nomenclatura `mcp__<server>__<tool>`, por ejemplo:373Las herramientas MCP siguen el patrón de nomenclatura `mcp__<server>__<tool>`, por ejemplo:

275 374 


277* `mcp__filesystem__read_file`: herramienta leer archivo del servidor Filesystem376* `mcp__filesystem__read_file`: herramienta leer archivo del servidor Filesystem

278* `mcp__github__search_repositories`: herramienta de búsqueda del servidor GitHub377* `mcp__github__search_repositories`: herramienta de búsqueda del servidor GitHub

279 378 

280Para coincidir con cada herramienta de un servidor, agregue `.*` al prefijo del servidor. El `.*` es requerido: un matcher como `mcp__memory` o `mcp__brave-search` contiene solo caracteres de coincidencia exacta, por lo que se compara como una cadena exacta y no coincide con ninguna herramienta.379Para coincidir con cada herramienta de un servidor, añade `.*` al prefijo del servidor. El `.*` es obligatorio: un matcher como `mcp__memory` o `mcp__brave-search` contiene solo caracteres de coincidencia exacta, por lo que se compara como una cadena exacta y no coincide con ninguna herramienta.

281 380 

282* `mcp__memory__.*` coincide con todas las herramientas del servidor `memory`381* `mcp__memory__.*` coincide con todas las herramientas del servidor `memory`

283* `mcp__brave-search__.*` coincide con todas las herramientas de un servidor cuyo nombre contiene un guión382* `mcp__brave-search__.*` coincide con todas las herramientas de un servidor cuyo nombre contiene un guión

284* `mcp__.*__write.*` coincide con cualquier herramienta cuyo nombre comience con `write` de cualquier servidor383* `mcp__.*__write.*` coincide con cualquier herramienta cuyo nombre comienza con `write` de cualquier servidor

285 384 

286Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un prefijo con guiones simple como `mcp__brave-search` se evalúa como una expresión regular sin anclar y coincide con cada herramienta de ese servidor. La forma `mcp__brave-search__.*` funciona en cada versión.385Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un prefijo con guiones desnudo como `mcp__brave-search` se evalúa como una expresión regular sin anclar y coincide con cada herramienta de ese servidor. La forma `mcp__brave-search__.*` funciona en cada versión.

287 386 

288Las herramientas de un [servidor MCP incluido en plugin](/docs/es/mcp#plugin-provided-mcp-servers) utilizan un segmento de servidor con alcance que incluye el nombre del plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher escrito contra la clave del servidor simple nunca se activa para estas herramientas. Para un plugin llamado `my-plugin` que incluye un servidor bajo la clave `db`, una herramienta `query` aparece como `mcp__plugin_my-plugin_db__query`, por lo que el matcher para cada herramienta de ese servidor es `mcp__plugin_my-plugin_db__.*`. Use el mismo nombre de herramienta con alcance en el campo [`if`](#common-fields) de un controlador. Consulte [Plugin-provided MCP servers](/docs/es/mcp#plugin-provided-mcp-servers) para ver cómo se construye el nombre con alcance.387Las herramientas de un [servidor MCP incluido en plugin](/docs/es/mcp#plugin-provided-mcp-servers) utilizan un segmento de servidor con alcance que incluye el nombre del plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher escrito contra la clave del servidor desnuda nunca se activa para estas herramientas. Para un plugin llamado `my-plugin` que incluye un servidor bajo la clave `db`, una herramienta `query` aparece como `mcp__plugin_my-plugin_db__query`, por lo que el matcher para cada herramienta de ese servidor es `mcp__plugin_my-plugin_db__.*`. Utiliza el mismo nombre de herramienta con alcance en el campo [`if`](#common-fields) de un manejador. Consulta [Servidores MCP incluidos en plugin](/docs/es/mcp#plugin-provided-mcp-servers) para saber cómo se construye el nombre con alcance.

289 388 

290Este ejemplo registra todas las operaciones del servidor de memoria y valida operaciones de escritura de cualquier servidor MCP:389Este ejemplo registra todas las operaciones del servidor de memoria y valida operaciones de escritura de cualquier servidor MCP:

291 390 


317```416```

318 417 

319<h3 id="hook-handler-fields">418<h3 id="hook-handler-fields">

320 Campos del controlador de hooks419 Campos de manejador de hook

321</h3>420</h3>

322 421 

323Cada objeto en el array `hooks` interno es un controlador de hook: el comando de shell, punto final HTTP, herramienta MCP, prompt de LLM o agente que se ejecuta cuando el matcher coincide. Hay cinco tipos:422Cada objeto en el array `hooks` interno es un manejador de hook: el comando de shell, punto final HTTP, herramienta MCP, prompt LLM o agente que se ejecuta cuando el matcher coincide. Hay cinco tipos:

324 423 

325* **[Command hooks](#command-hook-fields)** (`type: "command"`): ejecutan un comando de shell. Su script recibe la [entrada JSON](#hook-input-and-output) del evento en stdin y comunica resultados a través de códigos de salida y stdout.424* **[Hooks de comando](#command-hook-fields)** (`type: "command"`): ejecutan un comando de shell. Tu script recibe la [entrada JSON](#hook-input-and-output) del evento en stdin y comunica resultados de vuelta a través de códigos de salida y stdout.

326* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): envían la entrada JSON del evento como una solicitud HTTP POST a una URL. El punto final comunica resultados a través del cuerpo de la respuesta usando el mismo [formato de salida JSON](#json-output) que los hooks de comando.425* **[Hooks HTTP](#http-hook-fields)** (`type: "http"`): envían la entrada JSON del evento como una solicitud HTTP POST a una URL. El punto final comunica resultados de vuelta a través del cuerpo de respuesta utilizando el mismo [formato de salida JSON](#json-output) que los hooks de comando.

327* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): llaman a una herramienta en un servidor [MCP](/docs/es/mcp) ya conectado. La salida de texto de la herramienta se trata como stdout de hook de comando.426* **[Hooks de herramienta MCP](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): llaman a una herramienta en un [servidor MCP](/docs/es/mcp) ya conectado. La salida de texto de la herramienta se trata como stdout de hook de comando.

328* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): envían un prompt a un modelo Claude para evaluación de un solo turno. El modelo devuelve una decisión sí/no como JSON. Consulte [Prompt-based hooks](#prompt-based-hooks).427* **[Hooks de prompt](#prompt-and-agent-hook-fields)** (`type: "prompt"`): envían un prompt a un modelo Claude para evaluación de un solo turno. El modelo devuelve su decisión como JSON. Consulta [Hooks basados en prompt](#prompt-based-hooks).

329* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): generan un subagente que puede usar herramientas como Read, Grep y Glob para verificar condiciones antes de devolver una decisión. Los hooks de agente son experimentales y pueden cambiar. Consulte [Agent-based hooks](#agent-based-hooks).428* **[Hooks de agente](#prompt-and-agent-hook-fields)** (`type: "agent"`): generan un subagente que puede usar herramientas como Read, Grep y Glob para verificar condiciones antes de devolver una decisión. Los hooks de agente son experimentales y pueden cambiar. Consulta [Hooks basados en agente](#agent-based-hooks).

330 429 

331Todos los hooks coincidentes se ejecutan en paralelo, y los controladores idénticos se deduplicarán automáticamente. Los hooks de comando se deduplicarán por cadena de comando y `args`, y los hooks HTTP se deduplicarán por URL.430Todos los hooks coincidentes se ejecutan en paralelo. Si defines el mismo manejador en más de un archivo de configuración, se ejecuta una vez. Una copia del mismo manejador de un plugin o skill se mantiene separada.

332 431 

333Los controladores se ejecutan en el directorio actual con el entorno de Claude Code. La variable de entorno `$CLAUDE_CODE_REMOTE` se establece en `"true"` en entornos web remotos y no se establece en la CLI local. A partir de v2.1.199, [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/es/env-vars) se establece en el ID de sesión de [Remote Control](/docs/es/remote-control) mientras la sesión local tiene una conexión Remote Control activa.432Los manejadores se ejecutan en el directorio actual con el entorno de Claude Code. Si el directorio actual ya no existe, por ejemplo un worktree o directorio temporal que otro shell eliminó a mitad de sesión, Claude Code ejecuta hooks de comando desde el primero de estos que aún existe: el directorio en el que comenzó la sesión, la raíz del proyecto, tu directorio de inicio o el directorio temporal del sistema. Claude Code registra una advertencia nombrando el directorio de respaldo en el [registro de depuración](#debug-hooks).

433 

434La variable de entorno `$CLAUDE_CODE_REMOTE` es `"true"` en entornos web remotos y no está establecida en la CLI local. Claude Code v2.1.199 y posterior establece [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/es/env-vars) en el ID de sesión de [Control Remoto](/docs/es/remote-control) mientras la sesión local tiene una conexión activa de Control Remoto.

334 435 

335<h4 id="common-fields">436<h4 id="common-fields">

336 Campos comunes437 Campos comunes

337</h4>438</h4>

338 439 

339Estos campos se aplican a todos los tipos de hooks:440Estos campos se aplican a todos los tipos de hook:

340 441 

341| Campo | Requerido | Descripción |442| Campo | Requerido | Descripción |

342| :-------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |443| :-------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

343| `type` | sí | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |444| `type` | sí | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |

344| `if` | no | Sintaxis de regla de permiso para filtrar cuándo se ejecuta este hook, como `"Bash(git *)"` o `"Edit(*.ts)"`. El hook solo se genera si la llamada a herramienta coincide con el patrón. Consulte la tabla [Bash matching](#bash-if-matching) a continuación para ver cómo los patrones de Bash se evalúan contra subcomandos, `$()` y backticks. Solo se evalúa en eventos de herramientas: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` y `PermissionDenied`. En otros eventos, un hook con `if` establecido nunca se ejecuta. Utiliza la misma sintaxis que [reglas de permiso](/docs/es/permissions) |445| `if` | no | Sintaxis de regla de permisos para filtrar cuándo se ejecuta este hook, como `"Bash(git *)"` o `"Edit(*.ts)"`. El comando de hook solo se ejecuta si la llamada de herramienta coincide con el patrón. Consulta la tabla [Bash matching](#bash-if-matching) a continuación para saber cómo los patrones de Bash se evalúan contra subcomandos, `$()` y backticks. Solo se evalúa en eventos de herramienta: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` y `PermissionDenied`. En otros eventos, un hook con `if` establecido nunca se ejecuta. Utiliza la misma sintaxis que [reglas de permisos](/docs/es/permissions) |

345| `timeout` | no | Segundos antes de cancelar. Valores predeterminados: 600 para `command`, `http` y `mcp_tool`; 30 para `prompt`; 60 para `agent`. [`UserPromptSubmit`](#userpromptsubmit) reduce el valor predeterminado de `command`, `http` y `mcp_tool` a 30, y [`MessageDisplay`](#messagedisplay) lo reduce a 10 |446| `timeout` | no | Segundos antes de cancelar. Claude Code no lo aplica en un hook de comando que ejecutas con [`async: true`](#run-hooks-in-the-background). Valores por defecto: 600 para `command`, `http` y `mcp_tool`; 30 para `prompt`; 60 para `agent`. Claude Code reduce el valor por defecto de `command`, `http` y `mcp_tool` a 30 en [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch) y [`PostModelSwitch`](#postmodelswitch), y a 10 en [`MessageDisplay`](#messagedisplay). Los hooks de [`SessionEnd`](#sessionend) comparten un presupuesto de 1.5 segundos; si tu configuración establece un `timeout` por hook más largo, Claude Code aumenta el presupuesto para que coincida, hasta 60 segundos |

346| `statusMessage` | no | Mensaje de spinner personalizado mostrado mientras se ejecuta el hook |447| `statusMessage` | no | Mensaje de spinner personalizado mostrado mientras se ejecuta el hook |

347| `once` | no | Si es `true`, se ejecuta una vez por sesión y luego se elimina. Solo se honra para hooks declarados en [skill frontmatter](#hooks-in-skills-and-agents); se ignora en archivos de configuración y frontmatter de agente |448| `once` | no | Si es `true`, Claude Code elimina el hook después de su primera ejecución exitosa. Una ejecución que falla, bloquea con código de salida 2 o agota el tiempo de espera deja el hook en su lugar, por lo que se ejecuta de nuevo en el siguiente evento coincidente. Solo se respeta para hooks declarados en [frontmatter de skill](#hooks-in-skills-and-agents); se ignora en archivos de configuración y frontmatter de agente |

449 

450El campo `if` contiene exactamente una regla de permisos. No hay sintaxis `&&`, `||` o de lista para combinar reglas; para aplicar múltiples condiciones, define un manejador de hook separado para cada una.

348 451 

349El campo `if` contiene exactamente una regla de permiso. No hay sintaxis `&&`, `||` o de lista para combinar reglas; para aplicar múltiples condiciones, defina un controlador de hook separado para cada una.452En una condición `if` para una herramienta de archivo, un patrón de directorio de un solo segmento como `"Edit(src/**)"` coincide solo con el directorio `src` en el directorio de trabajo y los archivos bajo él. Para coincidir con un directorio llamado `src` a cualquier profundidad, escribe `"Edit(**/src/**)"`. Antes de v2.1.214, `"Edit(src/**)"` coincidía con un directorio llamado `src` a cualquier profundidad bajo el directorio de trabajo.

350 453 

351<span id="bash-if-matching" />Para patrones de Bash, si su comando hook se ejecuta depende de la forma del patrón y del comando Bash que Claude está invocando. Las asignaciones `VAR=value` iniciales se eliminan antes de coincidir.454<span id="bash-if-matching" />Para patrones de Bash, si tu comando de hook se ejecuta depende de la forma del patrón y del comando de Bash que Claude está invocando. Las asignaciones `VAR=value` iniciales se eliminan antes de hacer coincidir.

352 455 

353| patrón `if` | Comando Bash | ¿Se ejecuta el hook? | Por qué |456| Patrón `if` | Comando de Bash | ¿Se ejecuta el hook? | Por qué |

354| :----------------- | :--------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------- |457| :----------------- | :-------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

355| `Bash(git *)` | `FOO=bar git push` | sí | las asignaciones iniciales se eliminan; `git push` coincide |458| `Bash(git *)` | `FOO=bar git push` | sí | las asignaciones iniciales se eliminan; `git push` coincide |

356| `Bash(git *)` | `npm test && git push` | sí | cada subcomando se verifica; `git push` coincide |459| `Bash(git *)` | `npm test && git push` | sí | cada subcomando se verifica; `git push` coincide |

357| `Bash(rm *)` | `echo $(rm -rf /)` | sí | los comandos dentro de `$()` y backticks se verifican; `rm -rf /` coincide |460| `Bash(rm *)` | `echo $(rm -rf /)` | sí | los comandos dentro de `$()` y backticks se verifican; `rm -rf /` coincide |

358| `Bash(rm *)` | `echo $(date)` | no | ningún subcomando coincide con `rm *` |461| `Bash(rm *)` | `echo $(date)` | no | ningún subcomando coincide con `rm *` |

462| `Bash(cat *)` | `echo before $(date) after` | no | una sustitución puede estar en cualquier posición de argumento, por lo que se verifican el comando completo y `date`; ninguno coincide con `cat *` |

463| `Bash(git *)` | `$TOOL git push` | sí | Claude Code no puede saber a qué se expande el nombre del comando, por lo que ejecuta el hook |

359| `Bash(git push *)` | `echo $(date)` | sí | los patrones que especifican más que el nombre del comando ejecutan el hook de todas formas en `$()`, backticks o `$VAR` |464| `Bash(git push *)` | `echo $(date)` | sí | los patrones que especifican más que el nombre del comando ejecutan el hook de todas formas en `$()`, backticks o `$VAR` |

360 465 

361El filtro también falla abierto, ejecutando su hook independientemente del patrón, cuando el comando Bash no se puede analizar. Debido a que el filtro `if` es de mejor esfuerzo, use el [sistema de permisos](/docs/es/permissions) en lugar de un hook para aplicar un permiso o denegación duro.466Cuando Claude Code no puede determinar qué comandos ejecuta la entrada de Bash, ejecuta tu hook independientemente del patrón. Porque el filtro `if` es de mejor esfuerzo, utiliza el [sistema de permisos](/docs/es/permissions) en lugar de un hook para aplicar una autorización o denegación dura.

362 467 

363<h4 id="command-hook-fields">468<h4 id="command-hook-fields">

364 Campos de comando hook469 Campos de hook de comando

365</h4>470</h4>

366 471 

367Además de los [campos comunes](#common-fields), los hooks de comando aceptan estos campos:472Además de los [campos comunes](#common-fields), los hooks de comando aceptan estos campos:

368 473 

369| Campo | Requerido | Descripción |474| Campo | Requerido | Descripción |

370| :------------ | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |475| :------------ | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

371| `command` | sí | Comando de shell a ejecutar. Con `args`, el ejecutable a generar directamente. Consulte [Exec form and shell form](#exec-form-and-shell-form) |476| `command` | sí | Comando de shell a ejecutar. Con `args`, el ejecutable a generar directamente. Consulta [Forma exec y forma shell](#exec-form-and-shell-form) |

372| `args` | no | Lista de argumentos. Cuando está presente, `command` se resuelve como un ejecutable y se genera directamente con `args` como el vector de argumentos, sin shell involucrado. Consulte [Exec form and shell form](#exec-form-and-shell-form) |477| `args` | no | Lista de argumentos. Cuando está presente, `command` se resuelve como un ejecutable y se genera directamente con `args` como el vector de argumentos, sin shell involucrado. Consulta [Forma exec y forma shell](#exec-form-and-shell-form) |

373| `async` | no | Si es `true`, se ejecuta en segundo plano sin bloquear. Consulte [Run hooks in the background](#run-hooks-in-the-background) |478| `async` | no | Si es `true`, se ejecuta en segundo plano sin bloquear. Consulta [Ejecutar hooks en segundo plano](#run-hooks-in-the-background) |

374| `asyncRewake` | no | Si es `true`, se ejecuta en segundo plano y despierta a Claude en código de salida 2. Implica `async`. El stderr del hook, o stdout si stderr está vacío, se muestra a Claude como un recordatorio del sistema para que pueda reaccionar a un fallo de fondo de larga duración |479| `asyncRewake` | no | Si es `true`, se ejecuta en segundo plano y despierta a Claude en código de salida 2. El stderr del hook, o stdout si stderr está vacío, se muestra a Claude como un recordatorio del sistema para que pueda reaccionar a un fallo de fondo de larga duración |

375| `shell` | no | Shell a usar para este hook. Acepta `"bash"` o `"powershell"`. Por defecto es `"bash"`, o `"powershell"` en Windows cuando Git Bash no está instalado. Establecer `"powershell"` ejecuta el comando a través de PowerShell en Windows. No requiere `CLAUDE_CODE_USE_POWERSHELL_TOOL` ya que los hooks generan PowerShell directamente. Se ignora cuando `args` está establecido |480| `shell` | no | Shell a usar para este hook. Acepta `"bash"` o `"powershell"`. Por defecto es `"bash"`, o `"powershell"` en Windows cuando Git Bash no está instalado. Establecer `"powershell"` ejecuta el comando a través de PowerShell en Windows. No requiere `CLAUDE_CODE_USE_POWERSHELL_TOOL` ya que los hooks generan PowerShell directamente. Se ignora cuando `args` está establecido |

376 481 

377<a id="exec-form-and-shell-form" />482<a id="exec-form-and-shell-form" />

378 483 

379<h5 id="exec-form-and-shell-form">484<h5 id="exec-form-and-shell-form">

380 Exec form y shell form485 Forma exec y forma shell

381</h5>486</h5>

382 487 

383Un hook de comando se ejecuta como exec form cuando `args` está establecido, y shell form cuando `args` se omite. Establezca `args` siempre que el hook haga referencia a un [marcador de posición de ruta](#reference-scripts-by-path), ya que cada elemento se pasa como un argumento sin comillas. Omita `args` cuando necesite características de shell como pipes o `&&`, o cuando ninguna preocupación se aplique.488Un hook de comando se ejecuta como forma exec cuando `args` está establecido, y forma shell cuando `args` se omite. Establece `args` siempre que el hook haga referencia a un [marcador de posición de ruta](#reference-scripts-by-path), ya que cada elemento se pasa como un argumento. Omite `args` cuando necesites características de shell como pipes o `&&`, o cuando ninguna preocupación se aplique.

384 489 

385**Exec form** se ejecuta cuando `args` está presente. Claude Code resuelve `command` como un ejecutable en `PATH` y lo genera directamente con `args` como el vector de argumentos. No hay shell, por lo que cada elemento `args` es exactamente un argumento tal como está escrito, y los marcadores de posición de ruta como `${CLAUDE_PLUGIN_ROOT}` se sustituyen en `command` y en cada elemento `args` como cadenas simples. Los caracteres especiales como apóstrofes, `$` y backticks pasan literalmente porque no hay shell para interpretarlos. No ocurre tokenización de shell en ninguna plataforma.490**Forma exec** se ejecuta cuando `args` está presente. Claude Code resuelve `command` como un ejecutable en `PATH` y lo genera directamente con `args` como el vector de argumentos. No hay shell, por lo que cada elemento de `args` es exactamente un argumento tal como está escrito, y los marcadores de posición de ruta como `${CLAUDE_PLUGIN_ROOT}` se sustituyen en `command` y en cada elemento de `args` como cadenas simples. Los caracteres especiales como apóstrofes, `$` y backticks pasan sin cambios porque no hay shell para interpretarlos. No ocurre tokenización de shell en ninguna plataforma.

386 491 

387**Shell form** se ejecuta cuando `args` se omite. La cadena `command` se pasa a un shell: `sh -c` en macOS y Linux, Git Bash en Windows, o PowerShell cuando Git Bash no está instalado. Establezca el campo `shell` para elegir explícitamente. El shell tokeniza la cadena, expande variables e interpreta pipes, `&&`, redirecciones y globs.492**Forma shell** se ejecuta cuando `args` se omite. La cadena `command` se pasa a un shell: `sh -c` en macOS y Linux, Git Bash en Windows, o PowerShell cuando Git Bash no está instalado. Establece el campo `shell` para elegir explícitamente. El shell tokeniza la cadena, expande variables e interpreta pipes, `&&`, redirecciones y globs.

388 493 

389<Note>494<Note>

390 En Windows, exec form requiere que `command` se resuelva a un ejecutable real como `.exe`. Los shims `.cmd` y `.bat` que npm, npx, eslint y otras herramientas instalan en `node_modules/.bin` no son ejecutables y no pueden generarse sin un shell. Para ejecutarlos en exec form, invoque el script subyacente con `node` directamente, por ejemplo `"command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/eslint/bin/eslint.js"]`. El patrón `node` más ruta de script funciona en cada plataforma porque `node.exe` es un binario real. Para ejecutar un shim `.cmd` o `.bat` por nombre, use shell form.495 En Windows, la forma exec requiere que `command` se resuelva en un ejecutable real como `.exe`. Los shims `.cmd` y `.bat` que npm, npx, eslint y otras herramientas instalan en `node_modules/.bin` no son ejecutables y no se pueden generar sin un shell. Para ejecutarlos en forma exec, invoca el script subyacente con `node` directamente, por ejemplo `"command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/eslint/bin/eslint.js"]`. El patrón `node` más ruta de script funciona en cada plataforma porque `node.exe` es un binario real. Para ejecutar un shim `.cmd` o `.bat` por nombre, usa forma shell.

391</Note>496</Note>

392 497 

393Este ejemplo ejecuta un script de Node incluido con un plugin. Exec form pasa la ruta de script resuelta como un argumento sin comillas:498Este ejemplo ejecuta un script de Node incluido con un plugin. La forma exec pasa la ruta de script resuelta como un argumento sin comillas:

394 499 

395```json theme={null}500```json theme={null}

396{501{


400}505}

401```506```

402 507 

403La forma de shell equivalente necesita comillas para manejar rutas con espacios o caracteres especiales:508La forma shell equivalente necesita comillas para manejar rutas con espacios o caracteres especiales:

404 509 

405```json theme={null}510```json theme={null}

406{511{


409}514}

410```515```

411 516 

412Ambas formas admiten los mismos [marcadores de posición de ruta](#reference-scripts-by-path), y ambas los exportan como las variables de entorno `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` y `CLAUDE_PLUGIN_DATA` en el proceso generado, por lo que un script puede leer `process.env.CLAUDE_PLUGIN_ROOT` independientemente de cómo se haya lanzado.517Ambas formas soportan los mismos [marcadores de posición de ruta](#reference-scripts-by-path), y ambas los exportan como variables de entorno `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` y `CLAUDE_PLUGIN_DATA` en el proceso generado, por lo que un script puede leer `process.env.CLAUDE_PLUGIN_ROOT` independientemente de cómo se haya lanzado.

413 518 

414Los hooks de plugin además sustituyen valores [`${user_config.*}`](/docs/es/plugins-reference#user-configuration), solo en exec form: el valor se sustituye en `command` y en cada elemento `args` como una cadena simple, por lo que ningún shell lo vuelve a analizar.519Los hooks de plugin además sustituyen valores [`${user_config.*}`](/docs/es/plugins-reference#user-configuration), solo en forma exec: el valor se sustituye en `command` y en cada elemento de `args` como una cadena simple, por lo que ningún shell lo re-analiza.

415 520 

416Un hook de plugin en shell form cuyo `command` hace referencia a `${user_config.*}` falla con un [error](/docs/es/errors#plugin-command-references-user-config) en lugar de ejecutarse. Para usar un valor de opción de un hook en shell form, lea la variable de entorno `$CLAUDE_PLUGIN_OPTION_<KEY>`, como `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` para una opción `webhook_url`, o establezca `args` para cambiar el hook a exec form. Antes de v2.1.207, los comandos de hook de plugin en shell form también sustituían `${user_config.*}`.521Un hook de plugin en forma shell cuyo `command` hace referencia a `${user_config.*}` falla con un [error](/docs/es/errors#plugin-command-references-user-config) en lugar de ejecutarse. Para usar un valor de opción de un hook en forma shell, lee la variable de entorno `$CLAUDE_PLUGIN_OPTION_<KEY>`, como `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` para una opción `webhook_url`, o establece `args` para cambiar el hook a forma exec. Antes de v2.1.207, los comandos de hook de plugin en forma shell también sustituían `${user_config.*}`.

417 522 

418<Note>523<Note>

419 En exec form, `command` es solo el nombre o ruta del ejecutable. Si `command` es un nombre simple sin separador de ruta y contiene espacios junto con `args`, Claude Code registra una advertencia porque la generación fallará: no hay ejecutable llamado `node script.js`. Mueva los tokens adicionales a `args`. Las rutas absolutas con espacios, como `C:\Program Files\nodejs\node.exe`, son un ejecutable válido único y no desencadenan la advertencia.524 En forma exec, `command` es solo el nombre o ruta del ejecutable. Si `command` es un nombre desnudo sin separador de ruta y contiene espacios junto con `args`, Claude Code registra una advertencia porque la generación fallará: no hay un ejecutable llamado `node script.js`. Mueve los tokens adicionales a `args`. Las rutas absolutas con espacios, como `C:\Program Files\nodejs\node.exe`, son un ejecutable válido único y no activan la advertencia.

420</Note>525</Note>

421 526 

422<h4 id="http-hook-fields">527<h4 id="http-hook-fields">


426Además de los [campos comunes](#common-fields), los hooks HTTP aceptan estos campos:531Además de los [campos comunes](#common-fields), los hooks HTTP aceptan estos campos:

427 532 

428| Campo | Requerido | Descripción |533| Campo | Requerido | Descripción |

429| :--------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |534| :--------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

430| `url` | sí | URL a la que enviar la solicitud POST |535| `url` | sí | URL a la que enviar la solicitud POST |

431| `headers` | no | Encabezados HTTP adicionales como pares clave-valor. Los valores admiten interpolación de variables de entorno usando la sintaxis `$VAR_NAME` o `${VAR_NAME}`. Solo se resuelven las variables enumeradas en `allowedEnvVars` |536| `headers` | no | Encabezados HTTP adicionales como pares clave-valor. Los valores soportan interpolación de variables de entorno usando sintaxis `$VAR_NAME` o `${VAR_NAME}`. Solo se resuelven las variables listadas en `allowedEnvVars` |

432| `allowedEnvVars` | no | Lista de nombres de variables de entorno que pueden interpolarse en valores de encabezado. Las referencias a variables no enumeradas se reemplazan con cadenas vacías. Requerido para que funcione cualquier interpolación de variable de entorno |537| `allowedEnvVars` | no | Lista de nombres de variables de entorno que pueden interpolarse en valores de encabezado. Las referencias a variables no listadas se reemplazan con cadenas vacías. Requerido para que funcione cualquier interpolación de variable de entorno |

433 538 

434Claude Code envía la [entrada JSON](#hook-input-and-output) del hook como el cuerpo de la solicitud POST con `Content-Type: application/json`. El cuerpo de la respuesta usa el mismo [formato de salida JSON](#json-output) que los hooks de comando.539Claude Code envía la [entrada JSON](#hook-input-and-output) del hook como el cuerpo de solicitud POST con `Content-Type: application/json`. El cuerpo de respuesta utiliza el mismo [formato de salida JSON](#json-output) que los hooks de comando.

435 540 

436El manejo de errores difiere de los hooks de comando: las respuestas que no son 2xx, los fallos de conexión y los tiempos de espera agotados producen errores sin bloqueo que permiten que la ejecución continúe. Para bloquear una llamada a herramienta o denegar un permiso, devuelva una respuesta 2xx con un cuerpo JSON que contenga `decision: "block"` o un `hookSpecificOutput` con `permissionDecision: "deny"`.541El manejo de errores difiere de los hooks de comando; consulta [Manejo de respuesta HTTP](#http-response-handling).

437 542 

438Este ejemplo envía eventos `PreToolUse` a un servicio de validación local, autenticándose con un token de la variable de entorno `MY_TOKEN`:543Este ejemplo envía eventos `PreToolUse` a un servicio de validación local, autenticándose con un token de la variable de entorno `MY_TOKEN`:

439 544 


467Además de los [campos comunes](#common-fields), los hooks de herramienta MCP aceptan estos campos:572Además de los [campos comunes](#common-fields), los hooks de herramienta MCP aceptan estos campos:

468 573 

469| Campo | Requerido | Descripción |574| Campo | Requerido | Descripción |

470| :------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |575| :------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

471| `server` | sí | Nombre de un servidor MCP configurado. Para un [servidor incluido en plugin](/docs/es/mcp#plugin-provided-mcp-servers), este es el nombre con alcance `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:db`, no la clave del servidor simple. El servidor ya debe estar conectado; el hook nunca desencadena un flujo OAuth o de conexión |576| `server` | sí | Nombre de un servidor MCP configurado. Para un [servidor incluido en plugin](/docs/es/mcp#plugin-provided-mcp-servers), este es el nombre con alcance `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:db`, no la clave del servidor desnuda. El servidor debe estar ya conectado; el hook nunca activa un flujo OAuth o de conexión |

472| `tool` | sí | Nombre de la herramienta a llamar en ese servidor |577| `tool` | sí | Nombre de la herramienta a llamar en ese servidor |

473| `input` | no | Argumentos pasados a la herramienta. Los valores de cadena admiten sustitución `${path}` de la [entrada JSON](#hook-input-and-output) del hook, como `"${tool_input.file_path}"` |578| `input` | no | Argumentos pasados a la herramienta. Los valores de cadena soportan sustitución de `${path}` de la [entrada JSON](#hook-input-and-output) del hook, como `"${tool_input.file_path}"` |

474 579 

475La salida de texto de la herramienta se trata como stdout de hook de comando: si se analiza como [salida JSON](#json-output) válida, se procesa como una decisión; de lo contrario, se muestra como texto sin formato. Si el servidor nombrado no está conectado, o la herramienta devuelve `isError: true`, el hook produce un error sin bloqueo y la ejecución continúa.580Claude Code lee el contenido de texto de la herramienta de la misma manera que lee stdout de hook de comando, siguiendo la [regla de análisis bajo código de salida 0](#exit-code-0). Si el servidor nombrado no está conectado, o la herramienta devuelve `isError: true`, el hook produce un error sin bloqueo y la ejecución continúa.

476 

477Los hooks de herramienta MCP están disponibles en cada evento de hook una vez que Claude Code se ha conectado a sus servidores MCP. `SessionStart` y `Setup` típicamente se activan antes de que los servidores terminen de conectarse, por lo que los hooks en esos eventos deben esperar el error "no conectado" en la primera ejecución.

478 581 

479Este ejemplo llama a la herramienta `security_scan` en el servidor MCP `my_server` después de cada `Write` o `Edit`, pasando la ruta del archivo editado:582Este ejemplo llama a la herramienta `security_scan` en el servidor MCP `my_server` después de cada `Write` o `Edit`, pasando la ruta del archivo editado:

480 583 


498}601}

499```602```

500 603 

604Un hook `mcp_tool` puede ejecutarse solo después de que Claude Code haya puesto los servidores MCP de la sesión disponibles para los hooks. `SessionStart` y `Setup` pueden activarse antes de ese punto:

605 

606* **Al lanzar**: `SessionStart` se activa antes de que los servidores estén disponibles, incluso cuando lanzas con `--continue` o `--resume`. Claude Code omite los hooks `mcp_tool` del evento sin llamar a sus herramientas, y el [registro de depuración](#debug-hooks) registra `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`.

607* **Más tarde en una sesión en ejecución**: después de `/clear` o una compactación, `SessionStart` se activa de nuevo con los servidores ya disponibles, y sus hooks `mcp_tool` se ejecutan.

608* **En `Setup`**: `Setup` siempre se activa antes de que los servidores estén disponibles, por lo que Claude Code omite sus hooks `mcp_tool` cada vez y registra el mismo mensaje nombrando `Setup`.

609 

610Por ejemplo, esta configuración llama a la herramienta `load_context` en el servidor MCP `my_server` desde un hook `SessionStart` sin matcher, por lo que se aplica a cada fuente de `SessionStart`:

611 

612```json theme={null}

613{

614 "hooks": {

615 "SessionStart": [

616 {

617 "hooks": [

618 {

619 "type": "mcp_tool",

620 "server": "my_server",

621 "tool": "load_context"

622 }

623 ]

624 }

625 ]

626 }

627}

628```

629 

630Cuando ejecutas `claude`, Claude Code omite este hook, nunca llama a `load_context` y escribe el mensaje `no MCP client context` en el registro de depuración. Ejecuta `/clear` en esa misma sesión y el hook se ejecuta y llama a `load_context`. Un hook `type: "command"` en `SessionStart` se ejecuta al lanzar, por lo que usa uno para cualquier cosa que la sesión necesite desde su primer turno.

631 

501<h4 id="prompt-and-agent-hook-fields">632<h4 id="prompt-and-agent-hook-fields">

502 Campos de hook de prompt y agente633 Campos de hook de prompt y agente

503</h4>634</h4>


505Además de los [campos comunes](#common-fields), los hooks de prompt y agente aceptan estos campos:636Además de los [campos comunes](#common-fields), los hooks de prompt y agente aceptan estos campos:

506 637 

507| Campo | Requerido | Descripción |638| Campo | Requerido | Descripción |

508| :------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |639| :------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

509| `prompt` | sí | Texto del prompt a enviar al modelo. Use `$ARGUMENTS` como marcador de posición para la entrada JSON del hook. Escape con una barra invertida para incluir texto literal: `\$1.00` se representa como `$1.00` |640| `prompt` | sí | Texto de prompt a enviar al modelo. Usa `$ARGUMENTS` como marcador de posición para la entrada JSON del hook. Escapa con una barra invertida para incluir texto literal: `\$1.00` se renderiza como `$1.00` |

510| `model` | no | Modelo a usar para evaluación. Por defecto es un modelo rápido |641| `model` | no | Modelo a usar para evaluación. Por defecto es un modelo rápido |

511 642 

512<h3 id="reference-scripts-by-path">643<h3 id="reference-scripts-by-path">

513 Referenciar scripts por ruta644 Referencia de scripts por ruta

514</h3>645</h3>

515 646 

516Use estos marcadores de posición para referenciar scripts de hooks relativos a la raíz del proyecto o plugin, independientemente del directorio de trabajo cuando se ejecuta el hook:647Utiliza estos marcadores de posición para hacer referencia a scripts de hook relativos a la raíz del proyecto o plugin, independientemente del directorio de trabajo cuando se ejecuta el hook:

648 

649* `${CLAUDE_PROJECT_DIR}`: la raíz del proyecto donde comenzó la sesión. Claude Code también establece esta variable en el entorno de [servidores MCP stdio](/docs/es/mcp#option-3-add-a-local-stdio-server) y servidores LSP de plugin.

650* `${CLAUDE_PLUGIN_ROOT}`: el directorio de instalación del plugin, para scripts incluidos con un [plugin](/docs/es/plugins). Consulta [variables de entorno de plugin](/docs/es/plugins-reference#environment-variables) para saber cómo se comporta la ruta entre actualizaciones.

651* `${CLAUDE_PLUGIN_DATA}`: el [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) del plugin, para dependencias y estado que deben sobrevivir a las actualizaciones del plugin.

517 652 

518* `${CLAUDE_PROJECT_DIR}`: la raíz del proyecto. Claude Code también establece esta variable en el entorno de [servidores MCP stdio](/docs/es/mcp#option-3-add-a-local-stdio-server) y servidores LSP de plugin.653<Note>

519* `${CLAUDE_PLUGIN_ROOT}`: el directorio de instalación del plugin, para scripts incluidos con un [plugin](/docs/es/plugins). Cambia en cada actualización de plugin.654 **Los worktrees son diferentes.** Si Claude entra en un [worktree](/docs/es/worktrees) durante la sesión, Claude Code mantiene `${CLAUDE_PROJECT_DIR}` donde estaba y pasa la ruta del worktree a tus hooks de una manera diferente:

520* `${CLAUDE_PLUGIN_DATA}`: el [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) del plugin, para dependencias y estado que deben sobrevivir a las actualizaciones de plugin.

521 655 

522Prefiera [exec form](#exec-form-and-shell-form) para cualquier hook que haga referencia a un marcador de posición de ruta. Exec form pasa cada elemento `args` como un argumento sin tokenización de shell, por lo que las rutas con espacios o caracteres especiales no necesitan comillas. En shell form, envuelva cada marcador de posición entre comillas dobles.656 * **`${CLAUDE_PROJECT_DIR}` se queda en su lugar**: aún apunta a la raíz del proyecto donde comenzó la sesión, por lo que un comando como `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` aún ejecuta el script en el checkout principal.

657 * **`cwd` sigue a Claude**: el campo `cwd` en la [entrada JSON](#common-input-fields) del hook es la raíz del worktree después de que Claude entra en un worktree, y el nuevo directorio después de que Claude ejecuta `cd`. Léelo cuando un hook necesite saber en qué directorio está trabajando Claude.

658</Note>

659 

660Prefiere [forma exec](#exec-form-and-shell-form) para cualquier hook que haga referencia a un marcador de posición de ruta. En forma shell, envuelve cada marcador de posición en comillas dobles.

523 661 

524<Tabs>662<Tabs>

525 <Tab title="Scripts de proyecto">663 <Tab title="Project scripts">

526 Este ejemplo usa `${CLAUDE_PROJECT_DIR}` para ejecutar un verificador de estilo desde el directorio `.claude/hooks/` del proyecto después de cualquier llamada a herramienta `Write` o `Edit`:664 Este ejemplo usa `${CLAUDE_PROJECT_DIR}` para ejecutar un verificador de estilo desde el directorio `.claude/hooks/` del proyecto después de cualquier llamada de herramienta `Write` o `Edit`:

527 665 

528 ```json theme={null}666 ```json theme={null}

529 {667 {


545 ```683 ```

546 </Tab>684 </Tab>

547 685 

548 <Tab title="Scripts de plugin">686 <Tab title="Plugin scripts">

549 Defina hooks de plugin en `hooks/hooks.json` con un campo `description` opcional de nivel superior. Cuando se habilita un plugin, sus hooks se fusionan con sus hooks de usuario y proyecto.687 Define hooks de plugin en `hooks/hooks.json` con un campo `description` opcional de nivel superior. Cuando un plugin está habilitado, sus hooks se fusionan con tus hooks de usuario y proyecto.

550 688 

551 Este ejemplo ejecuta un script de formato incluido con el plugin:689 Este ejemplo ejecuta un script de formato incluido con el plugin:

552 690 


571 }709 }

572 ```710 ```

573 711 

574 Consulte la [referencia de componentes de plugin](/docs/es/plugins-reference#hooks) para obtener detalles sobre cómo crear hooks de plugin.712 Consulta la [referencia de componentes de plugin](/docs/es/plugins-reference#hooks) para obtener detalles sobre cómo crear hooks de plugin.

575 </Tab>713 </Tab>

576</Tabs>714</Tabs>

577 715 


579 Hooks en skills y agentes717 Hooks en skills y agentes

580</h3>718</h3>

581 719 

582Además de archivos de configuración y plugins, los hooks pueden definirse directamente en [skills](/docs/es/skills) y [subagentes](/docs/es/sub-agents) usando frontmatter. Estos hooks se limitan al ciclo de vida del componente y solo se ejecutan cuando ese componente está activo.720Además de archivos de configuración y plugins, los hooks pueden definirse directamente en [skills](/docs/es/skills) y [subagentes](/docs/es/sub-agents) usando frontmatter, en el mismo formato de configuración que los hooks basados en configuración. Cuánto tiempo Claude Code los mantiene registrados depende del componente:

583 

584Se admiten todos los eventos de hook. Para subagentes, los hooks `Stop` se convierten automáticamente a `SubagentStop` ya que ese es el evento que se activa cuando un subagente se completa.

585 721 

586Los hooks usan el mismo formato de configuración que los hooks basados en configuración pero se limitan a la vida útil del componente y se limpian cuando finaliza.722* **Hooks de subagente**: Claude Code los ejecuta solo mientras ese subagente se está ejecutando y los elimina cuando termina. Claude Code convierte un hook `Stop` aquí a `SubagentStop`, el evento que se activa cuando un subagente se completa.

723* **Hooks de skill**: Claude Code los registra cuando tú o Claude invocas la skill y los mantiene ejecutándose durante el resto de la sesión, en turnos después del turno propio de la skill también. Para que Claude Code elimine un hook después de su primera ejecución exitosa en su lugar, establece [`once: true`](#common-fields) en él.

587 724 

588Esta skill define un hook `PreToolUse` que ejecuta un script de validación de seguridad antes de cada comando `Bash`:725Esta skill define un hook `PreToolUse` que ejecuta un script de validación de seguridad antes de cada comando `Bash`:

589 726 


600---737---

601```738```

602 739 

603Los agentes usan el mismo formato en su frontmatter YAML.740Los subagentes utilizan el mismo formato en su frontmatter YAML.

741 

742Los hooks de frontmatter en una skill de proyecto siguen la misma [regla de confianza de espacio de trabajo que los hooks en archivos de configuración](#workspace-trust). Claude Code los registra cuando tú o Claude invocas la skill, incluso en una ejecución `-p` en una carpeta que no has confiado.

743 

744Los hooks de frontmatter en un subagente de proyecto se ejecutan solo después de que aceptes el [diálogo de confianza de espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) para la carpeta de la que proviene el archivo del agente. Una sesión `-p` no cuenta como aceptarlo. [Lo que se ejecuta antes de confiar en una carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder) compara esto con la regla del archivo de configuración, y la página de subagentes lista [qué alcances están exentos](/docs/es/sub-agents#hooks-in-subagent-frontmatter). Antes de v2.1.218, estos hooks podían ejecutarse desde carpetas que no habías confiado.

604 745 

605<h3 id="the-/hooks-menu">746<h3 id="the-/hooks-menu">

606 El menú `/hooks`747 El menú `/hooks`

607</h3>748</h3>

608 749 

609Escriba `/hooks` en Claude Code para abrir un navegador de solo lectura para sus hooks configurados. El menú muestra cada evento de hook con un recuento de hooks configurados, le permite profundizar en matchers y muestra los detalles completos de cada controlador de hook. Úselo para verificar la configuración, verificar desde qué archivo de configuración proviene un hook o inspeccionar el comando, prompt o URL de un hook.750Escribe `/hooks` en Claude Code para abrir un navegador de solo lectura para tus hooks configurados. El menú muestra cada evento de hook con un recuento de hooks configurados, te permite profundizar en matchers y muestra los detalles completos de cada manejador de hook. Úsalo para verificar la configuración, comprobar desde qué archivo de configuración proviene un hook o inspeccionar el comando, prompt o URL de un hook.

610 751 

611El menú muestra los cinco tipos de hooks: `command`, `prompt`, `agent`, `http` y `mcp_tool`. Cada hook está etiquetado con un prefijo `[type]` y una fuente que indica dónde se definió:752El menú muestra los cinco tipos de hook: `command`, `prompt`, `agent`, `http` y `mcp_tool`. Cada hook está etiquetado con un prefijo `[type]` y una fuente que indica dónde se definió:

612 753 

613* `User`: de `~/.claude/settings.json`754* `User Settings`: de `~/.claude/settings.json`

614* `Project`: de `.claude/settings.json`755* `Project Settings`: de `.claude/settings.json`

615* `Local`: de `.claude/settings.local.json`756* `Local Settings`: de `.claude/settings.local.json`

616* `Plugin`: de `hooks/hooks.json` de un plugin757* `Plugin Hooks`: de `hooks/hooks.json` de un plugin

617* `Session`: registrado en memoria para la sesión actual758* `Session Hooks`: registrado en memoria para la sesión actual

618* `Built-in`: registrado internamente por Claude Code

619 759 

620Seleccionar un hook abre una vista de detalle que muestra su evento, matcher, tipo, archivo de origen y el comando, prompt o URL completo. El menú es de solo lectura: para agregar, modificar o eliminar hooks, edite el JSON de configuración directamente o pida a Claude que haga el cambio.760Seleccionar un hook abre una vista de detalle mostrando su evento, matcher, tipo, archivo de origen y el comando, prompt o URL completo. El menú es de solo lectura: para añadir, modificar o eliminar hooks, edita el JSON de configuración directamente o pide a Claude que haga el cambio.

621 761 

622<h3 id="disable-or-remove-hooks">762<h3 id="disable-or-remove-hooks">

623 Deshabilitar o eliminar hooks763 Deshabilitar o eliminar hooks

624</h3>764</h3>

625 765 

626Para eliminar un hook, elimine su entrada del archivo de configuración JSON.766Para eliminar un hook, elimina su entrada del archivo JSON de configuración.

627 767 

628Para deshabilitar temporalmente todos los hooks sin eliminarlos, establezca `"disableAllHooks": true` en su archivo de configuración. No hay forma de deshabilitar un hook individual mientras se mantiene en la configuración.768Para deshabilitar temporalmente todos los hooks sin eliminarlos, establece `"disableAllHooks": true` en tu archivo de configuración. Claude Code lee el valor que queda después de que se aplica la [precedencia de configuración](/docs/es/settings#settings-precedence), por lo que un `"disableAllHooks": false` en `.claude/settings.json` de un proyecto anula un `true` en tu configuración de usuario. Para desactivar los hooks para una ejecución sin importar lo que diga la configuración del proyecto, pasa `--settings '{"disableAllHooks": true}'`, que tiene precedencia sobre la configuración de proyecto y local. No hay forma de deshabilitar un hook individual mientras lo mantienes en la configuración.

629 769 

630La configuración `disableAllHooks` respeta la jerarquía de configuración administrada. Si un administrador ha configurado hooks a través de configuración de política administrada, `disableAllHooks` establecido en configuración de usuario, proyecto o local no puede deshabilitar esos hooks administrados. Solo `disableAllHooks` establecido en el nivel de configuración administrada puede deshabilitar hooks administrados.770La configuración `disableAllHooks` respeta la jerarquía de configuración administrada. Si un administrador ha configurado hooks a través de la configuración de política administrada, `disableAllHooks` establecido en la configuración de usuario, proyecto o local no puede deshabilitar esos hooks administrados. Solo `disableAllHooks` establecido en el nivel de configuración administrada puede deshabilitar hooks administrados. Para el alcance completo de cada nivel, consulta [`disableAllHooks`](/docs/es/settings-reference#disableallhooks).

631 771 

632Las ediciones directas de hooks en archivos de configuración normalmente se capturan automáticamente por el observador de archivos.772Las ediciones directas a hooks en archivos de configuración normalmente se recogen automáticamente por el observador de archivos.

633 773 

634<h2 id="hook-input-and-output">774<h2 id="hook-input-and-output">

635 Entrada y salida de hooks775 Entrada y salida de hooks


637 777 

638Los hooks de comando reciben datos JSON a través de stdin y comunican resultados a través de códigos de salida, stdout y stderr. Los hooks HTTP reciben el mismo JSON que el cuerpo de la solicitud POST y comunican resultados a través del cuerpo de la respuesta HTTP. Esta sección cubre campos y comportamiento comunes a todos los eventos. Cada sección de evento bajo [Hook events](#hook-events) incluye su esquema de entrada específico y opciones de control de decisión.778Los hooks de comando reciben datos JSON a través de stdin y comunican resultados a través de códigos de salida, stdout y stderr. Los hooks HTTP reciben el mismo JSON que el cuerpo de la solicitud POST y comunican resultados a través del cuerpo de la respuesta HTTP. Esta sección cubre campos y comportamiento comunes a todos los eventos. Cada sección de evento bajo [Hook events](#hook-events) incluye su esquema de entrada específico y opciones de control de decisión.

639 779 

640En macOS y Linux, los hooks de comando se ejecutan en su propia sesión sin una terminal de control a partir de v2.1.139. El proceso de hook y cualquier proceso secundario no pueden abrir `/dev/tty` o enviar secuencias de escape directamente a la interfaz de Claude Code. Windows no tiene `/dev/tty`. Para mostrar un mensaje al usuario en cualquier plataforma, devuelva [`systemMessage`](#json-output) en la salida JSON. Para activar una notificación de escritorio, establecer un título de ventana o sonar la campana, devuelva [`terminalSequence`](#emit-terminal-notifications) en su lugar.780En macOS y Linux, los hooks de comando se ejecutan en su propia sesión sin una terminal de control. El proceso de hook y cualquier proceso secundario no pueden abrir `/dev/tty` o enviar secuencias de escape directamente a la interfaz de Claude Code. Windows no tiene `/dev/tty`.

781 

782Para mostrar un mensaje al usuario en cualquier plataforma, devuelva [`systemMessage`](#json-output) en la salida JSON. Algunos eventos lo descartan o lo entregan en otro lugar, y cada [sección de evento](#hook-events) lo indica. Para activar una notificación de escritorio, establecer un título de ventana o sonar la campana, devuelva [`terminalSequence`](#emit-terminal-notifications) en su lugar.

641 783 

642<h3 id="common-input-fields">784<h3 id="common-input-fields">

643 Campos de entrada comunes785 Campos de entrada comunes


646Los eventos de hook reciben estos campos como JSON, además de campos específicos del evento documentados en cada sección [hook event](#hook-events). Para hooks de comando, este JSON llega a través de stdin. Para hooks HTTP, llega como el cuerpo de la solicitud POST.788Los eventos de hook reciben estos campos como JSON, además de campos específicos del evento documentados en cada sección [hook event](#hook-events). Para hooks de comando, este JSON llega a través de stdin. Para hooks HTTP, llega como el cuerpo de la solicitud POST.

647 789 

648| Campo | Descripción |790| Campo | Descripción |

649| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |791| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

650| `session_id` | Identificador de sesión actual |792| `session_id` | Identificador de sesión actual |

651| `prompt_id` | UUID que identifica el prompt del usuario que se está procesando actualmente. Coincide con el [atributo `prompt.id` en eventos de OpenTelemetry](/docs/es/monitoring-usage#event-correlation-attributes), para que pueda correlacionar la salida del hook con la telemetría de un único prompt. Ausente hasta la primera entrada del usuario. Requiere Claude Code v2.1.196 o posterior |793| `prompt_id` | UUID que identifica el prompt del usuario que se está procesando actualmente. Coincide con el [atributo `prompt.id` en eventos de OpenTelemetry](/docs/es/monitoring-usage#event-correlation-attributes), para que pueda correlacionar la salida del hook con la telemetría de un único prompt. Ausente hasta la primera entrada del usuario. Requiere Claude Code v2.1.196 o posterior |

652| `transcript_path` | Ruta al JSON de conversación. El archivo de transcripción se escribe de forma asincrónica y puede rezagarse con respecto a la conversación en memoria, por lo que es posible que aún no incluya los mensajes más recientes del turno actual cuando se activa un hook. Los hooks que necesitan el texto del asistente final del turno actual deben usar `last_assistant_message` en [Stop](#stop) y [SubagentStop](#subagentstop) en lugar de leer la transcripción |794| `transcript_path` | Ruta al JSON de conversación. El archivo de transcripción se escribe de forma asincrónica y puede rezagarse con respecto a la conversación en memoria, por lo que es posible que aún no incluya los mensajes más recientes del turno actual cuando se activa un hook. Los hooks que necesitan el texto del asistente final del turno actual deben usar `last_assistant_message` en [Stop](#stop) y [SubagentStop](#subagentstop) en lugar de leer la transcripción |

653| `cwd` | Directorio de trabajo actual cuando se invoca el hook |795| `cwd` | Directorio de trabajo actual cuando se invoca el hook |

796| `scratchpad_dir` | Ruta al directorio de scratchpad de la sesión, donde Claude mantiene archivos de trabajo temporales. Ausente cuando la sesión no tiene scratchpad o el directorio temporal no está disponible. Requiere Claude Code v2.1.257 o posterior |

654| `permission_mode` | [Modo de permiso](/docs/es/permissions#permission-modes) actual: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. El modo etiquetado como **Manual** llega como `"default"`, nunca como `"manual"`, por lo que los scripts que coinciden con `"default"` siguen funcionando. No todos los eventos reciben este campo. Consulte el ejemplo JSON en cada sección [hook event](#hook-events) |797| `permission_mode` | [Modo de permiso](/docs/es/permissions#permission-modes) actual: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. El modo etiquetado como **Manual** llega como `"default"`, nunca como `"manual"`, por lo que los scripts que coinciden con `"default"` siguen funcionando. No todos los eventos reciben este campo. Consulte el ejemplo JSON en cada sección [hook event](#hook-events) |

655| `effort` | Objeto con un campo `level` que contiene el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) activo para el turno: `"low"`, `"medium"`, `"high"`, `"xhigh"` o `"max"`. Si el esfuerzo solicitado del modelo excede lo que el modelo actual admite, este es el nivel degradado que el modelo realmente utilizó. Ultracode no es un nivel distinto y se reporta como `"xhigh"`. El objeto coincide con el campo `effort` de la [línea de estado](/docs/es/statusline#available-data). Presente para eventos que se activan dentro de un contexto de uso de herramienta, como `PreToolUse`, `PostToolUse`, `Stop` y `SubagentStop`, cuando el modelo actual admite el parámetro de esfuerzo. El nivel también está disponible para comandos de hook y la herramienta Bash como la variable de entorno `$CLAUDE_EFFORT`. |798| `effort` | Objeto con un campo `level` que contiene el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) en vigor cuando se ejecuta el hook: `"low"`, `"medium"`, `"high"`, `"xhigh"` o `"max"`. Si establece un nivel que el modelo activo no admite, `level` reporta el nivel que Claude Code ejecutó en su lugar; [Adjust effort level](/docs/es/model-config#adjust-effort-level) dice cómo lo elige. Ultracode no es un nivel distinto y se reporta como `"xhigh"`. El objeto coincide con el campo `effort` de la [línea de estado](/docs/es/statusline#available-data). Presente para eventos que se activan dentro de un contexto de uso de herramienta, como `PreToolUse`, `PostToolUse`, `Stop` y `SubagentStop`, cuando el modelo actual admite el parámetro de esfuerzo. El nivel también está disponible para comandos de hook y la herramienta Bash como la variable de entorno `$CLAUDE_EFFORT`. |

656| `hook_event_name` | Nombre del evento que se activó |799| `hook_event_name` | Nombre del evento que se activó |

657 800 

658Cuando se ejecuta con `--agent` o dentro de un subagente, se incluyen dos campos adicionales:801Cuando se ejecuta con `--agent` o dentro de un subagente, se incluyen dos campos adicionales:

659 802 

660| Campo | Descripción |803| Campo | Descripción |

661| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |804| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

662| `agent_id` | Identificador único para el subagente. Presente solo cuando el hook se activa dentro de una llamada de subagente. Use esto para distinguir llamadas de hook de subagente de llamadas de hilo principal. |805| `agent_id` | Identificador único para el subagente. Presente solo cuando el hook se activa dentro de una llamada de subagente. Use esto para distinguir llamadas de hook de subagente de llamadas de hilo principal. |

663| `agent_type` | Nombre del agente (por ejemplo, `"Explore"` o `"security-reviewer"`). Presente cuando la sesión usa `--agent` o el hook se activa dentro de un subagente. Para subagentes, el tipo del subagente tiene precedencia sobre el valor `--agent` de la sesión. Para [subagentes personalizados](/docs/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo. Para subagentes enviados por un [plugin](/docs/es/plugins), este es el identificador con alcance de plugin como `my-plugin:reviewer`, no el nombre de frontmatter desnudo. Consulte [SubagentStart](#subagentstart) para saber cómo escribir un matcher contra un nombre con alcance de plugin. |806| `agent_type` | Nombre del agente (por ejemplo, `"Explore"` o `"security-reviewer"`). Presente cuando la sesión usa `--agent` o el hook se activa dentro de un subagente. Para subagentes, el tipo del subagente tiene precedencia sobre el valor `--agent` de la sesión. Consulte [SubagentStart](#subagentstart) para los valores que los subagentes personalizados y de plugin reportan y cómo escribir un matcher contra un nombre con alcance de plugin. |

807 

808Solo los hooks [`SessionStart`](#sessionstart) pueden recibir un campo `model`, y Claude Code no siempre lo incluye. Los hooks [`PreModelSwitch`](#premodelswitch) y [`PostModelSwitch`](#postmodelswitch) reciben `from_model` y `to_model` en su lugar, así que use un hook PostModelSwitch para seguir el modelo mientras cambia durante una sesión.

809 

810No hay variable de entorno `$CLAUDE_MODEL`. El hook puede leer `$ANTHROPIC_MODEL` si lo establece en su shell, pero ese valor no cambia cuando cambia de modelos con `/model` durante una sesión.

664 811 

665Solo los hooks [`SessionStart`](#sessionstart) pueden recibir un campo `model`, y no se garantiza que esté presente. No hay variable de entorno `$CLAUDE_MODEL`. Un proceso de hook hereda el entorno principal, por lo que puede leer `$ANTHROPIC_MODEL` si lo establece en su shell, pero ese valor no cambia cuando cambia de modelos con `/model` durante una sesión. Un conjunto de variables no se hereda: Claude Code [elimina variables exportadoras `OTEL_*` de cada subproceso que genera](/docs/es/monitoring-usage#administrator-configuration), incluyendo hooks.812Un proceso de hook hereda el entorno principal, aparte de las variables exportadoras `OTEL_*` que Claude Code [elimina de cada subproceso que genera](/docs/es/monitoring-usage#administrator-configuration) y, cuando [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars#variables) se establece en `1`, las variables que elimina.

666 813 

667Por ejemplo, un hook `PreToolUse` para un comando Bash recibe esto en stdin:814Por ejemplo, un hook `PreToolUse` para un comando Bash recibe esto en stdin:

668 815 


672 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",819 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",

673 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",820 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

674 "cwd": "/home/user/my-project",821 "cwd": "/home/user/my-project",

822 "scratchpad_dir": "/tmp/claude-1000/-home-user-my-project/abc123/scratchpad",

675 "permission_mode": "default",823 "permission_mode": "default",

676 "hook_event_name": "PreToolUse",824 "hook_event_name": "PreToolUse",

677 "tool_name": "Bash",825 "tool_name": "Bash",

678 "tool_input": {826 "tool_input": {

679 "command": "npm test"827 "command": "npm test",

680 }828 "description": "Run test suite",

829 "timeout": 120000,

830 "run_in_background": false

831 },

832 "tool_use_id": "toolu_01ABC123..."

681}833}

682```834```

683 835 

684Los campos `tool_name` y `tool_input` son específicos del evento. Cada sección [hook event](#hook-events) documenta los campos adicionales para ese evento.836Los campos `tool_name`, `tool_input` y `tool_use_id` son específicos del evento. Cada sección [hook event](#hook-events) documenta los campos adicionales para ese evento.

685 837 

686<h3 id="exit-code-output">838<h3 id="exit-code-output">

687 Salida de código de salida839 Salida de código de salida

688</h3>840</h3>

689 841 

690El código de salida de su comando de hook le dice a Claude Code si la acción debe proceder, ser bloqueada o ser ignorada.842El código de salida de su comando de hook le dice a Claude Code si la acción debe proceder, ser bloqueada o ser ignorada. El código de salida no actúa solo. Claude Code lee campos [JSON output](#json-output) desde stdout en cada código de salida, no solo en 0, y para eventos que usan el modelo de decisión estándar, un objeto analizado que pasa la validación del esquema tiene efecto junto con el código. El bloqueo de Exit 2 es el único resultado que JSON no puede anular.

691 843 

692**Exit 0** significa éxito. Claude Code analiza stdout para [campos de salida JSON](#json-output). La salida JSON solo se procesa en exit 0. Para la mayoría de eventos, stdout se escribe en el registro de depuración pero no se muestra en la transcripción. Las excepciones son `UserPromptSubmit`, `UserPromptExpansion` y `SessionStart`, donde stdout se agrega como contexto que Claude puede ver y actuar.844Dos tablas poseen las excepciones por evento: [Exit code 2 behavior per event](#exit-code-2-behavior-per-event) dice qué hacen los códigos de salida para cada evento, y [Decision control](#decision-control) dice qué campos de decisión honra cada evento. Los campos universales como `systemMessage` funcionan en la mayoría de eventos y se enumeran en la tabla [JSON output](#json-output).

693 845 

694**Exit 2** significa un error de bloqueo. Claude Code ignora stdout y cualquier JSON en él. En su lugar, el texto de stderr se devuelve a Claude como un mensaje de error. El efecto depende del evento: `PreToolUse` bloquea la llamada a herramienta, `UserPromptSubmit` rechaza el prompt, y así sucesivamente. Consulte [exit code 2 behavior](#exit-code-2-behavior-per-event) para la lista completa.846<h4 id="exit-code-0">

847 Exit code 0

848</h4>

849 

850Exit 0 significa éxito, y es el código de salida previsto cuando imprime JSON para control estructurado.

851 

852Para la mayoría de eventos, Claude Code escribe stdout en el registro de depuración y no lo muestra en la transcripción. Las excepciones son `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` y `PostModelSwitch`, donde Claude Code agrega stdout de texto plano como contexto que Claude puede ver y actuar.

853 

854Si Claude Code lee su stdout como [JSON output](#json-output) o como texto plano depende de cómo comienza y termina, ignorando espacios en blanco circundantes:

695 855 

696**Cualquier otro código de salida** es un error sin bloqueo para la mayoría de eventos de hook. La transcripción muestra un aviso `<hook name> hook error` seguido de la primera línea de stderr, para que pueda identificar la causa sin `--debug`. La ejecución continúa y el stderr completo se escribe en el registro de depuración.856* **Comienza con `{` y termina con `}`**: Claude Code lo analiza como JSON. Cuando la salida son dos o más líneas que cada una se analiza como JSON por su cuenta, y ninguna línea es un objeto [JSON output](#json-output) que establece un campo, Claude Code trata toda la salida como texto plano. Cuando una de esas líneas sí establece un campo, toda la salida es un fallo de análisis, descrito a continuación.

857* **Comienza con `{` pero no termina con `}`**: Claude Code lo trata como texto plano.

858* **Comienza con cualquier otra cosa**: Claude Code lo trata como texto plano, una matriz JSON o una cadena JSON entrecomillada incluida.

697 859 

698Por ejemplo, un script de comando de hook que bloquea comandos Bash peligrosos:860Para eventos que usan el modelo de decisión estándar, exit 0 con un objeto analizado que falla la validación del esquema es un error sin bloqueo: la acción procede, y la transcripción muestra un aviso `<hook name> hook error` con el mensaje de validación. Lo mismo sucede en cualquier código de salida que no sea 2, mientras que [exit 2 aún bloquea](#exit-code-2).

861 

862Para eventos que usan el modelo de decisión estándar, cuando Claude Code intenta analizar su stdout como JSON y no puede, reporta un error sin bloqueo en cada código de salida que no sea 2. La transcripción muestra un aviso `<hook name> hook error` con el mensaje de análisis. En los eventos que agregan stdout de texto plano como contexto, Claude Code no agrega el texto. Antes de v2.1.248, Claude Code trataba ese stdout como texto plano.

863 

864Stderr de un hook que sale 0 va solo al registro de depuración, nunca a la transcripción, y Claude nunca lo ve. Para leerlo usted mismo, habilite [debug logging](#debug-hooks). Para mostrar una advertencia a Claude desde un hook `PostToolUse` o `PostToolUseFailure`, salga 2 en su lugar para que [Claude vea stderr](#exit-code-2-behavior-per-event) aunque la herramienta ya se haya ejecutado.

865 

866<h4 id="exit-code-2">

867 Exit code 2

868</h4>

869 

870Exit 2 significa un error de bloqueo. En [eventos que pueden bloquear](#exit-code-2-behavior-per-event), exit 2 bloquea independientemente de si imprime JSON: incluso un `permissionDecision` JSON de `"allow"` no puede anularlo. Claude Code aún lee cualquier [JSON output](#json-output) válido en stdout. En `Elicitation` y `ElicitationResult`, el `hookSpecificOutput` de un hook exit-2 se ignora.

871 

872El mensaje de bloqueo es la razón de la decisión de bloqueo de su JSON cuando hace una, y su texto stderr en caso contrario. Lo que el bloqueo hace varía según el evento: `PreToolUse` bloquea la llamada a herramienta, `UserPromptSubmit` rechaza el prompt, y así sucesivamente. [Exit code 2 behavior per event](#exit-code-2-behavior-per-event) enumera el efecto para cada evento, y cada sección de evento dice dónde va el mensaje.

873 

874Un hook que sale 2 mientras imprime JSON que falla la validación del esquema [JSON output](#json-output) aún bloquea: Claude Code usa stderr como la razón de bloqueo y registra el fallo de validación en el registro de depuración. Antes de v2.1.214, Claude Code trataba esa combinación como un error sin bloqueo y la acción procedía.

875 

876Este script bloquea comandos `rm` saliendo 2 y deja cada otro comando al flujo de permiso normal:

699 877 

700```bash theme={null}878```bash theme={null}

701#!/bin/bash879#!/bin/bash

702# Lee entrada JSON desde stdin, verifica el comando880# Lee entrada JSON desde stdin, verifica el comando

703command=$(jq -r '.tool_input.command' < /dev/stdin)881input=$(cat)

882command=$(jq -r '.tool_input.command' <<<"$input")

704 883 

705if [[ "$command" == rm* ]]; then884if [[ "$command" == rm* ]]; then

706 echo "Blocked: rm commands are not allowed" >&2885 echo "Blocked: rm commands are not allowed" >&2


710exit 0 # No decision: the normal permission flow applies889exit 0 # No decision: the normal permission flow applies

711```890```

712 891 

892<h4 id="other-exit-codes">

893 Otros códigos de salida

894</h4>

895 

896Cualquier otro código de salida no bloquea por su cuenta para la mayoría de eventos de hook. Lo que sucede depende de su stdout:

897 

898* Con un objeto analizado que pasa la validación del esquema, para eventos que usan el modelo de decisión estándar, Claude Code ignora el código de salida y solo el JSON decide el resultado:

899 * Cada campo que el evento admite se honra, incluyendo `permissionDecision`, `additionalContext`, `updatedInput` y `systemMessage`, y el hook no se reporta como un error.

900 * [Decision control](#decision-control) enumera los campos de decisión por evento; campos universales como `systemMessage` siguen la tabla [JSON output](#json-output).

901* Con un objeto analizado que falla la validación del esquema, para eventos que usan el modelo de decisión estándar, es el mismo error sin bloqueo que [en exit 0](#exit-code-0): la acción procede, y el aviso `<hook name> hook error` lleva el mensaje de validación.

902* Con stdout que Claude Code [intenta analizar como JSON](#exit-code-0) y no puede, Claude Code reporta el mismo error sin bloqueo que en exit 0 para eventos que usan el modelo de decisión estándar. La acción procede, y el aviso lleva el mensaje de análisis.

903* Con stdout que Claude Code [trata como texto plano](#exit-code-0), o con stdout vacío, es un error sin bloqueo para la mayoría de eventos de hook: la acción procede, y la transcripción muestra un aviso `<hook name> hook error` seguido de la primera línea de stderr, prefijado con `Failed with non-blocking status code:`. Para capturar el stderr completo, habilite [debug logging](#debug-hooks).

904 

905Los eventos fuera del modelo de decisión estándar mantienen sus propias filas en la [tabla por evento](#exit-code-2-behavior-per-event): `WorktreeCreate` falla la creación en cualquier salida distinta de cero sin importar lo que diga su JSON, y eventos que descartan la salida del hook completamente, como `StopFailure`, ignoran su JSON en cada código de salida, aparte de campos de efecto secundario como `terminalSequence`, que aún se activan.

906 

907Un hook que no puede iniciarse cae en el mismo cubo sin bloqueo. Cuando la ruta del script no existe o no es ejecutable, el shell sale con un código como 127 y ve el mismo aviso con el mensaje del intérprete, por ejemplo `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Para la mayoría de eventos de hook, la acción procede. Cuando configura un hook de política, observe este aviso en su primera ejecución: una ruta mal escrita en `settings.json` deja la puerta silenciosamente deshabilitada.

908 

713<Warning>909<Warning>

714 Para la mayoría de eventos de hook, solo el código de salida 2 bloquea la acción. Claude Code trata el código de salida 1 como un error sin bloqueo y procede con la acción, aunque 1 es el código de fallo convencional de Unix. Si su hook está destinado a aplicar una política, use `exit 2`. La excepción es `WorktreeCreate`, donde cualquier código de salida distinto de cero aborta la creación de worktree.910 Para la mayoría de eventos de hook, el código de salida 2 es el único código de salida que bloquea solo a través del código. Sin JSON válido en stdout, Claude Code trata el código de salida 1 como un error sin bloqueo y procede con la acción, aunque 1 es el código de fallo convencional de Unix. Si su hook está destinado a aplicar una política, use `exit 2`. Los eventos de worktree difieren: cualquier código de salida distinto de cero de `WorktreeCreate` aborta la creación de worktree, y cualquier código de salida distinto de cero de `WorktreeRemove` hace que la eliminación de worktree falle si el directorio aún existe después.

715</Warning>911</Warning>

716 912 

913<h4 id="timeouts">

914 Tiempos de espera

915</h4>

916 

917Aparte de un hook de comando que ejecuta con [`async: true`](#run-hooks-in-the-background), Claude Code cancela un hook `command`, `http` o `mcp_tool` que alcanza su [`timeout`](#common-fields), descartando la salida del hook, por lo que en la mayoría de eventos un hook agotado no renderiza decisión.

918 

919En [`PreModelSwitch`](#premodelswitch), un hook cancelado en su timeout bloquea el cambio de modelo. En `PreToolUse`, las dos familias de hooks difieren:

920 

921* Un hook `command`, `http` o `mcp_tool` agotado no bloquea la llamada a herramienta. La llamada continúa a través del [flujo de permiso](/docs/es/permissions) normal, así que no cuente con un hook estancado para actuar como puerta.

922* Un hook de callback [Agent SDK](/docs/es/agent-sdk/hooks) que excede su timeout [bloquea la llamada a herramienta](#pretooluse).

923 

717<h4 id="exit-code-2-behavior-per-event">924<h4 id="exit-code-2-behavior-per-event">

718 Comportamiento del código de salida 2 por evento925 Comportamiento del código de salida 2 por evento

719</h4>926</h4>

720 927 

721El código de salida 2 es la forma en que un hook señala "detente, no hagas esto". El efecto depende del evento, porque algunos eventos representan acciones que pueden bloquearse (como una llamada a herramienta que aún no ha sucedido) y otros representan cosas que ya sucedieron o no pueden prevenirse.928Exit code 2 es la forma en que un hook señala "detente, no hagas esto". El efecto depende del evento, porque algunos eventos representan acciones que pueden bloquearse (como una llamada a herramienta que aún no ha sucedido) y otros representan cosas que ya sucedieron o no pueden prevenirse.

722 929 

723| Evento de hook | ¿Puede bloquear? | Qué sucede en exit 2 |930| Evento de hook | ¿Puede bloquear? | Qué sucede en exit 2 |

724| :-------------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |931| :-------------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

725| `PreToolUse` | Sí | Bloquea la llamada a herramienta |932| `PreToolUse` | Sí | Bloquea la llamada a herramienta |

726| `PermissionRequest` | Sí | Deniega el permiso |933| `PermissionRequest` | No | El código de salida 2 no se honra para este evento y el flujo de permiso procede sin cambios. Deniegue a través del objeto [`decision`](#permissionrequest-decision-control) en su lugar |

727| `UserPromptSubmit` | Sí | Bloquea el procesamiento del prompt y borra el prompt |934| `UserPromptSubmit` | Sí | Bloquea el procesamiento del prompt y borra el prompt |

728| `UserPromptExpansion` | Sí | Bloquea la expansión |935| `UserPromptExpansion` | Sí | Bloquea la expansión |

729| `Stop` | Sí | Evita que Claude se detenga, continúa la conversación |936| `Stop` | Sí | Evita que Claude se detenga, continúa la conversación |


732| `TaskCreated` | Sí | Revierte la creación de la tarea |939| `TaskCreated` | Sí | Revierte la creación de la tarea |

733| `TaskCompleted` | Sí | Evita que la tarea se marque como completada |940| `TaskCompleted` | Sí | Evita que la tarea se marque como completada |

734| `ConfigChange` | Sí | Bloquea que el cambio de configuración tenga efecto (excepto `policy_settings`) |941| `ConfigChange` | Sí | Bloquea que el cambio de configuración tenga efecto (excepto `policy_settings`) |

735| `StopFailure` | No | La salida y el código de salida se ignoran |942| `StopFailure` | No | La salida y el código de salida se ignoran, excepto `terminalSequence` |

736| `PostToolUse` | No | Muestra stderr a Claude; la herramienta ya se ejecutó |943| `PostToolUse` | No | Muestra stderr a Claude; la herramienta ya se ejecutó |

737| `PostToolUseFailure` | No | Muestra stderr a Claude; la herramienta ya falló |944| `PostToolUseFailure` | No | Muestra stderr a Claude; la herramienta ya falló |

738| `PostToolBatch` | Sí | Detiene el bucle agentico antes de la siguiente llamada al modelo |945| `PostToolBatch` | Sí | Detiene el bucle agentico antes de la siguiente llamada al modelo |

739| `PermissionDenied` | No | El código de salida y stderr se ignoran porque la denegación ya ocurrió. Use JSON `hookSpecificOutput.retry: true` para decirle al modelo que puede reintentar |946| `PermissionDenied` | No | El código de salida y stderr se ignoran porque la denegación ya ocurrió. Use JSON `hookSpecificOutput.retry: true` para decirle al modelo que puede reintentar; Claude Code ignora `retry: true` para [denegaciones sin veredicto](#permissiondenied-decision-control) |

740| `Notification` | No | Muestra stderr solo al usuario |947| `Notification` | No | El código de salida y stderr se ignoran |

741| `SubagentStart` | No | Muestra stderr solo al usuario |948| `SubagentStart` | No | Muestra stderr solo al usuario |

742| `SessionStart` | No | Muestra stderr solo al usuario |949| `SessionStart` | No | Muestra stderr solo al usuario |

743| `Setup` | No | Muestra stderr solo al usuario |950| `Setup` | No | El código de salida y stderr se ignoran |

744| `SessionEnd` | No | Muestra stderr solo al usuario |951| `SessionEnd` | No | Muestra stderr solo al usuario |

745| `CwdChanged` | No | Muestra stderr solo al usuario |952| `CwdChanged` | No | Muestra stderr solo al usuario |

953| `DirectoryAdded` | No | Stderr va al registro de depuración; el directorio ya está agregado |

746| `FileChanged` | No | Muestra stderr solo al usuario |954| `FileChanged` | No | Muestra stderr solo al usuario |

747| `PreCompact` | Sí | Bloquea la compactación |955| `PreCompact` | Sí | Bloquea la compactación |

748| `PostCompact` | No | Muestra stderr solo al usuario |956| `PostCompact` | No | Muestra stderr solo al usuario |

957| `PreModelSwitch` | Sí | Bloquea el cambio de modelo y muestra stderr al usuario |

958| `PostModelSwitch` | No | Muestra stderr solo al usuario; el modelo ya cambió |

749| `Elicitation` | Sí | Deniega la elicitación |959| `Elicitation` | Sí | Deniega la elicitación |

750| `ElicitationResult` | Sí | Bloquea la respuesta (la acción se convierte en decline) |960| `ElicitationResult` | Sí | Bloquea la respuesta (la acción se convierte en decline) |

751| `WorktreeCreate` | Sí | Cualquier código de salida distinto de cero causa que la creación de worktree falle |961| `WorktreeCreate` | Sí | Cualquier código de salida distinto de cero causa que la creación de worktree falle |

752| `WorktreeRemove` | No | Los fallos se registran solo en modo de depuración |962| `WorktreeRemove` | Sí | Cualquier código de salida distinto de cero causa que la eliminación de worktree falle si el directorio aún existe después. Consulte [WorktreeRemove](#worktreeremove) para saber qué sucede con el directorio |

753| `InstructionsLoaded` | No | El código de salida se ignora |963| `InstructionsLoaded` | No | El código de salida se ignora |

754| `MessageDisplay` | No | Se muestra el texto original |964| `MessageDisplay` | No | Se muestra el texto original |

755 965 

756Para `SessionStart`, `Setup` y `SubagentStart`, el stderr del código de salida 2 se renderiza en la transcripción como un aviso `<hook name> hook error`, de la misma manera que un [error sin bloqueo](#exit-code-output). Claude no lo ve, y la sesión o subagente procede. Para `SubagentStart`, el aviso aparece en la propia transcripción del subagente, no en la conversación principal.966Para `SessionStart`, `SubagentStart` y `PostModelSwitch`, Claude Code renderiza el stderr del código de salida 2 en la transcripción como un aviso `<hook name> hook error`, de la misma manera que renderiza un [error sin bloqueo](#exit-code-output). Claude no lo ve, y la sesión o subagente procede. Para `SubagentStart`, el aviso aparece en la propia transcripción del subagente, no en la conversación principal.

757 

758A partir de Claude Code v2.1.199, `SessionStart`, `Setup` y `SubagentStart` muestran stderr del código de salida 2 en la transcripción. Las versiones anteriores lo escribían solo en el registro de depuración.

759 967 

760<h3 id="http-response-handling">968<h3 id="http-response-handling">

761 Manejo de respuesta HTTP969 Manejo de respuesta HTTP

762</h3>970</h3>

763 971 

764Los hooks HTTP usan códigos de estado HTTP y cuerpos de respuesta en lugar de códigos de salida y stdout:972Los hooks HTTP usan códigos de estado HTTP y cuerpos de respuesta en lugar de códigos de salida y stdout. Los resultados a continuación se aplican a la mayoría de eventos; un evento con su propio contrato de fallo en la [tabla por evento](#exit-code-2-behavior-per-event), como `WorktreeCreate`, aplica ese contrato a un hook HTTP fallido también:

765 973 

766* **2xx con un cuerpo vacío**: éxito, equivalente a código de salida 0 sin salida974* **2xx con un cuerpo vacío**: éxito, equivalente a código de salida 0 sin salida

767* **2xx con un cuerpo de texto plano**: éxito, el texto se agrega como contexto975* **2xx con un cuerpo de objeto JSON**: analizado usando el mismo esquema [JSON output](#json-output) que los hooks de comando. Un cuerpo que falla la validación del esquema es un error sin bloqueo

768* **2xx con un cuerpo JSON**: éxito, analizado usando el mismo esquema [JSON output](#json-output) que los hooks de comando976* **2xx con cualquier otro cuerpo, como texto plano**: error sin bloqueo, manejado igual que un estado que no es 2xx. Claude Code no agrega el texto al contexto de Claude

769* **Estado que no es 2xx**: error sin bloqueo, la ejecución continúa977* **Estado que no es 2xx**: error sin bloqueo, la ejecución continúa

770* **Fallo de conexión o tiempo de espera agotado**: error sin bloqueo, la ejecución continúa978* **Fallo de conexión**: error sin bloqueo, la ejecución continúa

979* **Tiempo de espera**: el hook se cancela, como se describe bajo [Timeouts](#timeouts)

771 980 

772A diferencia de los hooks de comando, los hooks HTTP no pueden señalar un error de bloqueo solo a través de códigos de estado. Para bloquear una llamada a herramienta o denegar un permiso, devuelva una respuesta 2xx con un cuerpo JSON que contenga los campos de decisión apropiados.981A diferencia de los hooks de comando, los hooks HTTP no pueden señalar un error de bloqueo solo a través de códigos de estado. Para bloquear una llamada a herramienta o denegar un permiso, devuelva una respuesta 2xx con un cuerpo JSON que contenga los campos de decisión apropiados.

773 982 


775 Salida JSON984 Salida JSON

776</h3>985</h3>

777 986 

778Los códigos de salida le permiten bloquear o permanecer en silencio, pero la salida JSON le da un control más granular. En lugar de salir con código 2 para bloquear, salga 0 e imprima un objeto JSON en stdout. Claude Code lee campos específicos de ese JSON para controlar el comportamiento, incluyendo [decision control](#decision-control) para bloquear, permitir o escalar al usuario.987Los códigos de salida solo le permiten bloquear o permanecer en silencio, pero la salida JSON le da un control más granular. En lugar de salir con código 2 para bloquear, salga 0 e imprima un objeto JSON en stdout. Claude Code lee campos específicos de ese JSON para controlar el comportamiento, incluyendo [decision control](#decision-control) para bloquear, permitir o escalar al usuario.

779 988 

780<Note>989<Note>

781 Debe elegir un enfoque por hook, no ambos: use códigos de salida solos para señalizar, o salga 0 e imprima JSON para control estructurado. Claude Code solo procesa JSON en exit 0. Si sale 2, cualquier JSON se ignora.990 Elija un enfoque por hook: use códigos de salida solos para señalizar, o salga 0 e imprima JSON para control estructurado. Si los mezcla, exit 2 mantiene su [efecto de bloqueo](#exit-code-2-behavior-per-event), y Claude Code aún lee los campos JSON, con la excepción de elicitación única anotada bajo [Exit code 2](#exit-code-2).

782</Note>991</Note>

783 992 

784El stdout de su hook debe contener solo el objeto JSON. Si su perfil de shell imprime texto al inicio, puede interferir con el análisis JSON. Consulte [JSON validation failed](/docs/es/hooks-guide#json-validation-failed) en la guía de solución de problemas.993El stdout de su hook debe contener solo el objeto JSON. Si su perfil de shell imprime texto al inicio, puede interferir con el análisis JSON. Consulte [Hook JSON has no effect](/docs/es/hooks-guide#hook-json-has-no-effect) en la guía de solución de problemas.

785 994 

786Las cadenas de salida de hook, incluyendo `additionalContext`, `systemMessage` y stdout plano, están limitadas a 10.000 caracteres. La salida que excede este límite se guarda en un archivo y se reemplaza con una vista previa y ruta de archivo, de la misma manera que se manejan los resultados de herramientas grandes.995Las cadenas de salida de hook, incluyendo `additionalContext`, `systemMessage` e `initialUserMessage`, y su stdout plano, están limitadas a 10.000 caracteres:

996 

997* **Alcance**: Claude Code mide cada cadena por su cuenta, incluso cuando varios hooks se ejecutan para el mismo evento. Para salida JSON, cada campo se mide por separado; stdout plano se mide en su totalidad.

998* **Sobre el límite**: Claude Code guarda la salida en un archivo en el directorio de sesión y la reemplaza con la ruta del archivo y una vista previa de hasta los primeros 2.000 caracteres. Un resultado de Bash válido grande se maneja de la misma manera, descrito bajo [Output limits](/docs/es/tools-reference#output-limits). A diferencia de ese techo de Bash, este límite no tiene configuración o variable de entorno para aumentarlo.

999* **Lectura del archivo**: Claude Code no le pide a Claude que lea el archivo, así que mantenga cualquier cosa que Claude siempre deba ver dentro del límite.

787 1000 

788El objeto JSON admite tres tipos de campos:1001El objeto JSON admite tres tipos de campos:

789 1002 

790* **Campos universales** como `continue` funcionan en todos los eventos. Estos se enumeran en la tabla a continuación.1003* **Campos universales** como `continue` se enumeran en la tabla a continuación. Cada evento los acepta, pero algunos eventos los descartan o entregan `systemMessage` en otro lugar que no sea la transcripción. Cada sección de evento lo indica. `terminalSequence` funciona en esos eventos también, con las excepciones enumeradas bajo [Emit terminal notifications](#emit-terminal-notifications).

791* **`decision` y `reason` de nivel superior** son utilizados por algunos eventos para bloquear o proporcionar retroalimentación.1004* **`decision` y `reason` de nivel superior** son utilizados por algunos eventos para bloquear o proporcionar retroalimentación.

792* **`hookSpecificOutput`** es un objeto anidado para eventos que necesitan control más rico. Requiere un campo `hookEventName` establecido en el nombre del evento.1005* **`hookSpecificOutput`** es un objeto anidado para eventos que necesitan control más rico. Requiere un campo `hookEventName` establecido en el nombre del evento.

793 1006 

794| Campo | Predeterminado | Descripción |1007| Campo | Predeterminado | Descripción |

795| :----------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1008| :----------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

796| `continue` | `true` | Si es `false`, Claude detiene el procesamiento completamente después de que se ejecuta el hook. Tiene precedencia sobre cualquier campo de decisión específico del evento |1009| `continue` | `true` | Si es `false`, Claude detiene el procesamiento completamente después de que se ejecuta el hook. Tiene precedencia sobre cualquier campo de decisión específico del evento |

797| `stopReason` | ninguno | Mensaje mostrado al usuario cuando `continue` es `false`. No se muestra a Claude |1010| `stopReason` | ninguno | Mensaje mostrado al usuario cuando `continue` es `false`. Se queda en la conversación, por lo que Claude lo ve si la conversación continúa |

798| `suppressOutput` | `false` | Si es `true`, oculta stdout del hook de la transcripción. Stdout aún aparece en el registro de depuración |1011| `suppressOutput` | `false` | No tiene efecto: Claude Code acepta el campo pero no actúa sobre él. El stdout de un hook exitoso nunca se muestra en la transcripción y se registra en el registro de depuración |

799| `systemMessage` | ninguno | Mensaje de advertencia mostrado al usuario |1012| `systemMessage` | ninguno | Mensaje de advertencia mostrado al usuario. En [Agent SDK](/docs/es/agent-sdk/overview) y salida [`--output-format stream-json`](/docs/es/headless), puede llegar como un [`SDKInformationalMessage`](/docs/es/agent-sdk/typescript#sdkinformationalmessage) |

800| `terminalSequence` | ninguno | Una secuencia de escape de terminal para que Claude Code emita en su nombre, como una notificación de escritorio, título de ventana o campana. Restringido a OSC `0`/`1`/`2`/`9`/`99`/`777` y BEL. Si el valor contiene algo fuera de la lista de permitidos, el campo se ignora. Use esto en lugar de escribir en `/dev/tty`, que no está disponible para hooks |1013| `terminalSequence` | ninguno | Una secuencia de escape de terminal para que Claude Code emita en su nombre, como una notificación de escritorio, título de ventana o campana. Restringido a OSC `0`/`1`/`2`/`9`/`99`/`777` y BEL. Si el valor contiene algo fuera de la lista de permitidos, el campo se ignora. Use esto en lugar de escribir en `/dev/tty`, que no está disponible para hooks |

801 1014 

802Para detener Claude completamente independientemente del tipo de evento:1015Para detener Claude completamente:

803 1016 

804```json theme={null}1017```json theme={null}

805{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }1018{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

806```1019```

807 1020 

1021Para hooks `PreToolUse` y `PostToolUse`, la parada se aplica incluso cuando la llamada a herramienta falla o se completa mientras Claude aún está transmitiendo una respuesta.

1022 

808<h4 id="emit-terminal-notifications">1023<h4 id="emit-terminal-notifications">

809 Emitir notificaciones de terminal1024 Emitir notificaciones de terminal

810</h4>1025</h4>

811 1026 

812El campo `terminalSequence` requiere Claude Code v2.1.141 o posterior.

813 

814Los hooks se ejecutan sin una terminal de control, por lo que escribir secuencias de escape directamente en `/dev/tty` falla. En su lugar, devuelva la secuencia de escape en el campo `terminalSequence` y Claude Code la emite por usted a través de su propia ruta de escritura de terminal. Esto es libre de carreras, funciona dentro de tmux y GNU screen, y funciona en Windows donde no hay `/dev/tty`.1027Los hooks se ejecutan sin una terminal de control, por lo que escribir secuencias de escape directamente en `/dev/tty` falla. En su lugar, devuelva la secuencia de escape en el campo `terminalSequence` y Claude Code la emite por usted a través de su propia ruta de escritura de terminal. Esto es libre de carreras, funciona dentro de tmux y GNU screen, y funciona en Windows donde no hay `/dev/tty`.

815 1028 

816El campo acepta una cadena de una o más secuencias de escape permitidas:1029El campo acepta una cadena de una o más secuencias de escape permitidas:


823 1036 

824Las secuencias pueden terminarse con BEL o con ST. Cualquier cosa fuera de la lista de permitidos, incluyendo secuencias de cursor y color CSI, secuencias de paleta OSC, hipervínculos OSC 8, escrituras de portapapeles OSC 52 y OSC 1337, se rechaza y el campo se ignora.1037Las secuencias pueden terminarse con BEL o con ST. Cualquier cosa fuera de la lista de permitidos, incluyendo secuencias de cursor y color CSI, secuencias de paleta OSC, hipervínculos OSC 8, escrituras de portapapeles OSC 52 y OSC 1337, se rechaza y el campo se ignora.

825 1038 

1039Claude Code escribe la secuencia en sí cuando procesa la salida de su hook, por lo que el campo funciona en eventos que descartan `systemMessage` y `continue`, como `Notification` y `StopFailure`. Tiene dos límites:

1040 

1041* Claude Code escribe la secuencia solo en una sesión interactiva, y solo mientras su interfaz está en pantalla. En modo no interactivo con la bandera `-p` y en Agent SDK, ignora el campo.

1042* Un hook de comando `WorktreeCreate` no puede devolver JSON, porque Claude Code lee su stdout como la ruta de worktree. Un hook HTTP `WorktreeCreate` devuelve JSON y puede incluir el campo.

1043 

826El ejemplo a continuación dispara una notificación de escritorio desde un hook `Notification`. La secuencia de escape se construye con escapes octales `printf` para que los bytes de control nunca aparezcan en la línea de comandos del shell, y `jq -n --arg` construye la salida JSON para que las comillas, barras invertidas y saltos de línea en el mensaje de notificación se escapen correctamente:1044El ejemplo a continuación dispara una notificación de escritorio desde un hook `Notification`. La secuencia de escape se construye con escapes octales `printf` para que los bytes de control nunca aparezcan en la línea de comandos del shell, y `jq -n --arg` construye la salida JSON para que las comillas, barras invertidas y saltos de línea en el mensaje de notificación se escapen correctamente:

827 1045 

828```bash theme={null}1046```bash theme={null}

829#!/bin/bash1047#!/bin/bash

830# Hook de notificación: ping al escritorio cuando Claude Code necesita atención.1048# Hook de notificación: ping al escritorio cuando Claude Code necesita atención.

831input=$(cat)1049input=$(cat)

832title="Claude Code'1050title="Claude Code"

833body=$(jq -r '.message // 'Needs your attention"' <<<"$input")1051body=$(jq -r '.message // "Needs your attention"' <<<"$input")

834seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")1052seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

835jq -nc --arg seq "$seq" '{terminalSequence: $seq}'1053jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

836```1054```

837 1055 

838La forma `{ "terminalSequence": "..." }` es la misma desde cualquier shell o lenguaje. En Windows, construya la cadena de escape en PowerShell o un script y emita el mismo objeto JSON.1056La forma `{ "terminalSequence": "..." }` es la misma desde cualquier shell o lenguaje.

839 

840<Note>

841 `terminalSequence` es el reemplazo compatible para hooks que anteriormente escribían secuencias de escape directamente en `/dev/tty`. La lista de permitidos está restringida a secuencias que no pueden mover el cursor o alterar colores, por lo que un hook nunca puede corromper un prompt en pantalla.

842</Note>

843 1057 

844<h4 id="add-context-for-claude">1058<h4 id="add-context-for-claude">

845 Agregar contexto para Claude1059 Agregar contexto para Claude


860 1074 

861Dónde aparece el recordatorio depende del evento:1075Dónde aparece el recordatorio depende del evento:

862 1076 

863* [SessionStart](#sessionstart), [Setup](#setup) y [SubagentStart](#subagentstart): al inicio de la conversación, antes del primer prompt1077* [SessionStart](#sessionstart) y [SubagentStart](#subagentstart): al inicio de la conversación, antes del primer prompt

864* [UserPromptSubmit](#userpromptsubmit) y [UserPromptExpansion](#userpromptexpansion): junto al prompt enviado1078* [UserPromptSubmit](#userpromptsubmit) y [UserPromptExpansion](#userpromptexpansion): junto al prompt enviado

865* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) y [PostToolBatch](#posttoolbatch): junto al resultado de la herramienta1079* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) y [PostToolBatch](#posttoolbatch): junto al resultado de la herramienta

866* [Stop](#stop) y [SubagentStop](#subagentstop): al final del turno. La conversación continúa para que Claude pueda actuar sobre la retroalimentación. Consulte [Stop decision control](#stop-decision-control)1080* [Stop](#stop) y [SubagentStop](#subagentstop): al final del turno. La conversación continúa para que Claude pueda actuar sobre la retroalimentación. Consulte [Stop decision control](#stop-decision-control)

1081* [PostModelSwitch](#postmodelswitch): con la siguiente solicitud después del cambio. Consulte [PostModelSwitch decision control](#postmodelswitch-decision-control) para el tiempo

1082 

1083Cuando varios hooks devuelven `additionalContext` para el mismo evento, Claude recibe todos los valores.

867 1084 

868Cuando varios hooks devuelven `additionalContext` para el mismo evento, Claude recibe todos los valores. Si un valor excede 10.000 caracteres, Claude Code escribe el texto completo en un archivo en el directorio de sesión y pasa a Claude la ruta del archivo con una vista previa corta en su lugar.1085Si un valor excede 10.000 caracteres, Claude Code escribe el texto en un archivo en el directorio de sesión y pasa a Claude la ruta del archivo con una vista previa de hasta los primeros 2.000 caracteres en su lugar. Claude puede leer el archivo, pero Claude Code no se lo pide.

869 1086 

870Use `additionalContext` para información que Claude debe conocer sobre el estado actual de su entorno o la operación que acaba de ejecutarse:1087Use `additionalContext` para información que Claude debe conocer sobre el estado actual de su entorno o la operación que acaba de ejecutarse:

871 1088 


877 1094 

878Escriba el texto como declaraciones factuales en lugar de instrucciones de sistema imperativas. Frases como "El destino de implementación es producción" o "Este repositorio usa `bun test`" se leen como información del proyecto. El texto enmarcado como comandos de sistema fuera de banda puede activar las defensas de inyección de prompts de Claude, lo que hace que Claude le muestre el texto en lugar de tratarlo como contexto.1095Escriba el texto como declaraciones factuales en lugar de instrucciones de sistema imperativas. Frases como "El destino de implementación es producción" o "Este repositorio usa `bun test`" se leen como información del proyecto. El texto enmarcado como comandos de sistema fuera de banda puede activar las defensas de inyección de prompts de Claude, lo que hace que Claude le muestre el texto en lugar de tratarlo como contexto.

879 1096 

880Una vez inyectado, el texto se guarda en la transcripción de sesión. Para eventos a mitad de sesión como `PostToolUse` o `UserPromptSubmit`, reanudar con `--continue` o `--resume` reproduce el texto guardado en lugar de volver a ejecutar el hook para turnos anteriores, por lo que valores como marcas de tiempo o SHAs de commit se vuelven obsoletos al reanudar. Los hooks `SessionStart` se ejecutan nuevamente al reanudar con `source` establecido en `"resume"`, por lo que pueden actualizar su contexto.1097Claude Code guarda el texto inyectado en la transcripción de sesión. Para eventos a mitad de sesión como `PostToolUse` o `UserPromptSubmit`, cuando reanuda con `--continue` o `--resume`, Claude Code reproduce el texto guardado en lugar de volver a ejecutar el hook para turnos anteriores, por lo que valores como marcas de tiempo o SHAs de commit se vuelven obsoletos. Los hooks `SessionStart` se ejecutan nuevamente al reanudar con `source` establecido en `"resume"`, o `"fork"` si agregó `--fork-session`, por lo que pueden actualizar su contexto.

881 1098 

882<h4 id="decision-control">1099<h4 id="decision-control">

883 Control de decisión1100 Control de decisión


886No todos los eventos admiten bloqueo o control de comportamiento a través de JSON. Los eventos que lo hacen cada uno usan un conjunto diferente de campos para expresar esa decisión. Use esta tabla como referencia rápida antes de escribir un hook:1103No todos los eventos admiten bloqueo o control de comportamiento a través de JSON. Los eventos que lo hacen cada uno usan un conjunto diferente de campos para expresar esa decisión. Use esta tabla como referencia rápida antes de escribir un hook:

887 1104 

888| Eventos | Patrón de decisión | Campos clave |1105| Eventos | Patrón de decisión | Campos clave |

889| :---------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1106| :---------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

890| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` de nivel superior | `decision: "block"`, `reason`. Stop y SubagentStop también aceptan `hookSpecificOutput.additionalContext` para [retroalimentación sin error que continúa la conversación](#stop-decision-control) |1107| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` de nivel superior | `decision: "block"`, `reason`. Stop y SubagentStop también aceptan `hookSpecificOutput.additionalContext` para [retroalimentación sin error que continúa la conversación](#stop-decision-control) |

891| TeammateIdle, TaskCreated, TaskCompleted | Código de salida o `continue: false` | El código de salida 2 bloquea la acción con retroalimentación de stderr. JSON `{"continue": false, "stopReason": "..."}` también detiene al compañero completamente, coincidiendo con el comportamiento del hook `Stop` |1108| TeammateIdle, TaskCompleted | Código de salida o `continue: false` | El código de salida 2 bloquea la acción con retroalimentación de stderr. JSON `{"continue": false, "stopReason": "..."}` también detiene al compañero completamente, coincidiendo con el comportamiento del hook `Stop`; [TaskCompleted lo ignora cuando la herramienta `TaskUpdate` activó el evento](#taskcompleted-decision-control) |

1109| TaskCreated | Código de salida o `decision` de nivel superior | El código de salida 2 o `decision: "block"` [cancela la tarea](#taskcreated-decision-control) y devuelve el mensaje a Claude. `continue: false` se ignora |

892| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |1110| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

1111| PreModelSwitch | `hookSpecificOutput` o `decision` de nivel superior | `permissionDecision` (allow/deny/ask), `permissionDecisionReason`. `decision: "block"` también [cancela el cambio](#premodelswitch-decision-control) |

893| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |1112| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

894| PermissionDenied | `hookSpecificOutput` | `retry: true` le dice al modelo que puede reintentar la llamada a herramienta denegada |1113| PermissionDenied | `hookSpecificOutput` | `retry: true` le dice al modelo que puede reintentar la llamada a herramienta denegada; Claude Code ignora `retry: true` para [denegaciones sin veredicto](#permissiondenied-decision-control) |

895| WorktreeCreate | ruta return | El hook de comando imprime la ruta en stdout; el hook HTTP devuelve `hookSpecificOutput.worktreePath`. El fallo del hook o la ruta faltante falla la creación |1114| WorktreeCreate | ruta return | El hook de comando imprime la ruta en stdout; el hook HTTP devuelve `hookSpecificOutput.worktreePath`. El fallo del hook o la ruta faltante falla la creación |

1115| WorktreeRemove | Código de salida | Cualquier código de salida distinto de cero hace que la eliminación falle si el directorio aún existe después. La salida JSON se descarta |

896| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valores de campo de formulario para accept) |1116| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valores de campo de formulario para accept) |

897| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valores de campo de formulario override) |1117| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valores de campo de formulario override) |

898| MessageDisplay | `hookSpecificOutput` | `displayContent` reemplaza el texto mostrado en pantalla. Solo visualización: la transcripción y lo que Claude ve mantienen el original |1118| MessageDisplay | `hookSpecificOutput` | `displayContent` reemplaza el texto mostrado en pantalla. Solo visualización: la transcripción y lo que Claude ve mantienen el original |

899| SessionStart, Setup, SubagentStart | Solo contexto | `hookSpecificOutput.additionalContext` agrega contexto para Claude. SessionStart también acepta [`initialUserMessage`, `watchPaths`, `sessionTitle` y `reloadSkills`](#sessionstart-decision-control). Sin bloqueo o control de decisión |1119| SessionStart, SubagentStart, PostModelSwitch | Solo contexto | `hookSpecificOutput.additionalContext` agrega contexto para Claude. SessionStart también acepta [`initialUserMessage`, `watchPaths`, `sessionTitle` y `reloadSkills`](#sessionstart-decision-control). Sin bloqueo o control de decisión |

900| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Ninguno | Sin control de decisión. Se usa para efectos secundarios como registro o limpieza |1120| Setup, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, DirectoryAdded, FileChanged | Ninguno | Sin control de decisión. Se usa para efectos secundarios como registro o limpieza |

901 1121 

902Algunos eventos también pueden reescribir contenido en lugar de solo permitir o bloquearlo:1122Algunos eventos también pueden reescribir contenido en lugar de solo permitir o bloquearlo:

903 1123 


912 1132 

913<Tabs>1133<Tabs>

914 <Tab title="Decisión de nivel superior">1134 <Tab title="Decisión de nivel superior">

915 Utilizado por `UserPromptSubmit`, `UserPromptExpansion`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `Stop`, `SubagentStop`, `ConfigChange` y `PreCompact`. El único valor es `"block"`. Para permitir que la acción continúe, omita `decision` de su JSON, o salga 0 sin ningún JSON en absoluto:1135 El único valor para `decision` es `"block"`. Para permitir que la acción continúe, omita `decision` de su JSON, o salga 0 sin ningún JSON en absoluto:

916 1136 

917 ```json theme={null}1137 ```json theme={null}

918 {1138 {


958Para ejemplos extendidos incluyendo validación de comandos Bash, filtrado de prompts y scripts de aprobación automática, consulte [What you can automate](/docs/es/hooks-guide#what-you-can-automate) en la guía y la [implementación de referencia del validador de comandos Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).1178Para ejemplos extendidos incluyendo validación de comandos Bash, filtrado de prompts y scripts de aprobación automática, consulte [What you can automate](/docs/es/hooks-guide#what-you-can-automate) en la guía y la [implementación de referencia del validador de comandos Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

959 1179 

960<h2 id="hook-events">1180<h2 id="hook-events">

961 Eventos de hook1181 Eventos de hooks

962</h2>1182</h2>

963 1183 

964Cada evento corresponde a un punto en el ciclo de vida de Claude Code donde los hooks pueden ejecutarse. Las secciones a continuación se ordenan para coincidir con el ciclo de vida: desde la configuración de sesión a través del bucle agentico hasta el final de la sesión. Cada sección describe cuándo se activa el evento, qué matchers admite, la entrada JSON que recibe y cómo controlar el comportamiento a través de la salida.1184Cada evento corresponde a un punto en el ciclo de vida de Claude Code donde los hooks pueden ejecutarse. Las secciones siguientes están ordenadas para coincidir con el ciclo de vida: desde la configuración de la sesión a través del bucle agéntico hasta el final de la sesión. Cada sección describe cuándo se dispara el evento, qué matchers admite, la entrada JSON que recibe y cómo controlar el comportamiento a través de la salida.

965 1185 

966<h3 id="sessionstart">1186<h3 id="sessionstart">

967 SessionStart1187 SessionStart


969 1189 

970Se ejecuta cuando Claude Code inicia una nueva sesión o reanuda una sesión existente. Útil para cargar contexto de desarrollo como problemas existentes o cambios recientes en su base de código, o configurar variables de entorno. Para contexto estático que no requiere un script, use [CLAUDE.md](/docs/es/memory) en su lugar.1190Se ejecuta cuando Claude Code inicia una nueva sesión o reanuda una sesión existente. Útil para cargar contexto de desarrollo como problemas existentes o cambios recientes en su base de código, o configurar variables de entorno. Para contexto estático que no requiere un script, use [CLAUDE.md](/docs/es/memory) en su lugar.

971 1191 

972SessionStart se ejecuta en cada sesión, así que mantenga estos hooks rápidos. Solo se admiten hooks `type: "command"` y `type: "mcp_tool"`.1192SessionStart se ejecuta en cada sesión, así que mantenga estos hooks rápidos. Solo se admiten hooks `type: "command"` y `type: "mcp_tool"`. Consulte [Campos de hook de herramienta MCP](#mcp-tool-hook-fields) para saber cuándo se ejecutan los hooks `mcp_tool`.

973 1193 

974El valor del matcher corresponde a cómo se inició la sesión:1194El valor del matcher corresponde a cómo se inició la sesión:

975 1195 

976| Matcher | Cuándo se activa |1196| Matcher | Cuándo se dispara |

977| :-------- | :----------------------------------- |1197| :-------- | :------------------------------------------------------------------------------------------------------------------------------------- |

978| `startup` | Nueva sesión |1198| `startup` | Nueva sesión |

979| `resume` | `--resume`, `--continue` o `/resume` |1199| `resume` | `--resume`, `--continue`, o `/resume` |

980| `clear` | `/clear` |1200| `clear` | `/clear` |

981| `compact` | Compactación automática o manual |1201| `compact` | Compactación automática o manual |

1202| `fork` | Una nueva sesión bifurcada desde una existente: `--fork-session` con `--resume` o `--continue`, la copia de fondo `/fork`, o `/branch` |

1203 

1204Antes de v2.1.214, las sesiones bifurcadas reportaban la fuente `"resume"`.

1205 

1206Cuando inicia una sesión interactiva, reanuda una conversación al iniciar con `--continue` o `--resume`, o ejecuta `/clear`, los hooks SessionStart se ejecutan en segundo plano. Puede escribir de inmediato, y una conversación que reanudó aparece sin esperar a que se completen los hooks. La primera respuesta de Claude aún espera a que se completen los hooks, por lo que su contexto llega a Claude.

1207 

1208Cuando cambia de conversación con `/resume` dentro de una sesión, el cambio espera a que se completen los hooks. Si ejecuta `/clear` o cambia a otra conversación mientras los hooks de fondo aún se están ejecutando, nada de lo que devuelven se aplica a la sesión.

1209 

1210La misma espera se aplica al iniciar, incluida una sesión reanudada: un prompt que envía mientras los hooks SessionStart aún se están ejecutando no llega a Claude hasta que se completen.

1211 

1212Durante cualquiera de estas esperas, presione `Esc` para recuperar el prompt en la entrada sin enviarlo. Los hooks continúan ejecutándose.

982 1213 

983<h4 id="sessionstart-input">1214<h4 id="sessionstart-input">

984 Entrada de SessionStart1215 Entrada de SessionStart

985</h4>1216</h4>

986 1217 

987Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionStart reciben `source` y opcionalmente `model`, `agent_type` y `session_title`:1218Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionStart reciben `source` y opcionalmente `model`, `agent_type`, y `session_title`:

988 1219 

989| Campo | Descripción |1220| Campo | Descripción |

990| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1221| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

991| `source` | Cómo comenzó la sesión: `"startup"` para nuevas sesiones, `"resume"` para sesiones reanudadas, `"clear"` después de `/clear` o `"compact"` después de compactación |1222| `source` | Cómo se inició la sesión: `"startup"` para nuevas sesiones, `"resume"` para sesiones reanudadas, `"clear"` después de `/clear`, `"compact"` después de compactación, o `"fork"` para una nueva sesión bifurcada desde una existente |

992| `model` | El identificador del modelo activo. Puede omitirse, por ejemplo después de `/clear` o cuando se restaura una sesión a través de recuperación de conversación, así que verifique el campo antes de leerlo |1223| `model` | El identificador del modelo activo. Puede omitirse, por ejemplo después de `/clear` o cuando se restaura una sesión a través de recuperación de conversación, así que verifique el campo antes de leerlo |

993| `agent_type` | El nombre del agente, presente cuando inicia Claude Code con `claude --agent <name>` |1224| `agent_type` | El nombre del agente, presente cuando inicia Claude Code con `claude --agent <name>` |

994| `session_title` | El título de sesión actual si ya está establecido, por ejemplo a través de `--name` o `/rename`. Un hook que emite `sessionTitle` puede verificar `session_title` primero para evitar sobrescribir un título que el usuario estableció explícitamente |1225| `session_title` | El título de sesión actual si ya está establecido, por ejemplo a través de `--name` o `/rename`. Un hook que emite `sessionTitle` puede verificar `session_title` primero para evitar sobrescribir un título que el usuario estableció explícitamente |

995 1226 

1227Cuando `source` es `"resume"` o `"fork"` y la transcripción contiene al menos una respuesta de Claude, los hooks SessionStart también reciben los cuatro campos siguientes. Su hook puede usarlos para reportar qué cuesta reanudar una conversación obsoleta antes de la primera solicitud, por ejemplo en un [`systemMessage`](#json-output). Estos campos requieren Claude Code v2.1.251 o posterior.

1228 

1229| Campo | Descripción |

1230| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1231| `seconds_since_last_response` | Segundos de reloj de pared desde la última respuesta en la transcripción reanudada |

1232| `context_tokens` | Tokens que la primera solicitud de la sesión reanudada reenvía como su prompt |

1233| `prompt_cache_likely_expired` | `true` cuando la última respuesta es más antigua que la [duración de vida del caché de prompt](/docs/es/prompt-caching#cache-lifetime) de la sesión o una compactación posterior reemplazó la conversación en caché |

1234| `estimated_cache_write_usd` | Costo estimado en dólares estadounidenses de escribir `context_tokens` en el caché de prompt en el modelo de la sesión, excluyendo la respuesta |

1235 

1236Este ejemplo muestra la entrada para una sesión reanudada 90 minutos después de su última respuesta:

1237 

996```json theme={null}1238```json theme={null}

997{1239{

998 "session_id": "abc123",1240 "session_id": "abc123",

999 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",1241 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1000 "cwd": "/Users/...",1242 "cwd": "/Users/...",

1001 "hook_event_name": "SessionStart",1243 "hook_event_name": "SessionStart",

1002 "source": "startup",1244 "source": "resume",

1003 "model": "claude-sonnet-5"1245 "model": "claude-opus-5",

1246 "seconds_since_last_response": 5400,

1247 "context_tokens": 182340,

1248 "prompt_cache_likely_expired": true,

1249 "estimated_cache_write_usd": 1.1396

1004}1250}

1005```1251```

1006 1252 


1008 Control de decisión de SessionStart1254 Control de decisión de SessionStart

1009</h4>1255</h4>

1010 1256 

1011Cualquier texto que su script de hook imprima en stdout se agrega como contexto para Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver estos campos específicos del evento:1257Claude Code agrega stdout que [trata como texto plano](#exit-code-0) al contexto de Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver estos campos específicos del evento:

1012 1258 

1013| Campo | Descripción |1259| Campo | Descripción |

1014| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1260| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1015| `additionalContext` | Cadena agregada al contexto de Claude al inicio de la conversación, antes del primer prompt. Consulte [Agregar contexto para Claude](#add-context-for-claude) para saber cómo se entrega el texto y qué poner en él |1261| `additionalContext` | Cadena agregada al contexto de Claude al inicio de la conversación, antes del primer prompt. Consulte [Agregar contexto para Claude](#add-context-for-claude) para saber cómo se entrega el texto y qué poner en él |

1016| `initialUserMessage` | Cadena utilizada como el primer mensaje de usuario de la sesión. Se aplica en [modo no interactivo](/docs/es/headless) con la bandera `-p`, donde se convierte en el primer turno incluso si no se proporciona ningún prompt. Si se proporciona un prompt, sigue como el siguiente turno. A diferencia de `additionalContext`, que se adjunta a un turno existente, esto crea el turno |1262| `initialUserMessage` | Cadena utilizada como el primer mensaje del usuario de la sesión. Se aplica en [modo no interactivo](/docs/es/headless) con la bandera `-p`, donde se convierte en el primer turno incluso si no se proporciona ningún prompt. Si se proporciona un prompt, sigue como el siguiente turno. A diferencia de `additionalContext`, que se adjunta a un turno existente, esto crea el turno |

1017| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Use para nombrar sesiones automáticamente desde la carpeta de lanzamiento, rama de git o nombre de worktree. Se aplica solo cuando `source` es `"startup"` o `"resume"`; se ignora en `"clear"` y `"compact"` |1263| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Úselo para nombrar sesiones automáticamente desde la carpeta de inicio, rama de git o nombre de worktree. Se aplica cuando `source` es `"startup"`, `"resume"`, o `"fork"`; se ignora en `"clear"` y `"compact"` |

1018| `watchPaths` | Array de rutas absolutas para monitorear eventos [FileChanged](#filechanged) durante esta sesión |1264| `watchPaths` | Matriz de rutas absolutas para observar eventos [FileChanged](#filechanged) durante esta sesión |

1019| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a escanear los directorios [skill](/docs/es/skills) y de comandos después de que se completen los hooks SessionStart, por lo que las skills que instaló el hook están disponibles en la misma sesión, comenzando con el primer prompt |1265| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a escanear los directorios de [skill](/docs/es/skills) y comando después de que se completen los hooks SessionStart, por lo que las skills que instaló el hook están disponibles en la misma sesión, comenzando con el primer prompt |

1020 1266 

1021```json theme={null}1267```json theme={null}

1022{1268{


1028}1274}

1029```1275```

1030 1276 

1031Dado que el stdout plano ya llega a Claude para este evento, un hook que solo carga contexto puede imprimir en stdout directamente sin construir JSON. Use el formulario JSON cuando necesite combinar contexto con otros campos como `suppressOutput` o `sessionTitle`.1277Dado que stdout plano ya llega a Claude para este evento, un hook que solo carga contexto puede imprimir a stdout directamente sin construir JSON. Use la forma JSON cuando necesite combinar contexto con otros campos como `sessionTitle`.

1032 1278 

1033Use `reloadSkills` cuando un hook SessionStart instala o actualiza skills. El descubrimiento de skills normalmente se ejecuta antes de que se completen los hooks SessionStart, por lo que los archivos que el hook escribe en `~/.claude/skills/` o `.claude/skills/` de otro modo solo aparecerían en la siguiente sesión. Este ejemplo sincroniza un repositorio de skills compartido y solicita el re-escaneo:1279Use `reloadSkills` cuando un hook SessionStart instala o actualiza skills. El descubrimiento de skills normalmente se ejecuta antes de que se completen los hooks SessionStart, por lo que los archivos que el hook escribe en `~/.claude/skills/` o `.claude/skills/` de otro modo solo aparecerían en la siguiente sesión. Este ejemplo sincroniza un repositorio de skills compartido y solicita el re-escaneo:

1034 1280 


1041echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1287echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1042```1288```

1043 1289 

1290La URL del repositorio es un marcador de posición; reemplácela con su propio repositorio de skills. Con el marcador de posición, el clon falla e imprime un mensaje `fatal:` a stderr. Stderr de un hook SessionStart que sale con 0 es solo informativo, por lo que la solicitud `reloadSkills` aún se aplica.

1291 

1044<h4 id="persist-environment-variables">1292<h4 id="persist-environment-variables">

1045 Persistir variables de entorno1293 Persistir variables de entorno

1046</h4>1294</h4>


1068 1316 

1069ENV_BEFORE=$(export -p | sort)1317ENV_BEFORE=$(export -p | sort)

1070 1318 

1071# Ejecute sus comandos de configuración que modifican el entorno1319# Run your setup commands that modify the environment

1072source ~/.nvm/nvm.sh1320source ~/.nvm/nvm.sh

1073nvm use 201321nvm use 20

1074 1322 


1080exit 01328exit 0

1081```1329```

1082 1330 

1083Cualquier variable escrita en este archivo estará disponible en todos los comandos Bash posteriores que Claude Code ejecute durante la sesión.

1084 

1085<Note>1331<Note>

1086 `CLAUDE_ENV_FILE` está disponible para hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) y [FileChanged](#filechanged). Otros tipos de hooks no tienen acceso a esta variable.1332 `CLAUDE_ENV_FILE` está disponible para hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), y [FileChanged](#filechanged). Otros tipos de hooks no tienen acceso a esta variable.

1087</Note>1333</Note>

1088 1334 

1089<h3 id="setup">1335<h3 id="setup">

1090 Setup1336 Setup

1091</h3>1337</h3>

1092 1338 

1093Se activa solo cuando inicia Claude Code con `--init-only`, o con `--init` o `--maintenance` en [modo no interactivo](/docs/es/headless) con la bandera `-p`. No se activa en el inicio normal. Úselo para instalación de dependencias única o limpieza programada que desencadena explícitamente desde CI o scripts, separado del inicio de sesión normal. Para inicialización por sesión, use [SessionStart](#sessionstart) en su lugar.1339Se dispara solo cuando inicia Claude Code con `--init-only`, o con `--init` o `--maintenance` en [modo no interactivo](/docs/es/headless) con la bandera `-p`. No se dispara al iniciar normalmente. Úselo para instalación de dependencias única o limpieza programada que dispara explícitamente desde CI o scripts, separado del inicio de sesión normal. Para inicialización por sesión, use [SessionStart](#sessionstart) en su lugar.

1094 1340 

1095El valor del matcher corresponde a la bandera CLI que desencadenó el hook:1341El valor del matcher corresponde a la bandera CLI que disparó el hook:

1096 1342 

1097| Matcher | Cuándo se activa |1343| Matcher | Cuándo se dispara |

1098| :------------ | :---------------------------------------- |1344| :------------ | :---------------------------------------- |

1099| `init` | `claude --init-only` o `claude -p --init` |1345| `init` | `claude --init-only` o `claude -p --init` |

1100| `maintenance` | `claude -p --maintenance` |1346| `maintenance` | `claude -p --maintenance` |

1101 1347 

1102`--init-only` ejecuta hooks Setup y hooks SessionStart con el matcher `startup`, luego sale sin iniciar una conversación. `--init` y `--maintenance` activan hooks Setup solo cuando se combinan con `-p`; en una sesión interactiva esas dos banderas actualmente no activan hooks Setup.1348Cuando ejecuta `claude --init-only`, Claude Code ejecuta hooks Setup y hooks `SessionStart` con el matcher `startup`, luego sale sin iniciar una conversación.

1103 1349 

1104Debido a que Setup no se activa en cada lanzamiento, un plugin que necesita una dependencia instalada no puede confiar solo en Setup. El patrón práctico es verificar la dependencia en el primer uso e instalar si falta, por ejemplo un hook o skill que pruebe `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecute `npm install` si está ausente. Consulte el [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) para saber dónde almacenar dependencias instaladas.1350Cuando inicia o continúa una conversación con `-p`, también necesita proporcionar un prompt, como argumento o canalizando en stdin. Puede omitir el prompt cuando un hook `SessionStart` proporciona [`initialUserMessage`](#sessionstart-decision-control) o cuando reanuda una sesión con una [llamada de herramienta diferida](#defer-a-tool-call-for-later).

1351 

1352En caso de éxito, `--init-only` no imprime nada en la terminal. Para confirmar que los hooks se ejecutaron, comience con `claude --debug-file <path> --init-only`, reemplazando `<path>` con una ubicación de archivo de registro, y verifique el registro para las entradas de hook Setup y SessionStart.

1353 

1354Debido a que Setup no se dispara en cada inicio, un plugin que necesita una dependencia instalada no puede confiar solo en Setup. El patrón práctico es verificar la dependencia en el primer uso e instalar si falta, por ejemplo un hook o skill que prueba `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecuta `npm install` si está ausente. Consulte el [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) para saber dónde almacenar las dependencias instaladas. Si distribuye su plugin a través de un marketplace, es posible que no necesite este patrón: Claude Code [instala automáticamente las dependencias del paquete Node.js elegibles](/docs/es/plugins-reference#node-js-package-dependencies) cuando almacena en caché el plugin.

1105 1355 

1106<h4 id="setup-input">1356<h4 id="setup-input">

1107 Entrada de Setup1357 Entrada de Setup


1123 Control de decisión de Setup1373 Control de decisión de Setup

1124</h4>1374</h4>

1125 1375 

1126Los hooks Setup no pueden bloquear. Cualquier código de salida distinto de cero, incluyendo 2, muestra stderr al usuario como un aviso de `<hook name> hook error`, y la ejecución continúa. En [modo no interactivo](/docs/es/headless), la salida del hook aparece solo cuando inicia con `--verbose`.1376Los hooks Setup no pueden bloquear; la ejecución continúa en cualquier código de salida. En cada código de salida, Claude Code descarta los [campos de salida JSON](#json-output) de un hook Setup, como `systemMessage`, `continue`, y `hookSpecificOutput.additionalContext`. Con `-p`, la salida stdout, stderr y código de salida de un hook Setup aparecen en la salida de la ejecución solo como [eventos `hook_response`](/docs/es/headless#read-session-metadata) cuando inicia con `--output-format stream-json --verbose`.

1127 

1128Para pasar información al contexto de Claude, devuelva `additionalContext` en salida JSON; el stdout plano se escribe solo en el registro de depuración. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver estos campos específicos del evento:

1129 

1130| Campo | Descripción |

1131| :------------------ | :---------------------------------------------------------------------------------- |

1132| `additionalContext` | Cadena agregada al contexto de Claude. Los valores de múltiples hooks se concatenan |

1133 

1134```json theme={null}

1135{

1136 "hookSpecificOutput": {

1137 "hookEventName": "Setup",

1138 "additionalContext": "Dependencies installed: node_modules, .venv"

1139 }

1140}

1141```

1142 1377 

1143Los hooks Setup tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en comandos Bash posteriores para la sesión, al igual que en los [hooks SessionStart](#persist-environment-variables). Solo se admiten hooks `type: "command"` y `type: "mcp_tool"`.1378Los hooks Setup tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en comandos Bash posteriores para la sesión, al igual que en [hooks SessionStart](#persist-environment-variables). Solo se ejecutan hooks `type: "command"` en `Setup`. Un hook `type: "mcp_tool"` en `Setup` siempre se omite, como se describe en [Campos de hook de herramienta MCP](#mcp-tool-hook-fields).

1144 1379 

1145<h3 id="instructionsloaded">1380<h3 id="instructionsloaded">

1146 InstructionsLoaded1381 InstructionsLoaded

1147</h3>1382</h3>

1148 1383 

1149Se activa cuando se carga un archivo `CLAUDE.md` o `.claude/rules/*.md` en contexto. Este evento se activa al inicio de la sesión para archivos cargados con entusiasmo y nuevamente más tarde cuando se cargan archivos de forma perezosa, por ejemplo cuando Claude accede a un subdirectorio que contiene un `CLAUDE.md` anidado o cuando reglas condicionales con frontmatter `paths:` coinciden. El hook no admite bloqueo o control de decisión. Se ejecuta de forma asincrónica con fines de observabilidad.1384Se dispara cuando se carga un archivo `CLAUDE.md` o `.claude/rules/*.md` en el contexto. Este evento se dispara al inicio de la sesión para archivos cargados con entusiasmo y nuevamente más tarde cuando se cargan archivos de forma perezosa, por ejemplo cuando Claude accede a un subdirectorio que contiene un `CLAUDE.md` anidado o cuando las reglas condicionales con frontmatter `paths:` coinciden. El hook no admite bloqueo o control de decisión. Se ejecuta de forma asincrónica con fines de observabilidad.

1385 

1386Este evento no se dispara cuando Claude [lee `AGENTS.md` directamente](/docs/es/memory#agents-md) a través de la configuración **Project instructions**. Se dispara cuando un `CLAUDE.md` importa su `AGENTS.md`, con `load_reason` establecido en `include` como para cualquier otro archivo importado, y cuando `CLAUDE.md` es un symlink a él, como una carga normal de `CLAUDE.md`.

1150 1387 

1151El matcher se ejecuta contra `load_reason`. Por ejemplo, use `"matcher": "session_start"` para activarse solo para archivos cargados al inicio de la sesión, o `"matcher": "path_glob_match|nested_traversal"` para activarse solo para cargas perezosas.1388El matcher se ejecuta contra `load_reason`. Por ejemplo, use `"matcher": "session_start"` para dispararse solo para archivos cargados al inicio de la sesión, o `"matcher": "path_glob_match|nested_traversal"` para dispararse solo para cargas perezosas.

1152 1389 

1153<h4 id="instructionsloaded-input">1390<h4 id="instructionsloaded-input">

1154 Entrada de InstructionsLoaded1391 Entrada de InstructionsLoaded


1157Además de los [campos de entrada comunes](#common-input-fields), los hooks InstructionsLoaded reciben estos campos:1394Además de los [campos de entrada comunes](#common-input-fields), los hooks InstructionsLoaded reciben estos campos:

1158 1395 

1159| Campo | Descripción |1396| Campo | Descripción |

1160| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1397| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1161| `file_path` | Ruta absoluta al archivo de instrucciones que se cargó |1398| `file_path` | Ruta absoluta al archivo de instrucciones que se cargó |

1162| `memory_type` | Alcance del archivo: `"User"`, `"Project"`, `"Local"` o `"Managed"` |1399| `memory_type` | Alcance del archivo: `"User"`, `"Project"`, `"Local"`, o `"Managed"` |

1163| `load_reason` | Por qué se cargó el archivo: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` o `"compact"`. El valor `"compact"` se activa cuando los archivos de instrucciones se recargan después de un evento de compactación |1400| `load_reason` | Por qué se cargó el archivo: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, o `"compact"`. El valor `"compact"` se dispara cuando los archivos de instrucciones se recargan después de un evento de compactación |

1164| `globs` | Patrones de glob de ruta del frontmatter `paths:` del archivo, si los hay. Presente solo para cargas `path_glob_match` |1401| `globs` | Patrones de glob de ruta del frontmatter `paths:` del archivo, si los hay. Presente solo para cargas `path_glob_match` |

1165| `trigger_file_path` | Ruta al archivo cuyo acceso desencadenó esta carga, para cargas perezosas |1402| `trigger_file_path` | Ruta al archivo cuyo acceso disparó esta carga, para cargas perezosas |

1166| `parent_file_path` | Ruta al archivo de instrucciones padre que incluyó este, para cargas `include` |1403| `parent_file_path` | Ruta al archivo de instrucciones padre que incluyó este, para cargas `include` |

1167 1404 

1168```json theme={null}1405```json theme={null}


1181 Control de decisión de InstructionsLoaded1418 Control de decisión de InstructionsLoaded

1182</h4>1419</h4>

1183 1420 

1184Los hooks InstructionsLoaded no tienen control de decisión. No pueden bloquear o modificar la carga de instrucciones. Use este evento para registro de auditoría, seguimiento de cumplimiento u observabilidad.1421Los hooks InstructionsLoaded no tienen control de decisión. No pueden bloquear o modificar la carga de instrucciones. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage` y `continue`. Use este evento para auditoría de registros, seguimiento de cumplimiento u observabilidad.

1185 1422 

1186<h3 id="userpromptsubmit">1423<h3 id="userpromptsubmit">

1187 UserPromptSubmit1424 UserPromptSubmit


1189 1426 

1190Se ejecuta cuando el usuario envía un prompt, antes de que Claude lo procese. Esto le permite agregar contexto adicional basado en el prompt/conversación, validar prompts o bloquear ciertos tipos de prompts.1427Se ejecuta cuando el usuario envía un prompt, antes de que Claude lo procese. Esto le permite agregar contexto adicional basado en el prompt/conversación, validar prompts o bloquear ciertos tipos de prompts.

1191 1428 

1192Los hooks `UserPromptSubmit` tienen un tiempo de espera predeterminado de 30 segundos para tipos `command`, `http` y `mcp_tool`, más corto que el predeterminado de 600 segundos para esos tipos en otros eventos. Debido a que este hook se ejecuta antes de cada prompt y bloquea el procesamiento del modelo hasta que se completa, un hook atascado detiene la sesión. Si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.1429Los hooks `UserPromptSubmit` tienen un tiempo de espera predeterminado de 30 segundos para tipos `command`, `http` y `mcp_tool`, más corto que el predeterminado de 600 segundos para esos tipos en la mayoría de otros eventos. Debido a que este hook se ejecuta antes de cada prompt y bloquea el procesamiento del modelo hasta que se completa, un hook atascado detiene la sesión. Si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.

1193 1430 

1194Un hook `UserPromptSubmit` de tipo `command`, `http` o `mcp_tool` que alcanza su tiempo de espera se cancela y su salida, incluyendo cualquier `additionalContext`, se descarta. El prompt aún llega a Claude sin ese contexto. A partir de v2.1.196, la transcripción muestra un aviso que nombra el hook, el tiempo de espera que se activó y que la salida fue descartada. Las versiones anteriores cancelan el hook sin aviso.1431Aparte de un hook de comando que ejecuta con [`async: true`](#run-hooks-in-the-background), un hook de comando, HTTP o herramienta MCP `UserPromptSubmit` que alcanza su tiempo de espera se cancela y su salida, incluido cualquier `additionalContext`, se descarta. El prompt aún llega a Claude sin ese contexto. La transcripción muestra un aviso que nombra el hook, el tiempo de espera que se disparó y que la salida se descartó.

1195 1432 

1196Un hook de callback [Agent SDK](/docs/es/agent-sdk/hooks) en `UserPromptSubmit` que alcanza su tiempo de espera bloquea el prompt con un mensaje que nombra el hook y el tiempo de espera, porque un callback allí puede estar actuando como una puerta de política que no debe fallar abierta. La sesión continúa. Antes de v2.1.208, un tiempo de espera de callback en ese evento terminaba el turno con un error de ejecución.1433Un hook de devolución de llamada [Agent SDK](/docs/es/agent-sdk/hooks) en `UserPromptSubmit` que alcanza su tiempo de espera bloquea el prompt con un mensaje que nombra el hook y el tiempo de espera, porque una devolución de llamada allí puede actuar como una puerta de política que no debe fallar abierta. La sesión continúa. Antes de v2.1.208, un tiempo de espera de devolución de llamada en ese evento terminaba el turno con un error de ejecución.

1197 1434 

1198<h4 id="userpromptsubmit-input">1435<h4 id="userpromptsubmit-input">

1199 Entrada de UserPromptSubmit1436 Entrada de UserPromptSubmit


1220 1457 

1221Hay dos formas de agregar contexto a la conversación en código de salida 0:1458Hay dos formas de agregar contexto a la conversación en código de salida 0:

1222 1459 

1223* **Stdout de texto plano**: cualquier texto que no sea JSON escrito en stdout se agrega como contexto1460* **Stdout de texto plano**: Claude Code agrega stdout que [trata como texto plano](#exit-code-0) al contexto de Claude

1224* **JSON con `additionalContext`**: use el formato JSON a continuación para más control. El campo `additionalContext` se agrega como contexto1461* **JSON con `additionalContext`**: use el formato JSON a continuación para más control. El campo `additionalContext` se agrega como contexto

1225 1462 

1226El stdout plano se muestra como salida de hook en la transcripción. El valor de `additionalContext` se inyecta como un recordatorio del sistema que Claude lee sin una entrada de transcripción visible.1463Ningún canal produce una entrada de transcripción visible. El stdout plano y el valor `additionalContext` se inyectan cada uno como un recordatorio del sistema que comienza con el nombre del hook; Claude lee ambos. Para confirmar la entrega, verifique el [registro de depuración](#debug-hooks).

1227 1464 

1228Para bloquear un prompt, devuelva un objeto JSON con `decision` establecido en `"block"`:1465Para bloquear un prompt, devuelva un objeto JSON con `decision` establecido en `"block"`:

1229 1466 

1230| Campo | Descripción |1467| Campo | Descripción |

1231| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |1468| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |

1232| `decision` | `"block"` evita que el prompt se procese y lo borra del contexto. Omita para permitir que el prompt continúe |1469| `decision` | `"block"` evita que se procese el prompt y lo borra del contexto. Omita para permitir que el prompt continúe |

1233| `reason` | Se muestra al usuario cuando `decision` es `"block"`. No se agrega al contexto |1470| `reason` | Se muestra al usuario cuando `decision` es `"block"`. No se agrega al contexto |

1234| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt enviado. Consulte [Agregar contexto para Claude](#add-context-for-claude) |1471| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt enviado. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

1235| `sessionTitle` | Establece el título de la sesión. Use para nombrar sesiones automáticamente basándose en el contenido del prompt |1472| `sessionTitle` | Establece el título de la sesión. Úselo para nombrar sesiones automáticamente basándose en el contenido del prompt |

1236| `suppressOriginalPrompt` | Si es `true` cuando `decision` es `"block"`, omite el texto del prompt original del mensaje de bloqueo mostrado al usuario |1473| `suppressOriginalPrompt` | Si es `true` cuando `decision` es `"block"`, omite el texto del prompt original del mensaje de bloqueo mostrado al usuario |

1237 1474 

1475Un hook que bloquea saliendo con 2 se enruta de la misma manera que `reason`: el mensaje de bloqueo muestra el texto stderr al usuario y no se agrega al contexto.

1476 

1238```json theme={null}1477```json theme={null}

1239{1478{

1240 "decision": "block",1479 "decision": "block",


1251 UserPromptExpansion1490 UserPromptExpansion

1252</h3>1491</h3>

1253 1492 

1254Se ejecuta cuando un comando de barra diagonal escrito por el usuario se expande en un prompt antes de llegar a Claude. Use esto para bloquear comandos específicos de invocación directa, inyectar contexto para una skill particular o registrar qué comandos invocan los usuarios. Por ejemplo, un hook que coincida con `deploy` puede bloquear `/deploy` a menos que esté presente un archivo de aprobación, o un hook que coincida con una skill de revisión puede agregar la lista de verificación de revisión del equipo como `additionalContext`.1493Se ejecuta cuando un comando escrito por el usuario se expande en un prompt antes de llegar a Claude. Úselo para bloquear comandos específicos de invocación directa, inyectar contexto para una skill particular o registrar qué comandos invocan los usuarios. Por ejemplo, un hook que coincide con `deploy` puede bloquear `/deploy` a menos que esté presente un archivo de aprobación, o un hook que coincide con una skill de revisión puede agregar la lista de verificación de revisión del equipo como `additionalContext`.

1255 1494 

1256Este evento cubre la ruta que `PreToolUse` no cubre: un hook `PreToolUse` que coincida con la herramienta `Skill` se activa solo cuando Claude llama a la herramienta, pero escribir `/skillname` directamente omite `PreToolUse`. `UserPromptExpansion` se activa en esa ruta directa.1495Este evento cubre la ruta que `PreToolUse` no cubre: un hook `PreToolUse` que coincide con la herramienta `Skill` se dispara solo cuando Claude llama a la herramienta, pero escribir `/skillname` directamente omite `PreToolUse`. `UserPromptExpansion` se dispara en esa ruta directa.

1257 1496 

1258Coincide en `command_name`. Deje el matcher vacío para activarse en cada comando de barra diagonal de tipo prompt.1497Coincide en `command_name`. Deje el matcher vacío para dispararse en cada comando de tipo prompt.

1259 1498 

1260<h4 id="userpromptexpansion-input">1499<h4 id="userpromptexpansion-input">

1261 Entrada de UserPromptExpansion1500 Entrada de UserPromptExpansion

1262</h4>1501</h4>

1263 1502 

1264Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptExpansion reciben `expansion_type`, `command_name`, `command_args`, `command_source` y la cadena `prompt` original. El campo `expansion_type` es `slash_command` para skills y comandos personalizados, o `mcp_prompt` para prompts de servidor MCP.1503Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptExpansion reciben `expansion_type`, `command_name`, `command_args`, `command_source` y la cadena `prompt` original. El campo `expansion_type` es `slash_command` para skills y comandos personalizados, o `mcp_prompt` para prompts del servidor MCP.

1265 1504 

1266```json theme={null}1505```json theme={null}

1267{1506{


1286 1525 

1287| Campo | Descripción |1526| Campo | Descripción |

1288| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------ |1527| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------ |

1289| `decision` | `"block"` evita que el comando de barra diagonal se expanda. Omita para permitir que continúe |1528| `decision` | `"block"` evita que el comando se expanda. Omita para permitir que continúe |

1290| `reason` | Se muestra al usuario cuando `decision` es `"block"` |1529| `reason` | Se muestra al usuario cuando `decision` es `"block"` |

1291| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt expandido. Consulte [Agregar contexto para Claude](#add-context-for-claude) |1530| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt expandido. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

1292 1531 

1532Un hook que bloquea saliendo con 2 se enruta de la misma manera que `reason`: el mensaje de bloqueo muestra el texto stderr al usuario.

1533 

1293```json theme={null}1534```json theme={null}

1294{1535{

1295 "decision": "block",1536 "decision": "block",


1310Use MessageDisplay para:1551Use MessageDisplay para:

1311 1552 

1312* eliminar markdown para una visualización mínima1553* eliminar markdown para una visualización mínima

1313* transformar el texto que una aplicación del Agent SDK muestra a sus usuarios1554* transformar el texto que una aplicación Agent SDK muestra a sus usuarios

1314* redactar claves API o nombres de host internos de las respuestas de Claude1555* redactar claves API o nombres de host internos de las respuestas de Claude

1315 1556 

1316Claude Code retiene cada lote hasta que su hook regresa, así que mantenga el hook rápido. Si el hook falla o agota el tiempo de espera, Claude Code muestra el texto original. El tiempo de espera predeterminado para este evento es 10 segundos; si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.1557Claude Code retiene cada lote hasta que su hook devuelve, así que mantenga el hook rápido. Si el hook falla o agota el tiempo de espera, Claude Code muestra el texto original. El tiempo de espera predeterminado para este evento es 10 segundos; si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.

1317 1558 

1318MessageDisplay es solo para visualización: el texto de reemplazo cambia solo lo que se renderiza en pantalla. La transcripción y lo que Claude ve mantienen el texto original, por lo que Claude nunca ve el reemplazo, y el modo detallado muestra el original. El hook recibe solo texto de mensaje del asistente, por lo que los resultados de herramientas y el texto que escribe se renderizarán sin cambios.1559MessageDisplay es solo para visualización: el texto de reemplazo cambia solo lo que se renderiza en pantalla. La transcripción y lo que Claude ve mantienen el texto original, por lo que Claude nunca ve el reemplazo, y el modo detallado muestra el original. El hook recibe solo texto de mensaje del asistente, por lo que los resultados de herramientas y el texto que escribe se renderiza sin cambios.

1319 1560 

1320MessageDisplay no admite matchers y se activa para cada mensaje del asistente que transmite texto; los mensajes sin texto, como respuestas de solo llamada de herramienta, no lo activan.1561MessageDisplay no admite matchers y se dispara para cada mensaje del asistente que transmite texto; los mensajes sin texto, como respuestas de solo llamada de herramienta, no lo disparan.

1321 1562 

1322En ejecuciones no interactivas, incluidas consultas del Agent SDK y `claude -p`, MessageDisplay se ejecuta una vez por mensaje del asistente en lugar de una vez por lote de líneas. La llamada única llega después de que se completa el mensaje y lleva el texto del mensaje completo: `index` es `0`, `final` es `true` y `delta` contiene el mensaje completo. Un hook que recopila el texto `delta` para cada mensaje recibe el mismo texto total en ambos modos.1563En ejecuciones no interactivas, incluidas consultas de Agent SDK y `claude -p`, MessageDisplay se ejecuta una vez por mensaje del asistente en lugar de una vez por lote de líneas. La llamada única llega después de que se completa el mensaje y lleva el texto del mensaje completo: `index` es `0`, `final` es `true`, y `delta` contiene el mensaje completo. Un hook que recopila el texto `delta` para cada mensaje recibe el mismo texto total en ambos modos.

1323 1564 

1324<h4 id="messagedisplay-input">1565<h4 id="messagedisplay-input">

1325 Entrada de MessageDisplay1566 Entrada de MessageDisplay

1326</h4>1567</h4>

1327 1568 

1328Además de los [campos de entrada comunes](#common-input-fields), los hooks MessageDisplay reciben identificadores para el turno y el mensaje, la posición de esta llamada dentro del mensaje y el nuevo texto en `delta`. Los límites de lote dependen de cómo se transmite el texto, así que use `index` y `final` para rastrear el progreso a través de un mensaje en lugar de esperar que las líneas se agrupen de una manera particular.1569Además de los [campos de entrada comunes](#common-input-fields), los hooks MessageDisplay reciben identificadores para el turno y el mensaje, la posición de esta llamada dentro del mensaje y el nuevo texto en `delta`. Los límites de lotes dependen de cómo se transmite el texto, así que use `index` y `final` para rastrear el progreso a través de un mensaje en lugar de esperar que las líneas se agrupen de una manera particular.

1329 1570 

1330| Campo | Descripción |1571| Campo | Descripción |

1331| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1572| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1332| `turn_id` | UUID del turno actual |1573| `turn_id` | UUID del turno actual |

1333| `message_id` | UUID del mensaje del asistente que se está mostrando. Estable en cada lote del mismo mensaje. Este no es el `msg_…` id de API, por lo que no se puede correlacionar con ids de mensaje de transcripción |1574| `message_id` | UUID del mensaje del asistente que se muestra. Estable en cada lote del mismo mensaje. Este no es el ID de API `msg_…`, por lo que no se puede correlacionar con IDs de mensaje de transcripción |

1334| `index` | Índice basado en cero de este lote dentro del mensaje |1575| `index` | Índice basado en cero de este lote dentro del mensaje |

1335| `final` | `true` en el último lote del mensaje. Cada mensaje tiene exactamente un lote final |1576| `final` | `true` en el último lote del mensaje. Cada mensaje tiene exactamente un lote final |

1336| `delta` | Las líneas recién completadas desde el lote anterior, incluyendo saltos de línea finales. Siempre líneas completas, excepto el lote final que puede terminar a mitad de línea. En ejecuciones interactivas, el delta del lote final está vacío cuando el mensaje termina en un salto de línea, así que trate `final`, no un delta no vacío, como la señal de fin de mensaje. En ejecuciones del Agent SDK y `claude -p`, la llamada única lleva el mensaje completo |1577| `delta` | Las líneas recién completadas desde el lote anterior, incluidas las saltos de línea finales. Siempre líneas completas, excepto el lote final que puede terminar a mitad de línea. En ejecuciones interactivas, el delta del lote final está vacío cuando el mensaje termina en un salto de línea, así que trate `final`, no un delta no vacío, como la señal de fin de mensaje. En ejecuciones de Agent SDK y `claude -p`, la llamada única lleva el mensaje completo |

1337 1578 

1338```json theme={null}1579```json theme={null}

1339{1580{


1359| :--------------- | :------------------------------------------------------------------ |1600| :--------------- | :------------------------------------------------------------------ |

1360| `displayContent` | Texto mostrado en lugar del delta. Omítalo para mostrar el original |1601| `displayContent` | Texto mostrado en lugar del delta. Omítalo para mostrar el original |

1361 1602 

1362Los hooks MessageDisplay no tienen control de decisión. No pueden bloquear el mensaje o cambiar lo que se almacena en la transcripción o se envía a Claude.1603Los hooks MessageDisplay no tienen control de decisión. No pueden bloquear el mensaje o cambiar lo que se almacena en la transcripción o se envía a Claude. Claude Code actúa sobre `displayContent` de su salida JSON y descarta `systemMessage` y `continue`.

1363 1604 

1364Este ejemplo elimina el formato markdown de las respuestas de Claude para una visualización de texto plano. El script lee cada lote desde stdin, elimina marcadores de negrita y backticks de código en línea de `delta` y devuelve el resultado como `displayContent`.1605Este ejemplo elimina el formato markdown de las respuestas de Claude para una visualización de texto plano. El script lee cada lote de stdin, elimina marcadores en negrita y comillas invertidas de código en línea de `delta`, y devuelve el resultado como `displayContent`.

1365 1606 

1366<Tabs>1607<Tabs>

1367 <Tab title="macOS/Linux">1608 <Tab title="macOS/Linux">


1391 #!/bin/bash1632 #!/bin/bash

1392 jq '{hookSpecificOutput: {hookEventName: "MessageDisplay", displayContent: (.delta | gsub("\\*\\*"; "") | gsub("`"; ""))}}'1633 jq '{hookSpecificOutput: {hookEventName: "MessageDisplay", displayContent: (.delta | gsub("\\*\\*"; "") | gsub("`"; ""))}}'

1393 ```1634 ```

1394 

1395 El script necesita `jq` en su `PATH`.

1396 </Tab>1635 </Tab>

1397 1636 

1398 <Tab title="Windows (PowerShell)">1637 <Tab title="Windows (PowerShell)">


1439 </Tab>1678 </Tab>

1440</Tabs>1679</Tabs>

1441 1680 

1442Los lotes sin markdown pasan sin cambios. Si el script falla, por ejemplo porque `jq` falta, Claude Code muestra el texto original y nota el fallo solo en [salida de depuración](#debug-hooks), no en la sesión.1681Los lotes sin markdown pasan sin cambios. Si el script falla, por ejemplo porque falta `jq`, Claude Code muestra el texto original y solo nota el fallo en [salida de depuración](#debug-hooks), no en la sesión.

1443 1682 

1444<h3 id="pretooluse">1683<h3 id="pretooluse">

1445 PreToolUse1684 PreToolUse

1446</h3>1685</h3>

1447 1686 

1448Se ejecuta después de que Claude crea parámetros de herramienta y antes de procesar la llamada a herramienta. Coincide en el nombre de la herramienta: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` y cualquier [nombre de herramienta MCP](#match-mcp-tools).1687Se ejecuta después de que Claude crea parámetros de herramienta y antes de procesar la llamada de herramienta. Coincide con cualquier nombre de herramienta excepto `EndConversation`: herramientas integradas como `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, y `ExitPlanMode`, y cualquier [nombre de herramienta MCP](#match-mcp-tools).

1688 

1689Para ejecutar un hook cuando un archivo específico cambia en el disco, sin importar qué lo escribió, use [FileChanged](#filechanged) en lugar de hacer coincidir herramientas de edición de archivos por nombre. A diferencia de PreToolUse, Claude Code ejecuta hooks FileChanged después del cambio y no tienen control de decisión, por lo que no pueden bloquear la escritura.

1449 1690 

1450<Warning>1691<Warning>

1451 PreToolUse se ejecuta solo cuando Claude llama a una herramienta. Los archivos que [referencia con `@` en su prompt](/docs/es/common-workflows#reference-files-and-directories) se agregan sin ninguna llamada a herramienta: Claude Code inserta sus contenidos mientras construye el prompt, por lo que no se activa ningún hook PreToolUse para ellos, incluyendo hooks que coincidan con `Read`. Para bloquear rutas específicas de referencias `@`, use una [regla de denegación `Read`](/docs/es/permissions#read-and-edit) en su lugar.1692 PreToolUse se ejecuta solo cuando Claude llama a una herramienta. Los archivos que [referencia con `@` en su prompt](/docs/es/common-workflows#reference-files-and-directories) se agregan sin ninguna llamada de herramienta: Claude Code inserta su contenido mientras construye el prompt, por lo que ningún hook PreToolUse se dispara para ellos, incluidos los hooks que coinciden con `Read`. Para bloquear rutas específicas de referencias `@`, use una [regla de denegación `Read`](/docs/es/permissions#read-and-edit) en su lugar.

1693 

1694 PreToolUse tampoco se dispara para [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior).

1452</Warning>1695</Warning>

1453 1696 

1454Use [PreToolUse decision control](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada a herramienta.1697Use [control de decisión PreToolUse](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada de herramienta.

1698 

1699Un hook de devolución de llamada [Agent SDK](/docs/es/agent-sdk/hooks) en `PreToolUse` que excede su tiempo de espera bloquea la llamada de herramienta, y Claude recibe un resultado de error que nombra el tiempo de espera. Una denegación explícita devuelta por otro hook aún tiene prioridad.

1455 1700 

1456<h4 id="pretooluse-input">1701<h4 id="pretooluse-input">

1457 Entrada de PreToolUse1702 Entrada de PreToolUse

1458</h4>1703</h4>

1459 1704 

1460Además de los [campos de entrada comunes](#common-input-fields), los hooks PreToolUse reciben `tool_name`, `tool_input` y `tool_use_id`. Los campos `tool_input` dependen de la herramienta:1705Además de los [campos de entrada comunes](#common-input-fields), los hooks PreToolUse reciben `tool_name`, `tool_input`, y `tool_use_id`.

1706 

1707Para una [herramienta MCP](#match-mcp-tools), la entrada también lleva `mcp_server`, un objeto con el `name` del servidor y un `source` que dice de dónde vino la definición del servidor. Los valores `source` incluyen `plugin`, `sdk`, y alcances de configuración como `user` y `project`. [`McpServerProvenance`](/docs/es/agent-sdk/typescript#mcpserverprovenance) en la referencia de Agent SDK los enumera todos y dice cómo tratar uno que no reconozca. Base las decisiones de confianza en `source` en lugar de en `name` o el prefijo de nombre de herramienta `mcp__<server>__`. El campo `mcp_server` requiere Claude Code v2.1.274 o posterior.

1708 

1709Para las herramientas de archivo `Write`, `Edit`, y `Read`, `tool_input.file_path` siempre es absoluto:

1710 

1711* Claude Code expande `~` y rutas relativas antes de que se ejecuten los hooks, por lo que un hook que coincide con rutas no puede ser eludido a través de `~` o un deletreo relativo de la misma ruta

1712* En Windows, la ruta llega con separadores de barra invertida, incluso cuando su hook se ejecuta bajo Git Bash donde `$PWD` se ve como `/c/project`

1713* Una comparación escrita con barras diagonales, como una verificación `/src/`, nunca coincide con una ruta de barra invertida, y la llamada de herramienta continúa como si el hook no tuviera nada que bloquear

1714* Normalice separadores antes de comparar: `FILE_PATH="${FILE_PATH//\\//}"` en Bash, o `file_path.replace("\\", "/")` en Python, luego coincida con un segmento de ruta como `/src/` en lugar de anclar con `^`, ya que la ruta es absoluta

1715 

1716Una llamada `Write` en Windows entrega:

1717 

1718```json theme={null}

1719{

1720 "hook_event_name": "PreToolUse",

1721 "tool_name": "Write",

1722 "tool_input": {

1723 "file_path": "C:\\project\\src\\index.ts",

1724 "content": "..."

1725 },

1726 ...

1727}

1728```

1729 

1730Los campos `tool_input` dependen de la herramienta:

1731 

1732<a id="bash" />

1461 1733 

1462<h5 id="bash">1734<h5 id="bash">

1463 Bash1735 Bash


1470| `command` | string | `"npm test"` | El comando de shell a ejecutar |1742| `command` | string | `"npm test"` | El comando de shell a ejecutar |

1471| `description` | string | `"Run test suite"` | Descripción opcional de lo que hace el comando |1743| `description` | string | `"Run test suite"` | Descripción opcional de lo que hace el comando |

1472| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos. Los valores por encima del [máximo](/docs/es/tools-reference#bash-tool-behavior) se reducen al máximo en lugar de ser rechazados |1744| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos. Los valores por encima del [máximo](/docs/es/tools-reference#bash-tool-behavior) se reducen al máximo en lugar de ser rechazados |

1473| `run_in_background` | boolean | `false` | Si se ejecuta el comando en segundo plano |1745| `run_in_background` | boolean | `false` | Si ejecutar el comando en segundo plano |

1746 

1747Cuando un comando Bash cambia archivos en un repositorio Git, Claude Code puede registrar qué cambió. Registra los cambios en cada modo de permiso cuando la configuración [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled) activa el registro; la entrada de esa configuración dice qué archivos pueden establecerla. De lo contrario, solo los registra en modo automático y modo `bypassPermissions`, y solo cuando Claude Code dirige a Claude a editar archivos a través de Bash. Establezca `bashEditDiffEnabled` en `false` para desactivar el registro. Los comandos de fondo y los comandos de solo lectura no llevan diff.

1748 

1749Su hook [PostToolUse](#posttooluse) luego recibe los archivos cambiados en `tool_response.bashEditDiff`. La lista cubre qué cambió bajo el repositorio mientras se ejecutaba el comando. Los archivos que Git ignora y los archivos en submódulos no se enumeran. Requiere Claude Code v2.1.269 o posterior.

1750 

1751<Note>

1752 La lista es mejor esfuerzo y en beta pública. Claude Code puede perder un cambio, incluir un archivo que otro proceso cambió al mismo tiempo, o detenerse en sus límites de tamaño. La forma del campo puede cambiar. Use la lista para encontrar qué revisar, no para hacer cumplir una política.

1753</Note>

1754 

1755`changedFiles` y `files` enumeran qué cambió el comando; los campos restantes dicen qué tan completa y confiable es esa lista.

1756 

1757| Campo | Tipo | Ejemplo | Descripción |

1758| :------------- | :------ | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1759| `changedFiles` | array | `["/path/to/src/app.ts"]` | Rutas absolutas de los archivos que el comando cambió, como máximo 200. Presente siempre que `files` contenga un diff o `moreFiles` esté por encima de cero |

1760| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs de hasta 5 archivos cambiados, para visualización. `created` o `deleted` es `true` para un archivo que el comando agregó o eliminó |

1761| `moreFiles` | number | `2` | Recuento de archivos cambiados sin diff en `files` |

1762| `unavailable` | boolean | `true` | Se establece cuando el diff está incompleto o no se pudo tomar |

1763| `skipped` | boolean | `true` | Se establece para un comando Git que mueve el árbol de trabajo, como `git checkout` o `git stash`, por lo que Claude Code no toma diff |

1764| `shared` | boolean | `true` | Se establece cuando otra llamada de herramienta Bash, como la de un subagente, se ejecutó en el mismo repositorio al mismo tiempo, por lo que algunos cambios enumerados pueden ser de ese comando |

1765 

1766<a id="powershell" />

1767 

1768<h5 id="powershell">

1769 PowerShell

1770</h5>

1771 

1772Ejecuta comandos de PowerShell. Consulte la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) para disponibilidad por plataforma.

1773 

1774Los campos coinciden con la herramienta Bash, con la cadena de comando en `command`:

1775 

1776| Campo | Tipo | Ejemplo | Descripción |

1777| :------------------ | :------ | :------------------------- | :--------------------------------------------- |

1778| `command` | string | `"Get-ChildItem -Recurse"` | El comando de PowerShell a ejecutar |

1779| `description` | string | `"List files recursively"` | Descripción opcional de lo que hace el comando |

1780| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos |

1781| `run_in_background` | boolean | `false` | Si ejecutar el comando en segundo plano |

1782 

1783Coincida con `Bash|PowerShell` en hooks que inspeccionen comandos de shell, para que cubran ambas herramientas:

1784 

1785* En Windows, dondequiera que la herramienta PowerShell esté habilitada, Claude trata PowerShell como el shell principal y enruta comandos de shell a través de él.

1786* En Windows sin Git Bash, la herramienta se habilita automáticamente y Claude Code no registra la herramienta Bash en absoluto.

1787* Un hook que coincide solo con `Bash` nunca se dispara allí.

1474 1788 

1475<h5 id="write">1789<h5 id="write">

1476 Write1790 Write


1490Reemplaza una cadena en un archivo existente.1804Reemplaza una cadena en un archivo existente.

1491 1805 

1492| Campo | Tipo | Ejemplo | Descripción |1806| Campo | Tipo | Ejemplo | Descripción |

1493| :------------ | :------ | :-------------------- | :------------------------------------- |1807| :------------ | :------ | :-------------------- | :---------------------------------- |

1494| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo a editar |1808| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo a editar |

1495| `old_string` | string | `"original text"` | Texto a encontrar y reemplazar |1809| `old_string` | string | `"original text"` | Texto a encontrar y reemplazar |

1496| `new_string` | string | `"replacement text"` | Texto de reemplazo |1810| `new_string` | string | `"replacement text"` | Texto de reemplazo |

1497| `replace_all` | boolean | `false` | Si se reemplazan todas las ocurrencias |1811| `replace_all` | boolean | `false` | Si reemplazar todas las ocurrencias |

1498 1812 

1499<h5 id="read">1813<h5 id="read">

1500 Read1814 Read


1515Encuentra archivos que coincidan con un patrón glob.1829Encuentra archivos que coincidan con un patrón glob.

1516 1830 

1517| Campo | Tipo | Ejemplo | Descripción |1831| Campo | Tipo | Ejemplo | Descripción |

1518| :-------- | :----- | :--------------- | :------------------------------------------------------------------------------ |1832| :-------- | :----- | :--------------- | :--------------------------------------------------------------------------------- |

1519| `pattern` | string | `"**/*.ts"` | Patrón glob para coincidir archivos contra |1833| `pattern` | string | `"**/*.ts"` | Patrón glob para hacer coincidir archivos contra |

1520| `path` | string | `"/path/to/dir"` | Directorio opcional para buscar. Por defecto es el directorio de trabajo actual |1834| `path` | string | `"/path/to/dir"` | Directorio opcional para buscar en. Por defecto es el directorio de trabajo actual |

1521 1835 

1522<h5 id="grep">1836<h5 id="grep">

1523 Grep1837 Grep


1526Busca contenidos de archivo con expresiones regulares.1840Busca contenidos de archivo con expresiones regulares.

1527 1841 

1528| Campo | Tipo | Ejemplo | Descripción |1842| Campo | Tipo | Ejemplo | Descripción |

1529| :------------ | :------ | :--------------- | :------------------------------------------------------------------------------------- |1843| :------------ | :------ | :--------------- | :-------------------------------------------------------------------------------------- |

1530| `pattern` | string | `"TODO.*fix"` | Patrón de expresión regular a buscar |1844| `pattern` | string | `"TODO.*fix"` | Patrón de expresión regular a buscar |

1531| `path` | string | `"/path/to/dir"` | Archivo o directorio opcional para buscar |1845| `path` | string | `"/path/to/dir"` | Archivo o directorio opcional para buscar en |

1532| `glob` | string | `"*.ts"` | Patrón glob opcional para filtrar archivos |1846| `glob` | string | `"*.ts"` | Patrón glob opcional para filtrar archivos |

1533| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"` o `"count"`. Por defecto es `"files_with_matches"` |1847| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, o `"count"`. Por defecto es `"files_with_matches"` |

1534| `-i` | boolean | `true` | Búsqueda insensible a mayúsculas y minúsculas |1848| `-i` | boolean | `true` | Búsqueda insensible a mayúsculas y minúsculas |

1535| `multiline` | boolean | `false` | Habilitar coincidencia multilínea |1849| `multiline` | boolean | `false` | Habilitar coincidencia multilínea |

1536 1850 


1570| `subagent_type` | string | `"Explore"` | Tipo de agente especializado a usar |1884| `subagent_type` | string | `"Explore"` | Tipo de agente especializado a usar |

1571| `model` | string | `"sonnet"` | Alias de modelo opcional para anular el predeterminado |1885| `model` | string | `"sonnet"` | Alias de modelo opcional para anular el predeterminado |

1572 1886 

1573En `PostToolUse`, `tool_response` para una llamada Agent completada lleva el texto final del subagente junto con telemetría de uso. Lea estos campos para registrar el costo por subagente desde un hook:1887Cuando una llamada de Agent en primer plano se completa, su hook [PostToolUse](#posttooluse) recibe el resultado del subagente y telemetría de ejecución en `tool_response`. Lea estos campos para inspeccionar la ejecución; para resúmenes de tokens y costos en subagentes, use los [contadores de tokens y costos](/docs/es/monitoring-usage#token-counter) filtrados a `query_source` `"subagent"`, ya que `totalTokens` y `usage` cubren solo la solicitud final:

1574 1888 

1575| Campo | Tipo | Ejemplo | Descripción |1889| Campo | Tipo | Ejemplo | Descripción |

1576| :------------------ | :----- | :---------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1890| :------------------ | :----- | :---------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1577| `status` | string | `"completed"` | `"completed"` para subagentes en primer plano, `"async_launched"` para subagentes en segundo plano. A partir de v2.1.198, los subagentes se ejecutan en segundo plano por defecto, por lo que un `run_in_background` omitido también produce `"async_launched"` |1891| `status` | string | `"completed"` | `"completed"` para subagentes en primer plano, `"async_launched"` para subagentes en segundo plano. A partir de v2.1.198, los subagentes se ejecutan en segundo plano de forma predeterminada, por lo que un `run_in_background` omitido también produce `"async_launched"` |

1578| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para la ejecución del subagente |1892| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para la ejecución del subagente |

1579| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Los bloques de texto finales del subagente |1893| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Los bloques de texto finales del subagente, o, para un subagente cuyo informe pasa a través de `SubagentHandback`, una nota breve sobre esa entrega en su lugar |

1580| `resolvedModel` | string | `"claude-sonnet-4-5"` | Modelo en el que se ejecutó el subagente, que puede diferir del modelo solicitado. Requiere Claude Code v2.1.174 o posterior |1894| `resolvedModel` | string | `"claude-sonnet-4-5"` | Modelo en el que comenzó el subagente, que puede diferir del modelo solicitado |

1581| `totalTokens` | number | `12450` | Tokens totales facturados en los turnos del subagente |1895| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Modelos utilizados en orden, con repeticiones consecutivas colapsadas; se establece solo cuando el modelo fue intercambiado a mitad de ejecución. Requiere Claude Code v2.1.212 o posterior |

1896| `totalTokens` | number | `12450` | Recuento de tokens de la solicitud final de API del subagente: tokens de entrada, salida y caché combinados. Este no es un total en toda la ejecución |

1582| `totalDurationMs` | number | `48211` | Duración de reloj de pared de la ejecución del subagente |1897| `totalDurationMs` | number | `48211` | Duración de reloj de pared de la ejecución del subagente |

1583| `totalToolUseCount` | number | `7` | Recuento de llamadas a herramientas que hizo el subagente |1898| `totalToolUseCount` | number | `7` | Recuento de llamadas de herramienta que realizó el subagente |

1584| `usage` | object | `{"input_tokens": 8320, ...}` | Desglose de tokens por tipo: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |1899| `usage` | object | `{"input_tokens": 8320, ...}` | Desglose de tokens por tipo de la solicitud final de API: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1585 1900 

1586Para subagentes en segundo plano, la herramienta regresa inmediatamente después de lanzar, por lo que `tool_response` no lleva campos de uso. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` y `resolvedModel`.1901En Claude Code v2.1.271 o posterior, un subagente que se ejecuta con la herramienta [`SubagentHandback`](/docs/es/tools-reference) que Claude Code proporciona en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), entrega su informe a través de esa herramienta en lugar de devolverlo como texto. El campo `content` de su resultado `completed` luego lleva una nota breve sobre esa entrega en lugar del informe en sí. Para leer el informe, coincida un hook `PreToolUse` o `PostToolUse` en `SubagentHandback` y lea `tool_input.message`.

1587 1902 

1588El campo `resolvedModel` nombra el modelo en el que se ejecuta realmente el subagente, que puede diferir del valor `model` en `tool_input`, como cuando `availableModels` u otra anulación se aplica. Requiere Claude Code v2.1.174 o posterior.1903Para subagentes en segundo plano, la herramienta devuelve cuando la tarea se mueve al segundo plano, por lo que `tool_response` no lleva campos de uso: un lanzamiento en segundo plano devuelve inmediatamente, y una tarea en primer plano que Claude Code pone en segundo plano a mitad de ejecución devuelve en esa transición. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, y `resolvedModel`.

1904 

1905En una respuesta `completed`, `resolvedModel` nombra el modelo en el que comenzó el subagente, que puede diferir del valor `model` en `tool_input`, como cuando `availableModels` u otra anulación se aplica. En una respuesta `async_launched`, `resolvedModel` nombra el modelo en uso cuando el agente se movió al segundo plano, por lo que un intercambio que ocurrió antes de pasar al segundo plano se refleja allí. El comportamiento de `modelsUsed` y `resolvedModel` en tiempo de segundo plano requieren Claude Code v2.1.212 o posterior.

1589 1906 

1590<a id="askuserquestion" />1907<a id="askuserquestion" />

1591 1908 


1597 1914 

1598| Campo | Tipo | Ejemplo | Descripción |1915| Campo | Tipo | Ejemplo | Descripción |

1599| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1916| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1600| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Preguntas a presentar, cada una con una cadena `question`, `header` corto, array `options` y bandera `multiSelect` opcional |1917| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Preguntas a presentar, cada una con una cadena `question`, `header` corto, matriz `options`, y bandera `multiSelect` opcional |

1601| `answers` | object | `{"Which framework?": "React"}` | Opcional. Asigna texto de pregunta a la etiqueta de opción seleccionada. Las respuestas de selección múltiple unen etiquetas con comas. Claude no establece este campo; suministrarlo a través de `updatedInput` para responder programáticamente |1918| `answers` | object | `{"Which framework?": "React"}` | Opcional. Asigna texto de pregunta a la etiqueta de opción seleccionada. Las respuestas de selección múltiple unen etiquetas con comas. Claude no establece este campo; suministrarlo a través de `updatedInput` para responder programáticamente |

1602 1919 

1603<h5 id="exitplanmode">1920<h5 id="exitplanmode">

1604 ExitPlanMode1921 ExitPlanMode

1605</h5>1922</h5>

1606 1923 

1607Presenta un plan y pide al usuario que lo apruebe antes de que Claude salga del [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Claude escribe el plan en un archivo en el disco antes de llamar a la herramienta, por lo que el `tool_input` literal del modelo es típicamente vacío. Claude Code inyecta el contenido del plan y la ruta del archivo antes de pasar la entrada a los hooks.1924Presenta un plan y pide al usuario que lo apruebe antes de que Claude salga del [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Claude escribe el plan en un archivo en el disco antes de llamar a la herramienta, por lo que la `tool_input` literal del modelo es típicamente vacía. Claude Code inyecta el contenido del plan y la ruta del archivo antes de pasar la entrada a los hooks.

1608 1925 

1609| Campo | Tipo | Ejemplo | Descripción |1926| Campo | Tipo | Ejemplo | Descripción |

1610| :--------------- | :----- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1927| :--------------- | :----- | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

1611| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenido del plan en Markdown. Inyectado desde el archivo del plan en el disco |1928| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenido del plan en Markdown. Inyectado desde el archivo del plan en el disco |

1612| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Ruta al archivo del plan. Inyectado |1929| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Ruta al archivo del plan. Inyectado |

1613| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecado. Claude Code acepta el campo pero lo ignora. Antes de v2.1.205, llevaba permisos basados en prompts que Claude estaba solicitando para implementar el plan |1930| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecado. Claude Code acepta el campo pero lo ignora. Antes de v2.1.205, llevaba permisos basados en prompts que Claude solicitó para implementar el plan |

1614 1931 

1615En `PostToolUse`, `tool_response` es un objeto con campos `plan` y `filePath` que contienen el plan aprobado, más banderas de estado internas. Lea `tool_response.plan` para el contenido del plan en lugar de releer el archivo desde el disco.1932En `PostToolUse`, `tool_response` es un objeto con campos `plan` y `filePath` que contienen el plan aprobado, más banderas de estado internas. Lea `tool_response.plan` para el contenido del plan en lugar de releer el archivo del disco.

1616 1933 

1617<h4 id="pretooluse-decision-control">1934<h4 id="pretooluse-decision-control">

1618 Control de decisión de PreToolUse1935 Control de decisión de PreToolUse

1619</h4>1936</h4>

1620 1937 

1621Los hooks `PreToolUse` pueden controlar si procede una llamada a herramienta. A diferencia de otros hooks que usan un campo `decision` de nivel superior, PreToolUse devuelve su decisión dentro de un objeto `hookSpecificOutput`. Esto le da control más rico: cuatro resultados (permitir, denegar, preguntar o diferir) más la capacidad de modificar la entrada de la herramienta antes de la ejecución.1938Los hooks `PreToolUse` pueden controlar si procede una llamada de herramienta. A diferencia de otros hooks que usan un campo `decision` de nivel superior, PreToolUse devuelve su decisión dentro de un objeto `hookSpecificOutput`. Esto le da un control más rico: cuatro resultados (permitir, denegar, preguntar o diferir) más la capacidad de modificar la entrada de herramienta antes de la ejecución.

1622 1939 

1623| Campo | Descripción |1940| Campo | Descripción |

1624| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1941| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1625| `permissionDecision` | `"allow"` omite el sistema de permisos, excepto para [herramientas que requieren interacción del usuario](#pretooluse-decision-control) y herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools). `"deny"` evita la llamada a herramienta. `"ask"` solicita al usuario que confirme. `"defer"` sale correctamente para que la herramienta pueda reanudarse más tarde. Las reglas [Deny and ask](/docs/es/permissions#manage-permissions) aún se evalúan independientemente de lo que devuelva el hook |1942| `permissionDecision` | `"allow"` omite el aviso de permiso, excepto para las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) y para `AskUserQuestion` y `ExitPlanMode`, que necesitan [`updatedInput` emparejado con él](#allow-with-updatedinput). `"deny"` evita la llamada de herramienta. `"ask"` solicita al usuario que confirme. `"defer"` sale correctamente para que la herramienta pueda reanudarse más tarde. Las [reglas de denegación y pregunta](/docs/es/permissions#manage-permissions) aún se evalúan independientemente de lo que devuelva el hook |

1626| `permissionDecisionReason` | Para `"allow"` y `"ask"`, se muestra al usuario pero no a Claude. Para `"deny"`, se muestra a Claude. Para `"defer"`, se ignora |1943| `permissionDecisionReason` | Para `"allow"` y `"ask"`, se muestra al usuario pero no a Claude. Para `"deny"`, se muestra a Claude. Para `"defer"`, se ignora |

1627| `updatedInput` | Modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. Combinar con `"allow"` para aprobación automática, o `"ask"` para mostrar la entrada modificada al usuario. Para `"defer"`, se ignora |1944| `updatedInput` | Modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. Claude Code evalúa reglas de permiso y la elegibilidad de [segundo plano automático](/docs/es/tools-reference#background-commands) de un comando Bash contra la entrada que devuelve su hook, no la entrada que envió Claude. Combine con `"allow"` para aprobar automáticamente, o `"ask"` para mostrar la entrada modificada al usuario. Para `"defer"`, se ignora |

1628| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Ignorado cuando `permissionDecision` es `"defer"`. Consulte [Agregar contexto para Claude](#add-context-for-claude) |1945| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Se ignora cuando `permissionDecision` es `"defer"`. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

1946 

1947Cuando múltiples hooks PreToolUse devuelven decisiones diferentes, la precedencia es `deny` > `defer` > `ask` > `allow`.

1629 1948 

1630Cuando múltiples hooks PreToolUse devuelven diferentes decisiones, la precedencia es `deny` > `defer` > `ask` > `allow`.1949Un hook que bloquea saliendo con 2 se enruta de la misma manera que `"deny"`: Claude ve el mensaje stderr como la razón de la denegación.

1631 1950 

1632Cuando un hook devuelve `"ask"`, el diálogo de permiso mostrado al usuario incluye una etiqueta que identifica de dónde proviene el hook: por ejemplo, `[User]`, `[Project]`, `[Plugin]` o `[Local]`. Esto ayuda a los usuarios a entender qué fuente de configuración está solicitando confirmación.1951Cuando un hook devuelve `"ask"`, el aviso de permiso mostrado al usuario incluye una etiqueta que identifica de dónde vino el hook: `[settings]` para un hook de cualquier archivo de configuración o del frontmatter del agente, `[plugin:<name>]` para el hook de un plugin, o `[skill]` para un hook del frontmatter de skill. Esto ayuda a los usuarios a entender qué fuente de configuración solicita confirmación.

1952 

1953Un `"ask"` de un hook también fuerza un aviso de permiso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): el clasificador aún puede denegar la llamada de herramienta, pero no puede aprobar la llamada silenciosamente. Antes de v2.1.211, el clasificador podría aprobar un comando Bash ejecutándose fuera del [sandbox](/docs/es/sandboxing) sin mostrar el aviso que solicitó el hook; el clasificador aún aplicaba sus propias reglas de seguridad a ese comando, y una denegación de hook `"deny"` siempre se honraba.

1633 1954 

1634```json theme={null}1955```json theme={null}

1635{1956{


1645}1966}

1646```1967```

1647 1968 

1648`AskUserQuestion` y `ExitPlanMode` requieren interacción del usuario y normalmente se bloquean en [modo no interactivo](/docs/es/headless) con la bandera `-p`. Devolver `permissionDecision: "allow"` junto con `updatedInput` satisface ese requisito: el hook lee la entrada de la herramienta desde stdin, recopila la respuesta a través de su propia interfaz de usuario y la devuelve en `updatedInput` para que la herramienta se ejecute sin solicitar. Devolver `"allow"` solo no es suficiente para estas herramientas. Para `AskUserQuestion`, repita el array `questions` original y agregue un objeto [`answers`](#askuserquestion) que asigne el texto de cada pregunta a la respuesta elegida.1969<span id="allow-with-updatedinput" />

1649 1970 

1650Herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) solicitan incluso cuando un hook devuelve `"allow"`.1971En [modo no interactivo](/docs/es/headless) con la bandera `-p`, Claude Code ofrece `AskUserQuestion` y `ExitPlanMode` solo cuando la ejecución tiene un [anfitrión de permiso](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs) para recibir el aviso, como una devolución de llamada `canUseTool` de Agent SDK. Estas herramientas requieren interacción del usuario. Devolver `permissionDecision: "allow"` junto con `updatedInput` satisface ese requisito: el hook lee la entrada de la herramienta de stdin, recopila la respuesta a través de su propia interfaz de usuario, y la devuelve en `updatedInput` para que la herramienta se ejecute sin solicitar. Devolver `"allow"` solo no es suficiente para estas herramientas. Para `AskUserQuestion`, devuelva la matriz `questions` original y agregue un objeto [`answers`](#askuserquestion) que asigne el texto de cada pregunta a la respuesta elegida.

1651 1972 

1652A partir de v2.1.199, una herramienta MCP cuyo servidor la marca con [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) es más estricta: un hook no puede omitir su solicitud de aprobación con `"allow"`, con o sin `updatedInput`, porque Claude Code no puede confirmar que el hook recopiló la interacción que la herramienta necesita.1973A partir de v2.1.199, una herramienta MCP cuyo servidor la marca con [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) es más estricta: un hook no puede omitir su aviso de aprobación con `"allow"`, con o sin `updatedInput`, porque Claude Code no puede confirmar que el hook recopiló la interacción que la herramienta necesita.

1653 1974 

1654<Note>1975<Note>

1655 PreToolUse anteriormente usaba campos `decision` y `reason` de nivel superior, pero estos están deprecados para este evento. Use `hookSpecificOutput.permissionDecision` y `hookSpecificOutput.permissionDecisionReason` en su lugar. Los valores deprecados `"approve"` y `"block"` se asignan a `"allow"` y `"deny"` respectivamente. Otros eventos como PostToolUse y Stop continúan usando `decision` y `reason` de nivel superior como su formato actual.1976 PreToolUse previamente usaba campos `decision` y `reason` de nivel superior, pero estos están deprecados para este evento. Use `hookSpecificOutput.permissionDecision` y `hookSpecificOutput.permissionDecisionReason` en su lugar. Los valores deprecados `"approve"` y `"block"` se asignan a `"allow"` y `"deny"` respectivamente. Otros eventos como PostToolUse y Stop continúan usando `decision` y `reason` de nivel superior como su formato actual.

1656</Note>1977</Note>

1657 1978 

1658<h4 id="defer-a-tool-call-for-later">1979<h4 id="defer-a-tool-call-for-later">

1659 Diferir una llamada a herramienta para más tarde1980 Diferir una llamada de herramienta para más tarde

1660</h4>1981</h4>

1661 1982 

1662`"defer"` es para integraciones que ejecutan `claude -p` como un subproceso y leen su salida JSON, como una aplicación del Agent SDK o una interfaz de usuario personalizada construida sobre Claude Code. Permite que ese proceso de llamada pause Claude en una llamada a herramienta, recopile entrada a través de su propia interfaz y reanude donde se quedó. Claude Code honra este valor solo en [modo no interactivo](/docs/es/headless) con la bandera `-p`. En sesiones interactivas registra una advertencia e ignora el resultado del hook.1983`"defer"` es para integraciones que ejecutan `claude -p` como un subproceso y leen su salida JSON, como una aplicación Agent SDK o una interfaz de usuario personalizada construida sobre Claude Code. Permite que ese proceso de llamada pause Claude en una llamada de herramienta, recopile entrada a través de su propia interfaz, y reanude donde se quedó. Claude Code honra este valor solo en [modo no interactivo](/docs/es/headless) con la bandera `-p`. En sesiones interactivas registra una advertencia e ignora el resultado del hook.

1663 1984 

1664La herramienta `AskUserQuestion` es el caso típico: Claude quiere hacer algo al usuario, pero no hay terminal para responder. El viaje de ida y vuelta funciona así:1985La herramienta `AskUserQuestion` es el caso típico: Claude quiere hacer una pregunta al usuario, pero no hay terminal para responder. Una ejecución `-p` ofrece `AskUserQuestion` solo cuando tiene un [anfitrión de permiso](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), como una herramienta MCP que pasa con `--permission-prompt-tool`, así que comience la ejecución con una. El viaje de ida y vuelta funciona así:

1665 1986 

16661. Claude llama a `AskUserQuestion`. Se activa el hook `PreToolUse`.19871. Claude llama a `AskUserQuestion`. Se dispara el hook `PreToolUse`.

16672. El hook devuelve `permissionDecision: "defer"`. La herramienta no se ejecuta. El proceso sale con `stop_reason: "tool_deferred"` y la llamada a herramienta pendiente preservada en la transcripción.19882. El hook devuelve `permissionDecision: "defer"`. La herramienta no se ejecuta. El proceso sale con `stop_reason: "tool_deferred"` y la llamada de herramienta pendiente preservada en la transcripción.

16683. El proceso de llamada lee `deferred_tool_use` del resultado del SDK, muestra la pregunta en su propia interfaz de usuario y espera una respuesta.19893. El proceso de llamada lee `deferred_tool_use` del resultado de SDK, muestra la pregunta en su propia interfaz de usuario, y espera una respuesta.

16694. El proceso de llamada ejecuta `claude -p --resume <session-id>`. La misma llamada a herramienta activa `PreToolUse` nuevamente.19904. El proceso de llamada ejecuta `claude -p --resume <session-id>` con el mismo anfitrión de permiso. Se dispara la misma llamada de herramienta `PreToolUse` nuevamente.

16705. El hook devuelve `permissionDecision: "allow"` con la respuesta en `updatedInput`. La herramienta se ejecuta y Claude continúa.19915. El hook devuelve `permissionDecision: "allow"` con la respuesta en `updatedInput`. La herramienta se ejecuta y Claude continúa.

1671 1992 

1672El campo `deferred_tool_use` lleva el `id`, `name` e `input` de la herramienta. El `input` son los parámetros que Claude generó para la llamada a herramienta, capturados antes de la ejecución:1993El campo `deferred_tool_use` lleva el `id`, `name`, e `input` de la herramienta. El `input` son los parámetros que Claude generó para la llamada de herramienta, capturados antes de la ejecución:

1673 1994 

1674```json theme={null}1995```json theme={null}

1675{1996{


1685}2006}

1686```2007```

1687 2008 

1688No hay límite de tiempo de espera o reintento. La sesión permanece en el disco hasta que la reanude, sujeta al barrido de retención [`cleanupPeriodDays`](/docs/es/settings#available-settings) que elimina archivos de sesión después de 30 días por defecto. Si la respuesta no está lista cuando reanuda, el hook puede devolver `"defer"` nuevamente y el proceso sale de la misma manera. El proceso de llamada controla cuándo romper el bucle devolviendo finalmente `"allow"` o `"deny"` del hook.2009No hay límite de tiempo de espera o reintento. La sesión permanece en el disco hasta que la reanude, sujeta al barrido de retención [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays), que elimina archivos de sesión después de 30 días de forma predeterminada, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically). Si la respuesta no está lista cuando reanuda, el hook puede devolver `"defer"` nuevamente y el proceso sale de la misma manera. El proceso de llamada controla cuándo romper el bucle devolviendo finalmente `"allow"` o `"deny"` del hook.

1689 2010 

1690`"defer"` solo funciona cuando Claude hace una única llamada a herramienta en el turno. Si Claude hace varias llamadas a herramientas a la vez, `"defer"` se ignora con una advertencia y la herramienta procede a través del flujo de permiso normal. La restricción existe porque reanudar solo puede re-ejecutar una herramienta: no hay forma de diferir una llamada de un lote sin dejar las otras sin resolver.2011`"defer"` solo funciona cuando Claude realiza una única llamada de herramienta en el turno. Si Claude realiza varias llamadas de herramienta a la vez, `"defer"` se ignora con una advertencia y la herramienta procede a través del flujo de permiso normal. La restricción existe porque reanudar solo puede re-ejecutar una herramienta: no hay forma de diferir una llamada de un lote sin dejar las otras sin resolver.

1691 2012 

1692Si la herramienta diferida ya no está disponible cuando reanuda, el proceso sale con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` antes de que se active el hook. Esto sucede cuando un servidor MCP que proporcionó la herramienta no está conectado para la sesión reanudada. El payload `deferred_tool_use` aún se incluye para que pueda identificar qué herramienta desapareció.2013Si la herramienta diferida ya no está disponible cuando reanuda, el proceso sale con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` antes de que se dispare el hook. Esto sucede cuando un servidor MCP que proporcionó la herramienta no está conectado para la sesión reanudada. La carga `deferred_tool_use` aún se incluye para que pueda identificar qué herramienta desapareció.

1693 2014 

1694<Note>2015<Note>

1695 `--resume` restaura el modo de permiso que estaba activo cuando se diferió la herramienta, por lo que no necesita pasar `--permission-mode` nuevamente. Las excepciones son `plan` y `bypassPermissions`, que nunca se llevan. Pasar `--permission-mode` explícitamente en reanudar anula el valor restaurado.2016 Para reanudar una sesión diferida en modo de plan, pase [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) junto con `--resume` para que Claude Code pueda presentar el plan para aprobación. Sin él, Claude Code no restaura el modo de plan. Requiere Claude Code v2.1.246 o posterior.

2017 

2018 Cuando reanuda con `-p`, Claude Code no restaura ningún otro modo de permiso almacenado. Comienza la ejecución en el modo de permiso que comenzaría una nueva ejecución `claude -p`, así que pase `--permission-mode` o `--dangerously-skip-permissions` nuevamente si la sesión diferida usó uno. Cuando reanuda con `claude --resume <session-id>` sin `-p`, Claude Code restaura el modo de permiso almacenado, con las excepciones enumeradas en [modo de permiso al reanudar](/docs/es/sessions#permission-mode-on-resume).

1696</Note>2019</Note>

1697 2020 

1698<h3 id="permissionrequest">2021<h3 id="permissionrequest">

1699 PermissionRequest2022 PermissionRequest

1700</h3>2023</h3>

1701 2024 

1702Se ejecuta cuando se muestra un diálogo de permiso al usuario.2025Se ejecuta cuando Claude Code está a punto de pedirle permiso para usar una herramienta. En sesiones que no pueden mostrar un aviso, como subagentes en segundo plano en [modo no interactivo](/docs/es/headless), Claude Code aún ejecuta estos hooks, y si ningún hook devuelve una decisión, deniega la llamada de herramienta.

1703Use [PermissionRequest decision control](#permissionrequest-decision-control) para permitir o denegar en nombre del usuario.2026Use [control de decisión PermissionRequest](#permissionrequest-decision-control) para permitir o denegar en nombre del usuario.

2027 

2028Use este evento cuando necesite una señal en el momento en que Claude solicita permiso para usar una herramienta. Claude Code ejecuta un hook [Notification](#notification) con el tipo `permission_prompt` solo después de que el aviso ha esperado aproximadamente seis segundos.

2029 

2030Claude Code no ejecuta hooks PermissionRequest para la [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en sandbox. Para obtener una señal para ese aviso, use el tipo de notificación `permission_prompt`.

1704 2031 

1705Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2032Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

1706 2033 


1708 Entrada de PermissionRequest2035 Entrada de PermissionRequest

1709</h4>2036</h4>

1710 2037 

1711Los hooks PermissionRequest reciben campos `tool_name` y `tool_input` como los hooks PreToolUse, pero sin `tool_use_id`. Un array `permission_suggestions` opcional contiene las opciones "siempre permitir" que el usuario normalmente vería en el diálogo de permiso. La diferencia es cuándo se activa el hook: los hooks PermissionRequest se ejecutan cuando un diálogo de permiso está a punto de mostrarse al usuario, mientras que los hooks PreToolUse se ejecutan antes de la ejecución de la herramienta independientemente del estado de permiso.2038Los hooks PermissionRequest reciben campos `tool_name` e `tool_input` como los hooks PreToolUse, pero sin `tool_use_id`. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input). Una matriz `permission_suggestions` opcional contiene las [actualizaciones de permiso](#permission-update-entries) que Claude Code sugiere para esta solicitud, como agregar una regla de permiso o cambiar el modo de permiso.

2039 

2040La matriz `permission_suggestions` no es una lista exacta de las opciones que ve, porque cada diálogo de permiso construye sus propias opciones. Algunos diálogos, como el de ediciones de archivo, no leen la matriz en absoluto y derivan sus opciones de la solicitud en sí. Un diálogo que sí la lee aún puede retener una opción cuya sugerencia permanece en la matriz, por ejemplo cuando [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) oculta opciones de guardado de reglas. También puede ofrecer opciones que no tienen entrada de sugerencia, como [**Sí, y cambiar a modo automático**](/docs/es/permission-modes#switch-permission-modes), que cambia el modo de permiso directamente en lugar de a través de una actualización de permiso.

2041 

2042Los hooks PreToolUse se ejecutan antes de cada llamada de herramienta, independientemente de si necesita permiso. Los hooks PermissionRequest se ejecutan solo cuando Claude Code está a punto de pedirle permiso, o cuando de otro modo denegaría automáticamente una llamada que no puede solicitar. Ninguno de los dos eventos se dispara para [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior).

1712 2043 

1713```json theme={null}2044```json theme={null}

1714{2045{


1741 2072 

1742| Campo | Descripción |2073| Campo | Descripción |

1743| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2074| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1744| `behavior` | `"allow"` otorga el permiso, `"deny"` lo deniega. Las reglas [Deny and ask](/docs/es/permissions#manage-permissions) aún se evalúan, por lo que un hook que devuelve `"allow"` no anula una regla de denegación coincidente |2075| `behavior` | `"allow"` otorga el permiso, `"deny"` lo deniega. Las [reglas de denegación y pregunta](/docs/es/permissions#manage-permissions) aún se evalúan, por lo que un hook que devuelve `"allow"` no anula una regla de denegación coincidente |

1745| `updatedInput` | Solo para `"allow"`: modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. La entrada modificada se re-evalúa contra reglas de denegación y pregunta |2076| `updatedInput` | Solo para `"allow"`: modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. La entrada modificada se re-evalúa contra reglas de denegación y pregunta |

1746| `updatedPermissions` | Solo para `"allow"`: array de [entradas de actualización de permiso](#permission-update-entries) a aplicar, como agregar una regla de permiso o cambiar el modo de permiso de sesión |2077| `updatedPermissions` | Solo para `"allow"`: matriz de [entradas de actualización de permiso](#permission-update-entries) a aplicar, como agregar una regla de permiso o cambiar el modo de permiso de la sesión |

1747| `message` | Solo para `"deny"`: le dice a Claude por qué se denegó el permiso |2078| `message` | Solo para `"deny"`: dice a Claude por qué se denegó el permiso |

1748| `interrupt` | Solo para `"deny"`: si es `true`, detiene a Claude |2079| `interrupt` | Solo para `"deny"`: si es `true`, detiene a Claude |

1749 2080 

2081Un hook que sale con 2 sin un objeto `decision` deja el flujo de permiso sin cambios, y su stderr se descarta. Solo el objeto `decision` puede otorgar o denegar la solicitud.

2082 

1750```json theme={null}2083```json theme={null}

1751{2084{

1752 "hookSpecificOutput": {2085 "hookSpecificOutput": {


1765 Entradas de actualización de permiso2098 Entradas de actualización de permiso

1766</h4>2099</h4>

1767 2100 

1768El campo de salida `updatedPermissions` y el campo de entrada [`permission_suggestions`](#permissionrequest-input) ambos usan el mismo array de objetos de entrada. Cada entrada tiene un `type` que determina sus otros campos, y un `destination` que controla dónde se escribe el cambio.2101El campo de salida `updatedPermissions` y el campo de entrada [`permission_suggestions`](#permissionrequest-input) ambos usan la misma matriz de objetos de entrada. Cada entrada tiene un `type` que determina sus otros campos, y un `destination` que controla dónde se escribe el cambio.

1769 2102 

1770| `type` | Campos | Efecto |2103| `type` | Campos | Efecto |

1771| :------------------ | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2104| :------------------ | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1772| `addRules` | `rules`, `behavior`, `destination` | Agrega reglas de permiso. `rules` es un array de objetos `{toolName, ruleContent?}`. Omita `ruleContent` para coincidir con toda la herramienta. `behavior` es `"allow"`, `"deny"` o `"ask"` |2105| `addRules` | `rules`, `behavior`, `destination` | Agrega reglas de permiso. `rules` es una matriz de objetos `{toolName, ruleContent?}`. Omita `ruleContent` para hacer coincidir toda la herramienta. `behavior` es `"allow"`, `"deny"`, o `"ask"` |

1773| `replaceRules` | `rules`, `behavior`, `destination` | Reemplaza todas las reglas del `behavior` dado en el `destination` con las `rules` proporcionadas |2106| `replaceRules` | `rules`, `behavior`, `destination` | Reemplaza todas las reglas del `behavior` dado en el `destination` con las `rules` proporcionadas |

1774| `removeRules` | `rules`, `behavior`, `destination` | Elimina reglas coincidentes del `behavior` dado |2107| `removeRules` | `rules`, `behavior`, `destination` | Elimina reglas coincidentes del `behavior` dado |

1775| `setMode` | `mode`, `destination` | Cambia el modo de permiso. Los modos válidos son `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan` y `manual` como alias para `default`. El alias `manual` requiere Claude Code v2.1.200 o posterior |2108| `setMode` | `mode`, `destination` | Cambia el modo de permiso. Los modos válidos son `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, y `manual` como alias para `default`. El alias `manual` requiere Claude Code v2.1.200 o posterior |

1776| `addDirectories` | `directories`, `destination` | Agrega directorios de trabajo. `directories` es un array de cadenas de ruta |2109| `addDirectories` | `directories`, `destination` | Agrega directorios de trabajo. `directories` es una matriz de cadenas de ruta |

1777| `removeDirectories` | `directories`, `destination` | Elimina directorios de trabajo |2110| `removeDirectories` | `directories`, `destination` | Elimina directorios de trabajo |

1778 2111 

1779<Note>2112<Note>

1780 `setMode` con `bypassPermissions` solo tiene efecto si la sesión se lanzó con modo de omisión ya disponible: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` o `permissions.defaultMode: "bypassPermissions"` en configuración, y el modo no está deshabilitado por [`permissions.disableBypassPermissionsMode`](/docs/es/permissions#managed-settings). De lo contrario, la actualización es una no-op. `bypassPermissions` nunca se persiste como `defaultMode` independientemente de `destination`.2113 `setMode` con `bypassPermissions` solo toma efecto si inició la sesión con modo de bypass ya disponible: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, o `permissions.defaultMode: "bypassPermissions"` en [configuración de usuario, `--settings`, o configuración administrada](/docs/es/settings-reference#permissions-defaultmode). De lo contrario, la actualización es una no-op. La actualización también es una no-op cuando [`permissions.disableBypassPermissionsMode`](/docs/es/permissions#managed-settings) deshabilita el modo, o cuando la sesión comienza en [modo restringido](/docs/es/cli-reference#cli-flags).

2114 

2115 `bypassPermissions` nunca se persiste como `defaultMode` independientemente de `destination`.

1781</Note>2116</Note>

1782 2117 

1783El campo `destination` en cada entrada determina si el cambio permanece en memoria o persiste en un archivo de configuración.2118El campo `destination` en cada entrada determina si el cambio permanece en memoria o persiste en un archivo de configuración.


1789| `projectSettings` | `.claude/settings.json` |2124| `projectSettings` | `.claude/settings.json` |

1790| `userSettings` | `~/.claude/settings.json` |2125| `userSettings` | `~/.claude/settings.json` |

1791 2126 

1792Un hook puede ecoar una de las `permission_suggestions` que recibió como su propia salida `updatedPermissions`, que es equivalente a que el usuario seleccione esa opción "siempre permitir" en el diálogo.2127Un hook puede devolver una de las `permission_suggestions` que recibió como su propia salida `updatedPermissions`.

1793 2128 

1794<h3 id="posttooluse">2129<h3 id="posttooluse">

1795 PostToolUse2130 PostToolUse


1799 2134 

1800Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2135Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

1801 2136 

2137Coincida más ampliamente cuando el nombre de la herramienta no es el filtro correcto:

2138 

2139* Para ejecutar un hook después de que cualquier herramienta se complete exitosamente, omita el `matcher` o establézcalo en `"*"`. Su hook puede entonces descubrir qué cambió por sí mismo, por ejemplo ejecutando `git status --porcelain`, que también enumera archivos sin seguimiento que `git diff` pierde. Para llamadas de herramienta que fallan, agregue el mismo hook bajo [PostToolUseFailure](#posttoolusefailure).

2140* Para ejecutar un hook cuando un archivo específico cambia en el disco, sin importar qué lo escribió, use [FileChanged](#filechanged). Claude Code no ejecuta un hook `PostToolUse` que coincida con `Edit|Write` cuando un comando `Bash` o un proceso fuera de Claude Code reescribe el mismo archivo.

2141 

1802<h4 id="posttooluse-input">2142<h4 id="posttooluse-input">

1803 Entrada de PostToolUse2143 Entrada de PostToolUse

1804</h4>2144</h4>

1805 2145 

1806Los hooks `PostToolUse` se activan después de que una herramienta ya se ha ejecutado exitosamente. La entrada incluye tanto `tool_input`, los argumentos enviados a la herramienta, como `tool_response`, el resultado que devolvió. El esquema exacto para ambos depende de la herramienta.2146Los hooks `PostToolUse` se disparan después de que una herramienta ya se ha ejecutado exitosamente. La entrada incluye tanto `tool_input`, los argumentos enviados a la herramienta, como `tool_response`, el resultado que devolvió. El esquema exacto para ambos depende de la herramienta. Las rutas de herramienta de archivo `tool_input` llegan en el mismo formato que para [PreToolUse](#pretooluse-input): siempre absoluto, con los separadores nativos de la plataforma, así que barras invertidas en Windows. Para una herramienta MCP, la entrada también lleva el objeto [`mcp_server`](#pretooluse-input).

1807 2147 

1808```json theme={null}2148```json theme={null}

1809{2149{


1819 },2159 },

1820 "tool_response": {2160 "tool_response": {

1821 "filePath": "/path/to/file.txt",2161 "filePath": "/path/to/file.txt",

1822 "success": true2162 "type": "create"

1823 },2163 },

1824 "tool_use_id": "toolu_01ABC123...",2164 "tool_use_id": "toolu_01ABC123...",

1825 "duration_ms": 122165 "duration_ms": 12


1827```2167```

1828 2168 

1829| Campo | Descripción |2169| Campo | Descripción |

1830| :------------ | :-------------------------------------------------------------------------------------------------------------------------------------- |2170| :------------ | :--------------------------------------------------------------------------------------------------------------------------------- |

1831| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a solicitudes de permiso y hooks PreToolUse |2171| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a avisos de permiso y hooks PreToolUse |

1832 2172 

1833<h4 id="posttooluse-decision-control">2173<h4 id="posttooluse-decision-control">

1834 Control de decisión de PostToolUse2174 Control de decisión de PostToolUse


1837Los hooks `PostToolUse` pueden proporcionar retroalimentación a Claude después de la ejecución de la herramienta. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:2177Los hooks `PostToolUse` pueden proporcionar retroalimentación a Claude después de la ejecución de la herramienta. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:

1838 2178 

1839| Campo | Descripción |2179| Campo | Descripción |

1840| :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |2180| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1841| `decision` | `"block"` agrega la `reason` junto al resultado de la herramienta. Claude aún ve la salida original; para reemplazarla, use `updatedToolOutput` |2181| `decision` | `"block"` agrega el `reason` junto al resultado de la herramienta. Claude aún ve la salida original; para reemplazarla, use `updatedToolOutput` |

1842| `reason` | Explicación mostrada a Claude cuando `decision` es `"block"` |2182| `reason` | Explicación mostrada a Claude cuando `decision` es `"block"` |

1843| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Consulte [Agregar contexto para Claude](#add-context-for-claude) |2183| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

2184| `classifierContext` | Nota breve sobre el resultado de esta llamada para el clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en lugar de para Claude. Consulte [Anotar un resultado para el clasificador de modo automático](#annotate-a-result-for-the-auto-mode-classifier). Requiere Claude Code v2.1.236 o posterior |

1844| `updatedToolOutput` | Reemplaza la salida de la herramienta con el valor proporcionado antes de que se envíe a Claude. El valor debe coincidir con la forma de salida de la herramienta |2185| `updatedToolOutput` | Reemplaza la salida de la herramienta con el valor proporcionado antes de que se envíe a Claude. El valor debe coincidir con la forma de salida de la herramienta |

1845| `updatedMCPToolOutput` | Reemplaza la salida para [herramientas MCP](#match-mcp-tools) solo. Prefiera `updatedToolOutput`, que funciona para todas las herramientas |2186| `updatedMCPToolOutput` | Reemplaza la salida solo para [herramientas MCP](#match-mcp-tools). Prefiera `updatedToolOutput`, que funciona para todas las herramientas |

1846 2187 

1847El ejemplo a continuación reemplaza la salida de una llamada `Bash`. El valor de reemplazo coincide con la forma de salida de la herramienta `Bash`:2188El ejemplo a continuación reemplaza la salida de una llamada `Bash`. El valor de reemplazo coincide con la forma de salida de la herramienta `Bash`:

1848 2189 


1862```2203```

1863 2204 

1864<Warning>2205<Warning>

1865 `updatedToolOutput` solo cambia lo que Claude ve. La herramienta ya se ha ejecutado en el momento en que se activa el hook, por lo que cualquier archivo escrito, comando ejecutado o solicitud de red enviada ya ha tenido efecto. La telemetría como spans de herramientas OpenTelemetry y eventos de análisis también capturan la salida original antes de que se ejecute el hook. Para evitar o modificar una llamada a herramienta antes de que se ejecute, use un hook [PreToolUse](#pretooluse) en su lugar.2206 `updatedToolOutput` solo cambia lo que Claude ve. La herramienta ya se ha ejecutado en el momento en que se dispara el hook, por lo que cualquier archivo escrito, comando ejecutado o solicitud de red enviada ya ha tenido efecto. La telemetría como tramos de herramientas OpenTelemetry y eventos de análisis también captura la salida original antes de que se ejecute el hook. Para evitar o modificar una llamada de herramienta antes de que se ejecute, use un hook [PreToolUse](#pretooluse) en su lugar.

1866 2207 

1867 El valor de reemplazo debe coincidir con la forma de salida de la herramienta. Las herramientas integradas devuelven objetos estructurados en lugar de cadenas simples. Por ejemplo, `Bash` devuelve un objeto con campos `stdout`, `stderr`, `interrupted` e `isImage`. Para herramientas integradas, un valor que no coincida con el esquema de salida de la herramienta se ignora y se usa la salida original. La salida de herramientas MCP se pasa sin validación de esquema. Eliminar detalles de error que Claude necesita puede hacer que continúe con una suposición falsa.2208 El valor de reemplazo debe coincidir con la forma de salida de la herramienta. Las herramientas integradas devuelven objetos estructurados en lugar de cadenas simples. Por ejemplo, `Bash` devuelve un objeto con campos `stdout`, `stderr`, `interrupted`, e `isImage`. Para herramientas integradas, un valor que no coincida con el esquema de salida de la herramienta se ignora y se usa la salida original. La salida de herramientas MCP se pasa sin validación de esquema. Eliminar detalles de error que Claude necesita puede hacer que continúe con una suposición falsa.

2209</Warning>

2210 

2211<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2212 Anotar un resultado para el clasificador de modo automático

2213</h4>

2214 

2215Devuelva `classifierContext` para enviar una nota breve sobre el resultado de la llamada de herramienta al clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en lugar de a Claude. El clasificador [nunca recibe resultados de herramientas en sí](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que este campo es la forma admitida de decirle algo sobre lo que devolvió una llamada antes de que revise acciones posteriores. El campo requiere Claude Code v2.1.236 o posterior.

2216 

2217El ejemplo a continuación dice al clasificador de dónde vino la salida de una consulta:

2218 

2219```json theme={null}

2220{

2221 "hookSpecificOutput": {

2222 "hookEventName": "PostToolUse",

2223 "classifierContext": "This query ran against the staging database, not production."

2224 }

2225}

2226```

2227 

2228Cuánto peso da el clasificador a la nota depende de dónde configuró el hook:

2229 

2230* **Hooks configurados en Claude Code**: para hooks de archivos de configuración, plugins, skills y frontmatter del agente, el clasificador trata la nota como contexto no verificado proporcionado por la aplicación. La nota nunca establece la intención del usuario, y si afirma que aprobó o solicitó algo, el clasificador verifica esa afirmación contra sus propios mensajes en la conversación

2231* **Devoluciones de llamada de Agent SDK en proceso**: cuando una aplicación que integra Claude Code registra el hook como una [devolución de llamada de SDK de TypeScript](/docs/es/agent-sdk/hooks) y devuelve la nota durante la sesión en vivo, el clasificador puede pesar una declaración del usuario retransmitida en la nota como intención del usuario. Tal declaración puede satisfacer un requisito de consentimiento que el clasificador aceptaría de un mensaje que envía, pero nunca levanta un bloqueo que su propio mensaje tampoco podría levantar. Después de que se reanuda una sesión, Claude Code trata las notas restauradas como contexto no verificado. Cuando hooks de ambos grupos anotan la misma llamada, el clasificador trata la nota combinada como contexto no verificado

2232 

2233Claude Code aplica estos límites al entregar la nota:

2234 

2235* **Longitud**: Claude Code limita las notas para una llamada de herramienta a 2,000 caracteres y trunca el resto. El límite se comparte en cada hook que responde a esa llamada

2236* **Solo respuestas sincrónicas**: Claude Code ignora el campo en la respuesta de un hook que [se ejecuta en segundo plano](#run-hooks-in-the-background), porque esa respuesta llega después de que Claude Code registra el resultado de la herramienta

2237* **Llamadas que el clasificador no registra**: la transcripción del clasificador omite búsquedas de solo lectura como lecturas de archivo y búsquedas. Claude Code descarta una nota adjunta a una de esas llamadas

2238* **Interacción con reescrituras**: cuando la nota describe salida que está reemplazando con `updatedToolOutput`, devuelva ambos campos en la misma respuesta del hook. Claude Code descarta la nota si esa reescritura se rechaza u otro hook la reemplaza. Claude Code entrega una nota que devuelve sin una reescritura incluso cuando otro hook reescribe la salida

2239 

2240<Warning>

2241 El clasificador lee el contenido que coloca en `classifierContext` como información del anfitrión de la aplicación de la sesión, así que no copie salida de herramienta no confiable o texto de terceros en él. Mantenga la nota a una afirmación breve sobre esta única llamada, como un hecho sobre su origen o una declaración del usuario sobre ella; no use el campo para entregar mensajes no relacionados o un flujo de eventos.

1868</Warning>2242</Warning>

1869 2243 

1870<h3 id="posttoolusefailure">2244<h3 id="posttoolusefailure">

1871 PostToolUseFailure2245 PostToolUseFailure

1872</h3>2246</h3>

1873 2247 

1874Se ejecuta cuando falla una herramienta que comenzó a ejecutarse: la herramienta lanzó un error, o una herramienta MCP devolvió un resultado de error. Use esto para registrar fallos, enviar alertas o proporcionar retroalimentación correctiva a Claude.2248Se ejecuta cuando una herramienta que comenzó a ejecutarse falla: la herramienta lanzó un error, o una herramienta MCP devolvió un resultado de error. Úselo para registrar fallas, enviar alertas o proporcionar retroalimentación correctiva a Claude.

1875 2249 

1876Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2250Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

1877 2251 

1878<Note>2252<Note>

1879 Este evento no se activa para llamadas a herramientas rechazadas antes de la ejecución: un nombre de herramienta desconocido, entrada que falla en validación de esquema o específica de herramienta, o una denegación de permiso. Los rechazos de validación se devuelven como resultados `tool_use_error` y ocurren antes de que se ejecuten los hooks, por lo que no activan ni `PreToolUse` ni este evento. Las denegaciones de permiso activan `PreToolUse` pero no este evento; consulte [PermissionDenied](#permissiondenied).2253 Este evento no se dispara para llamadas de herramienta rechazadas antes de la ejecución: un nombre de herramienta desconocido, entrada que falla en validación de esquema o específica de herramienta, o una denegación de permiso. Los rechazos de validación se devuelven como resultados `tool_use_error` y ocurren antes de que se ejecuten los hooks, por lo que no disparan ni `PreToolUse` ni `PostToolUseFailure`. Las denegaciones de permiso disparan `PreToolUse` pero no este evento; consulte [PermissionDenied](#permissiondenied).

1880</Note>2254</Note>

1881 2255 

1882<h4 id="posttoolusefailure-input">2256<h4 id="posttoolusefailure-input">

1883 Entrada de PostToolUseFailure2257 Entrada de PostToolUseFailure

1884</h4>2258</h4>

1885 2259 

1886Los hooks PostToolUseFailure reciben los mismos campos `tool_name` y `tool_input` que PostToolUse, junto con información de error como campos de nivel superior:2260Los hooks PostToolUseFailure reciben los mismos campos `tool_name` e `tool_input` que PostToolUse, junto con información de error como campos de nivel superior. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input). Por ejemplo, un comando `npm test` fallido podría entregar:

1887 2261 

1888```json theme={null}2262```json theme={null}

1889{2263{


1898 "description": "Run test suite"2272 "description": "Run test suite"

1899 },2273 },

1900 "tool_use_id": "toolu_01ABC123...",2274 "tool_use_id": "toolu_01ABC123...",

1901 "error": "Command exited with non-zero status code 1",2275 "error": "Exit code 1\nError: Cannot find module 'express'",

1902 "is_interrupt": false,2276 "is_interrupt": false,

1903 "duration_ms": 41872277 "duration_ms": 4187

1904}2278}

1905```2279```

1906 2280 

1907| Campo | Descripción |2281| Campo | Descripción |

1908| :------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |2282| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1909| `error` | Cadena que describe qué salió mal |2283| `error` | Cadena que describe qué salió mal. El formato depende de la herramienta que falló |

1910| `is_interrupt` | Booleano opcional que indica si el fallo fue causado por interrupción del usuario |2284| `is_interrupt` | Booleano opcional. Verdadero cuando el fallo llegó a Claude Code como una interrupción en lugar de como un error que reportó la herramienta. Cancelar una herramienta en ejecución no dispara este hook; el resultado de la herramienta lleva el mensaje de interrupción en su lugar |

1911| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a solicitudes de permiso y hooks PreToolUse |2285| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a avisos de permiso y hooks PreToolUse |

2286 

2287La cadena `error` es generalmente el mismo texto que Claude recibe como resultado fallido de la herramienta. Su formato varía según la herramienta y el fallo. Clave su hook en `tool_name`, `is_interrupt`, y la primera línea `Exit code N`; trate el resto de la cadena como texto de visualización, no como un formato estable.

2288 

2289* Para Bash y PowerShell, un comando que se ejecutó y salió produce una primera línea `Exit code N`, luego cualquier salida que el comando produjo como un bloque con stdout y stderr intercalados

2290* Una carga también puede llevar un mensaje de fallo desnudo sin línea de código de salida, cuando Claude Code no pudo iniciar el proceso de shell en sí

2291* Claude Code trunca a mitad de cadenas largas alrededor de un marcador `... [N characters truncated] ...`, e puede insertar líneas propias, como `Command timed out after 2m 0s`

1912 2292 

1913<h4 id="posttoolusefailure-decision-control">2293<h4 id="posttoolusefailure-decision-control">

1914 Control de decisión de PostToolUseFailure2294 Control de decisión de PostToolUseFailure


1933 PostToolBatch2313 PostToolBatch

1934</h3>2314</h3>

1935 2315 

1936Se ejecuta una vez después de que cada llamada a herramienta en un lote se haya resuelto, antes de que Claude Code envíe la siguiente solicitud al modelo. `PostToolUse` se activa una vez por herramienta, lo que significa que se activa simultáneamente cuando Claude hace llamadas a herramientas paralelas. `PostToolBatch` se activa exactamente una vez con el lote completo, por lo que es el lugar correcto para inyectar contexto que dependa del conjunto de herramientas que se ejecutaron en lugar de cualquier herramienta individual. No hay matcher para este evento.2316Se ejecuta una vez después de que cada llamada de herramienta en un lote se haya resuelto, antes de que Claude Code envíe la siguiente solicitud al modelo. `PostToolUse` se dispara una vez por herramienta, lo que significa que se dispara simultáneamente cuando Claude realiza llamadas de herramienta paralelas. `PostToolBatch` se dispara exactamente una vez con el lote completo, por lo que es el lugar correcto para inyectar contexto que dependa del conjunto de herramientas que se ejecutaron en lugar de en cualquier herramienta única. No hay matcher para este evento.

1937 2317 

1938<h4 id="posttoolbatch-input">2318<h4 id="posttoolbatch-input">

1939 Entrada de PostToolBatch2319 Entrada de PostToolBatch

1940</h4>2320</h4>

1941 2321 

1942Además de los [campos de entrada comunes](#common-input-fields), los hooks PostToolBatch reciben `tool_calls`, un array que describe cada llamada a herramienta en el lote:2322Además de los [campos de entrada comunes](#common-input-fields), los hooks PostToolBatch reciben `tool_calls`, una matriz que describe cada llamada de herramienta en el lote:

1943 2323 

1944```json theme={null}2324```json theme={null}

1945{2325{


1965}2345}

1966```2346```

1967 2347 

1968`tool_response` contiene el mismo contenido que el modelo recibe en el bloque `tool_result` correspondiente. El valor es una cadena serializada o un array de bloque de contenido, exactamente como lo emitió la herramienta. Para `Read`, eso significa texto con prefijo de número de línea en lugar de contenidos de archivo sin procesar. Las respuestas pueden ser grandes, así que analice solo los campos que necesita.2348`tool_response` contiene el mismo contenido que el modelo recibe en el bloque `tool_result` correspondiente. El valor es una cadena serializada o matriz de bloques de contenido, exactamente como lo emitió la herramienta. Para `Read`, eso significa texto con prefijo de número de línea en lugar de contenidos de archivo sin procesar. Las respuestas pueden ser grandes, así que analice solo los campos que necesita.

1969 2349 

1970<Note>2350<Note>

1971 La forma de `tool_response` difiere de la de `PostToolUse`. `PostToolUse` pasa el objeto `Output` estructurado de la herramienta, como `{filePath: "...", success: true}` para `Write`; `PostToolBatch` pasa el contenido `tool_result` serializado que el modelo ve.2351 La forma `tool_response` difiere de la de `PostToolUse`. `PostToolUse` pasa el objeto `Output` estructurado de la herramienta, como `{filePath: "...", type: "create"}` para `Write`; `PostToolBatch` pasa el contenido `tool_result` serializado que ve el modelo.

1972</Note>2352</Note>

1973 2353 

1974<h4 id="posttoolbatch-decision-control">2354<h4 id="posttoolbatch-decision-control">


1978Los hooks `PostToolBatch` pueden inyectar contexto para Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:2358Los hooks `PostToolBatch` pueden inyectar contexto para Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:

1979 2359 

1980| Campo | Descripción |2360| Campo | Descripción |

1981| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2361| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1982| `additionalContext` | Cadena de contexto inyectada una vez antes de la siguiente llamada al modelo. Consulte [Agregar contexto para Claude](#add-context-for-claude) para detalles de entrega, qué poner en él y cómo las sesiones reanudadas manejan valores pasados |2362| `additionalContext` | Cadena de contexto inyectada una vez antes de la siguiente llamada del modelo. Consulte [Agregar contexto para Claude](#add-context-for-claude) para detalles de entrega, qué poner en él y cómo las sesiones reanudadas manejan valores pasados |

1983 2363 

1984```json theme={null}2364```json theme={null}

1985{2365{


1990}2370}

1991```2371```

1992 2372 

1993Devolver `decision: "block"` o `continue: false` detiene el bucle agentico antes de la siguiente llamada al modelo.2373Devolver `decision: "block"` o `continue: false` detiene el bucle agéntico antes de la siguiente llamada del modelo. El mensaje de bloqueo viene del JSON `reason` o `stopReason`, o de stderr en salida 2. Lo ve como una advertencia en la transcripción, y permanece en la conversación, por lo que Claude lo ve cuando la conversación continúa.

1994 2374 

1995<h3 id="permissiondenied">2375<h3 id="permissiondenied">

1996 PermissionDenied2376 PermissionDenied

1997</h3>2377</h3>

1998 2378 

1999Se ejecuta cuando el clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) deniega una llamada a herramienta. Este hook solo se activa en modo automático: no se ejecuta cuando deniega manualmente un diálogo de permiso, cuando un hook `PreToolUse` bloquea una llamada o cuando una regla `deny` coincide. Use esto para registrar denegaciones del clasificador, ajustar configuración o decirle al modelo que puede reintentar la llamada a herramienta.2379Se ejecuta cuando [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) deniega una llamada de herramienta, incluido cuando deniega sin un veredicto del clasificador porque [una verificación de seguridad separada del modo automático rechazó la propia solicitud del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action) o su respuesta no se analizó. Este hook solo se dispara en modo automático: no se ejecuta cuando deniega manualmente un diálogo de permiso, cuando un hook `PreToolUse` bloquea una llamada, o cuando una regla `deny` coincide. Úselo para registrar denegaciones, ajustar configuración o decirle al modelo que puede reintentar la llamada de herramienta.

2000 2380 

2001Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2381Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

2002 2382 


2004 Entrada de PermissionDenied2384 Entrada de PermissionDenied

2005</h4>2385</h4>

2006 2386 

2007Además de los [campos de entrada comunes](#common-input-fields), los hooks PermissionDenied reciben `tool_name`, `tool_input`, `tool_use_id` y `reason`.2387Además de los [campos de entrada comunes](#common-input-fields), los hooks PermissionDenied reciben `tool_name`, `tool_input`, `tool_use_id`, y `reason`. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input).

2008 2388 

2009```json theme={null}2389```json theme={null}

2010{2390{


2019 "description": "Clean build directory"2399 "description": "Clean build directory"

2020 },2400 },

2021 "tool_use_id": "toolu_01ABC123...",2401 "tool_use_id": "toolu_01ABC123...",

2022 "reason": "Auto mode denied: command targets a path outside the project"2402 "reason": "[Irreversible Local Destruction]"

2023}2403}

2024```2404```

2025 2405 

2026| Campo | Descripción |2406| Campo | Descripción |

2027| :------- | :------------------------------------------------------------------------------ |2407| :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2028| `reason` | La explicación del clasificador para por qué se denegó la llamada a herramienta |2408| `reason` | La razón de la denegación. Para un veredicto del clasificador, en la mayoría de sesiones nombra la regla coincidente entre corchetes, como `[Data Exfiltration]`; consulte [Revisar denegaciones](/docs/es/auto-mode-config#review-denials) para las otras formas. Para una [denegación sin veredicto](#permissiondenied-decision-control), comienza con `Auto mode could not evaluate this action and is blocking it for safety`. Para una denegación porque el modelo del clasificador no estaba disponible, es el texto fijo `Classifier unavailable` |

2029 2409 

2030<h4 id="permissiondenied-decision-control">2410<h4 id="permissiondenied-decision-control">

2031 Control de decisión de PermissionDenied2411 Control de decisión de PermissionDenied

2032</h4>2412</h4>

2033 2413 

2034Los hooks PermissionDenied pueden decirle al modelo que puede reintentar la llamada a herramienta denegada. Devuelva un objeto JSON con `hookSpecificOutput.retry` establecido en `true`:2414Los hooks PermissionDenied pueden decirle al modelo que puede reintentar la llamada de herramienta denegada. Devuelva un objeto JSON con `hookSpecificOutput.retry` establecido en `true`:

2035 2415 

2036```json theme={null}2416```json theme={null}

2037{2417{


2042}2422}

2043```2423```

2044 2424 

2045Cuando `retry` es `true`, Claude Code agrega un mensaje a la conversación diciéndole al modelo que puede reintentar la llamada a herramienta. La denegación en sí no se revierte. Si su hook no devuelve JSON, o devuelve `retry: false`, la denegación se mantiene y el modelo recibe el mensaje de rechazo original.2425Cuando `retry` es `true`, Claude Code agrega un mensaje a la conversación diciéndole al modelo que puede reintentar la llamada de herramienta. Claude Code no revierte la denegación en sí. Si su hook no devuelve JSON, o devuelve `retry: false`, la denegación se mantiene y el modelo recibe el mensaje de rechazo original.

2426 

2427Claude Code ignora `retry: true` cuando el clasificador produjo [ningún veredicto sobre la acción](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action): su respuesta no se analizó, o una verificación de seguridad separada del modo automático rechazó la propia solicitud del clasificador. Para esas denegaciones, Claude Code ya le dice al modelo en el mensaje de rechazo si reintentar más tarde o continuar.

2046 2428 

2047<h3 id="notification">2429<h3 id="notification">

2048 Notification2430 Notification


2050 2432 

2051Se ejecuta cuando Claude Code envía notificaciones. Coincide en el tipo de notificación. Omita el matcher para ejecutar hooks para todos los tipos de notificación.2433Se ejecuta cuando Claude Code envía notificaciones. Coincide en el tipo de notificación. Omita el matcher para ejecutar hooks para todos los tipos de notificación.

2052 2434 

2053| Matcher | Cuándo se activa |2435Recibe estos eventos de hook incluso con notificaciones de escritorio desactivadas: la configuración `preferredNotifChannel`, incluida `notifications_disabled`, cambia solo cómo se le alerta, no si su hook se ejecuta.

2054| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- |2436 

2055| `permission_prompt` | Claude necesita que apruebe un uso de herramienta |2437| Matcher | Cuándo se dispara |

2056| `idle_prompt` | Claude está hecho y esperando su siguiente prompt |2438| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2439| `permission_prompt` | Claude necesita su permiso para usar una herramienta o una [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en sandbox, y el aviso ha esperado aproximadamente seis segundos |

2440| `idle_prompt` | Claude terminó de responder hace aproximadamente 60 segundos y no ha escrito desde entonces |

2057| `auth_success` | La autenticación se completa |2441| `auth_success` | La autenticación se completa |

2058| `elicitation_dialog` | Un servidor MCP abre un formulario de elicitación |2442| `elicitation_dialog` | Un servidor MCP abre un formulario de elicitación y no ha escrito durante aproximadamente seis segundos |

2059| `elicitation_complete` | Un formulario de elicitación MCP se envía o se descarta |2443| `elicitation_url_dialog` | Un servidor MCP le pide que abra una URL de navegador y no ha escrito durante aproximadamente seis segundos |

2060| `elicitation_response` | Una respuesta de elicitación MCP se envía de vuelta al servidor |2444| `elicitation_complete` | Un servidor MCP reporta que una [elicitación de modo URL](#elicitation-input) está completa |

2061| `agent_needs_input` | Una sesión en segundo plano comienza a esperar su entrada. Se activa solo mientras [agent view](/docs/es/agent-view) está abierto en una terminal |2445| `elicitation_response` | Se envía una respuesta de elicitación de MCP de vuelta al servidor |

2062| `agent_completed` | Una sesión en segundo plano termina o falla. Se activa solo mientras [agent view](/docs/es/agent-view) está abierto en una terminal |2446| `agent_needs_input` | Una sesión de fondo comienza a esperar su entrada mientras [vista de agente](/docs/es/agent-view) está abierta en una terminal, o la sesión actual le hace una pregunta de configuración de terminal de [compañero de equipo del agente](/docs/es/agent-teams#choose-a-display-mode) y no ha escrito durante aproximadamente seis segundos |

2447| `agent_completed` | Una sesión de fondo se completa o falla. Se dispara solo mientras [vista de agente](/docs/es/agent-view) está abierta en una terminal |

2448| `quota_auto_resume_fired` | Claude Code continúa su tarea después de que un límite de uso de claude.ai la pausó: en el reinicio, o antes cuando algo que hace en Claude Code durante la espera, como agregar créditos de uso, actualizar su plan o cambiar modelos, hace que el uso esté disponible nuevamente, con la [excepción de configuración de modelo](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) |

2449| `quota_auto_resume_stale` | Un límite de uso de claude.ai se reinició mientras su computadora dormía durante más de aproximadamente 30 minutos. Claude Code espera a que presione `Enter` en lugar de continuar. Después de un sueño más corto continúa y dispara `quota_auto_resume_fired` en su lugar |

2450| `quota_auto_resume_disabled` | Claude Code termina su espera por un límite de uso de claude.ai sin continuar su tarea: [`autoContinueAtUsageLimit`](/docs/es/settings-reference#autocontinueatusagelimit) se desactivó o el reinicio se movió más de 24 horas en el futuro durante una espera que Claude Code comenzó por su cuenta, la tarea continuada siguió golpeando el límite, o la continuación fue bloqueada antes de llegar al modelo. No se dispara cuando presiona `Esc` o `Ctrl+C`, o elige **No continuar automáticamente** |

2063 2451 

2064Los tipos `agent_needs_input` y `agent_completed` requieren Claude Code v2.1.198 o posterior.2452Los tipos `agent_needs_input` y `agent_completed` requieren Claude Code v2.1.198 o posterior.

2065 2453 

2066Use matchers separados para ejecutar diferentes controladores dependiendo del tipo de notificación. Esta configuración desencadena un script de alerta específico de permiso cuando Claude necesita aprobación de permiso y una notificación diferente cuando Claude ha estado inactivo:2454Los tipos `quota_auto_resume_fired`, `quota_auto_resume_stale`, y `quota_auto_resume_disabled` requieren Claude Code v2.1.234 o posterior.

2455 

2456En sesiones de terminal, `permission_prompt` para una solicitud de red de un comando en sandbox requiere Claude Code v2.1.246 o posterior.

2457 

2458`agent_needs_input` para una pregunta de configuración de terminal de compañero requiere Claude Code v2.1.248 o posterior.

2459 

2460<Note>

2461 Los tipos `permission_prompt`, `idle_prompt`, `elicitation_dialog`, y `elicitation_url_dialog` comparten su tiempo con notificaciones de escritorio, así que en sesiones de terminal solo los ve cuando parece que está lejos de la terminal:

2462 

2463 * Espere `permission_prompt` una vez que no haya escrito durante aproximadamente seis segundos. El temporizador comienza cuando aparece el aviso de permiso, y cada pulsación de tecla lo difiere. Para ejecutar un hook inmediatamente cuando Claude solicita permiso para usar una herramienta, use [PermissionRequest](#permissionrequest) en su lugar.

2464 * Espere `idle_prompt` aproximadamente 60 segundos después de que Claude termine de responder, y solo si no ha escrito desde entonces. Claude Code no envía `idle_prompt` mientras espera a que se reinicie un límite de uso de claude.ai. Cuando la espera termina por sí sola, uno de los tipos `quota_auto_resume_*` se dispara en su lugar.

2465 * Espere `elicitation_dialog` para un formulario de elicitación, o `elicitation_url_dialog` para una solicitud de URL de navegador, una vez que no haya escrito durante aproximadamente seis segundos. Ambos comparten la misma puerta de seis segundos que `permission_prompt`: el temporizador comienza cuando aparece el diálogo, y cada pulsación de tecla lo difiere.

2466 

2467 Una solicitud de permiso o elicitación que llega mientras otro diálogo está en pantalla mantiene la misma puerta de seis segundos, cronometrada desde cuando llega la solicitud. Su notificación puede llegar a usted mientras la solicitud aún espera detrás del diálogo abierto.

2468</Note>

2469 

2470Claude Code cronometra `permission_prompt` diferente en sesiones donde envía solicitudes de permiso a la devolución de llamada [`canUseTool`](/docs/es/agent-sdk/user-input) de Agent SDK, que es cómo Claude Desktop y la extensión VS Code alojan Claude Code:

2471 

2472* Espere `permission_prompt` aproximadamente seis segundos después de que Claude solicita permiso. Claude Code no lo difiere mientras escribe.

2473* Si usted o un hook [PermissionRequest](#permissionrequest) responden antes, Claude Code no ejecuta `permission_prompt`.

2474* Establezca [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/es/env-vars) en `1` para desactivar `permission_prompt` en estas sesiones.

2475 

2476Antes de v2.1.233, `permission_prompt` no se disparaba en estas sesiones.

2477 

2478Use matchers separados para ejecutar diferentes manejadores dependiendo del tipo de notificación. Esta configuración dispara un script de alerta específico de permiso cuando Claude necesita aprobación de permiso y una notificación diferente cuando Claude ha estado inactivo:

2067 2479 

2068```json theme={null}2480```json theme={null}

2069{2481{


2096 Entrada de Notification2508 Entrada de Notification

2097</h4>2509</h4>

2098 2510 

2099Además de los [campos de entrada comunes](#common-input-fields), los hooks Notification reciben `message` con el texto de notificación, un `title` opcional y `notification_type` que indica qué tipo se activó.2511Además de los [campos de entrada comunes](#common-input-fields), los hooks Notification reciben `message` con el texto de notificación, un `title` opcional, y `notification_type` que indica qué tipo se disparó.

2100 2512 

2101```json theme={null}2513```json theme={null}

2102{2514{


2110}2522}

2111```2523```

2112 2524 

2113Los hooks Notification no pueden bloquear o modificar notificaciones. Están destinados a efectos secundarios como reenviar la notificación a un servicio externo. Los [campos de salida JSON](#json-output) comunes como `systemMessage` se aplican.2525Los hooks Notification no pueden bloquear o modificar notificaciones. Claude Code descarta sus campos `systemMessage` y `continue` pero aún emite [`terminalSequence`](#emit-terminal-notifications), en el que se basa el ejemplo de notificación de escritorio. Los hooks Notification están destinados a efectos secundarios como reenviar la notificación a un servicio externo.

2114 2526 

2115<h3 id="subagentstart">2527<h3 id="subagentstart">

2116 SubagentStart2528 SubagentStart

2117</h3>2529</h3>

2118 2530 

2119Se ejecuta cuando se genera un subagente de Claude Code a través de la herramienta Agent. Admite matchers para filtrar por nombre de tipo de agente. Para agentes integrados, este es el nombre del agente como `general-purpose`, `Explore` o `Plan`. Para [subagentes personalizados](/docs/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo.2531Se ejecuta cuando Claude genera un subagente con la herramienta Agent, cuando Claude [reanuda un subagente](/docs/es/sub-agents#resume-subagents), y cada vez que un compañero de [equipo de agente](/docs/es/agent-teams) en proceso maneja un nuevo mensaje. Admite matchers para filtrar por nombre de tipo de agente. Para agentes integrados, este es el nombre del agente como `general-purpose`, `Explore`, o `Plan`. Para [subagentes personalizados](/docs/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo.

2120 2532 

2121Para subagentes enviados por un [plugin](/docs/es/plugins), el tipo de agente es el identificador con alcance de plugin como `my-plugin:reviewer`, no el nombre del frontmatter desnudo. El colon coloca un nombre con alcance de plugin en la ruta de expresión regular, así que ancle el matcher con `^` y `$` para una coincidencia exacta: `^my-plugin:reviewer$`.2533Para subagentes enviados por un [plugin](/docs/es/plugins), el tipo de agente es el identificador con alcance de plugin como `my-plugin:reviewer`, no el nombre de frontmatter desnudo. Los dos puntos colocan un nombre con alcance de plugin en la ruta de expresión regular, así que ancle el matcher con `^` y `$` para una coincidencia exacta: `^my-plugin:reviewer$`.

2122 2534 

2123<h4 id="subagentstart-input">2535<h4 id="subagentstart-input">

2124 Entrada de SubagentStart2536 Entrada de SubagentStart


2137}2549}

2138```2550```

2139 2551 

2140Los hooks SubagentStart no pueden bloquear la creación de subagentes, pero pueden inyectar contexto en el subagente. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver:2552Los hooks SubagentStart no pueden bloquear la creación del subagente, pero pueden inyectar contexto en el subagente. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver:

2141 2553 

2142| Campo | Descripción |2554| Campo | Descripción |

2143| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2555| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |


2152}2564}

2153```2565```

2154 2566 

2567Cuando el hook se ejecuta nuevamente para el mismo subagente, Claude Code inyecta el contexto devuelto solo cuando el contexto del subagente no contiene ya la copia de una ejecución anterior. La copia inyectada al inicio permanece en su lugar, dejando el [caché de prompt](/docs/es/prompt-caching#subagents-and-the-cache) del subagente intacto. Después de que la [compactación automática](/docs/es/sub-agents#auto-compaction) descarta esa copia, Claude Code inyecta el contexto de la siguiente ejecución nuevamente.

2568 

2155<h3 id="subagentstop">2569<h3 id="subagentstop">

2156 SubagentStop2570 SubagentStop

2157</h3>2571</h3>


2162 Entrada de SubagentStop2576 Entrada de SubagentStop

2163</h4>2577</h4>

2164 2578 

2165Además de los [campos de entrada comunes](#common-input-fields), los hooks SubagentStop reciben `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` y `last_assistant_message`. El campo `agent_type` es el valor usado para filtrado de matcher. El `transcript_path` es la transcripción de la sesión principal, mientras que `agent_transcript_path` es la propia transcripción del subagente almacenada en una carpeta `subagents/` anidada. El campo `last_assistant_message` contiene el contenido de texto de la respuesta final del subagente, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción.2579Además de los [campos de entrada comunes](#common-input-fields), los hooks SubagentStop reciben `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, y `last_assistant_message`. El campo `agent_type` es el valor utilizado para filtrado de matcher. El `transcript_path` es la transcripción de la sesión principal, mientras que `agent_transcript_path` es la propia transcripción del subagente almacenada en una carpeta `subagents/` anidada. El campo `last_assistant_message` contiene el contenido de texto de la respuesta final del subagente, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción.

2580 

2581En Claude Code v2.1.271 o posterior, un subagente que se ejecuta con la herramienta [`SubagentHandback`](/docs/es/tools-reference) entrega su informe a través de esa herramienta antes de que se detenga. El campo `last_assistant_message` luego contiene el texto de cierre del subagente, si lo hay, que no es el informe entregado. El informe es la entrada `message` de esa llamada, que un hook `PreToolUse` o `PostToolUse` que coincida en `SubagentHandback` recibe como `tool_input.message`.

2166 2582 

2167Los hooks SubagentStop también reciben los arrays `background_tasks` y `session_crons` descritos bajo [Stop input](#stop-input), disponibles en Claude Code v2.1.145 o posterior. Ambos arrays están limitados a la sesión padre, no al subagente.2583Los hooks SubagentStop también reciben las matrices `background_tasks` y `session_crons` descritas en [Entrada de Stop](#stop-input). Ambas matrices tienen alcance a la sesión padre, no al subagente.

2168 2584 

2169```json theme={null}2585```json theme={null}

2170{2586{


2183}2599}

2184```2600```

2185 2601 

2186Los hooks SubagentStop usan el mismo formato de control de decisión que los [hooks Stop](#stop-decision-control), incluyendo `hookSpecificOutput.additionalContext` con `hookEventName` establecido en `"SubagentStop"`, para retroalimentación sin error que mantiene el subagente en ejecución. Devolver `decision: "block"` con una `reason` mantiene el subagente en ejecución y entrega `reason` al subagente como su siguiente instrucción. Para inyectar contexto en la sesión padre después de que un subagente regresa, use un hook [`PostToolUse`](#posttooluse) en la herramienta `Agent` en su lugar.2602Los hooks SubagentStop usan el mismo formato de control de decisión que [hooks Stop](#stop-decision-control), incluido `hookSpecificOutput.additionalContext` con `hookEventName` establecido en `"SubagentStop"`, para retroalimentación sin error que mantiene el subagente ejecutándose. Devolver `decision: "block"` con un `reason` mantiene el subagente ejecutándose y entrega `reason` al subagente como su siguiente instrucción. Un hook que bloquea saliendo con 2 entrega su mensaje stderr de la misma manera. Para inyectar contexto en la sesión padre después de que un subagente devuelve, use un hook [`PostToolUse`](#posttooluse) en la herramienta `Agent` en su lugar.

2187 2603 

2188<h3 id="taskcreated">2604<h3 id="taskcreated">

2189 TaskCreated2605 TaskCreated

2190</h3>2606</h3>

2191 2607 

2192Se ejecuta cuando se está creando una tarea a través de la herramienta `TaskCreate`. Use esto para aplicar convenciones de nomenclatura, requerir descripciones de tareas o evitar que se creen ciertas tareas.2608Se ejecuta cuando se está creando una tarea a través de la herramienta `TaskCreate`. Úselo para hacer cumplir convenciones de nomenclatura, requerir descripciones de tareas o evitar que se creen ciertas tareas. En una [sesión sin las herramientas Task](/docs/es/tools-reference#task-tool-availability), este evento no se dispara.

2193 2609 

2194Cuando un hook `TaskCreated` sale con código 2, la tarea no se crea y el mensaje de stderr se devuelve al modelo como retroalimentación. Para detener al compañero completamente en lugar de re-ejecutarlo, devuelva JSON con `{"continue": false, "stopReason": "..."}`. Los hooks TaskCreated no admiten matchers y se activan en cada ocurrencia.2610Los hooks TaskCreated no admiten matchers y se disparan en cada ocurrencia.

2195 2611 

2196<h4 id="taskcreated-input">2612<h4 id="taskcreated-input">

2197 Entrada de TaskCreated2613 Entrada de TaskCreated

2198</h4>2614</h4>

2199 2615 

2200Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCreated reciben `task_id`, `task_subject` y opcionalmente `task_description`, `teammate_name` y `team_name`.2616Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCreated reciben `task_id`, `task_subject`, y opcionalmente `task_description`, `teammate_name`, y `team_name`.

2201 2617 

2202```json theme={null}2618```json theme={null}

2203{2619{

2204 "session_id": "abc123",2620 "session_id": "abc123",

2205 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",2621 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2206 "cwd": "/Users/...",2622 "cwd": "/Users/...",

2207 "permission_mode": "default",

2208 "hook_event_name": "TaskCreated",2623 "hook_event_name": "TaskCreated",

2209 "task_id": "task-001",2624 "task_id": "task-001",

2210 "task_subject": "Implement user authentication",2625 "task_subject": "Implement user authentication",


2215```2630```

2216 2631 

2217| Campo | Descripción |2632| Campo | Descripción |

2218| :----------------- | :-------------------------------------------------------------------------- |2633| :----------------- | :--------------------------------------------------------------------------------- |

2219| `task_id` | Identificador de la tarea que se está creando |2634| `task_id` | Identificador de la tarea que se está creando |

2220| `task_subject` | Título de la tarea |2635| `task_subject` | Título de la tarea |

2221| `task_description` | Descripción detallada de la tarea. Puede estar ausente |2636| `task_description` | Descripción detallada de la tarea. Puede estar ausente |

2222| `teammate_name` | Nombre del compañero que crea la tarea. Puede estar ausente |2637| `teammate_name` | Nombre del compañero que está creando la tarea. Puede estar ausente |

2223| `team_name` | Nombre del equipo derivado de la sesión; se eliminará en una versión futura |2638| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |

2224 2639 

2225<h4 id="taskcreated-decision-control">2640<h4 id="taskcreated-decision-control">

2226 Control de decisión de TaskCreated2641 Control de decisión de TaskCreated

2227</h4>2642</h4>

2228 2643 

2229Los hooks TaskCreated admiten dos formas de controlar la creación de tareas:2644Un hook TaskCreated puede bloquear la creación de dos formas. De cualquier manera, Claude Code elimina la tarea y devuelve su mensaje a Claude como el error de la herramienta. Claude Code ignora `continue: false` de este evento y Claude continúa trabajando.

2230 2645 

2231* **Código de salida 2**: la tarea no se crea y el mensaje de stderr se devuelve al modelo como retroalimentación.2646* **Código de salida 2**: Claude Code devuelve el texto stderr como el mensaje.

2232* **JSON `{"continue": false, "stopReason": "..."}`**: detiene al compañero completamente, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario.2647* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code devuelve `reason` como el mensaje.

2233 2648 

2234Este ejemplo bloquea tareas cujos asuntos no siguen el formato requerido:2649Este ejemplo bloquea tareas cuyos asuntos no siguen el formato requerido:

2235 2650 

2236```bash theme={null}2651```bash theme={null}

2237#!/bin/bash2652#!/bin/bash


2250 TaskCompleted2665 TaskCompleted

2251</h3>2666</h3>

2252 2667 

2253Se ejecuta cuando una tarea está siendo marcada como completada. Esto se activa en dos situaciones: cuando cualquier agente marca explícitamente una tarea como completada a través de la herramienta TaskUpdate, o cuando un compañero de [equipo de agentes](/docs/es/agent-teams) termina su turno con tareas en progreso. Use esto para aplicar criterios de finalización como pasar pruebas o verificaciones de lint antes de que una tarea pueda cerrarse.2668Se ejecuta cuando se está marcando una tarea como completada. Esto se dispara en dos situaciones: cuando cualquier agente marca explícitamente una tarea como completada a través de la herramienta TaskUpdate, o cuando un compañero de [equipo de agente](/docs/es/agent-teams) termina su turno con tareas en progreso. Úselo para hacer cumplir criterios de finalización como pasar pruebas o verificaciones de lint antes de que una tarea pueda cerrarse.

2254 2669 

2255Cuando un hook `TaskCompleted` sale con código 2, la tarea no se marca como completada y el mensaje de stderr se devuelve al modelo como retroalimentación. Para detener al compañero completamente en lugar de re-ejecutarlo, devuelva JSON con `{"continue": false, "stopReason": "..."}`. Los hooks TaskCompleted no admiten matchers y se activan en cada ocurrencia.2670Los hooks TaskCompleted no admiten matchers y se disparan en cada ocurrencia.

2256 2671 

2257<h4 id="taskcompleted-input">2672<h4 id="taskcompleted-input">

2258 Entrada de TaskCompleted2673 Entrada de TaskCompleted

2259</h4>2674</h4>

2260 2675 

2261Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCompleted reciben `task_id`, `task_subject` y opcionalmente `task_description`, `teammate_name` y `team_name`.2676Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCompleted reciben `task_id`, `task_subject`, y opcionalmente `task_description`, `teammate_name`, y `team_name`.

2262 2677 

2263```json theme={null}2678```json theme={null}

2264{2679{


2276```2691```

2277 2692 

2278| Campo | Descripción |2693| Campo | Descripción |

2279| :----------------- | :-------------------------------------------------------------------------- |2694| :----------------- | :--------------------------------------------------------------------------------- |

2280| `task_id` | Identificador de la tarea que se está completando |2695| `task_id` | Identificador de la tarea que se está completando |

2281| `task_subject` | Título de la tarea |2696| `task_subject` | Título de la tarea |

2282| `task_description` | Descripción detallada de la tarea. Puede estar ausente |2697| `task_description` | Descripción detallada de la tarea. Puede estar ausente |

2283| `teammate_name` | Nombre del compañero que completa la tarea. Puede estar ausente |2698| `teammate_name` | Nombre del compañero que está completando la tarea. Puede estar ausente |

2284| `team_name` | Nombre del equipo derivado de la sesión; se eliminará en una versión futura |2699| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |

2285 2700 

2286<h4 id="taskcompleted-decision-control">2701<h4 id="taskcompleted-decision-control">

2287 Control de decisión de TaskCompleted2702 Control de decisión de TaskCompleted


2289 2704 

2290Los hooks TaskCompleted admiten dos formas de controlar la finalización de tareas:2705Los hooks TaskCompleted admiten dos formas de controlar la finalización de tareas:

2291 2706 

2292* **Código de salida 2**: la tarea no se marca como completada y el mensaje de stderr se devuelve al modelo como retroalimentación.2707* **Código de salida 2**: la tarea no se marca como completada y el mensaje stderr se devuelve al modelo como retroalimentación.

2293* **JSON `{"continue": false, "stopReason": "..."}`**: detiene al compañero completamente, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario.2708* **JSON `{"continue": false, "stopReason": "..."}`**: cuando un compañero que termina su turno disparó el evento, detiene completamente al compañero, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario. Cuando la herramienta `TaskUpdate` disparó el evento, Claude Code ignora `continue: false`; el código de salida 2 aún bloquea la finalización.

2294 2709 

2295Este ejemplo ejecuta pruebas y bloquea la finalización de tareas si fallan:2710Este ejemplo ejecuta pruebas y bloquea la finalización de tareas si fallan:

2296 2711 


2299INPUT=$(cat)2714INPUT=$(cat)

2300TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')2715TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

2301 2716 

2302# Ejecute el conjunto de pruebas2717# Run the test suite

2303if ! npm test 2>&1; then2718if ! npm test 2>&1; then

2304 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&22719 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

2305 exit 22720 exit 2


2312 Stop2727 Stop

2313</h3>2728</h3>

2314 2729 

2315Se ejecuta cuando el agente principal de Claude Code ha terminado de responder. No se ejecuta si la detención ocurrió debido a una interrupción del usuario. Los errores de API activan [StopFailure](#stopfailure) en su lugar.2730Se ejecuta cuando el agente principal de Claude Code ha terminado de responder. No se ejecuta si la detención ocurrió debido a una interrupción del usuario. Los errores de API disparan [StopFailure](#stopfailure) en su lugar.

2316 2731 

2317<Tip>2732<Tip>

2318 El comando [`/goal`](/docs/es/goal) es un atajo integrado para un hook Stop basado en prompt con alcance de sesión. Úselo cuando desee que Claude siga trabajando hasta que se cumpla una condición sin escribir configuración de hook.2733 El comando [`/goal`](/docs/es/goal) es un atajo integrado para un hook Stop basado en prompt con alcance de sesión. Úselo cuando quiera que Claude continúe trabajando hacia una condición sin escribir configuración de hook.

2319</Tip>2734</Tip>

2320 2735 

2321<h4 id="stop-input">2736<h4 id="stop-input">

2322 Entrada de Stop2737 Entrada de Stop

2323</h4>2738</h4>

2324 2739 

2325Además de los [campos de entrada comunes](#common-input-fields), los hooks Stop reciben `stop_hook_active`, `last_assistant_message`, `background_tasks` y `session_crons`. El campo `stop_hook_active` es `true` cuando Claude Code ya está continuando como resultado de un hook de parada. Verifique este valor o procese la transcripción para evitar bloquear en una condición que nunca se resolverá. Claude Code anula el hook y termina el turno después de 8 bloqueos consecutivos.2740Además de los [campos de entrada comunes](#common-input-fields), los hooks Stop reciben `stop_hook_active`, `last_assistant_message`, `background_tasks`, y `session_crons`. El campo `stop_hook_active` es `true` cuando Claude Code ya está continuando como resultado de un hook stop. Verifique este valor o procese la transcripción para evitar bloquear en una condición que nunca se resolverá. Claude Code anula el hook y termina el turno después de 8 bloqueos consecutivos.

2326 2741 

2327El campo `last_assistant_message` contiene el contenido de texto de la respuesta final de Claude, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción.2742El campo `last_assistant_message` contiene el contenido de texto de la respuesta final de Claude, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción. Para hooks que actúan en el turno recién completado, como hooks de lectura en voz alta o notificación, use este campo en lugar de leer `transcript_path`: el archivo de transcripción no se garantiza que incluya el mensaje final en el tiempo de Stop en todas las versiones.

2328 2743 

2329Los arrays `background_tasks` y `session_crons`, disponibles en Claude Code v2.1.145 o posterior, permiten que los hooks distingan "la sesión está hecha" de "la sesión está en pausa esperando que el trabajo en segundo plano la despierte". Ambos arrays están presentes cuando el registro de tareas es accesible y están vacíos cuando nada está en vuelo o programado.2744Las matrices `background_tasks` y `session_crons` permiten que los hooks distingan "sesión hecha" de "sesión pausada esperando que el trabajo de fondo la despierte". Ambas matrices están presentes cuando el registro de tareas es accesible y están vacías cuando nada está en vuelo o programado.

2330 2745 

2331Cada entrada en `background_tasks` describe una tarea en vuelo y usa estos campos:2746Cada entrada en `background_tasks` describe una tarea en vuelo y usa estos campos:

2332 2747 

2333| Campo | Descripción |2748| Campo | Descripción |

2334| :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2749| :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2335| `id` | Identificador de tarea |2750| `id` | Identificador de tarea |

2336| `type` | Etiqueta de tipo de tarea amigable como `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` o `MCP task`. Cada etiqueta identifica qué característica de Claude Code creó la tarea. Vuelve al discriminante sin procesar para tipos no reconocidos |2751| `type` | Etiqueta de tipo de tarea amigable como `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, o `MCP task`. Cada etiqueta identifica qué característica de Claude Code creó la tarea. Vuelve al discriminante sin procesar para tipos no reconocidos |

2337| `status` | Estado actual de la tarea |2752| `status` | Estado actual de la tarea |

2338| `description` | Descripción de texto libre, limitada a 1000 caracteres con un marcador `… [+N chars]` en cadena cuando se recorta |2753| `description` | Descripción de texto libre, limitada a 1000 caracteres con un marcador `… [+N chars]` en cadena cuando se recorta |

2339| `command` | Línea de comando de shell, limitada a 1000 caracteres. Presente solo para tareas `shell` |2754| `command` | Línea de comando de shell, limitada a 1000 caracteres. Presente solo para tareas `shell` |


2342| `tool` | Nombre de herramienta MCP. Presente solo para tareas `monitor` y `MCP task` |2757| `tool` | Nombre de herramienta MCP. Presente solo para tareas `monitor` y `MCP task` |

2343| `name` | Nombre del flujo de trabajo. Presente solo para tareas `workflow` |2758| `name` | Nombre del flujo de trabajo. Presente solo para tareas `workflow` |

2344 2759 

2345Cada entrada en `session_crons` describe un despertar programado con alcance de sesión, originado en `CronCreate`, `ScheduleWakeup` y `/loop`:2760Cada entrada en `session_crons` describe un despertar programado con alcance de sesión, originado de `CronCreate`, `ScheduleWakeup`, y `/loop`:

2346 2761 

2347| Campo | Descripción |2762| Campo | Descripción |

2348| :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |2763| :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |


2394| `reason` | Requerido cuando `decision` es `"block"`. Le dice a Claude por qué debe continuar |2809| `reason` | Requerido cuando `decision` es `"block"`. Le dice a Claude por qué debe continuar |

2395| `hookSpecificOutput.additionalContext` | Retroalimentación sin error para Claude. La conversación continúa para que Claude pueda actuar sobre ella, pero a diferencia de `decision: "block"` se muestra en la transcripción como retroalimentación de hook en lugar de un error de hook |2810| `hookSpecificOutput.additionalContext` | Retroalimentación sin error para Claude. La conversación continúa para que Claude pueda actuar sobre ella, pero a diferencia de `decision: "block"` se muestra en la transcripción como retroalimentación de hook en lugar de un error de hook |

2396 2811 

2812Un hook que bloquea saliendo con 2 se enruta de la misma manera que `reason`: Claude recibe el mensaje stderr como la explicación de por qué debe continuar.

2813 

2397```json theme={null}2814```json theme={null}

2398{2815{

2399 "decision": "block",2816 "decision": "block",


2401}2818}

2402```2819```

2403 2820 

2404Use `additionalContext` cuando el hook está funcionando como se diseñó y dando orientación a Claude, como "ejecute el conjunto de pruebas antes de terminar". Mantiene la conversación a través de las mismas protecciones de bucle que `decision: "block"`, es decir, la entrada `stop_hook_active` y el límite de 8 continuaciones consecutivas, pero la transcripción la etiqueta como `Stop hook feedback` y no se muestra ninguna notificación de error de hook:2821Use `additionalContext` cuando el hook está funcionando como se diseñó y dando orientación a Claude, como "ejecutar el conjunto de pruebas antes de terminar". Mantiene la conversación a través de las mismas protecciones de bucle que `decision: "block"`, es decir, la entrada `stop_hook_active` y el límite de 8 continuaciones consecutivas, pero la transcripción la etiqueta como `Stop hook feedback` y no se muestra ninguna notificación de error de hook:

2405 2822 

2406```json theme={null}2823```json theme={null}

2407{2824{


2416 StopFailure2833 StopFailure

2417</h3>2834</h3>

2418 2835 

2419Se ejecuta en lugar de [Stop](#stop) cuando el turno termina debido a un error de API. La salida y el código de salida se ignoran. Use esto para registrar fallos, enviar alertas o tomar acciones de recuperación cuando Claude no puede completar una respuesta debido a límites de velocidad, problemas de autenticación u otros errores de API.2836Se ejecuta en lugar de [Stop](#stop) cuando el turno termina debido a un error de API. Claude Code ignora la salida y el código de salida del hook, aparte de [`terminalSequence`](#emit-terminal-notifications). Úselo para registrar fallas, enviar alertas o tomar acciones de recuperación cuando Claude no puede completar una respuesta debido a límites de velocidad, problemas de autenticación u otros errores de API.

2420 2837 

2421<h4 id="stopfailure-input">2838<h4 id="stopfailure-input">

2422 Entrada de StopFailure2839 Entrada de StopFailure

2423</h4>2840</h4>

2424 2841 

2425Además de los [campos de entrada comunes](#common-input-fields), los hooks StopFailure reciben `error`, `error_details` opcional y `last_assistant_message` opcional. El campo `error` identifica el tipo de error y se usa para filtrado de matcher.2842Además de los [campos de entrada comunes](#common-input-fields), los hooks StopFailure reciben `error`, `error_details` opcional, y `last_assistant_message` opcional. El campo `error` identifica el tipo de error y se utiliza para filtrado de matcher.

2426 2843 

2427| Campo | Descripción |2844| Campo | Descripción |

2428| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2845| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2429| `error` | Tipo de error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens` u `unknown` |2846| `error` | Tipo de error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, o `unknown` |

2430| `error_details` | Detalles adicionales sobre el error, cuando estén disponibles |2847| `error_details` | Detalles adicionales sobre el error, cuando esté disponible |

2431| `last_assistant_message` | El texto de error renderizado mostrado en la conversación. A diferencia de `Stop` y `SubagentStop`, donde este campo contiene la salida conversacional de Claude, para `StopFailure` contiene la cadena de error de API en sí, como `"API Error: Rate limit reached"` |2848| `last_assistant_message` | El texto de error renderizado mostrado en la conversación. A diferencia de `Stop` y `SubagentStop`, donde este campo contiene la salida conversacional de Claude, para `StopFailure` contiene la cadena de error de API en sí, como `"API Error: Rate limit reached"` |

2432 2849 

2433```json theme={null}2850```json theme={null}


2448 TeammateIdle2865 TeammateIdle

2449</h3>2866</h3>

2450 2867 

2451Se ejecuta cuando un compañero de [equipo de agentes](/docs/es/agent-teams) está a punto de quedarse inactivo después de terminar su turno. Use esto para aplicar puertas de calidad antes de que un compañero deje de trabajar, como requerir que pasen verificaciones de lint o verificar que existan archivos de salida.2868Se ejecuta cuando un compañero de [equipo de agente](/docs/es/agent-teams) está a punto de quedarse inactivo después de terminar su turno. Úselo para hacer cumplir puertas de calidad antes de que un compañero deje de trabajar, como requerir que pasen verificaciones de lint o verificar que existan archivos de salida.

2452 2869 

2453Cuando un hook `TeammateIdle` sale con código 2, el compañero recibe el mensaje de stderr como retroalimentación y continúa trabajando en lugar de quedarse inactivo. Para detener al compañero completamente en lugar de re-ejecutarlo, devuelva JSON con `{"continue": false, "stopReason": "..."}`. Los hooks TeammateIdle no admiten matchers y se activan en cada ocurrencia.2870Los hooks TeammateIdle no admiten matchers y se disparan en cada ocurrencia.

2454 2871 

2455<h4 id="teammateidle-input">2872<h4 id="teammateidle-input">

2456 Entrada de TeammateIdle2873 Entrada de TeammateIdle


2471```2888```

2472 2889 

2473| Campo | Descripción |2890| Campo | Descripción |

2474| :-------------- | :-------------------------------------------------------------------------- |2891| :-------------- | :--------------------------------------------------------------------------------- |

2475| `teammate_name` | Nombre del compañero que está a punto de quedarse inactivo |2892| `teammate_name` | Nombre del compañero que está a punto de quedarse inactivo |

2476| `team_name` | Nombre del equipo derivado de la sesión; se eliminará en una versión futura |2893| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |

2477 2894 

2478<h4 id="teammateidle-decision-control">2895<h4 id="teammateidle-decision-control">

2479 Control de decisión de TeammateIdle2896 Control de decisión de TeammateIdle


2481 2898 

2482Los hooks TeammateIdle admiten dos formas de controlar el comportamiento del compañero:2899Los hooks TeammateIdle admiten dos formas de controlar el comportamiento del compañero:

2483 2900 

2484* **Código de salida 2**: el compañero recibe el mensaje de stderr como retroalimentación y continúa trabajando en lugar de quedarse inactivo.2901* **Código de salida 2**: el compañero recibe el mensaje stderr como retroalimentación y continúa trabajando en lugar de quedarse inactivo.

2485* **JSON `{"continue": false, "stopReason": "..."}`**: detiene al compañero completamente, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario.2902* **JSON `{"continue": false, "stopReason": "..."}`**: detiene completamente al compañero, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario.

2486 2903 

2487Este ejemplo verifica que exista un artefacto de compilación antes de permitir que un compañero se quede inactivo:2904Este ejemplo verifica que existe un artefacto de compilación antes de permitir que un compañero se quede inactivo:

2488 2905 

2489```bash theme={null}2906```bash theme={null}

2490#!/bin/bash2907#!/bin/bash


2501 ConfigChange2918 ConfigChange

2502</h3>2919</h3>

2503 2920 

2504Se ejecuta cuando un archivo de configuración cambia durante una sesión. Use esto para auditar cambios de configuración, aplicar políticas de seguridad o bloquear modificaciones no autorizadas a archivos de configuración.2921Se ejecuta cuando un archivo de configuración cambia durante una sesión. Úselo para auditar cambios de configuración, hacer cumplir políticas de seguridad o bloquear modificaciones no autorizadas en archivos de configuración.

2505 2922 

2506Los hooks ConfigChange se activan para cambios en archivos de configuración, configuración de política administrada y archivos de skill. El campo `source` en la entrada le dice qué tipo de configuración cambió, y el campo `file_path` opcional proporciona la ruta al archivo cambiado.2923Claude Code ejecuta hooks ConfigChange cuando un archivo de configuración, un archivo de política administrada o un archivo de skill cambia. Para política administrada, solo los ejecuta cuando `managed-settings.json` o un archivo en `managed-settings.d/` cambia. Aplica [configuración administrada por servidor](/docs/es/server-managed-settings) y cambios en preferencias administradas de macOS o política de registro de Windows sin ejecutarlos. En WSL con [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings), también aplica un archivo de configuración administrada de Windows modificado en su sondeo de política sin ejecutarlos.

2507 2924 

2508El matcher filtra en la fuente de configuración:2925El matcher filtra en la fuente de configuración:

2509 2926 

2510| Matcher | Cuándo se activa |2927| Matcher | Cuándo se dispara |

2511| :----------------- | :------------------------------------------------ |2928| :----------------- | :------------------------------------------------------------------- |

2512| `user_settings` | `~/.claude/settings.json` cambia |2929| `user_settings` | `~/.claude/settings.json` cambia |

2513| `project_settings` | `.claude/settings.json` cambia |2930| `project_settings` | `.claude/settings.json` cambia |

2514| `local_settings` | `.claude/settings.local.json` cambia |2931| `local_settings` | `.claude/settings.local.json` cambia |

2515| `policy_settings` | Cambios de configuración de política administrada |2932| `policy_settings` | `managed-settings.json` o un archivo en `managed-settings.d/` cambia |

2516| `skills` | Un archivo de skill en `.claude/skills/` cambia |2933| `skills` | Un archivo de skill en `.claude/skills/` cambia |

2517 2934 

2518Este ejemplo registra todos los cambios de configuración para auditoría de seguridad:2935Este ejemplo registra todos los cambios de configuración para auditoría de seguridad:


2556 Control de decisión de ConfigChange2973 Control de decisión de ConfigChange

2557</h4>2974</h4>

2558 2975 

2559Los hooks ConfigChange pueden bloquear cambios de configuración para que no tengan efecto. Use código de salida 2 o un JSON `decision` para evitar el cambio. Cuando se bloquea, la nueva configuración no se aplica a la sesión en ejecución.2976Los hooks ConfigChange pueden bloquear cambios de configuración para que no surtan efecto. Use código de salida 2 o un JSON `decision` para evitar el cambio. Cuando se bloquea, la nueva configuración no se aplica a la sesión en ejecución.

2560 2977 

2561| Campo | Descripción |2978| Campo | Descripción |

2562| :--------- | :--------------------------------------------------------------------------------------- |2979| :--------- | :--------------------------------------------------------------------------------------- |

2563| `decision` | `"block"` evita que el cambio de configuración se aplique. Omita para permitir el cambio |2980| `decision` | `"block"` evita que se aplique el cambio de configuración. Omita para permitir el cambio |

2564| `reason` | Explicación mostrada al usuario cuando `decision` es `"block"` |2981| `reason` | Aceptado pero nunca mostrado |

2565 2982 

2566```json theme={null}2983```json theme={null}

2567{2984{


2570}2987}

2571```2988```

2572 2989 

2573Los cambios de `policy_settings` no pueden bloquearse. Los hooks aún se activan para fuentes de `policy_settings`, por lo que puede usarlos para registro de auditoría, pero cualquier decisión de bloqueo se ignora. Esto asegura que la configuración administrada por empresa siempre tenga efecto.2990Los cambios `policy_settings` no se pueden bloquear. Los hooks aún se disparan para fuentes `policy_settings` cuando un archivo de configuración administrada en la máquina cambia, para que pueda usarlos para registrar esas ediciones, pero cualquier decisión de bloqueo se ignora. Esto asegura que la configuración administrada por empresa siempre surta efecto. Claude Code no ejecuta hooks `ConfigChange` cuando llegan o se actualizan [configuración administrada por servidor](/docs/es/server-managed-settings).

2991 

2992Claude Code actúa sobre la decisión de bloqueo de la salida JSON de un hook ConfigChange y descarta `systemMessage` y `continue`. Un cambio bloqueado no muestra ningún mensaje a usted o a Claude, ya sea que bloquee con `reason` o con stderr en salida 2. Claude Code solo escribe una línea en el registro de depuración.

2574 2993 

2575<h3 id="cwdchanged">2994<h3 id="cwdchanged">

2576 CwdChanged2995 CwdChanged

2577</h3>2996</h3>

2578 2997 

2579Se ejecuta cuando el directorio de trabajo cambia durante una sesión, por ejemplo cuando Claude ejecuta un comando `cd`. Use esto para reaccionar a cambios de directorio: recargar variables de entorno, activar cadenas de herramientas específicas del proyecto o ejecutar scripts de configuración automáticamente. Se empareja con [FileChanged](#filechanged) para herramientas como [direnv](https://direnv.net/) que administran el entorno por directorio.2998Se ejecuta cuando un comando de shell en la conversación principal cambia el directorio de trabajo, por ejemplo cuando Claude ejecuta un comando `cd`. Úselo para reaccionar a cambios de directorio: recargar variables de entorno, activar cadenas de herramientas específicas del proyecto o ejecutar scripts de configuración automáticamente. Se empareja con [FileChanged](#filechanged) para herramientas como [direnv](https://direnv.net/) que administran el entorno por directorio.

2580 2999 

2581Los hooks CwdChanged tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en comandos Bash posteriores para la sesión, al igual que en los [hooks SessionStart](#persist-environment-variables).3000Los hooks CwdChanged tienen acceso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Las variables escritas en ese archivo persisten en comandos Bash posteriores hasta el siguiente evento CwdChanged, cuando Claude Code las borra.

2582 3001 

2583CwdChanged no admite matchers y se activa en cada cambio de directorio.3002CwdChanged no admite matchers y se dispara en cada ocurrencia.

2584 3003 

2585<h4 id="cwdchanged-input">3004<h4 id="cwdchanged-input">

2586 Entrada de CwdChanged3005 Entrada de CwdChanged


2603 Salida de CwdChanged3022 Salida de CwdChanged

2604</h4>3023</h4>

2605 3024 

2606Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks CwdChanged pueden devolver `watchPaths` para establecer dinámicamente qué rutas de archivo [FileChanged](#filechanged) monitorea:3025Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks CwdChanged pueden devolver `watchPaths` para establecer dinámicamente qué rutas de archivo [FileChanged](#filechanged) observa:

2607 3026 

2608| Campo | Descripción |3027| Campo | Descripción |

2609| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3028| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2610| `watchPaths` | Array de rutas absolutas. Reemplaza la lista de monitoreo dinámica actual. Las rutas de su configuración de `matcher` siempre se monitorean. Devolver un array vacío borra la lista dinámica, que es típico al entrar en un nuevo directorio |3029| `watchPaths` | Matriz de rutas absolutas. Reemplaza la lista de observación dinámica actual. Las rutas de su configuración `matcher` siempre se observan. Devolver una matriz vacía borra la lista dinámica, que es típico al entrar en un nuevo directorio |

2611 3030 

2612Los hooks CwdChanged no tienen control de decisión. No pueden bloquear el cambio de directorio.3031Los hooks CwdChanged no tienen control de decisión. No pueden bloquear el cambio de directorio.

2613 3032 

3033Claude Code lee `watchPaths` y `systemMessage` de su salida JSON y descarta `continue`. En sesiones interactivas, muestra el `systemMessage` como una breve notificación de terminal. El mensaje no llega al flujo de mensajes de SDK.

3034 

3035<h3 id="directoryadded">

3036 DirectoryAdded

3037</h3>

3038 

3039Se ejecuta después de agregar un directorio de trabajo a mitad de sesión con el comando `/add-dir`, o después de que un cliente de SDK agregue uno con la solicitud de control `register_repo_root`. Úselo para preparar un repositorio recién agregado, por ejemplo instalando sus dependencias.

3040 

3041Claude Code no dispara este evento cuando:

3042 

3043* Pasa un directorio con la bandera de inicio `--add-dir`; [SessionStart](#sessionstart) cubre esos directorios

3044* Agrega un directorio en la pestaña Workspace `/permissions`

3045* Agrega un directorio que ya es un directorio de trabajo o está dentro de uno

3046 

3047Claude Code dispara DirectoryAdded después de actualizar el estado de sandbox y permiso, por lo que las herramientas en sandbox ya ven el nuevo directorio cuando se ejecuta su hook. Los comandos del hook en sí se ejecutan sin sandbox.

3048 

3049Claude Code no espera el hook: la adición se completa inmediatamente, y el hook se ejecuta en segundo plano con el tiempo de espera predeterminado de 600 segundos.

3050 

3051El matcher filtra en cómo se agregó el directorio:

3052 

3053| Matcher | Cuándo se dispara |

3054| :------------------- | :-------------------------------------------------------------------------------------- |

3055| `slash_command` | Agrega un directorio con `/add-dir` |

3056| `register_repo_root` | Un cliente de SDK agrega un directorio con la solicitud de control `register_repo_root` |

3057 

3058<h4 id="directoryadded-input">

3059 Entrada de DirectoryAdded

3060</h4>

3061 

3062Además de los [campos de entrada comunes](#common-input-fields), los hooks DirectoryAdded reciben `directory` y `source`.

3063 

3064| Campo | Descripción |

3065| :---------- | :--------------------------------------------------------------------------------------------------------------------------- |

3066| `directory` | Ruta absoluta del directorio que se agregó |

3067| `source` | Cómo se agregó el directorio, `"slash_command"` para `/add-dir` o `"register_repo_root"` para la solicitud de control de SDK |

3068 

3069```json theme={null}

3070{

3071 "session_id": "abc123",

3072 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

3073 "cwd": "/Users/my-project",

3074 "hook_event_name": "DirectoryAdded",

3075 "directory": "/Users/my-other-repo",

3076 "source": "slash_command"

3077}

3078```

3079 

3080Los hooks DirectoryAdded no tienen control de decisión. No pueden bloquear la adición, que ya se ha completado cuando se ejecuta el hook. Claude Code descarta el campo `continue` de su salida JSON y muestra el resto diferente por fuente:

3081 

3082* `slash_command`: Claude Code entrega el `systemMessage` del hook a Claude como contexto en el siguiente turno de conversación, en lugar de mostrárselo. Un recuento de hooks fallidos aparece en la transcripción. La salida de fallo completo va al registro de depuración

3083* `register_repo_root`: Claude Code escribe la salida `systemMessage` y la salida de fallo solo en el registro de depuración

3084 

2614<h3 id="filechanged">3085<h3 id="filechanged">

2615 FileChanged3086 FileChanged

2616</h3>3087</h3>

2617 3088 

2618Se ejecuta cuando un archivo monitoreado cambia en el disco. Útil para recargar variables de entorno cuando se modifican archivos de configuración del proyecto.3089Se ejecuta cuando un archivo observado cambia en el disco. Claude Code detecta cambios con un observador del sistema de archivos, no inspeccionando llamadas de herramientas, por lo que ejecuta el hook sin importar qué cambió el archivo: una llamada de herramienta `Edit` o `Write`, un script que Claude ejecuta con `Bash`, o un proceso fuera de Claude Code completamente. Un uso común es recargar variables de entorno cuando cambian archivos de configuración del proyecto.

2619 3090 

2620El `matcher` para este evento sirve dos propósitos:3091El `matcher` para este evento sirve dos propósitos:

2621 3092 

2622* **Construir la lista de vigilancia**: el valor se divide en `|` y cada segmento se registra como un nombre de archivo literal en el directorio de trabajo, por lo que `".envrc|.env"` vigila exactamente esos dos archivos. Los patrones regex no son útiles aquí: un valor como `^\.env` vigilaría un archivo literalmente nombrado `^\.env`.3093* **Construir la lista de observación**: el valor se divide en `|` y cada segmento se registra como un nombre de archivo literal en el directorio de trabajo, por lo que `".envrc|.env"` observa exactamente esos dos archivos. Los patrones regex no son útiles aquí: un valor como `^\.env` observaría un archivo literalmente nombrado `^\.env`.

2623* **Filtrar qué hooks se ejecutan**: cuando cambia un archivo vigilado, el mismo valor filtra qué grupos de hooks se ejecutan usando las [reglas de matcher](#matcher-patterns) estándar contra el basename del archivo cambiado.3094* **Filtrar qué hooks se ejecutan**: cuando un archivo observado cambia, el mismo valor filtra qué grupos de hooks se ejecutan usando las [reglas de matcher](#matcher-patterns) estándar contra el nombre base del archivo cambiado.

2624 3095 

2625Los hooks FileChanged tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en comandos Bash posteriores para la sesión, al igual que en los [hooks SessionStart](#persist-environment-variables).3096Este ejemplo normaliza los finales de línea en `data.csv` después de cualquier cambio, incluido un comando `Bash` o un script externo reescribiendo el archivo:

3097 

3098```json theme={null}

3099{

3100 "hooks": {

3101 "FileChanged": [

3102 {

3103 "matcher": "data.csv",

3104 "hooks": [

3105 {

3106 "type": "command",

3107 "command": "/path/to/normalize-line-endings.sh"

3108 }

3109 ]

3110 }

3111 ]

3112 }

3113}

3114```

3115 

3116El hook lee la ruta absoluta del archivo cambiado del campo `file_path` de la [entrada JSON](#filechanged-input) en stdin. Su guardia `grep` prueba lo mismo que `perl` elimina, un CR al final de una línea, por lo que la ejecución después de una normalización sale sin tocar el archivo. Una guardia más suelta se repite para siempre, porque `perl -i` reescribe el archivo incluso cuando no sustituye nada y Claude Code ejecuta el hook nuevamente después de cada reescritura. Guarde este script en `/path/to/normalize-line-endings.sh` y hágalo ejecutable:

3117 

3118```bash theme={null}

3119#!/bin/bash

3120FILE=$(jq -r .file_path)

3121if grep -q $'\r$' "$FILE"; then

3122 perl -pi -e 's/\r$//' "$FILE"

3123fi

3124```

3125 

3126Para confirmar que el hook funciona, pida a Claude que agregue una línea CRLF a `data.csv` con un comando `Bash`. Claude Code ejecuta el hook y el archivo termina con finales LF.

3127 

3128Para observar archivos que no puede nombrar por adelantado, devuelva [`watchPaths`](#filechanged-output) de un hook para actualizar la lista de observación dinámicamente. Claude Code comienza el observador solo cuando algo nombra un archivo para observar, por lo que inicie la lista con un grupo FileChanged cuyo matcher nombre al menos un archivo, o con un hook [SessionStart](#sessionstart-decision-control) o [CwdChanged](#cwdchanged) que devuelva `watchPaths`. El matcher aún filtra qué grupos de hooks se ejecutan cuando un archivo observado cambia, así que dé al grupo que maneja rutas dinámicas un matcher omitido, que coincide con cada archivo observado y no agrega nada a la lista de observación. Un matcher `"*"` también coincide con cada archivo, pero Claude Code lo registra en la lista de observación como un archivo literal nombrado `*`.

3129 

3130Los hooks FileChanged tienen acceso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Las variables escritas en ese archivo persisten en comandos Bash posteriores hasta el siguiente evento [CwdChanged](#cwdchanged), cuando Claude Code las borra.

2626 3131 

2627<h4 id="filechanged-input">3132<h4 id="filechanged-input">

2628 Entrada de FileChanged3133 Entrada de FileChanged


2631Además de los [campos de entrada comunes](#common-input-fields), los hooks FileChanged reciben `file_path` y `event`.3136Además de los [campos de entrada comunes](#common-input-fields), los hooks FileChanged reciben `file_path` y `event`.

2632 3137 

2633| Campo | Descripción |3138| Campo | Descripción |

2634| :---------- | :------------------------------------------------------------------------------------------------------------------------ |3139| :---------- | :------------------------------------------------------------------------------------------------------------------------- |

2635| `file_path` | Ruta absoluta al archivo que cambió |3140| `file_path` | Ruta absoluta al archivo que cambió |

2636| `event` | Qué sucedió: `"change"` para un archivo modificado, `"add"` para un archivo creado o `"unlink"` para un archivo eliminado |3141| `event` | Qué sucedió: `"change"` para un archivo modificado, `"add"` para un archivo creado, o `"unlink"` para un archivo eliminado |

2637 3142 

2638```json theme={null}3143```json theme={null}

2639{3144{


2650 Salida de FileChanged3155 Salida de FileChanged

2651</h4>3156</h4>

2652 3157 

2653Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks FileChanged pueden devolver `watchPaths` para actualizar dinámicamente qué rutas de archivo se monitorean:3158Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks FileChanged pueden devolver `watchPaths` para actualizar dinámicamente qué rutas de archivo se observan:

2654 3159 

2655| Campo | Descripción |3160| Campo | Descripción |

2656| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3161| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2657| `watchPaths` | Array de rutas absolutas. Reemplaza la lista de monitoreo dinámica actual. Las rutas de su configuración de `matcher` siempre se monitorean. Use esto cuando su script de hook descubra archivos adicionales para monitorear basados en el archivo cambiado |3162| `watchPaths` | Matriz de rutas absolutas. Reemplaza la lista de observación dinámica actual. Las rutas de su configuración `matcher` siempre se observan. Úselo cuando su script de hook descubra archivos adicionales para observar basándose en el archivo cambiado |

3163 

3164Los hooks FileChanged no tienen control de decisión. No pueden bloquear el cambio de archivo que ocurre.

2658 3165 

2659Los hooks FileChanged no tienen control de decisión. No pueden bloquear el cambio de archivo.3166Claude Code lee `watchPaths` y `systemMessage` de su salida JSON y descarta `continue`. En sesiones interactivas, muestra el `systemMessage` como una breve notificación de terminal. El mensaje no llega al flujo de mensajes de SDK.

2660 3167 

2661<h3 id="worktreecreate">3168<h3 id="worktreecreate">

2662 WorktreeCreate3169 WorktreeCreate

2663</h3>3170</h3>

2664 3171 

2665Se ejecuta cuando se está creando un worktree, ya sea desde `claude --worktree` o desde un [subagente usando `isolation: "worktree"`](/docs/es/sub-agents#choose-the-subagent-scope). Por defecto Claude Code crea la copia de trabajo aislada con `git worktree`. Configurar un hook WorktreeCreate reemplaza ese comportamiento predeterminado de git, permitiéndole usar un sistema de control de versiones diferente como SVN, Perforce o Mercurial.3172Se ejecuta cuando se está creando un worktree, ya sea desde `claude --worktree`, desde un [subagente usando `isolation: "worktree"`](/docs/es/sub-agents#choose-the-subagent-scope), o para una [sesión de fondo](/docs/es/agent-view#how-file-edits-are-isolated) que Claude Code aísla en su propio worktree. De forma predeterminada, Claude Code crea la copia de trabajo aislada con `git worktree`. Configurar un hook WorktreeCreate reemplaza ese comportamiento de git predeterminado, permitiéndole usar un sistema de control de versiones diferente como SVN, Perforce o Mercurial.

2666 3173 

2667Debido a que el hook reemplaza el comportamiento predeterminado completamente, [`.worktreeinclude`](/docs/es/worktrees#copy-gitignored-files-into-worktrees) no se procesa. Si necesita copiar archivos de configuración local como `.env` en el nuevo worktree, hágalo dentro de su script de hook.3174Debido a que el hook reemplaza el comportamiento predeterminado completamente, [`.worktreeinclude`](/docs/es/worktrees#copy-gitignored-files-into-worktrees) no se procesa. Si necesita copiar archivos de configuración local como `.env` en el nuevo worktree, hágalo dentro de su script de hook.

2668 3175 

2669El hook debe devolver la ruta al directorio de worktree creado. Claude Code usa esta ruta como el directorio de trabajo para la sesión aislada. Consulte [WorktreeCreate output](#worktreecreate-output) para saber cómo cada tipo de hook devuelve la ruta.3176El hook debe devolver la ruta al directorio del worktree creado. Claude Code usa esta ruta como el directorio de trabajo para la sesión aislada. Consulte [Salida de WorktreeCreate](#worktreecreate-output) para saber cómo cada tipo de hook devuelve la ruta.

3177 

3178Claude Code actúa sobre el éxito del hook y la ruta devuelta, y descarta `systemMessage` y `continue`.

2670 3179 

2671Este ejemplo crea una copia de trabajo SVN e imprime la ruta para que Claude Code la use. Reemplace la URL del repositorio con la suya:3180Este ejemplo crea una copia de trabajo SVN e imprime la ruta para que Claude Code la use. Reemplace la URL del repositorio con la suya:

2672 3181 


2693 Entrada de WorktreeCreate3202 Entrada de WorktreeCreate

2694</h4>3203</h4>

2695 3204 

2696Además de los [campos de entrada comunes](#common-input-fields), los hooks WorktreeCreate reciben el campo `name`. Este es un identificador slug para el nuevo worktree, especificado por el usuario o generado automáticamente, por ejemplo `bold-oak-a3f2`.3205Además de los [campos de entrada comunes](#common-input-fields), los hooks WorktreeCreate reciben el campo `name`. Este es un identificador slug para el nuevo worktree, ya sea especificado por el usuario o generado automáticamente, por ejemplo `bold-oak-a3f2`.

2697 3206 

2698```json theme={null}3207```json theme={null}

2699{3208{


2709 Salida de WorktreeCreate3218 Salida de WorktreeCreate

2710</h4>3219</h4>

2711 3220 

2712Los hooks WorktreeCreate no usan el modelo de decisión de permitir/bloquear estándar. En su lugar, el éxito o fallo del hook determina el resultado. El hook debe devolver la ruta al directorio de worktree creado:3221Los hooks WorktreeCreate no usan el modelo de decisión de permitir/bloquear estándar. En su lugar, el éxito o fallo del hook determina el resultado. El hook debe devolver la ruta al directorio del worktree creado:

3222 

3223* **Hooks de comando** (`type: "command"`): imprima la ruta como la última línea no vacía de stdout. Claude Code elimina códigos de escape ANSI antes de leer esa línea, por lo que los banners de inicio de shell impresos antes de su `echo` se ignoran. Redirija cualquier otra salida de hook a stderr.

3224* **Hooks HTTP** (`type: "http"`): devuelva `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.

2713 3225 

2714* **Hooks de comando** (`type: "command"`): imprimen la ruta como la última línea no vacía de stdout. Claude Code elimina códigos de escape ANSI antes de leer esa línea, por lo que los banners de inicio de shell impresos antes de su `echo` se ignoran. Redirija cualquier otra salida de hook a stderr.3226Si el hook falla o no produce una ruta, la creación del worktree falla con un error.

2715* **Hooks HTTP** (`type: "http"`): devuelven `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.

2716 3227 

2717Si el hook falla o no produce ruta, la creación de worktree falla con un error.3228Claude Code resuelve una ruta relativa contra el directorio en el que se ejecutó el hook, colapsando cualquier segmento `.` o `..` en él. Si la ruta resultante no es un directorio en el que Claude Code pueda entrar, la sesión imprime un error que nombra la ruta y sale con código 1.

2718 3229 

2719Claude Code resuelve una ruta relativa contra el directorio en el que se ejecutó el hook. Si la ruta resultante no es un directorio al que Claude Code pueda entrar, la sesión imprime un error nombrando la ruta y sale con código 1. Antes de v2.1.205, una ruta relativa o una ruta que no existía en el disco causaba un bloqueo de la sesión al inicio, y con `-p` se detenía durante aproximadamente 30 segundos antes de salir con código 0.3230Claude Code rechaza una ruta absoluta que contiene segmentos `.` o `..`, y cualquier ruta que pase a través de un symlink debajo de la raíz del repositorio, porque un symlink comprometido en el repositorio podría redirigir el worktree fuera de él. El error nombra el componente rechazado. Devuelva una ruta normalizada que no pase a través de un symlink dentro del repositorio. Antes de v2.1.216, la creación del worktree seguía la ruta del hook sin este cribado.

2720 3231 

2721<h3 id="worktreeremove">3232<h3 id="worktreeremove">

2722 WorktreeRemove3233 WorktreeRemove

2723</h3>3234</h3>

2724 3235 

2725Se ejecuta cuando se está eliminando un worktree, ya sea cuando sale de una sesión `--worktree` y elige eliminarlo, o cuando un subagente con `isolation: "worktree"` finaliza. Esta es la contraparte de limpieza de [WorktreeCreate](#worktreecreate).3236Se ejecuta cuando se está eliminando un worktree. Este es el homólogo de limpieza de [WorktreeCreate](#worktreecreate). El evento se dispara cuando:

3237 

3238* sale de una sesión `--worktree` y elige eliminarla

3239* un subagente con `isolation: "worktree"` se completa

3240* elimina una [sesión de fondo](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree creó el hook

2726 3241 

2727Para worktrees basados en git, Claude Code maneja la limpieza automáticamente con `git worktree remove`. Si configuró un hook WorktreeCreate para un sistema de control de versiones que no es git, emparéjelo con un hook WorktreeRemove para manejar la limpieza. Sin uno, el directorio de worktree se deja en el disco.3242Para worktrees basados en git, Claude Code maneja la limpieza automáticamente con `git worktree remove`. Si configuró un hook WorktreeCreate para un sistema de control de versiones que no es git, emparéjelo con un hook WorktreeRemove para manejar la limpieza. Sin uno, el directorio del worktree se deja en el disco.

3243 

3244Claude Code descarta los [campos de salida JSON](#json-output) de un hook WorktreeRemove, como `systemMessage` y `continue`.

3245 

3246Para una eliminación de sesión de fondo, Claude Code verifica la ruta del worktree almacenada antes de ejecutar el hook y rechaza una ruta que es un symlink o pasa a través de uno debajo de la raíz del repositorio. El hook se ejecuta para un worktree que aún contiene archivos solo cuando confirma la eliminación en [vista de agente](/docs/es/agent-view#what-deleting-a-session-removes); para tal worktree, [`claude rm`](/docs/es/agent-view#manage-sessions-from-the-shell) mantiene la sesión y el worktree en su lugar. Antes de v2.1.216, el hook se ejecutaba en la ruta almacenada sin estas verificaciones.

2728 3247 

2729Claude Code pasa la ruta devuelta por WorktreeCreate como `worktree_path` en la entrada del hook. Este ejemplo lee esa ruta y elimina el directorio:3248Claude Code pasa la ruta devuelta por WorktreeCreate como `worktree_path` en la entrada del hook. Este ejemplo lee esa ruta y elimina el directorio:

2730 3249 


2761}3280}

2762```3281```

2763 3282 

2764Los hooks WorktreeRemove no tienen control de decisión. No pueden bloquear la eliminación de worktree pero pueden realizar tareas de limpieza como eliminar estado de control de versiones o archivar cambios. Los fallos de hook se registran solo en modo de depuración.3283El código de salida de un hook WorktreeRemove decide el resultado. Cuando un hook sale con código distinto de cero y el directorio en `worktree_path` aún existe después, la eliminación falla:

3284 

3285* El worktree permanece en el disco, y el comando del hook y stderr van al [registro de depuración](#debug-hooks).

3286* Si estaba eliminando una sesión de fondo, la sesión también permanece. El mensaje de rechazo en [vista de agente](/docs/es/agent-view#what-deleting-a-session-removes) reporta cómo terminó el hook, como `exited 1`, cita el inicio de su stderr, y dice si eliminar la sesión nuevamente elimina el directorio de todas formas.

2765 3287 

2766<h3 id="precompact">3288<h3 id="precompact">

2767 PreCompact3289 PreCompact


2769 3291 

2770Se ejecuta antes de que Claude Code esté a punto de ejecutar una operación de compactación.3292Se ejecuta antes de que Claude Code esté a punto de ejecutar una operación de compactación.

2771 3293 

2772El valor del matcher indica si la compactación fue desencadenada manualmente o automáticamente:3294El valor del matcher indica si la compactación fue disparada manualmente o automáticamente:

2773 3295 

2774| Matcher | Cuándo se activa |3296| Matcher | Cuándo se dispara |

2775| :------- | :--------------------------------------------------------------- |3297| :------- | :------------------------------------------------------------------------------------------------------------------------------------------- |

2776| `manual` | `/compact` |3298| `manual` | `/compact` |

2777| `auto` | Compactación automática cuando la ventana de contexto está llena |3299| `auto` | Compactación automática cuando la conversación alcanza la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) |

3300 

3301Salga con código 2 para bloquear la compactación. Para un `/compact` manual, el mensaje stderr se muestra al usuario. También puede bloquear devolviendo JSON con `"decision": "block"`.

2778 3302 

2779Salga con código 2 para bloquear la compactación. Para un `/compact` manual, el mensaje de stderr se muestra al usuario. También puede bloquear devolviendo JSON con `"decision": "block"`.3303Bloquear la compactación automática tiene diferentes efectos dependiendo de cuándo se dispare. Si la compactación fue disparada de forma proactiva antes del límite de contexto, Claude Code la omite y la conversación continúa sin compactar. Si la compactación fue disparada para recuperarse de un error de límite de contexto ya devuelto por la API, el error subyacente surge y la solicitud actual falla.

2780 3304 

2781Bloquear la compactación automática tiene diferentes efectos dependiendo de cuándo se active. Si la compactación fue desencadenada de forma proactiva antes del límite de contexto, Claude Code la omite y la conversación continúa sin compactar. Si la compactación fue desencadenada para recuperarse de un error de límite de contexto ya devuelto por la API, el error subyacente aparece y la solicitud actual falla.3305Claude Code descarta los campos `systemMessage` y `continue` de un hook PreCompact.

2782 3306 

2783<h4 id="precompact-input">3307<h4 id="precompact-input">

2784 Entrada de PreCompact3308 Entrada de PreCompact

2785</h4>3309</h4>

2786 3310 

2787Además de los [campos de entrada comunes](#common-input-fields), los hooks PreCompact reciben `trigger` e `custom_instructions`. Para `manual`, `custom_instructions` contiene lo que el usuario pasa a `/compact`. Para `auto`, `custom_instructions` está vacío.3311Además de los [campos de entrada comunes](#common-input-fields), los hooks PreCompact reciben `trigger` e `custom_instructions`. Para `manual`, `custom_instructions` contiene lo que el usuario pasa a `/compact` y es `null` cuando no pasa nada. Para `auto`, `custom_instructions` es `null`.

2788 3312 

2789```json theme={null}3313```json theme={null}

2790{3314{


2793 "cwd": "/Users/...",3317 "cwd": "/Users/...",

2794 "hook_event_name": "PreCompact",3318 "hook_event_name": "PreCompact",

2795 "trigger": "manual",3319 "trigger": "manual",

2796 "custom_instructions": ""3320 "custom_instructions": null

2797}3321}

2798```3322```

2799 3323 


2801 PostCompact3325 PostCompact

2802</h3>3326</h3>

2803 3327 

2804Se ejecuta después de que Claude Code completa una operación de compactación. Use este evento para reaccionar al nuevo estado compactado, por ejemplo para registrar el resumen generado o actualizar el estado externo.3328Se ejecuta después de que Claude Code completa una operación de compactación. Úselo para reaccionar al nuevo estado compactado, por ejemplo para registrar el resumen generado o actualizar el estado externo. Claude Code descarta los campos `systemMessage` y `continue` de un hook PostCompact.

2805 3329 

2806Los mismos valores de matcher se aplican que para `PreCompact`:3330Los mismos valores de matcher se aplican que para `PreCompact`:

2807 3331 

2808| Matcher | Cuándo se activa |3332| Matcher | Cuándo se dispara |

2809| :------- | :-------------------------------------------------------------------------- |3333| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

2810| `manual` | Después de `/compact` |3334| `manual` | Después de `/compact` |

2811| `auto` | Después de compactación automática cuando la ventana de contexto está llena |3335| `auto` | Después de compactación automática cuando la conversación alcanza la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) |

2812 3336 

2813<h4 id="postcompact-input">3337<h4 id="postcompact-input">

2814 Entrada de PostCompact3338 Entrada de PostCompact


2827}3351}

2828```3352```

2829 3353 

2830Los hooks PostCompact no tienen control de decisión. No pueden afectar el resultado de compactación pero pueden realizar tareas de seguimiento.3354Los hooks PostCompact no tienen control de decisión. No pueden afectar el resultado de la compactación pero pueden realizar tareas de seguimiento.

3355 

3356<h3 id="premodelswitch">

3357 PreModelSwitch

3358</h3>

3359 

3360Se ejecuta antes de que Claude Code aplique un cambio de modelo que solicitó usted o un cliente. Úselo para bloquear un cambio, requerir confirmación o mostrar cuánto costará el cambio antes de que suceda.

3361 

3362PreModelSwitch requiere Claude Code v2.1.251 o posterior. Claude Code lo ejecuta para estas solicitudes:

3363 

3364* `/model <name>` y el selector `/model`

3365* El selector de modelo `Option+P` o `Alt+P`

3366* La configuración Model en `/config`

3367* Activar [modo rápido](/docs/es/fast-mode) cuando eso cambia el modelo de la sesión

3368* Una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un anfitrión [Agent SDK](/docs/es/agent-sdk/typescript#query-object) o [Control Remoto](/docs/es/remote-control)

3369 

3370Claude Code no ejecuta hooks PreModelSwitch para cambios que realiza por su cuenta, como un [fallback de modelo automático](/docs/es/model-config#automatic-model-fallback) o restaurar el modelo cuando reanuda una sesión. Esos cambios llegan a [PostModelSwitch](#postmodelswitch) solo.

3371 

3372Claude Code compara el matcher contra el nombre canónico del modelo al que la sesión está cambiando, ignorando cualquier sufijo `[1m]`. Un alias como `opus`, un ID de modelo fechado y un ID específico del proveedor como un ID de modelo de Amazon Bedrock todos coinciden con el único nombre canónico al que se resuelven, por lo que `claude-opus-5` cubre cada deletreo de Opus 5.

3373 

3374Cuando Claude Code no puede determinar un nombre canónico para el objetivo, por ejemplo un ID de modelo personalizado que solo su [puerta de enlace LLM](/docs/es/llm-gateway) conoce, ejecuta cada hook PreModelSwitch independientemente del matcher. Un hook que bloquea debe verificar `to_model` de su entrada en lugar de confiar solo en el matcher.

3375 

3376Escriba el matcher como un nombre exacto, una lista separada por `|` como `claude-opus-4-6|claude-opus-5`, o una expresión regular como `.*opus.*`. Este ejemplo usa un matcher de nombre exacto y también verifica `to_model` de la entrada del hook, por lo que rechaza un cambio a Opus 4.6 saliendo con código 2 y permite cualquier otro objetivo:

3377 

3378<Tabs>

3379 <Tab title="macOS/Linux">

3380 El comando verifica `to_model` con `jq`:

3381 

3382 ```json theme={null}

3383 {

3384 "hooks": {

3385 "PreModelSwitch": [

3386 {

3387 "matcher": "claude-opus-4-6",

3388 "hooks": [

3389 {

3390 "type": "command",

3391 "command": "jq -e '.to_model | test(\"opus-4-6\")' > /dev/null && { echo 'Opus 4.6 is retired for this project. Use a newer model.' >&2; exit 2; }; exit 0"

3392 }

3393 ]

3394 }

3395 ]

3396 }

3397 }

3398 ```

3399 </Tab>

3400 

3401 <Tab title="Windows (PowerShell)">

3402 Registre un hook de comando que ejecute un script a través de PowerShell:

3403 

3404 ```json theme={null}

3405 {

3406 "hooks": {

3407 "PreModelSwitch": [

3408 {

3409 "matcher": "claude-opus-4-6",

3410 "hooks": [

3411 {

3412 "type": "command",

3413 "command": "powershell.exe",

3414 "args": [

3415 "-NoProfile",

3416 "-ExecutionPolicy",

3417 "Bypass",

3418 "-File",

3419 "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-opus-46.ps1"

3420 ]

3421 }

3422 ]

3423 }

3424 ]

3425 }

3426 }

3427 ```

3428 

3429 Guarde este script en `.claude/hooks/block-opus-46.ps1` en su proyecto:

3430 

3431 ```powershell theme={null}

3432 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json

3433 if ($hookInput.to_model -match 'opus-4-6') {

3434 [Console]::Error.WriteLine('Opus 4.6 is retired for this project. Use a newer model.')

3435 exit 2

3436 }

3437 exit 0

3438 ```

3439 </Tab>

3440</Tabs>

3441 

3442Para confirmar que el hook funciona, ejecute `/model claude-opus-4-6` desde una sesión que ejecuta un modelo diferente. Claude Code mantiene el modelo actual e informa que un hook PreModelSwitch bloqueó el cambio, con su mensaje como la razón.

3443 

3444<h4 id="premodelswitch-input">

3445 Entrada de PreModelSwitch

3446</h4>

3447 

3448Además de los [campos de entrada comunes](#common-input-fields), los hooks PreModelSwitch reciben los campos en esta tabla. Los últimos cinco describen qué cuesta reenviar la conversación al nuevo modelo, para que un hook pueda mostrar esa cifra antes de que suceda el cambio.

3449 

3450| Campo | Tipo | Descripción |

3451| :-------------------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3452| `from_model` | string | ID de modelo del que cambia el cambio |

3453| `to_model` | string | ID de modelo al que cambia el cambio. El matcher compara contra el nombre canónico de este modelo |

3454| `requested_model` | string o `null` | El modelo que la solicitud nombró: un alias como `opus`, un ID de modelo completo, o `null` cuando la solicitud fue para el modelo predeterminado |

3455| `source` | string | De dónde vino la solicitud: `"command"` para `/model <name>`, la configuración Model en `/config`, o activar modo rápido; `"picker"` para un selector de modelo; `"sdk"` para una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un anfitrión Agent SDK o Control Remoto |

3456| `context_tokens` | number | Tokens que la siguiente solicitud reenvía como su prompt: los tokens de entrada, lectura de caché, creación de caché y salida de la última respuesta en la conversación principal, combinados. `0` antes de la primera respuesta |

3457| `prompt_cache_warm` | boolean | Si el caché de prompt del modelo actual probablemente aún esté caliente, lo que significa que el cambio lo pierde |

3458| `cache_ttl` | string | [Duración de vida del caché de prompt](/docs/es/prompt-caching#cache-lifetime) que Claude Code solicita para esta sesión: `"5m"` o `"1h"` |

3459| `estimated_cache_write_usd` | number | Costo estimado en dólares estadounidenses de escribir `context_tokens` en el caché de prompt en `to_model` a la tasa `cache_ttl`, excluyendo la siguiente respuesta. El servidor puede no necesitar re-cachear todo el contexto, así que trátelo como una estimación |

3460| `pricing` | string | Cómo Claude Code fijó el precio de `estimated_cache_write_usd`: `"configured"` a sus propias tasas de la organización cuando las ha configurado, `"catalog"` a precio de lista, o `"default"` cuando `to_model` no tiene precio conocido y Claude Code asumió una tasa predeterminada |

3461 

3462Este ejemplo muestra la entrada para `/model opus` en una sesión que ejecuta Sonnet 5:

3463 

3464```json theme={null}

3465{

3466 "session_id": "abc123",

3467 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

3468 "cwd": "/Users/...",

3469 "hook_event_name": "PreModelSwitch",

3470 "from_model": "claude-sonnet-5",

3471 "to_model": "claude-opus-5",

3472 "requested_model": "opus",

3473 "source": "command",

3474 "context_tokens": 182340,

3475 "prompt_cache_warm": true,

3476 "cache_ttl": "5m",

3477 "estimated_cache_write_usd": 1.1396,

3478 "pricing": "catalog"

3479}

3480```

3481 

3482<h4 id="premodelswitch-decision-control">

3483 Control de decisión de PreModelSwitch

3484</h4>

3485 

3486Los hooks `PreModelSwitch` pueden cancelar el cambio, pedir al usuario que lo confirme, o permitir que continúe. El código de salida 2 o un `decision: "block"` de nivel superior cancela el cambio.

3487 

3488Para un control más fino, devuelva `permissionDecision` y `permissionDecisionReason` en un objeto `hookSpecificOutput`, como en [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` acepta `"allow"`, `"deny"`, y `"ask"`. No acepta `"defer"`, `updatedInput`, o `additionalContext`. La tabla a continuación describe ambos campos:

3489 

3490| Campo | Descripción |

3491| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3492| `permissionDecision` | `"allow"` continúa y omite la [confirmación que Claude Code muestra mientras el caché de prompt está caliente](/docs/es/prompt-caching#switching-models). `"deny"` cancela el cambio. `"ask"` solicita al usuario que lo confirme |

3493| `permissionDecisionReason` | Para `"deny"`, se muestra al usuario como la razón por la que se bloqueó el cambio, o se devuelve como el error para una solicitud `set_model`. Para `"ask"`, se muestra en el aviso de confirmación. Se ignora para `"allow"` |

3494 

3495Solo `/model` en una sesión interactiva puede mostrar el aviso `"ask"`. En todas las otras superficies, incluido modo no interactivo con la bandera `-p`, `/config`, y solicitudes `set_model`, Claude Code trata `"ask"` como un rechazo.

3496 

3497Este ejemplo pide al usuario que confirme y cita el recuento de tokens de `context_tokens`:

3498 

3499```json theme={null}

3500{

3501 "hookSpecificOutput": {

3502 "hookEventName": "PreModelSwitch",

3503 "permissionDecision": "ask",

3504 "permissionDecisionReason": "Switching now re-sends about 180k tokens to the new model. Continue?"

3505 }

3506}

3507```

3508 

3509Cuando múltiples hooks PreModelSwitch devuelven decisiones diferentes, la precedencia es `deny` > `ask` > `allow`.

3510 

3511Claude Code muestra al usuario cualquier `systemMessage` que devuelva su hook independientemente de la decisión, por lo que un hook de informe de costos puede devolver `{"systemMessage": "..."}` y salir con 0.

3512 

3513Un hook PreModelSwitch que no responde antes de su tiempo de espera bloquea el cambio. En [PreToolUse](#timeouts), por el contrario, un hook de comando que agota el tiempo de espera permite que la llamada de herramienta continúe. El tiempo de espera predeterminado para este evento es 30 segundos. `PreModelSwitch` ejecuta solo hooks `command`, `http`, y `mcp_tool`, por lo que los valores predeterminados `prompt` y `agent` no se aplican.

3514 

3515Un hook que sale con un código distinto de 0 o 2 y no imprime ninguna decisión JSON no bloquea: Claude Code muestra su stderr y aplica el cambio, como se describe en [Otros códigos de salida](#other-exit-codes).

3516 

3517<h3 id="postmodelswitch">

3518 PostModelSwitch

3519</h3>

3520 

3521Se ejecuta después de que cambia el modelo de la sesión. Úselo para dar orientación específica del modelo a Claude sin editar cada CLAUDE.md, por ejemplo una instrucción de toda la organización que se aplica en ciertos modelos.

3522 

3523PostModelSwitch requiere Claude Code v2.1.251 o posterior. No puede bloquear, porque el modelo ya ha cambiado. Claude Code ejecuta hooks PostModelSwitch después de cualquiera de estos cambios:

3524 

3525* Un cambio que solicitó usted o un cliente

3526* Un [fallback de modelo automático](/docs/es/model-config#automatic-model-fallback), que cambia el modelo de la sesión

3527* Una configuración como [`opusplan`](/docs/es/model-config#opusplan-model-setting) entrando o saliendo del modo de plan

3528* Claude Code restaurando el modelo cuando reanuda una sesión

3529 

3530Claude Code no ejecuta hooks PostModelSwitch cuando un modelo de una [cadena de modelo de fallback](/docs/es/model-config#fallback-model-chains) sirve un turno, porque esa sustitución dura un turno y deja el modelo de la sesión sin cambios.

3531 

3532El matcher sigue las mismas reglas que [PreModelSwitch](#premodelswitch): Claude Code compara contra el nombre canónico del modelo al que la sesión cambió.

3533 

3534Este ejemplo agrega orientación siempre que el modelo de la sesión cambia a cualquier modelo Opus:

3535 

3536```json theme={null}

3537{

3538 "hooks": {

3539 "PostModelSwitch": [

3540 {

3541 "matcher": ".*opus.*",

3542 "hooks": [

3543 {

3544 "type": "command",

3545 "command": "echo 'On Opus, delegate implementation work to subagents and keep this conversation for planning and review.'"

3546 }

3547 ]

3548 }

3549 ]

3550 }

3551}

3552```

3553 

3554Para confirmar que el hook funciona, cambie a un modelo Opus desde una sesión que ejecuta un modelo diferente, por ejemplo ejecute `/model opus` desde una sesión Sonnet, luego pregunte a Claude qué orientación tiene sobre el modelo actual.

3555 

3556<h4 id="postmodelswitch-input">

3557 Entrada de PostModelSwitch

3558</h4>

3559 

3560Los hooks PostModelSwitch reciben los mismos campos que [PreModelSwitch](#premodelswitch-input), con `hook_event_name` establecido en `"PostModelSwitch"` y dos valores `source` más: `"auto"` para un fallback automático u otro cambio que Claude Code realizó por su cuenta, y `"resume"` para el modelo restaurado cuando reanuda una sesión.

3561 

3562`requested_model` es `null` cuando `source` es `"auto"`. Cuando `source` es `"resume"`, es la configuración de modelo guardada que Claude Code restauró.

3563 

3564<h4 id="postmodelswitch-decision-control">

3565 Control de decisión de PostModelSwitch

3566</h4>

3567 

3568Claude Code toma su stdout de texto plano del hook [](#exit-code-0) en salida 0, o `additionalContext` de salida JSON, y lo entrega a Claude con la siguiente solicitud después del cambio. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver:

3569 

3570| Campo | Descripción |

3571| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------- |

3572| `additionalContext` | Cadena agregada al contexto de Claude con la siguiente solicitud. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

3573 

3574Si el hook no se ha completado dentro de cinco segundos después de que envía la siguiente solicitud, Claude Code envía esa solicitud sin la salida y la adjunta a la siguiente solicitud en su lugar. Si el modelo cambia varias veces antes de la siguiente solicitud, Claude Code entrega solo la salida para el modelo de destino del último cambio.

2831 3575 

2832<h3 id="sessionend">3576<h3 id="sessionend">

2833 SessionEnd3577 SessionEnd


2838El campo `reason` en la entrada del hook indica por qué terminó la sesión:3582El campo `reason` en la entrada del hook indica por qué terminó la sesión:

2839 3583 

2840| Razón | Descripción |3584| Razón | Descripción |

2841| :---------------------------- | :------------------------------------------------------- |3585| :---------------------------- | :----------------------------------------------------------------------------------- |

2842| `clear` | Sesión borrada con comando `/clear` |3586| `clear` | Sesión borrada con comando `/clear` |

2843| `resume` | Sesión cambiada a través de `/resume` interactivo |3587| `resume` | Sesión cambiada a través de `/resume` interactivo |

2844| `logout` | Usuario cerró sesión |3588| `logout` | Usuario cerró sesión |

2845| `prompt_input_exit` | Usuario salió mientras la entrada del prompt era visible |3589| `prompt_input_exit` | Usuario salió mientras la entrada de prompt era visible |

2846| `bypass_permissions_disabled` | El modo de permisos de omisión fue deshabilitado |

2847| `other` | Otras razones de salida |3590| `other` | Otras razones de salida |

3591| `bypass_permissions_disabled` | Eliminado en v2.1.234; Claude Code no lo envía. Elimine de sus matchers `SessionEnd` |

2848 3592 

2849<h4 id="sessionend-input">3593<h4 id="sessionend-input">

2850 Entrada de SessionEnd3594 Entrada de SessionEnd

2851</h4>3595</h4>

2852 3596 

2853Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionEnd reciben un campo `reason` que indica por qué terminó la sesión. Consulte la tabla de razones anterior para todos los valores.3597Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionEnd reciben un campo `reason` que indica por qué terminó la sesión. Consulte la [tabla de razones](#sessionend) anterior para todos los valores.

2854 3598 

2855```json theme={null}3599```json theme={null}

2856{3600{


2862}3606}

2863```3607```

2864 3608 

2865Los hooks SessionEnd no tienen control de decisión. No pueden bloquear la terminación de sesión pero pueden realizar tareas de limpieza.3609Los hooks SessionEnd no tienen control de decisión. No pueden bloquear la terminación de la sesión pero pueden realizar tareas de limpieza. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage`.

3610 

3611Los hooks SessionEnd tienen un tiempo de espera predeterminado de 1.5 segundos. Se aplica cuando sale, ejecuta `/clear`, o cambia sesiones con `/resume` interactivo. Puede dar a un hook más tiempo de dos formas:

2866 3612 

2867Los hooks SessionEnd tienen un tiempo de espera predeterminado de 1,5 segundos. Esto se aplica tanto a la salida de sesión como a `/clear` y al cambio de sesiones a través de `/resume` interactivo. Si un hook necesita más tiempo, establezca un `timeout` por hook en la configuración del hook. El presupuesto general se aumenta automáticamente al tiempo de espera por hook más alto configurado en archivos de configuración, hasta 60 segundos. Los tiempos de espera establecidos en hooks proporcionados por plugins no aumentan el presupuesto. Para anular el presupuesto explícitamente, establezca la variable de entorno `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` en milisegundos.3613* **`timeout` por hook**: establezca `timeout` en la configuración de ese hook. El presupuesto general se eleva automáticamente para coincidir con el `timeout` por hook más alto en sus archivos de configuración, hasta 60 segundos. Si eleva el presupuesto de esta manera, un hook sin su propio `timeout` aún mantiene el predeterminado. Los tiempos de espera establecidos en hooks proporcionados por plugins no elevan el presupuesto.

3614* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: establezca esta variable de entorno en milisegundos para anular el presupuesto explícitamente. El valor que establezca también se convierte en el tiempo de espera para cada hook sin su propio `timeout`.

3615 

3616Este ejemplo establece el presupuesto en 5 segundos:

2868 3617 

2869```bash theme={null}3618```bash theme={null}

2870CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3619CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2871```3620```

2872 3621 

3622Antes de v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` solo elevaba el presupuesto general, y un hook sin su propio `timeout` aún se cancelaba después de 1.5 segundos.

3623 

2873<h3 id="elicitation">3624<h3 id="elicitation">

2874 Elicitation3625 Elicitation

2875</h3>3626</h3>

2876 3627 

2877Se ejecuta cuando un servidor MCP solicita entrada del usuario a mitad de la tarea. Por defecto, Claude Code muestra un diálogo interactivo para que el usuario responda. Los hooks pueden interceptar esta solicitud y responder programáticamente, omitiendo el diálogo completamente.3628Se ejecuta cuando un servidor MCP solicita entrada del usuario a mitad de tarea. De forma predeterminada, Claude Code muestra un diálogo interactivo para que el usuario responda. Los hooks pueden interceptar esta solicitud y responder programáticamente, omitiendo completamente el diálogo.

2878 3629 

2879El campo matcher coincide con el nombre del servidor MCP.3630El campo matcher coincide contra el nombre del servidor MCP.

2880 3631 

2881<h4 id="elicitation-input">3632<h4 id="elicitation-input">

2882 Entrada de Elicitation3633 Entrada de Elicitation

2883</h4>3634</h4>

2884 3635 

2885Además de los [campos de entrada comunes](#common-input-fields), los hooks Elicitation reciben `mcp_server_name`, `message` y campos opcionales `mode`, `url`, `elicitation_id` y `requested_schema`.3636Además de los [campos de entrada comunes](#common-input-fields), los hooks Elicitation reciben `mcp_server_name`, `message`, y campos opcionales `mode`, `url`, `elicitation_id`, y `requested_schema`.

2886 3637 

2887Para elicitación en modo formulario (el caso más común):3638Para elicitación de modo de formulario, el caso más común:

2888 3639 

2889```json theme={null}3640```json theme={null}

2890{3641{

2891 "session_id": "abc123",3642 "session_id": "abc123",

2892 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",3643 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2893 "cwd": "/Users/...",3644 "cwd": "/Users/...",

2894 "permission_mode": "default",

2895 "hook_event_name": "Elicitation",3645 "hook_event_name": "Elicitation",

2896 "mcp_server_name": "my-mcp-server",3646 "mcp_server_name": "my-mcp-server",

2897 "message": "Please provide your credentials",3647 "message": "Please provide your credentials",


2905}3655}

2906```3656```

2907 3657 

2908Para elicitación en modo URL (autenticación basada en navegador):3658Para elicitación de modo URL, utilizada para autenticación basada en navegador:

2909 3659 

2910```json theme={null}3660```json theme={null}

2911{3661{

2912 "session_id": "abc123",3662 "session_id": "abc123",

2913 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",3663 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2914 "cwd": "/Users/...",3664 "cwd": "/Users/...",

2915 "permission_mode": "default",

2916 "hook_event_name": "Elicitation",3665 "hook_event_name": "Elicitation",

2917 "mcp_server_name": "my-mcp-server",3666 "mcp_server_name": "my-mcp-server",

2918 "message": "Please authenticate",3667 "message": "Please authenticate",


2944| `action` | `accept`, `decline`, `cancel` | Si aceptar, rechazar o cancelar la solicitud |3693| `action` | `accept`, `decline`, `cancel` | Si aceptar, rechazar o cancelar la solicitud |

2945| `content` | object | Valores de campo de formulario a enviar. Solo se usa cuando `action` es `accept` |3694| `content` | object | Valores de campo de formulario a enviar. Solo se usa cuando `action` es `accept` |

2946 3695 

2947El código de salida 2 deniega la elicitación y muestra stderr al usuario.3696El código de salida 2 deniega la elicitación. Claude Code no muestra su mensaje stderr en ningún lugar.

3697 

3698Claude Code actúa sobre `hookSpecificOutput` de la salida JSON de un hook Elicitation y descarta `systemMessage` y `continue`.

2948 3699 

2949<h3 id="elicitationresult">3700<h3 id="elicitationresult">

2950 ElicitationResult3701 ElicitationResult

2951</h3>3702</h3>

2952 3703 

2953Se ejecuta después de que un usuario responde a una elicitación MCP. Los hooks pueden observar, modificar o bloquear la respuesta antes de que se envíe de vuelta al servidor MCP.3704Se ejecuta después de que un usuario responde a una elicitación de MCP. Los hooks pueden observar, modificar o bloquear la respuesta antes de que se devuelva al servidor MCP.

2954 3705 

2955El campo matcher coincide con el nombre del servidor MCP.3706El campo matcher coincide contra el nombre del servidor MCP.

2956 3707 

2957<h4 id="elicitationresult-input">3708<h4 id="elicitationresult-input">

2958 Entrada de ElicitationResult3709 Entrada de ElicitationResult

2959</h4>3710</h4>

2960 3711 

2961Además de los [campos de entrada comunes](#common-input-fields), los hooks ElicitationResult reciben `mcp_server_name`, `action` y campos opcionales `mode`, `elicitation_id` y `content`.3712Además de los [campos de entrada comunes](#common-input-fields), los hooks ElicitationResult reciben `mcp_server_name`, `action`, y campos opcionales `mode`, `elicitation_id`, y `content`.

2962 3713 

2963```json theme={null}3714```json theme={null}

2964{3715{

2965 "session_id": "abc123",3716 "session_id": "abc123",

2966 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",3717 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2967 "cwd": "/Users/...",3718 "cwd": "/Users/...",

2968 "permission_mode": "default",

2969 "hook_event_name": "ElicitationResult",3719 "hook_event_name": "ElicitationResult",

2970 "mcp_server_name": "my-mcp-server",3720 "mcp_server_name": "my-mcp-server",

2971 "action": "accept",3721 "action": "accept",


2992```3742```

2993 3743 

2994| Campo | Valores | Descripción |3744| Campo | Valores | Descripción |

2995| :-------- | :---------------------------- | :----------------------------------------------------------------------------------- |3745| :-------- | :---------------------------- | :---------------------------------------------------------------------------------------- |

2996| `action` | `accept`, `decline`, `cancel` | Anula la acción del usuario |3746| `action` | `accept`, `decline`, `cancel` | Anula la acción del usuario |

2997| `content` | object | Anula valores de campo de formulario. Solo significativo cuando `action` es `accept` |3747| `content` | object | Anula los valores del campo de formulario. Solo significativo cuando `action` es `accept` |

3748 

3749El código de salida 2 bloquea la respuesta, cambiando la acción efectiva a `decline`. Claude Code no muestra su mensaje stderr en ningún lugar.

2998 3750 

2999El código de salida 2 bloquea la respuesta, cambiando la acción efectiva a `decline`.3751Claude Code actúa sobre `hookSpecificOutput` de la salida JSON de un hook ElicitationResult y descarta `systemMessage` y `continue`.

3000 3752 

3001<h2 id="prompt-based-hooks">3753<h2 id="prompt-based-hooks">

3002 Hooks basados en prompts3754 Hooks basados en prompts


3024 3776 

3025* `ConfigChange`3777* `ConfigChange`

3026* `CwdChanged`3778* `CwdChanged`

3779* `DirectoryAdded`

3027* `Elicitation`3780* `Elicitation`

3028* `ElicitationResult`3781* `ElicitationResult`

3029* `FileChanged`3782* `FileChanged`

3030* `InstructionsLoaded`3783* `InstructionsLoaded`

3784* `MessageDisplay`

3031* `Notification`3785* `Notification`

3032* `PostCompact`3786* `PostCompact`

3787* `PostModelSwitch`

3033* `PreCompact`3788* `PreCompact`

3789* `PreModelSwitch`

3034* `SessionEnd`3790* `SessionEnd`

3035* `StopFailure`3791* `StopFailure`

3036* `SubagentStart`3792* `SubagentStart`

3037* `WorktreeCreate`3793* `WorktreeCreate`

3038* `WorktreeRemove`3794* `WorktreeRemove`

3039 3795 

3040`SessionStart` y `Setup` admiten hooks `command` y `mcp_tool`. No admiten hooks `http`, `prompt` o `agent`.3796`SessionStart` y `Setup` admiten hooks `command` y `mcp_tool`, y [MCP tool hook fields](#mcp-tool-hook-fields) describe cuándo se ejecutan sus hooks `mcp_tool`. No admiten hooks `http`, `prompt` o `agent`.

3041 3797 

3042<h3 id="how-prompt-based-hooks-work">3798<h3 id="how-prompt-based-hooks-work">

3043 Cómo funcionan los hooks basados en prompts3799 Cómo funcionan los hooks basados en prompts


3053 Configuración de hook de prompt3809 Configuración de hook de prompt

3054</h3>3810</h3>

3055 3811 

3056Establezca `type` en `"prompt"` y proporcione una cadena `prompt` en lugar de un `command`. Use el marcador de posición `$ARGUMENTS` para inyectar datos de entrada JSON del hook en su texto de prompt. Claude Code envía el prompt combinado e entrada a un modelo Claude rápido, que devuelve una decisión JSON.3812Establezca `type` en `"prompt"` y proporcione una cadena `prompt` en lugar de un `command`. Use el marcador de posición `$ARGUMENTS` para inyectar datos de entrada JSON del hook en su texto de prompt.

3057 3813 

3058Este hook `Stop` le pide al LLM que evalúe si todas las tareas están completas antes de permitir que Claude finalice:3814Este hook `Stop` le pide al LLM que evalúe si todas las tareas están completas antes de permitir que Claude finalice:

3059 3815 


3075```3831```

3076 3832 

3077| Campo | Requerido | Descripción |3833| Campo | Requerido | Descripción |

3078| :---------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3834| :---------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3079| `type` | sí | Debe ser `"prompt"` |3835| `type` | sí | Debe ser `"prompt"` |

3080| `prompt` | sí | El texto del prompt a enviar al LLM. Use `$ARGUMENTS` como marcador de posición para la entrada JSON del hook. Si `$ARGUMENTS` no está presente, la entrada JSON se agrega al prompt |3836| `prompt` | sí | El texto del prompt a enviar al LLM. Use `$ARGUMENTS` como marcador de posición para la entrada JSON del hook. Si `$ARGUMENTS` no está presente, la entrada JSON se agrega al prompt |

3081| `model` | no | Modelo a usar para evaluación. Por defecto es un modelo rápido |3837| `model` | no | Modelo a usar para evaluación. Por defecto es un modelo rápido |

3082| `timeout` | no | Tiempo de espera en segundos. Predeterminado: 30 |3838| `timeout` | no | Tiempo de espera en segundos. Predeterminado: 30 |

3083| `continueOnBlock` | no | Cuando el prompt devuelve `ok: false`, retroalimente la razón a Claude y continúe el turno en lugar de detener. Predeterminado: `false`. Implementado como `continue: true` en la `decision: "block"` resultante. Consulte [Esquema de respuesta](#response-schema) para el comportamiento por evento |3839| `continueOnBlock` | no | En los eventos a los que se aplica, `true` retroalimenta una razón `ok: false` a Claude y continúa en lugar de terminar el turno. Predeterminado: `false`. Consulte [Esquema de respuesta](#response-schema) para el comportamiento por evento |

3084 3840 

3085<h3 id="response-schema">3841<h3 id="response-schema">

3086 Esquema de respuesta3842 Esquema de respuesta


3091```json theme={null}3847```json theme={null}

3092{3848{

3093 "ok": true | false,3849 "ok": true | false,

3094 "reason": "Explanation for the decision"3850 "reason": "Explanation for the decision",

3851 "impossible": true | false

3095}3852}

3096```3853```

3097 3854 

3098| Campo | Descripción |3855| Campo | Descripción |

3099| :------- | :------------------------------------------------------------------------------------------------------------------ |3856| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3100| `ok` | `true` para permitir. `false` produce una `decision: "block"`. Consulte el comportamiento por evento a continuación |3857| `ok` | `true` para permitir. Para `false`, consulte el comportamiento por evento a continuación |

3101| `reason` | Requerido cuando `ok` es `false`. Se usa como la razón del bloqueo |3858| `reason` | Requerido cuando `ok` es `false` |

3859| `impossible` | Opcional. El modelo lo devuelve con `ok: false` cuando juzga que la condición nunca puede satisfacerse. En `Stop` y `SubagentStop`, Claude Code permite que el turno termine en lugar de retroalimentar la razón. Los hooks de agente y otros eventos lo ignoran |

3102 3860 

3103Lo que sucede en `ok: false` depende del evento:3861Lo que sucede en `ok: false` depende del evento:

3104 3862 

3105* `Stop` y `SubagentStop`: la razón se retroalimenta a Claude como su siguiente instrucción y el turno continúa3863* `Stop` y `SubagentStop`: la razón se retroalimenta a Claude como su siguiente instrucción y el turno continúa, a menos que la respuesta también establezca `impossible: true`, en cuyo caso Claude Code permite la detención y el turno termina

3106* `PreToolUse`: la llamada de herramienta se deniega y la razón se devuelve a Claude como el error de la herramienta, equivalente a un hook de comando con `permissionDecision: "deny"`3864* `PreToolUse`: la llamada de herramienta se deniega; por defecto el turno termina y la razón de denegación aparece en el chat como una línea de advertencia. Establezca `continueOnBlock: true` para devolver la razón a Claude como el error de la herramienta para que pueda ajustarse y continuar, equivalente a un hook de comando con `permissionDecision: "deny"`. Antes de v2.1.210, la razón de denegación se devolvía a Claude como el error de la herramienta y el turno continuaba

3107* `PostToolUse`: por defecto el turno termina y la razón aparece en el chat como una línea de advertencia. Establezca `continueOnBlock: true` para retroalimentar la razón a Claude y continuar el turno en lugar de detener3865* `PostToolUse`: por defecto el turno termina y la razón aparece en el chat como una línea de advertencia. Establezca `continueOnBlock: true` para retroalimentar la razón a Claude y continuar el turno en lugar de detener

3108* `PostToolBatch`, `UserPromptSubmit` y `UserPromptExpansion`: el turno termina y la razón aparece como una línea de advertencia. Estos eventos terminan el turno en `decision: "block"` independientemente de `continue`3866* `PostToolBatch`, `UserPromptSubmit` y `UserPromptExpansion`: el turno termina y la razón aparece como una línea de advertencia. Estos eventos terminan el turno en `decision: "block"` independientemente de `continue`

3109* `PostToolUseFailure`, `TaskCreated` y `TaskCompleted`: la razón se devuelve a Claude como un error de herramienta, similar a `PreToolUse`3867* `PostToolUseFailure` y `TaskCreated`: la razón se devuelve a Claude como un error de herramienta y el turno continúa, independientemente de `continueOnBlock`

3868* `TaskCompleted`: cuando se activa porque una tarea se marca como completada durante un turno, la razón se devuelve a Claude como un error de herramienta y el turno continúa, independientemente de `continueOnBlock`. Cuando se activa porque un compañero se detiene, se comporta como `TeammateIdle` y detiene al compañero por defecto

3110* `TeammateIdle`: por defecto el compañero se detiene y la razón aparece como una línea de advertencia. Establezca `continueOnBlock: true` para retroalimentar la razón al compañero y mantenerlo trabajando en su lugar3869* `TeammateIdle`: por defecto el compañero se detiene y la razón aparece como una línea de advertencia. Establezca `continueOnBlock: true` para retroalimentar la razón al compañero y mantenerlo trabajando en su lugar

3111* `PermissionRequest`: `ok: false` no tiene efecto. Para denegar una aprobación desde un hook, use un [hook de comando](#command-hook-fields) que devuelva `hookSpecificOutput.decision.behavior: "deny"`3870* `PermissionRequest`: `ok: false` no tiene efecto. Para denegar una aprobación desde un hook, use un [hook de comando](#command-hook-fields) que devuelva `hookSpecificOutput.decision.behavior: "deny"`

3112* `PermissionDenied`: `ok: false` no tiene efecto porque la denegación ya sucedió. La única salida que este evento lee es `hookSpecificOutput.retry`, que los hooks de prompt y agente no pueden establecer. Se ejecutan en este evento, pero su salida se descarta. Use un [hook de comando](#command-hook-fields) para devolver `retry`3871* `PermissionDenied`: `ok: false` no tiene efecto porque la denegación ya sucedió. La única salida que este evento lee es `hookSpecificOutput.retry`, que los hooks de prompt y agente no pueden establecer. Se ejecutan en este evento, pero su salida se descarta. Use un [hook de comando](#command-hook-fields) para devolver `retry`


3117 Verificar múltiples condiciones antes de detener3876 Verificar múltiples condiciones antes de detener

3118</h3>3877</h3>

3119 3878 

3120Este hook `Stop` usa un prompt detallado para verificar tres condiciones antes de permitir que Claude se detenga. Los hooks `SubagentStop` usan el mismo formato para evaluar si un [subagente](/docs/es/sub-agents) debe detenerse. Si `"ok"` es `false`, Claude continúa trabajando con la razón proporcionada como su siguiente instrucción:3879Este hook `Stop` usa un prompt detallado para verificar tres condiciones antes de permitir que Claude se detenga. Los hooks `SubagentStop` usan el mismo formato para evaluar si un [subagente](/docs/es/sub-agents) debe detenerse. Si el modelo devuelve `"ok": false` porque la condición aún no se cumple, Claude continúa trabajando con la razón proporcionada como su siguiente instrucción:

3121 3880 

3122```json theme={null}3881```json theme={null}

3123{3882{


31561. Claude Code genera un subagente con su prompt y la entrada JSON del hook39151. Claude Code genera un subagente con su prompt y la entrada JSON del hook

31572. El subagente puede usar herramientas como Read, Grep y Glob para investigar39162. El subagente puede usar herramientas como Read, Grep y Glob para investigar

31583. Después de hasta 50 turnos, el subagente devuelve una decisión estructurada `{ "ok": true/false }`39173. Después de hasta 50 turnos, el subagente devuelve una decisión estructurada `{ "ok": true/false }`

31594. Claude Code procesa la decisión de la misma manera que un hook de prompt39184. Claude Code permite la acción si `ok` es `true`. Si `ok` es `false`, Claude Code maneja el bloqueo de la misma manera que un hook de prompt con `continueOnBlock: true` en ese evento, como se indica en [Esquema de respuesta](#response-schema)

3160 3919 

3161Los hooks de agente son útiles cuando la verificación requiere inspeccionar archivos reales o salida de prueba, no solo evaluar los datos de entrada del hook solos.3920Los hooks de agente son útiles cuando la verificación requiere inspeccionar archivos reales o salida de prueba, no solo evaluar los datos de entrada del hook solos.

3162 3921 


3164 Configuración de hook de agente3923 Configuración de hook de agente

3165</h3>3924</h3>

3166 3925 

3167Establezca `type` en `"agent"` y proporcione una cadena `prompt`. Los campos de configuración son los mismos que los [hooks de prompt](#prompt-hook-configuration), con un tiempo de espera predeterminado más largo:3926Establezca `type` en `"agent"` y proporcione una cadena `prompt`, usando `$ARGUMENTS` como marcador de posición para la entrada JSON del hook. Los campos de configuración son los mismos que los [hooks de prompt](#prompt-hook-configuration), excepto que los hooks de agente tienen un tiempo de espera predeterminado más largo de 60 segundos y no tienen campo `continueOnBlock`.

3168 

3169| Campo | Requerido | Descripción |

3170| :-------- | :-------- | :---------------------------------------------------------------------------------------------------------- |

3171| `type` | sí | Debe ser `"agent"` |

3172| `prompt` | sí | Prompt que describe qué verificar. Use `$ARGUMENTS` como marcador de posición para la entrada JSON del hook |

3173| `model` | no | Modelo a usar. Por defecto es un modelo rápido |

3174| `timeout` | no | Tiempo de espera en segundos. Predeterminado: 60 |

3175 3927 

3176El esquema de respuesta es el mismo que los hooks de prompt: `{ "ok": true }` para permitir o `{ "ok": false, "reason": "..." }` para bloquear.3928El esquema de respuesta es `{ "ok": true }` para permitir o `{ "ok": false, "reason": "..." }` para bloquear. En `ok: false`, Claude Code maneja un hook de agente de la manera que maneja un [hook de prompt con `continueOnBlock: true`](#response-schema) en el mismo evento; los hooks de agente no tienen campo `continueOnBlock` y no admiten el campo `impossible` del hook de prompt.

3177 3929 

3178Este hook `Stop` verifica que todas las pruebas unitarias pasen antes de permitir que Claude finalice:3930Este hook `Stop` verifica que todas las pruebas unitarias pasen antes de permitir que Claude finalice:

3179 3931 


3207 3959 

3208Agregue `"async": true` a la configuración de un hook de comando para ejecutarlo en segundo plano sin bloquear a Claude. Este campo solo está disponible en hooks `type: "command"`.3960Agregue `"async": true` a la configuración de un hook de comando para ejecutarlo en segundo plano sin bloquear a Claude. Este campo solo está disponible en hooks `type: "command"`.

3209 3961 

3210Este hook ejecuta un script de prueba después de cada llamada a herramienta `Write`. Claude continúa trabajando inmediatamente mientras `run-tests.sh` se ejecuta durante hasta 120 segundos. Cuando el script finaliza, su salida se entrega en el siguiente turno de conversación:3962Este hook ejecuta un script de prueba después de cada llamada a herramienta `Write`. Claude continúa trabajando inmediatamente mientras `run-tests.sh` se ejecuta. Cuando el script finaliza, su salida se entrega en el siguiente turno de conversación:

3211 3963 

3212```json theme={null}3964```json theme={null}

3213{3965{


3219 {3971 {

3220 "type": "command",3972 "type": "command",

3221 "command": "/path/to/run-tests.sh",3973 "command": "/path/to/run-tests.sh",

3222 "async": true,3974 "async": true

3223 "timeout": 120

3224 }3975 }

3225 ]3976 ]

3226 }3977 }


3229}3980}

3230```3981```

3231 3982 

3232El campo `timeout` establece el tiempo máximo en segundos para el proceso de fondo. Si no se especifica, los hooks asincronos usan el mismo predeterminado de 10 minutos que los hooks sincronos.3983Una vez que un hook asincrónico se está ejecutando en segundo plano, Claude Code no aplica `timeout` en él. Claude Code aún aplica `timeout` en un hook que ejecuta con `asyncRewake`.

3984 

3985Claude Code entrega los resultados de un hook asincrónico solo mientras se ejecuta la sesión:

3986 

3987* En [modo no interactivo](/docs/es/headless) con la bandera `-p`, Claude Code mata cualquier hook asincrónico que aún se esté ejecutando al finalizar y lo finaliza con resultado `cancelled`

3988* Si el trabajo de su hook debe sobrevivir a una sesión `claude -p`, inicie un proceso completamente desacoplado desde él

3233 3989 

3234<h3 id="how-async-hooks-execute">3990<h3 id="how-async-hooks-execute">

3235 Cómo se ejecutan los hooks asincronos3991 Cómo se ejecutan los hooks asincronos


3237 3993 

3238Cuando se activa un hook asincrónico, Claude Code inicia el proceso del hook e inmediatamente continúa sin esperar a que finalice. El hook recibe la misma entrada JSON a través de stdin que un hook sincrónico.3994Cuando se activa un hook asincrónico, Claude Code inicia el proceso del hook e inmediatamente continúa sin esperar a que finalice. El hook recibe la misma entrada JSON a través de stdin que un hook sincrónico.

3239 3995 

3240Después de que el proceso de fondo sale, si el hook produjo una respuesta JSON con un campo `additionalContext`, ese contenido se entrega a Claude como contexto en el siguiente turno de conversación. Un campo `systemMessage` se muestra a usted, no a Claude.3996Después de que el proceso de fondo sale, Claude Code entrega los campos `additionalContext` y `systemMessage` de la respuesta JSON del hook a Claude en el siguiente turno de conversación. A diferencia del `systemMessage` de un hook sincrónico, ninguno de estos campos se le muestra a usted.

3241 3997 

3242Claude Code valida esa respuesta JSON contra el mismo [esquema de salida](#json-output) que los hooks sincronos, y descarta cualquier campo cuyo valor tenga el tipo incorrecto, como un `systemMessage` que no sea una cadena, en lugar de entregarlo. Ejecute con `--debug` para ver una advertencia que nombre cada campo descartado. Antes de v2.1.202, la salida JSON malformada de un hook asincrónico podría bloquear la sesión, y el bloqueo se repetía cada vez que se reanudaba la sesión.3998Claude Code valida esa respuesta JSON contra el mismo [esquema de salida](#json-output) que los hooks sincronos, y descarta cualquier campo cuyo valor tenga el tipo incorrecto, como un `systemMessage` que no sea una cadena, en lugar de entregarlo. Ejecute con `--debug` para ver una advertencia que nombre cada campo descartado. Antes de v2.1.202, la salida JSON malformada de un hook asincrónico podría bloquear la sesión, y el bloqueo se repetía cada vez que se reanudaba la sesión.

3243 3999 


3287 "type": "command",4043 "type": "command",

3288 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/run-tests-async.sh",4044 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/run-tests-async.sh",

3289 "args": [],4045 "args": [],

3290 "async": true,4046 "async": true

3291 "timeout": 300

3292 }4047 }

3293 ]4048 ]

3294 }4049 }


3301 Limitaciones4056 Limitaciones

3302</h3>4057</h3>

3303 4058 

3304Los hooks asincronos tienen varias restricciones en comparación con los hooks sincronos:4059Los hooks asincronos tienen restricciones adicionales en comparación con los hooks sincronos:

3305 4060 

3306* Solo los hooks `type: "command"` admiten `async`. Los hooks basados en prompts no pueden ejecutarse de forma asincrónica.

3307* Los hooks asincronos no pueden bloquear llamadas a herramientas o devolver decisiones. En el momento en que se completa el hook, la acción desencadenante ya ha procedido.

3308* La salida del hook se entrega en el siguiente turno de conversación. Si la sesión está inactiva, la respuesta espera hasta la siguiente interacción del usuario. Excepción: un hook `asyncRewake` que sale con código 2 despierta a Claude inmediatamente incluso cuando la sesión está inactiva.4061* La salida del hook se entrega en el siguiente turno de conversación. Si la sesión está inactiva, la respuesta espera hasta la siguiente interacción del usuario. Excepción: un hook `asyncRewake` que sale con código 2 despierta a Claude inmediatamente incluso cuando la sesión está inactiva.

3309* Cada ejecución crea un proceso de fondo separado. No hay deduplicación en múltiples activaciones del mismo hook asincrónico.4062* Cada ejecución crea un proceso de fondo separado. No hay deduplicación en múltiples activaciones del mismo hook asincrónico.

3310 4063 


3316 Descargo de responsabilidad4069 Descargo de responsabilidad

3317</h3>4070</h3>

3318 4071 

3319Los hooks de comando se ejecutan con los permisos completos del usuario del sistema.

3320 

3321<Warning>4072<Warning>

3322 Los hooks de comando ejecutan comandos de shell con sus permisos de usuario completos. Pueden modificar, eliminar o acceder a cualquier archivo al que su cuenta de usuario pueda acceder. Revise y pruebe todos los comandos de hook antes de agregarlos a su configuración.4073 Los hooks de comando ejecutan comandos de shell con sus permisos de usuario completos. Pueden modificar, eliminar o acceder a cualquier archivo al que su cuenta de usuario pueda acceder. Revise y pruebe todos los comandos de hook antes de agregarlos a su configuración.

3323</Warning>4074</Warning>

3324 4075 

4076<h3 id="workspace-trust">

4077 Confianza del espacio de trabajo

4078</h3>

4079 

4080Claude Code verifica la confianza del espacio de trabajo antes de ejecutar cualquier hook desde un archivo de configuración. Lo que cuenta como confiable depende del tipo de sesión:

4081 

4082* **Sesión interactiva**: Claude Code retiene los hooks de todos los archivos de configuración, incluido su propio `~/.claude/settings.json`, hasta que acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) para la carpeta, o para un directorio principal cuya confianza se extienda a ella

4083* **Sesión `-p` o SDK**: Claude Code nunca muestra el diálogo y trata la carpeta como confiable, por lo que los hooks confirmados en el `.claude/settings.json` de un repositorio se ejecutan en una carpeta que nunca ha confiado

4084 

4085Antes de ejecutar `claude -p` en un repositorio que no escribió, revise sus archivos de configuración `.claude/`, comience con [`--bare`](/docs/es/headless#start-faster-with-bare-mode), o [desactive los hooks para esa ejecución](#disable-or-remove-hooks) con `--settings '{"disableAllHooks": true}'`. Los hooks de frontmatter en un subagente de proyecto siguen una regla más estricta que los hooks de archivo de configuración. [Lo que se ejecuta antes de confiar en una carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder) enumera cada tipo de contenido de repositorio por tipo de sesión.

4086 

3325<h3 id="security-best-practices">4087<h3 id="security-best-practices">

3326 Mejores prácticas de seguridad4088 Mejores prácticas de seguridad

3327</h3>4089</h3>


3338 Herramienta PowerShell en Windows4100 Herramienta PowerShell en Windows

3339</h2>4101</h2>

3340 4102 

3341En Windows, puede ejecutar hooks individuales en PowerShell estableciendo `"shell": "powershell"` en un hook de comando. Los hooks generan PowerShell directamente, por lo que esto funciona independientemente de si `CLAUDE_CODE_USE_POWERSHELL_TOOL` está establecido. Claude Code detecta automáticamente `pwsh.exe`, el ejecutable de PowerShell 7 y posterior, y recurre a `powershell.exe` para Windows PowerShell 5.1.4103En Windows, puede ejecutar hooks individuales en PowerShell estableciendo `"shell": "powershell"` en un hook de comando. Claude Code detecta automáticamente `pwsh.exe`, el ejecutable de PowerShell 7 y posterior, y recurre a `powershell.exe` para Windows PowerShell 5.1.

3342 4104 

3343```json theme={null}4105```json theme={null}

3344{4106{


3379 Depurar hooks4141 Depurar hooks

3380</h2>4142</h2>

3381 4143 

3382Los detalles de ejecución de hooks, incluyendo qué hooks coincidieron, sus códigos de salida y stdout y stderr completos, se escriben en el archivo de registro de depuración. Inicie Claude Code con `claude --debug-file <path>` para escribir el registro en una ubicación conocida, o ejecute `claude --debug` y lea el registro en `~/.claude/debug/<session-id>.txt`. La bandera `--debug` no imprime en la terminal.4144Los detalles de ejecución de hooks se escriben en el archivo de registro de depuración. Inicie Claude Code con `claude --debug-file <path>` para escribir el registro en una ubicación conocida, o ejecute `claude --debug` y lea el registro en `~/.claude/debug/<session-id>.txt`. La bandera `--debug` no imprime en la terminal.

4145 

4146Por ejemplo, un hook `PostToolUse` en `Write` cuyo comando imprime `hook-ran` produce entradas como:

3383 4147 

3384```text theme={null}4148```text theme={null}

3385[DEBUG] Executing hooks for PostToolUse:Write41492026-07-19T02:03:24.382Z [DEBUG] Hook output does not start with {, treating as plain text

3386[DEBUG] Found 1 hook commands to execute41502026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"

3387[DEBUG] Executing hook command: <Your command> with timeout 600000ms

3388[DEBUG] Hook command completed with status 0: <Your stdout>

3389```4151```

3390 4152 

3391Para detalles de coincidencia de hooks más granulares, establezca `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` para ver líneas de registro adicionales como recuentos de matchers de hooks y coincidencia de consultas.4153Para detalles de coincidencia de hooks más granulares, establezca `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` para ver líneas de registro adicionales como recuentos de matchers de hooks y coincidencia de consultas.

3392 4154 

3393Para solucionar problemas comunes como hooks que no se activan, bucles infinitos de hooks Stop o errores de configuración, consulte [Limitaciones y solución de problemas](/docs/es/hooks-guide#limitations-and-troubleshooting) en la guía. Para un recorrido de diagnóstico más amplio que cubra `/context`, `/doctor` y precedencia de configuración, consulte [Depure su configuración](/docs/es/debug-your-config).4155Para solucionar problemas comunes como hooks que no se activan, hooks Stop que siguen bloqueando, o errores de configuración, consulte [Limitaciones y solución de problemas](/docs/es/hooks-guide#limitations-and-troubleshooting) en la guía. Para un recorrido de diagnóstico más amplio que cubra `/context`, `/doctor` y precedencia de configuración, consulte [Depure su configuración](/docs/es/debug-your-config).

Details

76* **Su proyecto.** Archivos en su directorio y subdirectorios, más archivos en otros lugares con su permiso.76* **Su proyecto.** Archivos en su directorio y subdirectorios, más archivos en otros lugares con su permiso.

77* **Su terminal.** Cualquier comando que pueda ejecutar: herramientas de compilación, git, gestores de paquetes, utilidades del sistema, scripts. Si puede hacerlo desde la línea de comandos, Claude también puede.77* **Su terminal.** Cualquier comando que pueda ejecutar: herramientas de compilación, git, gestores de paquetes, utilidades del sistema, scripts. Si puede hacerlo desde la línea de comandos, Claude también puede.

78* **Su estado de git.** Rama actual, cambios sin confirmar e historial de confirmaciones recientes.78* **Su estado de git.** Rama actual, cambios sin confirmar e historial de confirmaciones recientes.

79* **Su [CLAUDE.md](/docs/es/memory).** Un archivo markdown donde almacena instrucciones específicas del proyecto, convenciones y contexto que Claude debe conocer en cada sesión.79* **Su [CLAUDE.md](/docs/es/memory).** Un archivo markdown donde almacena instrucciones específicas del proyecto, convenciones y contexto que Claude debe conocer en cada sesión. Si su repositorio tiene un AGENTS.md para otros agentes de codificación, Claude [puede leerlo](/docs/es/memory#agents-md) por su cuenta o junto con CLAUDE.md.

80* **[Auto memory](/docs/es/memory#auto-memory).** Aprendizajes que Claude guarda automáticamente mientras trabaja, como sus preferencias. Las primeras 200 líneas o 25KB de MEMORY.md, lo que sea menor, se cargan al inicio de cada sesión.80* **[Auto memory](/docs/es/memory#auto-memory).** Aprendizajes que Claude guarda automáticamente mientras trabaja, como sus preferencias. Las primeras 200 líneas o 25KB de MEMORY.md, lo que sea menor, se cargan al inicio de cada sesión.

81* **Extensiones que configure.** [Servidores MCP](/docs/es/mcp) para servicios externos, [skills](/docs/es/skills) para flujos de trabajo, [subagentes](/docs/es/sub-agents) para trabajo delegado y [Claude en Chrome](/docs/es/chrome) para interacción del navegador.81* **Extensiones que configure.** [Servidores MCP](/docs/es/mcp) para servicios externos, [skills](/docs/es/skills) para flujos de trabajo, [subagentes](/docs/es/sub-agents) para trabajo delegado y [Claude en Chrome](/docs/es/chrome) para interacción del navegador.

82 82 


86 Entornos e interfaces86 Entornos e interfaces

87</h2>87</h2>

88 88 

89El bucle agentico, las herramientas y las capacidades descritas anteriormente son iguales en todas partes donde use Claude Code. Lo que cambia es dónde se ejecuta el código y cómo interactúa con él.89El [bucle agentico](#the-agentic-loop), las [herramientas](#tools) y las capacidades son iguales en todas partes donde use Claude Code. Lo que cambia es dónde se ejecuta el código y cómo interactúa con él.

90 90 

91<h3 id="execution-environments">91<h3 id="execution-environments">

92 Entornos de ejecución92 Entornos de ejecución

Details

614Mientras el panel está abierto, puede:614Mientras el panel está abierto, puede:

615 615 

616* **Saltar a un archivo**: haga clic en su fila en la lista. Desplace el panel con la rueda del ratón. Cuando la lista de archivos en sí es demasiado larga para caber, desplácela con `Alt+Arriba` y `Alt+Abajo`, o `Ctrl+Arriba` y `Ctrl+Abajo`.616* **Saltar a un archivo**: haga clic en su fila en la lista. Desplace el panel con la rueda del ratón. Cuando la lista de archivos en sí es demasiado larga para caber, desplácela con `Alt+Arriba` y `Alt+Abajo`, o `Ctrl+Arriba` y `Ctrl+Abajo`.

617* **Pregunte a Claude sobre líneas específicas**: selecciónelas en el panel con el ratón. Claude Code adjunta la selección a su siguiente mensaje y muestra un recuento de líneas junto a la entrada hasta que lo envíe.617* **Pregunte a Claude sobre líneas específicas**: selecciónelas en el panel con el ratón. Claude Code adjunta la selección a su siguiente mensaje y muestra un recuento de líneas en la entrada hasta que lo envíe.

618 * Para enviar el mensaje sin la selección, mueva el cursor justo después del indicador de recuento de líneas y presione `Retroceso` para eliminarlo. Requiere Claude Code v2.1.271 o posterior.

618* **Muestre los archivos que el panel omite**: la lista omite archivos de prueba y archivos generados, y colapsa los cambios anteriores a esta sesión en una línea en la parte inferior. Haga clic en cualquier línea de recuento para expandirla.619* **Muestre los archivos que el panel omite**: la lista omite archivos de prueba y archivos generados, y colapsa los cambios anteriores a esta sesión en una línea en la parte inferior. Haga clic en cualquier línea de recuento para expandirla.

619* **Cambie con qué compara el panel**: presione `Ctrl+X B` para cambiar entre los cambios de esta sesión, sus cambios sin confirmar como una lista, y todo desde que su rama se dividió de la rama predeterminada. Claude Code recuerda la opción para cada proyecto.620* **Cambie con qué compara el panel**: presione `Ctrl+X B` para cambiar entre los cambios de esta sesión, sus cambios sin confirmar como una lista, y todo desde que su rama se dividió de la rama predeterminada. Claude Code recuerda la opción para cada proyecto.

620 621 


650En el [panel de chat de la extensión de VS Code](/docs/es/vs-code#use-the-prompt-box), `/btw` abre un panel en lugar de la superposición que describe esta sección, y hace preguntas de seguimiento directamente en el panel. El hilo del panel sobrevive a las recargas de ventana, según el cronograma de retención que describe esa página. Necesita la extensión en la versión 2.1.227 o posterior. Las versiones anteriores de la extensión no ofrecen `/btw`.651En el [panel de chat de la extensión de VS Code](/docs/es/vs-code#use-the-prompt-box), `/btw` abre un panel en lugar de la superposición que describe esta sección, y hace preguntas de seguimiento directamente en el panel. El hilo del panel sobrevive a las recargas de ventana, según el cronograma de retención que describe esa página. Necesita la extensión en la versión 2.1.227 o posterior. Las versiones anteriores de la extensión no ofrecen `/btw`.

651 652 

652* **Disponible mientras Claude está trabajando**: puede ejecutar `/btw` incluso mientras Claude está procesando una respuesta. La pregunta lateral se ejecuta de forma independiente y no interrumpe el turno principal. Ve todo en la conversación hasta ahora, excepto la respuesta que Claude aún está escribiendo.653* **Disponible mientras Claude está trabajando**: puede ejecutar `/btw` incluso mientras Claude está procesando una respuesta. La pregunta lateral se ejecuta de forma independiente y no interrumpe el turno principal. Ve todo en la conversación hasta ahora, excepto la respuesta que Claude aún está escribiendo.

653* **Sin acceso a herramientas**: las preguntas laterales responden solo a partir de lo que ya está en contexto. Claude no puede leer archivos, ejecutar comandos o buscar al responder una pregunta lateral.654* **Sin acceso a herramientas**: las preguntas laterales responden solo a partir de lo que ya está en contexto. Claude no puede leer archivos, ejecutar comandos o buscar al responder una pregunta lateral. Si Claude escribe llamadas de herramientas como texto de todas formas, la respuesta termina con una nota de que nada fue ejecutado.

654* **Respuesta única**: no hay turnos de seguimiento en la superposición. Para continuar el hilo, haga otra pregunta `/btw`. Para continuar con acceso completo a herramientas en una sesión local, presione `f` para bifurcar esta pregunta y respuesta en un [subagente de fondo](/docs/es/sub-agents#fork-the-current-conversation).655* **Respuesta única**: no hay turnos de seguimiento en la superposición. Para continuar el hilo, haga otra pregunta `/btw`. Para continuar con acceso completo a herramientas en una sesión local, presione `f` para bifurcar esta pregunta y respuesta en un [subagente de fondo](/docs/es/sub-agents#fork-the-current-conversation).

655* **Bajo costo**: mientras el [almacenamiento en caché de indicaciones](/docs/es/prompt-caching) de la conversación esté activo, una pregunta lateral cuesta poco más allá de la respuesta en sí.656* **Bajo costo**: mientras el [almacenamiento en caché de indicaciones](/docs/es/prompt-caching) de la conversación esté activo, una pregunta lateral cuesta poco más allá de la respuesta en sí.

656 657 

jetbrains.md +1 −1

Details

231 Consideraciones de seguridad231 Consideraciones de seguridad

232</h2>232</h2>

233 233 

234Cuando Claude Code se ejecuta en un JetBrains IDE en modo de permiso [`acceptEdits`](/docs/es/permission-modes#auto-approve-file-edits-with-acceptedits-mode), puede ser capaz de modificar archivos de configuración del IDE que pueden ser ejecutados automáticamente por su IDE. Esto puede aumentar el riesgo de ejecutar Claude Code en modo `acceptEdits` y permitir eludir los indicadores de permiso de Claude Code para la ejecución de bash.234Cuando Claude Code se ejecuta en un JetBrains IDE en modo de permiso [`acceptEdits`](/docs/es/permission-modes#auto-approve-file-edits-with-acceptedits-mode), puede ser capaz de modificar archivos de configuración del IDE que pueden ser ejecutados automáticamente por su IDE. Esto puede aumentar el riesgo de ejecutar Claude Code en modo `acceptEdits` y permitir eludir los indicadores de permiso de Claude Code para la ejecución de Bash.

235 235 

236Cuando se ejecuta en JetBrains IDEs, considere:236Cuando se ejecuta en JetBrains IDEs, considere:

237 237 

llm-gateway.md +1 −1

Details

28* **Registro de auditoría**: registre cada solicitud de modelo para cumplimiento normativo28* **Registro de auditoría**: registre cada solicitud de modelo para cumplimiento normativo

29* **Cambio de proveedor**: cambie el proveedor en la configuración de la puerta de enlace, sin tocar máquinas de desarrolladores29* **Cambio de proveedor**: cambie el proveedor en la configuración de la puerta de enlace, sin tocar máquinas de desarrolladores

30 30 

31Todos estos excepto el cambio de proveedor se aplican si el upstream es la API de Anthropic o un [proveedor en la nube](/docs/es/third-party-integrations). El cambio de proveedor sin reconfigurar máquinas de desarrolladores también depende de que la puerta de enlace exponga un único [punto final en formato Anthropic](/docs/es/llm-gateway-protocol#api-formats) independientemente del upstream; una puerta de enlace que exponga el formato propio de un proveedor vincula la configuración del cliente a ese proveedor.31Todos estos excepto el cambio de proveedor se aplican si el upstream es la API de Anthropic o un [proveedor en la nube](/docs/es/third-party-integrations). El cambio de proveedor sin reconfigurar máquinas de desarrolladores también depende de que la puerta de enlace exponga un único [punto final en formato Anthropic](/docs/es/llm-gateway-protocol#api-formats) independientemente del upstream. Una puerta de enlace que exponga el formato propio de un proveedor vincula la configuración del cliente a ese proveedor y cambia [lo que Claude Code envía y qué valores predeterminados aplica](/docs/es/llm-gateway-protocol#how-the-connection-method-changes-client-behavior).

32 32 

33El compromiso es que la puerta de enlace se convierte en infraestructura que su organización opera. Claude Code añade capacidades con cada lanzamiento, y una puerta de enlace que no las reenvía rompe las características correspondientes, por lo que el producto de puerta de enlace necesita mantenerse actualizado a medida que Claude Code evoluciona. La [guía de compatibilidad de puerta de enlace](/docs/es/llm-gateway-protocol) cubre qué reenviar.33El compromiso es que la puerta de enlace se convierte en infraestructura que su organización opera. Claude Code añade capacidades con cada lanzamiento, y una puerta de enlace que no las reenvía rompe las características correspondientes, por lo que el producto de puerta de enlace necesita mantenerse actualizado a medida que Claude Code evoluciona. La [guía de compatibilidad de puerta de enlace](/docs/es/llm-gateway-protocol) cubre qué reenviar.

34 34 

Details

286 ```286 ```

287</CodeGroup>287</CodeGroup>

288 288 

289<h3 id="slack-web-and-remote-control">289<h3 id="slack-cloud-sessions-and-remote-control">

290 Slack, web y Remote Control290 Slack, sesiones en la nube y Remote Control

291</h3>291</h3>

292 292 

293[Claude Code en Slack](/docs/es/slack) y [Claude Code en la web](/docs/es/claude-code-on-the-web) son productos alojados por Anthropic que siempre usan la API de Anthropic; no son parte de una implementación de puerta de enlace. Las variables de puerta de enlace establecidas en la configuración de entorno de una sesión en la nube no se aplican. Si su tráfico debe permanecer en la puerta de enlace, no habilite estas superficies para esos usuarios.293[Claude Code en Slack](/docs/es/slack) y [sesiones en la nube](/docs/es/claude-code-on-the-web) siempre usan la API de Anthropic; no son parte de una implementación de puerta de enlace. Las variables de puerta de enlace establecidas en la configuración de entorno de una sesión en la nube no se aplican. Si su tráfico debe permanecer en la puerta de enlace, no habilite estas superficies para esos usuarios.

294 294 

295[Remote Control](/docs/es/remote-control) y [voice dictation](/docs/es/voice-dictation) ambos se basan en una identidad de claude.ai: Remote Control para emparejar una sesión en vivo con su cuenta, y voice dictation para alcanzar el punto final de transcripción de claude.ai. No están disponibles mientras `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o un `apiKeyHelper` está activo. Remote Control también está deshabilitado mientras `ANTHROPIC_BASE_URL` apunta a un host que no es de Anthropic, por lo que iniciar sesión con claude.ai no es suficiente por sí solo. Antes de v2.1.196, una URL base que no es de Anthropic no bloqueaba Remote Control.295[Remote Control](/docs/es/remote-control) y [voice dictation](/docs/es/voice-dictation) ambos se basan en una identidad de claude.ai: Remote Control para emparejar una sesión en vivo con su cuenta, y voice dictation para alcanzar el punto final de transcripción de claude.ai. No están disponibles mientras `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o un `apiKeyHelper` está activo. Remote Control también está deshabilitado mientras `ANTHROPIC_BASE_URL` apunta a un host que no es de Anthropic, por lo que iniciar sesión con claude.ai no es suficiente por sí solo. Antes de v2.1.196, una URL base que no es de Anthropic no bloqueaba Remote Control.

296 296 


587| Errores `400` que nombran `context_management`, `Extra inputs are not permitted`, u otros campos no reconocidos | La puerta de enlace reenvía solicitudes a un upstream que rechaza campos que Claude Code envía a puntos finales en formato de Anthropic | Establezca `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, que suprime la mayoría de campos de pre-lanzamiento; consulte [paso de características](/docs/es/llm-gateway-protocol#feature-pass-through). Algunos betas no están controlados por esta bandera; para esos, establezca la variable de proveedor `CLAUDE_CODE_USE_*` coincidente para que Claude Code envíe solo lo que ese proveedor acepta |587| Errores `400` que nombran `context_management`, `Extra inputs are not permitted`, u otros campos no reconocidos | La puerta de enlace reenvía solicitudes a un upstream que rechaza campos que Claude Code envía a puntos finales en formato de Anthropic | Establezca `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, que suprime la mayoría de campos de pre-lanzamiento; consulte [paso de características](/docs/es/llm-gateway-protocol#feature-pass-through). Algunos betas no están controlados por esta bandera; para esos, establezca la variable de proveedor `CLAUDE_CODE_USE_*` coincidente para que Claude Code envíe solo lo que ese proveedor acepta |

588| Errores `400` que nombran `thinking` o `adaptive`, como `Input tag 'adaptive' found` | La compilación del modelo upstream no acepta razonamiento adaptativo, que Claude Code solicita para modelos Claude 4.6 y posteriores | Actualice el upstream de la puerta de enlace. En Opus 4.6 y Sonnet 4.6, `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` funciona en su lugar. Las variables de capacidad de [configuración de modelo](/docs/es/model-config) se aplican solo a las configuraciones de proveedor, como `CLAUDE_CODE_USE_BEDROCK` y `CLAUDE_CODE_USE_VERTEX`, no detrás de una puerta de enlace `ANTHROPIC_BASE_URL` |588| Errores `400` que nombran `thinking` o `adaptive`, como `Input tag 'adaptive' found` | La compilación del modelo upstream no acepta razonamiento adaptativo, que Claude Code solicita para modelos Claude 4.6 y posteriores | Actualice el upstream de la puerta de enlace. En Opus 4.6 y Sonnet 4.6, `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` funciona en su lugar. Las variables de capacidad de [configuración de modelo](/docs/es/model-config) se aplican solo a las configuraciones de proveedor, como `CLAUDE_CODE_USE_BEDROCK` y `CLAUDE_CODE_USE_VERTEX`, no detrás de una puerta de enlace `ANTHROPIC_BASE_URL` |

589| Errores `400` que indican un contexto o límite de token en las propias palabras de la puerta de enlace, como `ContextWindowExceededError` o `prompt token count of N exceeds the limit of M` | La puerta de enlace aplica un contexto más pequeño que la ventana nativa del modelo y reescribe el error upstream, por lo que Claude Code no lo reconoce como un [error demasiado largo](/docs/es/errors#prompt-is-too-long) y no compacta y reintenta automáticamente | Ejecute `/compact` para recuperar la sesión. Para prevenirlo, establezca `CLAUDE_CODE_AUTO_COMPACT_WINDOW` al límite de la puerta de enlace; Claude Code fija el valor a al menos 100,000 tokens y como máximo la ventana de contexto del modelo, por lo que no puede coincidir con un límite de puerta de enlace por debajo de 100,000, y `/compact` permanece como la recuperación allí. También establezca `CLAUDE_CODE_MAX_OUTPUT_TOKENS` por debajo del límite de salida del modelo de puerta de enlace |589| Errores `400` que indican un contexto o límite de token en las propias palabras de la puerta de enlace, como `ContextWindowExceededError` o `prompt token count of N exceeds the limit of M` | La puerta de enlace aplica un contexto más pequeño que la ventana nativa del modelo y reescribe el error upstream, por lo que Claude Code no lo reconoce como un [error demasiado largo](/docs/es/errors#prompt-is-too-long) y no compacta y reintenta automáticamente | Ejecute `/compact` para recuperar la sesión. Para prevenirlo, establezca `CLAUDE_CODE_AUTO_COMPACT_WINDOW` al límite de la puerta de enlace; Claude Code fija el valor a al menos 100,000 tokens y como máximo la ventana de contexto del modelo, por lo que no puede coincidir con un límite de puerta de enlace por debajo de 100,000, y `/compact` permanece como la recuperación allí. También establezca `CLAUDE_CODE_MAX_OUTPUT_TOKENS` por debajo del límite de salida del modelo de puerta de enlace |

590| Errores `400` en cada solicitud, en las propias palabras de la puerta de enlace rechazando un esquema de entrada de herramienta o su `pattern`, en Claude Code v2.1.265 a v2.1.267 | En un despliegue gradual en esas versiones, el esquema de [herramienta Artifact](/docs/es/artifacts#availability) lleva una expresión regular con clases de caracteres Unicode `\p{...}`. La API de Anthropic la acepta, pero una puerta de enlace o upstream que verifica el `pattern` de cada esquema de herramienta con su propio motor de expresiones regulares rechaza toda la solicitud | Actualice a v2.1.268 o posterior, que no envía la expresión regular. En una versión afectada, [desactive los artefactos](/docs/es/artifacts#disable-artifacts), que elimina la herramienta y su esquema de las solicitudes |

590| Modelos faltantes del selector `/model` | Los nombres de modelos de puerta de enlace no están en la lista integrada de Claude Code, o Claude Code está mostrando una alineación [`modelPicker`](/docs/es/settings-reference#modelpicker) que reemplaza las opciones integradas | Habilite [descubrimiento de modelos de puerta de enlace](#add-gateway-models-to-the-model-picker) o agregue nombres con las variables de [configuración de modelo](/docs/es/model-config). Si Claude Code muestra una alineación `modelPicker` que reemplaza, agregue los modelos de puerta de enlace a ella, o pida a su administrador que los agregue cuando la configuración administrada lo proporcione |591| Modelos faltantes del selector `/model` | Los nombres de modelos de puerta de enlace no están en la lista integrada de Claude Code, o Claude Code está mostrando una alineación [`modelPicker`](/docs/es/settings-reference#modelpicker) que reemplaza las opciones integradas | Habilite [descubrimiento de modelos de puerta de enlace](#add-gateway-models-to-the-model-picker) o agregue nombres con las variables de [configuración de modelo](/docs/es/model-config). Si Claude Code muestra una alineación `modelPicker` que reemplaza, agregue los modelos de puerta de enlace a ella, o pida a su administrador que los agregue cuando la configuración administrada lo proporcione |

591| `/fast` reporta `Fast mode unavailable due to network connectivity issues` mientras las solicitudes de inferencia funcionan | La verificación de disponibilidad de [modo rápido](/docs/es/fast-mode) va directamente a `api.anthropic.com` y no sigue `ANTHROPIC_BASE_URL`, por lo que el egreso directo bloqueado falla la verificación. El mismo mensaje aparece en una red abierta cuando la verificación presenta una clave emitida por puerta de enlace de `ANTHROPIC_API_KEY` o un `apiKeyHelper` y Anthropic la rechaza | Agregue a la lista blanca `api.anthropic.com` si el egreso está bloqueado, o establezca una variable de omisión; para una clave de puerta de enlace rechazada solo las variables de omisión ayudan. Consulte [usar modo rápido detrás de proxies y puertas de enlace LLM](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) |592| `/fast` reporta `Fast mode unavailable due to network connectivity issues` mientras las solicitudes de inferencia funcionan | La verificación de disponibilidad de [modo rápido](/docs/es/fast-mode) va directamente a `api.anthropic.com` y no sigue `ANTHROPIC_BASE_URL`, por lo que el egreso directo bloqueado falla la verificación. El mismo mensaje aparece en una red abierta cuando la verificación presenta una clave emitida por puerta de enlace de `ANTHROPIC_API_KEY` o un `apiKeyHelper` y Anthropic la rechaza | Agregue a la lista blanca `api.anthropic.com` si el egreso está bloqueado, o establezca una variable de omisión; para una clave de puerta de enlace rechazada solo las variables de omisión ayudan. Consulte [usar modo rápido detrás de proxies y puertas de enlace LLM](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) |

592| `/fast` reporta `Fast mode has been disabled by your organization` en una sesión autenticada con `ANTHROPIC_AUTH_TOKEN`, aunque la organización tiene modo rápido habilitado | La verificación de disponibilidad requiere un inicio de sesión en claude.ai o una clave de API de Anthropic; con solo un token portador, Claude Code trata el modo rápido como deshabilitado sin enviar la verificación | Establezca `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; consulte [usar modo rápido detrás de proxies y puertas de enlace LLM](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) |593| `/fast` reporta `Fast mode has been disabled by your organization` en una sesión autenticada con `ANTHROPIC_AUTH_TOKEN`, aunque la organización tiene modo rápido habilitado | La verificación de disponibilidad requiere un inicio de sesión en claude.ai o una clave de API de Anthropic; con solo un token portador, Claude Code trata el modo rápido como deshabilitado sin enviar la verificación | Establezca `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; consulte [usar modo rápido detrás de proxies y puertas de enlace LLM](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) |

Details

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

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

4 4 

5# Guía de compatibilidad de la puerta de enlace Claude Code5# Guía de compatibilidad de Claude Code gateway

6 6 

7> Mantener una puerta de enlace LLM compatible con Claude Code: los puntos finales que llama, los encabezados y campos de cuerpo a reenviar, y qué se rompe cuando se eliminan.7> Mantenga un gateway LLM compatible con Claude Code: los endpoints que llama, los encabezados y campos de cuerpo a reenviar, y qué se rompe cuando se eliminan.

8 8 

9Esta página documenta las solicitudes que Claude Code envía a una puerta de enlace, incluidos los puntos finales que llama, los encabezados y campos de cuerpo que la puerta de enlace debe reenviar, y qué características dejan de funcionar cuando no lo hace. Está escrita para operadores que configuran un producto de puerta de enlace para trabajar con Claude Code.9Esta página documenta las solicitudes que Claude Code envía a un gateway, incluidos los endpoints que llama, los encabezados y campos de cuerpo que el gateway debe reenviar, y qué características dejan de funcionar cuando no lo hace. Está escrita para operadores que configuran un producto gateway para trabajar con Claude Code.

10 10 

11La [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway), la puerta de enlace autohospedada de Anthropic, sirve su propia referencia de puntos finales en `GET /protocol`, cubriendo los puntos finales de inicio de sesión, inferencia, configuración administrada, descubrimiento de modelos y telemetría de esa puerta de enlace. Es un documento separado de esta guía.11El [Claude apps gateway](/docs/es/claude-apps-gateway), el gateway autohospedado de Anthropic, sirve su propia referencia de endpoint en `GET /protocol`, cubriendo los endpoints de inicio de sesión, inferencia, configuración administrada, descubrimiento de modelos y telemetría de ese gateway. Es un documento separado de esta guía.

12 12 

13<Note>13<Note>

14 * Para implementar una puerta de enlace existente o de terceros para su organización, consulte [Implementar una puerta de enlace LLM](/docs/es/llm-gateway-rollout)14 * Para implementar un gateway existente o de terceros en su organización, consulte [Implementar un gateway LLM](/docs/es/llm-gateway-rollout)

15 * Si es un desarrollador individual que autentica Claude Code en una puerta de enlace con una credencial que le proporcionaron, consulte [Conectar Claude Code a una puerta de enlace LLM](/docs/es/llm-gateway-connect)15 * Si es un desarrollador individual que autentica Claude Code en un gateway con una credencial que le proporcionaron, consulte [Conectar Claude Code a un gateway LLM](/docs/es/llm-gateway-connect)

16</Note>16</Note>

17 17 

18Esta página cubre:18Esta página cubre:

19 19 

20* [Formatos de API](#api-formats) y los puntos finales a servir para cada uno20* [Formatos de API](#api-formats) y los endpoints a servir para cada uno

21* [Encabezados de solicitud](#request-headers): cuáles deben llegar al proveedor ascendente y cuáles su puerta de enlace puede consumir21* [Comportamiento del cliente por método de conexión](#how-the-connection-method-changes-client-behavior): cómo los ID de modelo, valores de `anthropic-beta`, campos de solicitud y valores predeterminados difieren entre los formatos y un inicio de sesión de Claude apps gateway

22* El [bloque de atribución del mensaje del sistema](#system-prompt-attribution-block) y cómo interactúa con el almacenamiento en caché de solicitudes22* [Encabezados de solicitud](#request-headers): cuáles deben llegar al upstream y cuáles su gateway puede consumir

23* [Paso de características](#feature-pass-through): qué se rompe cuando se eliminan encabezados o campos de cuerpo23* [Encabezados de respuesta](#response-headers): qué devolver para que la detección de estancamiento, reintentos y la visualización del límite de uso funcionen

24* El [bloque de atribución del prompt del sistema](#system-prompt-attribution-block) y cómo interactúa con el almacenamiento en caché de prompts

25* [Paso a través de características](#feature-pass-through): qué se rompe cuando se eliminan encabezados o campos de cuerpo

24* [Descubrimiento de modelos](#model-discovery)26* [Descubrimiento de modelos](#model-discovery)

25 27 

26Esta página utiliza dos términos para lo que su puerta de enlace hace con cada encabezado y campo de cuerpo:28Esta página utiliza dos términos para lo que su gateway hace con cada encabezado y campo de cuerpo:

27 29 

28* **Reenviar sin cambios**: pasarlo al proveedor ascendente byte por byte30* **Reenviar sin cambios**: pasarlo al upstream byte por byte

29* **Consumir**: la puerta de enlace puede leerlo para enrutamiento, atribución o seguimiento y no necesita reenviarlo31* **Consumir**: el gateway puede leerlo para enrutamiento, atribución o rastreo y no necesita reenviarlo

30 32 

31Cualquier cosa no marcada como reenviar sin cambios es suya para consumir o ignorar.33Cualquier cosa no marcada como reenviar sin cambios es suya para consumir o ignorar.

32 34 


34 Formatos de API36 Formatos de API

35</h2>37</h2>

36 38 

37Una puerta de enlace debe exponer al menos uno de los siguientes formatos de API a los clientes de Claude Code. Un cliente elige un formato y apunta Claude Code a su puerta de enlace con las variables en la columna Seleccionado por de la tabla a continuación.39Una puerta de enlace debe exponer al menos uno de los siguientes formatos de API a los clientes de Claude Code. Un cliente elige un formato y apunta Claude Code a su puerta de enlace con las variables en la columna Seleccionado por de la tabla siguiente.

38 40 

39Google Cloud's Agent Platform es el punto de conexión de Claude de Google Cloud, anteriormente Vertex AI; sus nombres de variables mantienen la ortografía `VERTEX`.41Google Cloud's Agent Platform es el punto de conexión de Claude de Google Cloud, anteriormente Vertex AI; sus nombres de variables mantienen la ortografía `VERTEX`.

40 42 

41| Formato | Seleccionado por | Puntos finales | Reenviar sin cambios |43| Formato | Seleccionado por | Puntos de conexión | Reenviar sin cambios |

42| :--------------------------------------- | :----------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |44| :--------------------------------------- | :----------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |

43| Anthropic Messages | `ANTHROPIC_BASE_URL` | `/v1/messages`, `/v1/messages/count_tokens` (opcional) | encabezados de solicitud `anthropic-beta` y `anthropic-version` |45| Anthropic Messages | `ANTHROPIC_BASE_URL` | `/v1/messages`, `/v1/messages/count_tokens` (opcional) | encabezados de solicitud `anthropic-beta` y `anthropic-version` |

44| Amazon Bedrock InvokeModel | `ANTHROPIC_BEDROCK_BASE_URL` con `CLAUDE_CODE_USE_BEDROCK=1` | `/model/{model}/invoke`, `/model/{model}/invoke-with-response-stream`, `/model/{model}/count-tokens` (opcional) | campos de cuerpo de solicitud `anthropic_beta` y `anthropic_version` |46| Amazon Bedrock InvokeModel | `ANTHROPIC_BEDROCK_BASE_URL` con `CLAUDE_CODE_USE_BEDROCK=1` | `/model/{model}/invoke`, `/model/{model}/invoke-with-response-stream`, `/model/{model}/count-tokens` (opcional) | campos de cuerpo de solicitud `anthropic_beta` y `anthropic_version` |


48 Foundry y Claude Platform en AWS50 Foundry y Claude Platform en AWS

49</h3>51</h3>

50 52 

51Microsoft Foundry y la [Claude Platform en AWS](/docs/es/claude-platform-on-aws) implementan el formato Anthropic Messages. Claude Code se enruta a ellos a través de sus propias variables, `ANTHROPIC_FOUNDRY_BASE_URL` y `ANTHROPIC_AWS_BASE_URL`, pero una puerta de enlace que está frente a cualquiera de ellos implementa la fila Anthropic Messages anterior. Una puerta de enlace que está frente a Claude Platform en AWS también debe reenviar el encabezado `anthropic-workspace-id`, que [esa plataforma requiere en cada solicitud](/docs/es/claude-platform-on-aws).53Microsoft Foundry y la [Claude Platform en AWS](/docs/es/claude-platform-on-aws) implementan el formato Anthropic Messages. Claude Code se enruta a través de sus propias variables, `ANTHROPIC_FOUNDRY_BASE_URL` y `ANTHROPIC_AWS_BASE_URL`, pero una puerta de enlace que las frontal implementa la fila Anthropic Messages anterior. Una puerta de enlace que frontal la Claude Platform en AWS también debe reenviar el encabezado `anthropic-workspace-id`, que [esa plataforma requiere en cada solicitud](/docs/es/claude-platform-on-aws).

52 54 

53<h3 id="optional-endpoints-and-startup-traffic">55<h3 id="optional-endpoints-and-startup-traffic">

54 Puntos finales opcionales y tráfico de inicio56 Puntos de conexión opcionales y tráfico de inicio

55</h3>57</h3>

56 58 

57Los puntos finales de conteo de tokens son los únicos opcionales: cuando están ausentes, Claude Code recurre a una estimación basada en caracteres del uso de contexto.59Los puntos de conexión de conteo de tokens son los únicos opcionales: cuando están ausentes, Claude Code recurre a una estimación basada en caracteres del uso del contexto.

58 60 

59Coincida con la ruta, no con la URL completa:61Coincida con la ruta, no con la URL completa:

60 62 

61* Las solicitudes de inferencia se publican en `/v1/messages?beta=true`63* Las solicitudes de inferencia se publican en `/v1/messages?beta=true`

62* Los sufijos del método Google Cloud's Agent Platform se adjuntan a la ruta del modelo del editor, como en `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`64* El método de Google Cloud's Agent Platform sufijos se adjuntan a la ruta del modelo del editor, como en `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`

63 65 

64Una puerta de enlace también ve tráfico de inicio de mejor esfuerzo que puede rechazar sin romper nada. Una puerta de enlace con formato Anthropic Messages recibe una sonda de calentamiento de conexión `HEAD /api/hello`, que Claude Code omite cuando se configura un proxy HTTP o certificado de cliente. Una puerta de enlace con formato Amazon Bedrock recibe una solicitud `GET /inference-profiles?type=SYSTEM_DEFINED` y, cuando el modelo configurado es un perfil de inferencia, búsquedas `GET /inference-profiles/{profile}`.66Una puerta de enlace también ve tráfico de inicio de mejor esfuerzo que puede rechazar sin romper nada. Una puerta de enlace en formato Anthropic Messages recibe una sonda de calentamiento de conexión `HEAD /api/hello`, que Claude Code omite cuando se configura un proxy HTTP o certificado de cliente. Una puerta de enlace en formato Amazon Bedrock recibe una solicitud `GET /inference-profiles?type=SYSTEM_DEFINED` y, cuando el modelo configurado es un perfil de inferencia, búsquedas `GET /inference-profiles/{profile}`.

65 67 

66La verificación de disponibilidad de [modo rápido](/docs/es/fast-mode) nunca aparece en los registros de la puerta de enlace: llama a `api.anthropic.com` directamente en lugar de seguir `ANTHROPIC_BASE_URL`, por lo que en una red que bloquea la salida directa a `api.anthropic.com`, el modo rápido puede reportar un error de conectividad mientras que la inferencia a través de la puerta de enlace sigue funcionando. La [verificación de seguridad del dominio WebFetch](/docs/es/data-usage#webfetch-domain-safety-check) también llama a `api.anthropic.com` directamente. [Usar modo rápido detrás de proxies y puertas de enlace LLM](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) cubre las variables que lo restauran.68La verificación de disponibilidad de [modo rápido](/docs/es/fast-mode) nunca aparece en los registros de la puerta de enlace: llama a `api.anthropic.com` directamente en lugar de seguir `ANTHROPIC_BASE_URL`, por lo que en una red que bloquea la salida directa a `api.anthropic.com`, el modo rápido puede informar un error de conectividad mientras que la inferencia a través de la puerta de enlace sigue funcionando. La [verificación de seguridad del dominio WebFetch](/docs/es/data-usage#webfetch-domain-safety-check) también llama a `api.anthropic.com` directamente. [Usar modo rápido detrás de proxies y puertas de enlace LLM](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) cubre las variables que lo restauran.

67 69 

68<h3 id="streaming">70<h3 id="streaming">

69 Transmisión71 Streaming

70</h3>72</h3>

71 73 

72Transmita las respuestas de inferencia. Claude Code lee la transmisión a medida que llega, por lo que si su puerta de enlace almacena en búfer respuestas completas antes de retransmitirlas, Claude Code se detiene.74Transmita respuestas de inferencia. Claude Code lee la transmisión a medida que llega, por lo que si su puerta de enlace almacena en búfer respuestas completas antes de retransmitirlas, Claude Code se detiene.

73 75 

74Cuando el cliente habla el formato Amazon Bedrock, retransmita el cuerpo de respuesta `InvokeModelWithResponseStream` y su encabezado `Content-Type: application/vnd.amazon.eventstream` sin modificar, y no convierta la transmisión a eventos enviados por el servidor. Consulte [Errores de transmisión detrás de una puerta de enlace o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).76Cuando el cliente habla el formato Amazon Bedrock, retransmita el cuerpo de respuesta `InvokeModelWithResponseStream` y su encabezado `Content-Type: application/vnd.amazon.eventstream` sin modificar, y no convierta la transmisión a eventos enviados por el servidor. Consulte [Errores de streaming detrás de una puerta de enlace o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).

75 77 

76Reenvíe también los pings de mantenimiento de conexión. En conexiones a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`, Claude Code cuenta cada byte que su puerta de enlace retransmite, incluidos los eventos SSE `ping` y líneas de comentario, y aborta una transmisión que se queda en silencio durante 300 segundos de forma predeterminada. Los pings del proveedor ascendente son el único tráfico durante pausas de pensamiento prolongado, por lo que si su puerta de enlace los elimina o los almacena en búfer, Claude Code aborta la transmisión durante esas pausas; [Reintentos automáticos](/docs/es/errors#automatic-retries) cubre lo que una transmisión abortada reporta según cuán lejos haya progresado la respuesta. Un proveedor ascendente que no envía pings en absoluto, como el flujo de eventos binario de Amazon Bedrock, deja esas pausas sin nada que reenviar. Al traducir desde tal proveedor ascendente, emita sus propios eventos `ping` durante brechas silenciosas. Las puertas de enlace alcanzadas a través de `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, o `ANTHROPIC_FOUNDRY_BASE_URL` no están envueltas por este vigilante de nivel de byte, incluso cuando retransmiten el formato Anthropic Messages; allí, un [tiempo de espera de inactividad de 5 minutos](/docs/es/env-vars) aborta una transmisión silenciosa en su lugar, y en conexiones `ANTHROPIC_BEDROCK_BASE_URL` puede agregar el vigilante de byte con [`CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`](/docs/es/env-vars).78Reenvíe también los pings de mantenimiento de conexión. En conexiones a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`, Claude Code cuenta cada byte que su puerta de enlace retransmite, incluidos los eventos SSE `ping` y líneas de comentario, e interrumpe una transmisión que se queda en silencio durante 300 segundos de forma predeterminada. Los pings del proveedor ascendente son el único tráfico durante pausas de pensamiento prolongado, por lo que si su puerta de enlace los elimina o los almacena en búfer, Claude Code interrumpe la transmisión durante esas pausas; [Reintentos automáticos](/docs/es/errors#automatic-retries) cubre lo que una transmisión interrumpida informa según cuán lejos había progresado la respuesta. Un proveedor ascendente que no envía pings en absoluto, como el flujo de eventos binarios de Amazon Bedrock, deja esas pausas sin nada que reenviar. Al traducir desde tal proveedor ascendente, emita sus propios eventos `ping` durante brechas silenciosas. Las puertas de enlace alcanzadas a través de `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, o `ANTHROPIC_FOUNDRY_BASE_URL` no están envueltas por este perro guardián a nivel de bytes, incluso cuando retransmiten el formato Anthropic Messages; allí, un [tiempo de espera de inactividad de 5 minutos](/docs/es/env-vars) interrumpe una transmisión silenciosa en su lugar, y en conexiones `ANTHROPIC_BEDROCK_BASE_URL` puede agregar el perro guardián de bytes con [`CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`](/docs/es/env-vars).

77 79 

78<h3 id="format-mismatch-with-the-upstream">80<h3 id="format-mismatch-with-the-upstream">

79 Desajuste de formato con el proveedor ascendente81 Desajuste de formato con el proveedor ascendente

80</h3>82</h3>

81 83 

82Qué formato habla el cliente determina lo que su puerta de enlace recibe. El modo de fallo común es un desajuste entre el formato que el cliente envía a su puerta de enlace y el formato que el proveedor ascendente detrás de él acepta.84El formato que habla el cliente determina qué recibe su puerta de enlace. El modo de fallo común es un desajuste entre el formato que el cliente envía a su puerta de enlace y el formato que el proveedor ascendente detrás de él acepta.

83 85 

84* Cuando el cliente habla el formato Amazon Bedrock o Google Cloud's Agent Platform, Claude Code envía solo el subconjunto de su conjunto de capacidades completo que esos proveedores aceptan86* Cuando el cliente habla el formato Amazon Bedrock o Google Cloud's Agent Platform, Claude Code envía solo el subconjunto de su conjunto de capacidades completo que esos proveedores aceptan

85* Cuando el cliente habla el formato Anthropic Messages, Claude Code envía el conjunto completo, incluso si su puerta de enlace se reenvía a un proveedor ascendente Amazon Bedrock o Google Cloud's Agent Platform87* Cuando el cliente habla el formato Anthropic Messages, Claude Code envía el conjunto completo, incluso si su puerta de enlace se reenvía a un proveedor ascendente Amazon Bedrock o Google Cloud's Agent Platform

86 88 

87Cerrar esa diferencia es el trabajo de su puerta de enlace. [Paso de características](#feature-pass-through) describe qué se rompe cuando no lo hace.89Hacer puente de esa diferencia es el trabajo de su puerta de enlace. [Paso de características](#feature-pass-through) describe qué se rompe cuando no lo hace.

90 

91Si su proveedor ascendente es Amazon Bedrock o Google Cloud's Agent Platform, puede evitar el puente exponiendo el formato de ese proveedor en su lugar. [Enrutar a un proveedor de nube a través de una puerta de enlace](/docs/es/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway) muestra la configuración del cliente para ese formato.

92 

93<h2 id="how-the-connection-method-changes-client-behavior">

94 Cómo el método de conexión cambia el comportamiento del cliente

95</h2>

96 

97La forma en que un desarrollador se conecta a su gateway determina qué IDs de modelo, valores de `anthropic-beta` y campos de solicitud envía Claude Code, y qué valores predeterminados aplica. Su gateway ve uno de tres comportamientos del cliente:

98 

99* **Formato de Amazon Bedrock o Agent Platform**: el desarrollador establece `CLAUDE_CODE_USE_BEDROCK=1` con `ANTHROPIC_BEDROCK_BASE_URL`, o `CLAUDE_CODE_USE_VERTEX=1` con `ANTHROPIC_VERTEX_BASE_URL`, apuntando a su gateway. Claude Code utiliza los IDs de modelo, campos de solicitud y valores predeterminados de ese proveedor.

100* **Formato de Anthropic Messages**: el desarrollador establece `ANTHROPIC_BASE_URL` en su gateway. Claude Code trata el gateway como la API de Claude y no puede determinar a cuál upstream lo reenvía.

101* **Inicio de sesión en el gateway de aplicaciones Claude**: el desarrollador inicia sesión en un [gateway de aplicaciones Claude](/docs/es/claude-apps-gateway). Ese gateway habla el formato de Anthropic Messages pero puede enrutar a cualquier upstream, por lo que Claude Code envía solo los valores de `anthropic-beta` y las suposiciones de capacidad de modelo que Amazon Bedrock y Agent Platform también aceptan.

102 

103<h3 id="requests-and-defaults-by-connection-method">

104 Solicitudes y valores predeterminados por método de conexión

105</h3>

106 

107La tabla siguiente compara los tres métodos de conexión, un comportamiento por fila. Omite Microsoft Foundry y Claude Platform en AWS, que también utilizan el formato de Anthropic Messages pero a los que Claude Code accede a través de sus propias variables. Para esos, consulte las páginas de [Microsoft Foundry](/docs/es/microsoft-foundry) y [Claude Platform en AWS](/docs/es/claude-platform-on-aws).

108 

109| Comportamiento | Formato de Amazon Bedrock o Agent Platform | Formato de Anthropic Messages | Inicio de sesión en el gateway de aplicaciones Claude |

110| :--------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |

111| IDs de modelo en solicitudes de forma predeterminada | La forma del proveedor, como `us.anthropic.claude-opus-4-8` en Amazon Bedrock | IDs de Anthropic, como `claude-opus-4-8` | IDs de Anthropic |

112| Valores de `anthropic-beta` enviados | El subconjunto que Amazon Bedrock y Agent Platform aceptan | El conjunto completo descrito en [paso de características](#feature-pass-through), a menos que el desarrollador establezca [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](#disable-pre-release-capabilities) | El subconjunto que Amazon Bedrock y Agent Platform aceptan |

113| Campos de solicitud para un ID de modelo que Claude Code no reconoce, como un alias de gateway | Pensamiento con un presupuesto fijo en lugar de razonamiento adaptativo, y sin campos de gestión de esfuerzo o contexto | Todo lo que los modelos Claude actuales aceptan en la API de Claude, incluido el razonamiento adaptativo, el esfuerzo y la gestión del contexto, que un upstream de Amazon Bedrock o Agent Platform puede rechazar | Igual que el formato de Amazon Bedrock o Agent Platform |

114| [TTL de caché de prompt](/docs/es/prompt-caching#choose-the-ttl-yourself) de una hora cuando un desarrollador opta por participar | Solicitado a través del campo `ttl` en `cache_control`, sin valor beta | Solicitado a través del campo `ttl` más un valor `extended-cache-ttl` en `anthropic-beta`, que debe reenviar | Consulte la tabla de [disponibilidad y limitaciones](/docs/es/claude-apps-gateway#availability-and-limitations) del gateway de aplicaciones Claude |

115| Modelo para [tareas en segundo plano](/docs/es/costs#background-token-usage) a menos que `ANTHROPIC_DEFAULT_HAIKU_MODEL` fije uno | El modelo Sonnet predeterminado, o el modelo principal una vez que se selecciona uno, como describen las páginas de [Amazon Bedrock](/docs/es/amazon-bedrock#4-pin-model-versions) y [Agent Platform](/docs/es/google-vertex-ai#5-pin-model-versions) | El modelo principal, o el modelo Haiku predeterminado cuando `ANTHROPIC_API_KEY` o `apiKeyHelper` proporciona una clave de Anthropic Console y `ANTHROPIC_AUTH_TOKEN` no está establecido | El modelo principal |

116 

117Para las características que cada conexión admite y la telemetría que envía a Anthropic de forma predeterminada, consulte [Disponibilidad de características](/docs/es/feature-availability#availability-by-model-provider) y [Comportamientos predeterminados por proveedor de API](/docs/es/data-usage#default-behaviors-by-api-provider).

118 

119<h3 id="settings-for-unrecognized-model-ids">

120 Configuración para IDs de modelo no reconocidos

121</h3>

122 

123Dos configuraciones del lado del cliente cambian lo que Claude Code asume para un ID de modelo que no reconoce, independientemente del método de conexión que utilice el desarrollador:

124 

125* **Ventana de contexto**: Claude Code asume 200K, o 1M cuando el ID lleva `[1m]`. Para declarar la ventana real, consulte [Corrija la ventana para un gateway o ID de modelo personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id)

126* **Capacidades**: para dar a un alias de gateway las capacidades del modelo detrás de él, asigne el ID de Anthropic de ese modelo a su alias con una entrada [`modelOverrides`](/docs/es/errors#unrecognized-model-id-on-a-request) en la configuración que distribuya. Para saber dónde se aplican las variables `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES`, consulte [paso de características](#feature-pass-through)

88 127 

89<h2 id="request-headers">128<h2 id="request-headers">

90 Encabezados de solicitud129 Encabezados de solicitud


115 154 

116La excepción es un proveedor ascendente que no es Anthropic, como Amazon Bedrock o Agent Platform de Google Cloud, donde cerrar la diferencia de esquema es el trabajo de la puerta de enlace; consulte [paso de características](#feature-pass-through).155La excepción es un proveedor ascendente que no es Anthropic, como Amazon Bedrock o Agent Platform de Google Cloud, donde cerrar la diferencia de esquema es el trabajo de la puerta de enlace; consulte [paso de características](#feature-pass-through).

117 156 

157<h2 id="response-headers">

158 Encabezados de respuesta

159</h2>

160 

161Claude Code lee estos encabezados de respuesta para detectar flujos estancados, para decidir si y cuándo reintentar, y para mostrar límites de uso. La tabla enumera qué devolver para cada uno. También reenvíe los cuerpos de respuesta de error sin modificar, para que la [recuperación de rechazo de capacidad](#automatic-retry-and-error-forwarding) de Claude Code pueda coincidir con la redacción del error ascendente.

162 

163| Encabezado | Qué devolver y por qué |

164| :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

165| `content-type` | Devuelva `text/event-stream` en respuestas de formato Anthropic Messages transmitidas, y `application/vnd.amazon.eventstream`, sin modificar, en respuestas de formato Amazon Bedrock, donde [un tipo diferente falla la solicitud](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). [Streaming](#streaming) enumera qué conexiones ejecutan detección de estancamiento en estos flujos |

166| `retry-after` | Devuelva segundos enteros en lugar de una fecha HTTP. Claude Code espera al menos ese tiempo antes del siguiente [reintento automático](/docs/es/errors#automatic-retries), y fuera de sesiones [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars) un valor superior a 60 detiene los reintentos y muestra el error de inmediato |

167| `x-should-retry` | Pase el valor ascendente sin cambios. Claude Code lee este encabezado como una entrada cuando decide si reintentar una solicitud fallida: `true` marca la respuesta como reintentable y `false` la marca como no reintentable. Para recuentos de reintentos, retroceso y qué fallos reintenta Claude Code, consulte [reintentos automáticos](/docs/es/errors#automatic-retries) |

168| `anthropic-ratelimit-unified-*` | Reenvíe los valores ascendentes sin cambios en cada respuesta. Claude Code los lee en respuestas exitosas para mostrar el uso contra los límites del plan a los desarrolladores que iniciaron sesión con claude.ai, y en un `429` para distinguir un límite de plan o límite de gasto de un acelerador temporal; consulte [límites de uso](/docs/es/errors#usage-limits) |

169 

118<h2 id="system-prompt-attribution-block">170<h2 id="system-prompt-attribution-block">

119 Bloque de atribución del mensaje del sistema171 Bloque de atribución del mensaje del sistema

120</h2>172</h2>


168Lo que Claude Code hace después de un rechazo ascendente depende de lo que fue rechazado:220Lo que Claude Code hace después de un rechazo ascendente depende de lo que fue rechazado:

169 221 

170* Cuando el proveedor ascendente rechaza el campo `thinking`, un mensaje del sistema a mitad de conversación, o el marcador `cache_control` en tal mensaje, Claude Code reintenta la solicitud y deshabilita la capacidad rechazada para el resto de la conversación222* Cuando el proveedor ascendente rechaza el campo `thinking`, un mensaje del sistema a mitad de conversación, o el marcador `cache_control` en tal mensaje, Claude Code reintenta la solicitud y deshabilita la capacidad rechazada para el resto de la conversación

171* Cuando el proveedor ascendente rechaza una [firma de pensamiento](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), Claude Code reintenta la solicitud sin los bloques de pensamiento anteriores de la conversación y los mantiene fuera de cada solicitud posterior. Las nuevas respuestas aún incluyen pensamiento223* Cuando el proveedor ascendente rechaza una [firma de pensamiento](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), incluido con un `400` cuyo mensaje dice que el bloque está `bound to a different conversation`, Claude Code elimina bloques de pensamiento anteriores de la solicitud, reintenta, y los mantiene fuera de cada solicitud posterior. Las nuevas respuestas aún incluyen pensamiento

172* Claude Code no reintenta rechazos de gestión de contexto o campos de esquema de herramienta, así que esos errores `400` llegan al desarrollador224* Claude Code no reintenta rechazos de gestión de contexto o campos de esquema de herramienta, así que esos errores `400` llegan al desarrollador

173 225 

226El rechazo `bound to a different conversation` proviene de la verificación de [pensamiento preservado](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking) de la API, que falla cuando el contenido de `system`, `tools`, o `messages` anteriores difiere de la solicitud que produjo el pensamiento. Una puerta de enlace que reescribe cualquiera de ese contenido puede causar el rechazo en sí; [Bibliotecas, proxies y puertas de enlace](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking#libraries-proxies-gateways) cubre qué pasar sin cambios.

227 

174La lógica de reintento coincide con la redacción del error del proveedor ascendente, así que reenvíe cuerpos de respuesta de error sin modificar. Una puerta de enlace que envuelve errores ascendentes en su propio sobre rompe la ruta de recuperación, incluso cuando preserva el código de estado, a menos que el mensaje del sobre lleve un token `capability_rejected:` estable. [La puerta de enlace de aplicaciones Claude sustituye esos tokens por la redacción de error de los proveedores de nube](/docs/es/claude-apps-gateway-config#upstream-error-messages), por ejemplo `capability_rejected: prompt_too_long`.228La lógica de reintento coincide con la redacción del error del proveedor ascendente, así que reenvíe cuerpos de respuesta de error sin modificar. Una puerta de enlace que envuelve errores ascendentes en su propio sobre rompe la ruta de recuperación, incluso cuando preserva el código de estado, a menos que el mensaje del sobre lleve un token `capability_rejected:` estable. [La puerta de enlace de aplicaciones Claude sustituye esos tokens por la redacción de error de los proveedores de nube](/docs/es/claude-apps-gateway-config#upstream-error-messages), por ejemplo `capability_rejected: prompt_too_long`.

175 229 

176<h3 id="disable-pre-release-capabilities">230<h3 id="disable-pre-release-capabilities">


209 Solicitud y respuesta263 Solicitud y respuesta

210</h3>264</h3>

211 265 

212La solicitud es `GET /v1/models?limit=1000` con un tiempo de espera de 3 segundos, y cualquier redirección se trata como fallo para que la credencial no pueda filtrarse a un destino de redirección. Una puerta de enlace que responde lentamente o redirige `/v1/models`, incluso `http` a `https`, falla el descubrimiento silenciosamente; sirva el punto final directamente en la URL base configurada.266La solicitud es `GET /v1/models?limit=1000` con un tiempo de espera de 3 segundos de forma predeterminada, y cualquier redirección se trata como fallo para que la credencial no pueda filtrarse a un destino de redirección. Una puerta de enlace que responde más lentamente que el tiempo de espera, o una que redirige `/v1/models`, incluso `http` a `https`, falla el descubrimiento silenciosamente; sirva el punto final directamente en la URL base configurada.

267 

268Para dar a una puerta de enlace lenta más tiempo, establezca [`CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS`](/docs/es/env-vars#variables). La variable requiere Claude Code v2.1.269 o posterior.

213 269 

214Claude Code envía la solicitud de descubrimiento con ambos encabezados de credencial a continuación y omite un encabezado cuyo valor no se resuelve. Enviar ambos encabezados requiere Claude Code v2.1.248 o posterior. Las versiones anteriores envían solo `Authorization` cuando `ANTHROPIC_AUTH_TOKEN` se establece y solo `x-api-key` de lo contrario.270Claude Code envía la solicitud de descubrimiento con ambos encabezados de credencial a continuación y omite un encabezado cuyo valor no se resuelve. Enviar ambos encabezados requiere Claude Code v2.1.248 o posterior. Las versiones anteriores envían solo `Authorization` cuando `ANTHROPIC_AUTH_TOKEN` se establece y solo `x-api-key` de lo contrario.

215 271 

Details

282Después de la implementación, tres tipos de cambios llegan a la puerta de enlace con el tiempo. Cada uno tiene un síntoma a vigilar y una acción a tomar.282Después de la implementación, tres tipos de cambios llegan a la puerta de enlace con el tiempo. Cada uno tiene un síntoma a vigilar y una acción a tomar.

283 283 

284| Cambio | Síntoma cuando la puerta de enlace no se ha puesto al día | Acción |284| Cambio | Síntoma cuando la puerta de enlace no se ha puesto al día | Acción |

285| :----------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |285| :----------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

286| Los nuevos lanzamientos de Claude Code añaden valores `anthropic-beta` y campos de cuerpo de solicitud | Los desarrolladores reportan errores `400` que nombran un nuevo campo después de actualizar Claude Code; consulte [paso de características](/docs/es/llm-gateway-protocol#feature-pass-through) | Reenvíe encabezados `anthropic-*` y cuerpos de solicitud textualmente en lugar de permitir listas; pruebe nuevos lanzamientos de Claude Code contra la puerta de enlace antes de que lleguen a los desarrolladores |286| Los nuevos lanzamientos de Claude Code añaden valores `anthropic-beta` y campos de cuerpo de solicitud | Los desarrolladores reportan errores `400` que nombran un nuevo campo después de actualizar Claude Code; consulte [paso de características](/docs/es/llm-gateway-protocol#feature-pass-through) | Reenvíe encabezados `anthropic-*` y cuerpos de solicitud textualmente en lugar de permitir listas; pruebe nuevos lanzamientos de Claude Code contra la puerta de enlace antes de que lleguen a los desarrolladores, comprobando las áreas en [Planificar actualizaciones de versión de Claude Code](#plan-claude-code-version-upgrades) |

287| Nuevos modelos Claude se vuelven disponibles | Los desarrolladores que seleccionan un nuevo nombre de modelo obtienen `404`; el selector `/model` no lo lista | Añada el nombre del modelo a la configuración de enrutamiento de la puerta de enlace, luego vuelva a ejecutar la [verificación de enrutamiento](#confirm-the-gateway-routes-your-models). Si distribuye `ANTHROPIC_MODEL` o las variables de modelo predeterminado, actualice la configuración administrada |287| Nuevos modelos Claude se vuelven disponibles | Los desarrolladores que seleccionan un nuevo nombre de modelo obtienen `404`; el selector `/model` no lo lista | Añada el nombre del modelo a la configuración de enrutamiento de la puerta de enlace, luego vuelva a ejecutar la [verificación de enrutamiento](#confirm-the-gateway-routes-your-models). Si distribuye `ANTHROPIC_MODEL` o las variables de modelo predeterminado, actualice la configuración administrada |

288| Las credenciales expiran o necesitan rotación | Todas las solicitudes de desarrollador comienzan a fallar con `401` del ascendente | Rote la credencial de proveedor de la puerta de enlace en su propio cronograma; las claves de desarrollador rotan en la puerta de enlace, y un [`apiKeyHelper`](/docs/es/llm-gateway-connect#rotate-credentials-with-apikeyhelper) maneja la rotación por desarrollador sin redistribuir configuración |288| Las credenciales expiran o necesitan rotación | Todas las solicitudes de desarrollador comienzan a fallar con `401` del ascendente | Rote la credencial de proveedor de la puerta de enlace en su propio cronograma; las claves de desarrollador rotan en la puerta de enlace, y un [`apiKeyHelper`](/docs/es/llm-gateway-connect#rotate-credentials-with-apikeyhelper) maneja la rotación por desarrollador sin redistribuir configuración |

289 289 

290Al dimensionar límites de velocidad por clave, tenga en cuenta que el cliente [reintenta fallos transitorios](/docs/es/errors#automatic-retries), incluidas respuestas `429`, hasta 10 veces con retroceso, honrando `Retry-After`. Mantenga la [guía de compatibilidad](/docs/es/llm-gateway-protocol) como referencia para lo que cada lanzamiento de Claude Code envía.290Al dimensionar límites de velocidad por clave, tenga en cuenta que el cliente [reintenta fallos transitorios](/docs/es/errors#automatic-retries), incluidas respuestas `429`, hasta 10 veces con retroceso, honrando `Retry-After`. Mantenga la [guía de compatibilidad](/docs/es/llm-gateway-protocol) como referencia para lo que cada lanzamiento de Claude Code envía.

291 291 

292<h3 id="plan-claude-code-version-upgrades">

293 Planificar actualizaciones de versión de Claude Code

294</h3>

295 

296Algunos comportamientos de Claude Code están integrados en la versión instalada en lugar de configurarse en su puerta de enlace, por lo que mover desarrolladores a un nuevo lanzamiento puede cambiar el comportamiento en toda su implementación incluso cuando la configuración de la puerta de enlace no ha cambiado. Para controlar cuándo sucede eso, fije los desarrolladores a una versión probada con [`requiredMaximumVersion`](/docs/es/settings-reference#requiredmaximumversion), o con [`DISABLE_UPDATES`](/docs/es/setup#disable-auto-updates) si distribuye Claude Code a través de su propio canal. Antes de aumentar la fijación, lea la entrada del [registro de cambios](/docs/en/changelog) del nuevo lanzamiento y [pruébelo contra la puerta de enlace](#test-claude-code-against-the-gateway).

297 

298Cuando prueba un lanzamiento, los nuevos encabezados o campos de solicitud que la puerta de enlace rechaza aparecen como los errores `400` descritos en [Mantener la puerta de enlace](#maintain-the-gateway). La tabla siguiente cubre cambios dependientes de la versión que no producen un error, con la configuración que mantiene cada uno constante en las actualizaciones.

299 

300| Área | Qué puede cambiar cuando los desarrolladores actualizan | Configuración que lo mantiene constante |

301| :-------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

302| Valores predeterminados de indicadores de características | Las sesiones que [no obtienen indicadores de características de Anthropic](/docs/es/env-vars#features-that-need-feature-flag-fetching), como sesiones en un proveedor de nube o con telemetría desactivada, utilizan los valores predeterminados de indicadores integrados en la versión instalada. Cuando un lanzamiento cambia uno de esos valores predeterminados, el comportamiento cambia para esos desarrolladores tan pronto como actualicen | La fijación de versión en sí, `requiredMaximumVersion` o `DISABLE_UPDATES` |

303| Suposiciones de capacidad del modelo | Un ID de modelo que la versión instalada no reconoce, como el alias de puerta de enlace `prod-opus`, se ejecuta en suposiciones predeterminadas para [razonamiento adaptativo](/docs/es/model-config#adaptive-reasoning-and-fixed-thinking-budgets), el parámetro de esfuerzo y la [ventana de contexto](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) hasta que una versión posterior reconoce el ID o lo asigna | Enrute IDs de modelo de Anthropic en la puerta de enlace, o añada una entrada [`modelOverrides`](/docs/es/model-config#override-model-ids-per-version) que asigne el ID de modelo de Anthropic a su alias. En una conexión de proveedor de nube, puede en su lugar [declarar las capacidades de un modelo fijado](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

304| Modelo predeterminado y alias | El modelo en el que las nuevas sesiones comienzan de forma predeterminada, y los modelos que alias como `opus` y `sonnet` resuelven, están [integrados en cada versión](/docs/es/model-config#pin-models-for-third-party-deployments) y pueden cambiar cuando los desarrolladores actualizan | [`ANTHROPIC_DEFAULT_MODEL`](/docs/es/model-config#set-a-default-model-for-new-sessions) para el modelo en el que las nuevas sesiones comienzan, y las [variables `ANTHROPIC_DEFAULT_*_MODEL`](/docs/es/model-config#environment-variables), como `ANTHROPIC_DEFAULT_OPUS_MODEL`, para lo que cada alias resuelve. `ANTHROPIC_DEFAULT_MODEL` requiere Claude Code v2.1.236 o posterior |

305 

292<h2 id="related-resources">306<h2 id="related-resources">

293 Recursos relacionados307 Recursos relacionados

294</h2>308</h2>

managed-mcp.md +26 −12

Details

48 Control exclusivo con managed-mcp.json48 Control exclusivo con managed-mcp.json

49</h2>49</h2>

50 50 

51Si implementa un archivo `managed-mcp.json`, Claude Code carga solo los servidores que ese archivo define, los servidores que [proporciona a través de `managedMcpServers`](#provide-servers-through-managed-settings), más cualquier servidor en proceso que la aplicación que inició la sesión registra, como el servidor propio de la extensión de VS Code o los [conectores que entrega la aplicación de escritorio](/docs/es/mcp#how-connectors-reach-claude-code). Los usuarios no pueden agregar, modificar ni usar ningún otro servidor MCP, incluidos los servidores proporcionados por plugins y los servidores pasados con la [bandera CLI `--mcp-config`](/docs/es/cli-reference#cli-flags). El archivo también suprime los conectores de claude.ai que Claude Code obtiene por sí mismo a menos que [los permita junto con el conjunto administrado](#allow-claude-ai-connectors-alongside-the-managed-set).51Cuando implementa un archivo `managed-mcp.json`, Claude Code carga solo estos servidores MCP:

52 

53* Los servidores que el archivo define

54* Servidores que [proporciona a través de `managedMcpServers`](#provide-servers-through-managed-settings)

55* Servidores en proceso que la aplicación que inició la sesión registra, como el servidor propio de la extensión de VS Code o los [conectores que entrega la aplicación de escritorio](/docs/es/mcp#how-connectors-reach-claude-code)

56 

57Los usuarios no pueden agregar, modificar ni usar ningún otro servidor MCP, incluidos los servidores proporcionados por plugins y los servidores pasados con la [bandera CLI `--mcp-config`](/docs/es/cli-reference#cli-flags). El archivo también suprime los conectores de claude.ai que Claude Code obtiene por sí mismo a menos que [los permita junto con el conjunto administrado](#allow-claude-ai-connectors-alongside-the-managed-set).

52 58 

53<h3 id="deploy-managed-mcp-json">59<h3 id="deploy-managed-mcp-json">

54 Implementar managed-mcp.json60 Implementar managed-mcp.json


103 Servidores pasados con `--mcp-config` o `--strict-mcp-config`109 Servidores pasados con `--mcp-config` o `--strict-mcp-config`

104</h3>110</h3>

105 111 

106Cuando una sesión recibe servidores a través de `--mcp-config` mientras `managed-mcp.json` está implementado, lo que el usuario ve difiere entre una estación de trabajo y una sesión en la nube:112Cuando una sesión recibe servidores a través de `--mcp-config` mientras un `managed-mcp.json` que Claude Code puede leer y analizar está implementado, lo que el usuario ve difiere entre una estación de trabajo y una sesión en la nube:

107 113 

108* En una estación de trabajo, Claude Code sale al inicio con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.114* En una estación de trabajo, Claude Code sale al inicio con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

109* En [sesiones en la nube](/docs/es/claude-code-on-the-web) en un host donde el archivo está implementado, como un [ejecutor autohospedado](/docs/es/self-hosted-environments-configuration#mcp-servers), Claude Code se inicia solo con los servidores administrados y omite los conectores de claude.ai y otros servidores que el host en la nube entrega a través de `--mcp-config`. Nada en la sesión le dice al usuario qué servidores se dejaron fuera. Claude Code los nombra en una advertencia en su stderr, que un ejecutor autohospedado registra en el nivel de registro `debug`.115* En [sesiones en la nube](/docs/es/claude-code-on-the-web) en un host donde el archivo está implementado, como un [ejecutor autohospedado](/docs/es/self-hosted-environments-configuration#mcp-servers), Claude Code se inicia solo con los servidores administrados y omite los conectores de claude.ai y otros servidores que el host en la nube entrega a través de `--mcp-config`. Nada en la sesión le dice al usuario qué servidores se dejaron fuera. Claude Code los nombra en una advertencia en su stderr, que un ejecutor autohospedado registra en el nivel de registro `debug`.

110 116 

111Si un usuario pasa `--strict-mcp-config`, Claude Code sale al inicio en una estación de trabajo y en una sesión en la nube por igual, porque esa bandera solicita reemplazar el conjunto administrado.117La bandera `--strict-mcp-config` solicita reemplazar el conjunto administrado. Si un usuario la pasa mientras tal archivo está implementado, Claude Code sale al inicio en una estación de trabajo y en una sesión en la nube por igual.

112 118 

113<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">119<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">

114 Cómo se aplican las listas de permitidos y denegar al conjunto administrado120 Cómo se aplican las listas de permitidos y denegar al conjunto administrado


129 135 

130Para confirmar que el archivo está en vigor, ejecute dos verificaciones en una máquina administrada:136Para confirmar que el archivo está en vigor, ejecute dos verificaciones en una máquina administrada:

131 137 

1321. `claude mcp list` muestra solo los servidores en `managed-mcp.json`, más cualquiera que proporcione a través de `managedMcpServers`. Si los propios servidores de un usuario aún aparecen, el archivo no se está leyendo; verifique la ruta y los permisos.1381. `claude mcp list` muestra solo los servidores en `managed-mcp.json`, más cualquiera que proporcione a través de `managedMcpServers`. Dos otros resultados significan que algo está mal:

139 * Si los propios servidores de un usuario aún aparecen, Claude Code no está leyendo el archivo, así que verifique su ruta y los permisos en sus directorios principales.

140 * Si los servidores del archivo no aparecen y la sección `MCP config diagnostics` marca la configuración empresarial como error al analizar, Claude Code no puede leer ni analizar el archivo. Corrija el error que esa sección nombra, luego haga que el usuario reinicie Claude Code.

1332. `claude mcp add --transport http test https://example.com/mcp` falla con `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. La URL no necesita ser un servidor real, ya que la verificación de política rechaza el comando antes de que se contacte con nada.1412. `claude mcp add --transport http test https://example.com/mcp` falla con `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. La URL no necesita ser un servidor real, ya que la verificación de política rechaza el comando antes de que se contacte con nada.

134 142 

135<h3 id="disable-mcp-entirely">143<h3 id="disable-mcp-entirely">


267 275 

268Para entregar servidores a los usuarios, use [`managed-mcp.json`](#exclusive-control-with-managed-mcp-json) o [`managedMcpServers`](#provide-servers-through-managed-settings). Ambas listas también filtran servidores pasados con la bandera CLI [`--mcp-config`](/docs/es/cli-reference#cli-flags), excepto las entradas `type: "sdk"` en proceso; `--strict-mcp-config` limita qué archivos de configuración se cargan y no omite ninguna de las dos listas.276Para entregar servidores a los usuarios, use [`managed-mcp.json`](#exclusive-control-with-managed-mcp-json) o [`managedMcpServers`](#provide-servers-through-managed-settings). Ambas listas también filtran servidores pasados con la bandera CLI [`--mcp-config`](/docs/es/cli-reference#cli-flags), excepto las entradas `type: "sdk"` en proceso; `--strict-mcp-config` limita qué archivos de configuración se cargan y no omite ninguna de las dos listas.

269 277 

270Para hacer que la lista de permitidos sea autoritaria, establezca `allowedMcpServers` y `allowManagedMcpServersOnly: true` juntos en una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices), como configuración administrada por servidor o un archivo `managed-settings.json` implementado. [Restringir la lista de permitidos solo a configuración administrada](#restrict-the-allowlist-to-managed-settings-only) muestra la configuración. Sin `allowManagedMcpServersOnly`, las listas de permitidos de cada ámbito de configuración se fusionan, incluido el `~/.claude/settings.json` del usuario, por lo que un usuario puede ampliar lo que su lista de permitidos permite. Las listas de bloqueados se fusionan desde cada ámbito independientemente.278Para hacer que la lista de permitidos sea autoritaria, establezca `allowedMcpServers` y `allowManagedMcpServersOnly: true` juntos en una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices), como configuración administrada por servidor o un archivo `managed-settings.json` implementado.

279 

280El bloqueo se aplica desde cada fuente administrada controlada por administrador, por lo que un bloqueo en un archivo implementado aún se aplica cuando la configuración administrada por servidor que no menciona MCP también está en uso. Mientras el bloqueo está activado, la lista de permitidos administrada proviene de la fuente administrada de mayor rango que establece una. Leer el bloqueo y la lista de permitidos entre fuentes requiere Claude Code v2.1.273 o posterior.

281 

282[Restringir la lista de permitidos solo a configuración administrada](#restrict-the-allowlist-to-managed-settings-only) muestra la configuración.

283 

284Sin `allowManagedMcpServersOnly`, las listas de permitidos de cada ámbito de configuración se fusionan, incluido el `~/.claude/settings.json` del usuario, por lo que un usuario puede ampliar lo que su lista de permitidos permite. Las listas de bloqueados se fusionan desde cada ámbito independientemente.

271 285 

272<Note>286<Note>

273 `allowManagedMcpServersOnly` es independiente de `allowManagedPermissionRulesOnly`, que bloquea solo [reglas de permisos](/docs/es/permissions#managed-settings). Establecer esa bandera no aplica la lista de permitidos de MCP.287 `allowManagedMcpServersOnly` es independiente de `allowManagedPermissionRulesOnly`, que bloquea solo [reglas de permisos](/docs/es/permissions#managed-settings). Establecer esa bandera no aplica la lista de permitidos de MCP.


300 314 

301La validación de `serverName` difiere entre las dos listas:315La validación de `serverName` difiere entre las dos listas:

302 316 

303* En `deniedMcpServers`, `serverName` acepta cualquier cadena no vacía, por lo que puede bloquear [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) por su nombre para mostrar. Por ejemplo, `{ "serverName": "claude.ai Slack" }` bloquea el conector de Slack. Prefiera una entrada `serverUrl` cuando necesite que la denegación sea robusta ante cambios de nombre, o cuando un nombre de conector colisiona y gana un sufijo ` (N)`.317* En `deniedMcpServers`, `serverName` acepta cualquier cadena no vacía sin espacios en blanco iniciales o finales, por lo que puede bloquear [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) por su nombre para mostrar. Por ejemplo, `{ "serverName": "claude.ai Slack" }` bloquea el conector de Slack. Prefiera una entrada `serverUrl` cuando necesite que la denegación sea robusta ante cambios de nombre, o cuando un nombre de conector colisiona y gana un sufijo ` (N)`.

304* En `allowedMcpServers`, `serverName` se limita a letras, números, guiones e guiones bajos. Use `serverUrl` para permitir un conector de claude.ai que Claude Code obtiene por sí mismo; para conectores que un host en la nube entrega a sesiones autohospedadas, use las entradas enumeradas en [El tráfico del conector sale de su red](/docs/es/self-hosted-environments-deploy#connector-traffic-leaves-your-network) en su lugar.318* En `allowedMcpServers`, `serverName` se limita a letras, números, guiones e guiones bajos. Use `serverUrl` para permitir un conector de claude.ai que Claude Code obtiene por sí mismo; para conectores que un host en la nube entrega a sesiones autohospedadas, use las entradas enumeradas en [El tráfico del conector sale de su red](/docs/es/self-hosted-environments-deploy#connector-traffic-leaves-your-network) en su lugar.

305 319 

306Para desactivar todos los conectores de claude.ai que Claude Code obtiene por sí mismo, vea [`disableClaudeAiConnectors`](/docs/es/mcp#disable-claude-ai-connectors).320Para desactivar todos los conectores de claude.ai que Claude Code obtiene por sí mismo, vea [`disableClaudeAiConnectors`](/docs/es/mcp#disable-claude-ai-connectors).


311 325 

312Antes de cargar un servidor, incluido uno de `managed-mcp.json`, Claude Code ejecuta las tres comprobaciones a continuación en orden. Las ejecuta nuevamente cuando un usuario reconecta un servidor o activa uno deshabilitado en `/mcp`. Los servidores `type: "sdk"` en proceso, que [la aplicación que inició la sesión registra](/docs/es/mcp#how-connectors-reach-claude-code), omiten las tres.326Antes de cargar un servidor, incluido uno de `managed-mcp.json`, Claude Code ejecuta las tres comprobaciones a continuación en orden. Las ejecuta nuevamente cuando un usuario reconecta un servidor o activa uno deshabilitado en `/mcp`. Los servidores `type: "sdk"` en proceso, que [la aplicación que inició la sesión registra](/docs/es/mcp#how-connectors-reach-claude-code), omiten las tres.

313 327 

3141. **Fusionar las listas.** Las entradas de lista de permitidos y lista de bloqueados de cada ámbito de configuración se combinan en una lista de permitidos y una lista de bloqueados, con las listas del ámbito administrado provenientes de la [fuente o fuentes administradas que Claude Code aplica](/docs/es/managed-settings#how-claude-code-combines-managed-sources). Cuando `allowManagedMcpServersOnly` es `true`, solo se mantiene la lista de permitidos administrada; la lista de bloqueados siempre se fusiona desde cada ámbito.3281. **Fusionar las listas.** Las entradas de lista de permitidos y lista de bloqueados de cada ámbito de configuración se combinan en una lista de permitidos y una lista de bloqueados. Cuando `allowManagedMcpServersOnly` es `true`, solo se mantiene la lista de permitidos administrada; la lista de bloqueados siempre se fusiona desde cada ámbito. Cuando hay más de una fuente administrada presente, [Las claves se leen desde cada fuente administrada](/docs/es/managed-settings#keys-read-from-every-admin-source) dice cuál de ellas suministra las listas del ámbito administrado.

3152. **Verificar la lista de bloqueados.** Un servidor que coincida con cualquier entrada de lista de bloqueados, por URL, comando o nombre, se bloquea. Nada anula una coincidencia de lista de bloqueados.3292. **Verificar la lista de bloqueados.** Un servidor que coincida con cualquier entrada de lista de bloqueados, por URL, comando o nombre, se bloquea. Nada anula una coincidencia de lista de bloqueados.

3163. **Verificar la lista de permitidos.** Si `allowedMcpServers` no está establecido en ningún lugar, cada servidor que pasó la lista de bloqueados se carga. Si está establecido, lo que el servidor debe coincidir depende de su tipo, que se muestra en la tabla a continuación.3303. **Verificar la lista de permitidos.** Si `allowedMcpServers` no está establecido en ningún lugar, cada servidor que pasó la lista de bloqueados se carga. Si está establecido, lo que el servidor debe coincidir depende de su tipo, que se muestra en la tabla a continuación.

317 331 


503| El servidor está en una lista de bloqueo y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |517| El servidor está en una lista de bloqueo y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |

504| El servidor no está en la lista de permitidos y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |518| El servidor no está en la lista de permitidos y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |

505| El usuario ejecuta `claude mcp remove` en un servidor de `managedMcpServers` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |519| El usuario ejecuta `claude mcp remove` en un servidor de `managedMcpServers` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |

506| Un servidor previamente configurado ahora está bloqueado por política | El servidor desaparece silenciosamente de `/mcp` y `claude mcp list` sin advertencia |520| Un servidor previamente configurado ahora está bloqueado por política | El servidor desaparece de `/mcp` y `claude mcp list` |

507| Un servidor se bloquea mientras se ejecuta una sesión y el usuario selecciona **Reconnect** o lo vuelve a activar en `/mcp` | [`MCP server <name> is blocked by enterprise managed policy`](/docs/es/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |521| Un servidor se bloquea mientras se ejecuta una sesión y el usuario selecciona **Reconnect** o lo vuelve a activar en `/mcp` | [`MCP server <name> is blocked by enterprise managed policy`](/docs/es/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |

508 522 

509Cuando un servidor desaparece silenciosamente, el usuario no recibe ninguna señal de que la política sea la razón, así que informe a los usuarios afectados qué servidores están bloqueados cuando implemente una nueva restricción.523Cuando un servidor desaparece silenciosamente, el usuario no recibe ninguna señal de que la política sea la razón, así que informe a los usuarios afectados qué servidores están bloqueados cuando implemente una nueva restricción.


521Cada archivo y configuración que cubre esta página, qué controla y cómo entregarlo:535Cada archivo y configuración que cubre esta página, qué controla y cómo entregarlo:

522 536 

523| Superficie | Qué controla | Dónde vive | Cómo entregar |537| Superficie | Qué controla | Dónde vive | Cómo entregar |

524| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |538| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

525| `managed-mcp.json` | Conjunto de servidor fijo, control exclusivo | Ruta del sistema: `/Library/Application Support/ClaudeCode/`, `/etc/claude-code/`, o `C:\Program Files\ClaudeCode\` | MDM, GPO, administración de flota, o cualquier proceso con privilegios de administrador. No se puede establecer a través de configuración administrada por servidor |539| `managed-mcp.json` | Conjunto de servidor fijo, control exclusivo | Ruta del sistema: `/Library/Application Support/ClaudeCode/`, `/etc/claude-code/`, o `C:\Program Files\ClaudeCode\` | MDM, GPO, administración de flota, o cualquier proceso con privilegios de administrador. No se puede establecer a través de configuración administrada por servidor |

526| `managedMcpServers` | Servidores remotos proporcionados a cada usuario junto con los suyos propios | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices): configuración administrada por servidor, una política de puerta de enlace, `managed-settings.json`, perfil MDM, o registro HKLM |540| `managedMcpServers` | Servidores remotos proporcionados a cada usuario junto con los suyos propios | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices): configuración administrada por servidor, una política de puerta de enlace, `managed-settings.json`, perfil MDM, o registro HKLM |

527| `allowedMcpServers` | Lista de permitidos de servidores permitidos | Cualquier [ámbito de configuración](/docs/es/settings#where-settings-live); Claude Code fusiona las listas de cada ámbito a menos que `allowManagedMcpServersOnly` esté establecido, y toma la lista del ámbito administrado de la [fuente administrada que selecciona](/docs/es/managed-settings#precedence-within-the-managed-tier) o [compone](/docs/es/managed-settings#compose-every-managed-source) | Para aplicación, una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices): configuración administrada por servidor, `managed-settings.json`, perfil MDM, o registro |541| `allowedMcpServers` | Lista de permitidos de servidores permitidos | Cualquier [ámbito de configuración](/docs/es/settings#where-settings-live); [Cómo se evalúa un servidor](#how-a-server-is-evaluated) dice cómo se combinan las listas de varios ámbitos y fuentes administradas | Para aplicación, una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices): configuración administrada por servidor, `managed-settings.json`, perfil MDM, o registro |

528| `deniedMcpServers` | Lista de bloqueados de servidores bloqueados | Cualquier ámbito de configuración; Claude Code fusiona las listas de cada ámbito, y entre fuentes administradas como [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) describe | Igual que `allowedMcpServers` |542| `deniedMcpServers` | Lista de bloqueados de servidores bloqueados | Cualquier ámbito de configuración; [Cómo se evalúa un servidor](#how-a-server-is-evaluated) dice cómo se combinan las listas de varios ámbitos y fuentes administradas | Igual que `allowedMcpServers` |

529| `allowManagedMcpServersOnly` | Bloquea la lista de permitidos solo a fuentes administradas | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Igual que `allowedMcpServers` |543| `allowManagedMcpServersOnly` | Bloquea la lista de permitidos solo a fuentes administradas | Solo fuentes de configuración administrada; [Las claves leídas de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source) dice qué fuentes administradas pueden activarla. La configuración no tiene efecto en otros ámbitos | Igual que `allowedMcpServers` |

530| `allowAllClaudeAiMcps` | Carga los conectores de claude.ai que Claude Code obtiene por sí mismo junto con `managed-mcp.json`. [Un `managed-mcp.json` en el host que ejecuta una sesión en la nube aún suprime los conectores de esa sesión](#allow-claude-ai-connectors-alongside-the-managed-set) | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Igual que `allowedMcpServers` |544| `allowAllClaudeAiMcps` | Carga los conectores de claude.ai que Claude Code obtiene por sí mismo junto con `managed-mcp.json`. [Un `managed-mcp.json` en el host que ejecuta una sesión en la nube aún suprime los conectores de esa sesión](#allow-claude-ai-connectors-alongside-the-managed-set) | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Igual que `allowedMcpServers` |

531 545 

532<h2 id="related-resources">546<h2 id="related-resources">

Details

60El archivo en los pasos anteriores es una de cuatro formas de obtener la configuración administrada en una máquina. Cada mecanismo lleva las mismas claves de política que un archivo `settings.json`, por lo que la [referencia de configuración](/docs/es/settings-reference) se aplica a todos ellos. Algunas claves están vinculadas a fuentes particulares, y la línea Scope de cada entrada dice cuál:60El archivo en los pasos anteriores es una de cuatro formas de obtener la configuración administrada en una máquina. Cada mecanismo lleva las mismas claves de política que un archivo `settings.json`, por lo que la [referencia de configuración](/docs/es/settings-reference) se aplica a todos ellos. Algunas claves están vinculadas a fuentes particulares, y la línea Scope de cada entrada dice cuál:

61 61 

62* **Controles de entrega**: [`policyHelper`](/docs/es/settings-reference#policyhelper), [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) y [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior)62* **Controles de entrega**: [`policyHelper`](/docs/es/settings-reference#policyhelper), [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) y [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior)

63* **Claves de inicio de sesión de puerta de enlace**: [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl) y el valor `"gateway"` de [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod)63* **Claves de inicio de sesión de puerta de enlace**: [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/es/settings-reference#gatewayinternalnetworks) y el valor `"gateway"` de [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod)

64 64 

65Un archivo de configuración administrada, un perfil MDM o la consola claude.ai aplica una política a todos los que alcanza. Para dar a un grupo de desarrolladores una política diferente, implemente un archivo o perfil diferente en ese grupo; la consola claude.ai [aún no puede dirigirse a un grupo](/docs/es/server-managed-settings#current-limitations), mientras que una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) autohospedada entrega la configuración administrada por grupo de IdP.65Un archivo de configuración administrada, un perfil MDM o la consola claude.ai aplica una política a todos los que alcanza. Para dar a un grupo de desarrolladores una política diferente, implemente un archivo o perfil diferente en ese grupo; la consola claude.ai [aún no puede dirigirse a un grupo](/docs/es/server-managed-settings#current-limitations), mientras que una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) autohospedada entrega la configuración administrada por grupo de IdP.

66 66 


141 Cómo Claude Code combina fuentes administradas141 Cómo Claude Code combina fuentes administradas

142</h2>142</h2>

143 143 

144Cuando su organización entrega más de una fuente administrada a la misma máquina, la clave [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) decide qué hace Claude Code con las otras:144Cuando su organización entrega más de una fuente administrada a la misma máquina, la clave [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) decide qué hace Claude Code con las demás:

145 145 

146* **`"first-wins"`, el predeterminado**: Claude Code usa la fuente de mayor rango que entrega al menos una clave de política e ignora el resto en lugar de fusionarlas, aparte de las pocas claves en [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source). Claude Code no muestra advertencia para las fuentes que omite; `/status` [nombra la fuente que usó y las que omitió](#read-the-source-in-/status).146* **`"first-wins"`, el valor predeterminado**: Claude Code utiliza la fuente de mayor rango que entrega al menos una clave de política e ignora el resto en lugar de fusionarlas, aparte de las claves en [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source). Claude Code no muestra ninguna advertencia para las fuentes que omite; `/status` [nombra la fuente que utilizó y las que omitió](#read-the-source-in-/status).

147* **`"merge"`**: Claude Code aplica cada fuente de administrador que entrega una clave de política y las combina por tipo de clave: en la mayoría de las claves el valor de la fuente de mayor rango se aplica, las listas se unen y los bloqueos toman el valor más restrictivo. [Componer cada fuente administrada](#compose-every-managed-source) dice dónde establecer la clave y cómo se combina cada tipo de clave. Requiere Claude Code v2.1.242 o posterior.147* **`"merge"`**: Claude Code aplica cada fuente de administrador que entrega una clave de política y las combina por tipo de clave: en la mayoría de las claves se aplica el valor de la fuente de mayor rango, las listas se unen y los bloqueos toman el valor más restrictivo. [Componer cada fuente administrada](#compose-every-managed-source) dice dónde establecer la clave y cómo se combina cada tipo de clave. Requiere Claude Code v2.1.242 o posterior.

148 148 

149Ambas configuraciones clasifican las fuentes de la misma manera. Dos términos se repiten en esta sección:149Ambas configuraciones clasifican las fuentes de la misma manera. Estos términos se repiten en esta sección:

150 150 

151* **Clave de política**: cualquier clave de configuración que no sea las dos claves de control, [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) y [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior). Un archivo de configuración administrada o política MDM que contiene solo esas no cuenta, y Claude Code pasa a la siguiente fuente.151* **Clave de política**: cualquier clave de configuración que no sea las dos claves de control, [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) y [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior). Un archivo de configuración administrada o una política MDM que contenga solo esas no cuenta, y Claude Code pasa a la siguiente fuente.

152* **Fuente de administrador**: una de las primeras tres fuentes a continuación. El registro HKCU que se puede escribir por el usuario no es una.152* **Fuente de administrador**: una de las tres primeras fuentes a continuación. El registro HKCU es escribible por el usuario y no es una.

153 153 

154Claude Code verifica las fuentes en este orden, de mayor a menor prioridad:154Claude Code comprueba las fuentes en este orden, con la máxima prioridad primero:

155 155 

1561. Configuración remota, entregada desde claude.ai como [configuración administrada por servidor](/docs/es/server-managed-settings) o por una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway). Claude Code obtiene esta fuente solo cuando la sesión se autentica en la API de Anthropic directamente con un [inicio de sesión o clave elegible](/docs/es/server-managed-settings#platform-availability), o inicia sesión en una puerta de enlace con `/login`. En otros proveedores, o cuando `ANTHROPIC_BASE_URL` apunta a otro lugar que no sea la API de Anthropic, comienza en la siguiente fuente1561. Configuración remota, entregada desde claude.ai como [configuración administrada por servidor](/docs/es/server-managed-settings) o por una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway). Claude Code obtiene esta fuente solo cuando la sesión se autentica en la API de Anthropic directamente con un [inicio de sesión o clave elegible](/docs/es/server-managed-settings#platform-availability), o inicia sesión en una puerta de enlace con `/login`. En otros proveedores, o cuando `ANTHROPIC_BASE_URL` apunta a algún lugar que no sea la API de Anthropic, comienza en la siguiente fuente

1572. Políticas MDM o a nivel de SO: la plist de macOS o la clave de registro HKLM1572. Políticas de MDM o a nivel del SO: la clave de registro plist de macOS o HKLM

1583. Archivos de configuración administrada, `managed-settings.d/*.json` y `managed-settings.json` fusionados juntos1583. Archivos de configuración administrada, `managed-settings.d/*.json` y `managed-settings.json` fusionados juntos

1594. El registro HKCU, en Windows, y en WSL una vez que el registro HKLM o el archivo de configuración administrada de Windows activa [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) y el valor HKCU también lo establece. Claude Code lo lee solo cuando ninguna fuente anterior entrega una clave de política y ninguna [configuración principal suministrada por el host](#let-an-embedding-host-add-policy) proporciona una clave restrictiva1594. El registro HKCU, en Windows, y en WSL una vez que el registro HKLM o el archivo de configuración administrada de Windows activa [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) y el valor HKCU también lo establece. Claude Code lo lee solo cuando ninguna fuente anterior entrega una clave de política y ninguna [configuración principal suministrada por el host](#let-an-embedding-host-add-policy) suministra una clave restrictiva

160 160 

161Este diagrama muestra la clasificación, con ejemplos de las claves entre fuentes que Claude Code lee de las primeras tres fuentes bajo cualquier configuración:161Este diagrama muestra la clasificación, con ejemplos de las claves entre fuentes que Claude Code lee de las tres primeras fuentes bajo cualquier configuración:

162 162 

163<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=53f6be49f06eff48e01422c8ae1bc2e6" className="dark:hidden" alt="Diagrama que muestra las cuatro fuentes de configuración administrada clasificadas desde la configuración remota en la parte superior hasta MDM, archivos de configuración administrada y el registro HKCU en la parte inferior. Por defecto, la primera fuente con una clave de política proporciona la política y el resto se omiten; con managedSourcesBehavior establecido en merge, cada fuente de administrador con una clave de política contribuye, combinada por tipo de clave, y el registro HKCU se queda fuera. Un panel lateral muestra que las claves entre fuentes como los bloqueos de sandbox, forceRemoteSettingsRefresh y la fusión de env por variable se leen de cada fuente de administrador, que excluye el registro HKCU." width="680" height="330" data-path="images/managed-source-precedence.svg" />163<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=53f6be49f06eff48e01422c8ae1bc2e6" className="dark:hidden" alt="Diagrama que muestra las cuatro fuentes de configuración administrada clasificadas desde la configuración remota en la parte superior a través de MDM, archivos de configuración administrada y el registro HKCU en la parte inferior. De forma predeterminada, la primera fuente con una clave de política suministra la política y el resto se omiten; con managedSourcesBehavior establecido en merge, cada fuente de administrador con una clave de política contribuye, combinada por tipo de clave, y el registro HKCU se mantiene fuera. Un panel lateral muestra que las claves entre fuentes como los bloqueos de sandbox, forceRemoteSettingsRefresh y la fusión env por variable se leen de cada fuente de administrador, que excluye el registro HKCU." width="680" height="330" data-path="images/managed-source-precedence.svg" />

164 164 

165<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence-dark.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=ae407a9a08a3d680e80cf1a2af845d71" className="hidden dark:block" alt="Diagrama que muestra las cuatro fuentes de configuración administrada clasificadas desde la configuración remota en la parte superior hasta MDM, archivos de configuración administrada y el registro HKCU en la parte inferior. Por defecto, la primera fuente con una clave de política proporciona la política y el resto se omiten; con managedSourcesBehavior establecido en merge, cada fuente de administrador con una clave de política contribuye, combinada por tipo de clave, y el registro HKCU se queda fuera. Un panel lateral muestra que las claves entre fuentes como los bloqueos de sandbox, forceRemoteSettingsRefresh y la fusión de env por variable se leen de cada fuente de administrador, que excluye el registro HKCU." width="680" height="330" data-path="images/managed-source-precedence-dark.svg" />165<img src="https://mintcdn.com/claude-code/zuWID2B-Rxm8DEC8/images/managed-source-precedence-dark.svg?fit=max&auto=format&n=zuWID2B-Rxm8DEC8&q=85&s=ae407a9a08a3d680e80cf1a2af845d71" className="hidden dark:block" alt="Diagrama que muestra las cuatro fuentes de configuración administrada clasificadas desde la configuración remota en la parte superior a través de MDM, archivos de configuración administrada y el registro HKCU en la parte inferior. De forma predeterminada, la primera fuente con una clave de política suministra la política y el resto se omiten; con managedSourcesBehavior establecido en merge, cada fuente de administrador con una clave de política contribuye, combinada por tipo de clave, y el registro HKCU se mantiene fuera. Un panel lateral muestra que las claves entre fuentes como los bloqueos de sandbox, forceRemoteSettingsRefresh y la fusión env por variable se leen de cada fuente de administrador, que excluye el registro HKCU." width="680" height="330" data-path="images/managed-source-precedence-dark.svg" />

166 166 

167<h3 id="keys-read-from-every-admin-source">167<h3 id="keys-read-from-every-admin-source">

168 Claves leídas de cada fuente de administrador168 Claves leídas de cada fuente de administrador


170 170 

171Bajo la configuración predeterminada `"first-wins"`, Claude Code lee la mayoría de las claves solo de la [fuente que seleccionó](#how-claude-code-combines-managed-sources), e ignora un valor en una fuente de menor rango incluso cuando la fuente seleccionada deja esa clave sin establecer.171Bajo la configuración predeterminada `"first-wins"`, Claude Code lee la mayoría de las claves solo de la [fuente que seleccionó](#how-claude-code-combines-managed-sources), e ignora un valor en una fuente de menor rango incluso cuando la fuente seleccionada deja esa clave sin establecer.

172 172 

173Algunas claves funcionan de manera diferente. Claude Code las lee de cada fuente de administrador, por lo que una política MDM de menor rango o un archivo de configuración administrada aún pueden establecerlas cuando la fuente seleccionada no lo hace. Claude Code deja fuera el registro HKCU que se puede escribir por el usuario de ese escaneo; cuando HKCU es la única fuente y ningún host proporciona configuración principal, HKCU se aplica como cualquier fuente seleccionada.173Algunas claves funcionan de manera diferente. Claude Code las lee de cada fuente de administrador, por lo que una política MDM de menor rango o un archivo de configuración administrada aún pueden establecerlas cuando la fuente seleccionada no lo hace. Claude Code deja fuera el registro HKCU escribible por el usuario de ese escaneo; cuando HKCU es la única fuente y ningún host suministra configuración principal, HKCU se aplica como cualquier fuente seleccionada.

174 174 

175Las claves entre fuentes incluyen:175Las claves entre fuentes incluyen:

176 176 

177* `sandbox.network.allowManagedDomainsOnly` y `sandbox.filesystem.allowManagedReadPathsOnly`: un `true` en cualquier fuente de administrador activa el bloqueo. Mientras un bloqueo está activo, Claude Code une la lista de permitidos que bloquea, `sandbox.network.allowedDomains` junto con reglas de permitidos `WebFetch(domain:...)`, o `sandbox.filesystem.allowRead`, en cada fuente de administrador. Sin el bloqueo, Claude Code trata la lista de permitidos como cualquier otra clave, por lo que bajo `"first-wins"` la lista de permitidos de una fuente de administrador no seleccionada se ignora177* `sandbox.network.allowManagedDomainsOnly` y `sandbox.filesystem.allowManagedReadPathsOnly`: un `true` en cualquier fuente de administrador activa el bloqueo. Mientras un bloqueo está activo, Claude Code une la lista de permitidos que bloquea, `sandbox.network.allowedDomains` junto con reglas de permiso `WebFetch(domain:...)`, o `sandbox.filesystem.allowRead`, en cada fuente de administrador. Sin el bloqueo, Claude Code trata la lista de permitidos como cualquier otra clave, por lo que bajo `"first-wins"` la lista de permitidos de una fuente de administrador no seleccionada se ignora

178* `allowAllClaudeAiMcps`178* `allowAllClaudeAiMcps`

179* `allowManagedMcpServersOnly`: un `true` en cualquier fuente de administrador activa el bloqueo de lista de permitidos de MCP. Mientras el bloqueo está activo, la lista `allowedMcpServers` administrada proviene de la fuente de administrador de mayor rango que establece una. Una lista administrada por servidor reemplaza la lista de una fuente inferior en lugar de combinarse con ella.

180 

181 Si ninguna fuente de administrador establece una lista, cada servidor que pase la lista de denegación se carga, a menos que la [configuración principal](#let-an-embedding-host-add-policy) suministre una lista.

182 

183 Sin el bloqueo, Claude Code lee `allowedMcpServers` de la fuente administrada que aplica, por lo que bajo `"first-wins"` la lista de una fuente de administrador no seleccionada se ignora. Requiere Claude Code v2.1.273 o posterior

184* `deniedMcpServers` y [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors): una entrada o un `true` en cualquier fuente de administrador se aplica. Requiere Claude Code v2.1.273 o posterior

179* Las rutas binarias de sandbox `sandbox.bwrapPath` y `sandbox.socatPath`185* Las rutas binarias de sandbox `sandbox.bwrapPath` y `sandbox.socatPath`

180* El binario `ripgrep` de sandbox, [`sandbox.ripgrep`](/docs/es/settings-reference#sandbox-ripgrep)186* El binario `ripgrep` de sandbox, [`sandbox.ripgrep`](/docs/es/settings-reference#sandbox-ripgrep)

181* `sandbox.filesystem.disabled` y `sandbox.network.strictAllowlist`187* `sandbox.filesystem.disabled` y `sandbox.network.strictAllowlist`

182* [`useAutoModeDuringPlan`](/docs/es/settings-reference#useautomodeduringplan) y [`syncClaudeAiSkills`](/docs/es/settings-reference#syncclaudeaiskills), donde un `false` de cualquier fuente de administrador desactiva el comportamiento. Un `false` en la configuración de usuario o local del desarrollador también lo desactiva; cada clave solo puede negar188* [`useAutoModeDuringPlan`](/docs/es/settings-reference#useautomodeduringplan), [`syncClaudeAiSkills`](/docs/es/settings-reference#syncclaudeaiskills) y [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins), donde un `false` de cualquier fuente de administrador desactiva el comportamiento. Un `false` en la configuración de usuario o local del desarrollador también lo desactiva; cada clave solo puede negar

183* [`enableArtifact`](/docs/es/settings-reference#enableartifact), donde un `false` de cualquier fuente de administrador desactiva la [herramienta Artifact](/docs/es/artifacts). Un `false` en la configuración de usuario, proyecto o local del desarrollador también lo desactiva, y ninguna fuente lo vuelve a activar; consulte [qué valores de nivel inferior aún cuentan](/docs/es/settings#exceptions-to-managed-settings-precedence). Requiere Claude Code v2.1.242 o posterior189* [`enableArtifact`](/docs/es/settings-reference#enableartifact), donde un `false` de cualquier fuente de administrador desactiva la [herramienta Artifact](/docs/es/artifacts). Un `false` en la configuración de usuario, proyecto o local del desarrollador también lo desactiva, y ninguna fuente lo vuelve a activar; vea [qué valores de nivel inferior aún cuentan](/docs/es/settings#exceptions-to-managed-settings-precedence). Requiere Claude Code v2.1.242 o posterior

184* [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel), donde el límite más bajo en cualquier fuente de administrador se aplica. Si un desarrollador establece un límite más bajo en su propia configuración o con `--settings`, Claude Code aplica ese; ninguna fuente puede aumentar el límite. Requiere Claude Code v2.1.267 o posterior190* [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel), donde se aplica el límite más bajo en cualquier fuente de administrador. Si un desarrollador establece un límite más bajo en su propia configuración o con `--settings`, Claude Code aplica ese; ninguna fuente puede aumentar el límite. Requiere Claude Code v2.1.267 o posterior

185* Un rechazo de remolque de confirmación en `attribution`, o en el `includeCoAuthoredBy` deprecado, de cualquier nivel191* Una exclusión de remolque de confirmación en `attribution`, o en el `includeCoAuthoredBy` deprecado, de cualquier nivel

186* [`forceRemoteSettingsRefresh`](/docs/es/server-managed-settings)192* [`forceRemoteSettingsRefresh`](/docs/es/server-managed-settings)

187* `env`, fusionado por variable en las fuentes de administrador: cada variable viene de la fuente de mayor prioridad que la define, por lo que las fuentes inferiores llenan variables que las superiores dejan sin establecer. Algunas variables siguen sus propias reglas; [Excepciones por clave en fuentes administradas](/docs/es/server-managed-settings#per-key-exceptions-across-managed-sources) nombra cada una. Requiere Claude Code v2.1.223 o posterior. Antes de v2.1.223, Claude Code aplicaba solo el bloque `env` completo de la fuente seleccionada193* `env`, fusionado por variable en las fuentes de administrador: cada variable proviene de la fuente de mayor prioridad que la define, por lo que las fuentes inferiores rellenan las variables que las superiores dejan sin establecer. Algunas variables siguen sus propias reglas; [Excepciones por clave en fuentes administradas](/docs/es/server-managed-settings#per-key-exceptions-across-managed-sources) nombra cada una. Requiere Claude Code v2.1.223 o posterior. Antes de v2.1.223, Claude Code aplicaba solo el bloque `env` completo de la fuente seleccionada

188 194 

189Las [claves de inicio de sesión de puerta de enlace](#choose-a-delivery-mechanism), [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl) y el valor `"gateway"` de [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod), siguen una regla separada. Claude Code nunca las lee de la configuración administrada por servidor, por lo que mientras la configuración administrada por servidor es la fuente seleccionada, la fuente de administrador de mayor rango en la máquina que lleva una clave de política aún las proporciona. Un valor en una fuente de administrador clasificada por debajo de esa, o en el registro HKCU, se ignora.195Las [claves de inicio de sesión de puerta de enlace](#choose-a-delivery-mechanism) siguen una regla separada. Claude Code nunca las lee de la configuración administrada por servidor, por lo que mientras la configuración administrada por servidor es la fuente seleccionada, la fuente de administrador de mayor rango en la máquina que lleva una clave de política aún las suministra. Se ignora un valor en una fuente de administrador clasificada por debajo de esa, o en el registro HKCU.

196 

197Cuando una fuente de administrador establece `allowManagedMcpServersOnly` o una lista `allowedMcpServers` y ese valor no es el que está en vigor, `/status` y `claude doctor` nombran esa fuente y clave.

190 198 

191<h3 id="compose-every-managed-source">199<h3 id="compose-every-managed-source">

192 Componer cada fuente administrada200 Componer cada fuente administrada

193</h3>201</h3>

194 202 

195Para que Claude Code aplique cada fuente de administrador que su organización entrega, establezca [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) en `"merge"` en la fuente de mayor rango que implemente. Claude Code lee la clave solo de la fuente de mayor rango que lleve la clave o una clave de política, por lo que una fuente inferior no puede optar por fusionarse con la fuente anterior, y una máquina que nunca recibe configuración administrada por servidor necesita la clave en su perfil MDM también. El registro HKCU que se puede escribir por el usuario nunca se fusiona con otra fuente. Requiere Claude Code v2.1.242 o posterior.203Para que Claude Code aplique cada fuente de administrador que su organización entrega, establezca [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) en `"merge"` en la fuente de mayor rango que implemente. Claude Code lee la clave solo de la fuente de mayor rango que lleva la clave o una clave de política, por lo que una fuente inferior no puede optar por fusionarse con la fuente anterior, y una máquina que nunca recibe configuración administrada por servidor necesita la clave en su perfil MDM también. El registro HKCU escribible por el usuario nunca se fusiona con otra fuente. Requiere Claude Code v2.1.242 o posterior.

196 204 

197Bajo `"merge"`, Claude Code agrega entradas de lista de una fuente inferior, como reglas `permissions.allow` y hooks, a la política, así que actívelo solo cuando cada fuente clasificada debajo de la más alta esté bajo el control de un administrador.205Bajo `"merge"`, Claude Code agrega las entradas de lista de una fuente inferior, como reglas `permissions.allow` y hooks, a la política, por lo que actívelo solo cuando cada fuente clasificada por debajo de la más alta esté bajo el control de un administrador.

198 206 

199Esta tabla muestra cómo Claude Code combina cada tipo de clave bajo `"merge"`. La entrada [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) nombra cada clave en tres de las filas: listas de permitidos de restricción, valores tomados completos y claves leídas solo de la fuente de mayor rango.207Esta tabla muestra cómo Claude Code combina cada tipo de clave bajo `"merge"`. La [entrada `managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) nombra cada clave en tres de las filas: listas de permitidos de restricción, valores tomados completos y claves leídas solo de la fuente de mayor rango.

200 208 

201| Tipo de clave | Cómo Claude Code la combina | Ejemplos |209| Tipo de clave | Cómo Claude Code la combina | Ejemplos |

202| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |210| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

203| Listas | Combina las entradas de cada fuente | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers` |211| Listas | Combina las entradas de cada fuente | `permissions.allow`, `hooks`, `sandbox.network.allowedDomains`, `deniedMcpServers` |

204| Bloqueos | Aplica el valor más restrictivo que establece cualquier fuente; un valor más flexible se aplica solo de la fuente de mayor rango | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound` |212| Bloqueos | Aplica el valor más restrictivo que establece cualquier fuente; un valor más flexible se aplica solo de la fuente de mayor rango | `allowManagedHooksOnly`, `permissions.disableBypassPermissionsMode`, `crossSessionInbound` |

205| Listas de permitidos de restricción | Toma la lista completa de la fuente de mayor rango que la establece, sin agregar entradas de fuentes inferiores | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins` y la cadena `fallbackModel` |213| Listas de permitidos de restricción | Toma la lista completa de la fuente de mayor rango que la establece, sin agregar entradas de fuentes inferiores | `availableModels`, `allowedMcpServers`, `strictKnownMarketplaces`, `allowedChannelPlugins` y la cadena `fallbackModel` |

206| Valores tomados completos | Toma el valor completo de la fuente de mayor rango que la establece, sin combinar entradas o campos de fuentes inferiores | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` |214| Valores tomados completos | Toma el valor completo de la fuente de mayor rango que lo establece, sin combinar entradas o campos de fuentes inferiores | `sandbox.credentials.awsPairs`, `sandbox.ripgrep` |

207| Servidores MCP proporcionados | Combina los nombres de servidor de cada fuente; cuando dos fuentes establecen el mismo nombre, aplica la entrada completa de la fuente de mayor rango | `managedMcpServers` |215| Servidores MCP proporcionados | Combina los nombres de servidor de cada fuente; cuando dos fuentes establecen el mismo nombre, aplica la entrada completa de la fuente de mayor rango | `managedMcpServers` |

208| Claves leídas solo de la fuente de mayor rango | Ignora la clave en cada fuente inferior, incluso cuando la fuente de mayor rango la deja sin establecer | Ayudantes de credenciales como `apiKeyHelper`, pines de inicio de sesión como `forceLoginOrgUUID`, `modelPicker`, `permissions.defaultMode` |216| Claves leídas solo de la fuente de mayor rango | Ignora la clave en cada fuente inferior, incluso cuando la fuente de mayor rango la deja sin establecer | Ayudantes de credenciales como `apiKeyHelper`, pines de inicio de sesión como `forceLoginOrgUUID`, `modelPicker`, `permissions.defaultMode` |

209| `env` | Se fusiona por variable en fuentes de administrador bajo cualquier configuración, como [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source) describe | |217| `env` | Se fusiona por variable en fuentes de administrador bajo cualquier configuración, como [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source) describe | |

210| Todas las otras claves | Toma el valor de la fuente de mayor rango que la establece | `model`, `cleanupPeriodDays` |218| Cualquier otra clave | Toma el valor de la fuente de mayor rango que lo establece | `model`, `cleanupPeriodDays` |

211 219 

212Para confirmar qué fuentes se combinaron en una máquina, [lea la línea `Setting sources` en `/status`](#read-the-source-in-/status); esa sección dice qué significa cada etiqueta.220Para confirmar qué fuentes se combinaron en una máquina, [lea la línea `Setting sources` en `/status`](#read-the-source-in-/status); esa sección dice qué significa cada etiqueta.

213 221 


217 225 

218Un [`policyHelper`](/docs/es/settings-reference#policyhelper) es un ejecutable que su política MDM o archivo de configuración administrada nombra, y Claude Code lo ejecuta para calcular la configuración administrada al inicio. Cuando la fuente seleccionada configura uno y el auxiliar emite un objeto `managedSettings`, esa salida cambia lo que Claude Code lee:226Un [`policyHelper`](/docs/es/settings-reference#policyhelper) es un ejecutable que su política MDM o archivo de configuración administrada nombra, y Claude Code lo ejecuta para calcular la configuración administrada al inicio. Cuando la fuente seleccionada configura uno y el auxiliar emite un objeto `managedSettings`, esa salida cambia lo que Claude Code lee:

219 227 

220* **El objeto `managedSettings` emitido es la única configuración administrada para la sesión**, incluido para las [claves que de otro modo lee de cada fuente de administrador](#keys-read-from-every-admin-source), aparte de [`forceRemoteSettingsRefresh`, que tiene su propia regla de inicio](/docs/es/settings-reference#forceremotesettingsrefresh)228* **El objeto `managedSettings` emitido es la única configuración administrada para la sesión**, incluyendo para las [claves que de otro modo lee de cada fuente de administrador](#keys-read-from-every-admin-source), aparte de [`forceRemoteSettingsRefresh`, que tiene su propia regla de inicio](/docs/es/settings-reference#forceremotesettingsrefresh)

221 229 

222Para qué ejecuciones de auxiliar fallan y qué hace Claude Code cuando una lo hace, consulte [Fallos de auxiliar](/docs/es/settings-reference#helper-failures).230Para qué fallos de auxiliar se ejecutan y qué hace Claude Code cuando uno lo hace, vea [Fallos de auxiliar](/docs/es/settings-reference#helper-failures).

223 231 

224<span id="parent-settings-from-embedding-hosts" />232<span id="parent-settings-from-embedding-hosts" />

225 233 


233 241 

234Cuando otra aplicación inicia Claude Code, como Claude Desktop, una extensión IDE o una aplicación Agent SDK, ese host puede pasar su propia configuración administrada a través de la opción SDK `managedSettings`. Claude Code llama a estas configuraciones principales.242Cuando otra aplicación inicia Claude Code, como Claude Desktop, una extensión IDE o una aplicación Agent SDK, ese host puede pasar su propia configuración administrada a través de la opción SDK `managedSettings`. Claude Code llama a estas configuraciones principales.

235 243 

236Por defecto, Claude Code ignora la configuración principal siempre que una fuente de administrador esté presente: configuración administrada por servidor, una política MDM o a nivel de SO, o un archivo de configuración administrada.244De forma predeterminada, Claude Code ignora la configuración principal siempre que una fuente de administrador esté presente: configuración administrada por servidor, una política MDM o a nivel del SO, o un archivo de configuración administrada.

237 245 

238Para que Claude Code fusione la configuración principal junto con una fuente de administrador, establezca [`parentSettingsBehavior`](/docs/es/settings-reference#parentsettingsbehavior) en `"merge"` en la fuente administrada de mayor prioridad; Claude Code lee la clave solo de esa fuente.246Para que Claude Code fusione la configuración principal junto con una fuente de administrador, establezca [`parentSettingsBehavior`](/docs/es/settings-reference#parentsettingsbehavior) en `"merge"` en la fuente administrada de mayor prioridad; Claude Code lee la clave solo de esa fuente.

239 247 

240Claude Code entonces mantiene solo los valores del host que restringen lo que Claude puede hacer, con una brecha a conocer: a menos que también establezca los bloqueos `allowManaged*Only`, las reglas de permitidos de permisos del host y las listas de permitidos de sandbox aún se aplican. Consulte [Restringir configuración principal](/docs/es/claude-apps-gateway#restrict-parent-settings) para los bloqueos.248Claude Code luego mantiene solo los valores del host que restringen lo que Claude puede hacer, con una brecha a tener en cuenta: a menos que también establezca los bloqueos `allowManaged*Only`, las reglas de permiso de permitidos del host y las listas de permitidos de sandbox aún se aplican. Vea [Restringir configuración principal](/docs/es/claude-apps-gateway#restrict-parent-settings) para los bloqueos.

241 249 

242Un [`policyHelper`](/docs/es/settings-reference#policyhelper) puede desactivar la fusión principal independientemente de esta clave; su entrada dice cuándo.250Un [`policyHelper`](/docs/es/settings-reference#policyhelper) puede desactivar la fusión principal independientemente de esta clave; su entrada dice cuándo.

243 251 

244Claude Code también aplica estas verificaciones a valores suministrados por el padre por su cuenta:252Claude Code también aplica estas comprobaciones a valores suministrados por el principal por su cuenta:

253 

254* Cuando cualquier fuente de administrador establece `allowManagedPermissionRulesOnly`, Claude Code descarta [reglas de permiso de permitidos suministradas por el principal](/docs/es/claude-apps-gateway#restrict-parent-settings) y `additionalDirectories` mientras las lee, incluso cuando una fuente de mayor prioridad deja la clave sin establecer. El efecto de la clave en sus propias reglas de permiso proviene de la configuración administrada que Claude Code aplica, o de la configuración principal que ha elegido fusionar

255* Claude Code aplica el valor `forceLoginOrgUUID` o `allowedMcpServers` en la configuración administrada que aplica y bloquea uno suministrado por el principal. Fuera del bloqueo de lista de permitidos de MCP, un valor en una fuente de administrador inferior que Claude Code no aplica ni se aplica ni bloquea el del principal.

245 256 

246* Cuando cualquier fuente de administrador establece `allowManagedPermissionRulesOnly`, Claude Code descarta [reglas de permitidos de permisos suministradas por el padre](/docs/es/claude-apps-gateway#restrict-parent-settings) y `additionalDirectories` mientras las lee, incluso cuando una fuente de mayor prioridad deja la clave sin establecer. El efecto de la clave en sus propias reglas de permisos proviene de la configuración administrada que Claude Code aplica, o de la configuración principal que ha elegido fusionar257 En Claude Code v2.1.273 o posterior, mientras `allowManagedMcpServersOnly` está activo, la lista `allowedMcpServers` de la fuente de administrador de mayor rango que establece una se aplica y bloquea la del principal, como una [clave entre fuentes](#keys-read-from-every-admin-source). La lista del principal se aplica solo cuando ninguna fuente de administrador establece una. La entrada [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) dice qué fuente suministra cada clave bajo `"merge"`. Antes de v2.1.223, un valor en cualquier fuente de administrador bloqueaba el del principal

247* Claude Code aplica el valor `forceLoginOrgUUID` o `allowedMcpServers` en la configuración administrada que aplica y bloquea uno suministrado por el padre. Un valor en una fuente de administrador inferior que Claude Code no aplica ni se aplica ni bloquea el del padre. La entrada [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) dice qué fuente proporciona cada clave bajo `"merge"`. Antes de v2.1.223, un valor en cualquier fuente de administrador bloqueaba el del padre258* Para `availableModels`, Claude Code aplica el valor en la configuración administrada que aplica y bloquea una lista suministrada por el principal

248* Un valor `availableModels` sigue la misma regla que `allowedMcpServers`

249 259 

250<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">260<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">

251 Mantener el acceso a la carpeta de Cowork cuando solo se aplican reglas administradas261 Mantener el acceso a la carpeta Cowork cuando solo se aplican reglas administradas

252</h4>262</h4>

253 263 

254[Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop ejecuta sus sesiones en Claude Code y otorga a cada sesión acceso a sus carpetas de trabajo, como la carpeta que el usuario conecta, a través de reglas de permitidos que proporciona cuando inicia la sesión. Cuando su política administrada establece [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly), Claude Code mantiene solo las reglas de permitidos en la política administrada: descarta reglas de permitidos que un host proporciona como configuración principal, como `--allowedTools`, o en un archivo de configuración, por lo que las escrituras en esas carpetas pierden su preaprobación. En una sesión de Cowork que pregunta antes de ediciones, Cowork no puede mostrar el aviso, y Claude reporta cada escritura como bloqueada porque la ruta se resuelve a una ubicación protegida o una ruta fuera de la carpeta conectada.264[Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop ejecuta sus sesiones en Claude Code y otorga a cada sesión acceso a sus carpetas de trabajo, como la carpeta que el usuario conecta, a través de reglas de permitidos que suministra cuando inicia la sesión. Cuando su política administrada establece [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly), Claude Code mantiene solo las reglas de permitidos en la política administrada: descarta reglas de permitidos que un host suministra como configuración principal, como `--allowedTools`, o en un archivo de configuración, por lo que las escrituras en esas carpetas pierden su preaprobación. En una sesión de Cowork que pregunta antes de ediciones, Cowork no puede mostrar el aviso, y Claude reporta cada escritura como bloqueada porque la ruta se resuelve en una ubicación protegida o una ruta fuera de la carpeta conectada.

255 265 

256Para restaurar las escrituras, agregue reglas de permitidos para esas carpetas a la fuente administrada que Claude Code [selecciona](#precedence-within-the-managed-tier) en esas máquinas: en una flota administrada por MDM, esa es la política MDM en lugar de un archivo de configuración administrada separado. Este ejemplo usa la forma de archivo, y una política MDM toma las mismas claves. Mantiene `allowManagedPermissionRulesOnly` establecido y permite ediciones bajo una carpeta `CoworkProjects` en el directorio de inicio de cada usuario; reemplace la ruta con las carpetas que sus usuarios conectan:266Para restaurar las escrituras, agregue reglas de permitidos para esas carpetas a la fuente administrada que Claude Code [selecciona](#precedence-within-the-managed-tier) en esas máquinas: en una flota administrada por MDM, esa es la política MDM en lugar de un archivo de configuración administrada separado. Este ejemplo usa la forma de archivo, y una política MDM toma las mismas claves. Mantiene `allowManagedPermissionRulesOnly` establecido y permite ediciones bajo una carpeta `CoworkProjects` en el directorio de inicio de cada usuario; reemplace la ruta con las carpetas que sus usuarios conectan:

257 267 


266}276}

267```277```

268 278 

269Después de implementar la política, Claude puede guardar archivos bajo esa carpeta en una nueva sesión de Cowork. [Reglas de lectura y edición](/docs/es/permissions#read-and-edit) cubren la sintaxis de ruta, incluida la forma `//` para rutas absolutas.279Después de implementar la política, Claude puede guardar archivos bajo esa carpeta en una nueva sesión de Cowork. [Reglas de lectura y edición](/docs/es/permissions#read-and-edit) cubren la sintaxis de ruta, incluyendo la forma `//` para rutas absolutas.

270 280 

271<h3 id="what-a-developer-can-change">281<h3 id="what-a-developer-can-change">

272 Lo que un desarrollador puede cambiar282 Lo que un desarrollador puede cambiar

273</h3>283</h3>

274 284 

275Los archivos de configuración propios de un desarrollador, valores `--settings` y archivos de proyecto nunca anulan un valor administrado; las [excepciones](/docs/es/settings#exceptions-to-managed-settings-precedence) solo permiten que un valor más restrictivo de nivel inferior cuente. Cuatro cosas se salen de esa regla:285Los archivos de configuración propios de un desarrollador, valores `--settings` y archivos de proyecto nunca anulan un valor administrado; las [excepciones](/docs/es/settings#exceptions-to-managed-settings-precedence) solo permiten que un valor de nivel inferior más restrictivo cuente. Estos casos se encuentran fuera de esa regla:

276 286 

277* **El modelo para una sesión**: un `model` administrado es un predeterminado, no un bloqueo. `--model` y `ANTHROPIC_MODEL` aún eligen el modelo para esa sesión, así que implemente [`availableModels`](/docs/es/settings-reference#availablemodels) para restringir la opción.287* **El modelo para una sesión**: un `model` administrado es un valor predeterminado, no un bloqueo. `--model` y `ANTHROPIC_MODEL` aún seleccionan el modelo para esa sesión, por lo que implemente [`availableModels`](/docs/es/settings-reference#availablemodels) para restringir la opción.

278* **Derechos de administrador local**: un desarrollador que es administrador en la máquina puede editar la fuente administrada en sí, por lo que el tooling MDM puede reimplementar el perfil o archivo en un cronograma y por lo que existen el registro HKLM y el dominio de preferencias administradas de macOS.288* **Derechos de administrador local**: un desarrollador que es administrador en la máquina puede editar la fuente administrada en sí, por lo que las herramientas MDM pueden reimplementar el perfil o archivo en un cronograma y por qué existen el registro HKLM y el dominio de preferencias administradas de macOS.

279* **La caché administrada por servidor**: la configuración administrada por servidor proviene de los servidores de Anthropic, y una edición a la caché local [dura solo hasta la próxima obtención exitosa](/docs/es/server-managed-settings#security-considerations).289* **La caché de configuración administrada por servidor**: la configuración administrada por servidor proviene de los servidores de Anthropic, y una edición en la caché local [dura solo hasta la siguiente obtención exitosa](/docs/es/server-managed-settings#security-considerations).

280* **Otras herramientas**: la configuración administrada vincula solo Claude Code. Un desarrollador que llama a la API desde otra herramienta no está bajo ellas.290* **Otras herramientas**: la configuración administrada vincula solo Claude Code. Un desarrollador que llama a la API desde otra herramienta no está bajo ellas.

281 291 

282<span id="verify-enforcement" />292<span id="verify-enforcement" />


362| `availableModels` | Se aplica como una lista de permitidos vacía hasta que se corrija, por lo que solo el modelo predeterminado está disponible; una entrada que no es cadena se elimina y el subconjunto válido se aplica. |372| `availableModels` | Se aplica como una lista de permitidos vacía hasta que se corrija, por lo que solo el modelo predeterminado está disponible; una entrada que no es cadena se elimina y el subconjunto válido se aplica. |

363| `enforceAvailableModels` | Se trata como `true`. |373| `enforceAvailableModels` | Se trata como `true`. |

364| `forceLoginOrgUUID` | Ninguna organización puede iniciar sesión hasta que se corrija el valor. |374| `forceLoginOrgUUID` | Ninguna organización puede iniciar sesión hasta que se corrija el valor. |

375| `gatewayInternalNetworks` | Cuando el valor inválido proviene de la fuente administrada más alta en la máquina, `/login` rechaza cada nuevo inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en esa máquina hasta que se corrija el valor. |

365| `crossSessionInbound` | Se trata como `refuse`, el valor más restrictivo, por lo que los [mensajes entre sesiones](/docs/es/cross-session-messaging#control-inbound-messages) entrantes se rechazan hasta que se corrija el valor. El desarrollador ve [una advertencia](/docs/es/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |376| `crossSessionInbound` | Se trata como `refuse`, el valor más restrictivo, por lo que los [mensajes entre sesiones](/docs/es/cross-session-messaging#control-inbound-messages) entrantes se rechazan hasta que se corrija el valor. El desarrollador ve [una advertencia](/docs/es/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |

366| `deniedMcpServers` | Una entrada individual inválida se elimina y el subconjunto válido se aplica. Un valor completamente inválido se descarta con una advertencia, ya que negar cada servidor bloquearía servidores que la política nunca nombró. |377| `deniedMcpServers` | Una entrada individual inválida se elimina y el subconjunto válido se aplica. Un valor completamente inválido se descarta con una advertencia, ya que negar cada servidor bloquearía servidores que la política nunca nombró. |

367| `sandbox.credentials` | Una entrada inválida recuperable se degrada a `mode: "deny"` con una advertencia; una irrecuperable se elimina; las entradas válidas permanecen aplicadas. Consulte [entradas de credenciales inválidas](/docs/es/settings-reference#invalid-credential-entries-in-managed-settings) |378| `sandbox.credentials` | Una entrada inválida recuperable se degrada a `mode: "deny"` con una advertencia; una irrecuperable se elimina; las entradas válidas permanecen aplicadas. Consulte [entradas de credenciales inválidas](/docs/es/settings-reference#invalid-credential-entries-in-managed-settings) |


389| [`allowAllClaudeAiMcps`](/docs/es/settings-reference#allowallclaudeaimcps) | Cargue los conectores de claude.ai que Claude Code obtiene a sí mismo junto con un `managed-mcp.json` implementado en lugar de suprimirlos |400| [`allowAllClaudeAiMcps`](/docs/es/settings-reference#allowallclaudeaimcps) | Cargue los conectores de claude.ai que Claude Code obtiene a sí mismo junto con un `managed-mcp.json` implementado en lugar de suprimirlos |

390| [`allowedChannelPlugins`](/docs/es/settings-reference#allowedchannelplugins) | Lista de permitidos de plugins de canal que pueden enviar mensajes. Reemplaza la lista de permitidos predeterminada de Anthropic cuando se establece. Requiere `channelsEnabled: true`. Consulte [Restringir qué plugins de canal pueden ejecutarse](/docs/es/channels#restrict-which-channel-plugins-can-run) |401| [`allowedChannelPlugins`](/docs/es/settings-reference#allowedchannelplugins) | Lista de permitidos de plugins de canal que pueden enviar mensajes. Reemplaza la lista de permitidos predeterminada de Anthropic cuando se establece. Requiere `channelsEnabled: true`. Consulte [Restringir qué plugins de canal pueden ejecutarse](/docs/es/channels#restrict-which-channel-plugins-can-run) |

391| [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) | Cuando es `true`, restringe qué hooks se ejecutan; consulte [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista de efectos completa |402| [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) | Cuando es `true`, restringe qué hooks se ejecutan; consulte [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista de efectos completa |

392| [`allowManagedMcpServersOnly`](/docs/es/settings-reference#allowmanagedmcpserversonly) | Cuando es `true`, solo se respetan `allowedMcpServers` de la configuración administrada. `deniedMcpServers` aún se fusiona de todas las fuentes. Consulte [Configuración MCP administrada](/docs/es/managed-mcp) |403| [`allowManagedMcpServersOnly`](/docs/es/settings-reference#allowmanagedmcpserversonly) | Cuando es `true`, solo se respetan `allowedMcpServers` de la configuración administrada. `deniedMcpServers` aún se fusiona de todas las fuentes. Consulte [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source) para saber qué fuentes administradas pueden establecerla, y [Configuración MCP administrada](/docs/es/managed-mcp) |

393| [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) | Hace que la configuración administrada sea la única fuente de configuración de reglas de permisos. La entrada enumera cada fuente que ignora |404| [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) | Hace que la configuración administrada sea la única fuente de configuración de reglas de permisos. La entrada enumera cada fuente que ignora |

394| [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) | Lista de bloqueo de fuentes de mercado. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de mercado administradas](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) |405| [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) | Lista de bloqueo de fuentes de mercado. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de mercado administradas](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) |

395| [`channelsEnabled`](/docs/es/settings-reference#channelsenabled) | Permitir [canales](/docs/es/channels) para la organización. Consulte [controles empresariales](/docs/es/channels#enterprise-controls) para el predeterminado en cada plan |406| [`channelsEnabled`](/docs/es/settings-reference#channelsenabled) | Permitir [canales](/docs/es/channels) para la organización. Consulte [controles empresariales](/docs/es/channels#enterprise-controls) para el predeterminado en cada plan |

mcp.md +158 −108

Details

74 Opción 1: Agregar un servidor HTTP remoto74 Opción 1: Agregar un servidor HTTP remoto

75</h3>75</h3>

76 76 

77Los servidores HTTP son la opción recomendada para conectarse a servidores MCP remotos. Este es el transporte más ampliamente soportado para servicios basados en la nube.77Los servidores HTTP son la opción recomendada para conectarse a servidores MCP remotos. Este es el transporte más ampliamente compatible para servicios basados en la nube.

78 78 

79```bash theme={null}79```bash theme={null}

80# Sintaxis básica80# Sintaxis básica


88 --header "Authorization: Bearer your-token"88 --header "Authorization: Bearer your-token"

89```89```

90 90 

91Cuando configure servidores MCP a través de JSON en `.mcp.json`, `~/.claude.json`, o `claude mcp add-json`, el campo `type` acepta `streamable-http` como un alias para `http`. La especificación de MCP utiliza el nombre `streamable-http` para este transporte, por lo que las configuraciones copiadas de la documentación del servidor funcionan sin modificación.91Al configurar servidores MCP a través de JSON en `.mcp.json`, `~/.claude.json`, o `claude mcp add-json`, el campo `type` acepta `streamable-http` como alias para `http`. La especificación MCP utiliza el nombre `streamable-http` para este transporte, por lo que las configuraciones copiadas de la documentación del servidor funcionan sin modificación.

92 92 

93Una entrada JSON que tiene una `url` pero no tiene `type` es un error de configuración, porque Claude Code lee una entrada sin `type` como un servidor stdio. Claude Code omite ese servidor e informa `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. Antes de v2.1.202, Claude Code informaba esta configuración incorrecta como `command: expected string, received undefined`.93Una entrada JSON que tiene una `url` pero no tiene `type` es un error de configuración, porque Claude Code lee una entrada sin `type` como un servidor stdio. Claude Code omite ese servidor e informa `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. Antes de v2.1.202, Claude Code informaba esta configuración incorrecta como `command: expected string, received undefined`.

94 94 

95En ejecuciones con `--output-format stream-json`, Claude Code también informa una entrada `--mcp-config` omitida en el evento `system/init` del campo [`mcp_server_errors`](/docs/es/headless#stream-responses), por lo que los scripts pueden detectar que el servidor nunca se cargó. Esto requiere Claude Code v2.1.219 o posterior.95En ejecuciones `--output-format stream-json`, Claude Code también informa una entrada `--mcp-config` omitida en el campo [`mcp_server_errors`](/docs/es/headless#stream-responses) del evento `system/init`, para que los scripts puedan detectar que el servidor nunca se cargó. Esto requiere Claude Code v2.1.219 o posterior.

96 96 

97<h3 id="option-2-add-a-remote-sse-server">97<h3 id="option-2-add-a-remote-sse-server">

98 Opción 2: Agregar un servidor SSE remoto98 Opción 2: Agregar un servidor SSE remoto

99</h3>99</h3>

100 100 

101<Warning>101<Warning>

102 El transporte SSE (Server-Sent Events) está deprecado. Use servidores HTTP en su lugar, donde estén disponibles.102 El transporte SSE (Server-Sent Events) está deprecado. Utilice servidores HTTP en su lugar, cuando estén disponibles.

103</Warning>103</Warning>

104 104 

105Algunos servicios aún exponen solo un punto final SSE. Agréguelos con el mismo comando `claude mcp add --transport http <name> <url>` que [un servidor HTTP](#option-1-add-a-remote-http-server). Claude Code intenta el transporte HTTP primero y cambia a SSE cuando el servidor no lo acepta. El cambio automático requiere Claude Code v2.1.265 o posterior.105Algunos servicios aún exponen solo un punto final SSE. Agréguelos con el mismo comando `claude mcp add --transport http <name> <url>` que [un servidor HTTP](#option-1-add-a-remote-http-server). Claude Code intenta el transporte HTTP primero y cambia a SSE cuando el servidor no lo acepta. El cambio automático requiere Claude Code v2.1.265 o posterior.


124 124 

125Los servidores stdio se ejecutan como procesos locales en su máquina. Son ideales para herramientas que necesitan acceso directo al sistema o scripts personalizados.125Los servidores stdio se ejecutan como procesos locales en su máquina. Son ideales para herramientas que necesitan acceso directo al sistema o scripts personalizados.

126 126 

127Claude Code establece `CLAUDE_PROJECT_DIR` en el entorno del servidor generado a la raíz del proyecto, por lo que su servidor puede resolver rutas relativas al proyecto sin depender del directorio de trabajo. Este es el mismo directorio que los hooks reciben en su variable `CLAUDE_PROJECT_DIR`. Léalo desde dentro de su proceso de servidor, por ejemplo `process.env.CLAUDE_PROJECT_DIR` en Node o `os.environ["CLAUDE_PROJECT_DIR"]` en Python.127Claude Code establece `CLAUDE_PROJECT_DIR` en el entorno del servidor generado a la raíz del proyecto, para que su servidor pueda resolver rutas relativas al proyecto sin depender del directorio de trabajo. Este es el mismo directorio que los hooks reciben en su variable `CLAUDE_PROJECT_DIR`. Léalo desde dentro de su proceso de servidor, por ejemplo `process.env.CLAUDE_PROJECT_DIR` en Node o `os.environ["CLAUDE_PROJECT_DIR"]` en Python.

128 128 

129`CLAUDE_PROJECT_DIR` es la raíz del proyecto estable y no cambia cuando agrega o elimina directorios de trabajo durante la sesión. Un servidor que limita su propio acceso al sistema de archivos a un conjunto de directorios permitidos debe implementar la solicitud MCP `roots/list` en su lugar. Claude Code responde a `roots/list` con el directorio de lanzamiento de la sesión más cada [directorio de trabajo adicional](/docs/es/permissions#working-directories) que ha otorgado con `--add-dir`, `/add-dir`, o la configuración `additionalDirectories`. Claude Code envía `notifications/roots/list_changed` cuando ese conjunto cambia. Antes de v2.1.203, `roots/list` devolvía solo el directorio de lanzamiento y Claude Code no enviaba `notifications/roots/list_changed`.129`CLAUDE_PROJECT_DIR` es la raíz del proyecto estable y no cambia cuando agrega o elimina directorios de trabajo a mitad de sesión. Un servidor que limita su propio acceso al sistema de archivos a un conjunto de directorios permitidos debe implementar la solicitud MCP `roots/list` en su lugar. Claude Code responde `roots/list` con el directorio de lanzamiento de la sesión más cada [directorio de trabajo adicional](/docs/es/permissions#working-directories) que haya otorgado con `--add-dir`, `/add-dir`, o la configuración `additionalDirectories`. Claude Code envía `notifications/roots/list_changed` cuando ese conjunto cambia. Antes de v2.1.203, `roots/list` devolvía solo el directorio de lanzamiento y Claude Code no enviaba `notifications/roots/list_changed`.

130 130 

131Esta variable se establece en el entorno del servidor, no en el entorno propio de Claude Code, por lo que hacer referencia a ella mediante la expansión `${VAR}` en un archivo `.mcp.json` con alcance de proyecto o usuario en `command` o `args` requiere un valor predeterminado como `${CLAUDE_PROJECT_DIR:-.}`. Las configuraciones MCP proporcionadas por plugins sustituyen `${CLAUDE_PROJECT_DIR}` directamente y no necesitan el valor predeterminado.131Esta variable se establece en el entorno del servidor, no en el entorno propio de Claude Code, por lo que hacer referencia a ella a través de la expansión `${VAR}` en el `command` o `args` de una entrada `.mcp.json` con alcance de proyecto o una entrada de servidor local o de usuario en `~/.claude.json` requiere un valor predeterminado como `${CLAUDE_PROJECT_DIR:-.}`. Las configuraciones MCP proporcionadas por plugins sustituyen `${CLAUDE_PROJECT_DIR}` directamente y no necesitan el valor predeterminado.

132 132 

133```bash theme={null}133```bash theme={null}

134# Sintaxis básica134# Sintaxis básica


142<Note>142<Note>

143 **Importante: Separar argumentos del servidor con `--`**143 **Importante: Separar argumentos del servidor con `--`**

144 144 

145 Para servidores stdio, el `--` (doble guión) separa las opciones propias de Claude, como `--transport`, `--env` y `--scope`, del comando y los argumentos que ejecutan el servidor. Todo lo que viene después de `--` se pasa al servidor sin modificar.145 Para servidores stdio, el `--` (doble guión) separa las opciones propias de Claude, como `--transport`, `--env`, y `--scope`, del comando y argumentos que ejecutan el servidor. Todo lo que viene después de `--` se pasa al servidor sin modificación.

146 146 

147 Por ejemplo:147 Por ejemplo:

148 148 


151 151 

152 Sin `--`, Claude Code intentaría analizar las banderas del servidor, como `--port` arriba, como sus propias opciones.152 Sin `--`, Claude Code intentaría analizar las banderas del servidor, como `--port` arriba, como sus propias opciones.

153 153 

154 `--env` acepta múltiples pares `KEY=value`. Si el nombre del servidor viene directamente después de `--env`, la CLI lee el nombre como otro par y lo rechaza, por lo que coloque al menos otra opción entre `--env` y el nombre del servidor, como en los ejemplos anteriores.154 `--env` acepta múltiples pares `KEY=value`. Si el nombre del servidor viene directamente después de `--env`, la CLI lee el nombre como otro par y lo rechaza, por lo que debe colocar al menos otra opción, como `--transport stdio`, entre `--env` y el nombre del servidor.

155</Note>155</Note>

156 156 

157<h3 id="option-4-add-a-remote-websocket-server">157<h3 id="option-4-add-a-remote-websocket-server">

158 Opción 4: Agregar un servidor WebSocket remoto158 Opción 4: Agregar un servidor WebSocket remoto

159</h3>159</h3>

160 160 

161Los servidores WebSocket mantienen una conexión bidireccional persistente, que es adecuada para servidores MCP remotos que envían eventos a Claude sin ser solicitados. Use HTTP en su lugar cuando su servidor solo responda a solicitudes, ya que HTTP admite OAuth y la bandera `claude mcp add --transport`, mientras que WebSocket no admite ninguno de los dos.161Los servidores WebSocket mantienen una conexión bidireccional persistente, que es adecuada para servidores MCP remotos que envían eventos a Claude sin ser solicitados. Utilice HTTP en su lugar cuando su servidor solo responda a solicitudes, ya que HTTP admite OAuth y la bandera `claude mcp add --transport`, mientras que WebSocket no admite ninguno de los dos.

162 162 

163Configure servidores WebSocket en `.mcp.json` o con `claude mcp add-json`:163Configure servidores WebSocket en `.mcp.json` o con `claude mcp add-json`:

164 164 


167 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'167 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

168```168```

169 169 

170La entrada `type: "ws"` acepta los mismos campos `url`, `headers`, `headersHelper`, `timeout` y `alwaysLoad` que `http`. La autenticación es solo por encabezado, por lo que pase un token estático en `headers` o genere uno en el momento de la conexión con [`headersHelper`](#use-dynamic-headers-for-custom-authentication). La bandera `claude mcp add --transport` no acepta `ws`.170La entrada `type: "ws"` acepta los mismos campos `url`, `headers`, `headersHelper`, `timeout`, y `alwaysLoad` que `http`. La autenticación es solo por encabezado, por lo que pase un token estático en `headers` o genere uno en el momento de la conexión con [`headersHelper`](#use-dynamic-headers-for-custom-authentication). La bandera `claude mcp add --transport` no acepta `ws`.

171 171 

172<h3 id="add-a-server-from-setup-instructions-written-for-another-client">172<h3 id="add-a-server-from-setup-instructions-written-for-another-client">

173 Agregar un servidor desde instrucciones de configuración escritas para otro cliente173 Agregar un servidor desde instrucciones de configuración escritas para otro cliente

174</h3>174</h3>

175 175 

176Los servidores MCP no son específicos de Claude Code, por lo que las instrucciones de configuración de un servidor pueden estar escritas para Claude Desktop, Cursor u otro cliente MCP y no dar ningún comando `claude mcp add`. Para agregar el servidor de todas formas, busque en esas instrucciones una de estas tres cosas:176Los servidores MCP no son específicos de Claude Code, por lo que las instrucciones de configuración de un servidor pueden estar escritas para Claude Desktop, Cursor, u otro cliente MCP y no proporcionar ningún comando `claude mcp add`. Para agregar el servidor de todas formas, busque en esas instrucciones una URL, un comando de lanzamiento, o un bloque JSON:

177 177 

178* **Una URL** como `https://mcp.example.com/mcp`: el servidor es remoto.178* **Una URL** como `https://mcp.example.com/mcp`: el servidor es remoto.

179* **Un comando de lanzamiento** como `npx -y @example/mcp-server`: el servidor se ejecuta en su máquina.179* **Un comando de lanzamiento** como `npx -y @example/mcp-server`: el servidor se ejecuta en su máquina.


185 Desde una URL185 Desde una URL

186</h4>186</h4>

187 187 

188Una URL significa que el servidor es remoto. Para un punto final `https://`, agréguelo con `--transport http`, o siga [Opción 2](#option-2-add-a-remote-sse-server) cuando las instrucciones digan que el punto final usa SSE. Para un punto final `wss://`, use [Opción 4](#option-4-add-a-remote-websocket-server) en su lugar, ya que `--transport` no acepta `ws`:188Una URL significa que el servidor es remoto. Para un punto final `https://`, agréguelo con `--transport http`, o siga [Opción 2](#option-2-add-a-remote-sse-server) cuando las instrucciones digan que el punto final utiliza SSE. Para un punto final `wss://`, utilice [Opción 4](#option-4-add-a-remote-websocket-server) en su lugar, ya que `--transport` no acepta `ws`:

189 189 

190```bash theme={null}190```bash theme={null}

191claude mcp add --transport http example https://mcp.example.com/mcp191claude mcp add --transport http example https://mcp.example.com/mcp

192```192```

193 193 

194Si las instrucciones también dan una clave API o encabezado de token, páselo con `--header` como se muestra en [Opción 1](#option-1-add-a-remote-http-server).194Si las instrucciones también proporcionan una clave API o encabezado de token, páselo con `--header` como se muestra en [Opción 1](#option-1-add-a-remote-http-server).

195 195 

196<h4 id="from-an-npx-uvx-or-binary-command">196<h4 id="from-an-npx-uvx-or-binary-command">

197 Desde un comando `npx`, `uvx` o binario197 Desde un comando `npx`, `uvx`, o binario

198</h4>198</h4>

199 199 

200Un comando de lanzamiento significa que el servidor se ejecuta como un proceso stdio local. Ponga todo el comando después de `--`, para que Claude Code pase banderas como `-y` al comando que inicia el servidor en lugar de leerlas como sus propias opciones. Pase cualquier variable de entorno que las instrucciones pidan con `--env`, después del nombre del servidor y antes de `--`:200Un comando de lanzamiento significa que el servidor se ejecuta como un proceso stdio local. Coloque todo el comando después de `--`, para que Claude Code pase banderas como `-y` al comando que inicia el servidor en lugar de leerlas como sus propias opciones. Pase cualquier variable de entorno que las instrucciones soliciten con `--env`, después del nombre del servidor y antes de `--`:

201 201 

202```bash theme={null}202```bash theme={null}

203claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server203claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server


209 Desde un bloque JSON `mcpServers`209 Desde un bloque JSON `mcpServers`

210</h4>210</h4>

211 211 

212Un bloque `mcpServers` escrito para otro cliente MCP, como Claude Desktop, usa la clave contenedora y la forma de entrada que Claude Code lee. Pase a `claude mcp add-json` el objeto dentro de `mcpServers`, no el contenedor. Dos entradas necesitan una reparación primero:212Un bloque `mcpServers` escrito para otro cliente MCP, como Claude Desktop, utiliza la clave contenedora y la forma de entrada que Claude Code lee. Pase a `claude mcp add-json` el objeto dentro de `mcpServers`, no el contenedor. Dos entradas necesitan una reparación primero:

213 213 

214* **Una `url` sin `type`**: agregue `"type": "http"`, `"type": "sse"`, o `"type": "ws"` para coincidir con el punto final. Claude Code lee una entrada sin `type` como un servidor stdio, por lo que una entrada `url` sin `type` falla.214* **Una `url` sin `type`**: agregue `"type": "http"`, `"type": "sse"`, o `"type": "ws"` para coincidir con el punto final. Claude Code lee una entrada sin `type` como un servidor stdio, por lo que una entrada `url` sin `type` falla.

215* **Una clave con caracteres distintos de letras, números, guiones e guiones bajos**: elija un nombre de servidor que use solo esos caracteres. De lo contrario, la clave es el nombre del servidor.215* **Una clave con caracteres distintos de letras, números, guiones e guiones bajos**: elija un nombre de servidor que utilice solo esos caracteres. De lo contrario, la clave es el nombre del servidor.

216 216 

217Por ejemplo, este bloque:217Por ejemplo, este bloque:

218 218 


233claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'233claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'

234```234```

235 235 

236[Agregar servidores MCP desde configuración JSON](#add-mcp-servers-from-json-configuration) cubre el escape de shell y la bandera `--scope` para `add-json`. Para compartir el servidor con su equipo en su lugar, agregue `--scope project`, o agregue la entrada bajo `mcpServers` en `.mcp.json` en la raíz de su proyecto y confirme. [Alcance de proyecto](#project-scope) cubre cómo Claude Code carga y aprueba ese archivo.236[Agregar servidores MCP desde configuración JSON](#add-mcp-servers-from-json-configuration) cubre el escape de shell y la bandera `--scope` para `add-json`. Para compartir el servidor con su equipo en su lugar, agregue `--scope project`, o agregue la entrada bajo `mcpServers` en `.mcp.json` en la raíz de su proyecto y confírmela. [Alcance de proyecto](#project-scope) cubre cómo Claude Code carga y aprueba ese archivo.

237 237 

238Cada comando `claude mcp add` y `claude mcp add-json` imprime una línea `Added ...`. Para verificar que Claude Code se conectó, ejecute `claude mcp get <name>`; [Estado del servidor](#server-status) cubre los estados que muestra y el paso de aprobación para servidores `.mcp.json`.238Cada comando `claude mcp add` y `claude mcp add-json` imprime una línea `Added ...`. Para verificar que Claude Code se conectó, ejecute `claude mcp get <name>`; [Estado del servidor](#server-status) cubre los estados que muestra y el paso de aprobación para servidores `.mcp.json`.

239 239 

240<h3 id="managing-your-servers">240<h3 id="managing-your-servers">

241 Gestión de sus servidores241 Administración de sus servidores

242</h3>242</h3>

243 243 

244Una vez configurados, puede gestionar sus servidores MCP con estos comandos:244Una vez configurados, puede administrar sus servidores MCP con estos comandos:

245 245 

246```bash theme={null}246```bash theme={null}

247# Listar todos los servidores configurados247# Listar todos los servidores configurados

248claude mcp list248claude mcp list

249 249 

250# Obtener detalles para un servidor específico250# Obtener detalles de un servidor específico

251claude mcp get notion251claude mcp get notion

252 252 

253# Eliminar un servidor253# Eliminar un servidor


263 Estado del servidor263 Estado del servidor

264</h4>264</h4>

265 265 

266`claude mcp add` confirma una adición exitosa imprimiendo una línea `Added ...`, lo que significa que la configuración fue escrita. `claude mcp list` luego muestra un estado de salud junto a cada servidor que lista, como `✔ Connected`, `! Needs authentication`, o `✘ Failed to connect`. Un estado de fallo significa que Claude Code no pudo conectarse a ese servidor, no que el comando list haya fallado.266`claude mcp add` confirma una adición exitosa imprimiendo una línea `Added ...`, lo que significa que la configuración se escribió. `claude mcp list` luego muestra un estado de salud junto a cada servidor que enumera, como `✔ Connected`, `! Needs authentication`, o `✘ Failed to connect`. Un estado de falla significa que Claude Code no pudo conectarse a ese servidor, no que el comando list haya fallado.

267 267 

268Los estados en esta lista informan una decisión de configuración en lugar de un intento de conexión, por lo que Claude Code los imprime sin conectarse al servidor:268Los estados en esta lista informan una decisión de configuración en lugar de un intento de conexión, por lo que Claude Code los imprime sin conectarse al servidor:

269 269 

270* ``⏸ Pending approval (run `claude` to approve)``: un servidor con alcance de proyecto desde `.mcp.json` que aún no ha aprobado. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Ejecute `claude` de forma interactiva para revisar y aprobar.270* ``⏸ Pending approval (run `claude` to approve)``: un servidor con alcance de proyecto de `.mcp.json` que aún no ha aprobado. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Ejecute `claude` interactivamente para revisarlo y aprobarlo.

271* `✘ Rejected (see disabledMcpjsonServers in settings)`: un servidor `.mcp.json` que una entrada [`disabledMcpjsonServers`](/docs/es/settings-reference#disabledmcpjsonservers) rechaza. Claude Code lo muestra solo en `claude mcp get <name>`.271* `✘ Rejected (see disabledMcpjsonServers in settings)`: un servidor `.mcp.json` que una entrada [`disabledMcpjsonServers`](/docs/es/settings-reference#disabledmcpjsonservers) rechaza. Claude Code lo muestra solo en `claude mcp get <name>`.

272* `⊘ Disabled for this project (re-enable via /mcp)`: un servidor que la lista [`disabledMcpServers`](#disable-a-server-without-removing-it) del proyecto nombra. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Active el servidor nuevamente desde el panel `/mcp`. Antes de v2.1.238, ambos comandos se conectaban a un servidor deshabilitado para verificar su salud e informaban el resultado de la conexión.272* `⊘ Disabled for this project (re-enable via /mcp)`: un servidor que la lista [`disabledMcpServers`](#disable-a-server-without-removing-it) del proyecto nombra. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Active el servidor nuevamente desde el panel `/mcp`. Antes de v2.1.238, ambos comandos se conectaban a un servidor deshabilitado para verificar su salud e informaban el resultado de la conexión.

273 273 

274Los servidores WebSocket no aparecen en la salida de `claude mcp list`. Use `claude mcp get <name>` o el panel `/mcp` para verificarlos.274Los servidores WebSocket no aparecen en la salida de `claude mcp list`. Utilice `claude mcp get <name>` o el panel `/mcp` para verificarlos.

275 275 

276<h4 id="project-server-approvals-and-workspace-trust">276<h4 id="project-server-approvals-and-workspace-trust">

277 Aprobaciones de servidores de proyecto y confianza del espacio de trabajo277 Aprobaciones de servidores de proyecto y confianza del espacio de trabajo

278</h4>278</h4>

279 279 

280A partir de v2.1.196, `claude mcp list` y `claude mcp get` leen aprobaciones de `.mcp.json` solo desde archivos de configuración que no están comprometidos en el repositorio hasta que confíe en el espacio de trabajo ejecutando `claude` en él y aceptando el diálogo de confianza del espacio de trabajo. Un repositorio clonado no puede aprobar sus propios servidores: [`enableAllProjectMcpServers`](/docs/es/settings-reference#enableallprojectmcpservers) o [`enabledMcpjsonServers`](/docs/es/settings-reference#enabledmcpjsonservers) comprometido en el archivo `.claude/settings.json` del proyecto se ignora en una carpeta no confiable, y el servidor permanece en `⏸ Pending approval` en lugar de estar conectado y verificado de salud.280A partir de v2.1.196, `claude mcp list` y `claude mcp get` leen aprobaciones `.mcp.json` solo de archivos de configuración que no se registran en el repositorio hasta que confíe en el espacio de trabajo ejecutando `claude` en él y aceptando el diálogo de confianza del espacio de trabajo. Un repositorio clonado no puede aprobar sus propios servidores: [`enableAllProjectMcpServers`](/docs/es/settings-reference#enableallprojectmcpservers) o [`enabledMcpjsonServers`](/docs/es/settings-reference#enabledmcpjsonservers) confirmados en `.claude/settings.json` del proyecto se ignoran en una carpeta no confiable, y el servidor permanece en `⏸ Pending approval` en lugar de estar conectado y verificado de salud.

281 281 

282Las aprobaciones de estas fuentes aún se aplican en una carpeta no confiable:282Las aprobaciones de estas fuentes aún se aplican en una carpeta no confiable:

283 283 

284* su archivo `~/.claude/settings.json` del usuario284* su `~/.claude/settings.json` de usuario

285* configuración gestionada285* configuración administrada

286* configuración pasada con `--settings`286* configuración pasada con `--settings`

287 287 

288Claude Code también aplica aprobaciones desde un archivo `.claude/settings.local.json` sin rastrear, pero ejecuta git para verificar si el archivo está rastreado, y ejecuta esa verificación solo en una [carpeta confiable](/docs/es/permissions#project-allow-rules-and-workspace-trust). En una carpeta que nunca ha confiado, Claude Code espera el diálogo de confianza antes de aplicar las aprobaciones del archivo, a menos que la carpeta sea su directorio de configuración personal: su directorio de inicio, o un directorio cuyo `.claude` ha establecido como [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars). Antes de v2.1.207, Claude Code aplicaba aprobaciones desde un archivo `.claude/settings.local.json` sin rastrear incluso en una carpeta que nunca había confiado.288Claude Code también aplica aprobaciones de un `.claude/settings.local.json` sin seguimiento, pero ejecuta git para verificar si el archivo se rastrea, y ejecuta esa verificación solo en una [carpeta confiable](/docs/es/permissions#project-allow-rules-and-workspace-trust). En una carpeta que nunca ha confiado, Claude Code espera el diálogo de confianza antes de aplicar las aprobaciones del archivo, a menos que la carpeta sea su propio hogar de configuración: su directorio de inicio, o un directorio cuyo `.claude` haya establecido como [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars). Antes de v2.1.207, Claude Code aplicaba aprobaciones de un `.claude/settings.local.json` sin seguimiento incluso en una carpeta que nunca había confiado.

289 289 

290Una entrada `disabledMcpjsonServers` en cualquier archivo de configuración aún rechaza el servidor.290Una entrada `disabledMcpjsonServers` en cualquier archivo de configuración aún rechaza el servidor.

291 291 


293 Detalle del estado del servidor293 Detalle del estado del servidor

294</h4>294</h4>

295 295 

296En `/mcp`, incluyendo el menú de un servidor allí, y en el [gestor `/plugin`](/docs/es/plugins), un servidor HTTP o SSE remoto que ha usado antes puede mostrar un estado `cached` como `cached 2h ago · connects on first use · 5 tools`. Claude Code cargó la lista de herramientas del servidor desde su caché de descubrimiento, guardado en una sesión anterior, en lugar de conectarse al inicio, y Claude Code conecta el servidor la primera vez que Claude llama a una de las herramientas del servidor. Las herramientas están disponibles desde su primer mensaje, por lo que no necesita hacer nada. El caché de descubrimiento y su estado `cached` requieren Claude Code v2.1.221 o posterior.296En `/mcp`, incluido el menú de un servidor allí, y en el administrador [`/plugin`](/docs/es/plugins), un servidor HTTP o SSE remoto que ha utilizado antes puede mostrar un estado `cached` como `cached 2h ago · connects on first use · 5 tools`. Claude Code cargó la lista de herramientas del servidor desde su caché de descubrimiento, guardado en una sesión anterior, en lugar de conectarse al inicio, y Claude Code conecta el servidor la primera vez que Claude llama a una de las herramientas del servidor. Las herramientas están disponibles desde su primer mensaje, por lo que no necesita hacer nada. El caché de descubrimiento y su estado `cached` requieren Claude Code v2.1.221 o posterior.

297 297 

298El caché de descubrimiento está desactivado de forma predeterminada a menos que un lanzamiento gradual lo haya habilitado para su cuenta. Establezca [`MCP_DISCOVERY_CACHE=1`](/docs/es/env-vars) para activarlo, o `0` para mantenerlo desactivado incluso cuando el lanzamiento lo haya habilitado. Antes de v2.1.238, el caché estaba activado de forma predeterminada.298El caché de descubrimiento está desactivado de forma predeterminada a menos que un lanzamiento gradual lo haya habilitado para su cuenta. Establezca [`MCP_DISCOVERY_CACHE=1`](/docs/es/env-vars) para activarlo, o `0` para mantenerlo desactivado incluso cuando el lanzamiento lo haya habilitado. Antes de v2.1.238, el caché estaba activado de forma predeterminada.

299 299 


304 304 

305Después de descartar la entrada, Claude Code obtiene la lista de herramientas del servidor desde el servidor en lugar de desde el caché.305Después de descartar la entrada, Claude Code obtiene la lista de herramientas del servidor desde el servidor en lugar de desde el caché.

306 306 

307Cuando el estado de un servidor es `✘ Failed to connect`, `claude mcp list` añade el detalle de fallo a esa línea de estado, y `claude mcp get <name>` lo muestra en una línea `Issue:`: el estado HTTP o código de error, más cualquier texto de error que el servidor devolvió. La vista de detalle del servidor en `/mcp` incluye el mismo texto reportado por el servidor en su fila `Issue:`. Claude Code redacta texto similar a credenciales de este detalle y nunca incluye la URL del servidor expandida, que puede llevar secretos. Claude Code no añade detalle a un estado `✘ Connection error`, porque el texto de excepción que imprimiría allí puede incrustar esa URL. Antes de v2.1.219, ambos comandos mostraban solo el estado de fallo desnudo, sin el código de estado o el texto de error del servidor.307Cuando el estado de un servidor es `✘ Failed to connect`, `claude mcp list` agrega el detalle de falla a esa línea de estado, y `claude mcp get <name>` lo muestra en una línea `Issue:`: el estado HTTP o código de error, más cualquier texto de error que el servidor devolvió. La vista de detalle del servidor en `/mcp` incluye el mismo texto informado por el servidor en su fila `Issue:`. Claude Code redacta texto similar a credenciales de este detalle y nunca incluye la URL del servidor expandida, que puede llevar secretos. Claude Code no agrega detalle a un estado `✘ Connection error`, porque el texto de excepción que imprimiría allí puede incrustar esa URL. Antes de v2.1.219, ambos comandos mostraban solo el estado de falla desnudo, sin el código de estado o el texto de error del servidor.

308 308 

309Cuando completa la autenticación desde `/mcp` y la conexión aún falla con un estado HTTP o un código de error de transporte, Claude Code añade ese código y el origen de la URL que intentó al mensaje que imprime después del intento. El origen es el esquema y host, más el puerto cuando la URL nombra uno, como `https://mcp.example.com`.309Cuando completa la autenticación desde `/mcp` y la conexión aún falla con un estado HTTP o un código de error de transporte, Claude Code agrega ese código y el origen de la URL del servidor al mensaje que imprime después del intento. El origen es el esquema y host, más el puerto cuando la URL nombra uno, como `https://mcp.example.com`.

310 310 

311* La ruta y consulta nunca aparecen en ese mensaje.311* La ruta y consulta nunca aparecen en ese mensaje.

312* Para un servidor en el alcance local, proyecto, usuario o [scope](#mcp-installation-scopes) o en configuración MCP gestionada, el origen muestra el host tal como está escrito en esa configuración, por lo que una referencia `${VAR}` en el host no se expande en el mensaje.312* Para un servidor en el [alcance](#mcp-installation-scopes) local, de proyecto o de usuario o en configuración MCP administrada, el origen muestra el host tal como está escrito en esa configuración, por lo que una referencia `${VAR}` en el host no se expande en el mensaje.

313* Para un fallo sin estado o código de error, Claude Code muestra el texto de error sin el origen.313* Para una falla sin código de estado o de error, Claude Code muestra el texto de error sin el origen.

314 314 

315Un servidor remoto cuya configuración tiene una `url` vacía se muestra como `not configured` en `/mcp`, en `claude mcp list`, y en el [gestor `/plugin`](/docs/es/plugins), y Claude Code no intenta conectarse a él. Un plugin puede incluir una entrada de marcador de posición como esta para un conector que configura más tarde, por lo que Claude Code no lo informa como un error o un problema de configuración. La vista de detalles del servidor en `/mcp` lee `No URL configured for this server`; establezca la `url` de la entrada para conectarse. Antes de v2.1.208, Claude Code informaba una `url` vacía como un problema de configuración con un aviso para reconectar.315Un servidor remoto cuya configuración tiene una `url` vacía se muestra como `not configured` en `/mcp`, en `claude mcp list`, y en el administrador [`/plugin`](/docs/es/plugins), y Claude Code no intenta conectarse a él. Un plugin puede incluir una entrada de marcador de posición como esta para un conector que configura más tarde, por lo que Claude Code no lo informa como un error o un problema de configuración. La vista de detalle del servidor en `/mcp` lee `No URL configured for this server`; establezca la `url` de la entrada para conectarla. Antes de v2.1.208, Claude Code informaba una `url` vacía como un problema de configuración con un aviso para reconectar.

316 316 

317<h4 id="configuration-warnings">317<h4 id="configuration-warnings">

318 Advertencias de configuración318 Advertencias de configuración


320 320 

321Claude Code advierte sobre los problemas de configuración a continuación. Cada entrada dice qué verifica Claude Code y cómo borrar la advertencia:321Claude Code advierte sobre los problemas de configuración a continuación. Cada entrada dice qué verifica Claude Code y cómo borrar la advertencia:

322 322 

323* **Espacios en blanco ocultos**: Claude Code advierte cuando un valor de configuración MCP lleva espacios en blanco ocultos al principio o al final, que a menudo provienen de pegar un token con una nueva línea al final. Claude Code verifica `command`, `url`, cada entrada `args`, y los valores y nombres de clave bajo `env` y `headers`. Claude Code muestra la advertencia en la salida de `claude mcp list` y en `/mcp`, nombrando los campos afectados sin ecoar sus valores, por ejemplo `Leading or trailing whitespace in: headers.Authorization`. Claude Code no recorta el espacio en blanco y usa los valores exactamente como están escritos, por lo que edite la configuración para eliminarlo.323* **Espacios en blanco ocultos**: Claude Code advierte cuando un valor de configuración MCP lleva espacios en blanco ocultos al principio o al final, que a menudo provienen de pegar un token con una nueva línea al final. Claude Code verifica `command`, `url`, cada entrada `args`, y los valores y nombres de clave bajo `env` y `headers`. Claude Code muestra la advertencia en la salida de `claude mcp list` y en `/mcp`, nombrando los campos afectados sin repetir sus valores, por ejemplo `Leading or trailing whitespace in: headers.Authorization`. Claude Code no recorta el espacio en blanco y utiliza los valores exactamente como están escritos, por lo que edite la configuración para eliminarlo.

324* **Mismo nombre en más de un alcance**: si define el mismo nombre de servidor en más de un [alcance](#mcp-installation-scopes) con diferentes puntos finales, Claude Code advierte sobre el conflicto en la salida de `claude mcp list` y en `/mcp`. Claude Code almacena inicios de sesión OAuth por punto final, por lo que cuando autentica la definición que se carga en un proyecto, aún necesita iniciar sesión por separado en un proyecto donde se carga una definición diferente. Mantenga el punto final que desea y elimine los otros con `claude mcp remove <name> --scope <scope>`. En la advertencia, Claude Code cita el punto final de cada alcance como está escrito en su configuración, con referencias [`${VAR}`](#environment-variable-expansion-in-mcp-json) sin expandir, por lo que nunca muestra un valor resuelto como una clave API.324* **Mismo nombre en más de un alcance**: si define el mismo nombre de servidor en más de un [alcance](#mcp-installation-scopes) con diferentes puntos finales, Claude Code advierte sobre el conflicto en la salida de `claude mcp list` y en `/mcp`. Claude Code almacena inicios de sesión OAuth por punto final, por lo que cuando autentica la definición que se carga en un proyecto, aún necesita iniciar sesión por separado en un proyecto donde se carga una definición diferente. Mantenga el punto final que desea y elimine los otros con `claude mcp remove <name> --scope <scope>`. En la advertencia, Claude Code cita el punto final de cada alcance tal como está escrito en su configuración, con referencias [`${VAR}`](#environment-variable-expansion-in-mcp-json) sin expandir, por lo que nunca muestra un valor resuelto como una clave API.

325* **Nombres reservados**: Claude Code reserva los nombres de sus servidores integrados, incluyendo `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, y `Claude Browser`. Si su configuración define un servidor con un nombre reservado, Claude Code lo omite al cargar y muestra una advertencia pidiéndole que lo renombre. `claude mcp add` rechaza un nombre reservado con un error. `Claude Preview` y `Claude Browser` ambos nombran el servidor integrado que el [panel de vista previa de la aplicación de escritorio de Claude Code](/docs/es/desktop#preview-your-app) utiliza. Antes de v2.1.205, `Claude Browser` no estaba reservado, por lo que un servidor configurado por el usuario podría registrarse bajo ese nombre.325* **Nombres reservados**: Claude Code reserva los nombres de sus servidores integrados, incluidos `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, y `Claude Browser`. Si su configuración define un servidor con un nombre reservado, Claude Code lo omite en el tiempo de carga y muestra una advertencia pidiéndole que lo renombre. `claude mcp add` rechaza un nombre reservado con un error. `Claude Preview` y `Claude Browser` ambos nombran el servidor integrado que el [panel de vista previa de la aplicación de escritorio Claude Code](/docs/es/desktop#preview-your-app) utiliza. Antes de v2.1.205, `Claude Browser` no estaba reservado, por lo que un servidor configurado por el usuario podría registrarse bajo ese nombre.

326* **Variable de entorno faltante**: si una referencia [`${VAR}`](#environment-variable-expansion-in-mcp-json) en la configuración de un servidor nombra una variable que no está establecida y no tiene `:-default`, Claude Code advierte en la salida de `claude mcp list` y en `/mcp`, nombrando la variable, y aún carga el servidor con el texto `${VAR}` sin expandir. Establezca la variable o agregue un fallback `${VAR:-default}`.326* **Variable de entorno faltante**: si una referencia [`${VAR}`](#environment-variable-expansion-in-mcp-json) en la configuración de un servidor nombra una variable que no está establecida y no tiene `:-default`, Claude Code advierte en la salida de `claude mcp list` y en `/mcp`, nombrando la variable, y aún carga el servidor con el texto `${VAR}` sin expandir. Establezca la variable o agregue un respaldo `${VAR:-default}`. En la `url` y `headers` de un servidor remoto, algunas variables de credencial [se leen como vacías](#credential-variables-that-read-as-empty) en su lugar, sin advertencia.

327 327 

328<h4 id="tool-availability">328<h4 id="tool-availability">

329 Disponibilidad de herramientas329 Disponibilidad de herramientas

330</h4>330</h4>

331 331 

332El panel `/mcp` muestra el recuento de herramientas junto a cada servidor conectado e indica los servidores que anuncian la capacidad de herramientas pero no exponen ninguna herramienta.332El panel `/mcp` muestra el recuento de herramientas junto a cada servidor conectado e indica servidores que anuncian la capacidad de herramientas pero no exponen herramientas.

333 333 

334Si su solicitud necesita herramientas de un servidor que aún se está conectando en segundo plano, Claude espera a que ese servidor continúe. Cómo sucede la espera depende de su configuración:334Si su solicitud necesita herramientas de un servidor que aún se está conectando en segundo plano, Claude espera a ese servidor antes de continuar. Cómo sucede la espera depende de su configuración:

335 335 

336* **Con [búsqueda de herramientas](#scale-with-mcp-tool-search), la predeterminada**: la espera ocurre dentro de la llamada `ToolSearch`.336* **Con [búsqueda de herramientas](#scale-with-mcp-tool-search), el valor predeterminado**: la espera sucede dentro de la llamada `ToolSearch`.

337* **Sin búsqueda de herramientas**: Claude usa la herramienta `WaitForMcpServers` en su lugar. Las configuraciones sin búsqueda de herramientas incluyen un `ANTHROPIC_BASE_URL` personalizado, `ENABLE_TOOL_SEARCH=false`, y un modelo anterior a la generación Claude 4.5 en Google Cloud's Agent Platform.337* **Sin búsqueda de herramientas**: Claude utiliza la herramienta `WaitForMcpServers` en su lugar. Las configuraciones sin búsqueda de herramientas incluyen un `ANTHROPIC_BASE_URL` personalizado, `ENABLE_TOOL_SEARCH=false`, y un modelo anterior a la generación Claude 4.5 en la Plataforma de Agentes de Google Cloud.

338* **En una implementación de Microsoft Foundry [alojada en Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)**: Claude comienza en la ruta de búsqueda de herramientas en lugar de con `WaitForMcpServers`, ya que Claude Code descubre el rechazo del lado del servidor solo desde la API. Después de que Claude Code cambie esa implementación a [carga anticipada](#scale-with-mcp-tool-search), las herramientas de un servidor que termina de conectarse se vuelven disponibles en la siguiente solicitud de Claude.338* **En un despliegue de Microsoft Foundry [alojado en Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)**: Claude comienza en la ruta de búsqueda de herramientas en lugar de con `WaitForMcpServers`, ya que Claude Code descubre el rechazo del lado del servidor solo desde la API. Después de que Claude Code cambie ese despliegue a [carga anticipada](#scale-with-mcp-tool-search), las herramientas de un servidor que termina de conectarse están disponibles en la siguiente solicitud de Claude.

339 339 

340Con búsqueda de herramientas habilitada, cuando un servidor termina de conectarse mientras Claude está trabajando, Claude Code lista los nombres de herramientas del servidor a Claude en su siguiente solicitud en el mismo turno. Claude puede entonces buscar y llamar a esas herramientas sin esperar su siguiente mensaje.340Con la búsqueda de herramientas habilitada, cuando un servidor termina de conectarse mientras Claude está trabajando, Claude Code enumera los nombres de herramientas del servidor a Claude en su siguiente solicitud en el mismo turno. Claude puede entonces buscar y llamar a esas herramientas sin esperar su siguiente mensaje.

341 341 

342<h3 id="disable-a-server-without-removing-it">342<h3 id="disable-a-server-without-removing-it">

343 Deshabilitar un servidor sin eliminarlo343 Deshabilitar un servidor sin eliminarlo

344</h3>344</h3>

345 345 

346Alterne un servidor en el panel `/mcp` para detener que Claude Code se conecte a él sin perder su configuración. Claude Code aún lista el servidor en `/mcp`, marcado como deshabilitado.346Alterne un servidor en el panel `/mcp` para detener que Claude Code se conecte a él sin perder su configuración. Claude Code aún enumera el servidor en `/mcp`, marcado como deshabilitado.

347 347 

348Cuando alterna un servidor, Claude Code registra su elección por proyecto en `~/.claude.json`, en una de dos listas que cubren conjuntos disjuntos de servidores:348Cuando alterna un servidor, Claude Code registra su elección por proyecto en `~/.claude.json`, en una de dos listas que cubren conjuntos disjuntos de servidores:

349 349 

350* `disabledMcpServers`: una lista de exclusión para servidores configurados por el usuario, servidores de plugins, los conectores de claude.ai que Claude Code [obtiene por sí mismo](#how-connectors-reach-claude-code), servidores que su organización [proporciona a través de configuración gestionada](/docs/es/managed-mcp#provide-servers-through-managed-settings), y servidores integrados que están habilitados de forma predeterminada. Claude Code no se conecta a un servidor que lista aquí. Cuando deshabilita un conector de claude.ai con el alternador `/mcp` por proyecto descrito en [Deshabilitar conectores de claude.ai](#disable-claude-ai-connectors), Claude Code lo escribe en esta lista bajo su nombre de visualización, por ejemplo `claude.ai Slack`.350* `disabledMcpServers`: una lista de exclusión para servidores configurados por el usuario, servidores de plugins, servidores que su organización [proporciona a través de configuración administrada](/docs/es/managed-mcp#provide-servers-through-managed-settings), los conectores claude.ai que Claude Code [obtiene por sí mismo](#how-connectors-reach-claude-code), y servidores integrados que están habilitados de forma predeterminada. Claude Code no se conecta a un servidor que enumere aquí. Cuando deshabilita un conector claude.ai con el alternador `/mcp` por proyecto descrito en [Deshabilitar conectores claude.ai](#disable-claude-ai-connectors), Claude Code lo escribe en esta lista bajo su nombre de visualización, por ejemplo `claude.ai Slack`.

351* `enabledMcpServers`: una lista de inclusión para servidores integrados que están deshabilitados de forma predeterminada, como `computer-use`. Claude Code se conecta a un servidor deshabilitado de forma predeterminada solo cuando lo lista aquí.351* `enabledMcpServers`: una lista de inclusión para servidores integrados que están deshabilitados de forma predeterminada, como `computer-use`. Claude Code se conecta a un servidor deshabilitado de forma predeterminada solo cuando lo enumera aquí.

352 352 

353Claude Code consulta exactamente una de las dos listas para cada servidor, por lo que ninguna lista anula la otra. Si agrega un servidor regular a `enabledMcpServers`, o un servidor integrado deshabilitado de forma predeterminada a `disabledMcpServers`, Claude Code ignora la entrada.353Claude Code consulta exactamente una de las dos listas para cada servidor, por lo que ninguna lista anula la otra. Si agrega un servidor normal a `enabledMcpServers`, o un servidor integrado deshabilitado de forma predeterminada a `disabledMcpServers`, Claude Code ignora la entrada.

354 354 

355`disabledMcpServers` y `enabledMcpServers` no están relacionados con [`enabledMcpjsonServers`](/docs/es/settings-reference#enabledmcpjsonservers) y [`disabledMcpjsonServers`](/docs/es/settings-reference#disabledmcpjsonservers), que controlan la aprobación de servidores definidos en el archivo `.mcp.json` de un proyecto.355`disabledMcpServers` y `enabledMcpServers` no están relacionados con [`enabledMcpjsonServers`](/docs/es/settings-reference#enabledmcpjsonservers) y [`disabledMcpjsonServers`](/docs/es/settings-reference#disabledmcpjsonservers), que controlan la aprobación de servidores definidos en el archivo `.mcp.json` de un proyecto.

356 356 


358 Tiempos de ejecución del cliente MCP358 Tiempos de ejecución del cliente MCP

359</h3>359</h3>

360 360 

361Claude Code se conecta a servidores MCP a través de uno de dos tiempos de ejecución del cliente. El tiempo de ejecución v1 se basa en MCP TypeScript SDK 1.x. El tiempo de ejecución v2 es el mismo código en [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), que añade la revisión del protocolo MCP 2026-07-28. El resto de esta página se aplica a ambos tiempos de ejecución, excepto donde una sección nombra el tiempo de ejecución v2.361Claude Code se conecta a servidores MCP a través de uno de dos tiempos de ejecución del cliente. El tiempo de ejecución v1 se basa en MCP TypeScript SDK 1.x. El tiempo de ejecución v2 es el mismo código en [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), que agrega la revisión del protocolo MCP 2026-07-28. El resto de esta página se aplica a ambos tiempos de ejecución, excepto donde una sección nombra el tiempo de ejecución v2.

362 362 

363En Claude Code v2.1.232 o posterior, Claude Code usa el tiempo de ejecución v2. Elige un tiempo de ejecución cada vez que lo inicia y lo mantiene hasta que sale. Usa v1 cuando lo ejecuta:363Claude Code elige un tiempo de ejecución cada vez que lo inicia y lo mantiene hasta que sale. En sesiones donde [obtiene banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), utiliza el tiempo de ejecución v2 en Claude Code v2.1.232 o posterior.

364 364 

365* En Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform, o Microsoft Foundry, a menos que una plataforma host que incrusta Claude Code establezca [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars)365En las sesiones donde no obtiene banderas de características, Claude Code utiliza el tiempo de ejecución v2 de forma predeterminada en Claude Code v2.1.274 o posterior:

366* Iniciado sesión a través de una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway)366 

367* Con [obtención de banderas de características desactivada](/docs/es/env-vars#features-that-need-feature-flag-fetching)367* Sesiones en Amazon Bedrock, Claude Platform en AWS, Plataforma de Agentes de Google Cloud, o Microsoft Foundry, a menos que una plataforma anfitriona que integra Claude Code establezca [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars)

368* Sesiones iniciadas sesión a través de una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway)

369* Sesiones donde desactiva la telemetría o la obtención de banderas de características, por ejemplo con `DISABLE_TELEMETRY`

368 370 

369En v2, Claude Code también:371En v2, Claude Code también:

370 372 

371* Pregunta a servidores HTTP y conectores de claude.ai si admiten la revisión más nueva, y la usa con los que lo hacen. Solo pregunta a servidores stdio si establece [`MCP_PROTOCOL_NEGOTIATION`](/docs/es/env-vars) en `auto`, y se conecta a todos los demás servidores como v1 lo hace.373* Pregunta a servidores HTTP si admiten la revisión más nueva, y la utiliza con los que lo hacen. También pregunta a servidores conectores claude.ai en sesiones donde obtiene banderas de características. Para que pregunte a servidores stdio, o a servidores conectores en cada sesión, establezca [`MCP_PROTOCOL_NEGOTIATION`](/docs/es/env-vars) en `auto`. Se conecta a todos los demás servidores como v1 lo hace.

372* Recibe notificaciones `list_changed` de servidores en la revisión más nueva sobre una [secuencia que mantiene abierta](#notification-streams-on-the-v2-runtime).374* Recibe notificaciones `list_changed` de servidores en la revisión más nueva sobre una [secuencia que mantiene abierta](#notification-streams-on-the-v2-runtime).

373* No registra un servidor de [canal](#push-messages-with-channels) que se conecta en la revisión más nueva, porque esa revisión no puede llevar mensajes de canal.375* No registra un servidor de [canal](#push-messages-with-channels) que se conecta en la revisión más nueva, porque esa revisión no puede llevar mensajes de canal.

374* Falla un [inicio de sesión OAuth de MCP](#authenticate-with-remote-mcp-servers) cuya respuesta de autorización nombra un emisor inesperado.376* Falla un [inicio de sesión OAuth de MCP](#authenticate-with-remote-mcp-servers) cuya respuesta de autorización nombra un emisor inesperado.

375 377 

376Anthropic puede mantener un servidor específico en el protocolo anterior, u off esa secuencia, con una bandera de característica que Claude Code obtiene.378Anthropic puede mantener un servidor específico en el protocolo anterior, u off esa secuencia, con una bandera de características que Claude Code obtiene.

377 379 

378Para elegir el tiempo de ejecución usted mismo, establezca [`MCP_SDK_GENERATION`](/docs/es/env-vars) en `v1` o `v2`. Para decidir si Claude Code pregunta, establezca [`MCP_PROTOCOL_NEGOTIATION`](/docs/es/env-vars) en `auto` o `legacy`. Donde Claude Code usa v1 de forma predeterminada, fijar `v2` no hace que pregunte, por lo que establezca `auto` también.380Para elegir el tiempo de ejecución usted mismo, establezca [`MCP_SDK_GENERATION`](/docs/es/env-vars) en `v1` o `v2`. Para decidir si Claude Code pregunta, establezca [`MCP_PROTOCOL_NEGOTIATION`](/docs/es/env-vars) en `auto` o `legacy`.

379 381 

380<h3 id="dynamic-tool-updates">382<h3 id="dynamic-tool-updates">

381 Actualizaciones dinámicas de herramientas383 Actualizaciones dinámicas de herramientas

382</h3>384</h3>

383 385 

384Claude Code admite notificaciones `list_changed` de MCP, permitiendo que los servidores MCP actualicen dinámicamente sus herramientas disponibles, indicaciones y recursos sin requerir que se desconecte y reconecte. Cuando un servidor MCP envía una notificación `list_changed`, Claude Code actualiza automáticamente las capacidades disponibles de ese servidor.386Claude Code admite notificaciones MCP `list_changed`, permitiendo que servidores MCP actualicen dinámicamente sus herramientas, indicaciones y recursos disponibles sin requerir que se desconecte y reconecte. Cuando un servidor MCP envía una notificación `list_changed`, Claude Code actualiza automáticamente las capacidades disponibles de ese servidor.

385 387 

386Si una solicitud de actualización falla, Claude Code mantiene las herramientas, indicaciones y recursos descubiertos anteriormente del servidor hasta que una actualización posterior tenga éxito. Antes de v2.1.214, un error transitorio durante la actualización reemplazaba las herramientas, indicaciones y recursos del servidor con una lista vacía.388Si una solicitud de actualización falla, Claude Code mantiene las herramientas, indicaciones y recursos descubiertos anteriormente del servidor hasta que una actualización posterior tenga éxito. Antes de v2.1.214, un error transitorio durante la actualización reemplazaba las herramientas, indicaciones y recursos del servidor con una lista vacía.

387 389 


394* **La secuencia se cierra nuevamente dentro de 10 segundos**: Claude Code la reabre hasta tres veces, luego se detiene para esa conexión.396* **La secuencia se cierra nuevamente dentro de 10 segundos**: Claude Code la reabre hasta tres veces, luego se detiene para esa conexión.

395* **La secuencia permanece abierta más de 10 segundos, luego se cierra**, como las secuencias a hosts sin servidor comúnmente lo hacen: después de cinco reaperturas en una hora, Claude Code espera aproximadamente seis horas antes de la siguiente.397* **La secuencia permanece abierta más de 10 segundos, luego se cierra**, como las secuencias a hosts sin servidor comúnmente lo hacen: después de cinco reaperturas en una hora, Claude Code espera aproximadamente seis horas antes de la siguiente.

396 398 

397Hasta que la secuencia se reabre, mantiene las herramientas, indicaciones y recursos obtenidos por última vez del servidor. Para recoger sus cambios más pronto, reconecte el servidor desde `/mcp`.399Hasta que la secuencia se reabre, mantiene las últimas herramientas, indicaciones y recursos obtenidos del servidor. Para recoger sus cambios más pronto, reconecte el servidor desde `/mcp`.

398 400 

399<h3 id="automatic-reconnection">401<h3 id="automatic-reconnection">

400 Reconexión automática402 Reconexión automática

401</h3>403</h3>

402 404 

403Claude Code reconecta un servidor remoto que se cae a mitad de sesión y reintenta la primera conexión de un servidor HTTP o SSE después de un error transitorio. Los servidores stdio son procesos locales, y Claude Code no los reconecta automáticamente.405Claude Code reconecta un servidor remoto que se cae a mitad de sesión e intenta nuevamente la primera conexión de un servidor HTTP o SSE después de un error transitorio. Los servidores stdio son procesos locales, y Claude Code no los reconecta automáticamente.

404 406 

405<h4 id="mid-session-drops-of-a-remote-server">407<h4 id="mid-session-drops-of-a-remote-server">

406 Caídas a mitad de sesión de un servidor remoto408 Caídas a mitad de sesión de un servidor remoto


408 410 

409Claude Code reconecta un servidor remoto caído con retroceso exponencial: hasta cinco intentos, comenzando con un retraso de un segundo y duplicándolo cada vez. Lo que ve depende de cómo esté ejecutando Claude Code:411Claude Code reconecta un servidor remoto caído con retroceso exponencial: hasta cinco intentos, comenzando con un retraso de un segundo y duplicándolo cada vez. Lo que ve depende de cómo esté ejecutando Claude Code:

410 412 

411* **En una sesión interactiva**: `/mcp` muestra el servidor como pendiente mientras Claude Code se reconecta. Después de cinco intentos fallidos, Claude Code marca el servidor como fallido, o como necesitando autenticación cuando el servidor necesita autorización nuevamente. Puede reintentar manualmente desde `/mcp`.413* **En una sesión interactiva**: `/mcp` muestra el servidor como pendiente mientras Claude Code se reconecta. Después de cinco intentos fallidos, Claude Code marca el servidor como fallido, o como necesitando autenticación cuando el servidor necesita autorización nuevamente. Cuando marca el servidor como fallido, ve una notificación `MCP server "<name>" disconnected · open /mcp to reconnect`. Puede reintentar manualmente desde `/mcp`.

412* **En ejecuciones [`claude -p`](/docs/es/headless) y sesiones [Agent SDK](/docs/es/agent-sdk/overview)**: Claude Code se reconecta en el mismo cronograma, sin panel `/mcp` para mostrar los intentos.414* **En ejecuciones [`claude -p`](/docs/es/headless) y sesiones [Agent SDK](/docs/es/agent-sdk/overview)**: Claude Code se reconecta en el mismo cronograma, sin panel `/mcp` para mostrar los intentos.

413 415 

414<h4 id="failed-first-connections">416<h4 id="failed-first-connections">

415 Fallos de primera conexión417 Conexiones iniciales fallidas

416</h4>418</h4>

417 419 

418Cuando la primera conexión de un servidor HTTP o SSE falla con un error transitorio, como una respuesta 5xx, una conexión rechazada, o un tiempo de espera, Claude Code reintenta hasta tres veces. Si la conexión aún falla, Claude Code marca el servidor como fallido. Claude Code reintenta de esta manera al inicio y cuando se agrega un servidor a mitad de sesión. Eso incluye un servidor que Claude Code agrega a una [sesión en la nube](/docs/es/claude-code-on-the-web) desde su configuración y un servidor que agrega con el [`setMcpServers()`](/docs/es/agent-sdk/typescript) del Agent SDK.420Cuando la primera conexión de un servidor HTTP o SSE falla con un error transitorio, como una respuesta 5xx, una conexión rechazada, o un tiempo de espera, Claude Code reintenta hasta tres veces. Si la conexión aún falla, Claude Code marca el servidor como fallido. Claude Code reintenta de esta manera al inicio y cuando se agrega un servidor a mitad de sesión. Eso incluye un servidor que Claude Code agrega a una [sesión en la nube](/docs/es/claude-code-on-the-web) desde su configuración y un servidor que agrega con el método [`setMcpServers()`](/docs/es/agent-sdk/typescript) del Agent SDK.

419 421 

420Claude Code no reintenta en estos casos:422Claude Code no reintenta en estos casos:

421 423 

422* Primera conexión de un servidor WebSocket424* La primera conexión de un servidor WebSocket

423* Un error de autenticación o no encontrado, porque requiere un cambio de configuración para resolverse. Cuando un [`headersHelper`](#use-dynamic-headers-for-custom-authentication) es la única fuente del servidor del encabezado `Authorization`, Claude Code reintenta un error de autenticación de todas formas, porque vuelve a ejecutar el helper en cada intento y puede recoger una credencial fresca425* Un error de autenticación o no encontrado, porque requiere un cambio de configuración para resolverse. Cuando un [`headersHelper`](#use-dynamic-headers-for-custom-authentication) es la única fuente del servidor del encabezado `Authorization`, Claude Code reintenta un error de autenticación de todas formas, porque vuelve a ejecutar el ayudante en cada intento y puede recoger una credencial fresca

424 426 

425<h4 id="failed-discovery-requests">427<h4 id="failed-discovery-requests">

426 Solicitudes de descubrimiento fallidas428 Solicitudes de descubrimiento fallidas


432 Cómo Claude aprende que un servidor falló434 Cómo Claude aprende que un servidor falló

433</h4>435</h4>

434 436 

435Si Claude Code le dice a Claude sobre un servidor configurado que falló al conectarse depende de [búsqueda de herramientas](#scale-with-mcp-tool-search), que está habilitada de forma predeterminada:437Si Claude Code le dice a Claude sobre un servidor configurado que no se conectó depende de [búsqueda de herramientas](#scale-with-mcp-tool-search), que está activada de forma predeterminada:

436 438 

437* Con búsqueda de herramientas, Claude Code le dice a Claude qué servidor falló y su error de conexión, por lo que Claude informa el fallo de conexión en su respuesta. Claude Code incluye la misma información en resultados de `ToolSearch` que no encuentran ninguna herramienta coincidente.439* Con búsqueda de herramientas, Claude Code le dice a Claude qué servidor falló y su error de conexión, por lo que Claude informa la falla de conexión en su respuesta. Claude Code incluye la misma información en resultados de `ToolSearch` que no encuentran herramientas coincidentes.

438* En cualquier [configuración sin búsqueda de herramientas](#configure-tool-search), Claude Code no informa fallos de conexión de servidores configurados a Claude.440* En cualquier [configuración sin búsqueda de herramientas](#configure-tool-search), Claude Code no informa fallas de conexión de servidor configurado a Claude.

439 441 

440<h3 id="push-messages-with-channels">442<h3 id="push-messages-with-channels">

441 Mensajes push con canales443 Mensajes de inserción con canales

442</h3>444</h3>

443 445 

444Un servidor MCP también puede enviar mensajes directamente a su sesión para que Claude pueda reaccionar a eventos externos como resultados de CI, alertas de monitoreo, o mensajes de chat. Para habilitar esto, su servidor declara la capacidad `claude/channel` y usted la activa con la bandera `--channels` al iniciar. Vea [Canales](/docs/es/channels) para usar un canal oficialmente soportado, o [Referencia de canales](/docs/es/channels-reference) para construir el suyo propio.446Un servidor MCP también puede insertar mensajes directamente en su sesión para que Claude pueda reaccionar a eventos externos como resultados de CI, alertas de monitoreo, o mensajes de chat. Para habilitar esto, su servidor declara la capacidad `claude/channel` y usted lo activa con la bandera `--channels` al inicio. Consulte [Canales](/docs/es/channels) para utilizar un canal oficialmente compatible, o [Referencia de canales](/docs/es/channels-reference) para construir el suyo propio.

445 447 

446En el [tiempo de ejecución v2](#mcp-client-runtimes), si establece [`MCP_PROTOCOL_NEGOTIATION`](/docs/es/env-vars) en `auto` y un servidor de canal negocia la revisión del protocolo MCP 2026-07-28, no puede entregar mensajes de canal, por lo que Claude Code no lo registra como un canal. Dejar la variable sin establecer, o establecerla en `legacy`, mantiene los servidores stdio en el apretón de manos anterior.448En el [tiempo de ejecución v2](#mcp-client-runtimes), si establece [`MCP_PROTOCOL_NEGOTIATION`](/docs/es/env-vars) en `auto` y un servidor de canal negocia la revisión del protocolo MCP 2026-07-28, no puede entregar mensajes de canal, por lo que Claude Code no lo registra como un canal. Dejar la variable sin establecer, o establecerla en `legacy`, mantiene servidores stdio en el protocolo anterior.

447 449 

448<Tip>450<Tip>

449 Consejos:451 Consejos:

450 452 

451 * Use la bandera `-s` o `--scope` para especificar dónde se almacena la configuración:453 * Utilice la bandera `-s` o `--scope` para especificar dónde se almacena la configuración:

452 * `local` (predeterminado): disponible solo para usted en el proyecto actual454 * `local` (predeterminado): disponible solo para usted en el proyecto actual

453 * `project`: compartido con todos en el proyecto a través del archivo `.mcp.json`455 * `project`: compartido con todos en el proyecto a través del archivo `.mcp.json`

454 * `user`: disponible para usted en todos los proyectos456 * `user`: disponible para usted en todos los proyectos

455 * Establezca variables de entorno con banderas `-e` o `--env` (por ejemplo, `-e KEY=value`)457 * Establezca variables de entorno con banderas `-e` o `--env` (por ejemplo, `-e KEY=value`)

456 * Las banderas `--transport` y `--header` también aceptan formas cortas `-t` y `-H`458 * Las banderas `--transport` y `--header` también aceptan formas cortas `-t` y `-H`

457 * Configure el tiempo de espera de inicio del servidor MCP usando la variable de entorno `MCP_TIMEOUT` (por ejemplo, `MCP_TIMEOUT=10000 claude` establece un tiempo de espera de 10 segundos)459 * Configure el tiempo de espera de inicio del servidor MCP utilizando la variable de entorno `MCP_TIMEOUT` (por ejemplo, `MCP_TIMEOUT=10000 claude` establece un tiempo de espera de 10 segundos)

458 * Establezca un tiempo de espera de ejecución de herramientas por servidor agregando un campo `timeout` en milisegundos a la entrada `.mcp.json` de ese servidor, por ejemplo `"timeout": 600000` para diez minutos. Esto anula la variable de entorno `MCP_TOOL_TIMEOUT` solo para ese servidor460 * Establezca un tiempo de espera de ejecución de herramienta por servidor agregando un campo `timeout` en milisegundos a la entrada `.mcp.json` de ese servidor, por ejemplo `"timeout": 600000` para diez minutos. Esto anula la variable de entorno `MCP_TOOL_TIMEOUT` solo para ese servidor

459 * Claude Code muestra una advertencia cuando la salida de la herramienta MCP excede 10,000 tokens y limita la salida a 25,000 tokens de forma predeterminada. Para aumentar el límite, establezca la variable de entorno `MAX_MCP_OUTPUT_TOKENS` (por ejemplo, `MAX_MCP_OUTPUT_TOKENS=50000`); el umbral de advertencia es fijo. Vea [Límites de salida de MCP y advertencias](#mcp-output-limits-and-warnings)461 * Claude Code muestra una advertencia cuando la salida de herramientas MCP excede 10,000 tokens y limita la salida a 25,000 tokens de forma predeterminada. Para aumentar el límite, establezca la variable de entorno `MAX_MCP_OUTPUT_TOKENS` (por ejemplo, `MAX_MCP_OUTPUT_TOKENS=50000`); el umbral de advertencia es fijo. Consulte [Límites de salida de MCP y advertencias](#mcp-output-limits-and-warnings)

460 * Use `/mcp` para autenticarse con servidores remotos que requieren autenticación OAuth 2.0462 * Utilice `/mcp` para autenticarse con servidores remotos que requieren autenticación OAuth 2.0

461</Tip>463</Tip>

462 464 

463El `timeout` por servidor es un límite de reloj de pared duro por llamada de herramienta, y las notificaciones de progreso del servidor no lo extienden. Los valores por debajo de 1000 se ignoran y caen a `MCP_TOOL_TIMEOUT`, o a su predeterminado de aproximadamente 28 horas cuando esa variable no está establecida. Para un servidor HTTP, SSE, o [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) también hay un segundo temporizador por solicitud que cubre cada solicitud hasta el primer byte de respuesta del servidor. Claude Code establece ese temporizador al mayor de tres valores: 60 segundos, el tiempo de espera de herramienta que se aplica al servidor, y `MCP_TIMEOUT`. El predeterminado de 28 horas de un `MCP_TOOL_TIMEOUT` no establecido no entra en esa comparación, y un valor por debajo de 60 segundos no acorta el temporizador. Los servidores stdio y WebSocket no tienen temporizador por solicitud.465El `timeout` por servidor es un límite de reloj de pared duro por llamada de herramienta, y las notificaciones de progreso del servidor no lo extienden. Los valores por debajo de 1000 se ignoran y caen a `MCP_TOOL_TIMEOUT`, o a su valor predeterminado de aproximadamente 28 horas cuando esa variable no está establecida. Para un servidor HTTP, SSE, o [conector claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) también hay un segundo temporizador por solicitud que cubre cada solicitud hasta el primer byte de respuesta del servidor. Claude Code establece ese temporizador al mayor de tres valores: 60 segundos, el tiempo de espera de herramienta que se aplica al servidor, y `MCP_TIMEOUT`. El valor predeterminado de 28 horas de un `MCP_TOOL_TIMEOUT` sin establecer no entra en esa comparación, y un valor por debajo de 60 segundos no acorta el temporizador. Los servidores stdio y WebSocket no tienen temporizador por solicitud.

464 466 

465Un `timeout` por servidor de al menos 1000 también actúa como un piso en el tiempo de espera de inactividad descrito a continuación: Claude Code nunca cancela las llamadas de herramientas de ese servidor por inactividad antes que el `timeout` por servidor. Requiere Claude Code v2.1.203 o posterior.467Un `timeout` por servidor de al menos 1000 también actúa como un piso en el tiempo de espera de inactividad descrito a continuación: Claude Code nunca aborta las llamadas de herramienta de ese servidor por inactividad más pronto que el `timeout` por servidor. Requiere Claude Code v2.1.203 o posterior.

466 468 

467Una llamada de herramienta a un servidor MCP que no envía respuesta ni notificación de progreso durante la ventana de inactividad se cancela con un error en lugar de esperar el límite de reloj de pared. El tiempo de espera de inactividad requiere Claude Code v2.1.187 o posterior. Se aplica a todos los tipos de servidor excepto servidores IDE y servidores en proceso SDK. La ventana de inactividad predeterminada es de cinco minutos para servidores HTTP, SSE, WebSocket y [conector de claude.ai](#use-mcp-servers-from-claude-ai), y de 30 minutos para servidores stdio. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad.469Una llamada de herramienta a un servidor MCP que no envía respuesta y ninguna notificación de progreso para la ventana de inactividad aborta con un error en lugar de esperar el límite de reloj de pared. El tiempo de espera de inactividad requiere Claude Code v2.1.187 o posterior. Se aplica a todos los tipos de servidor excepto servidores IDE y servidores en proceso del SDK. La ventana de inactividad tiene un valor predeterminado de cinco minutos para servidores HTTP, SSE, WebSocket, y [conector claude.ai](#use-mcp-servers-from-claude-ai), y de 30 minutos para servidores stdio. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad.

468 470 

469Establezca la variable de entorno [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/es/env-vars) en milisegundos para cambiar la ventana de inactividad, o establézcala en `0` para desactivar la verificación.471Establezca la variable de entorno [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/es/env-vars) en milisegundos para cambiar la ventana de inactividad, o establézcala en `0` para deshabilitar la verificación.

470 472 

471Estos tiempos de espera limitan cuánto tiempo puede ejecutarse una llamada, no siempre cuánto tiempo bloquea la sesión: una llamada de conversación principal que se ejecuta más de dos minutos se mueve a una tarea de fondo primero. Vea [Backgrounding automático de llamadas de herramientas largas](#automatic-backgrounding-of-long-tool-calls).473Estos tiempos de espera limitan cuánto tiempo puede ejecutarse una llamada, no siempre cuánto tiempo bloquea la sesión: una llamada de conversación principal que se ejecuta más de dos minutos se mueve a una tarea de fondo primero. Consulte [Envío automático a segundo plano de llamadas de herramientas largas](#automatic-backgrounding-of-long-tool-calls).

472 474 

473<h3 id="automatic-backgrounding-of-long-tool-calls">475<h3 id="automatic-backgrounding-of-long-tool-calls">

474 Backgrounding automático de llamadas de herramientas largas476 Envío automático a segundo plano de llamadas de herramientas largas

475</h3>477</h3>

476 478 

477Una llamada de herramienta MCP en la conversación principal que aún se está ejecutando después de dos minutos se mueve a una tarea de fondo en lugar de bloquear la sesión. Claude recibe el ID de tarea inmediatamente y continúa trabajando, y el resultado llega como una notificación de tarea cuando la llamada se resuelve. El backgrounding automático requiere Claude Code v2.1.212 o posterior.479Una llamada de herramienta MCP en la conversación principal que aún se está ejecutando después de dos minutos se mueve a una tarea de fondo en lugar de bloquear la sesión. Claude recibe el ID de tarea inmediatamente y continúa trabajando, y el resultado llega como una notificación de tarea cuando la llamada se resuelve. El envío automático a segundo plano requiere Claude Code v2.1.212 o posterior.

478 480 

479La tarea aparece en [`/tasks`](/docs/es/commands#all-commands), donde también puede detenerla, y no sobrevive a salir de la sesión. Los límites por llamada aún se aplican mientras la llamada se ejecuta en segundo plano: el límite de reloj de pared establecido por el `timeout` por servidor o [`MCP_TOOL_TIMEOUT`](/docs/es/env-vars), y el tiempo de espera de inactividad establecido por [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/es/env-vars).481La tarea aparece en [`/tasks`](/docs/es/commands#all-commands), donde también puede detenerla, y no sobrevive a la salida de la sesión. Los límites por llamada aún se aplican mientras la llamada se ejecuta en segundo plano: el límite de reloj de pared establecido por el `timeout` por servidor o [`MCP_TOOL_TIMEOUT`](/docs/es/env-vars), y el tiempo de espera de inactividad establecido por [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/es/env-vars).

480 482 

481Establezca la variable de entorno [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](/docs/es/env-vars) en milisegundos para cambiar el umbral, o establézcala en `0` para desactivar el backgrounding automático. Establecer `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` en `1` también lo desactiva, junto con todas las otras características de tareas de fondo.483Establezca la variable de entorno [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](/docs/es/env-vars) en milisegundos para cambiar el umbral, o establézcala en `0` para desactivar el envío automático a segundo plano. Establecer `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` en `1` también lo desactiva, junto con todas las otras características de tareas de fondo.

482 484 

483Algunas llamadas nunca se mueven al fondo:485Algunas llamadas nunca se mueven al fondo:

484 486 

485* Llamadas de [subagentes](/docs/es/sub-agents); Claude Code solo coloca en segundo plano llamadas de conversación principal487* Llamadas de [subagentes](/docs/es/sub-agents); Claude Code solo envía a segundo plano llamadas de conversación principal

486* Llamadas a servidores IDE488* Llamadas a servidores IDE

487* Llamadas en [modo no interactivo](/docs/es/headless), a menos que `CLAUDE_AUTO_BACKGROUND_TASKS` esté establecido en `1`, ya que una ejecución de una sola vez puede terminar antes de que llegue el resultado489* Llamadas en [modo no interactivo](/docs/es/headless), a menos que `CLAUDE_AUTO_BACKGROUND_TASKS` esté establecido en `1`, ya que una ejecución única puede terminar antes de que llegue el resultado

488 490 

489Una llamada esperando un [diálogo de elicitación](#respond-to-mcp-elicitation-requests) abierto no se coloca en segundo plano mientras el diálogo está abierto; el servidor está bloqueado en su entrada, no es lento, por lo que Claude Code difiere el movimiento hasta que el diálogo se cierre.491Una llamada esperando un [diálogo de elicitación](#respond-to-mcp-elicitation-requests) abierto no se envía a segundo plano mientras el diálogo está abierto; el servidor está bloqueado en su entrada, no es lento, por lo que Claude Code difiere el movimiento hasta que el diálogo se cierre.

490 492 

491<h3 id="plugin-provided-mcp-servers">493<h3 id="plugin-provided-mcp-servers">

492 Servidores MCP proporcionados por plugins494 Servidores MCP proporcionados por plugins

493</h3>495</h3>

494 496 

495Los [plugins](/docs/es/plugins) pueden agrupar servidores MCP que proporcionan herramientas e integraciones cuando habilita el plugin. Los servidores MCP de plugins funcionan de manera idéntica a los servidores configurados por el usuario.497[Los plugins](/docs/es/plugins) pueden agrupar servidores MCP que proporcionan herramientas e integraciones cuando habilita el plugin. Los servidores MCP de plugins funcionan de manera idéntica a los servidores configurados por el usuario.

496 498 

497**Cómo funcionan los servidores MCP de plugins**:499**Cómo funcionan los servidores MCP de plugins**:

498 500 

499* Los plugins definen servidores MCP en `.mcp.json` en la raíz del plugin o en línea en `plugin.json`501* Los plugins definen servidores MCP en `.mcp.json` en la raíz del plugin o en línea en `plugin.json`

500* Cuando habilita un plugin, Claude Code inicia sus servidores MCP automáticamente502* Cuando habilita un plugin, Claude Code inicia sus servidores MCP automáticamente

501* Claude Code ofrece herramientas MCP de plugins junto a herramientas MCP configuradas manualmente503* Claude Code ofrece herramientas MCP de plugins junto con herramientas MCP configuradas manualmente

502* Agrega y elimina servidores de plugins instalando o desinstalando el plugin, no con comandos `/mcp`. Aún puede [alternar un servidor de plugin instalado](#disable-a-server-without-removing-it) en `/mcp`, que detiene que Claude Code se conecte a él sin eliminar el plugin504* Agrega y elimina servidores de plugins instalando o desinstalando el plugin, no con comandos `/mcp`. Aún puede [alternar un servidor de plugin instalado](#disable-a-server-without-removing-it) en `/mcp`, que detiene que Claude Code se conecte a él sin eliminar el plugin

503 505 

504**Ejemplo de configuración MCP de plugin**:506**Ejemplo de configuración MCP de plugin**:


533}535}

534```536```

535 537 

536**Características de MCP de plugins**:538**Características MCP de plugins**:

537 539 

538* **Ciclo de vida automático**: los servidores se conectan y desconectan en estos puntos:540* **Ciclo de vida automático**: los servidores se conectan y desconectan en estos puntos:

539 * Al inicio de la sesión, Claude Code conecta automáticamente los servidores para plugins habilitados. En `/mcp`, un servidor de plugin remoto (HTTP o SSE) que ha usado antes puede mostrar el estado [`cached`](#server-status-detail) en su lugar; Claude Code lo conecta cuando Claude llama por primera vez a una de sus herramientas541 * Al inicio de la sesión, Claude Code conecta automáticamente los servidores de plugins habilitados. En `/mcp`, un servidor de plugin remoto (HTTP o SSE) que ha utilizado antes puede mostrar el estado [`cached`](#server-status-detail) en su lugar; Claude Code lo conecta cuando Claude llama por primera vez a una de sus herramientas

540 * Si habilita o deshabilita un plugin durante una sesión, Claude Code conecta o desconecta sus servidores MCP cuando el cambio se aplica. [Aplicar cambios de plugins sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) describe cuándo es eso. En una sesión sin una terminal interactiva, `/reload-plugins` no conecta ni desconecta servidores MCP de plugins; esos cambios tienen efecto en su próxima sesión542 * Si habilita o deshabilita un plugin durante una sesión, Claude Code conecta o desconecta sus servidores MCP cuando el cambio se aplica. [Aplicar cambios de plugins sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) describe cuándo es eso. En una sesión sin terminal interactiva, `/reload-plugins` no conecta o desconecta servidores MCP de plugins; esos cambios tienen efecto en su próxima sesión

541 * Cuando recarga, Claude Code mantiene las conexiones activas de servidores de plugins cuya configuración no ha cambiado, y hace lo mismo cuando [reemplaza la lista de servidores MCP de la sesión](/docs/es/agent-sdk/typescript#mcpsetserversresult) desde el Agent SDK sin nombrarlos543 * Cuando recarga, Claude Code mantiene las conexiones activas de servidores de plugins cuya configuración no ha cambiado, y hace lo mismo cuando [reemplaza la lista de servidores MCP de la sesión](/docs/es/agent-sdk/typescript#mcpsetserversresult) desde el Agent SDK sin nombrarlos

542 * Cuando [mueve la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior, Claude Code conecta los servidores de plugins que la configuración del nuevo directorio habilita y desconecta los servidores de plugins que ya no están habilitados, por lo que no necesita ejecutar `/reload-plugins` después del movimiento544 * Cuando [mueve la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior, Claude Code conecta los servidores de plugins que la configuración del nuevo directorio habilita y desconecta los servidores de plugins que ya no están habilitados, por lo que no necesita ejecutar `/reload-plugins` después del movimiento

543 * En [sesiones web](/docs/es/claude-code-on-the-web), una llamada MCP a un servidor de plugin que aún no está conectado, como justo después de que una sesión inactiva se despierte, inicia el servidor bajo demanda y espera a que se conecte545 * En [sesiones en la nube](/docs/es/claude-code-on-the-web), una llamada MCP a un servidor de plugin que aún no está conectado, como justo después de que una sesión inactiva se despierte, inicia el servidor bajo demanda y espera a que se conecte

544* **Marcadores de posición de ruta**: `${CLAUDE_PLUGIN_ROOT}` se resuelve al directorio de instalación del plugin, `${CLAUDE_PLUGIN_DATA}` a su directorio de [estado persistente](/docs/es/plugins-reference#persistent-data-directory), y `${CLAUDE_PROJECT_DIR}` a la raíz del proyecto estable. La sustitución se aplica a:546* **Marcadores de posición de ruta**: `${CLAUDE_PLUGIN_ROOT}` se resuelve al directorio de instalación del plugin, `${CLAUDE_PLUGIN_DATA}` a su directorio de [estado persistente](/docs/es/plugins-reference#persistent-data-directory), y `${CLAUDE_PROJECT_DIR}` a la raíz del proyecto estable. La sustitución se aplica a:

545 * servidores `stdio`: `command`, `args`, `env`547 * servidores `stdio`: `command`, `args`, `env`

546 * servidores `http`, `sse` y `ws`: `url`, `headers` y `headersHelper`. Antes de v2.1.195, `headersHelper` pasaba el marcador de posición como una cadena literal548 * servidores `http`, `sse`, y `ws`: `url`, `headers`, y `headersHelper`. Antes de v2.1.195, `headersHelper` pasaba el marcador de posición como una cadena literal

547* **Acceso a variables de entorno del usuario**: acceso a las mismas variables de entorno que los servidores configurados manualmente549* **Acceso al entorno del usuario**: acceso a las mismas variables de entorno que los servidores configurados manualmente

548* **Múltiples tipos de transporte**: soporte para transportes stdio, SSE, HTTP y WebSocket, aunque el soporte de transporte puede variar según el servidor550* **Múltiples tipos de transporte**: soporte para transportes stdio, SSE, HTTP, y WebSocket, aunque el soporte de transporte puede variar según el servidor

549 551 

550Los servidores de plugins aparecen en `/mcp` con indicadores que muestran que provienen de plugins.552Los servidores de plugins aparecen en `/mcp` con indicadores que muestran que provienen de plugins.

551 553 

552**Nombres de herramientas MCP de plugins**:554**Nombres de herramientas MCP de plugins**:

553 555 

554Las herramientas de un servidor MCP agrupado en un plugin incluyen tanto el nombre del plugin como la clave del servidor en su nombre invocable. La forma completa es `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, donde cualquier carácter fuera de `A-Z`, `a-z`, `0-9`, `_` y `-` se reemplaza con `_`. Para el servidor `database-tools` agrupado en un plugin llamado `my-plugin`, una herramienta `query` es invocable como:556Las herramientas de un servidor MCP agrupado en un plugin incluyen tanto el nombre del plugin como la clave del servidor en su nombre invocable. La forma completa es `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, donde cualquier carácter fuera de `A-Z`, `a-z`, `0-9`, `_`, y `-` se reemplaza con `_`. Para el servidor `database-tools` agrupado en un plugin llamado `my-plugin`, una herramienta `query` es invocable como:

555 557 

556```558```

557mcp__plugin_my-plugin_database-tools__query559mcp__plugin_my-plugin_database-tools__query

558```560```

559 561 

560Use este nombre completo cuando haga referencia a la herramienta en [reglas de permisos](/docs/es/permissions), la lista `allowed-tools` de una skill, un [campo `tools` de un subagente](/docs/es/sub-agents#available-tools), o un [matcher de hook](/docs/es/hooks#match-mcp-tools). Un matcher de hook escrito contra la clave del servidor simple, como `mcp__database-tools__.*`, nunca se activa para un servidor agrupado en un plugin.562Utilice este nombre completo cuando haga referencia a la herramienta en [reglas de permisos](/docs/es/permissions), la lista `allowed-tools` de una habilidad, el [campo `tools` de un subagente](/docs/es/sub-agents#available-tools), o un [coincidente de hook](/docs/es/hooks#match-mcp-tools). Un coincidente de hook escrito contra la clave del servidor desnuda, como `mcp__database-tools__.*`, nunca se dispara para un servidor agrupado en un plugin.

561 563 

562El servidor mismo se registra bajo el nombre con alcance `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:database-tools`. Use ese nombre donde se espera un nombre de servidor configurado, como un [campo `server` del hook `mcp_tool`](/docs/es/hooks#mcp-tool-hook-fields).564El servidor mismo se registra bajo el nombre con alcance `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:database-tools`. Utilice ese nombre donde se espera un nombre de servidor configurado, como el [campo `server` de un hook `mcp_tool`](/docs/es/hooks#mcp-tool-hook-fields).

563 565 

564Vea la [referencia de componentes de plugins](/docs/es/plugins-reference#mcp-servers) para detalles sobre cómo agrupar servidores MCP con plugins.566Consulte la [referencia de componentes de plugins](/docs/es/plugins-reference#mcp-servers) para obtener detalles sobre cómo agrupar servidores MCP con plugins.

565 567 

566<h2 id="mcp-installation-scopes">568<h2 id="mcp-installation-scopes">

567 Alcances de instalación de MCP569 Alcances de instalación de MCP


679 681 

680Claude Code admite la expansión de variables de entorno en archivos `.mcp.json`, permitiendo que los equipos compartan configuraciones mientras mantienen flexibilidad para rutas específicas de máquinas y valores sensibles como claves API.682Claude Code admite la expansión de variables de entorno en archivos `.mcp.json`, permitiendo que los equipos compartan configuraciones mientras mantienen flexibilidad para rutas específicas de máquinas y valores sensibles como claves API.

681 683 

682**Sintaxis soportada:**684<h4 id="supported-syntax">

685 Sintaxis soportada

686</h4>

683 687 

684* `${VAR}`: se expande al valor de la variable de entorno `VAR`688* `${VAR}`: se expande al valor de la variable de entorno `VAR`

685* `${VAR:-default}`: se expande a `VAR` si está establecida, de lo contrario usa `default`689* `${VAR:-default}`: se expande a `VAR` si está establecida, de lo contrario usa `default`

686 690 

687**Ubicaciones de expansión:**691<h4 id="expansion-locations">

692 Ubicaciones de expansión

693</h4>

694 

688Las variables de entorno se pueden expandir en:695Las variables de entorno se pueden expandir en:

689 696 

690* `command`: la ruta del ejecutable del servidor697* `command`: la ruta del ejecutable del servidor


693* `url`: para tipos de servidor HTTP700* `url`: para tipos de servidor HTTP

694* `headers`: para autenticación de servidor HTTP701* `headers`: para autenticación de servidor HTTP

695 702 

696**Ejemplo con expansión de variables:**703<h4 id="example-with-variable-expansion">

704 Ejemplo con expansión de variables

705</h4>

697 706 

698```json theme={null}707```json theme={null}

699{708{


709}718}

710```719```

711 720 

712Si una variable de entorno referenciada no está establecida y no tiene un valor predeterminado, la configuración aún se carga: Claude Code informa una advertencia de variable faltante para ese servidor en la salida de `claude mcp list` y usa el texto `${VAR}` sin expandir tal como está. Establezca la variable o agregue un fallback `:-default` para que el servidor se inicie con el valor que pretende.721<h4 id="unset-variables-without-a-default">

722 Variables de entorno no establecidas sin un valor predeterminado

723</h4>

724 

725Si una variable de entorno referenciada no está establecida y no tiene un valor predeterminado, la configuración aún se carga: Claude Code informa una advertencia de variable faltante para ese servidor en la salida de `claude mcp list` y usa el texto `${VAR}` sin expandir tal como está. Establezca la variable o agregue un fallback `:-default` para que el servidor se inicie con el valor que pretende. En la `url` y `headers` de un servidor remoto, algunas variables de credenciales [se leen como vacías](#credential-variables-that-read-as-empty) en su lugar, sin advertencia.

726 

727<h4 id="credential-variables-that-read-as-empty">

728 Variables de credenciales que se leen como vacías

729</h4>

730 

731En la `url` y `headers` de un servidor remoto, Claude Code lee las variables de credenciales de su entorno como vacías en lugar de expandirlas. Esto evita que la `.mcp.json` de un proyecto o un plugin envíe sus credenciales de Claude Code o proveedor de nube a un servidor que nombra. Si escribe `Bearer ${ANTHROPIC_AUTH_TOKEN}`, el servidor recibe `Bearer ` sin credencial y rechaza la solicitud, generalmente con un `401`. Claude Code informa eso como una conexión fallida.

732 

733Los nombres cubiertos son:

734 

735* Las propias credenciales de Claude Code, como `ANTHROPIC_API_KEY` y `ANTHROPIC_AUTH_TOKEN`

736* Las credenciales de su proveedor de nube, como `AWS_BEARER_TOKEN_BEDROCK`

737* Otras credenciales que su entorno lleva, como `HTTPS_PROXY` y `NPM_TOKEN`

738 

739Un nombre cubierto se lee como vacío independientemente de si ha establecido la variable, y un fallback `:-default` en él se ignora. Una URL base del proveedor como `ANTHROPIC_BASE_URL` aún se expande, por lo que `"url": "${ANTHROPIC_BASE_URL}/mcp"` funciona, a menos que el valor de la URL en sí incruste una credencial como un nombre de usuario y contraseña.

740 

741Un nombre fuera de este conjunto, como `API_KEY`, se expande tal como está escrito. Para dar al servidor una de las credenciales cubiertas, cópiela en una variable con un nombre de su propia elección y haga referencia a ese nombre en su lugar.

742 

743Cuando la `url` o `headers` de un servidor remoto hace referencia a una variable cubierta que ha establecido, Claude Code la nombra en una línea de registro de depuración. Para leer la línea, ejecute `claude --debug-file /tmp/claude-debug.log` y busque en ese archivo `never expanded toward a remote server`.

744 

745<h4 id="how-references-appear-in-/mcp-and-cli-output">

746 Cómo aparecen las referencias en `/mcp` y salida de CLI

747</h4>

748 

749Para un servidor en el [alcance](#mcp-installation-scopes) local, de proyecto o de usuario, las siguientes superficies muestran una referencia `${VAR}` por nombre en lugar de como su valor resuelto:

750 

751* La URL o línea de comandos en la vista de detalle `/mcp` de un servidor

752* Salida de `claude mcp list` y `claude mcp get`

753 

754La vista de detalle `/mcp` muestra referencias de esta manera en Claude Code v2.1.268 o posterior.

755 

756Para un servidor que su organización proporciona a través de la configuración `managedMcpServers`, estas superficies muestran [solo el host de la URL](/docs/es/managed-mcp#what-users-can-see-and-change).

757 

758Para verificar qué muestran `claude mcp list`, `claude mcp get` e `/mcp` cuando una conexión falla, vea [Detalle de estado del servidor](#server-status-detail).

713 759 

714<h2 id="practical-examples">760<h2 id="practical-examples">

715 Ejemplos prácticos761 Ejemplos prácticos


779 825 

780* Para un servidor en el que no ha iniciado sesión, cualquiera de estos códigos de estado lo marca en `/mcp` para que pueda completar el flujo de OAuth.826* Para un servidor en el que no ha iniciado sesión, cualquiera de estos códigos de estado lo marca en `/mcp` para que pueda completar el flujo de OAuth.

781* Para un [conector de claude.ai](#use-mcp-servers-from-claude-ai), un `401` causado por claude.ai rechazando su token de sesión no marca el conector, porque reautorizar el conector no puede solucionar su inicio de sesión. Claude Code muestra el [estado de token de sesión rechazado](/docs/es/errors#claude-ai-rejected-the-session-token) en su lugar.827* Para un [conector de claude.ai](#use-mcp-servers-from-claude-ai), un `401` causado por claude.ai rechazando su token de sesión no marca el conector, porque reautorizar el conector no puede solucionar su inicio de sesión. Claude Code muestra el [estado de token de sesión rechazado](/docs/es/errors#claude-ai-rejected-the-session-token) en su lugar.

782* Para un servidor cuyo encabezado `Authorization` configuró, en `headers` o a través de un [`headersHelper`](#use-dynamic-headers-for-custom-authentication), un `401` o `403` mientras se conecta no marca el servidor, porque la credencial a corregir es la que configuró. Claude Code reporta la conexión como fallida en su lugar.828* Para un servidor cuyo encabezado `Authorization` configuró, en `headers` o a través de un [`headersHelper`](#use-dynamic-headers-for-custom-authentication), un `401` o `403` mientras se conecta no marca el servidor, porque la credencial a corregir es la que configuró. Claude Code reporta la conexión como fallida en su lugar. Si establece ese encabezado desde una referencia `${VAR}`, verifique si esa variable es una que Claude Code [lee como vacía](#credential-variables-that-read-as-empty).

783* Para un conector [entregado a una sesión en la nube](#how-connectors-reach-claude-code), Claude Code no ejecuta un flujo de inicio de sesión, porque el proxy de la sesión se autentica con el conector con la autorización que otorgó en claude.ai. Cuando un conector allí necesita autorización nuevamente, reconéctelo en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) en lugar de desde la sesión.829* Para un conector [entregado a una sesión en la nube](#how-connectors-reach-claude-code), Claude Code no ejecuta un flujo de inicio de sesión, porque el proxy de la sesión se autentica con el conector con la autorización que otorgó en claude.ai. Cuando un conector allí necesita autorización nuevamente, reconéctelo en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) en lugar de desde la sesión.

784 830 

785Cuando una solicitud a un servidor OAuth en el que ya ha iniciado sesión devuelve `401 Unauthorized`, Claude Code actualiza el token almacenado, se reconecta e intenta la solicitud una vez más. Solo marca el servidor en `/mcp` si ese reintento también falla. Antes de v2.1.206, una actualización de token que falló por una razón transitoria, como un error de red, marcaba un servidor OAuth como que necesitaba autenticación durante el resto de la sesión aunque su token de actualización seguía siendo válido.831Cuando una solicitud a un servidor OAuth en el que ya ha iniciado sesión devuelve `401 Unauthorized`, Claude Code actualiza el token almacenado, se reconecta e intenta la solicitud una vez más. Solo marca el servidor en `/mcp` si ese reintento también falla. Antes de v2.1.206, una actualización de token que falló por una razón transitoria, como un error de red, marcaba un servidor OAuth como que necesitaba autenticación durante el resto de la sesión aunque su token de actualización seguía siendo válido.


790 836 

791Claude Code también muestra un aviso de inicio cuando uno o más servidores configurados necesitan autenticación, por lo que no tiene que abrir `/mcp` para descubrir qué servidores necesitan iniciar sesión. El aviso requiere Claude Code v2.1.193 o posterior. Solo cuenta servidores en los que puede iniciar sesión desde Claude Code. Antes de v2.1.218, también contaba [conectores de claude.ai](#use-mcp-servers-from-claude-ai) que no estaban conectados en claude.ai, que solo puede conectar desde la configuración de claude.ai.837Claude Code también muestra un aviso de inicio cuando uno o más servidores configurados necesitan autenticación, por lo que no tiene que abrir `/mcp` para descubrir qué servidores necesitan iniciar sesión. El aviso requiere Claude Code v2.1.193 o posterior. Solo cuenta servidores en los que puede iniciar sesión desde Claude Code. Antes de v2.1.218, también contaba [conectores de claude.ai](#use-mcp-servers-from-claude-ai) que no estaban conectados en claude.ai, que solo puede conectar desde la configuración de claude.ai.

792 838 

839El aviso anuncia cada servidor una vez y lo excluye del recuento en lanzamientos posteriores hasta que ese servidor se haya conectado y necesite iniciar sesión nuevamente. `/mcp` aún enumera todos los servidores que necesitan iniciar sesión.

840 

793En modo no interactivo no hay panel `/mcp`, por lo que Claude Code no puede ejecutar el flujo de OAuth para usted. A partir de v2.1.196, cuando un servidor configurado necesita autenticación durante una ejecución de `claude -p` o Agent SDK con [búsqueda de herramientas](#scale-with-mcp-tool-search) habilitada, que es la predeterminada, Claude Code le dice a Claude que las herramientas del servidor no están disponibles hasta que lo autorice. Claude puede entonces nombrar el servidor que necesita iniciar sesión en lugar de responder como si el servidor no estuviera configurado. Complete el inicio de sesión desde una sesión interactiva con `/mcp` o `claude mcp login <name>`.841En modo no interactivo no hay panel `/mcp`, por lo que Claude Code no puede ejecutar el flujo de OAuth para usted. A partir de v2.1.196, cuando un servidor configurado necesita autenticación durante una ejecución de `claude -p` o Agent SDK con [búsqueda de herramientas](#scale-with-mcp-tool-search) habilitada, que es la predeterminada, Claude Code le dice a Claude que las herramientas del servidor no están disponibles hasta que lo autorice. Claude puede entonces nombrar el servidor que necesita iniciar sesión en lugar de responder como si el servidor no estuviera configurado. Complete el inicio de sesión desde una sesión interactiva con `/mcp` o `claude mcp login <name>`.

794 842 

795Si configuró `headers.Authorization` para el servidor y el servidor rechaza ese encabezado, Claude Code reporta la conexión como fallida en lugar de recurrir a OAuth. Verifique que el token sea válido para el punto final de MCP, o elimine el encabezado para usar el flujo de OAuth.843Si configuró `headers.Authorization` para el servidor y el servidor rechaza ese encabezado, Claude Code reporta la conexión como fallida en lugar de recurrir a OAuth. Verifique que el token sea válido para el punto final de MCP, o elimine el encabezado para usar el flujo de OAuth.


983 1031 

984Si el servidor de autorización anuncia `offline_access` en `scopes_supported`, Claude Code lo añade a los alcances fijados para que el token de acceso pueda actualizarse sin un nuevo inicio de sesión en el navegador.1032Si el servidor de autorización anuncia `offline_access` en `scopes_supported`, Claude Code lo añade a los alcances fijados para que el token de acceso pueda actualizarse sin un nuevo inicio de sesión en el navegador.

985 1033 

986Si el servidor luego devuelve un 403 `insufficient_scope` para una llamada de herramienta, Claude Code se reautentica con los mismos alcances fijados. Amplíe `oauth.scopes` cuando una herramienta que necesita requiera un alcance fuera del fijo.1034Si el servidor luego devuelve un 403 `insufficient_scope` para una llamada de herramienta, la llamada falla con un mensaje de [`necesita permisos adicionales`](/docs/es/errors#mcp-server-needs-you-to-sign-in-again) que nombra el alcance que el servidor solicita. El servidor se muestra como que necesita autenticación en `/mcp`.

1035 

1036Si ese alcance no está en su `oauth.scopes` fijado, agréguelo, luego ejecute `/mcp` y autentique el servidor nuevamente. Claude Code solicita los alcances fijados en lugar del alcance que el servidor nombró, por lo que si se autentica nuevamente sin agregarlo, el token que obtiene aún carece de él.

987 1037 

988<h3 id="use-dynamic-headers-for-custom-authentication">1038<h3 id="use-dynamic-headers-for-custom-authentication">

989 Usar encabezados dinámicos para autenticación personalizada1039 Usar encabezados dinámicos para autenticación personalizada


1198 1248 

1199Si `/mcp` no enumera un conector que añadió, ejecute `/status` para confirmar qué método de autenticación está activo. Desactive esa variable de entorno, elimine la configuración `apiKeyHelper`, o [desactive el perfil](/docs/es/authentication#anthropic-profiles-and-federation-credentials), luego ejecute `/login` para seleccionar su cuenta de claude.ai.1249Si `/mcp` no enumera un conector que añadió, ejecute `/status` para confirmar qué método de autenticación está activo. Desactive esa variable de entorno, elimine la configuración `apiKeyHelper`, o [desactive el perfil](/docs/es/authentication#anthropic-profiles-and-federation-credentials), luego ejecute `/login` para seleccionar su cuenta de claude.ai.

1200 1250 

1201Si una red temporal mantiene la lista de conectores sin cargar cuando su sesión comienza, Claude Code reintenta la obtención hasta tres veces en segundo plano, y los conectores aparecen una vez que un reintento tiene éxito. Si aún no han aparecido, reinicie Claude Code para obtener la lista nuevamente.1251Si un problema de red temporal mantiene la lista de conectores sin cargar cuando su sesión comienza, Claude Code reintenta la obtención hasta tres veces en segundo plano, y los conectores aparecen una vez que un reintento tiene éxito. Si aún no han aparecido, reinicie Claude Code para obtener la lista nuevamente.

1202 1252 

1203Si `/mcp` muestra un conector como `connected · session token rejected`, o su vista de detalle muestra [`claude.ai rejected the session token`](/docs/es/errors#claude-ai-rejected-the-session-token), claude.ai rechazó el token de su inicio de sesión de Claude Code, generalmente porque el inicio de sesión expiró y no se pudo actualizar. Autorizar el conector nuevamente no borra este estado, porque la autorización propia del conector en claude.ai no es lo que fue rechazado. Para borrarlo:1253Si `/mcp` muestra un conector como `connected · session token rejected`, o su vista de detalle muestra [`claude.ai rejected the session token`](/docs/es/errors#claude-ai-rejected-the-session-token), claude.ai rechazó el token de su inicio de sesión de Claude Code, generalmente porque el inicio de sesión expiró y no se pudo actualizar. Autorizar el conector nuevamente no borra este estado, porque la autorización propia del conector en claude.ai no es lo que fue rechazado. Para borrarlo:

1204 1254 

Details

116 `claude mcp add` funciona igual en cada shell, incluidos PowerShell y Command Prompt. Dentro de una sesión `claude`, use el comando `/mcp` para verificar y administrar servidores que ya ha agregado.116 `claude mcp add` funciona igual en cada shell, incluidos PowerShell y Command Prompt. Dentro de una sesión `claude`, use el comando `/mcp` para verificar y administrar servidores que ya ha agregado.

117</Note>117</Note>

118 118 

119Hay otras formas de agregar un servidor, cada una cubierta más adelante en esta página:119Hay otras formas de agregar un servidor, cada una con su propia sección:

120 120 

121* [Agregar un servidor local](#add-a-local-server): ejecutar un programa en su máquina en lugar de conectarse a una URL.121* [Agregar un servidor local](#add-a-local-server): ejecutar un programa en su máquina en lugar de conectarse a una URL.

122* [Editar `.mcp.json` directamente](#edit-mcp-json-directly): escribir la entrada JSON usted mismo en lugar de usar el comando.122* [Editar `.mcp.json` directamente](#edit-mcp-json-directly): escribir la entrada JSON usted mismo en lugar de usar el comando.


308* **Aplicación de escritorio de Claude Code**: agregue servidores a través de la [IU de Conectores](/docs/es/desktop#connect-external-tools).308* **Aplicación de escritorio de Claude Code**: agregue servidores a través de la [IU de Conectores](/docs/es/desktop#connect-external-tools).

309* **Aplicación de chat de Claude Desktop**: una aplicación separada de Claude Code. Para copiar servidores de su `claude_desktop_config.json` en la CLI, ejecute `claude mcp add-from-claude-desktop` en macOS o WSL.309* **Aplicación de chat de Claude Desktop**: una aplicación separada de Claude Code. Para copiar servidores de su `claude_desktop_config.json` en la CLI, ejecute `claude mcp add-from-claude-desktop` en macOS o WSL.

310* **VS Code**: consulte [Conectarse a herramientas externas con MCP](/docs/es/vs-code#connect-to-external-tools-with-mcp).310* **VS Code**: consulte [Conectarse a herramientas externas con MCP](/docs/es/vs-code#connect-to-external-tools-with-mcp).

311* **Claude Code en la web**: lee `.mcp.json` de su repositorio. Consulte [Editar .mcp.json directamente](#edit-mcp-json-directly).311* **Sesiones en la nube**: confirme un `.mcp.json` en su repositorio; una sesión con un repositorio lo carga. Consulte [Editar .mcp.json directamente](#edit-mcp-json-directly) y [Qué se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup).

312* **Claude.ai**: los conectores que agrega en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) se cargan automáticamente en la CLI cuando inicia sesión con esa cuenta. Consulte [Usar servidores MCP desde Claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).312* **Claude.ai**: los conectores que agrega en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) se cargan automáticamente en la CLI cuando inicia sesión con esa cuenta. Consulte [Usar servidores MCP desde Claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).

313 313 

314<h2 id="troubleshooting">314<h2 id="troubleshooting">

memory.md +227 −98

Details

4 4 

5# Cómo Claude recuerda su proyecto5# Cómo Claude recuerda su proyecto

6 6 

7> Proporcione a Claude instrucciones persistentes con archivos CLAUDE.md, y permita que Claude acumule aprendizajes automáticamente con auto memory.7> Proporcione a Claude instrucciones persistentes con archivos CLAUDE.md o AGENTS.md, y permita que Claude acumule aprendizajes automáticamente con auto memory.

8 8 

9Cada sesión de Claude Code comienza con una ventana de contexto nueva. Dos mecanismos llevan el conocimiento entre sesiones:9Cada sesión de Claude Code comienza con una ventana de contexto nueva. Dos mecanismos llevan el conocimiento entre sesiones:

10 10 

11* **Archivos CLAUDE.md**: instrucciones que usted escribe para dar a Claude contexto persistente11* **Archivos CLAUDE.md**: instrucciones que usted escribe para dar a Claude contexto persistente. Claude también puede leer archivos [`AGENTS.md`](#agents-md) de un repositorio, por sí solos o junto con CLAUDE.md

12* **Auto memory**: notas que Claude escribe por sí mismo basadas en sus correcciones y preferencias12* **Auto memory**: notas que Claude escribe por sí mismo basadas en sus correcciones y preferencias

13 13 

14Esta página cubre cómo:14Esta página cubre cómo:

15 15 

16* [Escribir y organizar archivos CLAUDE.md](#claude-md-files)16* [Escribir y organizar archivos CLAUDE.md](#claude-md-files)

17* [Usar un AGENTS.md existente](#agents-md) como sus instrucciones de proyecto, por sí solo o junto con CLAUDE.md

17* [Limitar reglas a tipos de archivo específicos](#organize-rules-with-claude/rules/) con `.claude/rules/`18* [Limitar reglas a tipos de archivo específicos](#organize-rules-with-claude/rules/) con `.claude/rules/`

18* [Configurar auto memory](#auto-memory) para que Claude tome notas automáticamente19* [Configurar auto memory](#auto-memory) para que Claude tome notas automáticamente

19* [Solucionar problemas](#troubleshoot-memory-issues) cuando las instrucciones no se siguen20* [Solucionar problemas](#troubleshoot-memory-issues) cuando las instrucciones no se siguen


40 Archivos CLAUDE.md41 Archivos CLAUDE.md

41</h2>42</h2>

42 43 

43Los archivos CLAUDE.md son archivos markdown que dan a Claude instrucciones persistentes para un proyecto, su flujo de trabajo personal o toda su organización. Usted escribe estos archivos en texto plano; Claude los lee al inicio de cada sesión.44Los archivos CLAUDE.md son archivos markdown que proporcionan a Claude instrucciones persistentes para un proyecto, su flujo de trabajo personal o toda su organización. Usted escribe estos archivos en texto plano; Claude los lee al inicio de cada sesión. Si su repositorio utiliza `AGENTS.md` en su lugar, consulte [AGENTS.md](#agents-md).

44 45 

45<h3 id="when-to-add-to-claude-md">46<h3 id="when-to-add-to-claude-md">

46 Cuándo agregar a CLAUDE.md47 Cuándo agregar a CLAUDE.md

47</h3>48</h3>

48 49 

49Trate CLAUDE.md como el lugar donde escribe lo que de otro modo tendría que re-explicar. Agregue a él cuando:50Trate CLAUDE.md como el lugar donde escribe lo que de otro modo tendría que re-explicar. Agregue contenido cuando:

50 51 

51* Claude comete el mismo error una segunda vez52* Claude comete el mismo error una segunda vez

52* Una revisión de código detecta lo que sí llega al PR que Claude debería haber sabido sobre esta base de código53* Una revisión de código detecta algo que Claude debería haber sabido sobre esta base de código

53* Usted escribe la misma corrección o aclaración en el chat que escribió la sesión anterior54* Usted escribe la misma corrección o aclaración en el chat que escribió en la sesión anterior

54* Un nuevo compañero de equipo necesitaría el mismo contexto para ser productivo55* Un nuevo compañero de equipo necesitaría el mismo contexto para ser productivo

55 56 

56Manténgalo en hechos que Claude debe retener en cada sesión: comandos de compilación, convenciones, diseño del proyecto, reglas "siempre haz X". Si una entrada es un procedimiento de múltiples pasos o solo importa para una parte de la base de código, muévala a un [skill](/docs/es/skills) o una [regla con alcance de ruta](#organize-rules-with-claude/rules/) en su lugar. La [descripción general de extensiones](/docs/es/features-overview#build-your-setup-over-time) cubre cuándo usar cada mecanismo.57Manténgalo en hechos que Claude debe retener en cada sesión: comandos de compilación, convenciones, diseño del proyecto, reglas "siempre haga X". Si una entrada es un procedimiento de varios pasos o solo importa para una parte de la base de código, muévala a un [skill](/docs/es/skills) o a una [regla con alcance de ruta](#organize-rules-with-claude/rules/) en su lugar. La [descripción general de extensiones](/docs/es/features-overview#build-your-setup-over-time) cubre cuándo usar cada mecanismo.

57 58 

58<h3 id="choose-where-to-put-claude-md-files">59<h3 id="choose-where-to-put-claude-md-files">

59 Elija dónde colocar los archivos CLAUDE.md60 Elija dónde colocar los archivos CLAUDE.md


62Los archivos CLAUDE.md pueden vivir en varios lugares, cada uno con un alcance diferente. La tabla a continuación los enumera en orden de carga, desde el alcance más amplio hasta el más específico, por lo que una instrucción de proyecto aparece en contexto después de una instrucción de usuario.63Los archivos CLAUDE.md pueden vivir en varios lugares, cada uno con un alcance diferente. La tabla a continuación los enumera en orden de carga, desde el alcance más amplio hasta el más específico, por lo que una instrucción de proyecto aparece en contexto después de una instrucción de usuario.

63 64 

64| Alcance | Ubicación | Propósito | Ejemplos de casos de uso | Compartido con |65| Alcance | Ubicación | Propósito | Ejemplos de casos de uso | Compartido con |

65| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | ----------------------------------------------------- |66| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | ----------------------------------------------------- |

66| **Política gestionada** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux y WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Instrucciones de toda la organización gestionadas por TI/DevOps | Estándares de codificación de la empresa, políticas de seguridad, requisitos de cumplimiento | Todos los usuarios de la organización |67| **Política administrada** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux y WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Instrucciones de toda la organización administradas por TI/DevOps | Estándares de codificación de la empresa, políticas de seguridad, requisitos de cumplimiento | Todos los usuarios de la organización |

67| **Instrucciones del usuario** | `~/.claude/CLAUDE.md` | Preferencias personales para todos los proyectos | Preferencias de estilo de código, atajos de herramientas personales | Solo usted (todos los proyectos) |68| **Instrucciones de usuario** | `~/.claude/CLAUDE.md` | Preferencias personales para todos los proyectos | Preferencias de estilo de código, atajos de herramientas personales | Solo usted (todos los proyectos) |

68| **Instrucciones del proyecto** | `./CLAUDE.md` o `./.claude/CLAUDE.md` | Instrucciones compartidas por el equipo para el proyecto | Arquitectura del proyecto, estándares de codificación, flujos de trabajo comunes | Miembros del equipo a través del control de versiones |69| **Instrucciones de proyecto** | `./CLAUDE.md` o `./.claude/CLAUDE.md`. Consulte [AGENTS.md](#agents-md) para saber cuándo `./AGENTS.md` se carga en su lugar o junto con ellos | Instrucciones compartidas por el equipo para el proyecto | Arquitectura del proyecto, estándares de codificación, flujos de trabajo comunes | Miembros del equipo a través del control de versiones |

69| **Instrucciones locales** | `./CLAUDE.local.md` | Preferencias personales específicas del proyecto; agregue a `.gitignore` | Sus URLs de sandbox, datos de prueba preferidos | Solo usted (proyecto actual) |70| **Instrucciones locales** | `./CLAUDE.local.md` | Preferencias personales específicas del proyecto; agregue a `.gitignore` | Sus URLs de sandbox, datos de prueba preferidos | Solo usted (proyecto actual) |

70 71 

71Los archivos CLAUDE.md y CLAUDE.local.md en la jerarquía de directorios por encima del directorio de trabajo se cargan al iniciar. Los archivos en subdirectorios se cargan bajo demanda cuando Claude lee archivos en esos directorios. Consulte [Cómo se cargan los archivos CLAUDE.md](#how-claude-md-files-load) para el orden de resolución completo.72Los archivos CLAUDE.md y CLAUDE.local.md en la jerarquía de directorios por encima del directorio de trabajo se cargan al iniciar. Los archivos en subdirectorios se cargan bajo demanda cuando Claude lee archivos en esos directorios. Consulte [Cómo se cargan los archivos CLAUDE.md](#how-claude-md-files-load) para el orden de resolución completo.

72 73 

73Para proyectos grandes, puede dividir las instrucciones en archivos específicos de temas usando [reglas de proyecto](#organize-rules-with-claude/rules/). Las reglas le permiten limitar las instrucciones a tipos de archivo específicos o subdirectorios.74Para proyectos grandes, puede dividir las instrucciones en archivos específicos de temas utilizando [reglas de proyecto](#organize-rules-with-claude/rules/). Las reglas le permiten limitar el alcance de las instrucciones a tipos de archivo específicos o subdirectorios.

74 75 

75<h3 id="set-up-a-project-claude-md">76<h3 id="set-up-a-project-claude-md">

76 Configure un CLAUDE.md de proyecto77 Configure un CLAUDE.md de proyecto

77</h3>78</h3>

78 79 

79Un CLAUDE.md de proyecto puede almacenarse en `./CLAUDE.md` o `./.claude/CLAUDE.md`. Cree este archivo y agregue instrucciones que se apliquen a cualquiera que trabaje en el proyecto: comandos de compilación y prueba, estándares de codificación, decisiones arquitectónicas, convenciones de nomenclatura y flujos de trabajo comunes. Estas instrucciones se comparten con su equipo a través del control de versiones, así que enfóquese en estándares a nivel de proyecto en lugar de preferencias personales. Para confirmar que el archivo se cargó, ejecute `/context` en una sesión y verifique la lista bajo **Memory files**.80Un CLAUDE.md de proyecto puede almacenarse en `./CLAUDE.md` o `./.claude/CLAUDE.md`. Cree este archivo y agregue instrucciones que se apliquen a cualquiera que trabaje en el proyecto: comandos de compilación y prueba, estándares de codificación, decisiones arquitectónicas, convenciones de nomenclatura y flujos de trabajo comunes. Estas instrucciones se comparten con su equipo a través del control de versiones, por lo que enfóquese en estándares a nivel de proyecto en lugar de preferencias personales. Para confirmar que el archivo se cargó, ejecute `/context` en una sesión y verifique la lista bajo **Memory files**.

80 81 

81<Tip>82<Tip>

82 Ejecute `/init` para generar un CLAUDE.md inicial automáticamente. Claude analiza su base de código y crea un archivo con comandos de compilación, instrucciones de prueba y convenciones de proyecto que descubre. Si ya existe un CLAUDE.md, `/init` sugiere mejoras en lugar de sobrescribirlo. Refine desde allí con instrucciones que Claude no descubriría por sí solo.83 Ejecute `/init` para generar un CLAUDE.md inicial automáticamente. Claude analiza su base de código y crea un archivo con comandos de compilación, instrucciones de prueba y convenciones de proyecto que descubre. Si ya existe un CLAUDE.md, `/init` sugiere mejoras en lugar de sobrescribirlo. Refine desde allí con instrucciones que Claude no descubriría por sí solo.

83 84 

84 Establezca `CLAUDE_CODE_NEW_INIT=1` para habilitar un flujo interactivo de múltiples fases. `/init` pregunta qué artefactos configurar: archivos CLAUDE.md, skills y hooks. Luego explora su base de código con un subagente, llena los vacíos mediante preguntas de seguimiento y presenta una propuesta revisable antes de escribir cualquier archivo.85 Configure `CLAUDE_CODE_NEW_INIT=1` para habilitar un flujo interactivo de múltiples fases. `/init` pregunta qué artefactos configurar: archivos CLAUDE.md, skills y hooks. Luego explora su base de código con un subagente, llena los vacíos mediante preguntas de seguimiento y presenta una propuesta revisable antes de escribir cualquier archivo.

85</Tip>86</Tip>

86 87 

87<h3 id="write-effective-instructions">88<h3 id="write-effective-instructions">

88 Escriba instrucciones efectivas89 Escriba instrucciones efectivas

89</h3>90</h3>

90 91 

91Los archivos CLAUDE.md se cargan en la ventana de contexto al inicio de cada sesión, consumiendo tokens junto con su conversación. La [visualización de la ventana de contexto](/docs/es/context-window) muestra dónde se carga CLAUDE.md en relación con el resto del contexto de inicio. Debido a que son contexto en lugar de configuración forzada, cómo escribe las instrucciones afecta qué tan confiablemente Claude las sigue. Las instrucciones específicas, concisas y bien estructuradas funcionan mejor.92Los archivos CLAUDE.md se cargan en la ventana de contexto al inicio de cada sesión, consumiendo tokens junto con su conversación. La [visualización de la ventana de contexto](/docs/es/context-window) muestra dónde se carga CLAUDE.md en relación con el resto del contexto de inicio. Debido a que son contexto en lugar de configuración forzada, la forma en que escribe las instrucciones afecta la confiabilidad con la que Claude las sigue. Las instrucciones específicas, concisas y bien estructuradas funcionan mejor.

92 93 

93**Tamaño**: apunte a menos de 200 líneas por archivo CLAUDE.md. Los archivos más largos consumen más contexto y reducen la adherencia. Si sus instrucciones están creciendo mucho, use [reglas con alcance de ruta](#path-specific-rules) para que las instrucciones se carguen solo cuando Claude trabaje con archivos coincidentes. También puede dividir contenido en [importaciones](#import-additional-files) para organización, aunque los archivos importados aún se cargan e ingresan a la ventana de contexto al iniciar.94**Tamaño**: apunte a menos de 200 líneas por archivo CLAUDE.md. Los archivos más largos consumen más contexto y reducen la adherencia. Si sus instrucciones están creciendo mucho, use [reglas con alcance de ruta](#path-specific-rules) para que las instrucciones se carguen solo cuando Claude trabaje con archivos coincidentes. También puede dividir el contenido en [importaciones](#import-additional-files) para organización, aunque los archivos importados aún se cargan e ingresan a la ventana de contexto al iniciar.

94 95 

95**Estructura**: use encabezados y viñetas de markdown para agrupar instrucciones relacionadas. Claude escanea la estructura de la misma manera que los lectores: las secciones organizadas son más fáciles de seguir que los párrafos densos.96**Estructura**: use encabezados markdown y viñetas para agrupar instrucciones relacionadas. Claude escanea la estructura de la misma manera que los lectores: las secciones organizadas son más fáciles de seguir que los párrafos densos.

96 97 

97**Especificidad**: escriba instrucciones que sean lo suficientemente concretas para verificar. Por ejemplo:98**Especificidad**: escriba instrucciones que sean lo suficientemente concretas para verificar. Por ejemplo:

98 99 


100* "Ejecutar `npm test` antes de hacer commit" en lugar de "Probar sus cambios"101* "Ejecutar `npm test` antes de hacer commit" en lugar de "Probar sus cambios"

101* "Los controladores de API viven en `src/api/handlers/`" en lugar de "Mantener los archivos organizados"102* "Los controladores de API viven en `src/api/handlers/`" en lugar de "Mantener los archivos organizados"

102 103 

103**Consistencia**: si dos reglas se contradicen entre sí, Claude puede elegir una arbitrariamente. Revise sus archivos CLAUDE.md, archivos CLAUDE.md anidados en subdirectorios y archivos [`.claude/rules/`](#organize-rules-with-claude/rules/) periódicamente para eliminar instrucciones desactualizadas o conflictivas. En monorepos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitir archivos CLAUDE.md de otros equipos que no sean relevantes para su trabajo.104**Consistencia**: si dos reglas se contradicen entre sí, Claude puede elegir una arbitrariamente. Revise sus archivos CLAUDE.md, archivos CLAUDE.md anidados en subdirectorios y [`.claude/rules/`](#organize-rules-with-claude/rules/) periódicamente para eliminar instrucciones obsoletas o conflictivas. En monorepos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitir archivos CLAUDE.md de otros equipos que no sean relevantes para su trabajo.

104 105 

105<h3 id="import-additional-files">106<h3 id="import-additional-files">

106 Importar archivos adicionales107 Importe archivos adicionales

107</h3>108</h3>

108 109 

109Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Los archivos importados se expanden y se cargan en contexto al iniciar junto con el CLAUDE.md que los referencia.110Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Los archivos importados se expanden y se cargan en contexto al iniciar junto con el CLAUDE.md que los referencia.


118Consulte @README para obtener una descripción general del proyecto y @package.json para los comandos npm disponibles para este proyecto.119Consulte @README para obtener una descripción general del proyecto y @package.json para los comandos npm disponibles para este proyecto.

119 120 

120# Instrucciones adicionales121# Instrucciones adicionales

121- flujo de trabajo git @docs/git-instructions.md122- flujo de trabajo de git @docs/git-instructions.md

122```123```

123 124 

124Para preferencias personales privadas por proyecto que no desea registrar en el control de versiones, cree un `CLAUDE.local.md` en la raíz del proyecto. Se carga junto con `CLAUDE.md` y se trata de la misma manera. Agregue `CLAUDE.local.md` a su `.gitignore` para que no se confirme. Con `CLAUDE_CODE_NEW_INIT=1` establecido, ejecutar `/init` y elegir la opción personal hace esto por usted.125Para preferencias personales privadas por proyecto que no deben verificarse en el control de versiones, cree un `CLAUDE.local.md` en la raíz del proyecto. Se carga junto con `CLAUDE.md` y se trata de la misma manera. Agregue `CLAUDE.local.md` a su `.gitignore` para que no se confirme. Con `CLAUDE_CODE_NEW_INIT=1` configurado, ejecutar `/init` y elegir la opción personal lo hace por usted.

125 126 

126Si trabaja en múltiples git worktrees del mismo repositorio, un `CLAUDE.local.md` ignorado por git solo existe en el worktree donde lo creó. Para compartir instrucciones personales entre worktrees, importe un archivo desde su directorio de inicio en su lugar:127Si trabaja en múltiples git worktrees del mismo repositorio, un `CLAUDE.local.md` ignorado por git solo existe en el worktree donde lo creó. Para compartir instrucciones personales entre worktrees, importe un archivo desde su directorio de inicio en su lugar:

127 128 


133<Warning>134<Warning>

134 Una importación en un archivo de memoria a nivel de proyecto es externa cuando su ruta se resuelve fuera de su directorio de trabajo, como la importación del directorio de inicio anterior. La primera vez que Claude Code encuentra importaciones externas en un proyecto, muestra un diálogo de aprobación que enumera los archivos. Si rechaza, las importaciones permanecen deshabilitadas y el diálogo no aparece nuevamente.135 Una importación en un archivo de memoria a nivel de proyecto es externa cuando su ruta se resuelve fuera de su directorio de trabajo, como la importación del directorio de inicio anterior. La primera vez que Claude Code encuentra importaciones externas en un proyecto, muestra un diálogo de aprobación que enumera los archivos. Si rechaza, las importaciones permanecen deshabilitadas y el diálogo no aparece nuevamente.

135 136 

136 Claude Code muestra el diálogo para protegerlo de archivos que otras personas confirman en un proyecto compartido. Los archivos de memoria con alcance de usuario, como `~/.claude/CLAUDE.md` y `~/.claude/rules/`, son archivos que usted escribió. Excepto en sesiones de [Cowork](https://claude.com/product/cowork) en su escritorio, Claude Code carga sus importaciones sin el diálogo y las confía como el resto de su configuración personal.137 Claude Code muestra el diálogo para protegerlo de archivos que otras personas confirmen en un proyecto compartido. Los archivos de memoria con alcance de usuario, como `~/.claude/CLAUDE.md` y `~/.claude/rules/`, son archivos que usted escribió. Excepto en sesiones de [Cowork](https://claude.com/product/cowork) en su escritorio, Claude Code carga sus importaciones sin el diálogo y las confía como el resto de su configuración personal.

137 138 

138 En sesiones de Cowork en su escritorio, Claude Code omite cualquier importación en un archivo con alcance de usuario que se resuelva a una ruta fuera del directorio de trabajo de la sesión y carga el resto del archivo. En esas sesiones también omite un `~/.claude/CLAUDE.md` que es en sí mismo un enlace simbólico o un enlace duro, y un directorio `~/.claude/rules/` vinculado simbólicamente o un archivo de regla que apunta fuera del directorio de trabajo.139 En sesiones de Cowork en su escritorio, Claude Code omite cualquier importación en un archivo con alcance de usuario que se resuelva a una ruta fuera del directorio de trabajo de la sesión y carga el resto del archivo. En esas sesiones también omite un `~/.claude/CLAUDE.md` que es en sí mismo un enlace simbólico o un enlace duro, y un directorio `~/.claude/rules/` enlazado simbólicamente o un archivo de regla que apunta fuera del directorio de trabajo.

139</Warning>140</Warning>

140 141 

141<h3 id="agents-md">

142 AGENTS.md

143</h3>

144 

145Claude Code lee `CLAUDE.md`, no `AGENTS.md`. Si su repositorio ya usa `AGENTS.md` para otros agentes de codificación, cree un `CLAUDE.md` que lo importe para que ambas herramientas lean las mismas instrucciones sin duplicarlas. También puede agregar instrucciones específicas de Claude Code debajo de la importación. Claude carga el archivo importado al inicio de la sesión, luego agrega el resto:

146 

147```markdown CLAUDE.md theme={null}

148@AGENTS.md

149 

150## Claude Code

151 

152Use plan mode para cambios bajo `src/billing/`.

153```

154 

155Un enlace simbólico también funciona si no necesita agregar contenido específico de Claude Code:

156 

157```bash theme={null}

158ln -s AGENTS.md CLAUDE.md

159```

160 

161El comando no imprime salida en caso de éxito. En su próxima sesión, ejecute `/context` y confirme que `CLAUDE.md` aparece bajo **Memory files**.

162 

163En Windows, crear un enlace simbólico requiere privilegios de administrador o modo de desarrollador, así que use la importación `@AGENTS.md` en su lugar.

164 

165Ejecutar [`/init`](/docs/es/commands) lee reglas de Cursor, en `.cursor/rules/` o `.cursorrules`, y reglas de Copilot, en `.github/copilot-instructions.md`, e incorpora las partes relevantes en el `CLAUDE.md` generado. Con `CLAUDE_CODE_NEW_INIT=1` establecido, `/init` también lee `AGENTS.md`, `.devin/rules/`, `.windsurf/rules/` o `.windsurfrules`, y `.clinerules`.

166 

167También puede ejecutar [`/import`](/docs/es/commands) para traer la configuración de un agente de codificación compatible a Claude Code, que agrega una copia única de archivos de instrucciones como `AGENTS.md` al `CLAUDE.md` coincidente y lleva consigo servidores MCP, comandos, subagentes y skills. Requiere Claude Code v2.1.213 o posterior.

168 

169<h3 id="how-claude-md-files-load">142<h3 id="how-claude-md-files-load">

170 Cómo se cargan los archivos CLAUDE.md143 Cómo se cargan los archivos CLAUDE.md

171</h3>144</h3>

172 145 

173Claude Code carga `CLAUDE.md` y `CLAUDE.local.md` desde su directorio de trabajo actual y cada directorio por encima de él. Ejecute Claude Code en `foo/bar/` y carga instrucciones desde `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` y cualquier archivo `CLAUDE.local.md` junto a ellos.146Claude Code carga `CLAUDE.md` y `CLAUDE.local.md` desde su directorio de trabajo actual y cada directorio por encima de él. Ejecute Claude Code en `foo/bar/` y cargará instrucciones desde `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` y cualquier archivo `CLAUDE.local.md` junto a ellos.

174 147 

175Todos los archivos descubiertos se concatenan en contexto en lugar de anularse entre sí. Dentro de la jerarquía de directorios, el contenido se ordena desde la raíz del sistema de archivos hasta su directorio de trabajo. Para el ejemplo `foo/bar/`, `foo/CLAUDE.md` aparece en contexto antes de `foo/bar/CLAUDE.md`, por lo que las instrucciones más cercanas a donde lanzó Claude se leen al final. Dentro de cada directorio, `CLAUDE.local.md` se agrega después de `CLAUDE.md`, por lo que sus notas personales son lo último que Claude lee en ese nivel.148Todos los archivos descubiertos se concatenan en contexto en lugar de anularse entre sí. En el árbol de directorios, el contenido se ordena desde la raíz del sistema de archivos hasta su directorio de trabajo. Para el ejemplo `foo/bar/`, `foo/CLAUDE.md` aparece en contexto antes de `foo/bar/CLAUDE.md`, por lo que las instrucciones más cercanas a donde lanzó Claude se leen al final. Dentro de cada directorio, `CLAUDE.local.md` se añade después de `CLAUDE.md`, por lo que sus notas personales son lo último que Claude lee en ese nivel.

176 149 

177Claude también descubre archivos `CLAUDE.md` y `CLAUDE.local.md` en subdirectorios bajo su directorio de trabajo actual. En lugar de cargarlos al iniciar, se incluyen cuando Claude lee archivos en esos subdirectorios.150Claude también descubre archivos `CLAUDE.md` y `CLAUDE.local.md` en subdirectorios bajo su directorio de trabajo actual. En lugar de cargarlos al iniciar, se incluyen cuando Claude lee archivos en esos subdirectorios.

178 151 

179Si trabaja en un monorepo grande donde se recogen archivos CLAUDE.md de otros equipos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitirlos. Para el diseño completo de archivos CLAUDE.md de raíz y por directorio y reglas, consulte [Monorepos y repositorios grandes](/docs/es/large-codebases).152Si trabaja en un monorepo grande donde se recogen archivos CLAUDE.md de otros equipos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitirlos. Para el diseño completo de archivos CLAUDE.md raíz y por directorio y reglas, consulte [Monorepos y repositorios grandes](/docs/es/large-codebases).

180 153 

181Los comentarios HTML a nivel de bloque (`<!-- notas de mantenimiento -->`) en archivos CLAUDE.md se eliminan antes de que el contenido se inyecte en el contexto de Claude. Úselos para dejar notas para los mantenedores humanos sin gastar tokens de contexto en ellas. Los comentarios dentro de bloques de código se conservan. Cuando abre un archivo CLAUDE.md directamente con la herramienta Read, los comentarios permanecen visibles.154Los comentarios HTML a nivel de bloque (`<!-- maintainer notes -->`) en archivos CLAUDE.md se eliminan antes de que el contenido se inyecte en el contexto de Claude. Úselos para dejar notas para los mantenedores humanos sin gastar tokens de contexto en ellas. Los comentarios dentro de bloques de código se conservan. Cuando abre un archivo CLAUDE.md directamente con la herramienta Read, los comentarios permanecen visibles.

182 155 

183<h4 id="load-from-additional-directories">156<h4 id="load-from-additional-directories">

184 Cargar desde directorios adicionales157 Cargue desde directorios adicionales

185</h4>158</h4>

186 159 

187La bandera `--add-dir` da a Claude acceso a directorios adicionales fuera de su directorio de trabajo principal. De forma predeterminada, los archivos CLAUDE.md de estos directorios no se cargan.160La bandera `--add-dir` proporciona a Claude acceso a directorios adicionales fuera de su directorio de trabajo principal. De forma predeterminada, los archivos CLAUDE.md de estos directorios no se cargan.

188 161 

189Para cargar también archivos de memoria desde directorios adicionales, establezca la variable de entorno `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:162Para cargar también archivos de memoria desde directorios adicionales, configure la variable de entorno `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

190 163 

191```bash theme={null}164```bash theme={null}

192CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config165CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config


195Esto carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` y `CLAUDE.local.md` desde el directorio adicional. `CLAUDE.local.md` se omite si excluye `local` de [`--setting-sources`](/docs/es/cli-reference).168Esto carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` y `CLAUDE.local.md` desde el directorio adicional. `CLAUDE.local.md` se omite si excluye `local` de [`--setting-sources`](/docs/es/cli-reference).

196 169 

197<h3 id="organize-rules-with-claude/rules/">170<h3 id="organize-rules-with-claude/rules/">

198 Organizar reglas con `.claude/rules/`171 Organice reglas con `.claude/rules/`

199</h3>172</h3>

200 173 

201Para proyectos más grandes, puede organizar instrucciones en múltiples archivos usando el directorio `.claude/rules/`. Esto mantiene las instrucciones modulares y más fáciles de mantener para los equipos. Las reglas también pueden ser [limitadas a rutas de archivo específicas](#path-specific-rules), por lo que solo se cargan en contexto cuando Claude trabaja con archivos coincidentes, reduciendo ruido y ahorrando espacio de contexto.174Para proyectos más grandes, puede organizar instrucciones en múltiples archivos usando el directorio `.claude/rules/`. Esto mantiene las instrucciones modulares y más fáciles de mantener para los equipos. Las reglas también pueden ser [limitadas a rutas de archivo específicas](#path-specific-rules), por lo que solo se cargan en contexto cuando Claude trabaja con archivos coincidentes, reduciendo el ruido y ahorrando espacio de contexto.

202 175 

203<Note>176<Note>

204 Las reglas se cargan en contexto cada sesión o cuando se abren archivos coincidentes. Para instrucciones específicas de tareas que no necesitan estar en contexto todo el tiempo, use [skills](/docs/es/skills) en su lugar, que solo se cargan cuando las invoca o cuando Claude determina que son relevantes para su prompt.177 Las reglas se cargan en contexto cada sesión o cuando se abren archivos coincidentes. Para instrucciones específicas de tareas que no necesitan estar en contexto todo el tiempo, use [skills](/docs/es/skills) en su lugar, que solo se cargan cuando las invoca o cuando Claude determina que son relevantes para su solicitud.

205</Note>178</Note>

206 179 

207<h4 id="set-up-rules">180<h4 id="set-up-rules">

208 Configurar reglas181 Configure reglas

209</h4>182</h4>

210 183 

211Coloque archivos markdown en el directorio `.claude/rules/` de su proyecto. Cada archivo debe cubrir un tema, con un nombre de archivo descriptivo como `testing.md` o `api-design.md`. Todos los archivos `.md` se descubren recursivamente, por lo que puede organizar reglas en subdirectorios como `frontend/` o `backend/`:184Coloque archivos markdown en el directorio `.claude/rules/` de su proyecto. Cada archivo debe cubrir un tema, con un nombre de archivo descriptivo como `testing.md` o `api-design.md`. Todos los archivos `.md` se descubren recursivamente, por lo que puede organizar reglas en subdirectorios como `frontend/` o `backend/`:


222 195 

223Las reglas sin [frontmatter `paths`](#path-specific-rules) se cargan al iniciar con la misma prioridad que `.claude/CLAUDE.md`.196Las reglas sin [frontmatter `paths`](#path-specific-rules) se cargan al iniciar con la misma prioridad que `.claude/CLAUDE.md`.

224 197 

225Las reglas del proyecto se omiten si excluye `project` de [`--setting-sources`](/docs/es/cli-reference). Antes de v2.1.211, las reglas que se cargan bajo demanda, incluidas las reglas con alcance de ruta y las reglas en directorios `.claude/rules/` anidados, se cargaban incluso cuando `project` estaba excluido.198Las reglas de proyecto se omiten si excluye `project` de [`--setting-sources`](/docs/es/cli-reference). Antes de v2.1.211, las reglas que se cargan bajo demanda, incluidas las reglas con alcance de ruta y las reglas en directorios `.claude/rules/` anidados, se cargaban incluso cuando `project` estaba excluido.

226 199 

227<h4 id="path-specific-rules">200<h4 id="path-specific-rules">

228 Reglas específicas de ruta201 Reglas específicas de ruta


243- Incluir comentarios de documentación OpenAPI216- Incluir comentarios de documentación OpenAPI

244```217```

245 218 

246Las reglas sin un campo `paths` se cargan incondicionalmente y se aplican a todos los archivos. Las reglas con alcance de ruta se activan cuando Claude lee archivos que coinciden con el patrón, no en cada uso de herramienta. A partir de v2.1.198, la coincidencia también funciona cuando Claude alcanza un archivo a través de una ruta de proyecto vinculada simbólicamente, por ejemplo en un checkout vinculado simbólicamente.219Las reglas sin un campo `paths` se cargan incondicionalmente y se aplican a todos los archivos. Las reglas con alcance de ruta se activan cuando Claude lee archivos que coinciden con el patrón, no en cada uso de herramienta. A partir de v2.1.198, la coincidencia también funciona cuando Claude alcanza un archivo a través de una ruta enlazada simbólicamente al directorio del proyecto, por ejemplo en un checkout enlazado simbólicamente.

247 220 

248Use patrones glob en el campo `paths` para hacer coincidir archivos por extensión, directorio o cualquier combinación:221Use patrones glob en el campo `paths` para hacer coincidir archivos por extensión, directorio o cualquier combinación:

249 222 

250| Patrón | Coincide con |223| Patrón | Coincide |

251| ---------------------- | ----------------------------------------------------- |224| ---------------------- | ----------------------------------------------------- |

252| `**/*.ts` | Todos los archivos TypeScript en cualquier directorio |225| `**/*.ts` | Todos los archivos TypeScript en cualquier directorio |

253| `src/**/*` | Todos los archivos bajo el directorio `src/` |226| `src/**/*` | Todos los archivos bajo el directorio `src/` |


265---238---

266```239```

267 240 

268Cada grupo de llaves multiplica el número de patrones expandidos: `src/*.{ts,tsx}` se expande a dos patrones, y `{a,b}/{c,d}/*.{ts,tsx}` a ocho. Para mantener la expansión acotada, la lista `paths` completa de una regla comparte un presupuesto de 1.000 patrones expandidos y 4 MiB, y los patrones sin llaves no cuentan en su contra.241Cada grupo de llaves multiplica el número de patrones expandidos: `src/*.{ts,tsx}` se expande a dos patrones, y `{a,b}/{c,d}/*.{ts,tsx}` a ocho. Para mantener la expansión acotada, la lista `paths` completa de una regla comparte un presupuesto de 1.000 patrones expandidos y 4 MiB, y los patrones sin llaves no cuentan contra él.

269 242 

270Claude Code usa cualquier patrón que excedería el presupuesto sin expandir, y sus llaves literales no coinciden con ningún archivo. Antes de v2.1.217, un valor `paths` con muchos grupos de llaves detenía o bloqueaba la CLI al iniciar.243Claude Code usa cualquier patrón que excedería el presupuesto sin expandir, y sus llaves literales no coinciden con ningún archivo. Antes de v2.1.217, un valor `paths` con muchos grupos de llaves detenía o bloqueaba la CLI al iniciar.

271 244 

272La sintaxis glob trata `[` como el inicio de una expresión de corchetes como `[abc]`. Un patrón con un `[` que no se puede leer como una expresión de corchetes, como `photos [2024/**`, es inválido: no coincide con nada, y los otros patrones de la regla siguen funcionando. Para hacer coincidir un `[` literal en un nombre de archivo, escápelo como `photos \[2024/**`. Antes de v2.1.207, un patrón inválido hacía que la herramienta Read fallara para cada archivo contra el cual se evaluaba la regla, en lugar de no coincidir con nada.245La sintaxis Glob trata `[` como el inicio de una expresión de corchetes como `[abc]`. Un patrón con un `[` que no se puede leer como una expresión de corchetes, como `photos [2024/**`, es inválido: no coincide con nada, y los otros patrones de la regla siguen funcionando. Para hacer coincidir un `[` literal en un nombre de archivo, escápelo como `photos \[2024/**`. Antes de v2.1.207, un patrón inválido hacía que la herramienta Read fallara para cada archivo contra el cual se evaluaba la regla, en lugar de no coincidir con nada.

273 246 

274<h4 id="share-rules-across-projects-with-symlinks">247<h4 id="share-rules-across-projects-with-symlinks">

275 Compartir reglas entre proyectos con enlaces simbólicos248 Comparta reglas entre proyectos con enlaces simbólicos

276</h4>249</h4>

277 250 

278El directorio `.claude/rules/` admite enlaces simbólicos, por lo que puede mantener un conjunto compartido de reglas y vincularlas en múltiples proyectos. Los enlaces simbólicos se resuelven y se cargan normalmente, y los enlaces simbólicos circulares se detectan y se manejan correctamente.251El directorio `.claude/rules/` admite enlaces simbólicos, por lo que puede mantener un conjunto compartido de reglas y vincularlas en múltiples proyectos. Los enlaces simbólicos circulares se detectan y se manejan correctamente.

279 252 

280Claude Code trata un enlace simbólico cuyo destino está fuera de su directorio de trabajo como una [importación externa](#import-additional-files). Las reglas vinculadas no se cargan hasta que apruebe importaciones externas para el proyecto, y después de eso solo se cargan las que no tienen un [campo `paths`](#path-specific-rules). Claude Code solicita esa aprobación solo cuando un archivo de memoria de proyecto importa un archivo fuera del directorio de trabajo con `@path`, no solo para enlaces simbólicos. Para cargar reglas compartidas sin esa aprobación, manténgalas en [`~/.claude/rules/`](#user-level-rules), donde se aplican a cada proyecto en su máquina.253Claude Code trata un enlace simbólico cuyo destino está fuera de su directorio de trabajo como una [importación externa](#import-additional-files). Las reglas vinculadas no se cargan hasta que apruebe importaciones externas para el proyecto, y después de eso solo se cargan las que no tienen un [campo `paths`](#path-specific-rules). Claude Code solo solicita esa aprobación cuando un archivo de memoria de proyecto importa un archivo fuera del directorio de trabajo con `@path`, no solo para enlaces simbólicos. Para cargar reglas compartidas sin esa aprobación, manténgalas en [`~/.claude/rules/`](#user-level-rules), donde se aplican a cada proyecto en su máquina.

281 254 

282Este ejemplo vincula tanto un directorio compartido como un archivo individual:255Este ejemplo vincula tanto un directorio compartido como un archivo individual:

283 256 


298└── workflows.md # Sus flujos de trabajo preferidos271└── workflows.md # Sus flujos de trabajo preferidos

299```272```

300 273 

301Las reglas a nivel de usuario se cargan antes que las reglas del proyecto, dando a las reglas del proyecto mayor prioridad.274Las reglas a nivel de usuario se cargan antes que las reglas de proyecto, dando a las reglas de proyecto mayor prioridad.

302 275 

303<h3 id="manage-claude-md-for-large-teams">276<h3 id="manage-claude-md-for-large-teams">

304 Gestionar CLAUDE.md para equipos grandes277 Administre CLAUDE.md para equipos grandes

305</h3>278</h3>

306 279 

307Para organizaciones que implementan Claude Code en equipos, puede centralizar instrucciones y controlar qué archivos CLAUDE.md se cargan.280Para organizaciones que implementan Claude Code en equipos, puede centralizar instrucciones y controlar qué archivos CLAUDE.md se cargan.

308 281 

309<h4 id="deploy-organization-wide-claude-md">282<h4 id="deploy-organization-wide-claude-md">

310 Implementar CLAUDE.md en toda la organización283 Implemente CLAUDE.md en toda la organización

311</h4>284</h4>

312 285 

313Las organizaciones pueden implementar un CLAUDE.md gestionado centralmente que se aplique a todos los usuarios en una máquina. Este archivo no puede ser excluido por configuraciones individuales.286Las organizaciones pueden implementar un CLAUDE.md administrado centralmente que se aplique a todos los usuarios en una máquina. Este archivo no puede ser excluido por configuraciones individuales.

314 287 

315<Steps>288<Steps>

316 <Step title="Crear el archivo en la ubicación de política gestionada">289 <Step title="Cree el archivo en la ubicación de política administrada">

317 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`290 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`

318 * Linux y WSL: `/etc/claude-code/CLAUDE.md`291 * Linux y WSL: `/etc/claude-code/CLAUDE.md`

319 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`292 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`

320 </Step>293 </Step>

321 294 

322 <Step title="Implementar con su sistema de gestión de configuración">295 <Step title="Implemente con su sistema de gestión de configuración">

323 Use MDM, Group Policy, Ansible o herramientas similares para distribuir el archivo en máquinas de desarrolladores. Consulte [configuración gestionada](/docs/es/managed-settings) para otras opciones de configuración de toda la organización.296 Use MDM, Group Policy, Ansible o herramientas similares para distribuir el archivo en máquinas de desarrolladores. Consulte [configuración administrada](/docs/es/managed-settings) para otras opciones de configuración de toda la organización.

324 </Step>297 </Step>

325</Steps>298</Steps>

326 299 

327La clave `claudeMd` le permite poner contenido CLAUDE.md gestionado directamente dentro de `managed-settings.json` en lugar de implementar un archivo separado.300La clave `claudeMd` le permite poner contenido CLAUDE.md administrado directamente dentro de `managed-settings.json` en lugar de implementar un archivo separado.

328 301 

329**Alcance**: cada sesión de Claude Code en la máquina, en cada repositorio. Para orientación específica del repositorio, confirme un CLAUDE.md de proyecto en su lugar.302**Alcance**: cada sesión de Claude Code en la máquina, en cada repositorio. Para orientación específica del repositorio, confirme un CLAUDE.md de proyecto en su lugar.

330 303 

331**Precedencia**: igual que un archivo CLAUDE.md gestionado. Se carga antes que CLAUDE.md de usuario y proyecto.304**Precedencia**: igual que un archivo CLAUDE.md administrado. Se carga antes que CLAUDE.md de usuario y proyecto.

332 305 

333**Dónde se respeta**: solo configuración gestionada y de política. Establecer `claudeMd` en configuración de usuario, proyecto o local no tiene efecto.306**Dónde se respeta**: solo configuración administrada y de política. Configurar `claudeMd` en configuración de usuario, proyecto o local no tiene efecto.

334 307 

335El ejemplo a continuación agrega instrucciones conductuales directamente en un archivo de configuración gestionada:308El ejemplo a continuación agrega instrucciones de comportamiento directamente en un archivo de configuración administrada:

336 309 

337```json theme={null}310```json theme={null}

338{311{


340}313}

341```314```

342 315 

343Un CLAUDE.md gestionado y [configuración gestionada](/docs/es/managed-settings) sirven para propósitos diferentes. Use configuración para aplicación técnica y CLAUDE.md para orientación conductual:316Un CLAUDE.md administrado y [configuración administrada](/docs/es/managed-settings) sirven para propósitos diferentes. Use configuración para aplicación técnica y CLAUDE.md para orientación de comportamiento:

344 317 

345| Preocupación | Configurar en |318| Preocupación | Configurar en |

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

347| Bloquear herramientas, comandos o rutas de archivo específicas | Configuración gestionada: `permissions.deny` |320| Bloquear herramientas, comandos o rutas de archivo específicas | Configuración administrada: `permissions.deny` |

348| Aplicar aislamiento de sandbox | Configuración gestionada: `sandbox.enabled` |321| Aplicar aislamiento de sandbox | Configuración administrada: `sandbox.enabled` |

349| Variables de entorno y enrutamiento de proveedor de API | Configuración gestionada: `env` |322| Variables de entorno y enrutamiento de proveedores de API | Configuración administrada: `env` |

350| Método de autenticación y bloqueo de organización | Configuración gestionada: `forceLoginMethod`, `forceLoginOrgUUID` |323| Método de inicio de sesión y restricciones de organización | Configuración administrada: `forceLoginMethod`, `forceLoginOrgUUID` |

351| Directrices de estilo de código y calidad | CLAUDE.md gestionado |324| Directrices de estilo de código y calidad | CLAUDE.md administrado |

352| Recordatorios de manejo de datos y cumplimiento | CLAUDE.md gestionado |325| Recordatorios de manejo de datos y cumplimiento | CLAUDE.md administrado |

353| Instrucciones conductuales para Claude | CLAUDE.md gestionado |326| Instrucciones de comportamiento para Claude | CLAUDE.md administrado |

354 327 

355Las reglas de configuración se aplican por el cliente independientemente de lo que Claude decida hacer. Las instrucciones de CLAUDE.md moldean el comportamiento de Claude pero no son una capa de aplicación forzada.328Las reglas de configuración se aplican por el cliente independientemente de lo que Claude decida hacer. Las instrucciones CLAUDE.md moldean el comportamiento de Claude pero no son una capa de aplicación forzada.

356 329 

357<h4 id="exclude-specific-claude-md-files">330<h4 id="exclude-specific-claude-md-files">

358 Excluir archivos CLAUDE.md específicos331 Excluya archivos CLAUDE.md específicos

359</h4>332</h4>

360 333 

361En monorepos grandes, los archivos CLAUDE.md ancestros pueden contener instrucciones que no son relevantes para su trabajo. La configuración `claudeMdExcludes` le permite omitir archivos específicos por ruta o patrón glob.334En monorepos grandes, los archivos CLAUDE.md ancestros pueden contener instrucciones que no son relevantes para su trabajo. La configuración `claudeMdExcludes` le permite omitir archivos específicos por ruta o patrón glob.


371}344}

372```345```

373 346 

374Los patrones se comparan contra rutas de archivo absolutas usando sintaxis glob. Puede configurar `claudeMdExcludes` en cualquier [capa de configuración](/docs/es/settings#where-settings-live): usuario, proyecto, local o política gestionada. Los arrays se fusionan entre capas.347Los patrones se comparan contra rutas de archivo absolutas usando sintaxis glob. Puede configurar `claudeMdExcludes` en cualquier [capa de configuración](/docs/es/settings#where-settings-live): usuario, proyecto, local o política administrada. Los arreglos se fusionan entre capas.

375 348 

376Para excluir un archivo de reglas que alcanza a través de un [enlace simbólico](#share-rules-across-projects-with-symlinks), ya sea que el archivo o su directorio sea el enlace, escriba el patrón contra cualquiera de las rutas: la ruta del archivo bajo `.claude/rules/` o su destino de enlace. Un patrón que coincida con cualquiera de las rutas excluye el archivo. Antes de v2.1.239, solo un patrón que coincidiera con el destino del enlace excluía el archivo.349Para excluir un archivo de reglas que alcanza a través de un [enlace simbólico](#share-rules-across-projects-with-symlinks), ya sea que el archivo o su directorio sea el enlace, escriba el patrón contra cualquiera de las rutas: la ruta del archivo bajo `.claude/rules/` o su destino de enlace. Un patrón que coincida con cualquiera de las rutas excluye el archivo. Antes de v2.1.239, solo un patrón que coincidiera con el destino del enlace excluía el archivo.

377 350 

378Los archivos CLAUDE.md de política gestionada no pueden ser excluidos. Esto asegura que las instrucciones de toda la organización siempre se apliquen independientemente de la configuración individual.351Los archivos CLAUDE.md de política administrada no pueden ser excluidos. Esto asegura que las instrucciones de toda la organización siempre se apliquen independientemente de la configuración individual.

352 

353<h2 id="agents-md">

354 AGENTS.md

355</h2>

356 

357Claude Code puede leer [`AGENTS.md`](/docs/es/glossary#agents-md) como sus instrucciones de proyecto, por lo que un repositorio ya configurado para otros agentes de codificación funciona sin agregar un `CLAUDE.md`, una importación o una configuración. Esta tabla muestra lo que Claude lee de forma predeterminada para cada combinación de archivos de instrucciones en su repositorio:

358 

359| Su repositorio tiene | Claude lee |

360| :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------ |

361| Un `AGENTS.md`, y ningún `CLAUDE.md` o `CLAUDE.local.md` en su directorio de trabajo o superior | Su `AGENTS.md` |

362| Un `AGENTS.md` y un `CLAUDE.md` o `CLAUDE.local.md` en su directorio de trabajo o superior | Solo sus archivos `CLAUDE.md` |

363| Un `CLAUDE.md` que ya [importa `AGENTS.md`](#share-one-file-with-other-coding-tools) | Su `CLAUDE.md`, con `AGENTS.md` incluido a través de la importación |

364 

365Para cambiar el comportamiento predeterminado, por ejemplo para que Claude siempre lea ambos archivos, lea solo `CLAUDE.md`, o lea solo las instrucciones administradas de su organización, [cambie la configuración **Project instructions**](#choose-which-instruction-files-load).

366 

367<Note>

368 La lectura de `AGENTS.md` directamente requiere Claude Code v2.1.277 o posterior. En algunas sesiones, como las de Amazon Bedrock o con telemetría deshabilitada, Claude [no puede leer `AGENTS.md`](#when-agents-md-support-is-unavailable), así que [impórtelo desde un `CLAUDE.md`](#share-one-file-with-other-coding-tools) en su lugar.

369</Note>

370 

371<h3 id="when-claude-code-reads-agents-md">

372 Cuándo Claude Code lee AGENTS.md

373</h3>

374 

375De forma predeterminada, Claude lee `AGENTS.md` solo cuando no tiene `CLAUDE.md` en su directorio de trabajo o superior. Aquí están los archivos que cuentan para esa verificación:

376 

377* **Cuentan, por lo que Claude los lee en lugar de `AGENTS.md`**: un `CLAUDE.md`, `.claude/CLAUDE.md`, o `CLAUDE.local.md` en su directorio de trabajo o cualquier directorio superior

378* **No cuentan, y continúan cargándose junto con `AGENTS.md`**: su `~/.claude/CLAUDE.md`, el `CLAUDE.md` administrado de su organización, y los archivos `.claude/rules/`

379 

380Cuando ninguno cuenta, aquí está lo que Claude lee y cómo puede saberlo:

381 

382* **Al inicio de la sesión**: cada `AGENTS.md` y `.claude/AGENTS.md` en su directorio de trabajo y los directorios superiores. En una sesión interactiva verá una línea como `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` en la conversación

383* **Mientras Claude trabaja en subdirectorios**: el `AGENTS.md` de un subdirectorio, cuando Claude abre un archivo allí con la herramienta Read y ese subdirectorio no tiene ninguno de los tres archivos `CLAUDE.md` propios

384* **Dentro de cada `AGENTS.md`**: las importaciones [`@path`](#import-additional-files) se expanden, los patrones [`claudeMdExcludes`](#exclude-specific-claude-md-files) se aplican, y los subagentes que [omiten instrucciones de proyecto](/docs/es/sub-agents#what-loads-at-startup) también omiten estos archivos

385* **No se lee**: `AGENTS.local.md`, `AGENTS.override.md`, o cualquier cosa bajo un directorio `.agents/`

386 

387<Note>

388 Debido a que `CLAUDE.local.md` cuenta, agregar uno para mantener sus propias instrucciones no comprometidas en un proyecto que depende de `AGENTS.md` detiene que Claude lea `AGENTS.md` para usted. Para mantener su `CLAUDE.local.md` y aún tener Claude leyendo `AGENTS.md`, establezca **Project instructions** en [`claude-md-and-agents-md`](#choose-which-instruction-files-load).

389</Note>

390 

391<h3 id="choose-which-instruction-files-load">

392 Elija qué archivos de instrucciones se cargan

393</h3>

394 

395Para cambiar qué archivos lee Claude, escriba `/config` en una sesión de Claude Code para abrir el panel de configuración, luego establezca **Project instructions** en uno de estos valores:

396 

397| Valor | Lo que Claude lee |

398| :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

399| `claude-md-or-agents-md` | Sus archivos `CLAUDE.md`, o sus archivos `AGENTS.md` cuando no tiene `CLAUDE.md` o `CLAUDE.local.md` en su directorio de trabajo o superior. Este es el valor predeterminado |

400| `claude-md-and-agents-md` | Sus archivos `CLAUDE.md` y `AGENTS.md` juntos, los archivos `CLAUDE.md` de cada directorio primero y su `AGENTS.md` después. Claude Code omite un `AGENTS.md` que ya ha cargado, por lo que uno que su `CLAUDE.md` importa o vincula simbólicamente no se lee dos veces |

401| `claude-md` | Solo sus archivos `CLAUDE.md` |

402| `managed-only` | Solo el `CLAUDE.md` administrado de su organización y [auto memory](#auto-memory) al iniciar. Sus archivos `CLAUDE.md` de proyecto, local y usuario, sus archivos `.claude/rules/`, y cada `AGENTS.md` se dejan fuera. El `CLAUDE.md` de un subdirectorio y los archivos `.claude/rules/`, y las [reglas con alcance de ruta](#path-specific-rules), aún se cargan cuando Claude lee un archivo allí |

403 

404También puede establecer el valor en un archivo de configuración en lugar de `/config`. Agréguelo bajo el ID del plugin `agents-md` integrado en [`pluginConfigs`](/docs/es/settings-reference#pluginconfigs), en `~/.claude/settings.json`, un archivo `--settings` o [configuración administrada](/docs/es/managed-settings). Claude Code lo ignora en archivos de configuración de proyecto y local. Este ejemplo hace que Claude lea ambos archivos:

405 

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

407{

408 "pluginConfigs": {

409 "agents-md@builtin": {

410 "options": { "instructionFiles": "claude-md-and-agents-md" }

411 }

412 }

413}

414```

415 

416Su cambio se aplica desde el siguiente mensaje que envíe y en cada nueva sesión.

417 

418<h3 id="when-agents-md-support-is-unavailable">

419 Cuándo el soporte de AGENTS.md no está disponible

420</h3>

421 

422En estas sesiones Claude lee solo archivos `CLAUDE.md`, y **Project instructions** no aparece en el panel de configuración `/config`:

423 

424* Está en una versión de Claude Code anterior a v2.1.277

425* Su sesión no [obtiene banderas de características de Anthropic](/docs/es/env-vars#features-that-need-feature-flag-fetching), por ejemplo porque usa Amazon Bedrock u otro proveedor de terceros, o deshabilitó la telemetría. La sección vinculada tiene la lista completa

426* Es su [primera sesión después de instalar o actualizar](/docs/es/env-vars#first-session-after-an-install-or-upgrade) a una versión con soporte de `AGENTS.md`. Claude lee `AGENTS.md` desde su siguiente sesión

427* Usted u su organización establecieron [`disableAllHooks`](/docs/es/settings-reference#disableallhooks) o [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly), o deshabilitó el plugin `agents-md` integrado en `/plugin`

428 

429Para darle a Claude su `AGENTS.md` en estas sesiones, [impórtelo desde un `CLAUDE.md`](#share-one-file-with-other-coding-tools).

430 

431<h3 id="where-agents-md-differs-from-claude-md">

432 Dónde AGENTS.md difiere de CLAUDE.md

433</h3>

434 

435Un `AGENTS.md` que Claude lee a través de la configuración **Project instructions** difiere de un `CLAUDE.md` en estos lugares:

436 

437| | `CLAUDE.md` | `AGENTS.md` leído a través de la configuración |

438| :--------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

439| `/memory` y la lista **Memory files** en `/context` | Listado | No listado. Para confirmar que Claude lo leyó, busque la [línea `AGENTS.md loaded`](#when-claude-code-reads-agents-md) bajo el valor predeterminado, o pregúntele a Claude qué dicen sus instrucciones de proyecto |

440| [Hooks `InstructionsLoaded`](/docs/es/hooks#instructionsloaded) | Se activan | No se activan. Se activan como de costumbre para un `AGENTS.md` que un `CLAUDE.md` importa o vincula simbólicamente |

441| Directorios que agrega con `--add-dir` mientras [`CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`](#load-from-additional-directories) está establecido | Su `CLAUDE.md` se carga | Su `AGENTS.md` no se carga |

442| Una importación `@path` de un archivo fuera de su directorio de trabajo | Claude Code le pide que apruebe [importaciones externas](#import-additional-files) | Se carga solo si ya aprobó importaciones externas para este proyecto, sin solicitud |

443 

444<h3 id="remove-an-earlier-agents-md-workaround">

445 Elimine una solución anterior de AGENTS.md

446</h3>

447 

448Si configuró Claude Code para leer `AGENTS.md` antes de que lo hiciera por su cuenta, aquí está lo que debe hacer con cada configuración común:

449 

450* **Un `CLAUDE.md` que contiene `@AGENTS.md`**: puede dejarlo. Mantener la importación nunca hace que Claude lea `AGENTS.md` dos veces, cualquiera que sea el valor de **Project instructions** que use. Elimine el `CLAUDE.md` si no contiene nada más, o manténgalo si algunas de sus sesiones [no pueden cargar `AGENTS.md` directamente](#when-agents-md-support-is-unavailable).

451* **Un `CLAUDE.md` que le dice a Claude en palabras que lea `AGENTS.md`**: Claude ve `AGENTS.md` solo si decide abrir el archivo. Elimine el `CLAUDE.md` para que Claude lea `AGENTS.md` directamente, o reemplace la oración con una importación `@AGENTS.md`.

452* **Un `CLAUDE.md` vinculado simbólicamente a `AGENTS.md`**: nada, o elimine el vínculo simbólico. De cualquier forma, Claude lee el contenido una vez.

453* **Un hook `SessionStart` que imprime `AGENTS.md`**: elimínelo. Una vez que Claude lee `AGENTS.md` directamente, el hook agrega una segunda copia al contexto.

454 

455<h3 id="share-one-file-with-other-coding-tools">

456 Comparta un archivo con otras herramientas de codificación

457</h3>

458 

459Cuando Claude no está leyendo su `AGENTS.md` directamente, aún puede mantenerlo como el archivo único que comparten todas las herramientas poniendo una importación `@AGENTS.md` en un `CLAUDE.md` junto a él. Haga esto cuando su proyecto también tenga un `CLAUDE.md`, cuando haya establecido **Project instructions** en `claude-md`, o en sesiones que [no puedan cargar `AGENTS.md`](#when-agents-md-support-is-unavailable). Agregue cualquier instrucción específica de Claude debajo de la importación, y Claude lee el archivo importado primero, luego el resto:

460 

461```markdown CLAUDE.md theme={null}

462@AGENTS.md

463 

464## Claude Code

465 

466Use plan mode for changes under `src/billing/`.

467```

468 

469Si no necesita contenido específico de Claude, un vínculo simbólico también funciona:

470 

471```bash theme={null}

472ln -s AGENTS.md CLAUDE.md

473```

474 

475El comando no imprime salida en caso de éxito. Antes de elegir el vínculo simbólico sobre la importación, verifique estas restricciones:

476 

477* **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](/docs/es/errors#refusing-after-a-symlink-changed), y la negativa dirige a Claude a editar el destino del vínculo, `AGENTS.md`, en su lugar

478* **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

479 

480Con cualquiera de los enfoques, ejecute `/context` en su siguiente sesión y confirme que `CLAUDE.md` aparece bajo **Memory files**.

481 

482<h3 id="migrate-instructions-from-other-tools">

483 Migre instrucciones de otras herramientas

484</h3>

485 

486Ejecutar [`/init`](/docs/es/commands) lee los archivos de instrucciones de otras herramientas e incorpora las partes relevantes en el `CLAUDE.md` generado:

487 

488* Reglas de Cursor en `.cursor/rules/` o `.cursorrules`

489* Reglas de Copilot en `.github/copilot-instructions.md`

490* Con `CLAUDE_CODE_NEW_INIT=1` establecido: `AGENTS.md`, `.devin/rules/`, `.windsurf/rules/` o `.windsurfrules`, y `.clinerules`

491 

492También puede ejecutar [`/import`](/docs/es/commands) para traer la configuración de un agente de codificación compatible a Claude Code, que agrega una copia única de archivos de instrucciones como `AGENTS.md` al `CLAUDE.md` coincidente y traslada servidores MCP, comandos, subagentes y skills. Requiere Claude Code v2.1.213 o posterior.

379 493 

380<h2 id="auto-memory">494<h2 id="auto-memory">

381 Auto memory495 Auto memory


422}536}

423```537```

424 538 

425El valor debe ser una ruta absoluta o comenzar con `~/`. Cuando se establece en `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, Claude Code lo respeta bajo la misma [regla de confianza del espacio de trabajo que los hooks en archivos de configuración](/docs/es/permissions#what-runs-before-you-trust-a-folder).539El valor debe ser una ruta absoluta o comenzar con `~/`.

540 

541Cuando se establece en `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, Claude Code lo respeta bajo la misma [regla de confianza del espacio de trabajo que los hooks en archivos de configuración](/docs/es/permissions#what-runs-before-you-trust-a-folder). Mientras [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) está activado, Claude Code no carga auto memory desde un directorio que un [archivo de configuración suministrado por el repositorio](/docs/es/permissions#when-your-local-settings-file-needs-trust) elige y no guarda nada en él, dondequiera que se encuentre ese directorio.

426 542 

427El directorio contiene un índice `MEMORY.md` y un archivo de tema por memoria:543El directorio contiene un índice `MEMORY.md` y un archivo de tema por memoria:

428 544 


468 Ver y editar con `/memory`584 Ver y editar con `/memory`

469</h2>585</h2>

470 586 

471El comando `/memory` enumera sus archivos CLAUDE.md, CLAUDE.local.md y otros archivos de memoria en los ámbitos de usuario y proyecto, incluidas las entradas CLAUDE.md de usuario y proyecto para archivos que aún no existen. También le permite alternar auto memory activado o desactivado y proporciona una opción para abrir la carpeta de auto memory. Seleccione cualquier archivo para abrirlo en su editor; seleccionar uno que aún no existe lo crea primero. Para verificar qué archivos se cargaron realmente en la sesión actual, ejecute `/context`.587El comando `/memory` enumera sus archivos CLAUDE.md, CLAUDE.local.md y otros archivos de memoria en los ámbitos de usuario y proyecto, incluidas las entradas CLAUDE.md de usuario y proyecto para archivos que aún no existen. También le permite alternar auto memory activado o desactivado y proporciona una opción para abrir la carpeta de auto memory. Seleccione cualquier archivo para abrirlo en su editor; seleccionar uno que aún no existe lo crea primero. Para verificar qué archivos `CLAUDE.md` y archivos de reglas se cargaron en la sesión actual, ejecute `/context`.

472 588 

473Los editores GUI como VS Code abren el archivo en una ventana separada, y puede seguir usando la sesión mientras está abierto. Antes de v2.1.216, `/memory` esperaba a que cerrara el archivo antes de responder. Los editores de terminal como Vim toman el control del terminal hasta que salga.589Los editores GUI como VS Code abren el archivo en una ventana separada, y puede seguir usando la sesión mientras está abierto. Antes de v2.1.216, `/memory` esperaba a que cerrara el archivo antes de responder. Los editores de terminal como Vim toman el control del terminal hasta que salga.

474 590 


488 604 

489Para depurar:605Para depurar:

490 606 

491* Ejecute `/context` y verifique la lista bajo **Memory files** para verificar que sus archivos CLAUDE.md y CLAUDE.local.md se cargaron. Si un archivo no aparece allí, Claude no puede verlo. Use `/memory` para abrir y editar los archivos.607* Ejecute `/context` y verifique la lista bajo **Memory files** para verificar que sus archivos CLAUDE.md y CLAUDE.local.md se cargaron. Si un archivo `CLAUDE.md` no aparece allí, Claude no puede verlo. Un archivo `AGENTS.md` aparece allí solo cuando un `CLAUDE.md` lo importa, no cuando Claude [lo lee directamente](#where-agents-md-differs-from-claude-md). Use `/memory` para abrir y editar los archivos.

492* Verifique que el CLAUDE.md relevante esté en una ubicación que se cargue para su sesión (consulte [Elija dónde colocar los archivos CLAUDE.md](#choose-where-to-put-claude-md-files)).608* Verifique que el CLAUDE.md relevante esté en una ubicación que se cargue para su sesión (consulte [Elija dónde colocar los archivos CLAUDE.md](#choose-where-to-put-claude-md-files)).

493* Haga instrucciones más específicas. "Usar indentación de 2 espacios" funciona mejor que "formatear código bien".609* Haga instrucciones más específicas. "Usar indentación de 2 espacios" funciona mejor que "formatear código bien".

494* Busque instrucciones conflictivas en archivos CLAUDE.md. Si dos archivos dan orientación diferente para el mismo comportamiento, Claude puede elegir uno arbitrariamente.610* Busque instrucciones conflictivas en archivos CLAUDE.md. Si dos archivos dan orientación diferente para el mismo comportamiento, Claude puede elegir uno arbitrariamente.

495 611 

496Si la instrucción es algo que debe ejecutarse en un punto específico, como antes de cada commit o después de cada edición de archivo, escríbala como un [hook](/docs/es/hooks-guide) en su lugar. Los hooks se ejecutan como comandos de shell en eventos de ciclo de vida fijos y se aplican independientemente de lo que Claude decida hacer.612Si la instrucción es algo que debe ejecutarse en un punto específico, como antes de cada commit o después de cada edición de archivo, escríbala como un [hook](/docs/es/hooks-guide) en su lugar. Los hooks se ejecutan como comandos de shell en eventos de ciclo de vida fijos y se aplican independientemente de lo que Claude decida hacer.

497 613 

498Para instrucciones que desea a nivel de prompt del sistema, use [`--append-system-prompt`](/docs/es/cli-reference#system-prompt-flags). Esto debe pasarse en cada invocación, por lo que es más adecuado para scripts y automatización que para uso interactivo. Para saber cómo se comporta cuando reanuda una conversación, consulte [System prompt flags in resumed conversations](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations).614Para instrucciones que desea a nivel de prompt del sistema, use [`--append-system-prompt`](/docs/es/cli-reference#system-prompt-flags). Esto debe pasarse en el lanzamiento, por lo que es más adecuado para scripts y automatización que para uso interactivo. Para saber cómo se comporta cuando reanuda una conversación, consulte [System prompt flags in resumed conversations](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations).

499 615 

500<Tip>616<Tip>

501 Use el hook [`InstructionsLoaded`](/docs/es/hooks#instructionsloaded) para registrar exactamente qué archivos de instrucciones se cargan, cuándo se cargan y por qué. Esto es útil para depurar reglas específicas de ruta o archivos cargados perezosamente en subdirectorios.617 Use el hook [`InstructionsLoaded`](/docs/es/hooks#instructionsloaded) para registrar exactamente qué archivos de instrucciones se cargan, cuándo se cargan y por qué. Esto es útil para depurar reglas específicas de ruta o archivos cargados perezosamente en subdirectorios.

502</Tip>618</Tip>

503 619 

620<h3 id="my-agents-md-isn’t-loading">

621 Mi AGENTS.md no se está cargando

622</h3>

623 

624Si su repositorio tiene un `AGENTS.md` y Claude no parece saber qué dice, la causa habitual es un `CLAUDE.md` en algún lugar de la ruta del proyecto. Por defecto, Claude lee `AGENTS.md` solo cuando no tiene `CLAUDE.md` o `CLAUDE.local.md` en su directorio de trabajo o por encima de él. Verifique estos en orden:

625 

6261. Busque un `CLAUDE.md`, `.claude/CLAUDE.md`, o `CLAUDE.local.md` en su directorio de trabajo o en cualquier directorio por encima de él, excepto su `~/.claude/CLAUDE.md`. Si encuentra uno, Claude lo lee en lugar de `AGENTS.md` a menos que establezca **Project instructions** en `claude-md-and-agents-md`.

6272. Ejecute `claude --version` y confirme v2.1.277 o posterior.

6283. Verifique si su sesión es una que [no puede cargar `AGENTS.md`](#when-agents-md-support-is-unavailable), como una sesión en un proveedor de terceros o con telemetría deshabilitada.

6294. Escriba `/config` en su sesión para abrir el panel de configuración y confirme que **Project instructions** no está establecido en `claude-md` o `managed-only`. Si no ve la configuración allí en absoluto, su sesión es una que [no puede cargar `AGENTS.md`](#when-agents-md-support-is-unavailable).

630 

631`AGENTS.md` no aparece en `/memory` o `/context` cuando Claude lo lee directamente, así que busque la línea `AGENTS.md loaded` o pregúntele a Claude qué dicen sus instrucciones de proyecto en su lugar. Si desea mantener el `CLAUDE.md` que encontró, o su sesión no puede cargar `AGENTS.md`, [agregue un `CLAUDE.md` junto a su `AGENTS.md` que lo importe](#share-one-file-with-other-coding-tools).

632 

504<h3 id="i-don’t-know-what-auto-memory-saved">633<h3 id="i-don’t-know-what-auto-memory-saved">

505 No sé qué guardó auto memory634 No sé qué guardó auto memory

506</h3>635</h3>

mobile.md +16 −15

Details

6 6 

7> Inicie, supervise y dirija tareas de Claude Code desde su teléfono con la aplicación Claude para iOS y Android.7> Inicie, supervise y dirija tareas de Claude Code desde su teléfono con la aplicación Claude para iOS y Android.

8 8 

9La aplicación Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) y [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) es un cliente para sesiones de Claude Code en lugar de un lugar donde se ejecuta el código. Desde su teléfono accede a [sesiones en la nube](#start-and-monitor-cloud-sessions) en la nube, una sesión que se ejecuta en su propia máquina a través de [Control Remoto](#continue-a-local-session-with-remote-control), o la aplicación de Escritorio a través de [Dispatch](/docs/es/desktop#sessions-from-dispatch).9La aplicación Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) y [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) es un cliente para sesiones de Claude Code en lugar de un lugar donde se ejecuta el código. Desde su teléfono accede a [sesiones en la nube](#start-and-monitor-cloud-sessions) y [proyectos](/docs/es/claude-projects) en la nube, una sesión que se ejecuta en su propia máquina a través de [Control Remoto](#continue-a-local-session-with-remote-control), o la aplicación de Escritorio a través de [Dispatch](/docs/es/desktop#sessions-from-dispatch).

10 10 

11<Note>11<Note>

12 Claude Code no tiene una aplicación móvil separada: las sesiones en la nube y Control Remoto se encuentran en la pestaña **Code** en la aplicación Claude, y Dispatch es una tarea a la que envía mensajes en la aplicación.12 Claude Code no tiene una aplicación móvil separada: las sesiones en la nube y Control Remoto se encuentran en la pestaña **Code** en la aplicación Claude, y Dispatch es una tarea a la que envía mensajes en la aplicación.


21 Instale la aplicación Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). En un iPad, instale la misma aplicación de iOS.21 Instale la aplicación Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). En un iPad, instale la misma aplicación de iOS.

22 22 

23 <Tip>23 <Tip>

24 Ejecute `/mobile` en una sesión de Claude Code para mostrar un código QR de descarga que pueda escanear. `/ios` y `/android` hacen lo mismo.24 Ejecute `/mobile` en una sesión de Claude Code para mostrar un código QR para [claude.ai/mobile](https://claude.ai/mobile), que abre la tienda de aplicaciones correcta para su teléfono. `/ios` y `/android` hacen lo mismo.

25 </Tip>25 </Tip>

26 </Step>26 </Step>

27 27 


38 Trabajar desde su teléfono38 Trabajar desde su teléfono

39</h2>39</h2>

40 40 

41Desde la aplicación puede iniciar sesiones en la nube, dirigir una sesión de Claude Code que se ejecuta en su computadora, o enviar un mensaje a Dispatch con una tarea. La aplicación es la misma para los tres; difieren en dónde ocurre el trabajo.41Desde la aplicación puede iniciar sesiones en la nube, abrir un proyecto, dirigir una sesión de Claude Code que se ejecuta en su computadora, o enviar un mensaje a Dispatch con una tarea. La aplicación es la misma para cada uno; difieren en dónde ocurre el trabajo.

42 42 

43| Característica | A qué se conecta | Cuándo usar |43| Característica | A qué se conecta | Cuándo usar |

44| :-------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |44| :--------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

45| [Claude Code en la web](/docs/es/claude-code-on-the-web) | Una sesión en la nube en infraestructura en la nube, administrada por Anthropic de forma predeterminada | Su repositorio está en GitHub y la tarea debe continuar ejecutándose después de dejar su teléfono. Consulte el [inicio rápido web](/docs/es/web-quickstart) para configurar. |45| [Cloud sessions](/docs/es/claude-code-on-the-web) | Una sesión en infraestructura en la nube, administrada por Anthropic de forma predeterminada | Su repositorio está en GitHub y la tarea debe continuar ejecutándose después de dejar su teléfono. Consulte el [inicio rápido en la nube](/docs/es/web-quickstart) para configurar. |

46| [Control Remoto](/docs/es/remote-control) | Una sesión de Claude Code que se ejecuta en su computadora | El trabajo necesita su sistema de archivos local, herramientas o servidores MCP. |46| [Projects](/docs/es/claude-projects) | Una conversación donde Claude coordina sesiones en la nube paralelas como hilos | Tiene un flujo de trabajo relacionado en lugar de una tarea y desea ver qué hilos finalizaron o lo necesitan. |

47| [Remote Control](/docs/es/remote-control) | Una sesión de Claude Code que se ejecuta en su computadora | El trabajo necesita su sistema de archivos local, herramientas o servidores MCP. |

47| [Dispatch](/docs/es/desktop#sessions-from-dispatch) | La aplicación de Escritorio en su computadora | Desea enviar un mensaje con una tarea y dejar que Dispatch decida cómo ejecutarla. Requiere un plan Pro o Max. |48| [Dispatch](/docs/es/desktop#sessions-from-dispatch) | La aplicación de Escritorio en su computadora | Desea enviar un mensaje con una tarea y dejar que Dispatch decida cómo ejecutarla. Requiere un plan Pro o Max. |

48 49 

49Si su computadora estará apagada, use sesiones en la nube, que se ejecutan en la nube y continúan con su portátil cerrado. Control Remoto y Dispatch conducen su propia máquina, por lo que necesita mantenerse encendida con Claude Code o la aplicación de Escritorio en ejecución. Si su máquina entra en modo de suspensión durante una sesión de Control Remoto, Claude Code se reconecta cuando la máquina vuelve a estar en línea.50Si su computadora estará apagada, use cloud sessions o un proyecto, que se ejecutan en la nube y continúan con su portátil cerrado. Remote Control y Dispatch conducen su propia máquina, por lo que necesita mantenerse encendida con Claude Code o la aplicación de Escritorio en ejecución. Si su máquina entra en modo de suspensión durante una sesión de Remote Control, Claude Code se reconecta cuando la máquina vuelve a estar en línea.

50 51 

51Para una comparación más completa, consulte [trabajar cuando está lejos de su terminal](/docs/es/platforms#work-when-you-are-away-from-your-terminal).52Para una comparación más completa, consulte [trabajar cuando está lejos de su terminal](/docs/es/platforms#work-when-you-are-away-from-your-terminal).

52 53 

53Las sesiones en la nube y Control Remoto se ejecutan desde la pestaña **Code**. Para Dispatch, que envía mensajes como una tarea en la aplicación, consulte [sesiones desde Dispatch](/docs/es/desktop#sessions-from-dispatch).54Las cloud sessions y Remote Control se ejecutan desde la pestaña **Code**. Para Dispatch, que envía mensajes como una tarea en la aplicación, consulte [sesiones desde Dispatch](/docs/es/desktop#sessions-from-dispatch).

54 55 

55<h3 id="start-and-monitor-cloud-sessions">56<h3 id="start-and-monitor-cloud-sessions">

56 Iniciar y supervisar sesiones en la nube57 Iniciar y supervisar cloud sessions

57</h3>58</h3>

58 59 

59Claude Code en la web ejecuta tareas en infraestructura en la nube, administrada por Anthropic de forma predeterminada, por lo que una sesión continúa después de dejar su teléfono. Desde la pestaña Code, seleccione un repositorio y rama, describa la tarea y envíela. Las sesiones persisten en todos los dispositivos: una tarea que inicia en su portátil está lista para revisar desde su teléfono, y una que inicia desde su teléfono está esperando cuando regresa a su escritorio.60Las cloud sessions ejecutan tareas en infraestructura en la nube, administrada por Anthropic de forma predeterminada, por lo que una sesión continúa después de dejar su teléfono. Desde la pestaña Code, seleccione un repositorio y rama, describa la tarea y envíela. Las sesiones persisten en todos los dispositivos: una tarea que inicia en su portátil está lista para revisar desde su teléfono, y una que inicia desde su teléfono está esperando cuando regresa a su escritorio.

60 61 

61Abra una sesión en la aplicación para verificar el progreso, responder las preguntas de Claude o dirigirla en una nueva dirección. También puede indicarle a Claude que [observe una solicitud de extracción](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) y corrija fallos de CI o revise comentarios a medida que llegan. Para conectar GitHub y configurar su entorno, siga el [inicio rápido web](/docs/es/web-quickstart), y consulte [Claude Code en la web](/docs/es/claude-code-on-the-web) para todo lo que pueden hacer las sesiones en la nube.62Abra una sesión en la aplicación para verificar el progreso, responder las preguntas de Claude o dirigirla en una nueva dirección. También puede indicarle a Claude que [observe una solicitud de extracción](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) y corrija fallos de CI o revise comentarios a medida que llegan. Para conectar GitHub y configurar su entorno, siga el [inicio rápido en la nube](/docs/es/web-quickstart), y consulte [Use Claude Code in the cloud](/docs/es/claude-code-on-the-web) para todo lo que pueden hacer las cloud sessions.

62 63 

63<h3 id="continue-a-local-session-with-remote-control">64<h3 id="continue-a-local-session-with-remote-control">

64 Continuar una sesión local con Control Remoto65 Continuar una sesión local con Remote Control

65</h3>66</h3>

66 67 

67Control Remoto conecta la aplicación Claude a una sesión de Claude Code que se ejecuta en su máquina, por lo que la ejecución de código y el acceso al sistema de archivos permanecen locales mientras dirige la sesión desde su teléfono. Inicie la sesión en su computadora con `claude remote-control`, o ejecute `/remote-control` en una sesión que ya está abierta. Luego escanee el código QR de la sesión que la terminal puede mostrar, o abra la aplicación Claude, toque **Code**, y seleccione la sesión de la lista. Consulte [conectar desde otro dispositivo](/docs/es/remote-control#connect-from-another-device) para cada opción.68Remote Control conecta la aplicación Claude a una sesión de Claude Code que se ejecuta en su máquina, por lo que la ejecución de código y el acceso al sistema de archivos permanecen locales mientras dirige la sesión desde su teléfono. Inicie la sesión en su computadora con `claude remote-control`, o ejecute `/remote-control` en una sesión que ya está abierta. Luego escanee el código QR que la terminal puede mostrar, o abra la aplicación Claude, toque **Code**, y seleccione la sesión de la lista. Consulte [conectar desde otro dispositivo](/docs/es/remote-control#connect-from-another-device) para cada opción.

68 69 

69Cuando agrega un archivo adjunto en la aplicación Claude, también llega a la sesión local:70Cuando agrega un archivo adjunto en la aplicación Claude, también llega a la sesión local:

70 71 

71* **Fotos**: Claude ve las fotos adjuntas directamente como parte de su mensaje. Claude Code también guarda cada foto en `~/.claude/uploads/` y le dice a Claude la ruta del archivo guardado, por lo que Claude puede copiar la imagen en los archivos que crea.72* **Fotos**: Claude ve las fotos adjuntas directamente como parte de su mensaje. Claude Code también guarda cada foto en `~/.claude/uploads/` y le dice a Claude la ruta del archivo guardado, por lo que Claude puede copiar la imagen en los archivos que crea.

72* **Otros archivos**: Claude Code los descarga a su máquina y los pasa a Claude como referencias de archivo `@`.73* **Otros archivos**: Claude Code los descarga a su máquina y los pasa a Claude como referencias de archivo `@`.

73 74 

74Para requisitos, modos de invocación y solución de problemas, consulte la [descripción general de Control Remoto](/docs/es/remote-control).75Para requisitos, modos de invocación y solución de problemas, consulte la [descripción general de Remote Control](/docs/es/remote-control).

75 76 

76<h3 id="get-push-notifications">77<h3 id="get-push-notifications">

77 Obtener notificaciones push78 Obtener notificaciones push

78</h3>79</h3>

79 80 

80Cuando Control Remoto está activo, Claude puede enviar notificaciones push a su teléfono, típicamente cuando una tarea de larga duración finaliza o cuando necesita una decisión de usted. También puede solicitar una en su indicación, como `notify me when the tests finish`. Consulte [notificaciones push móviles](/docs/es/remote-control#mobile-push-notifications) para los dos cambios `/config` y solución de problemas de entrega.81Cuando Remote Control está activo, Claude puede enviar notificaciones push a su teléfono, típicamente cuando una tarea de larga duración finaliza o cuando necesita una decisión de usted. También puede solicitar una en su indicación, como `notify me when the tests finish`. Consulte [notificaciones push móviles](/docs/es/remote-control#mobile-push-notifications) para los dos cambios `/config` y solución de problemas de entrega.

81 82 

82Dispatch envía su propia notificación cuando una sesión de Code que generó finaliza o necesita su aprobación, descrito en [sesiones desde Dispatch](/docs/es/desktop#sessions-from-dispatch).83Dispatch envía su propia notificación cuando una sesión de Code que generó finaliza o necesita su aprobación, descrito en [sesiones desde Dispatch](/docs/es/desktop#sessions-from-dispatch).

83 84 

model-config.md +3 −3

Details

292| [Configuración administrada por servidor](/docs/es/server-managed-settings) desde la consola de administración | Aplicada | Aplicada | Aplicada | Aplicada | No entregada |292| [Configuración administrada por servidor](/docs/es/server-managed-settings) desde la consola de administración | Aplicada | Aplicada | Aplicada | Aplicada | No entregada |

293| [MDM o archivos de configuración administrada](/docs/es/managed-settings#delivery-mechanisms) | Aplicada | Aplicada | No entregada en entornos alojados por Anthropic; en [entornos autohospedados](/docs/es/self-hosted-environments), aplicada desde la imagen del ejecutor según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) | Aplicada | Aplicada donde se implementa |293| [MDM o archivos de configuración administrada](/docs/es/managed-settings#delivery-mechanisms) | Aplicada | Aplicada | No entregada en entornos alojados por Anthropic; en [entornos autohospedados](/docs/es/self-hosted-environments), aplicada desde la imagen del ejecutor según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) | Aplicada | Aplicada donde se implementa |

294 294 

295* Las sesiones en la nube, en [Claude Code en la web](/docs/es/claude-code-on-the-web) o en la aplicación de escritorio, se ejecutan en máquinas virtuales administradas por Anthropic de forma predeterminada: la configuración implementada en su dispositivo no las alcanza, por lo que entregue la lista de permitidos a través de configuración administrada por servidor. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en su propio cálculo y también leen el archivo de configuración administrada en la imagen del ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) indica cuándo se aplica ese archivo. Un cambio de modelo a mitad de sesión en una sesión en la nube se rechaza cuando el modelo solicitado está excluido por la lista de permitidos. El rechazo del lado del servidor en la creación de sesión se aplica a [restricciones de modelo de organización](#organization-model-restrictions), no a la clave de configuración `availableModels`.295* Las sesiones en la nube, en [Claude Code en la web](/docs/es/claude-code-on-the-web) o en la aplicación de escritorio, se ejecutan en máquinas virtuales administradas por Anthropic de forma predeterminada: la configuración implementada en su dispositivo no las alcanza, por lo que entregue la lista de permitidos a través de configuración administrada por servidor. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en su propio cálculo y también leen el archivo de configuración administrada en la imagen del ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) indica cuándo se aplica ese archivo. Un cambio de modelo a mitad de sesión en una sesión en la nube se rechaza cuando el modelo solicitado está excluido por la lista de permitidos. Cuando `availableModels` en su configuración administrada por servidor no está vacío, el servidor rechaza la solicitud de un usuario para iniciar una sesión en la nube en un modelo que la lista excluye.

296* Cowork, la pestaña de trabajo agéntico en la aplicación de escritorio de Claude, ejecuta sus sesiones en Claude Code pero, por diseño, no recibe configuración administrada por servidor desde la consola de administración de claude.ai. Un archivo de configuración administrada se aplica a sesiones de Cowork cuando está presente donde se ejecuta la sesión; las sesiones remotas de Cowork se ejecutan en máquinas virtuales administradas por Anthropic, donde un archivo implementado en el dispositivo no está presente.296* Cowork, la pestaña de trabajo agéntico en la aplicación de escritorio de Claude, ejecuta sus sesiones en Claude Code pero, por diseño, no recibe configuración administrada por servidor desde la consola de administración de claude.ai. Un archivo de configuración administrada se aplica a sesiones de Cowork cuando está presente donde se ejecuta la sesión; las sesiones remotas de Cowork se ejecutan en máquinas virtuales administradas por Anthropic, donde un archivo implementado en el dispositivo no está presente.

297* Las sesiones en [proveedores de terceros](/docs/es/server-managed-settings#platform-availability) como Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, y [Claude Platform en AWS](/docs/es/claude-platform-on-aws) no reciben configuración administrada por servidor, por lo que entregue la lista de permitidos a través de MDM o archivos de configuración administrada allí.297* Las sesiones en [proveedores de terceros](/docs/es/server-managed-settings#platform-availability) como Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, y [Claude Platform en AWS](/docs/es/claude-platform-on-aws) no reciben configuración administrada por servidor, por lo que entregue la lista de permitidos a través de MDM o archivos de configuración administrada allí.

298* La entrega administrada por servidor también requiere que la sesión se autentique con un [inicio de sesión o clave elegible](/docs/es/server-managed-settings#platform-availability). Las flotas que generan claves solo a través de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) deben entregar la lista de permitidos a través de MDM o archivos de configuración administrada.298* La entrega administrada por servidor también requiere que la sesión se autentique con un [inicio de sesión o clave elegible](/docs/es/server-managed-settings#platform-availability). Las flotas que generan claves solo a través de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) deben entregar la lista de permitidos a través de MDM o archivos de configuración administrada.

299* La pestaña de código de escritorio también aloja [sesiones SSH](/docs/es/desktop#ssh-sessions), que leen el archivo de configuración administrada del host remoto en el que se ejecutan. Consulte [Configuración administrada de escritorio](/docs/es/desktop#managed-settings).299* La pestaña de código de escritorio también aloja [sesiones SSH](/docs/es/desktop#ssh-sessions), que leen el archivo de configuración administrada del host remoto en el que se ejecutan. Consulte [Configuración administrada de escritorio](/docs/es/desktop#managed-settings).

300* Los selectores de modelos en claude.ai y en la aplicación de escritorio ocultan o atenúan los modelos excluidos por la lista de permitidos de su organización. El estado del selector es una conveniencia para los usuarios; la aplicación ocurre en la sesión.300* Los selectores de modelos en claude.ai y en la aplicación de escritorio ocultan o atenúan los modelos excluidos por la lista de permitidos de su organización. El estado del selector es una conveniencia para los usuarios; no aplica la lista de permitidos.

301 301 

302<h3 id="default-model-behavior">302<h3 id="default-model-behavior">

303 Comportamiento del modelo predeterminado303 Comportamiento del modelo predeterminado


376 376 

377La restricción se aplica cuando un miembro inicia sesión o usa su propia clave API. Las credenciales con alcance de organización, como las claves de servicio de organización, no están vinculadas a un usuario, por lo que la restricción no se aplica a ellas.377La restricción se aplica cuando un miembro inicia sesión o usa su propia clave API. Las credenciales con alcance de organización, como las claves de servicio de organización, no están vinculadas a un usuario, por lo que la restricción no se aplica a ellas.

378 378 

379La consola de Claude no tiene control de restricción de modelo. Las organizaciones sin un plan Claude Enterprise, incluidas las cuyos miembros se autentican a través de la API de Anthropic, restringen modelos con [`availableModels`](#restrict-model-selection) en [configuración administrada](/docs/es/managed-settings) en su lugar, agregando [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) para cubrir la opción Predeterminado. Estas configuraciones se aplican por Claude Code mismo, no por el servidor.379La consola de Claude no tiene control de restricción de modelo. Las organizaciones sin un plan Claude Enterprise, incluidas las cuyos miembros se autentican a través de la API de Anthropic, restringen modelos con [`availableModels`](#restrict-model-selection) en [configuración administrada](/docs/es/managed-settings) en su lugar, agregando [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) para cubrir la opción Predeterminado. [Cobertura de superficie](#surface-coverage) dice cómo cada superficie recibe y aplica estas configuraciones.

380 380 

381Un modelo restringido se oculta del selector `/model`. Seleccionarlo por nombre con `--model`, la variable de entorno `ANTHROPIC_MODEL`, o la configuración `model` muestra el aviso `Model "<name>" is restricted by your organization's settings. Using <model> instead.` y la sesión comienza en un modelo permitido. Escribir `/model <name>` para un modelo restringido se rechaza con `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` y la sesión mantiene su modelo actual.381Un modelo restringido se oculta del selector `/model`. Seleccionarlo por nombre con `--model`, la variable de entorno `ANTHROPIC_MODEL`, o la configuración `model` muestra el aviso `Model "<name>" is restricted by your organization's settings. Using <model> instead.` y la sesión comienza en un modelo permitido. Escribir `/model <name>` para un modelo restringido se rechaza con `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` y la sesión mantiene su modelo actual.

382 382 

Details

122| `OTEL_LOG_USER_PROMPTS` | Habilitar registro del contenido del mensaje del usuario (predeterminado: deshabilitado) | `1` para habilitar |122| `OTEL_LOG_USER_PROMPTS` | Habilitar registro del contenido del mensaje del usuario (predeterminado: deshabilitado) | `1` para habilitar |

123| `OTEL_LOG_ASSISTANT_RESPONSES` | Habilitar registro del texto de respuesta del asistente en eventos `assistant_response` (predeterminado: deshabilitado). Cuando no está establecido, recurre al valor de `OTEL_LOG_USER_PROMPTS`. Requiere Claude Code v2.1.193 o posterior | `1` para habilitar, `0` para mantener redactado |123| `OTEL_LOG_ASSISTANT_RESPONSES` | Habilitar registro del texto de respuesta del asistente en eventos `assistant_response` (predeterminado: deshabilitado). Cuando no está establecido, recurre al valor de `OTEL_LOG_USER_PROMPTS`. Requiere Claude Code v2.1.193 o posterior | `1` para habilitar, `0` para mantener redactado |

124| `OTEL_LOG_TOOL_DETAILS` | Habilitar registro de parámetros de herramientas e argumentos de entrada en eventos de herramientas y atributos de span de traza: comandos Bash, nombres de servidor MCP y herramienta, nombres de habilidades, nombres de flujo de trabajo creados por el usuario, e entrada de herramienta. También habilita nombres de comandos personalizados, de plugin y MCP en eventos `user_prompt` (predeterminado: deshabilitado). Para los servidores integrados de Claude Desktop, en sesiones que Claude Desktop posee, `mcp_server_name`/`mcp_tool_name` se emiten en `tool_decision`/`tool_result` incluso con la bandera desactivada. La excepción requiere Claude Code v2.1.214 o posterior | `1` para habilitar |124| `OTEL_LOG_TOOL_DETAILS` | Habilitar registro de parámetros de herramientas e argumentos de entrada en eventos de herramientas y atributos de span de traza: comandos Bash, nombres de servidor MCP y herramienta, nombres de habilidades, nombres de flujo de trabajo creados por el usuario, e entrada de herramienta. También habilita nombres de comandos personalizados, de plugin y MCP en eventos `user_prompt` (predeterminado: deshabilitado). Para los servidores integrados de Claude Desktop, en sesiones que Claude Desktop posee, `mcp_server_name`/`mcp_tool_name` se emiten en `tool_decision`/`tool_result` incluso con la bandera desactivada. La excepción requiere Claude Code v2.1.214 o posterior | `1` para habilitar |

125| `OTEL_LOG_TOOL_CONTENT` | Habilitar registro de contenido de entrada y salida de herramientas en eventos de span (predeterminado: deshabilitado). Requiere [trazas](#traces-beta). El contenido se trunca en el límite de contenido (60 KB por defecto) | `1` para habilitar |125| `OTEL_LOG_TOOL_CONTENT` | Habilitar registro de contenido de herramientas en el evento de span [`tool.output`](#tool-output-span-event) (predeterminado: deshabilitado). Los atributos de span llevan contenido de herramientas bajo [sus propias puertas](#new-context-gates). Requiere [trazas](#traces-beta). El contenido se trunca en el límite de contenido (60 KB por defecto) | `1` para habilitar |

126| `OTEL_LOG_RAW_API_BODIES` | Emitir el cuerpo completo de solicitud y respuesta JSON de la API de Mensajes de Anthropic como eventos de registro `api_request_body` / `api_response_body` (predeterminado: deshabilitado). Los cuerpos incluyen el historial de conversación completo. Habilitar esto implica consentimiento a todo lo que `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS`, y `OTEL_LOG_TOOL_CONTENT` revelarían | `1` para cuerpos en línea truncados en el límite de contenido (60 KB por defecto), o `file:<dir>` para cuerpos sin truncar en disco con un puntero `body_ref` en el evento |126| `OTEL_LOG_RAW_API_BODIES` | Emitir el cuerpo completo de solicitud y respuesta JSON de la API de Mensajes de Anthropic como eventos de registro `api_request_body` / `api_response_body` (predeterminado: deshabilitado). Los cuerpos incluyen el historial de conversación completo. Habilitar esto implica consentimiento a todo lo que `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS`, y `OTEL_LOG_TOOL_CONTENT` revelarían | `1` para cuerpos en línea truncados en el límite de contenido (60 KB por defecto), o `file:<dir>` para cuerpos sin truncar en disco con un puntero `body_ref` en el evento |

127| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Límite de contenido: la longitud máxima de atributos que contienen contenido como respuestas de modelo, contenido de herramientas, mensajes del sistema, y cuerpos de API sin procesar, incluido el marcador de truncamiento, en unidades de código UTF-16 (predeterminado: 61440, es decir, 60 KB). El predeterminado está dimensionado para backends que limitan valores de atributos a 64 KB; auméntalo solo si tu backend acepta valores más grandes, o redúcelo para cortar el volumen de telemetría. Cuando un límite de atributo del SDK de OpenTelemetry, `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` o uno de sus variantes de logrecord y span, se establece más bajo, Claude Code trunca en ese valor más pequeño para que el marcador `[TRUNCATED ...]` permanezca dentro del límite del SDK. Requiere Claude Code v2.1.214 o posterior | `262144` |127| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Límite de contenido: la longitud máxima de atributos que contienen contenido como respuestas de modelo, contenido de herramientas, mensajes del sistema, y cuerpos de API sin procesar, incluido el marcador de truncamiento, en unidades de código UTF-16 (predeterminado: 61440, es decir, 60 KB). El predeterminado está dimensionado para backends que limitan valores de atributos a 64 KB; auméntalo solo si tu backend acepta valores más grandes, o redúcelo para cortar el volumen de telemetría. Cuando un límite de atributo del SDK de OpenTelemetry, `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` o uno de sus variantes de logrecord y span, se establece más bajo, Claude Code trunca en ese valor más pequeño para que el marcador `[TRUNCATED ...]` permanezca dentro del límite del SDK. Requiere Claude Code v2.1.214 o posterior | `262144` |

128| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferencia de temporalidad de métricas (predeterminado: `delta`). Establece en `cumulative` si tu backend espera temporalidad acumulativa | `delta`, `cumulative` |128| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferencia de temporalidad de métricas (predeterminado: `delta`). Establece en `cumulative` si tu backend espera temporalidad acumulativa | `delta`, `cumulative` |


284| `skill_name` | Nombre de habilidad para la herramienta Skill | `OTEL_LOG_TOOL_DETAILS` |284| `skill_name` | Nombre de habilidad para la herramienta Skill | `OTEL_LOG_TOOL_DETAILS` |

285| `subagent_type` | Tipo de subagente para la herramienta Agent o herramienta Task heredada | `OTEL_LOG_TOOL_DETAILS` |285| `subagent_type` | Tipo de subagente para la herramienta Agent o herramienta Task heredada | `OTEL_LOG_TOOL_DETAILS` |

286 286 

287Cuando `OTEL_LOG_TOOL_CONTENT=1`, este span también registra un evento de span `tool.output` cuyos atributos contienen los cuerpos de entrada y salida de la herramienta, truncados en el límite de contenido (60 KB por defecto) por atributo.287<span id="tool-output-span-event" />**`tool.output` span event on `claude_code.tool`**

288 

289Si estableces `OTEL_LOG_TOOL_CONTENT=1`, las llamadas Read y Bash pueden registrar un evento de span `tool.output` en el span `claude_code.tool`. Las llamadas Edit y Write registran uno solo cuando también estableces `OTEL_LOG_TOOL_DETAILS=1`. Esa variable no está limitada a esas dos herramientas, así que verifica su [fila en la tabla de configuración](#common-configuration-variables) para los argumentos que agrega en otros lugares.

290 

291Claude Code escribe este evento desde el retorno exitoso de una llamada de herramienta, por lo que una llamada que genera un error no registra nada, sea cual sea la herramienta. Entre las llamadas que sí retornan, no registra un evento `tool.output` para:

292 

293* Una llamada a cualquier herramienta que no sea Read, Edit, Write, y Bash, incluyendo herramientas MCP y WebFetch

294* Un Read que retorna algo que no sea texto de archivo, como una imagen, un PDF, o una relectura de un archivo cuyo contenido no ha cambiado

295* Una llamada Edit o Write, a menos que también establezca `OTEL_LOG_TOOL_DETAILS=1`

296 

297El evento lleva estos atributos, cada uno truncado en el límite de contenido (60 KB por defecto). `Controlado Por` nombra la variable que un atributo necesita además de `OTEL_LOG_TOOL_CONTENT=1`, y para Edit y Write esa variable controla el evento en sí en lugar del atributo.

298 

299| Atributo | Descripción | Controlado Por |

300| -------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |

301| `content` | Texto que la herramienta Read retornó, o el texto que una llamada Write fue solicitada a escribir | `OTEL_LOG_TOOL_DETAILS` para la herramienta Write |

302| `output` | Salida combinada de un comando Bash, con stderr intercalado en stdout | |

303| `diff` | Parche estructurado que la herramienta Edit aplicó | `OTEL_LOG_TOOL_DETAILS` |

304| `file_path` | Ruta de archivo de destino para las herramientas Read, Edit, y Write, repitiendo el atributo de span del mismo nombre | `OTEL_LOG_TOOL_DETAILS` |

305| `bash_command` | Cadena de comando para la herramienta Bash | `OTEL_LOG_TOOL_DETAILS` |

306 

307El atributo `tool_name` del span padre te dice de qué herramienta vino un evento. Un atributo cortado en el límite de contenido va acompañado de `<attribute>_truncated` y `<attribute>_original_length`.

288 308 

289**`claude_code.tool.blocked_on_user`**309**`claude_code.tool.blocked_on_user`**

290 310 


323| `num_non_blocking_error` | Recuento de hooks que fallaron sin bloquear | |343| `num_non_blocking_error` | Recuento de hooks que fallaron sin bloquear | |

324| `num_cancelled` | Recuento de hooks cancelados antes de completarse | |344| `num_cancelled` | Recuento de hooks cancelados antes de completarse | |

325 345 

346<span id="new-context-gates" />

347 

326<Note>348<Note>

327 Atributos adicionales que contienen contenido como `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input`, y `response.model_output` se emiten solo cuando el trazado beta detallado está activo. No son parte del esquema de span estable.349 Atributos adicionales que contienen contenido como `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input`, y `response.model_output` se emiten solo cuando el trazado beta detallado está activo. No son parte del esquema de span estable.

328 350 

351 La puerta en `new_context` depende de qué span lo lleva, y cada copia se trunca en el límite de contenido (60 KB por defecto). En el span `claude_code.tool` lleva el resultado de esa llamada de herramienta, sea cual sea la herramienta, y requiere `OTEL_LOG_TOOL_CONTENT=1`. En el span `claude_code.interaction` lleva el mensaje del usuario, y en el span `claude_code.llm_request` los nuevos mensajes del usuario y resultados de herramientas de esa solicitud. Ambos requieren `OTEL_LOG_USER_PROMPTS=1`.

352 

329 `user_system_prompt` además requiere `OTEL_LOG_USER_PROMPTS=1`. Lleva solo el texto del mensaje del sistema que proporcionas a través de la opción `systemPrompt` del SDK o las banderas `--system-prompt` y `--append-system-prompt`, truncado en el límite de contenido (60 KB por defecto), y se emite una vez por sesión en lugar de por solicitud.353 `user_system_prompt` además requiere `OTEL_LOG_USER_PROMPTS=1`. Lleva solo el texto del mensaje del sistema que proporcionas a través de la opción `systemPrompt` del SDK o las banderas `--system-prompt` y `--append-system-prompt`, truncado en el límite de contenido (60 KB por defecto), y se emite una vez por sesión en lugar de por solicitud.

330</Note>354</Note>

331 355 


877* `body_truncated`: `"true"` cuando ocurrió truncamiento en línea. Ausente en modo de archivo y cuando no ocurrió truncamiento.901* `body_truncated`: `"true"` cuando ocurrió truncamiento en línea. Ausente en modo de archivo y cuando no ocurrió truncamiento.

878* `model`: Identificador de modelo de los parámetros de solicitud902* `model`: Identificador de modelo de los parámetros de solicitud

879* `query_source`: Subsistema que emitió la solicitud (por ejemplo, `"compact"`)903* `query_source`: Subsistema que emitió la solicitud (por ejemplo, `"compact"`)

904* `request_body_id`: UUID que identifica el cuerpo de solicitud de este intento. El evento [`api_response_body`](#api-response-body-event) para el intento que tiene éxito lleva el mismo valor, por lo que puede emparejar una respuesta con la solicitud exacta que la produjo. Requiere Claude Code v2.1.274 o posterior

880 905 

881<h4 id="api-response-body-event">906<h4 id="api-response-body-event">

882 Evento de cuerpo de respuesta de API907 Evento de cuerpo de respuesta de API


884 909 

885Se registra para cada respuesta de API exitosa cuando `OTEL_LOG_RAW_API_BODIES` está establecido.910Se registra para cada respuesta de API exitosa cuando `OTEL_LOG_RAW_API_BODIES` está establecido.

886 911 

912En modo de archivo (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code también añade una línea JSON a `<dir>/index.jsonl` para cada respuesta exitosa, con los campos `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, y `response_file`. Léalo para encontrar los archivos de solicitud y respuesta detrás de un mensaje de transcripción dado sin consultar su backend de telemetría. El archivo de índice requiere Claude Code v2.1.274 o posterior.

913 

887**Nombre del Evento**: `claude_code.api_response_body`914**Nombre del Evento**: `claude_code.api_response_body`

888 915 

889**Atributos**:916**Atributos**:


899* `model`: Identificador de modelo926* `model`: Identificador de modelo

900* `query_source`: Subsistema que emitió la solicitud927* `query_source`: Subsistema que emitió la solicitud

901* `request_id`: ID de solicitud de API de Anthropic del encabezado `request-id` de la respuesta, como `"req_011..."`. Presente solo cuando la API devuelve uno.928* `request_id`: ID de solicitud de API de Anthropic del encabezado `request-id` de la respuesta, como `"req_011..."`. Presente solo cuando la API devuelve uno.

929* `request_body_id`: El `request_body_id` del evento [`api_request_body`](#api-request-body-event) que esta respuesta responde. Requiere Claude Code v2.1.274 o posterior

930* `message.id`: ID de mensaje que la API asignó a la respuesta, el campo `id` del cuerpo de respuesta. Requiere Claude Code v2.1.274 o posterior

931* `message.uuid`: UUID de la entrada de transcripción final de la respuesta. Junto con `request_body_id`, vincula un mensaje de transcripción a los cuerpos de solicitud y respuesta detrás de él. Requiere Claude Code v2.1.274 o posterior

902 932 

903<h4 id="tool-decision-event">933<h4 id="tool-decision-event">

904 Evento de decisión de herramienta934 Evento de decisión de herramienta


1525* La exportación de OpenTelemetry a tu backend es opcional y requiere configuración explícita. Para la telemetría operativa separada de Anthropic y cómo deshabilitarla, consulta [Uso de datos](/docs/es/data-usage#telemetry-services)1555* La exportación de OpenTelemetry a tu backend es opcional y requiere configuración explícita. Para la telemetría operativa separada de Anthropic y cómo deshabilitarla, consulta [Uso de datos](/docs/es/data-usage#telemetry-services)

1526* Los contenidos de archivos sin procesar y fragmentos de código no se incluyen en métricas o eventos. Las trazas de span son una ruta de datos separada: consulta la viñeta `OTEL_LOG_TOOL_CONTENT` a continuación1556* Los contenidos de archivos sin procesar y fragmentos de código no se incluyen en métricas o eventos. Las trazas de span son una ruta de datos separada: consulta la viñeta `OTEL_LOG_TOOL_CONTENT` a continuación

1527* Cuando está autenticado a través de OAuth, `user.email` se incluye en atributos de telemetría, enviados solo al punto final de OTel que configures, nunca a Anthropic. Si esto es una preocupación para tu organización, trabaja con tu backend de telemetría para filtrar o redactar este campo1557* Cuando está autenticado a través de OAuth, `user.email` se incluye en atributos de telemetría, enviados solo al punto final de OTel que configures, nunca a Anthropic. Si esto es una preocupación para tu organización, trabaja con tu backend de telemetría para filtrar o redactar este campo

1528* El contenido del mensaje del usuario no se recopila por defecto. Solo se registra la longitud del mensaje. Para incluir contenido del mensaje, establece `OTEL_LOG_USER_PROMPTS=1`1558* El contenido del mensaje del usuario no se recopila por defecto. Solo se registra la longitud del mensaje. Para incluir contenido del mensaje, establece `OTEL_LOG_USER_PROMPTS=1`. Bajo el rastreo beta detallado, esta variable llega más lejos que el texto del mensaje: también controla el [atributo de span `new_context`](#new-context-gates), que lleva resultados de herramientas en el span `claude_code.llm_request`

1529* El texto de respuesta del asistente no se recopila por defecto. Solo se registra la longitud de la respuesta. Para incluir texto de respuesta, establece `OTEL_LOG_ASSISTANT_RESPONSES=1`. Como todos los datos de OpenTelemetry de Claude Code, el texto de respuesta se envía solo al punto final de OTel que configures, nunca a Anthropic. Cuando esta variable no está establecida, `OTEL_LOG_USER_PROMPTS` se utiliza como alternativa, así que establece `OTEL_LOG_ASSISTANT_RESPONSES=0` si deseas contenido de mensaje sin contenido de respuesta1559* El texto de respuesta del asistente no se recopila por defecto. Solo se registra la longitud de la respuesta. Para incluir texto de respuesta, establece `OTEL_LOG_ASSISTANT_RESPONSES=1`. Como todos los datos de OpenTelemetry de Claude Code, el texto de respuesta se envía solo al punto final de OTel que configures, nunca a Anthropic. Cuando esta variable no está establecida, `OTEL_LOG_USER_PROMPTS` se utiliza como alternativa, así que establece `OTEL_LOG_ASSISTANT_RESPONSES=0` si deseas contenido de mensaje sin contenido de respuesta

1530* Los argumentos de entrada de herramientas y parámetros no se registran por defecto. Para incluirlos, establece `OTEL_LOG_TOOL_DETAILS=1`. Para los servidores integrados de Claude Desktop, en sesiones que Claude Desktop posee, `tool_decision` y `tool_result` llevan el par `mcp_server_name`/`mcp_tool_name`, nombres creados por el host en lugar de contenido de argumentos, incluso con la bandera desactivada. La excepción requiere Claude Code v2.1.214 o posterior. Estos datos se envían solo al punto final de OTEL que configures, nunca a Anthropic. Los argumentos aún pueden contener valores sensibles, así que configura tu backend de telemetría para filtrar o redactar estos atributos según sea necesario. Cuando está habilitado:1560* Los argumentos de entrada de herramientas y parámetros no se registran por defecto. Para incluirlos, establece `OTEL_LOG_TOOL_DETAILS=1`. Para los servidores integrados de Claude Desktop, en sesiones que Claude Desktop posee, `tool_decision` y `tool_result` llevan el par `mcp_server_name`/`mcp_tool_name`, nombres creados por el host en lugar de contenido de argumentos, incluso con la bandera desactivada. La excepción requiere Claude Code v2.1.214 o posterior. Estos datos se envían solo al punto final de OTEL que configures, nunca a Anthropic. Los argumentos aún pueden contener valores sensibles, así que configura tu backend de telemetría para filtrar o redactar estos atributos según sea necesario. Cuando está habilitado:

1531 * Los eventos `tool_result` y `tool_decision` incluyen un atributo `tool_parameters` con comandos Bash, nombres de servidor MCP y herramienta, y nombres de skills. Los campos como `full_command` se emiten sin truncar1561 * Los eventos `tool_result` y `tool_decision` incluyen un atributo `tool_parameters` con comandos Bash, nombres de servidor MCP y herramienta, y nombres de skills. Los campos como `full_command` se emiten sin truncar

1532 * Los eventos `tool_result` además incluyen un atributo `tool_input` con rutas de archivo, URLs, patrones de búsqueda y otros argumentos. Los valores individuales superiores a 512 caracteres se truncan y el total está limitado a aproximadamente 4 K caracteres1562 * Los eventos `tool_result` además incluyen un atributo `tool_input` con rutas de archivo, URLs, patrones de búsqueda y otros argumentos. Los valores individuales superiores a 512 caracteres se truncan y el total está limitado a aproximadamente 4 K caracteres

1533 * Los eventos `user_prompt` incluyen el `command_name` verbatim para comandos personalizados, de plugin y MCP1563 * Los eventos `user_prompt` incluyen el `command_name` verbatim para comandos personalizados, de plugin y MCP

1534 * Los spans de traza incluyen el mismo atributo `tool_input` e atributos derivados de entrada como `file_path`, con el mismo truncamiento que `tool_input`1564 * Los spans de traza incluyen el mismo atributo `tool_input` e atributos derivados de entrada como `file_path`, con el mismo truncamiento que `tool_input`

1535* El contenido de entrada y salida de herramientas no se registra en spans de trazas por defecto. Para incluirlo, establece `OTEL_LOG_TOOL_CONTENT=1`. Cuando está habilitado, los eventos de span incluyen contenido completo de entrada y salida de herramientas truncado en el límite de contenido (60 KB por defecto) por atributo. Esto puede incluir contenidos de archivo sin procesar de resultados de herramienta Read y salida de comandos Bash. Configura tu backend de telemetría para filtrar o redactar estos atributos según sea necesario1565* El contenido de herramientas no se registra en spans de trazas por defecto. Para incluirlo, establece `OTEL_LOG_TOOL_CONTENT=1`. El span `claude_code.tool` entonces lleva un [evento de span `tool.output`](#tool-output-span-event) con contenidos de archivo sin procesar y salida de comandos Bash, truncado en el límite de contenido (60 KB por defecto) por atributo. El contenido de herramientas también llega a los spans a través de [`new_context`, cuya puerta difiere por span](#new-context-gates). Configura tu backend de telemetría para filtrar o redactar estos atributos según sea necesario

1536* Los cuerpos de solicitud y respuesta de la API de Mensajes de Anthropic sin procesar no se registran por defecto. Para incluirlos, establece `OTEL_LOG_RAW_API_BODIES` en tu shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Los cuerpos contienen el historial de conversación completo, incluido el mensaje del sistema, cada turno anterior de usuario y asistente, y resultados de herramientas, así que habilitar esto implica consentimiento a todo lo que las otras banderas de contenido `OTEL_LOG_*` revelarían. Claude Code siempre redacta el contenido de pensamiento extendido de Claude de estos cuerpos, independientemente de otras configuraciones. El valor que estableces determina cómo Claude Code entrega los cuerpos:1566* Los cuerpos de solicitud y respuesta de la API de Mensajes de Anthropic sin procesar no se registran por defecto. Para incluirlos, establece `OTEL_LOG_RAW_API_BODIES` en tu shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Los cuerpos contienen el historial de conversación completo, incluido el mensaje del sistema, cada turno anterior de usuario y asistente, y resultados de herramientas, así que habilitar esto implica consentimiento a todo lo que las otras banderas de contenido `OTEL_LOG_*` revelarían. Claude Code siempre redacta el contenido de pensamiento extendido de Claude de estos cuerpos, independientemente de otras configuraciones. El valor que estableces determina cómo Claude Code entrega los cuerpos:

1537 * Con `=1`, Claude Code emite eventos de registro `api_request_body` y `api_response_body` para cada llamada de API. El atributo `body` de los eventos lleva la carga útil serializada en JSON, truncada en el límite de contenido (60 KB por defecto)1567 * Con `=1`, Claude Code emite eventos de registro `api_request_body` y `api_response_body` para cada llamada de API. El atributo `body` de los eventos lleva la carga útil serializada en JSON, truncada en el límite de contenido (60 KB por defecto)

1538 * Con `=file:<dir>`, Claude Code escribe cuerpos sin truncar en archivos `.request.json` y `.response.json` bajo ese directorio, y los eventos llevan una ruta `body_ref` en su lugar del cuerpo en línea. Envía el directorio con un recopilador de registros o sidecar en lugar de a través del flujo de telemetría1568 * Con `=file:<dir>`, Claude Code escribe cuerpos sin truncar en archivos `.request.json` y `.response.json` bajo ese directorio, y los eventos llevan una ruta `body_ref` en su lugar del cuerpo en línea. Envía el directorio con un recopilador de registros o sidecar en lugar de a través del flujo de telemetría.

1569 

1570 Para cada respuesta exitosa, Claude Code también añade una línea a `index.jsonl` en ese directorio, vinculando el archivo de respuesta al archivo de solicitud que lo produjo y al mensaje de transcripción en el que se convirtió. Cada línea no contiene contenido de mensaje, y la sección [evento de cuerpo de respuesta de API](#api-response-body-event) enumera sus campos. El archivo de índice requiere Claude Code v2.1.274 o posterior

1539 1571 

1540<h2 id="monitor-claude-code-on-amazon-bedrock">1572<h2 id="monitor-claude-code-on-amazon-bedrock">

1541 Monitorear Claude Code en Amazon Bedrock1573 Monitorear Claude Code en Amazon Bedrock

Details

34 34 

35Elija un estilo de una de estas formas:35Elija un estilo de una de estas formas:

36 36 

37* **Comando `/output-style`**: ejecute `/output-style <style>` para cambiar, por ejemplo `/output-style concise`. Sin argumentos, el comando enumera los estilos que puede elegir y marca el actual. Claude Code guarda su selección en `.claude/settings.local.json` en el [nivel de proyecto local](/docs/es/settings).

38 

39 El comando también funciona en [modo no interactivo](/docs/es/headless) y sesiones de Agent SDK, y desde la aplicación móvil o web a través de [Control Remoto](/docs/es/remote-control#limitations), donde puede enumerar y seleccionar solo [estilos integrados](#built-in-output-styles). Requiere Claude Code v2.1.269 o posterior.

37* **Terminal**: ejecute `/config` y seleccione **Output style** para elegir un estilo de un menú. Claude Code guarda su selección en `.claude/settings.local.json` en el [nivel de proyecto local](/docs/es/settings).40* **Terminal**: ejecute `/config` y seleccione **Output style** para elegir un estilo de un menú. Claude Code guarda su selección en `.claude/settings.local.json` en el [nivel de proyecto local](/docs/es/settings).

38* **Extensión de VS Code**: abra el [menú de comandos](/docs/es/vs-code#use-the-prompt-box) con `/` y seleccione **Output styles** para elegir un estilo, incluidos sus estilos personalizados. Claude Code guarda su selección en `.claude/settings.local.json`, el mismo archivo que escribe el menú de terminal. Requiere Claude Code v2.1.257 o posterior.41* **Extensión de VS Code**: abra el [menú de comandos](/docs/es/vs-code#use-the-prompt-box) con `/` y seleccione **Output styles** para elegir un estilo, incluidos sus estilos personalizados. Claude Code guarda su selección en `.claude/settings.local.json`, el mismo archivo que escribe el menú de terminal. Requiere Claude Code v2.1.257 o posterior.

39* **Aplicación de escritorio**: establezca el campo `outputStyle` en un archivo de configuración, por ejemplo `.claude/settings.local.json`, el archivo que escribe el menú de terminal. Cuando ejecute `/config` allí, Claude Code [abre **Settings > Claude Code**](/docs/es/desktop#what%E2%80%99s-not-available-in-desktop) en lugar de un menú.42* **Aplicación de escritorio**: establezca el campo `outputStyle` en un archivo de configuración, por ejemplo `.claude/settings.local.json`, el archivo que escribe el menú de terminal. Cuando ejecute `/config` allí, Claude Code [abre **Settings > Claude Code**](/docs/es/desktop#what%E2%80%99s-not-available-in-desktop) en lugar de un menú.

40 43 

41<Note>El comando independiente `/output-style` quedó obsoleto en v2.1.73 y se eliminó en v2.1.91. Utilice `/config` o edite la configuración `outputStyle` directamente.</Note>

42 

43Para establecer un estilo sin el menú, edite el campo `outputStyle` directamente en un archivo de configuración:44Para establecer un estilo sin el menú, edite el campo `outputStyle` directamente en un archivo de configuración:

44 45 

45```json theme={null}46```json theme={null}


90 </Step>91 </Step>

91 92 

92 <Step title="Cambiar a su estilo">93 <Step title="Cambiar a su estilo">

93 Ejecute `/config` en la terminal y seleccione su estilo bajo **Output style**. Claude utiliza el nuevo estilo a partir de su próximo mensaje. En la terminal, Claude Code lee archivos de estilo cuando se inicia, por lo que si crea o edita uno durante una sesión en ejecución, reinicie Claude Code para aplicar el cambio.94 Ejecute `/output-style <style>` en la terminal, o ejecute `/config` y seleccione su estilo bajo **Output style**. Claude utiliza el nuevo estilo a partir de su próximo mensaje. En la terminal, Claude Code lee archivos de estilo cuando se inicia, por lo que si crea o edita uno durante una sesión en ejecución, reinicie Claude Code para aplicar el cambio.

94 </Step>95 </Step>

95</Steps>96</Steps>

96 97 

overview.md +5 −5

Details

117 </Tab>117 </Tab>

118 118 

119 <Tab title="Web">119 <Tab title="Web">

120 Ejecuta Claude Code en tu navegador sin configuración local. Inicia tareas de larga duración y vuelve cuando estén listas, trabaja en repositorios que no tienes localmente o ejecuta múltiples tareas en paralelo. Disponible en navegadores de escritorio y [la aplicación Claude para iOS y Android](/docs/es/mobile).120 Ejecuta Claude Code en tu navegador sin configuración local. Inicia tareas de larga duración y vuelve cuando estén listas, trabaja en repositorios que no tienes localmente o ejecuta múltiples tareas en paralelo. Para un cuerpo de trabajo más largo, crea un [proyecto](/docs/es/claude-projects) y deja que Claude coordine las sesiones paralelas por ti. Disponible en navegadores de escritorio y [la aplicación Claude para iOS y Android](/docs/es/mobile).

121 121 

122 Comienza a codificar en [claude.ai/code](https://claude.ai/code).122 Comienza a codificar en [claude.ai/code](https://claude.ai/code).

123 123 

124 [Comenzar en la web →](/docs/es/web-quickstart)124 [Comenzar →](/docs/es/web-quickstart)

125 </Tab>125 </Tab>

126 126 

127 <Tab title="JetBrains">127 <Tab title="JetBrains">


169 </Accordion>169 </Accordion>

170 170 

171 <Accordion title="Personaliza con instrucciones, skills y hooks" icon="sliders">171 <Accordion title="Personaliza con instrucciones, skills y hooks" icon="sliders">

172 [`CLAUDE.md`](/docs/es/memory) es un archivo markdown que añades a la raíz de tu proyecto que Claude Code lee al inicio de cada sesión. Úsalo para establecer estándares de codificación, decisiones de arquitectura, librerías preferidas y listas de verificación de revisión. Claude también construye [memoria automática](/docs/es/memory#auto-memory) mientras trabaja, guardando aprendizajes en sesiones sin que escribas nada.172 [`CLAUDE.md`](/docs/es/memory) es un archivo markdown que añades a la raíz de tu proyecto que Claude Code lee al inicio de cada sesión. Úsalo para establecer estándares de codificación, decisiones de arquitectura, librerías preferidas y listas de verificación de revisión. Si tu repositorio ya tiene un `AGENTS.md` para otros agentes de codificación, Claude Code [puede leerlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. Claude también construye [memoria automática](/docs/es/memory#auto-memory) mientras trabaja, guardando aprendizajes en sesiones sin que escribas nada.

173 173 

174 Crea [skills](/docs/es/skills) para empaquetar flujos de trabajo repetibles que tu equipo pueda compartir, como `/review-pr` o `/deploy-staging`.174 Crea [skills](/docs/es/skills) para empaquetar flujos de trabajo repetibles que tu equipo pueda compartir, como `/review-pr` o `/deploy-staging`.

175 175 


227Más allá de los entornos [Terminal](/docs/es/quickstart), [VS Code](/docs/es/vs-code), [JetBrains](/docs/es/jetbrains), [Desktop](/docs/es/desktop) y [Web](/docs/es/claude-code-on-the-web) anteriores, Claude Code se integra con flujos de trabajo de CI/CD, chat y navegador:227Más allá de los entornos [Terminal](/docs/es/quickstart), [VS Code](/docs/es/vs-code), [JetBrains](/docs/es/jetbrains), [Desktop](/docs/es/desktop) y [Web](/docs/es/claude-code-on-the-web) anteriores, Claude Code se integra con flujos de trabajo de CI/CD, chat y navegador:

228 228 

229| Quiero... | Mejor opción |229| Quiero... | Mejor opción |

230| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |230| ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |

231| Continuar una sesión local desde mi teléfono u otro dispositivo | [Remote Control](/docs/es/remote-control) |231| Continuar una sesión local desde mi teléfono u otro dispositivo | [Remote Control](/docs/es/remote-control) |

232| Enviar eventos desde Telegram, Discord, iMessage o mis propios webhooks a una sesión | [Channels](/docs/es/channels) |232| Enviar eventos desde Telegram, Discord, iMessage o mis propios webhooks a una sesión | [Channels](/docs/es/channels) |

233| Iniciar una tarea localmente, continuar en móvil | [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-web), luego la [aplicación móvil Claude](/docs/es/mobile) |233| Iniciar una tarea localmente, continuar en móvil | [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud), luego la [aplicación móvil Claude](/docs/es/mobile) |

234| Ejecutar Claude en un horario recurrente | [Routines](/docs/es/routines) o [Tareas programadas de escritorio](/docs/es/desktop-scheduled-tasks) |234| Ejecutar Claude en un horario recurrente | [Routines](/docs/es/routines) o [Tareas programadas de escritorio](/docs/es/desktop-scheduled-tasks) |

235| Automatizar revisiones de PR y clasificación de problemas | [GitHub Actions](/docs/es/github-actions) o [GitLab CI/CD](/docs/es/gitlab-ci-cd) |235| Automatizar revisiones de PR y clasificación de problemas | [GitHub Actions](/docs/es/github-actions) o [GitLab CI/CD](/docs/es/gitlab-ci-cd) |

236| Obtener revisión de código automática en cada PR | [GitHub Code Review](/docs/es/code-review) |236| Obtener revisión de código automática en cada PR | [GitHub Code Review](/docs/es/code-review) |

Details

14 Modos disponibles14 Modos disponibles

15</h2>15</h2>

16 16 

17Cada modo realiza un equilibrio diferente entre conveniencia y supervisión. La tabla a continuación muestra qué puede hacer Claude sin un aviso de permiso en cada modo. El modo Manual aparece bajo su valor de configuración, `default`.17Cada modo hace un compromiso diferente entre conveniencia y supervisión. La tabla a continuación muestra qué puede hacer Claude sin un aviso de permiso en cada modo. El modo manual aparece bajo su valor de configuración, `default`.

18 18 

19| Modo | Qué se ejecuta sin preguntar | Mejor para |19| Modo | Qué se ejecuta sin preguntar | Mejor para |

20| :------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------ |20| :------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------ |

21| `default` | Solo lecturas | Revisar cada acción usted mismo, trabajo sensible |21| `default` | Solo lecturas | Revisar cada acción usted mismo, trabajo sensible |

22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Lecturas, ediciones de archivos y comandos comunes del sistema de archivos (`mkdir`, `touch`, `mv`, `cp`, etc.) | Iterar sobre código que está revisando |22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Lecturas, ediciones de archivos y comandos comunes del sistema de archivos (`mkdir`, `touch`, `mv`, `cp`, etc.) | Iterar sobre código que está revisando |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lecturas, más comandos aprobados por clasificador cuando [modo automático](#eliminate-prompts-with-auto-mode) está disponible | Explorar una base de código antes de cambiarla |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lecturas, más comandos aprobados por clasificador cuando [modo automático](#eliminate-prompts-with-auto-mode) está disponible | Explorar una base de código antes de cambiarla |

24| [`auto`](#eliminate-prompts-with-auto-mode) | Todo, con comprobaciones de seguridad en segundo plano | Tareas largas, reducir fatiga de avisos |24| [`auto`](#eliminate-prompts-with-auto-mode) | Todo, con verificaciones de seguridad en segundo plano | Tareas largas, reducir fatiga de avisos |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Lecturas y herramientas preaprobadas; cualquier cosa que generaría un aviso se deniega | CI bloqueado y scripts |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Lecturas y herramientas preaprobadas; cualquier cosa que generaría un aviso se deniega | CI bloqueado y scripts |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Todo | Solo contenedores aislados y máquinas virtuales |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Todo | Solo contenedores aislados y máquinas virtuales |

27 27 

28El modo que revisa cada acción se llama **Manual** en la CLI, en `claude --help`, en las extensiones de VS Code y JetBrains, y en la aplicación de escritorio. Su valor de configuración es `default`, que es lo que utilizan los hooks e integraciones de SDK. La CLI acepta `manual` como un alias en cualquier lugar donde escriba el valor, por ejemplo `claude --permission-mode manual` o `"defaultMode": "manual"`. La etiqueta Manual y el alias `manual` requieren Claude Code v2.1.200 o posterior. La etiqueta de la aplicación de escritorio no depende de su versión de CLI.28El modo que revisa cada acción se llama **Manual** en la CLI, en `claude --help`, en las extensiones de VS Code y JetBrains, y en la aplicación de escritorio. Su valor de configuración es `default`, que es lo que usan los hooks e integraciones de SDK. La CLI acepta `manual` como un alias dondequiera que escriba el valor, por ejemplo `claude --permission-mode manual` o `"defaultMode": "manual"`. La etiqueta Manual y el alias `manual` requieren Claude Code v2.1.200 o posterior. La etiqueta de la aplicación de escritorio no depende de su versión de CLI.

29 29 

30Las escrituras en [rutas protegidas](#protected-paths) nunca se aprueban automáticamente excepto en modo `bypassPermissions` y en sesiones de modo plan donde los permisos de omisión están disponibles, lo que significa sesiones iniciadas de una manera que [pone `bypassPermissions` en el ciclo de modo](#switch-permission-modes).30Las escrituras en [rutas protegidas](#protected-paths) nunca se aprueban automáticamente excepto en modo `bypassPermissions` y en sesiones de modo plan donde los permisos de omisión están disponibles, lo que significa sesiones de terminal interactivas iniciadas de una manera que [pone `bypassPermissions` en el ciclo de modo](#switch-permission-modes).

31 31 

32Los modos establecen la línea base. Superponga [reglas de permisos](/docs/es/permissions#manage-permissions) en la parte superior para preaprobación o bloqueo de herramientas específicas. Las reglas de denegación bloquean en todos los modos, incluido `bypassPermissions`. Las reglas de denegación y solicitud no se aplican a [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) siempre que Claude aún tenga al menos otra herramienta que pueda llamar. Las reglas de permitir no tienen efecto en `bypassPermissions`.32Los modos establecen la línea base. Superponga [reglas de permiso](/docs/es/permissions#manage-permissions) encima para preaprobación o bloqueo de herramientas específicas. Las reglas de denegación bloquean en cada modo, incluido `bypassPermissions`. Las reglas de denegación y pregunta no se aplican a [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) siempre que Claude aún tenga al menos otra herramienta que pueda llamar. Las reglas de permiso no tienen efecto en `bypassPermissions`.

33 33 

34<h3 id="actions-no-mode-auto-approves">34<h3 id="actions-no-mode-auto-approves">

35 Acciones que ningún modo aprueba automáticamente35 Acciones que ningún modo aprueba automáticamente


37 37 

38Claude Code no aprueba automáticamente lo siguiente en ningún modo, incluido `bypassPermissions`. Cada viñeta enlaza a la sección que dice qué sucede en su lugar en cada modo:38Claude Code no aprueba automáticamente lo siguiente en ningún modo, incluido `bypassPermissions`. Cada viñeta enlaza a la sección que dice qué sucede en su lugar en cada modo:

39 39 

40* Herramientas coincidentes por una [regla de solicitud](/docs/es/permissions#manage-permissions) explícita40* Herramientas coincidentes por una [regla de pregunta](/docs/es/permissions#manage-permissions) explícita

41* Herramientas de conector que su organización [estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools), en sesiones donde esa configuración llega a Claude Code41* Herramientas de conector que su organización [estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools), en sesiones donde esa configuración llega a Claude Code

42* Herramientas que requieren interacción del usuario: la herramienta integrada `AskUserQuestion` y herramientas MCP marcadas [`requiresUserInteraction`](/docs/es/mcp#require-approval-for-a-specific-tool)42* Herramientas que requieren interacción del usuario: la herramienta integrada `AskUserQuestion` y herramientas MCP marcadas [`requiresUserInteraction`](/docs/es/mcp#require-approval-for-a-specific-tool)

43* Eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), que ninguna regla de permitir o hook `PreToolUse` con `"allow"` aprueba43* Eliminaciones de `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), que ninguna regla de permiso o hook `PreToolUse` `"allow"` aprueba

44* Las [salvaguardas de mensajería entre sesiones](#skip-all-checks-with-bypasspermissions-mode)44* Las [salvaguardas de mensajería entre sesiones](#skip-all-checks-with-bypasspermissions-mode)

45* Lecturas fuera de los directorios de trabajo mientras [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) está activado: comandos Bash reconocidos de lectura de archivos y cualquier [reintento sin sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch) que necesita aprobación para ejecutarse fuera del sandbox incluso en modo automático y modo `bypassPermissions`. Requiere Claude Code v2.1.257 o posterior45* Lecturas fuera de los directorios de trabajo mientras [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) está activado: los comandos Bash reconocidos de lectura de archivos generan avisos incluso en modo automático y modo `bypassPermissions`, y también lo hace cualquier [reintento sin sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch) que necesita aprobación para ejecutarse fuera del sandbox. Requiere Claude Code v2.1.257 o posterior.

46 

47 Un comando que el analizador de shell no puede rastrear, como uno que cambia de directorio más de una vez o ejecuta un subshell, genera avisos de la misma manera incluso cuando no nombra ninguna ruta externa. Este aviso no se aplica cuando el comando se ejecuta en el [sandbox](/docs/es/sandboxing) y el sandbox aplica el bloqueo.

46 48 

47<h2 id="common-setups">49<h2 id="common-setups">

48 Configuraciones comunes50 Configuraciones comunes


56| Iterar localmente con menos avisos, sin un clasificador | Modo Manual más el sandbox Bash en [modo de permitir automático](/docs/es/sandboxing#sandbox-modes): `claude --permission-mode default`, luego ejecute `/sandbox` y seleccione permitir automático | El sandbox Bash integrado, en macOS, Linux y WSL2 | Las reglas de denegación aún se aplican, y las reglas de solicitud que nombran un comando, como `Bash(git push *)`, aún solicitan. Para activar el sandbox desde un archivo de configuración en su lugar, establezca [`sandbox.enabled`](/docs/es/settings-reference#sandbox-enabled) en `true` |58| Iterar localmente con menos avisos, sin un clasificador | Modo Manual más el sandbox Bash en [modo de permitir automático](/docs/es/sandboxing#sandbox-modes): `claude --permission-mode default`, luego ejecute `/sandbox` y seleccione permitir automático | El sandbox Bash integrado, en macOS, Linux y WSL2 | Las reglas de denegación aún se aplican, y las reglas de solicitud que nombran un comando, como `Bash(git push *)`, aún solicitan. Para activar el sandbox desde un archivo de configuración en su lugar, establezca [`sandbox.enabled`](/docs/es/settings-reference#sandbox-enabled) en `true` |

57| Explorar antes de cambiar nada | `claude --permission-mode plan` | Ninguno | Claude Code bloquea ediciones hasta que [apruebe un plan](#review-and-approve-a-plan) |59| Explorar antes de cambiar nada | `claude --permission-mode plan` | Ninguno | Claude Code bloquea ediciones hasta que [apruebe un plan](#review-and-approve-a-plan) |

58| Trabajar sin intervención en modo automático | `claude --permission-mode auto`, el [modo de permisos inicial integrado](#which-mode-a-session-starts-in) en Pro, Max y Team | Ninguno; un sandbox o contenedor agrega defensa en profundidad | Requiere un [modelo compatible](#eliminate-prompts-with-auto-mode), y su organización puede [desactivar modo automático](#eliminate-prompts-with-auto-mode) |60| Trabajar sin intervención en modo automático | `claude --permission-mode auto`, el [modo de permisos inicial integrado](#which-mode-a-session-starts-in) en Pro, Max y Team | Ninguno; un sandbox o contenedor agrega defensa en profundidad | Requiere un [modelo compatible](#eliminate-prompts-with-auto-mode), y su organización puede [desactivar modo automático](#eliminate-prompts-with-auto-mode) |

59| Ejecutar en CI con una lista de permitidos exacta | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | Ninguno más allá de lo que proporciona su ejecutor de CI | [Claude Code en la web](/docs/es/claude-code-on-the-web) ignora `dontAsk` de archivos de configuración |61| Ejecutar en CI con una lista de permitidos exacta | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | Ninguno más allá de lo que proporciona su ejecutor de CI | [Cloud sessions](/docs/es/claude-code-on-the-web) ignora `dontAsk` de archivos de configuración |

60| Ejecutar completamente desatendido dentro de un contenedor | `claude -p "<prompt>" --dangerously-skip-permissions` | Requerido: un contenedor, máquina virtual o el [tiempo de ejecución del sandbox](/docs/es/sandbox-environments#sandbox-runtime); en Linux y macOS, ejecútelo como un [usuario no root](#skip-all-checks-with-bypasspermissions-mode) | Claude Code en la web ignora este modo de archivos de configuración. En esta ejecución `-p`, las [pocas llamadas que aún solicitarían](#skip-all-checks-with-bypasspermissions-mode) se deniegan en su lugar |62| Ejecutar completamente desatendido dentro de un contenedor | `claude -p "<prompt>" --dangerously-skip-permissions` | Requerido: un contenedor, máquina virtual o el [tiempo de ejecución del sandbox](/docs/es/sandbox-environments#sandbox-runtime); en Linux y macOS, ejecútelo como un [usuario no root](#skip-all-checks-with-bypasspermissions-mode) | Cloud sessions ignora este modo de archivos de configuración. En esta ejecución `-p`, las [pocas llamadas que aún solicitarían](#skip-all-checks-with-bypasspermissions-mode) se deniegan en su lugar |

61 63 

62El sandbox Bash y el modo automático funcionan independientemente y se combinan, excepto en modo plan, donde [permitir automático no amplía aprobaciones](/docs/es/sandboxing#sandbox-modes). Para la interacción completa, consulte [Cómo el sandboxing se relaciona con permisos y modos de permisos](/docs/es/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes) y [Cómo el aislamiento se relaciona con modos de permisos](/docs/es/sandbox-environments#how-isolation-relates-to-permission-modes).64El sandbox Bash y el modo automático funcionan independientemente y se combinan, con las excepciones enumeradas en [Modos de sandbox](/docs/es/sandboxing#sandbox-modes). Para la interacción completa, consulte [Cómo el sandboxing se relaciona con permisos y modos de permisos](/docs/es/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes) y [Cómo el aislamiento se relaciona con modos de permisos](/docs/es/sandbox-environments#how-isolation-relates-to-permission-modes).

63 65 

64<h2 id="which-mode-a-session-starts-in">66<h2 id="which-mode-a-session-starts-in">

65 Qué modo inicia una sesión67 Qué modo inicia una sesión


326 328 

327En v2.1.158 a v2.1.206, el modo automático estaba desactivado en estos proveedores hasta que establecía `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, y Claude Code ignoraba `defaultMode: "auto"` en estos proveedores a menos que la variable también estuviera establecida. La variable aún se acepta por compatibilidad y no tiene efecto desde v2.1.207 en adelante.329En v2.1.158 a v2.1.206, el modo automático estaba desactivado en estos proveedores hasta que establecía `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, y Claude Code ignoraba `defaultMode: "auto"` en estos proveedores a menos que la variable también estuviera establecida. La variable aún se acepta por compatibilidad y no tiene efecto desde v2.1.207 en adelante.

328 330 

331<h4 id="server-side-classifier-review">

332 Revisión del clasificador del lado del servidor

333</h4>

334 

335En Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, Claude Code revisa las acciones del modo automático con sus propias solicitudes del clasificador de forma predeterminada. Para que el clasificador del lado del servidor de la plataforma revise [las acciones que van al clasificador](#how-the-classifier-evaluates-actions) como parte de las solicitudes del modelo de la sesión en su lugar, establezca [`CLAUDE_CODE_AUTO_MODE_SERVER=1`](/docs/es/env-vars). Donde la plataforma ejecuta el clasificador, sus veredictos deciden esas acciones; donde no lo hace, Claude Code retrocede a sus propias solicitudes del clasificador. En v2.1.271 y v2.1.272, preguntar a la plataforma era el valor predeterminado en estos proveedores.

336 

329<h3 id="what-the-classifier-blocks-by-default">337<h3 id="what-the-classifier-blocks-by-default">

330 Qué bloquea el clasificador de forma predeterminada338 Qué bloquea el clasificador de forma predeterminada

331</h3>339</h3>


419* Envío de datos a los dominios, cubos y servicios de confianza que lista en [`environment`](/docs/es/auto-mode-config#define-trusted-infrastructure). Esto cubre solo el flujo de datos, no operaciones destructivas o de credencial en la misma infraestructura427* Envío de datos a los dominios, cubos y servicios de confianza que lista en [`environment`](/docs/es/auto-mode-config#define-trusted-infrastructure). Esto cubre solo el flujo de datos, no operaciones destructivas o de credencial en la misma infraestructura

420* [Claude en Chrome](/docs/es/chrome) navegación a un dominio interno de confianza, localhost o una URL que nombró428* [Claude en Chrome](/docs/es/chrome) navegación a un dominio interno de confianza, localhost o una URL que nombró

421 429 

422Las solicitudes de acceso a la red de sandbox se enrutan a través del clasificador en lugar de permitirse de forma predeterminada. A partir de v2.1.198, el clasificador reutiliza su veredicto para un host y puerto de red en lugar de volver a ejecutarse en cada conexión:430Las solicitudes de acceso a la red de sandbox se enrutan a través del clasificador en lugar de permitirse de forma predeterminada. Claude nombra los hosts que un comando necesita en el comando mismo, el clasificador los revisa con el comando, y una lista aprobada abre esos hosts solo para ese comando. [Dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) cubre qué puede y qué no puede abrir una lista y qué sucede cuando un comando llega a un host no listado.

423 

424* Un permiso se reutiliza hasta que nuevo contenido entra en la conversación, momento en el cual ese host se verifica nuevamente

425* Claude Code v2.1.234 y posterior reutilizan una denegación causada por la conversación que supera la ventana de contexto del clasificador hasta que nuevo contenido entra en la conversación, o hasta que [compactación](/docs/es/costs#reduce-token-usage) reduce lo que el clasificador lee. Claude Code luego verifica el host nuevamente

426* Una denegación que el clasificador alcanzó evaluando la solicitud dura para el turno en la CLI interactiva. En [modo no interactivo](/docs/es/headless) y sesiones del SDK de agentes, Claude Code reutiliza esa denegación para el resto de la ejecución, porque esas sesiones no tienen límite de turno

427* Cambiar su modo de permiso o reglas elimina todos los veredictos en caché

428 431 

429Ejecute `claude auto-mode defaults` para imprimir las listas de reglas completas como JSON. Si las acciones rutinarias se bloquean, un administrador puede agregar repositorios, cubos y servicios de confianza a través de la configuración `autoMode.environment`: consulte [Configurar modo automático](/docs/es/auto-mode-config).432Ejecute `claude auto-mode defaults` para imprimir las listas de reglas completas como JSON. Si las acciones rutinarias se bloquean, un administrador puede agregar repositorios, cubos y servicios de confianza a través de la configuración `autoMode.environment`: consulte [Configurar modo automático](/docs/es/auto-mode-config).

430 433 


471 <Accordion title="Cómo el clasificador evalúa acciones">474 <Accordion title="Cómo el clasificador evalúa acciones">

472 Cada acción pasa por un orden de decisión fijo. El primer paso coincidente gana:475 Cada acción pasa por un orden de decisión fijo. El primer paso coincidente gana:

473 476 

474 1. Las acciones que coinciden con sus [reglas de permitir, solicitar o denegar](/docs/es/permissions#manage-permissions) se resuelven inmediatamente. Las escrituras en [rutas protegidas](#protected-paths) se enrutan al clasificador incluso cuando una regla de permitir coincide, y también lo hacen las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths) en Claude Code v2.1.218 y posterior. Las herramientas MCP marcadas [`requiresUserInteraction`](/docs/es/mcp#require-approval-for-a-specific-tool) le solicitan directamente incluso cuando una regla de permitir coincide, y también lo hacen las herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) en sesiones donde esa configuración llega a Claude Code. Las reglas de solicitud que coinciden en el contenido de un comando, como `Bash(git push *)`, retroceden a una solicitud de permiso477 1. Las acciones que coinciden con sus [reglas de permitir, solicitar o denegar](/docs/es/permissions#manage-permissions) se resuelven inmediatamente, con estas excepciones:

478 * Escrituras en [rutas protegidas](#protected-paths) se enrutan al clasificador incluso cuando una regla de permitir coincide, y también lo hacen las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths) en Claude Code v2.1.218 y posterior

479 * Las herramientas MCP marcadas [`requiresUserInteraction`](/docs/es/mcp#require-approval-for-a-specific-tool) le solicitan directamente incluso cuando una regla de permitir coincide, y también lo hacen las herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) en sesiones donde esa configuración llega a Claude Code

480 * Un comando de shell que lleva [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) también se enruta al clasificador incluso cuando una regla de permitir coincide, porque una regla aprueba el comando, no sus hosts

481 * Las reglas de solicitud que coinciden en el contenido de un comando, como `Bash(git push *)`, retroceden a una solicitud de permiso

475 2. Las acciones de solo lectura y ediciones de archivo en su directorio de trabajo se aprueban automáticamente, excepto escrituras en [rutas protegidas](#protected-paths) y [la primera lectura fuera de los directorios de trabajo](#first-read-outside-the-working-directories), que le solicita482 2. Las acciones de solo lectura y ediciones de archivo en su directorio de trabajo se aprueban automáticamente, excepto escrituras en [rutas protegidas](#protected-paths) y [la primera lectura fuera de los directorios de trabajo](#first-read-outside-the-working-directories), que le solicita

476 3. Todo lo demás va al clasificador. Las herramientas de conector y herramientas MCP `requiresUserInteraction` que le solicitan directamente en el paso 1 nunca llegan al clasificador, por lo que ni una aprobación requerida por la organización ni un paso de consentimiento se aprueban automáticamente483 3. Todo lo demás va al clasificador. Las herramientas de conector y herramientas MCP `requiresUserInteraction` que le solicitan directamente en el paso 1 nunca llegan al clasificador, por lo que ni una aprobación requerida por la organización ni un paso de consentimiento se aprueban automáticamente

477 4. Si el clasificador bloquea, Claude recibe la razón e intenta una alternativa. En la mayoría de las sesiones la razón nombra la regla con la que coincidió el clasificador, como `[Data Exfiltration]`, en lugar de dar una explicación escrita; consulte [Revisar denegaciones](/docs/es/auto-mode-config#review-denials)484 4. Si el clasificador bloquea, Claude recibe la razón e intenta una alternativa. En la mayoría de las sesiones la razón nombra la regla con la que coincidió el clasificador, como `[Data Exfiltration]`, en lugar de dar una explicación escrita; consulte [Revisar denegaciones](/docs/es/auto-mode-config#review-denials)


488 495 

489 Claude Code también ejecuta `git status` a sí mismo antes de un comando que descartaría trabajo sin confirmar, como `git reset --hard` o `rm -rf`, y muestra al clasificador si hay trabajo preparado, modificado o sin seguimiento presente. Claude Code reporta archivos sin seguimiento en esa verificación incluso cuando la configuración de git del repositorio establece `status.showUntrackedFiles=no`.496 Claude Code también ejecuta `git status` a sí mismo antes de un comando que descartaría trabajo sin confirmar, como `git reset --hard` o `rm -rf`, y muestra al clasificador si hay trabajo preparado, modificado o sin seguimiento presente. Claude Code reporta archivos sin seguimiento en esa verificación incluso cuando la configuración de git del repositorio establece `status.showUntrackedFiles=no`.

490 497 

491 El clasificador ve mensajes de usuario, llamadas de herramienta que no sean búsquedas de solo lectura como lecturas de archivo y búsquedas, y su contenido CLAUDE.md. Los resultados de herramientas se eliminan, por lo que el contenido hostil en un archivo o página web no puede manipularlo directamente. Puede anotar el resultado de una llamada con el campo `classifierContext` del hook [PostToolUse](/docs/es/hooks#annotate-a-result-for-the-auto-mode-classifier), que el clasificador lee como contexto proporcionado por la aplicación.498 En las solicitudes del clasificador enviadas por Claude Code mismo, el clasificador ve mensajes de usuario, llamadas de herramienta que no sean búsquedas de solo lectura como lecturas de archivo y búsquedas, y su contenido CLAUDE.md. Los resultados de herramientas se eliminan, por lo que el contenido hostil en un archivo o página web no puede manipularlo directamente. Puede anotar el resultado de una llamada con el campo `classifierContext` del hook [PostToolUse](/docs/es/hooks#annotate-a-result-for-the-auto-mode-classifier), que el clasificador lee como contexto proporcionado por la aplicación. El campo requiere Claude Code v2.1.236 o posterior.

492 499 

493 Una sonda separada del lado del servidor escanea los resultados de herramientas entrantes y marca contenido sospechoso antes de que Claude lo lea. Para más información sobre cómo funcionan juntas estas capas, consulte el [anuncio de modo automático](https://claude.com/blog/auto-mode) y la [inmersión profunda de ingeniería](https://www.anthropic.com/engineering/claude-code-auto-mode).500 Una sonda separada del lado del servidor escanea los resultados de herramientas entrantes y marca contenido sospechoso antes de que Claude lo lea. Para más información sobre cómo funcionan juntas estas capas, consulte el [anuncio de modo automático](https://claude.com/blog/auto-mode) y la [inmersión profunda de ingeniería](https://www.anthropic.com/engineering/claude-code-auto-mode).

494 </Accordion>501 </Accordion>


498 505 

499 1. Antes de que comience un subagente, se evalúa la descripción de tarea delegada, por lo que una tarea de aspecto peligroso se bloquea en el momento del desove.506 1. Antes de que comience un subagente, se evalúa la descripción de tarea delegada, por lo que una tarea de aspecto peligroso se bloquea en el momento del desove.

500 2. Mientras se ejecuta el subagente, cada una de sus acciones pasa por el clasificador con las mismas reglas que la sesión principal, y cualquier `permissionMode` en el frontmatter del subagente se ignora.507 2. Mientras se ejecuta el subagente, cada una de sus acciones pasa por el clasificador con las mismas reglas que la sesión principal, y cualquier `permissionMode` en el frontmatter del subagente se ignora.

501 3. Cuando el subagente termina, el clasificador revisa su historial de acciones completo; si esa verificación de retorno marca una preocupación, se antepone una advertencia de seguridad a los resultados del subagente. Cuando una verificación de seguridad de API separada rechaza la solicitud de revisión en sí, Claude Code aún devuelve los resultados del subagente, antepuesto con una advertencia de que el trabajo no se revisa y debe tratarse como no confiable.508 3. Cuando el subagente termina, el clasificador revisa su trabajo y su informe final antes de que el padre lea el informe. Cuando el clasificador marca el trabajo o informe del subagente, o una verificación de seguridad de API separada rechaza la revisión, el informe aún se entrega, antepuesto con una advertencia de seguridad. Cuando el clasificador no está disponible para la revisión, el informe llega con una nota para verificar el trabajo del subagente antes de actuar en consecuencia.

502 509 

503 El paso 1 requiere Claude Code v2.1.178 o posterior. Las versiones anteriores aplicaban el clasificador en los pasos 2 y 3, pero no evaluaban la descripción de tarea antes de que comenzara el subagente.510 El paso 1 requiere Claude Code v2.1.178 o posterior. Las versiones anteriores aplicaban el clasificador en los pasos 2 y 3, pero no evaluaban la descripción de tarea antes de que comenzara el subagente.

504 </Accordion>511 </Accordion>


508 515 

509 La primera solicitud de modo automático de la sesión valida el valor predeterminado de Sonnet 5: si la solicitud tiene éxito, Sonnet 5 permanece como el modelo clasificador de la sesión, y si falla porque el modelo no está disponible, la sesión usa el respaldo en su lugar. Después de que esa validación se resuelve, el modelo del clasificador no cambia para la sesión.516 La primera solicitud de modo automático de la sesión valida el valor predeterminado de Sonnet 5: si la solicitud tiene éxito, Sonnet 5 permanece como el modelo clasificador de la sesión, y si falla porque el modelo no está disponible, la sesión usa el respaldo en su lugar. Después de que esa validación se resuelve, el modelo del clasificador no cambia para la sesión.

510 517 

511 En planes Enterprise y en cuentas que usan la API de Claude, [Claude Platform en AWS](/docs/es/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry, las llamadas del clasificador cuentan hacia su uso de tokens. Cada verificación envía una porción de la transcripción más la acción pendiente, agregando un viaje de ida y vuelta antes de la ejecución. Las lecturas y ediciones de directorio de trabajo fuera de rutas protegidas omiten el clasificador, por lo que la sobrecarga proviene principalmente de comandos de shell y operaciones de red.518 En planes Enterprise y en cuentas que usan la API de Claude, [Claude Platform en AWS](/docs/es/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry, las llamadas del clasificador cuentan hacia su uso de tokens. Cada verificación envía una porción de la transcripción más la acción pendiente, agregando un viaje de ida y vuelta antes de la ejecución. Las lecturas y ediciones de directorio de trabajo fuera de rutas protegidas omiten el clasificador, por lo que la sobrecarga proviene principalmente de comandos de shell y operaciones de red. En Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, puede mover la revisión a las solicitudes del modelo de la sesión en su lugar; consulte [Revisión del clasificador del lado del servidor](#server-side-classifier-review).

512 519 

513 El clasificador reutiliza un veredicto de red de sandbox para un host y puerto, por lo que las conexiones repetidas al mismo host no agregan cada una una verificación. [Qué bloquea el clasificador de forma predeterminada](#what-the-classifier-blocks-by-default) describe cuánto tiempo dura un permiso y una denegación.520 El acceso a la red de sandbox no agrega solicitudes del clasificador por conexión. El clasificador juzga [los hosts que un comando nombra](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) junto con el comando en una revisión, y Claude Code verifica cada conexión contra la lista aprobada sin llamar al clasificador nuevamente.

514 </Accordion>521 </Accordion>

515</AccordionGroup>522</AccordionGroup>

516 523 


520 527 

521Si establece el modo `dontAsk`, Claude Code deniega automáticamente cada llamada de herramienta que de otro modo le solicitaría. Claude aún ejecuta acciones que no necesitan aprobación en modo Manual, como lecturas de archivos dentro de sus directorios de trabajo y [comandos Bash de solo lectura](/docs/es/permissions#read-only-commands), además de acciones que coinciden con sus reglas `permissions.allow` y llamadas aprobadas por un [hook PreToolUse](/docs/es/permissions#extend-permissions-with-hooks). Utilice este modo para canalizaciones de CI o entornos restringidos donde predefine qué puede hacer Claude; la sesión nunca espera entrada. La barra de estado muestra `⏵⏵ don't ask on` mientras este modo está activo.528Si establece el modo `dontAsk`, Claude Code deniega automáticamente cada llamada de herramienta que de otro modo le solicitaría. Claude aún ejecuta acciones que no necesitan aprobación en modo Manual, como lecturas de archivos dentro de sus directorios de trabajo y [comandos Bash de solo lectura](/docs/es/permissions#read-only-commands), además de acciones que coinciden con sus reglas `permissions.allow` y llamadas aprobadas por un [hook PreToolUse](/docs/es/permissions#extend-permissions-with-hooks). Utilice este modo para canalizaciones de CI o entornos restringidos donde predefine qué puede hacer Claude; la sesión nunca espera entrada. La barra de estado muestra `⏵⏵ don't ask on` mientras este modo está activo.

522 529 

523Claude Code deniega llamadas que coincidan con sus [reglas `ask`](/docs/es/permissions#manage-permissions) explícitas en lugar de solicitar. También deniega la herramienta integrada `AskUserQuestion` incluso si sus reglas de permitir coinciden, y hace lo mismo con las herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) en sesiones donde esa configuración llega a Claude Code. Deniega las herramientas MCP marcadas [`requiresUserInteraction`](/docs/es/mcp#require-approval-for-a-specific-tool) de la misma manera, porque su tarjeta de aprobación necesita una respuesta que este modo nunca recopila; esto requiere Claude Code v2.1.199 o posterior.530Claude Code deniega llamadas que coincidan con sus [reglas `ask`](/docs/es/permissions#manage-permissions) explícitas en lugar de solicitar. También deniega la herramienta integrada `AskUserQuestion` incluso si sus reglas de permitir coinciden, y hace lo mismo con las herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) en sesiones donde esa configuración llega a Claude Code. Deniega las herramientas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) de la misma manera, porque su tarjeta de aprobación necesita una respuesta que este modo nunca recopila; esto requiere Claude Code v2.1.199 o posterior.

524 531 

525Las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), como `rm -rf /` y `rm -rf ~`, se deniegan incluso cuando una regla de permitir coincide con ellas o un hook `PreToolUse` las permite.532Las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), como `rm -rf /` y `rm -rf ~`, se deniegan incluso cuando una regla de permitir coincide con ellas o un hook `PreToolUse` las permite.

526 533 


540 547 

541Las [acciones que ningún modo aprueba automáticamente](#actions-no-mode-auto-approves) aún solicitan en este modo.548Las [acciones que ningún modo aprueba automáticamente](#actions-no-mode-auto-approves) aún solicitan en este modo.

542 549 

543Dos [salvaguardas de mensajería entre sesiones](/docs/es/cross-session-messaging) aún se aplican en este modo, y en sesiones de modo plan donde los permisos de omisión están disponibles:550Dos [salvaguardas de mensajería entre sesiones](/docs/es/cross-session-messaging) aún se aplican en este modo, y en sesiones de modo plan de terminal interactivo donde los permisos de omisión están disponibles:

544 551 

545* El aviso de aprobación [`isolatePeerMachines`](/docs/es/settings-reference#isolatepeermachines) para mensajes a sus sesiones más allá de esta máquina aún aparece.552* El aviso de aprobación [`isolatePeerMachines`](/docs/es/settings-reference#isolatepeermachines) para mensajes a sus sesiones más allá de esta máquina aún aparece.

546* Cuando no se aplica ningún valor [`crossSessionInbound`](/docs/es/cross-session-messaging#control-inbound-messages), Claude Code retiene un mensaje entrante de otra de sus sesiones para su aprobación, y entrega sin preguntar solo cuando la sesión de envío se identifica a sí misma como también omitiendo avisos de permisos. Si deja el modo de permisos mientras se retienen mensajes, Claude Code reaaplica las reglas entrantes y entrega cualquier mensaje retenido que ahora aceptan.553* Cuando no se aplica ningún valor [`crossSessionInbound`](/docs/es/cross-session-messaging#control-inbound-messages), Claude Code retiene un mensaje entrante de otra de sus sesiones para su aprobación, y entrega sin preguntar solo cuando la sesión de envío se identifica a sí misma como también omitiendo avisos de permisos. Si deja el modo de permisos mientras se retienen mensajes, Claude Code reaaplica las reglas entrantes y entrega cualquier mensaje retenido que ahora aceptan.

547 554 

548En sesiones con permisos de omisión disponibles, Claude Code tampoco aplica los [bloqueos del modo plan](#analyze-before-you-edit-with-plan-mode). Claude aún recibe instrucciones de planificar sin editar, pero una edición de archivo o comando de shell que intenta durante la planificación se ejecuta sin solicitar. Las [reglas `ask`](/docs/es/permissions#manage-permissions) explícitas y las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths) aún solicitan.555En sesiones de terminal interactivo con permisos de omisión disponibles, Claude Code tampoco aplica los [bloqueos del modo plan](#analyze-before-you-edit-with-plan-mode). Claude aún recibe instrucciones de planificar sin editar, pero una edición de archivo o comando de shell que intenta durante la planificación se ejecuta sin solicitar. Las [reglas `ask`](/docs/es/permissions#manage-permissions) explícitas y las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths) aún solicitan.

556 

557El modo plan mantiene sus bloqueos dondequiera que Claude Code se ejecute sin un terminal interactivo, incluidas [ejecuciones no interactivas](/docs/es/headless) con `-p`, sesiones de [Agent SDK](/docs/es/agent-sdk/permissions#plan-mode-plan), y conversaciones en el panel de chat de la [extensión VS Code](/docs/es/vs-code). Allí, `--allow-dangerously-skip-permissions` hace que `bypassPermissions` sea seleccionable más tarde.

549 558 

550<Warning>559<Warning>

551 Use este modo solo en entornos aislados como contenedores, máquinas virtuales o dev containers sin acceso a Internet, donde Claude Code no pueda dañar su sistema anfitrión.560 Use este modo solo en entornos aislados como contenedores, máquinas virtuales o dev containers sin acceso a Internet, donde Claude Code no pueda dañar su sistema anfitrión.


581 Rutas protegidas590 Rutas protegidas

582</h2>591</h2>

583 592 

584Las escrituras en un pequeño conjunto de rutas nunca se aprueban automáticamente, excepto en modo `bypassPermissions` y en sesiones de modo plan con [permisos de omisión](#skip-all-checks-with-bypasspermissions-mode) disponibles. Esto previene la corrupción accidental del estado del repositorio y la configuración de Claude.593Las escrituras en un pequeño conjunto de rutas nunca se aprueban automáticamente, excepto en modo `bypassPermissions` y en sesiones de terminal interactivas en modo plan con [permisos de omisión](#skip-all-checks-with-bypasspermissions-mode) disponibles. Esto previene la corrupción accidental del estado del repositorio y la configuración de Claude.

585 594 

586| Modo | Escrituras en rutas protegidas |595| Modo | Escrituras en rutas protegidas |

587| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |596| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

588| `default`, `acceptEdits` | Solicitadas |597| `default`, `acceptEdits` | Solicitadas |

589| `plan` | Permitidas en sesiones con [permisos de omisión](#skip-all-checks-with-bypasspermissions-mode) disponibles. De lo contrario, enrutadas al clasificador cuando [modo automático](#eliminate-prompts-with-auto-mode) está disponible durante la planificación, y solicitadas cuando no lo está |598| `plan` | Permitidas en sesiones de terminal interactivas con [permisos de omisión](#skip-all-checks-with-bypasspermissions-mode) disponibles. De lo contrario, enrutadas al clasificador cuando [modo automático](#eliminate-prompts-with-auto-mode) está disponible durante la planificación, y solicitadas cuando no lo está |

590| `auto` | Enrutadas al clasificador |599| `auto` | Enrutadas al clasificador |

591| `dontAsk` | Denegadas |600| `dontAsk` | Denegadas |

592| `bypassPermissions` | Permitidas |601| `bypassPermissions` | Permitidas |


649 658 

650Claude Code también trata un glob o barra diagonal final directamente bajo una variable de shell, como `rm -rf "$DIR"/*`, como una eliminación de ruta crítica, porque el comando se convierte en una eliminación desde la raíz del sistema de archivos cuando la variable está vacía.659Claude Code también trata un glob o barra diagonal final directamente bajo una variable de shell, como `rm -rf "$DIR"/*`, como una eliminación de ruta crítica, porque el comando se convierte en una eliminación desde la raíz del sistema de archivos cuando la variable está vacía.

651 660 

652Ocultar la eliminación dentro de sustitución de comandos con `$(...)` o comillas invertidas, o sustitución de procesos con `<(...)`, no omite la verificación. Claude Code encuentra una eliminación de ruta crítica ya sea que esté dentro de la sustitución, como en `echo "$(rm -rf ~)"`, o en otro lugar del mismo comando.661Ocultar la eliminación dentro de una sustitución de comandos con `$(...)` o comillas invertidas, o sustitución de procesos con `<(...)`, no omite la verificación. Claude Code encuentra una eliminación de ruta crítica ya sea que esté dentro de la forma anidada, como en `(rm -rf ~)` o `echo "$(rm -rf ~)"`, o en otro lugar del mismo comando.

653 662 

654<h3 id="remove-item-in-powershell">663<h3 id="remove-item-in-powershell">

655 Remove-Item en PowerShell664 Remove-Item en PowerShell

permissions.md +100 −87

Details

65 65 

66Las reglas se evalúan en orden: deny, luego ask, luego allow. La primera coincidencia en ese orden determina el resultado, y la especificidad de la regla no cambia el orden.66Las reglas se evalúan en orden: deny, luego ask, luego allow. La primera coincidencia en ese orden determina el resultado, y la especificidad de la regla no cambia el orden.

67 67 

68Una regla deny amplia como `Bash(aws *)` bloquea cada llamada coincidente, incluidas las llamadas que también coinciden con una regla allow más específica como `Bash(aws s3 ls)`, por lo que una regla deny no puede llevar excepciones de lista de permitidos. La misma precedencia se aplica entre ask y allow: una regla ask coincidente solicita confirmación incluso cuando una regla allow más específica también coincide con la misma llamada.68Una regla deny amplia como `Bash(aws *)` bloquea cada llamada coincidente, incluidas las llamadas que también coinciden con una regla allow más específica como `Bash(aws s3 ls)`. Una regla allow no puede crear una excepción dentro de una regla deny. La misma precedencia se aplica entre ask y allow: una regla ask coincidente solicita confirmación incluso cuando una regla allow más específica también coincide con la misma llamada.

69 69 

70Las reglas deny se comportan de manera diferente dependiendo de si nombran una herramienta o delimitan un patrón dentro de una. Un nombre de herramienta simple como `Bash` elimina la herramienta del contexto de Claude por completo, por lo que Claude nunca la ve. Si agrega tal regla a mitad de sesión, Claude no puede llamar a la herramienta desde su siguiente llamada de herramienta en adelante; [Denying an entire tool](/docs/es/prompt-caching#denying-an-entire-tool) cubre lo que sucede con una definición que Claude ya ha visto. Una regla delimitada como `Bash(rm *)` deja la herramienta disponible y bloquea las llamadas coincidentes cuando Claude intenta usarlas.70Las reglas deny se comportan de manera diferente dependiendo de si nombran una herramienta o delimitan un patrón dentro de una. Un nombre de herramienta simple como `Bash` elimina la herramienta del contexto de Claude por completo, por lo que Claude nunca la ve. Si agrega tal regla a mitad de sesión, Claude no puede llamar a la herramienta desde su siguiente llamada de herramienta en adelante; [Denying an entire tool](/docs/es/prompt-caching#denying-an-entire-tool) cubre lo que sucede con una definición que Claude ya ha visto. Una regla delimitada como `Bash(rm *)` deja la herramienta disponible y bloquea las llamadas coincidentes cuando Claude intenta usarlas.

71 71 


236 Bash236 Bash

237</h3>237</h3>

238 238 

239Las reglas de Bash coinciden con el texto completo del comando, con `*` representando cualquier texto. [Patrones de comodín](#wildcard-patterns) muestra qué comandos coincide cada forma de regla y dónde colocar el `*`. El resto de esta sección cubre cómo Claude Code coincide con comandos compuestos y envoltorios, qué no coincide una regla, comandos de solo lectura y redirecciones.239Las reglas de Bash coinciden con el texto completo del comando, siendo `*` un comodín para cualquier texto. [Wildcard patterns](#wildcard-patterns) muestra qué comandos coinciden con cada forma de regla y dónde poner el `*`. El resto de esta sección cubre cómo Claude Code coincide con comandos compuestos y envoltorios, qué no coincide una regla, comandos de solo lectura y redirecciones.

240 240 

241<h4 id="compound-commands">241<h4 id="compound-commands">

242 Comandos compuestos242 Comandos compuestos

243</h4>243</h4>

244 244 

245<Tip>245<Tip>

246 Claude Code es consciente de los operadores de shell, por lo que una regla como `Bash(safe-cmd *)` no le dará permiso para ejecutar el comando `safe-cmd && other-cmd`. Los separadores de comando reconocidos son `&&`, `||`, `;`, `|`, `|&`, `&` y saltos de línea. Una regla debe coincidir con cada subcomando de forma independiente.246 Claude Code es consciente de los operadores de shell, por lo que una regla como `Bash(safe-cmd *)` no le dará permiso para ejecutar el comando `safe-cmd && other-cmd`. Los separadores de comandos reconocidos son `&&`, `||`, `;`, `|`, `|&`, `&` y saltos de línea. Una regla debe coincidir con cada subcomando de forma independiente.

247</Tip>247</Tip>

248 248 

249Las reglas de negación y solicitud se aplican cuando cualquier subcomando coincide con ellas, incluyendo un comando anidado dentro de un subshell, una sustitución de comando o un cuerpo de flujo de control como un bucle `for`. Una regla de solicitud como `Bash(git clean *)` aún le solicita para `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, incluso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode).249Las reglas de negación y solicitud se aplican cuando cualquier subcomando coincide con ellas, incluido un comando anidado dentro de un subshell, una sustitución de comandos o un cuerpo de flujo de control como un bucle `for`. Una regla de solicitud como `Bash(git clean *)` aún le solicita aprobación para `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, incluso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode).

250 250 

251Cuando `&&` o `||` no tiene nada después, como en `npm test &&`, Claude Code trata el comando como no analizable y no lo divide en subcomandos para coincidencia de reglas de permiso, por lo que una regla como `Bash(npm *)` no lo aprueba.251Cuando `&&` o `||` no tiene nada después, como en `npm test &&`, Claude Code trata el comando como no analizable y no lo divide en subcomandos para coincidencia de reglas de permiso de solo lectura, por lo que una regla como `Bash(npm *)` no la aprueba.

252 252 

253Cuando aprueba un comando compuesto con "Sí, no preguntar de nuevo", Claude Code guarda una regla separada para cada subcomando que requiere aprobación, en lugar de una sola regla para la cadena completa. Por ejemplo, aprobar `git status && npm test` guarda una regla para `npm test`, por lo que futuras invocaciones de `npm test` se reconocen independientemente de lo que preceda a `&&`. Los subcomandos como `cd` en un subdirectorio generan su propia regla Read para esa ruta. Se pueden guardar hasta 5 reglas para un solo comando compuesto.253Cuando aprueba un comando compuesto con "Sí, y no vuelvas a preguntar", Claude Code guarda una regla separada para cada subcomando que requiere aprobación, en lugar de una única regla para la cadena completa. Por ejemplo, aprobar `git status && npm test` guarda una regla para `npm test`, por lo que las invocaciones futuras de `npm test` se reconocen independientemente de lo que preceda a `&&`. Los subcomandos como `cd` en un subdirectorio generan su propia regla Read para esa ruta. Se pueden guardar hasta 5 reglas para un único comando compuesto.

254 254 

255<h4 id="process-wrappers">255<h4 id="process-wrappers">

256 Envoltorios256 Envoltorios

257</h4>257</h4>

258 258 

259Antes de coincidir con reglas de Bash, Claude Code elimina un conjunto fijo de envoltorios, por lo que una regla como `Bash(npm test *)` también coincide con `timeout 30 npm test`. Los envoltorios eliminados son `timeout`, `time`, `nice`, `nohup` y `stdbuf`, más los builtins de shell `command` y `builtin`, y `noglob` de zsh. Cada uno ejecuta su argumento como el comando real. Dos formas relacionadas no se eliminan: la forma de consulta `command -v`, que busca un comando en lugar de ejecutarlo, y `nocorrect` de zsh.259Antes de coincidir con las reglas de Bash, Claude Code elimina un conjunto fijo de envoltorios, por lo que una regla como `Bash(npm test *)` también coincide con `timeout 30 npm test`. Los envoltorios eliminados son `timeout`, `time`, `nice`, `nohup` y `stdbuf`, más los builtins de shell `command` y `builtin`, y `noglob` de zsh. Cada uno ejecuta su argumento como el comando real. Dos formas relacionadas no se eliminan: la forma de consulta `command -v`, que busca un comando en lugar de ejecutarlo, y `nocorrect` de zsh.

260 260 

261Claude Code también elimina una asignación inicial de ciertas variables de entorno conocidas como seguras, por lo que `Bash(npm test *)` coincide con `NODE_ENV=test npm test`. Una regla de permiso no coincidirá más allá de una asignación de cualquier otra variable. Una regla de negación o solicitud coincide más allá de cualquier asignación inicial, por lo que `Bash(rm *)` en negación aún coincide con `FOO=bar rm -rf tmp/`.261Claude Code también elimina una asignación inicial de ciertas variables de entorno conocidas como seguras, por lo que `Bash(npm test *)` coincide con `NODE_ENV=test npm test`. Una regla de permiso no coincidirá más allá de una asignación de cualquier otra variable. Una regla de negación o solicitud coincide más allá de cualquier asignación inicial, por lo que `Bash(rm *)` en negación aún coincide con `FOO=bar rm -rf tmp/`.

262 262 

263`xargs` desnudo también se elimina, por lo que `Bash(grep *)` coincide con `xargs grep pattern`. La eliminación solo se aplica cuando `xargs` no tiene banderas: una invocación como `xargs -n1 grep pattern` se coincide como un comando `xargs`, por lo que las reglas escritas para el comando interno no la cubren.263`xargs` desnudo también se elimina, por lo que `Bash(grep *)` coincide con `xargs grep pattern`. La eliminación se aplica solo cuando `xargs` no tiene banderas: una invocación como `xargs -n1 grep pattern` se coincide como un comando `xargs`, por lo que las reglas escritas para el comando interno no la cubren.

264 264 

265Esta lista de envoltorios está integrada y no es configurable. Los ejecutores de entorno de desarrollo como `direnv exec`, `devbox run`, `mise exec`, `npx` y `docker exec` no están en la lista. Porque estas herramientas ejecutan sus argumentos como un comando, una regla como `Bash(devbox run *)` coincide con lo que viene después de `run`, incluyendo `devbox run rm -rf .`. Para aprobar trabajo dentro de un ejecutor de entorno, escriba una regla específica que incluya tanto el ejecutor como el comando interno, como `Bash(devbox run npm test)`. Agregue una regla por comando interno que desee permitir.265Esta lista de envoltorios está integrada y no es configurable. Los ejecutores de entorno de desarrollo como `direnv exec`, `devbox run`, `mise exec`, `npx` y `docker exec` no están en la lista. Debido a que estas herramientas ejecutan sus argumentos como un comando, una regla como `Bash(devbox run *)` coincide con lo que viene después de `run`, incluido `devbox run rm -rf .`. Para aprobar el trabajo dentro de un ejecutor de entorno, escriba una regla específica que incluya tanto el ejecutor como el comando interno, como `Bash(devbox run npm test)`. Agregue una regla por cada comando interno que desee permitir.

266 266 

267Los envoltorios exec como `watch`, `setsid`, `ionice` y `flock` no pueden ser auto-aprobados por una regla de prefijo como `Bash(watch *)`, por lo que en modo Manual siempre solicitan. Lo mismo se aplica a `find` con `-exec` o `-delete`: una regla `Bash(find *)` no cubre estas formas. Para aprobar una invocación específica, escriba una regla de coincidencia exacta para la cadena de comando completa.267Los envoltorios Exec como `watch`, `setsid`, `ionice` y `flock` no pueden ser aprobados automáticamente por una regla de prefijo como `Bash(watch *)`, por lo que en modo Manual siempre solicitan aprobación. Lo mismo se aplica a `find` con `-exec` o `-delete`: una regla `Bash(find *)` no cubre estas formas. Para aprobar una invocación específica, escriba una regla de coincidencia exacta para la cadena de comando completa.

268 268 

269<h4 id="bash-rule-limits">269<h4 id="bash-rule-limits">

270 Lo que una regla de Bash no coincide270 Qué no coincide una regla de Bash

271</h4>271</h4>

272 272 

273Una regla de Bash coincide con el texto del comando que Claude escribe, después de que Claude Code divide [comandos compuestos](#compound-commands) y elimina [envoltorios](#process-wrappers). No coincide con el mismo programa invocado en una forma diferente, por lo que una regla de negación o solicitud cubre la invocación que Claude generalmente produce y no es un límite de seguridad alrededor del programa. Estas reglas en `deny` o `ask` detienen la primera forma y no las otras:273Una regla de Bash coincide con el texto del comando que Claude escribe, después de que Claude Code divide [comandos compuestos](#compound-commands) y elimina [envoltorios](#process-wrappers). No coincide con el mismo programa invocado de una forma diferente, por lo que una regla de negación o solicitud cubre la invocación que Claude generalmente produce y no es un límite de seguridad alrededor del programa. Estas reglas en `deny` o `ask` detienen la primera forma y no las otras:

274 274 

275| Regla | Detiene | No detiene |275| Regla | Detiene | No detiene |

276| :----------------- | :------------------------- | :---------------------------------------------------------------------------------------------------- |276| :----------------- | :------------------------- | :---------------------------------------------------------------------------------------------------- |


278| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |278| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |

279| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |279| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |

280 280 

281Sus otras reglas y el modo de permisos deciden los comandos en la última columna.281Sus otras reglas y el modo de permiso deciden los comandos en la última columna.

282 282 

283Para aplicación de sistema de archivos y red que no dependa del texto del comando, use [sandboxing](/docs/es/sandboxing). Para inspeccionar el texto completo del comando con su propia lógica antes de que se ejecute, use un hook [PreToolUse](#extend-permissions-with-hooks).283Para la aplicación de sistema de archivos y red que no depende del texto del comando, use [sandboxing](/docs/es/sandboxing). Para inspeccionar el texto completo del comando con su propia lógica antes de que se ejecute, use un hook [PreToolUse](#extend-permissions-with-hooks).

284 284 

285<h4 id="read-only-commands">285<h4 id="read-only-commands">

286 Comandos de solo lectura286 Comandos de solo lectura

287</h4>287</h4>

288 288 

289Claude Code reconoce un conjunto integrado de comandos Bash como de solo lectura y los ejecuta sin un aviso de permisos en cada modo, excepto para una ruta que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cierra. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir un aviso para uno de estos comandos, agregue una regla `ask` o `deny` para él.289Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en todos los modos, excepto para una ruta que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cierra. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir una solicitud para uno de estos comandos, agregue una regla `ask` o `deny` para él.

290 290 

291Una redirección como `ls > out.txt` agrega una verificación en el objetivo. Vea [Redirecciones](#redirections).291Una redirección como `ls > out.txt` agrega una verificación en el destino. Vea [Redirections](#redirections).

292 292 

293Los patrones glob sin comillas se permiten para comandos cuya cada bandera es de solo lectura, por lo que `ls *.ts` y `wc -l src/*.py` se ejecutan sin un aviso.293Los patrones glob sin comillas se permiten para comandos cuya bandera es de solo lectura, por lo que `ls *.ts` y `wc -l src/*.py` se ejecutan sin una solicitud.

294 294 

295En modo Manual, los comandos de este conjunto aún solicitan en estos casos:295En modo Manual, los comandos de este conjunto aún solicitan aprobación en estos casos:

296 296 

297* **Globs sin comillas para comandos con banderas capaces de escritura**: comandos con banderas capaces de escritura o ejecución, como `find`, `sort`, `sed` y `git`, solicitan cuando un glob sin comillas está presente, porque el glob podría expandirse a una bandera como `-delete`.297* **Globs sin comillas para comandos con banderas capaces de escritura**: comandos con banderas capaces de escritura o ejecución, como `find`, `sort`, `sed` y `git`, solicitan aprobación cuando hay un glob sin comillas presente, porque el glob podría expandirse a una bandera como `-delete`.

298* **`docker` apuntado a otro daemon**: formas de solo lectura de `docker` solicitan cuando el comando lleva una bandera que selecciona un daemon diferente, como `-H`, `--context` o `--url` y `--connection` de Podman.298* **`docker` apuntado a otro daemon**: formas de solo lectura de `docker` solicitan aprobación cuando el comando lleva una bandera que selecciona un daemon diferente, como `-H`, `--context` o `--url` y `--connection` de Podman.

299* **`file` con banderas de apertura de ruta**: `file` solicita cuando pasa `-m`/`--magic-file` o `-f`/`--files-from`, porque esas banderas hacen que `file` abra las rutas nombradas en el valor de la bandera.299* **`file` con banderas de apertura de ruta**: `file` solicita aprobación cuando pasa `-m`/`--magic-file` o `-f`/`--files-from`, porque esas banderas hacen que `file` abra las rutas nombradas en el valor de la bandera.

300* **Rutas de red en Windows**: un comando cuyos argumentos incluyen una ruta de red (UNC), como `\\server\share\file`, solicita porque acceder a una ruta de red puede enviar sus credenciales de Windows al host que nombra. La misma verificación se aplica a comandos de [herramienta PowerShell](/docs/es/tools-reference#powershell-tool).300* **Rutas de red en Windows**: un comando cuyos argumentos incluyen una ruta de red (UNC), como `\\server\share\file`, solicita aprobación porque acceder a una ruta de red puede enviar sus credenciales de Windows al host que nombra. La misma verificación se aplica a comandos de [herramienta PowerShell](/docs/es/tools-reference#powershell-tool).

301* **Comandos que el análisis no puede analizar**: cuando Claude Code no puede analizar completamente un comando, solicita aprobación en lugar de tratar el comando como de solo lectura. Los comandos más largos que 10,000 caracteres siempre solicitan porque exceden lo que el análisis analiza.301* **Comandos que el análisis no puede analizar**: cuando Claude Code no puede analizar completamente un comando, solicita aprobación en lugar de tratar el comando como de solo lectura. Los comandos más largos que 10,000 caracteres siempre solicitan aprobación porque exceden lo que el análisis analiza.

302 302 

303Un `cd` en una ruta dentro de su directorio de trabajo o un [directorio adicional](#working-directories) también es de solo lectura, y un comando compuesto como `cd packages/api && ls` se ejecuta sin un aviso cuando cada parte se califica por su cuenta. Estas combinaciones solicitan incluso cuando cada parte es de solo lectura:303Un `cd` en una ruta dentro de su directorio de trabajo o un [directorio adicional](#working-directories) también es de solo lectura, y un comando compuesto como `cd packages/api && ls` se ejecuta sin una solicitud cuando cada parte se califica por sí sola. Estas combinaciones solicitan aprobación incluso cuando cada parte es de solo lectura:

304 304 

305* **`cd` con `git`**: solicita cuando el `cd` cambia a un directorio diferente, ya que ejecutar `git` en un nuevo directorio puede ejecutar los hooks de ese directorio. Un `cd` cuyo objetivo se resuelve al directorio de trabajo actual es una no-operación y no activa la solicitud.305* **`cd` con `git`**: solicita aprobación cuando el `cd` cambia a un directorio diferente, ya que ejecutar `git` en un nuevo directorio puede ejecutar los hooks de ese directorio. Un `cd` cuyo destino se resuelve al directorio de trabajo actual es una no-operación y no desencadena la solicitud.

306* **`cd` con una redirección**: solicita cuando Claude Code no puede determinar a qué directorio se resuelve el objetivo de redirección después de que se ejecuta `cd`. Un comando cuyo único objetivo de redirección es `/dev/null`, como `cd app; grep -r pattern . 2>/dev/null`, no solicita, porque `/dev/null` no depende del directorio de trabajo.306* **`cd` con una redirección**: solicita aprobación cuando Claude Code no puede determinar contra qué directorio se resuelve el destino de redirección después de que se ejecuta el `cd`. Un comando cuyo único destino de redirección es `/dev/null`, como `cd app; grep -r pattern . 2>/dev/null`, no solicita aprobación, porque `/dev/null` no depende del directorio de trabajo.

307 307 

308<Warning>308<Warning>

309 Los patrones de permisos de Bash que intentan restringir argumentos de comando son frágiles. Por ejemplo, `Bash(curl http://github.com/ *)` intenta restringir curl a URLs de GitHub, pero no coincidirá con variaciones como:309 Los patrones de permisos de Bash que intentan restringir argumentos de comandos son frágiles. Por ejemplo, `Bash(curl http://github.com/ *)` intenta restringir curl a URLs de GitHub, pero no coincidirá con variaciones como:

310 310 

311 * Opciones antes de URL: `curl -X GET http://github.com/...`311 * Opciones antes de URL: `curl -X GET http://github.com/...`

312 * Protocolo diferente: `curl https://github.com/...`312 * Protocolo diferente: `curl https://github.com/...`


315 315 

316 Para un filtrado de URL más confiable, considere:316 Para un filtrado de URL más confiable, considere:

317 317 

318 * **Restringir herramientas de red de Bash**: use reglas de negación para bloquear `curl`, `wget` y comandos similares, luego use la herramienta WebFetch con permiso `WebFetch(domain:github.com)` para dominios permitidos. Una regla de negación no coincide con el mismo programa por ruta o dentro de `sh -c`, así que emparéjela con la [lista de permitidos de red del sandbox](/docs/es/sandboxing#network-isolation) cuando la restricción debe mantenerse; vea [lo que una regla de Bash no coincide](#bash-rule-limits)318 * **Restringir herramientas de red de Bash**: use reglas de negación para detener `curl`, `wget` y comandos similares, luego use la herramienta WebFetch con permiso `WebFetch(domain:github.com)` para dominios permitidos. Una regla de negación no coincide con el mismo programa por ruta o dentro de `sh -c`, por lo que emparéjela con la [lista de permitidos de red del sandbox](/docs/es/sandboxing#network-isolation) cuando la restricción debe mantenerse; vea [qué no coincide una regla de Bash](#bash-rule-limits)

319 * **Usar hooks PreToolUse**: implemente un hook que valide URLs en comandos Bash y bloquee dominios no permitidos319 * **Usar hooks PreToolUse**: implemente un hook que valide URLs en comandos de Bash y bloquee dominios no permitidos

320 * **Agregar orientación CLAUDE.md**: describa sus patrones curl permitidos en `CLAUDE.md`. Esto forma lo que Claude intenta pero no aplica un límite, así que emparéjelo con una de las opciones anteriores320 * **Agregar orientación CLAUDE.md**: describa sus patrones de curl permitidos en `CLAUDE.md`. Esto forma lo que Claude intenta pero no aplica un límite, por lo que emparéjelo con una de las opciones anteriores

321 321 

322 Tenga en cuenta que usar WebFetch solo no previene el acceso a la red. Si se permite Bash, Claude aún puede usar `curl`, `wget` u otras herramientas para alcanzar cualquier URL.322 Tenga en cuenta que usar WebFetch solo no previene el acceso a la red. Si se permite Bash, Claude aún puede usar `curl`, `wget` u otras herramientas para alcanzar cualquier URL.

323</Warning>323</Warning>


326 Redirecciones326 Redirecciones

327</h4>327</h4>

328 328 

329Cuando un comando redirige salida o entrada, Claude Code verifica el objetivo de redirección contra sus reglas de archivo como si Claude escribiera o leyera ese archivo directamente:329Cuando un comando redirige salida o entrada, Claude Code verifica el destino de redirección contra sus reglas de archivo como si Claude escribiera o leyera ese archivo directamente:

330 330 

331* **Redirecciones de salida**: para `> file`, `>> file` o `2> file`, la verificación cubre sus reglas de permiso y negación `Edit`, [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla como `Bash(git commit *)` permite el comando, no el objetivo. Un objetivo que comienza con `~` o contiene un carácter de comodín necesita su aprobación.331* **Redirecciones de salida**: para `> file`, `>> file` o `2> file`, la verificación cubre sus reglas de permiso `Edit` de permitir y negar, [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla como `Bash(git commit *)` permite el comando, no el destino. Un destino que comienza con `~` o contiene un carácter glob necesita su aprobación.

332* **Redirecciones de entrada**: para `< file`, la verificación cubre sus reglas de permiso y negación `Read` y los directorios de trabajo. Un objetivo fuera de los directorios de trabajo necesita su aprobación a menos que una regla de permiso lo cubra. Un objetivo que contiene un patrón de comodín, o una ruta relativa que sigue a un `cd` en el mismo comando, necesita su aprobación incluso cuando una regla de permiso lo cubre. Claude Code verifica objetivos de entrada en v2.1.257 y posterior.332* **Redirecciones de entrada**: para `< file`, la verificación cubre sus reglas de permiso `Read` de permitir y negar y los directorios de trabajo. Un destino fuera de los directorios de trabajo necesita su aprobación a menos que una regla de permiso lo cubra. Un destino que contiene un patrón glob, o una ruta relativa que sigue a un `cd` en el mismo comando, necesita su aprobación incluso cuando una regla de permiso lo cubre. Claude Code verifica destinos de entrada en v2.1.257 y posterior.

333 333 

334Los objetivos sin archivo detrás no se verifican: `/dev/null`, formas de descriptor de archivo como `2>&1` y `<&3`, y here-docs y here-strings.334Los destinos sin archivo detrás no se verifican: `/dev/null`, formas de descriptor de archivo como `2>&1` y `<&3`, y here-docs y here-strings.

335 

336Claude Code también verifica los archivos que escribe un comando `tee`, incluido en un pipeline como `make | tee build.log`. La verificación cubre sus reglas de permiso `Edit` de permitir y negar, [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla de permiso como `Bash(tee *)` no cubre un destino fuera de los directorios de trabajo. Claude Code verifica destinos de `tee` en v2.1.269 y posterior.

335 337 

336<h3 id="powershell">338<h3 id="powershell">

337 PowerShell339 PowerShell


355 357 

356Los alias comunes se canonicalizan antes de coincidir. Una regla escrita para el nombre del cmdlet también coincide con sus alias, por lo que `PowerShell(Get-ChildItem *)` coincide con `gci`, `ls` y `dir` también. La coincidencia no distingue mayúsculas de minúsculas.358Los alias comunes se canonicalizan antes de coincidir. Una regla escrita para el nombre del cmdlet también coincide con sus alias, por lo que `PowerShell(Get-ChildItem *)` coincide con `gci`, `ls` y `dir` también. La coincidencia no distingue mayúsculas de minúsculas.

357 359 

358Claude Code analiza el AST de PowerShell y verifica cada comando en un comando compuesto de forma independiente. Los operadores de tubería `|`, separadores de declaración `;` y en PowerShell 7+ los operadores de cadena `&&` y `||` dividen un comando compuesto en subcomandos. Una regla debe coincidir con cada subcomando para que se permita el comando compuesto.360Claude Code analiza el AST de PowerShell y verifica cada comando en un comando compuesto de forma independiente. Los operadores de pipeline `|`, separadores de declaración `;` y en PowerShell 7+ los operadores de cadena `&&` y `||` dividen un comando compuesto en subcomandos. Una regla debe coincidir con cada subcomando para que se permita el comando compuesto.

359 361 

360<h3 id="read-and-edit">362<h3 id="read-and-edit">

361 Read y Edit363 Read y Edit

362</h3>364</h3>

363 365 

364Para bloquear las herramientas de archivo de Claude de leer un archivo o directorio, agregue una regla de negación `Read` para su ruta, como `Read(./.env)` o `Read(./secrets/**)`; [Excluir archivos sensibles](/docs/es/settings-reference#exclude-sensitive-files) tiene un ejemplo listo para pegar.366Para bloquear las herramientas de archivo de Claude de leer un archivo o directorio, agregue una regla de negación `Read` para su ruta, como `Read(./.env)` o `Read(./secrets/**)`; [Exclude sensitive files](/docs/es/settings-reference#exclude-sensitive-files) tiene un ejemplo listo para pegar.

365 367 

366Las reglas `Edit` se aplican a todas las herramientas integradas que editan archivos. Claude hace un esfuerzo de mejor intento para aplicar reglas `Read` a todas las herramientas integradas que leen archivos como Grep y Glob, a menciones `@file` en sus indicaciones, y a la selección y contexto de archivo abierto que un [IDE](/docs/es/vs-code#the-built-in-ide-mcp-server) conectado comparte con Claude.368Las reglas `Edit` se aplican a todas las herramientas integradas que editan archivos. Claude hace un esfuerzo de mejor intento para aplicar reglas `Read` a todas las herramientas integradas que leen archivos como Grep y Glob, a menciones `@file` en sus solicitudes y a la selección y contexto de archivo abierto que un [IDE](/docs/es/vs-code#the-built-in-ide-mcp-server) conectado comparte con Claude.

367 369 

368Una regla de negación `Read` también bloquea las [herramientas Edit y Write](/docs/es/errors#file-is-covered-by-a-read-deny-rule) en la misma ruta, incluyendo crear un archivo nuevo allí. NotebookEdit no está cubierto, así que agregue una regla de negación `Edit` para rutas que ninguna herramienta pueda cambiar. La verificación requiere Claude Code v2.1.208 o posterior en ediciones, y v2.1.228 o posterior en escrituras.370Una regla de negación `Read` también bloquea las herramientas [Edit y Write](/docs/es/errors#file-is-covered-by-a-read-deny-rule) en la misma ruta, incluida la creación de un nuevo archivo allí. NotebookEdit no está cubierto, por lo que agregue una regla de negación `Edit` para rutas que ninguna herramienta pueda cambiar. La verificación requiere Claude Code v2.1.208 o posterior en ediciones, y v2.1.228 o posterior en escrituras.

369 371 

370Claude Code verifica permisos de archivo solo contra reglas `Edit(path)` y `Read(path)`. Si escribe una regla de ruta para `Write`, `NotebookEdit`, `Glob` o la herramienta heredada `MultiEdit` en su lugar, Claude Code acepta la regla pero nunca la consulta, y [advierte al inicio](/docs/es/errors#is-not-matched-by-file-permission-checks), excepto para una regla `Glob` pasada en `--allowedTools`. Use `Edit(docs/**)` en lugar de `Write(docs/**)`, `NotebookEdit(docs/**)` o `MultiEdit(docs/**)`, y `Read(docs/**)` en lugar de `Glob(docs/**)`. Claude Code no advierte sobre una regla de nombre de herramienta sin ruta, como una regla de negación para `Write`; coincide esa regla a nivel de herramienta en todas partes. Requiere Claude Code v2.1.210 o posterior.372Claude Code verifica permisos de archivo solo contra reglas `Edit(path)` y `Read(path)`. Si escribe una regla de ruta para `Write`, `NotebookEdit`, `Glob` o la herramienta `MultiEdit` heredada en su lugar, Claude Code acepta la regla pero nunca la consulta, y [advierte al inicio](/docs/es/errors#is-not-matched-by-file-permission-checks), excepto para una regla `Glob` pasada en `--allowedTools`. Use `Edit(docs/**)` en lugar de `Write(docs/**)`, `NotebookEdit(docs/**)` o `MultiEdit(docs/**)`, y `Read(docs/**)` en lugar de `Glob(docs/**)`. Claude Code no advierte sobre una regla de nombre de herramienta sin ruta, como una regla de negación para `Write`; coincide esa regla a nivel de herramienta en todas partes. Requiere Claude Code v2.1.210 o posterior.

371 373 

372<Warning>374<Warning>

373 Las reglas de negación Read y Edit se aplican a las herramientas de archivo integradas de Claude, a comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail` y `sed`, y a los objetivos de [redirecciones](#redirections) de Bash como `> file` y `< file`. No se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .` ejecutado desde el directorio que contiene el archivo, o a subprocesos arbitrarios que leen o escriben archivos indirectamente, como un script de Python o Node que abre archivos por sí mismo. Para aplicación a nivel del SO que bloquea todos los procesos de acceder a una ruta, [habilite el sandbox](/docs/es/sandboxing).375 Las reglas de negación Read y Edit se aplican a las herramientas de archivo integradas de Claude, a comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail`, `sed` y `tee`, y a los destinos de [redirecciones](#redirections) de Bash como `> file` y `< file`. No se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .` ejecutado desde el directorio que contiene el archivo, o a subprocesos arbitrarios que leen o escriben archivos indirectamente, como un script de Python o Node que abre archivos por sí mismo. Para la aplicación a nivel del SO que bloquea todos los procesos de acceder a una ruta, [habilite el sandbox](/docs/es/sandboxing).

374</Warning>376</Warning>

375 377 

376Las reglas Read y Edit ambas usan sintaxis de patrón [gitignore](https://git-scm.com/docs/gitignore) con cuatro tipos de patrones distintos; para patrones de directorio de un solo segmento, la profundidad de coincidencia también depende del tipo de regla, descrito más adelante en esta sección:378Las reglas Read y Edit usan ambas sintaxis de patrón [gitignore](https://git-scm.com/docs/gitignore) con cuatro tipos de patrón distintos; para patrones de directorio de un solo segmento, la profundidad de coincidencia también depende del tipo de regla, descrito más adelante en esta sección:

377 379 

378| Patrón | Significado | Ejemplo | Coincide |380| Patrón | Significado | Ejemplo | Coincide |

379| ----------------- | --------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------- |381| ----------------- | --------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------- |

380| `//path` | Ruta absoluta desde la raíz del sistema de archivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |382| `//path` | Ruta absoluta desde la raíz del sistema de archivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

381| `~/path` | Ruta desde el directorio home | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |383| `~/path` | Ruta desde el directorio de inicio | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

382| `/path` | Ruta relativa a la fuente de configuración | `Edit(/src/**/*.ts)` | `<directorio de trabajo principal>/src/**/*.ts` en configuración de proyecto |384| `/path` | Ruta relativa a la fuente de configuración | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` en configuración de proyecto |

383| `path` o `./path` | Ruta relativa al directorio actual | `Read(*.env)` | `<cwd>/*.env` |385| `path` o `./path` | Ruta relativa al directorio actual | `Read(*.env)` | `<cwd>/*.env` |

384 386 

385<Warning>387<Warning>

386 Un patrón como `/Users/alice/file` no es una ruta absoluta. La barra diagonal inicial única se ancla en la fuente de configuración, no en la raíz del sistema de archivos. Use `//Users/alice/file` para rutas absolutas.388 Un patrón como `/Users/alice/file` no es una ruta absoluta. La barra inclinada inicial única se ancla en la fuente de configuración, no en la raíz del sistema de archivos. Use `//Users/alice/file` para rutas absolutas.

387</Warning>389</Warning>

388 390 

389Un patrón `/path` se ancla en un directorio asociado con la fuente de configuración que lo define, por lo que la misma regla coincide con diferentes ubicaciones dependiendo de dónde la coloque:391Un patrón `/path` se ancla en un directorio asociado con la fuente de configuración que lo define, por lo que la misma regla coincide con ubicaciones diferentes dependiendo de dónde la coloque:

390 392 

391| Regla definida en | `/path` se resuelve a |393| Regla definida en | `/path` se resuelve a |

392| :---------------------------------------------------- | :--------------------------------------- |394| :---------------------------------------------------- | :--------------------------------- |

393| Configuración de proyecto en `.claude/settings.json` | `<directorio de trabajo principal>/path` |395| Configuración de proyecto en `.claude/settings.json` | `<primary working directory>/path` |

394| Configuración local en `.claude/settings.local.json` | `<directorio de trabajo principal>/path` |396| Configuración local en `.claude/settings.local.json` | `<primary working directory>/path` |

395| Configuración de usuario en `~/.claude/settings.json` | `~/.claude/path` |397| Configuración de usuario en `~/.claude/settings.json` | `~/.claude/path` |

396| Un archivo pasado con `--settings <file>` | `<directorio del archivo>/path` |398| Un archivo pasado con `--settings <file>` | `<directory of file>/path` |

397| Banderas CLI o reglas de sesión | `<directorio de trabajo principal>/path` |399| Banderas CLI o reglas de sesión | `<primary working directory>/path` |

398 400 

399Una regla que agrega a través de `/permissions` sigue la fila para el archivo de configuración en el que la guarda.401Una regla que agrega a través de `/permissions` sigue la fila para el archivo de configuración en el que la guarda.

400 402 

401Las reglas de configuración local se anclan en el [directorio de trabajo principal](#working-directories) de la sesión, no en la raíz del repositorio donde Claude Code [almacena el archivo](#permission-system) en v2.1.211 y posterior. En una sesión iniciada en la raíz del repositorio, los dos directorios son iguales; en una sesión de [worktree](/docs/es/worktrees), una regla compartida como `Edit(/src/**)` coincide con el directorio `src/` propio de ese worktree.403Las reglas de configuración local se anclan en el [directorio de trabajo principal](#working-directories) de la sesión, no en la raíz del repositorio donde Claude Code [almacena el archivo](#permission-system) en v2.1.211 y posterior. En una sesión iniciada en la raíz del repositorio, los dos directorios son iguales; en una sesión de [worktree](/docs/es/worktrees), una regla compartida como `Edit(/src/**)` coincide con el directorio `src/` propio de ese worktree.

402 404 

403Una regla de negación como `Read(/secrets/**)` en configuración de usuario bloquea `~/.claude/secrets/**`, no un directorio `secrets` en su proyecto. Para escribir una regla en configuración de usuario que se aplique dentro de cada proyecto, use una ruta absoluta `//` o una ruta relativa a home `~/` en su lugar.405Una regla de negación como `Read(/secrets/**)` en configuración de usuario bloquea `~/.claude/secrets/**`, no un directorio `secrets` en su proyecto. Para escribir una regla en configuración de usuario que se aplique dentro de cada proyecto, use una ruta `//` absoluta o una ruta `~/` relativa a inicio en su lugar.

404 406 

405En Windows, las rutas se normalizan a forma POSIX antes de coincidir. `C:\Users\alice` se convierte en `/c/Users/alice`, así que use `//c/**/.env` para coincidir con archivos `.env` en cualquier lugar de esa unidad. Para coincidir en todas las unidades, use `//**/.env`.407En Windows, las rutas se normalizan a forma POSIX antes de coincidir. `C:\Users\alice` se convierte en `/c/Users/alice`, por lo que use `//c/**/.env` para coincidir con archivos `.env` en cualquier lugar de esa unidad. Para coincidir en todas las unidades, use `//**/.env`.

406 408 

407Ejemplos:409Ejemplos:

408 410 

409* `Edit(/docs/**)`: edita en `<directorio de trabajo principal>/docs/`, no `/docs/` o `<directorio de trabajo principal>/.claude/docs/`411* `Edit(/docs/**)`: ediciones en `<primary working directory>/docs/`, no `/docs/` o `<primary working directory>/.claude/docs/`

410* `Read(~/.zshrc)`: lee el `.zshrc` de su directorio home412* `Read(~/.zshrc)`: lee el `.zshrc` de su directorio de inicio

411* `Edit(//tmp/scratch.txt)`: edita la ruta absoluta `/tmp/scratch.txt`413* `Edit(//tmp/scratch.txt)`: edita la ruta absoluta `/tmp/scratch.txt`

412* `Read(src/**)`: como regla de permiso, lee desde `<directorio-actual>/src/` solamente; como regla de negación o solicitud, coincide con un directorio `src` a cualquier profundidad bajo el directorio actual414* `Read(src/**)`: como regla de permiso, lee desde `<current-directory>/src/` solo; como regla de negación o solicitud, coincide con un directorio `src` a cualquier profundidad bajo el directorio actual

413 415 

414Una regla solo coincide con archivos bajo su anclaje; dentro de ese límite, la profundidad de coincidencia depende de la forma del patrón y, para patrones de directorio de un solo segmento, el tipo de regla, descrito a continuación. Los nombres de archivo desnudos siguen la semántica de gitignore y coinciden a cualquier profundidad, por lo que `Read(.env)` y `Read(**/.env)` son equivalentes:416Una regla solo coincide con archivos bajo su ancla; dentro de ese límite, la profundidad de coincidencia depende de la forma del patrón y, para patrones de directorio de un solo segmento, del tipo de regla, descrito a continuación. Los nombres de archivo desnudos siguen la semántica de gitignore y coinciden a cualquier profundidad, por lo que `Read(.env)` y `Read(**/.env)` son equivalentes:

415 417 

416| Regla de negación | Bloquea | No bloquea |418| Regla de negación | Bloquea | No bloquea |

417| ------------------------------ | ----------------------------------------------------------- | -------------------------------------------------------------- |419| ------------------------------ | ----------------------------------------------------------- | ---------------------------------------------------------- |

418| `Read(.env)` o `Read(**/.env)` | cualquier `.env` en o bajo el directorio actual | `.env` en un directorio padre u otro proyecto |420| `Read(.env)` o `Read(**/.env)` | cualquier `.env` en o bajo el directorio actual | `.env` en un directorio padre u otro proyecto |

419| `Read(//**/.env)` | cualquier `.env` en cualquier lugar del sistema de archivos | nada; la regla está anclada en la raíz del sistema de archivos |421| `Read(//**/.env)` | cualquier `.env` en cualquier lugar del sistema de archivos | nada; la regla se ancla en la raíz del sistema de archivos |

420 422 

421Un patrón relativo con un solo segmento de directorio, como `src/**`, coincide a diferentes profundidades dependiendo del tipo de regla:423Un patrón relativo con un segmento de directorio único, como `src/**`, coincide a diferentes profundidades dependiendo del tipo de regla:

422 424 

423* **Reglas de permiso**: `Edit(src/**)` coincide solo con `<cwd>/src` y los archivos bajo él. Para permitir un nombre de directorio a cualquier profundidad, escriba `Edit(**/src/**)`.425* **Reglas de permiso**: `Edit(src/**)` coincide solo con `<cwd>/src` y los archivos bajo él. Para permitir un nombre de directorio a cualquier profundidad, escriba `Edit(**/src/**)`.

424* **Reglas de negación y solicitud**: `Read(secrets/**)` coincide con un directorio llamado `secrets` a cualquier profundidad bajo el directorio actual, por lo que la regla también se aplica a copias anidadas.426* **Reglas de negación y solicitud**: `Read(secrets/**)` coincide con un directorio llamado `secrets` a cualquier profundidad bajo el directorio actual, por lo que la regla también se aplica a copias anidadas.


428El siguiente ejemplo muestra cada forma de patrón contra un proyecto con un directorio `src/` de nivel superior y una copia anidada bajo `vendor/`:430El siguiente ejemplo muestra cada forma de patrón contra un proyecto con un directorio `src/` de nivel superior y una copia anidada bajo `vendor/`:

429 431 

430```text theme={null}432```text theme={null}

431<directorio-actual>/433<current-directory>/

432├── src/434├── src/

433│ └── app.ts435│ └── app.ts

434└── vendor/436└── vendor/


445| `Edit(**/src/**)` en cualquier tipo de regla | Sí | Sí |447| `Edit(**/src/**)` en cualquier tipo de regla | Sí | Sí |

446 448 

447<Note>449<Note>

448 En patrones gitignore, `*` coincide dentro de un solo segmento de ruta y puede aparecer en cualquier posición en el patrón, mientras que `**` coincide en directorios.450 En patrones de gitignore, `*` coincide dentro de un segmento de ruta único y puede aparecer en cualquier posición en el patrón, mientras que `**` coincide en directorios.

449</Note>451</Note>

450 452 

451Cuando aprueba una ruta de archivo con "Sí, no preguntar de nuevo", Claude Code escapa caracteres de patrón gitignore en esa ruta, como `[`, `]` y `*`, por lo que la regla generada coincide solo con la ruta literal que aprobó. Las reglas que escribe usted mismo no se escapan. Antes de v2.1.202, Claude Code guardaba la ruta sin escapar, por lo que una regla generada para un directorio llamado `[2024-06] Reports` podría fallar en coincidir con su propia ruta o coincidir con directorios hermanos no deseados.453Cuando aprueba una ruta de archivo con "Sí, y no vuelvas a preguntar", Claude Code escapa caracteres de patrón de gitignore en esa ruta, como `[`, `]` y `*`, por lo que la regla generada coincide solo con la ruta literal que aprobó. Las reglas que escribe usted mismo no se escapan. Antes de v2.1.202, Claude Code guardaba la ruta sin escapar, por lo que una regla generada para un directorio llamado `[2024-06] Reports` podría no coincidir con su propia ruta o coincidir con directorios hermanos no deseados.

452 454 

453No necesita escapar paréntesis en una ruta, por lo que `Edit(./Finance (2024)/**)` coincide con la carpeta `Finance (2024)` tal como está escrita.455No necesita escapar paréntesis en una ruta, por lo que `Edit(./Finance (2024)/**)` coincide con la carpeta `Finance (2024)` tal como está escrita.

454 456 

455Una regla de negación o solicitud cuya ruta no es utilizable como patrón gitignore aún protege esa ruta exacta. Una regla de permiso con un patrón no utilizable no aprueba nada.457Una regla de negación o solicitud cuya ruta no es utilizable como patrón de gitignore aún protege esa ruta exacta. Una regla de permiso con un patrón no utilizable no aprueba nada.

458 

459Un patrón de negación o solicitud que comienza con `!` es una negación de gitignore. Extrae las rutas que coincide de las reglas `path` o `./path` enumeradas antes. En la lista `deny` de un archivo de configuración, `Read(*.env)` seguido de `Read(!sample.env)` bloquea cada archivo cuyo nombre termina en `.env` a cualquier profundidad, excepto archivos nombrados `sample.env`. Una regla `!` enumerada primero no extrae nada.

460 

461La extracción solo alcanza reglas de la misma fuente. Un `Read(!.env)` en configuración de proyecto o en `--disallowedTools` no cancela un `Read(./.env)` de negación de configuración administrada o cualquier otro archivo de configuración.

456 462 

457Cuando Claude accede a un symlink, las reglas de permisos verifican dos rutas: el symlink mismo y el archivo al que se resuelve. Las reglas de permiso y negación tratan ese par de manera diferente: las reglas de permiso recurren a solicitarle, mientras que las reglas de negación bloquean directamente.463Dos límites estrechan lo que un patrón `!` puede extraer:

458 464 

459* **Reglas de permiso**: se aplican solo cuando tanto la ruta del symlink como su destino coinciden. Un symlink dentro de un directorio permitido que apunta fuera de él aún le solicita.465* Claude Code lee un patrón `!` relativo al directorio actual incluso cuando `/`, `~/` o `//` sigue a `!`, por lo que el patrón no puede alcanzar una regla anclada con uno de esos prefijos. `Read(!~/notes/public/**)` no extrae nada de `Read(~/notes/**)`.

460* **Reglas de negación**: se aplican cuando la ruta del symlink o su destino coincide. Un symlink que apunta a un archivo denegado está denegado. Por ejemplo, con `Read(./project/**)` permitido y `Read(~/.ssh/**)` denegado, un symlink en `./project/key` que apunta a `~/.ssh/id_rsa` está bloqueado: el destino falla la regla de permiso y coincide con la regla de negación.466* Una extracción no puede reabrir un archivo dentro de un directorio que una regla bloquea como un todo. Con `Read(secrets/**)` y `Read(!secrets/public/**)`, Claude Code aún bloquea `secrets/public` junto con el resto de `secrets`.

467 

468Cuando Claude accede a un symlink, las reglas de permiso verifican dos rutas: el symlink en sí y el archivo al que se resuelve. Las reglas de permiso y negación tratan ese par de manera diferente: las reglas de permiso vuelven a solicitar aprobación, mientras que las reglas de negación bloquean directamente.

469 

470* **Reglas de permiso**: se aplican solo cuando tanto la ruta del symlink como su destino coinciden. Un symlink dentro de un directorio permitido que apunta fuera de él aún le solicita aprobación.

471* **Reglas de negación**: se aplican cuando la ruta del symlink o su destino coincide. Un symlink que apunta a un archivo negado está negado en sí mismo. Por ejemplo, con `Read(./project/**)` permitido y `Read(~/.ssh/**)` negado, un symlink en `./project/key` que apunta a `~/.ssh/id_rsa` está bloqueado: el destino falla la regla de permiso y coincide con la regla de negación.

461 472 

462En macOS y Linux, una regla de negación o solicitud escrita a través de un directorio con symlink con un patrón `//`, `~/` o `/` también se aplica en la ubicación real del directorio. Por ejemplo, en macOS, donde `/etc` se resuelve a `/private/etc`, `Read(//etc/**)` también bloquea `/private/etc/hosts`. Antes de v2.1.268, una regla de negación o solicitud escrita a través de un directorio con symlink no se aplicaba a una ruta dada por su ubicación real.473En macOS y Linux, una regla de negación o solicitud escrita a través de un directorio con symlink con un patrón `//`, `~/` o `/` también se aplica en la ubicación real del directorio. Por ejemplo, en macOS, donde `/etc` se resuelve a `/private/etc`, `Read(//etc/**)` también bloquea `/private/etc/hosts`. Antes de v2.1.268, una regla de negación o solicitud escrita a través de un directorio con symlink no se aplicaba a una ruta dada por su ubicación real.

463 474 

464Cuando una herramienta abre un archivo aprobado, Claude Code [confirma que la ruta aún se resuelve a la ubicación que la verificación de permisos aprobó](/docs/es/errors#refusing-after-a-symlink-changed).475Cuando una herramienta abre un archivo aprobado, Claude Code [confirma que la ruta aún se resuelve a la ubicación que la verificación de permiso aprobó](/docs/es/errors#refusing-after-a-symlink-changed).

465 476 

466Grep y Glob buscan el directorio al que se resuelve el argumento `path`. Claude Code aplica reglas de negación `Read` a ese directorio.477Grep y Glob buscan el directorio al que se resuelve el argumento `path`. Claude Code aplica reglas de negación `Read` a ese directorio.

467 478 


469 WebFetch480 WebFetch

470</h3>481</h3>

471 482 

472Las reglas WebFetch usan un prefijo `domain:` y coinciden con el nombre de host de la URL solicitada. La coincidencia no distingue mayúsculas de minúsculas, admite comodines `*` y elimina un punto final de ambas la regla y el nombre de host para que `example.com.` y `example.com` se traten igual.483Las reglas de WebFetch usan un prefijo `domain:` y coinciden contra el nombre de host de la URL solicitada. La coincidencia no distingue mayúsculas de minúsculas, admite comodines `*` y elimina un `.` final de la regla y el nombre de host para que `example.com.` y `example.com` se traten igual.

473 484 

474* `WebFetch(domain:example.com)` coincide con solicitudes a `example.com`485* `WebFetch(domain:example.com)` coincide con solicitudes a `example.com`

475* `WebFetch(domain:*.example.com)` coincide con cualquier subdominio a cualquier profundidad, como `api.example.com` o `a.b.example.com`, pero no con `example.com` mismo486* `WebFetch(domain:*.example.com)` coincide con cualquier subdominio a cualquier profundidad, como `api.example.com` o `a.b.example.com`, pero no `example.com` en sí

476* `WebFetch(domain:*)` coincide con cada dominio. No es lo mismo que una regla `WebFetch` desnuda; vea [Permitir o negar cada búsqueda](#allow-or-deny-every-fetch)487* `WebFetch(domain:*)` coincide con cada dominio. No es lo mismo que una regla `WebFetch` desnuda; vea [Allow or deny every fetch](#allow-or-deny-every-fetch)

477 488 

478En cualquier posición que no sea un `*.` inicial o un `*` desnudo, el comodín coincide solo con el texto entre dos puntos. `WebFetch(domain:example.*)` coincide con `example.org`, donde `*` se convierte en `org`, pero no con `example.evil.com`, donde `*` tendría que convertirse en `evil.com` y cruzar un punto. Esto evita que un comodín final coincida con dominios que un atacante podría registrar.489En cualquier posición que no sea un `*.` inicial o un `*` desnudo, el comodín coincide solo con el texto entre dos puntos. `WebFetch(domain:example.*)` coincide con `example.org`, donde `*` se convierte en `org`, pero no `example.evil.com`, donde `*` tendría que convertirse en `evil.com` y cruzar un punto. Esto evita que un comodín final coincida con dominios que un atacante podría registrar.

479 490 

480Los comodines en reglas `WebFetch` requieren Claude Code v2.1.172 o posterior para coincidir con búsquedas.491Los comodines en reglas `WebFetch` requieren Claude Code v2.1.172 o posterior para coincidir con búsquedas.

481 492 


483 Permitir o negar cada búsqueda494 Permitir o negar cada búsqueda

484</h4>495</h4>

485 496 

486Una regla `WebFetch` desnuda es el nombre de la herramienta sin una parte `domain:`, como `"deny": ["WebFetch"]`. Tanto ella como `WebFetch(domain:*)` cubren cada URL, pero Claude Code las aplica de manera diferente, y solo la forma `domain:` también agrega su dominio a la [lista de dominios permitidos o denegados](/docs/es/sandboxing#network-isolation) del sandbox. Esa sección enumera las formas de comodín que el sandbox honra y la versión que agregó `*` desnudo.497Una regla `WebFetch` desnuda es el nombre de la herramienta sin una parte `domain:`, como `"deny": ["WebFetch"]`. Tanto ella como `WebFetch(domain:*)` cubren cada URL, pero Claude Code las aplica de manera diferente, y solo la forma `domain:` también agrega su dominio a la [lista de dominios permitidos o negados](/docs/es/sandboxing#network-isolation) del sandbox. Esa sección enumera las formas de comodín que el sandbox honra y la versión que agregó `*` desnudo.

487 498 

488Cada fila muestra qué hace una regla en la lista `allow` y en la lista `deny`:499Cada fila muestra qué hace una regla en la lista `allow` y en la lista `deny`:

489 500 

490| Regla | En `allow` | En `deny` |501| Regla | En `allow` | En `deny` |

491| :------------------- | :---------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |502| :------------------- | :---------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

492| `WebFetch` | Claude busca sin solicitarle. No cambia qué hosts pueden alcanzar los comandos sandboxed. | Claude Code elimina la herramienta `WebFetch`, por lo que Claude no puede buscar en absoluto. No cambia qué hosts pueden alcanzar los comandos sandboxed. |503| `WebFetch` | Claude busca sin solicitarle aprobación. No cambia qué hosts pueden alcanzar los comandos en sandbox. | Claude Code elimina la herramienta `WebFetch`, por lo que Claude no puede buscar en absoluto. No cambia qué hosts pueden alcanzar los comandos en sandbox. |

493| `WebFetch(domain:*)` | Claude busca sin solicitarle, y los comandos sandboxed pueden alcanzar cualquier host. | Claude Code mantiene la herramienta y rechaza cada búsqueda, y los comandos sandboxed no pueden alcanzar ningún host. |504| `WebFetch(domain:*)` | Claude busca sin solicitarle aprobación, y los comandos en sandbox pueden alcanzar cualquier host. | Claude Code mantiene la herramienta y rechaza cada búsqueda, y los comandos en sandbox no pueden alcanzar ningún host. |

494 505 

495Las dos formas también difieren en lecturas de [artefactos](/docs/es/artifacts), las páginas que la herramienta Artifact publica en claude.ai. Una regla `WebFetch` desnuda de negación o solicitud no se aplica a esas lecturas. Una regla `domain:` que cubre `claude.ai` o el host de contenido `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` o `WebFetch(domain:*)`, niega cada lectura o solicita antes de ella. Una regla [`Artifact`](/docs/es/artifacts#disable-artifacts) hace lo mismo.506Las dos formas también difieren en lecturas de [artefactos](/docs/es/artifacts), las páginas que la herramienta Artifact publica en claude.ai. Una regla de negación o solicitud `WebFetch` desnuda no se aplica a esas lecturas. Una regla `domain:` que cubre `claude.ai` o el host de contenido `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` o `WebFetch(domain:*)`, niega cada lectura o solicita aprobación antes. Una regla [`Artifact`](/docs/es/artifacts#disable-artifacts) hace lo mismo.

496 507 

497Cuando una regla bloquea una lectura, la negación nombra la regla. Antes de v2.1.268, una regla `WebFetch` desnuda de negación bloqueaba cada lectura de artefacto, y una regla de solicitud desnuda solicitaba antes de cada una.508Cuando una regla bloquea una lectura, la negación nombra la regla. Antes de v2.1.268, una regla de negación `WebFetch` desnuda bloqueaba cada lectura de artefacto, y una regla de solicitud desnuda solicitaba aprobación antes de cada una.

498 509 

499Para permitir que Claude busque libremente mientras mantiene la lista de permitidos del sandbox como está, use la forma desnuda. Este `settings.json` hace eso:510Para permitir que Claude busque libremente mientras mantiene la lista de permitidos del sandbox como está, use la forma desnuda. Este `settings.json` hace eso:

500 511 


506}517}

507```518```

508 519 

509Cuando le pide a Claude que busque una página, busca sin un aviso. Cuando le pide que ejecute un `curl` [sandboxed](/docs/es/sandboxing) contra un host fuera de la lista de permitidos del sandbox, Claude Code aún le solicita para ese host, o en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) envía la solicitud al clasificador, porque la regla desnuda no agregó el host a la lista de permitidos.520Cuando le pide a Claude que busque una página, busca sin una solicitud. Cuando le pide que ejecute un `curl` [en sandbox](/docs/es/sandboxing) contra un host fuera de la lista de permitidos del sandbox, Claude Code aún le solicita aprobación para ese host, porque la regla desnuda no agregó el host a la lista de permitidos.

521 

522En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra el host en los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) del comando para que el clasificador revise.

510 523 

511<h3 id="mcp">524<h3 id="mcp">

512 MCP525 MCP

513</h3>526</h3>

514 527 

515Las reglas MCP usan el nombre del servidor tal como se configura en Claude Code, opcionalmente seguido del nombre de una herramienta de ese servidor.528Las reglas de MCP usan el nombre del servidor tal como está configurado en Claude Code, opcionalmente seguido del nombre de una herramienta de ese servidor.

516 529 

517* `mcp__puppeteer` coincide con cualquier herramienta proporcionada por el servidor `puppeteer`530* `mcp__puppeteer` coincide con cualquier herramienta proporcionada por el servidor `puppeteer`

518* `mcp__puppeteer__*` usa sintaxis de comodín y también coincide con todas las herramientas del servidor `puppeteer`531* `mcp__puppeteer__*` usa sintaxis de comodín y también coincide con todas las herramientas del servidor `puppeteer`

519* `mcp__puppeteer__puppeteer_navigate` coincide con la herramienta `puppeteer_navigate` proporcionada por el servidor `puppeteer`532* `mcp__puppeteer__puppeteer_navigate` coincide con la herramienta `puppeteer_navigate` proporcionada por el servidor `puppeteer`

520 533 

521Si su organización ha establecido una herramienta de conector [claude.ai](/docs/es/mcp#organization-controls-on-connector-tools) en `ask` y esa configuración llega a Claude Code en su sesión, las reglas de permiso para esa herramienta no tienen efecto: Claude Code solicita en cada llamada, incluso en modos `auto` y `bypassPermissions`. En modo `dontAsk`, que nunca solicita, Claude Code niega la llamada en su lugar. Las herramientas de conectores que Claude Code obtiene por sí mismo aparecen como `mcp__claude_ai_<server>__<tool>`.534Si su organización ha establecido una herramienta de [conector claude.ai](/docs/es/mcp#organization-controls-on-connector-tools) en `ask` y esa configuración llega a Claude Code en su sesión, las reglas de permiso para esa herramienta no tienen efecto: Claude Code solicita aprobación en cada llamada, incluso en modos `auto` y `bypassPermissions`. En modo `dontAsk`, que nunca solicita aprobación, Claude Code niega la llamada en su lugar. Las herramientas de conectores que Claude Code obtiene por sí mismo aparecen como `mcp__claude_ai_<server>__<tool>`.

522 535 

523En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude ejecuta comandos de shell a través de la herramienta `mcp__workspace__bash` de Cowork en lugar de la herramienta `Bash` integrada, y Cowork igualmente proporciona `mcp__workspace__web_fetch` para búsquedas web. Claude Code también aplica reglas de negación que nombran la herramienta completa `Bash` o `WebFetch` a estas herramientas de Cowork, por lo que una regla de negación `Bash` administrada detiene a Claude de ejecutar comandos de shell en Cowork. Cuando Claude Code bloquea tal llamada, el mensaje nombra la herramienta de Cowork: `Permission to use mcp__workspace__bash has been denied.` Las reglas de permiso no se transfieren: Claude Code nunca aplica una regla de permiso `Bash` a `mcp__workspace__bash`.536En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude ejecuta comandos de shell a través de la herramienta `mcp__workspace__bash` de Cowork en lugar de la herramienta `Bash` integrada, y Cowork igualmente proporciona `mcp__workspace__web_fetch` para búsquedas web. Claude Code también aplica reglas de negación que nombran la herramienta `Bash` o `WebFetch` completa a estas herramientas de Cowork, por lo que una regla de negación `Bash` administrada detiene a Claude de ejecutar comandos de shell en Cowork. Cuando Claude Code bloquea tal llamada, el mensaje nombra la herramienta de Cowork: `Permission to use mcp__workspace__bash has been denied.` Las reglas de permiso no se transfieren: Claude Code nunca aplica una regla de permiso `Bash` a `mcp__workspace__bash`.

524 537 

525<h3 id="agent-subagents">538<h3 id="agent-subagents">

526 Agent (subagentes)539 Agent (subagentes)


546 Cd559 Cd

547</h3>560</h3>

548 561 

549Las reglas `Cd` controlan a qué directorios el comando [`/cd`](/docs/es/commands) puede mover la sesión. `Cd` no es una herramienta invocable por el modelo: Claude no puede llamarla, y las reglas se aplican solo cuando ejecuta `/cd` usted mismo.562Las reglas `Cd` controlan a qué directorios el comando [`/cd`](/docs/es/commands) puede mover la sesión. `Cd` no es una herramienta invocable por modelo: Claude no puede llamarla, y las reglas se aplican solo cuando ejecuta `/cd` usted mismo.

550 563 

551Una regla de negación `Cd` desnuda deshabilita `/cd` completamente. Una regla de negación `Cd(<path-pattern>)` bloquea objetivos coincidentes. Las reglas de negación verifican cada ortografía del objetivo, incluyendo cada salto de symlink que resuelve, por lo que una regla escrita para una ruta también bloquea objetivos que se resuelven a ella.564Una regla de negación `Cd` desnuda deshabilita `/cd` completamente. Una regla de negación `Cd(<path-pattern>)` bloquea destinos coincidentes. Las reglas de negación verifican cada ortografía del destino, incluido cada salto de symlink que se resuelve, por lo que una regla escrita para una ruta también bloquea destinos que se resuelven a ella.

552 565 

553Agregar cualquier regla de permiso `Cd` cambia `/cd` al modo de lista de permitidos: el directorio objetivo resuelto debe coincidir con una de sus reglas de permiso, o `/cd` se niega. Sin reglas `Cd` configuradas, `/cd` mantiene su comportamiento predeterminado y le solicita confiar en un directorio desconocido.566Agregar cualquier regla de permiso `Cd` cambia `/cd` a modo de lista de permitidos: el directorio de destino resuelto debe coincidir con una de sus reglas de permiso, o `/cd` rechaza. Sin reglas `Cd` configuradas, `/cd` mantiene su comportamiento predeterminado y le solicita que confíe en un directorio desconocido.

554 567 

555Los patrones de ruta comparten los anclajes `//`, `~/` y `/` de [reglas Read y Edit](#read-and-edit), pero la coincidencia está anclada a la ruta del directorio completo en lugar de estilo gitignore. `*` coincide exactamente con un segmento de ruta y `**` coincide en segmentos. Un `/**` final también coincide con su raíz nombrada.568Los patrones de ruta comparten los anclajes `//`, `~/` y `/` de [reglas Read y Edit](#read-and-edit), pero la coincidencia se ancla a la ruta de directorio completa en lugar de estilo gitignore. `*` coincide exactamente con un segmento de ruta y `**` coincide en segmentos. Un `/**` final también coincide con su raíz nombrada.

556 569 

557| Regla | Coincide | No coincide |570| Regla | Coincide | No coincide |

558| --------------------- | ------------------------------------------------------------------------------------- | ----------------------------- |571| --------------------- | ------------------------------------------------------------------------------------- | ----------------------------- |


646Los permisos y el [sandboxing](/docs/es/sandboxing) son capas de seguridad complementarias:659Los permisos y el [sandboxing](/docs/es/sandboxing) son capas de seguridad complementarias:

647 660 

648* **Permisos** controlan qué herramientas puede usar Claude Code y qué archivos o dominios puede acceder. Se aplican a Bash, Read, Edit, WebFetch, MCP y todas las demás herramientas, excepto que una regla de negación o ask no puede bloquear [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) mientras cualquier otra herramienta permanezca.661* **Permisos** controlan qué herramientas puede usar Claude Code y qué archivos o dominios puede acceder. Se aplican a Bash, Read, Edit, WebFetch, MCP y todas las demás herramientas, excepto que una regla de negación o ask no puede bloquear [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) mientras cualquier otra herramienta permanezca.

649* **Sandboxing** proporciona aplicación a nivel del SO que restringe el acceso del sistema de archivos y red de la herramienta Bash. Se aplica solo a comandos Bash y sus procesos secundarios.662* **Sandboxing** proporciona aplicación a nivel del SO que restringe el acceso del sistema de archivos y red de los comandos Bash, PowerShell y [Monitor](/docs/es/tools-reference#monitor-tool) y sus procesos secundarios.

650 663 

651Use ambos para defensa en profundidad, ya que las restricciones de sandbox aún se aplican incluso si una inyección de solicitud omite la toma de decisiones de Claude. Las rutas y dominios de la configuración de sandbox y las reglas de permisos se [fusionan en la configuración final del sandbox](/docs/es/sandboxing#permission-rules).664Use ambos para defensa en profundidad, ya que las restricciones de sandbox aún se aplican incluso si una inyección de solicitud omite la toma de decisiones de Claude. Las rutas y dominios de la configuración de sandbox y las reglas de permisos se [fusionan en la configuración final del sandbox](/docs/es/sandboxing#permission-rules).

652 665 

platforms.md +2 −1

Details

73* [Desktop](/docs/es/desktop): revisión visual de diferencias, sesiones paralelas, uso de computadora y Dispatch73* [Desktop](/docs/es/desktop): revisión visual de diferencias, sesiones paralelas, uso de computadora y Dispatch

74* [VS Code](/docs/es/vs-code): la extensión Claude Code dentro de su editor74* [VS Code](/docs/es/vs-code): la extensión Claude Code dentro de su editor

75* [JetBrains](/docs/es/jetbrains): la extensión para IntelliJ, PyCharm y otros IDE de JetBrains75* [JetBrains](/docs/es/jetbrains): la extensión para IntelliJ, PyCharm y otros IDE de JetBrains

76* [Claude Code en la web](/docs/es/claude-code-on-the-web): sesiones en la nube que continúan ejecutándose cuando se desconecta76* [Web](/docs/es/claude-code-on-the-web): sesiones en la nube desde su navegador en claude.ai/code que continúan ejecutándose cuando se desconecta

77* [Proyectos](/docs/es/claude-projects): una conversación donde Claude coordina muchas sesiones en la nube para un cuerpo de trabajo e informa de vuelta

77* [Móvil](/docs/es/mobile): la aplicación Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) y [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) para iniciar y monitorear tareas mientras está lejos de su computadora78* [Móvil](/docs/es/mobile): la aplicación Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) y [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) para iniciar y monitorear tareas mientras está lejos de su computadora

78 79 

79<h3 id="integrations">80<h3 id="integrations">

Details

41}41}

42```42```

43 43 

44Una entrada puede ser una cadena simple con solo el nombre del plugin, como `"audit-logger"` en el ejemplo anterior, que depende de cualquier versión que proporcione el marketplace de ese plugin. Para más control, use un objeto con estos campos:44Una entrada puede ser una cadena simple con solo el nombre del plugin, como `"audit-logger"` en el manifiesto `deploy-kit`, que depende de cualquier versión que proporcione el marketplace de ese plugin. Para más control, use un objeto con estos campos:

45 45 

46| Field | Type | Description |46| Field | Type | Description |

47| :------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |47| :------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |


75 75 

76Instalar `backend-standard` resuelve e instala las cuatro dependencias.76Instalar `backend-standard` resuelve e instala las cuatro dependencias.

77 77 

78Para agregar una herramienta al conjunto estándar más adelante, publique una nueva versión de `backend-standard` con la dependencia adicional. La actualización automática está desactivada de forma predeterminada para marketplaces que no son de Anthropic, por lo que los ingenieros adoptan la nueva versión de una de dos formas:78Para agregar una herramienta al conjunto estándar más adelante, publique una nueva versión de `backend-standard` con la dependencia adicional. A menos que el marketplace [actualice automáticamente](/docs/es/discover-plugins#configure-auto-updates), los ingenieros adoptan la nueva versión de una de dos formas:

79 79 

80* Habilite la actualización automática para el marketplace en `/plugin`. La siguiente actualización automática mueve el paquete a la nueva versión e instala cualquier dependencia que agregue.80* Habilite la actualización automática para el marketplace en `/plugin`. La siguiente actualización automática mueve el paquete a la nueva versión e instala cualquier dependencia que agregue.

81* Ejecute `claude plugin update backend-standard`, luego `/reload-plugins` para instalar las dependencias recién agregadas.81* Ejecute `claude plugin update backend-standard`, luego `/reload-plugins` para instalar las dependencias recién agregadas.

Details

71 ```71 ```

72 72 

73 <Note>73 <Note>

74 Establecer `version` significa que los usuarios solo reciben actualizaciones cuando cambia este campo, así que incremente la versión en cada lanzamiento. Un plugin con una [fuente `command`](#command-sources) no está fijado por este campo. Si omite `version`, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management).74 Establecer `version` significa que los usuarios solo reciben actualizaciones cuando cambia este campo, así que incremente la versión en cada lanzamiento. Un plugin con una [fuente `command`](#command-sources) no está fijado por este campo. Tampoco lo está un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde un marketplace agregado como directorio local. Si omite `version`, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management).

75 </Note>75 </Note>

76 </Step>76 </Step>

77 77 


116Para obtener más información sobre lo que los plugins pueden hacer, incluidos hooks, agentes, servidores MCP y servidores LSP, consulte [Plugins](/docs/es/plugins).116Para obtener más información sobre lo que los plugins pueden hacer, incluidos hooks, agentes, servidores MCP y servidores LSP, consulte [Plugins](/docs/es/plugins).

117 117 

118<Note>118<Note>

119 **Cómo se instalan los plugins**: cuando los usuarios instalan un plugin, Claude Code copia el directorio del plugin a una ubicación de caché, excepto para una [fuente `command` en modo de enlace](#copy-mode-and-link-mode), que se usa en su lugar. Los plugins copiados no pueden hacer referencia a archivos fuera de su directorio usando rutas como `../shared-utils`, porque esos archivos no se copiarán.119 **Cómo se instalan los plugins**: cuando los usuarios instalan un plugin, Claude Code copia el directorio del plugin a una ubicación de caché, a menos que el plugin se cargue en su lugar. Una [fuente `command` en modo de enlace](#copy-mode-and-link-mode) se carga en su lugar, y también lo hace una [fuente de ruta relativa](#relative-paths) en un marketplace agregado desde un directorio local. Los plugins copiados no pueden hacer referencia a archivos fuera de su directorio usando rutas como `../shared-utils`, porque esos archivos no se copiarán.

120 120 

121 Si necesita compartir archivos entre plugins, use enlaces simbólicos. Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para obtener detalles.121 Si necesita compartir archivos entre plugins, use enlaces simbólicos. Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para obtener detalles.

122</Note>122</Note>


167</h3>167</h3>

168 168 

169| Campo | Tipo | Descripción | Ejemplo |169| Campo | Tipo | Descripción | Ejemplo |

170| :-------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------- |170| :-------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------- |

171| `name` | string | Identificador de marketplace en kebab-case, sin espacios, caracteres de control o caracteres de formato bidireccional. Esto es público: los usuarios lo ven al instalar plugins (por ejemplo, `/plugin install my-tool@your-marketplace`). Cada usuario puede registrar solo un marketplace por nombre: cuando agregan un segundo marketplace con el mismo nombre, Claude Code reemplaza el primero. Para publicar múltiples plugins bajo un nombre de marketplace, enumérelos todos en un único [`marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` |171| `name` | string | Identificador de marketplace en kebab-case, sin espacios, caracteres de control o caracteres de formato bidireccional. Esto es público: los usuarios lo ven al instalar plugins (por ejemplo, `/plugin install my-tool@your-marketplace`). Cada usuario puede registrar solo un marketplace por nombre: cuando agregan un segundo marketplace con el mismo nombre, Claude Code reemplaza el primero. Para publicar múltiples plugins bajo un nombre de marketplace, enumérelos todos en un único [`marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` |

172| `owner` | object | Información del mantenedor del marketplace ([consulte los campos a continuación](#owner-fields)) | |172| `owner` | object | Información del mantenedor del marketplace. Consulte [Campos del propietario](#owner-fields) | |

173| `plugins` | array | Lista de plugins disponibles | Ver a continuación |173| `plugins` | array | Lista de plugins disponibles | Ver [Entradas de plugins](#plugin-entries) |

174 174 

175<Note>175<Note>

176 **Nombres reservados**: Los siguientes nombres de marketplace están reservados para uso oficial de Anthropic y no pueden ser utilizados por marketplaces de terceros: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Los nombres que se hacen pasar por marketplaces oficiales, como `official-claude-plugins` o `anthropic-plugins-v2`, también están bloqueados. Reservar estos nombres evita que un marketplace de terceros se presente como una fuente publicada por Anthropic.176 **Nombres reservados**: Los siguientes nombres de marketplace están reservados para uso oficial de Anthropic y no pueden ser utilizados por marketplaces de terceros: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Los nombres que se hacen pasar por marketplaces oficiales, como `official-claude-plugins` o `anthropic-plugins-v2`, también están bloqueados. Reservar estos nombres evita que un marketplace de terceros se presente como una fuente publicada por Anthropic.

177 177 

178 Claude Code vuelve a verificar los nombres reservados cada vez que carga un marketplace, no solo cuando agrega uno. Un marketplace que fue registrado bajo uno de estos nombres antes de que el nombre se reservara deja de cargar e informa que está [registrado desde una fuente no confiable](/docs/es/errors#marketplace-is-registered-from-an-untrusted-source). Elimine ese marketplace y vuelva a agregarlo desde la fuente oficial de Anthropic. Un marketplace de terceros afectado por un nombre recién reservado se carga nuevamente tan pronto como lo vuelva a agregar bajo un nombre diferente. Antes de v2.1.205, `first-party-plugins` y `healthcare` no estaban reservados, y un marketplace ya registrado bajo un nombre reservado seguía cargándose. Antes de v2.1.265, `claude-tag-plugins` no estaba reservado.178 Claude Code vuelve a verificar los nombres reservados cada vez que carga un marketplace, no solo cuando agrega uno. Un marketplace que fue registrado bajo uno de estos nombres antes de que el nombre se reservara deja de cargar e informa que está [registrado desde una fuente no confiable](/docs/es/errors#marketplace-is-registered-from-an-untrusted-source). Elimine ese marketplace y vuelva a agregarlo desde la fuente oficial de Anthropic. Un marketplace de terceros afectado por un nombre recién reservado se carga nuevamente tan pronto como lo vuelva a agregar bajo un nombre diferente. Antes de v2.1.205, `first-party-plugins` y `healthcare` no estaban reservados, y un marketplace ya registrado bajo un nombre reservado seguía cargándose. Antes de v2.1.265, `claude-tag-plugins` no estaba reservado.

179 

180 Tampoco puede nombrar un marketplace `npm`, `pip`, `uv`, `cargo`, `github`, o `gh`, en cualquier combinación de mayúsculas y minúsculas. Esta verificación requiere Claude Code v2.1.275 o posterior.

179</Note>181</Note>

180 182 

181<h3 id="owner-fields">183<h3 id="owner-fields">


225**Campos de metadatos estándar:**227**Campos de metadatos estándar:**

226 228 

227| Campo | Tipo | Descripción |229| Campo | Tipo | Descripción |

228| :--------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |230| :--------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

229| `displayName` | string | Nombre legible mostrado en superficies de interfaz de usuario. Cuando ni la entrada ni el `plugin.json` del plugin establece uno, los usuarios ven el `name` del plugin. Puede contener espacios y cualquier capitalización. No se utiliza para espacios de nombres o búsqueda. |231| `displayName` | string | Nombre legible mostrado en superficies de interfaz de usuario. Cuando ni la entrada ni el `plugin.json` del plugin establece uno, los usuarios ven el `name` del plugin. Puede contener espacios y cualquier capitalización. No se utiliza para espacios de nombres o búsqueda. |

230| `description` | string | Descripción breve del plugin |232| `description` | string | Descripción breve del plugin |

231| `version` | string | Versión del plugin. Si se establece (aquí o en `plugin.json`), el plugin se fija a esta cadena y los usuarios solo reciben actualizaciones cuando cambia. Un plugin con una fuente [`command`](#command-sources) no se fija por ninguno de los campos. Si no se establece en ningún lugar, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management). |233| `version` | string | Versión del plugin. Si se establece (aquí o en `plugin.json`), el plugin se fija a esta cadena y los usuarios solo reciben actualizaciones cuando cambia. Un plugin con una fuente [`command`](#command-sources) no se fija por ninguno de los campos. Tampoco un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde un marketplace agregado como directorio local. Si no se establece en ningún lugar, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management). |

232| `author` | object | Información del autor del plugin (`name` requerido; `email` y `url` opcionales) |234| `author` | object | Información del autor del plugin (`name` requerido; `email` y `url` opcionales) |

233| `homepage` | string | URL de página de inicio o documentación del plugin |235| `homepage` | string | URL de página de inicio o documentación del plugin |

234| `repository` | string | URL del repositorio de código fuente |236| `repository` | string | URL del repositorio de código fuente |


274 276 

275Las fuentes de plugins le indican a Claude Code dónde obtener cada plugin individual listado en su marketplace. Estos se establecen en el campo `source` de cada entrada de plugin en `marketplace.json`.277Las fuentes de plugins le indican a Claude Code dónde obtener cada plugin individual listado en su marketplace. Estos se establecen en el campo `source` de cada entrada de plugin en `marketplace.json`.

276 278 

277Claude Code copia cada plugin instalado en el caché de plugins versionado local en `~/.claude/plugins/cache`, excepto para una [fuente `command` en modo link](#copy-mode-and-link-mode), que Claude Code usa en su lugar. Claude Code también [instala las dependencias de paquetes Node.js elegibles del plugin](/docs/es/plugins-reference#node-js-package-dependencies) en la copia en caché.279Claude Code copia cada plugin instalado en el caché de plugins versionado local en `~/.claude/plugins/cache`, a menos que el plugin se cargue en su lugar. Una [fuente `command` en modo link](#copy-mode-and-link-mode) se carga en su lugar, y también lo hace una [fuente de ruta relativa](#relative-paths) en un marketplace agregado desde un directorio local. Claude Code también [instala las dependencias de paquetes Node.js elegibles del plugin](/docs/es/plugins-reference#node-js-package-dependencies) en la copia en caché. Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para ver cómo un plugin cargado en su lugar desde un marketplace de directorio local recoge sus ediciones.

278 280 

279| Fuente | Tipo | Campos | Notas |281| Fuente | Tipo | Campos | Notas |

280| ------------- | --------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |282| ------------- | --------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


282| `github` | object | `repo`, `ref?`, `sha?` | |284| `github` | object | `repo`, `ref?`, `sha?` | |

283| `url` | object | `url`, `ref?`, `sha?` | Fuente de URL de Git |285| `url` | object | `url`, `ref?`, `sha?` | Fuente de URL de Git |

284| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdirectorio dentro de un repositorio git. Clona escasamente para minimizar el ancho de banda para monorepos |286| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdirectorio dentro de un repositorio git. Clona escasamente para minimizar el ancho de banda para monorepos |

285| `npm` | object | `package`, `version?`, `registry?` | Instalado vía `npm install` |287| `npm` | object | `package`, `version?`, `registry?` | Paquete npm, obtenido con su cliente npm y desempaquetado sin ejecutar scripts de instalación |

286| `archive` | object | `url`, `sha256?` | Archivo zip descargado sobre HTTPS. Funciona sin git o npm en la máquina del usuario. Requiere Claude Code v2.1.224 o posterior |288| `archive` | object | `url`, `sha256?` | Archivo zip descargado sobre HTTPS. Funciona sin git o npm en la máquina del usuario. Requiere Claude Code v2.1.224 o posterior |

287| `command` | object | `command`, `timeout?`, `mode?` | Directorio de plugin producido al ejecutar un comando local, se vuelve a ejecutar una vez por sesión para recoger cambios. Requiere Claude Code v2.1.229 o posterior |289| `command` | object | `command`, `timeout?`, `mode?` | Directorio de plugin producido al ejecutar un comando local, se vuelve a ejecutar una vez por sesión para recoger cambios. Requiere Claude Code v2.1.229 o posterior |

288 290 


314}316}

315```317```

316 318 

317Las rutas se resuelven relativas a la raíz del marketplace, que es el directorio que contiene `.claude-plugin/`. En el ejemplo anterior, `./plugins/my-plugin` apunta a `<repo>/plugins/my-plugin`, aunque `marketplace.json` vive en `<repo>/.claude-plugin/marketplace.json`. No use `../` para hacer referencia a rutas fuera de la raíz del marketplace. En macOS y Linux, Claude Code rechaza una ruta de entrada con una barra invertida en cualquier lugar después del `./` inicial, así que escriba los separadores como `/` en todas las plataformas.319Las rutas se resuelven relativas a la raíz del marketplace, que es el directorio que contiene `.claude-plugin/`. La fuente `./plugins/my-plugin` por lo tanto apunta a `<repo>/plugins/my-plugin`, aunque `marketplace.json` vive en `<repo>/.claude-plugin/marketplace.json`. No use `../` para hacer referencia a rutas fuera de la raíz del marketplace. En macOS y Linux, Claude Code rechaza una ruta de entrada con una barra invertida en cualquier lugar después del `./` inicial, así que escriba los separadores como `/` en todas las plataformas.

318 320 

319Un nombre simple es un nombre de directorio único sin `/`, como `"formatter"`. Para escribir nombres simples en lugar de rutas `./`, establezca [`metadata.pluginRoot`](#optional-fields) en el directorio bajo el cual se resuelven. Con `"pluginRoot": "./plugins"`, Claude Code resuelve `"source": "formatter"` a `./plugins/formatter`. Requiere Claude Code v2.1.239 o posterior.321Un nombre simple es un nombre de directorio único sin `/`, como `"formatter"`. Para escribir nombres simples en lugar de rutas `./`, establezca [`metadata.pluginRoot`](#optional-fields) en el directorio bajo el cual se resuelven. Con `"pluginRoot": "./plugins"`, Claude Code resuelve `"source": "formatter"` a `./plugins/formatter`. Requiere Claude Code v2.1.239 o posterior.

320 322 


437 Paquetes npm439 Paquetes npm

438</h3>440</h3>

439 441 

440Los plugins distribuidos como paquetes npm se instalan usando `npm install`. Esto funciona con cualquier paquete en el registro npm público o un registro privado que su equipo aloje.442Una fuente npm puede nombrar cualquier paquete en el registro npm público o en un registro privado que su equipo aloje. Claude Code resuelve el paquete con su cliente npm, descarga el tarball y lo desempaqueta en el caché de plugins.

443 

444Los scripts de instalación del paquete, como `preinstall` o `postinstall`, nunca se ejecutan, y sus dependencias no se instalan durante la obtención.

445 

446Si el paquete envía un archivo de bloqueo compatible junto a su `package.json`, Claude Code instala esas [dependencias de paquetes Node.js](/docs/es/plugins-reference#node-js-package-dependencies) en un paso separado, también con scripts deshabilitados. De lo contrario, publique el plugin con todo lo que necesita ya construido. Un servidor MCP que necesita otros paquetes puede lanzarse a través de `npx`, que los instala en la primera ejecución.

441 447 

442```json theme={null}448```json theme={null}

443{449{


612 Cómo los usuarios aceptan un comando headersHelper618 Cómo los usuarios aceptan un comando headersHelper

613</h4>619</h4>

614 620 

615Un usuario acepta el comando de una entrada de plugin cada vez que instala o actualiza ese único plugin por sí solo, desde la vista propia del plugin en `/plugin` o con `claude plugin install` o `claude plugin update`. Claude Code muestra el comando y la URL del archivo, y ejecuta el comando solo después de que el usuario acepta. En un shell no interactivo, pase [`--yes`](/docs/es/plugins-reference#plugin-install) para aceptarlo.621Un usuario acepta el comando de una entrada de plugin cada vez que instala o actualiza ese único plugin por sí solo, desde la vista propia del plugin en `/plugin` o con `claude plugin install` o `claude plugin update`. Claude Code muestra el comando y la URL del archivo, y ejecuta el comando solo después de que el usuario acepta.

622 

623En un shell no interactivo, pase [`--yes`](/docs/es/plugins-reference#plugin-install) para aceptar el comando que imprime. Para aceptar solo el comando que una ejecución anterior de `--json` mostró, pase [`--accept-command`](/docs/es/plugins-reference#plugin-install) con el `sha256` que la ejecución reportó.

616 624 

617Claude Code ejecuta solo el comando que mostró, para la URL del archivo que mostró. Si el comando o la URL del archivo de la entrada cambiaron en el medio, Claude Code rechaza la instalación o actualización. Un cambio solo en la cadena de consulta no cuenta.625Claude Code ejecuta solo el comando que mostró, para la URL del archivo que mostró. Si el comando o la URL del archivo de la entrada cambiaron en el medio, Claude Code rechaza la instalación o actualización. Un cambio solo en la cadena de consulta no cuenta.

618 626 


693 701 

694Claude Code ejecuta su comando en la máquina del usuario, por lo que vincula cada ejecución a la aceptación explícita del usuario:702Claude Code ejecuta su comando en la máquina del usuario, por lo que vincula cada ejecución a la aceptación explícita del usuario:

695 703 

696* Cuando los usuarios instalan el plugin desde su pantalla de detalles en `/plugin`, o lo instalan o actualizan con `claude plugin install` o `claude plugin update` en un terminal interactivo, Claude Code les muestra la cadena de comando exacta primero y registra el comando aceptado para esa instalación. Una `claude plugin update` que puede proceder en la aceptación registrada del mismo comando no muestra nada. En un shell no interactivo, como un script de aprovisionamiento, pase `--yes` a `claude plugin install` o `claude plugin update` para aceptar el comando que imprime.704* Cuando los usuarios instalan el plugin desde su pantalla de detalles en `/plugin`, o lo instalan o actualizan con `claude plugin install` o `claude plugin update` en un terminal interactivo, Claude Code les muestra la cadena de comando exacta primero y registra el comando aceptado para esa instalación. Una `claude plugin update` que puede proceder en la aceptación registrada del mismo comando no muestra nada.

705* En un shell no interactivo, como un script de aprovisionamiento, pase `--yes` a `claude plugin install` o `claude plugin update` para aceptar el comando que imprime. Para aceptar solo el comando que una ejecución anterior de `--json` mostró, pase [`--accept-command`](/docs/es/plugins-reference#plugin-install) con el `sha256` que la ejecución reportó.

697* Cada otra ruta ejecuta solo el comando que el usuario ya aceptó. Esto incluye actualizaciones iniciadas desde `/plugin` y las ejecuciones en segundo plano descritas en [Cuándo Claude Code vuelve a ejecutar el comando](#when-claude-code-re-runs-the-command). Cuando ninguno fue aceptado, Claude Code rechaza ejecutar el comando y le dice al usuario cómo revisarlo. Claude Code nunca instala un plugin de origen de comando como dependencia de otro plugin, por lo que los usuarios lo instalan por sí solos primero.706* Cada otra ruta ejecuta solo el comando que el usuario ya aceptó. Esto incluye actualizaciones iniciadas desde `/plugin` y las ejecuciones en segundo plano descritas en [Cuándo Claude Code vuelve a ejecutar el comando](#when-claude-code-re-runs-the-command). Cuando ninguno fue aceptado, Claude Code rechaza ejecutar el comando y le dice al usuario cómo revisarlo. Claude Code nunca instala un plugin de origen de comando como dependencia de otro plugin, por lo que los usuarios lo instalan por sí solos primero.

698* Si cambia el `command` de la entrada, o cambia su `mode`, los usuarios mantienen la versión que ya tienen y Claude Code deja de volver a ejecutar el comando. En sesiones interactivas, la pestaña `/plugin` Errores muestra el nuevo comando hasta que el usuario lo revise y acepte ejecutando `claude plugin update <plugin>@<marketplace>`.707* Si cambia el `command` de la entrada, o cambia su `mode`, los usuarios mantienen la versión que ya tienen y Claude Code deja de volver a ejecutar el comando. En sesiones interactivas, la pestaña `/plugin` Errores muestra el nuevo comando hasta que el usuario lo revise y acepte ejecutando `claude plugin update <plugin>@<marketplace>`.

699 708 


810 Alojar y distribuir marketplaces819 Alojar y distribuir marketplaces

811</h2>820</h2>

812 821 

822Cuando los usuarios agregan un marketplace alojado en un repositorio de git, o instalan un plugin basado en git que enumera, Claude Code clona ese repositorio de marketplace o plugin en su máquina. El clon nunca descarga contenido de [Git LFS](https://git-lfs.com), por lo que los archivos rastreados por LFS llegan como archivos de puntero. Mantenga los archivos que sus plugins necesitan fuera de LFS.

823 

813<h3 id="host-on-github-recommended">824<h3 id="host-on-github-recommended">

814 Alojar en GitHub (recomendado)825 Alojar en GitHub (recomendado)

815</h3>826</h3>


836 Repositorios privados847 Repositorios privados

837</h3>848</h3>

838 849 

839Claude Code soporta instalar plugins desde repositorios privados. Si distribuye su marketplace a través de [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en su lugar, sus credenciales de git no están involucradas: la sincronización de la organización lee el repositorio del marketplace a través de la Aplicación GitHub de Claude o la Aplicación GitHub Enterprise de su organización, y una fuente de plugin que no puede autenticarse debe ser pública. Consulte [Distribuir a través de la configuración de la organización](#distribute-through-organization-settings) para las reglas completas.850Claude Code soporta instalar plugins desde repositorios privados. Si distribuye su marketplace a través de [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en su lugar, sus credenciales de git no están involucradas: la sincronización de la organización lee el repositorio del marketplace a través de la conexión GitHub o GitLab de su organización en claude.ai. Consulte [Distribuir a través de la configuración de la organización](#distribute-through-organization-settings) para saber qué fuentes de plugins pueden ser privadas.

840 851 

841<h4 id="commands-you-run">852<h4 id="commands-you-run">

842 Comandos que ejecuta853 Comandos que ejecuta


848 Actualizaciones automáticas en segundo plano859 Actualizaciones automáticas en segundo plano

849</h4>860</h4>

850 861 

851De forma predeterminada, la actualización en segundo plano deshabilita los ayudantes de credenciales de git para su `git pull`, por lo que la extracción no puede autenticarse en repositorios privados sobre HTTPS incluso cuando un ayudante está configurado. Los remotos SSH no se ven afectados: una clave cargada en `ssh-agent` autentica las extracciones en segundo plano de la misma manera que los comandos que ejecuta. Cuando la extracción en segundo plano falla, Claude Code vuelve a clonar el marketplace desde cero. El re-clonado sí usa sus credenciales de git almacenadas, pero puede [agotar el tiempo de espera en repositorios grandes](#git-operations-time-out), por lo que las actualizaciones automáticas de marketplace privado pueden fallar intermitentemente.862De forma predeterminada, la actualización en segundo plano deshabilita los ayudantes de credenciales de git cuando verifica el remoto del marketplace para nuevos commits, por lo que la verificación no puede autenticarse en repositorios privados sobre HTTPS incluso cuando un ayudante está configurado. Los remotos SSH no se ven afectados: una clave cargada en `ssh-agent` autentica la verificación en segundo plano de la misma manera que los comandos que ejecuta.

863 

864Cuando la verificación encuentra nuevos commits, o falla porque no puede alcanzar o autenticarse en el remoto, Claude Code clona el marketplace nuevamente e intercambia el nuevo clon. Si ese clon falla, el checkout existente permanece en su lugar. El re-clonado sí usa sus credenciales de git almacenadas, pero puede [agotar el tiempo de espera en repositorios grandes](#git-operations-time-out), por lo que las actualizaciones automáticas de marketplace privado pueden fallar intermitentemente.

852 865 

853Dos configuraciones hacen que los marketplaces privados se comporten de manera predecible:866Dos configuraciones hacen que los marketplaces privados se comporten de manera predecible:

854 867 

855* Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para mantener el clon existente cuando la extracción en segundo plano falla, en lugar de eliminar y re-clonar. Sus plugins siguen funcionando desde el último estado sincronizado, y las actualizaciones manuales con `/plugin marketplace update` aún extraen con sus credenciales.868* Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para mantener el checkout existente sin intentar el re-clonado cuando la verificación en segundo plano no puede alcanzar o autenticarse en el remoto. Sus plugins siguen funcionando desde el último estado sincronizado, y las actualizaciones manuales con `/plugin marketplace update` aún se autentican con sus credenciales.

856* Configure un ayudante de credenciales de git, por ejemplo con `gh auth setup-git` para GitHub, para que la alternativa de re-clonado pueda autenticarse sin solicitar.869* Configure un ayudante de credenciales de git, por ejemplo con `gh auth setup-git` para GitHub, para que el re-clonado pueda autenticarse sin solicitar.

857 870 

858Establecer un token de proveedor como `GITHUB_TOKEN` en su entorno no habilita por sí solo la autenticación en segundo plano. Los tokens tienen efecto solo a través de un ayudante de credenciales configurado, por ejemplo el ayudante de CLI `gh`, que lee `GH_TOKEN` y `GITHUB_TOKEN`.871Establecer un token de proveedor como `GITHUB_TOKEN` en su entorno no habilita por sí solo la autenticación en segundo plano. Los tokens tienen efecto solo a través de un ayudante de credenciales configurado, por ejemplo el ayudante de CLI `gh`, que lee `GH_TOKEN` y `GITHUB_TOKEN`.

859 872 

860Para hacer que la extracción en segundo plano se autentique sobre HTTPS, configure una reescritura de URL de git global. La reescritura incrusta un token en la URL remota, por lo que tiene efecto aunque la extracción en segundo plano deshabilite los ayudantes de credenciales, y una extracción exitosa omite la alternativa de re-clonado. El siguiente ejemplo reescribe la URL del repositorio del marketplace para incluir un token de acceso:873Para hacer que la verificación en segundo plano se autentique sobre HTTPS, configure una reescritura de URL de git global. La reescritura incrusta un token en la URL remota, por lo que tiene efecto aunque la verificación en segundo plano deshabilite los ayudantes de credenciales. Cuando la verificación encuentra el checkout actualizado, Claude Code omite el re-clonado. El siguiente ejemplo reescribe la URL del repositorio del marketplace para incluir un token de acceso:

861 874 

862```bash theme={null}875```bash theme={null}

863git config --global url."https://x-access-token:YOUR_TOKEN@github.com/acme-corp/plugins".insteadOf "https://github.com/acme-corp/plugins"876git config --global url."https://x-access-token:YOUR_TOKEN@github.com/acme-corp/plugins".insteadOf "https://github.com/acme-corp/plugins"


876La reescritura almacena el token en texto plano en su gitconfig, por lo que use un token con acceso de solo lectura al repositorio del marketplace.889La reescritura almacena el token en texto plano en su gitconfig, por lo que use un token con acceso de solo lectura al repositorio del marketplace.

877 890 

878<Note>891<Note>

879 En entornos de CI/CD, configure un ayudante de credenciales de git antes de instalar plugins desde repositorios privados. En GitHub Actions, exporte un token con acceso de lectura al repositorio del marketplace como `GH_TOKEN`, luego ejecute `gh auth setup-git`. El token de flujo de trabajo predeterminado solo puede acceder al repositorio del flujo de trabajo, por lo que un marketplace privado en otro repositorio necesita un token de acceso personal o token de aplicación. Una reescritura de URL global configurada en la canalización también autentica la extracción en segundo plano directamente.892 En entornos de CI/CD, configure un ayudante de credenciales de git antes de instalar plugins desde repositorios privados. En GitHub Actions, exporte un token con acceso de lectura al repositorio del marketplace como `GH_TOKEN`, luego ejecute `gh auth setup-git`. El token de flujo de trabajo predeterminado solo puede acceder al repositorio del flujo de trabajo, por lo que un marketplace privado en otro repositorio necesita un token de acceso personal o token de aplicación.

893 

894 Si configura una reescritura de URL global en la canalización, la reescritura también autentica la verificación en segundo plano directamente.

880</Note>895</Note>

881 896 

882<h3 id="distribute-through-organization-settings">897<h3 id="distribute-through-organization-settings">


885 900 

886Si distribuye plugins a través de [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en un plan de Equipo o Empresa, se aplican estas reglas de fuente:901Si distribuye plugins a través de [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en un plan de Equipo o Empresa, se aplican estas reglas de fuente:

887 902 

888* El repositorio del marketplace debe ser privado o interno. La sincronización de la organización lo lee a través de la Aplicación GitHub de Claude o la Aplicación GitHub Enterprise de su organización.903* En github.com y gitlab.com, el repositorio del marketplace debe ser privado o interno. La sincronización de la organización lo lee a través de la conexión que coincide con su host:

904 * **github.com**: la Aplicación GitHub de Claude

905 * **Su host de GitHub Enterprise Server**: su [Aplicación GitHub Enterprise](/docs/es/github-enterprise-server#admin-setup) de la organización

906 * **gitlab.com o su instancia de GitLab autogestionada**: el token de acceso en su [configuración de GitLab](#sync-a-gitlab-hosted-marketplace) de la organización para ese host

889* Cada fuente de plugin debe ser de tipo `github`, `url` o `git-subdir`, o una [ruta relativa](#relative-paths) que comience con `./`. Si enumera un plugin por nombre simple bajo `metadata.pluginRoot`, la sincronización de la organización lo rechaza como una fuente no soportada, así que escriba la ruta, como `./plugins/deploy-tools`.907* Cada fuente de plugin debe ser de tipo `github`, `url` o `git-subdir`, o una [ruta relativa](#relative-paths) que comience con `./`. Si enumera un plugin por nombre simple bajo `metadata.pluginRoot`, la sincronización de la organización lo rechaza como una fuente no soportada, así que escriba la ruta, como `./plugins/deploy-tools`.

890* Una fuente de plugin puede ser privada en dos casos:908* Una fuente de plugin puede ser privada en tres casos:

891 * Una fuente github.com que comparta el propietario del repositorio del marketplace909 * Una fuente github.com que comparta el propietario del repositorio del marketplace

892 * Una fuente en el host GitHub Enterprise de su organización con la Aplicación GHE instalada en el repositorio910 * Una fuente en el host GitHub Enterprise de su organización con la Aplicación GHE instalada en el repositorio

893* La sincronización de la organización obtiene todas las otras fuentes sin credenciales, por lo que los repositorios github.com bajo un propietario diferente y los repositorios en otros hosts, como GitLab o Bitbucket, deben ser públicos.911 * Una fuente `url` o `git-subdir` en el mismo host de GitLab que el repositorio del marketplace. En gitlab.com, la fuente también debe estar bajo el mismo grupo de nivel superior o espacio de nombres de usuario que el repositorio del marketplace.

912* Cualquier otra fuente de plugin debe ser un repositorio público en github.com, gitlab.com o bitbucket.org, que la sincronización de la organización obtiene sin credenciales. La sincronización de la organización rechaza fuentes de plugins en hosts que estas reglas no cubren.

894 913 

895Consulte [Administrar plugins para su organización](https://support.claude.com/en/articles/13837433) para el flujo de trabajo del administrador.914Consulte [Administrar plugins para su organización](https://support.claude.com/en/articles/13837433) para el flujo de trabajo del administrador.

896 915 


905}924}

906```925```

907 926 

927<h4 id="sync-a-gitlab-hosted-marketplace">

928 Sincronizar un marketplace alojado en GitLab

929</h4>

930 

931Para sincronizar un marketplace desde gitlab.com o una instancia de GitLab autogestionada, un [Propietario](/docs/es/server-managed-settings#access-control) primero agrega una configuración de GitLab para ese host en [**Configuración de la organización > Claude Code**](https://claude.ai/admin-settings/claude-code). Las configuraciones de GitLab están en beta pública y se aplican solo a la sincronización del marketplace de plugins. Agregar una no hace que los repositorios de GitLab estén disponibles en [Claude Code en la web](/docs/es/claude-code-on-the-web#limitations). Consulte [Administrar plugins para su organización](https://support.claude.com/en/articles/13837433) para los pasos de configuración.

932 

933Cuando agrega el marketplace, ingrese la URL HTTPS del proyecto, como `https://gitlab.example.com/platform/claude-plugins`. Los proyectos en subgrupos anidados funcionan. La sincronización de la organización lee la rama predeterminada del proyecto. Si activa **Sincronizar automáticamente**, solo los envíos a la rama predeterminada inician una sincronización.

934 

908<h4 id="keep-executables-out-of-the-top-level-bin-directory">935<h4 id="keep-executables-out-of-the-top-level-bin-directory">

909 Mantener ejecutables fuera del directorio bin de nivel superior936 Mantener ejecutables fuera del directorio bin de nivel superior

910</h4>937</h4>


984 1011 

985Detalles de comportamiento:1012Detalles de comportamiento:

986 1013 

987* **Solo lectura**: el directorio seed nunca se escribe. Las actualizaciones automáticas están deshabilitadas para marketplaces seed ya que git pull fallaría en un sistema de archivos de solo lectura.1014* **Solo lectura**: Claude Code nunca escribe en el directorio seed.

1015* **Actualizaciones automáticas deshabilitadas**: los marketplaces seed no se actualizan automáticamente.

988* **Las entradas seed tienen precedencia**: los marketplaces declarados en el seed sobrescriben cualquier entrada coincidente en la configuración del usuario en cada inicio. Para optar por no participar en un plugin seed, use `/plugin disable` en lugar de eliminar el marketplace.1016* **Las entradas seed tienen precedencia**: los marketplaces declarados en el seed sobrescriben cualquier entrada coincidente en la configuración del usuario en cada inicio. Para optar por no participar en un plugin seed, use `/plugin disable` en lugar de eliminar el marketplace.

989* **Resolución de rutas**: Claude Code localiza contenido de marketplace sondeando `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` en tiempo de ejecución, no confiando en rutas almacenadas dentro del JSON del seed. Esto significa que el seed funciona correctamente incluso cuando se monta en una ruta diferente a donde fue construido.1017* **Resolución de rutas**: Claude Code localiza contenido de marketplace sondeando `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` en tiempo de ejecución, no confiando en rutas almacenadas dentro del JSON del seed. Esto significa que el seed funciona correctamente incluso cuando se monta en una ruta diferente a donde fue construido.

990* **Se bloquea la mutación**: ejecutar `/plugin marketplace remove` o `/plugin marketplace update` contra un marketplace administrado por seed falla con orientación para pedir a su administrador que actualice la imagen seed.1018* **Se bloquea la mutación**: ejecutar `/plugin marketplace remove` o `/plugin marketplace update` contra un marketplace administrado por seed falla con orientación para pedir a su administrador que actualice la imagen seed.


1018}1046}

1019```1047```

1020 1048 

1049Claude Code descarga los plugins [sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins) desde su cuenta en lugar de desde un marketplace, por lo que este bloqueo no los cubre. Para detener también esos, establezca [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) en `false` en configuración administrada, o desactive Skills para su organización en claude.ai.

1050 

1021Permitir solo el marketplace oficial de Anthropic. La coincidencia para una entrada de repositorio único es exacta, por lo que esta entrada no cubre variantes `ref` o `path` del mismo repositorio:1051Permitir solo el marketplace oficial de Anthropic. La coincidencia para una entrada de repositorio único es exacta, por lo que esta entrada no cubre variantes `ref` o `path` del mismo repositorio:

1022 1052 

1023```json theme={null}1053```json theme={null}


1128 1158 

1129La coincidencia exacta de la lista de permitidos trata URLs que difieren solo por una barra diagonal final, un sufijo `.git` o el esquema `ssh://` versus `https://` como valores diferentes. Si el marketplace de su organización se puede clonar por más de una forma de URL, prefiera una entrada `hostPattern` sobre una URL literal para que todas las formas `https://`, `ssh://` y `user@host:path` coincidan.1159La coincidencia exacta de la lista de permitidos trata URLs que difieren solo por una barra diagonal final, un sufijo `.git` o el esquema `ssh://` versus `https://` como valores diferentes. Si el marketplace de su organización se puede clonar por más de una forma de URL, prefiera una entrada `hostPattern` sobre una URL literal para que todas las formas `https://`, `ssh://` y `user@host:path` coincidan.

1130 1160 

1161Un [marketplace alojado en claude.ai](/docs/es/discover-plugins#add-from-claude-ai) se compara por host: una entrada `hostPattern` que coincida con `claude.ai` lo rige, en `strictKnownMarketplaces` y en `blockedMarketplaces`. En la lista de permitidos, tal entrada no admite las cargas personales de claude.ai de un miembro. Requiere Claude Code v2.1.273 o posterior.

1162 

1131Debido a que `strictKnownMarketplaces` se establece en [configuración administrada](/docs/es/managed-settings), los usuarios individuales y las configuraciones del proyecto no pueden anular estas restricciones.1163Debido a que `strictKnownMarketplaces` se establece en [configuración administrada](/docs/es/managed-settings), los usuarios individuales y las configuraciones del proyecto no pueden anular estas restricciones.

1132 1164 

1133Para detalles de configuración completos incluyendo todos los tipos de fuente soportados y comparación con `extraKnownMarketplaces`, consulte la [referencia de strictKnownMarketplaces](/docs/es/settings-reference#strictknownmarketplaces).1165Para detalles de configuración completos incluyendo todos los tipos de fuente soportados y comparación con `extraKnownMarketplaces`, consulte la [referencia de strictKnownMarketplaces](/docs/es/settings-reference#strictknownmarketplaces).


1139Las versiones de plugins determinan rutas de caché y detección de actualizaciones: si la versión resuelta coincide con lo que un usuario ya tiene, `/plugin update` y auto-actualización omiten el plugin. Para fuentes basadas en git, si omite `version`, Claude Code usa el SHA del commit resuelto de la fuente, por lo que los usuarios obtienen una actualización cada vez que ese commit cambia; esta es la configuración más simple para plugins internos o en desarrollo activo. Consulte [Gestión de versiones](/docs/es/plugins-reference#version-management) para el orden de resolución completo, incluidas fuentes `archive`.1171Las versiones de plugins determinan rutas de caché y detección de actualizaciones: si la versión resuelta coincide con lo que un usuario ya tiene, `/plugin update` y auto-actualización omiten el plugin. Para fuentes basadas en git, si omite `version`, Claude Code usa el SHA del commit resuelto de la fuente, por lo que los usuarios obtienen una actualización cada vez que ese commit cambia; esta es la configuración más simple para plugins internos o en desarrollo activo. Consulte [Gestión de versiones](/docs/es/plugins-reference#version-management) para el orden de resolución completo, incluidas fuentes `archive`.

1140 1172 

1141<Warning>1173<Warning>

1142 Establecer `version` fija el plugin para cada tipo de fuente excepto [`command`](#command-sources), cuya versión siempre incluye un hash de lo que el comando produjo. Si declara `"version": "1.0.0"` en `plugin.json` e inserta nuevos commits sin cambiar esa cadena, los usuarios existentes de esas fuentes mantienen la copia en caché, porque Claude Code ve la misma versión. Aumente el campo en cada lanzamiento, u omítalo para recurrir a la versión resuelta.1174 Establecer `version` fija el plugin para cada tipo de fuente excepto [`command`](#command-sources), cuya versión siempre incluye un hash de lo que el comando produjo. Un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde un marketplace agregado como directorio local tampoco está fijado. Si declara `"version": "1.0.0"` en `plugin.json` e inserta nuevos commits sin cambiar esa cadena, los usuarios existentes de esas fuentes mantienen la copia en caché, porque Claude Code ve la misma versión. Aumente el campo en cada lanzamiento, u omítalo para recurrir a la versión resuelta.

1143 1175 

1144 Evite establecer `version` en ambos `plugin.json` y la entrada del marketplace. El valor de `plugin.json` siempre gana silenciosamente, por lo que una versión de manifiesto obsoleta puede enmascarar una versión que estableció en `marketplace.json`.1176 Evite establecer `version` en ambos `plugin.json` y la entrada del marketplace. El valor de `plugin.json` siempre gana silenciosamente, por lo que una versión de manifiesto obsoleta puede enmascarar una versión que estableció en `marketplace.json`.

1145</Warning>1177</Warning>


1330**Opciones:**1362**Opciones:**

1331 1363 

1332| Opción | Descripción | Predeterminado |1364| Opción | Descripción | Predeterminado |

1333| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |1365| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

1334| `--scope <scope>` | Dónde declarar el marketplace: `user`, `project` o `local`. Consulte [Plugin installation scopes](/docs/es/plugins-reference#plugin-installation-scopes) | `user` |1366| `--scope <scope>` | Dónde declarar el marketplace: `user`, `project` o `local`. Consulte [Plugin installation scopes](/docs/es/plugins-reference#plugin-installation-scopes) | `user` |

1335| `--sparse <paths...>` | Limitar el checkout a directorios específicos a través de git sparse-checkout. Útil para monorepos | |1367| `--sparse <paths...>` | Limitar el checkout a directorios específicos a través de git sparse-checkout. Útil para monorepos | |

1368| `--claudeai` | Lea el argumento como el nombre de un [marketplace alojado en claude.ai](/docs/es/discover-plugins#add-from-claude-ai) en lugar de una fuente. Requiere Claude Code v2.1.273 o posterior | |

1336 1369 

1337Agregue un marketplace desde GitHub usando la abreviatura `owner/repo`:1370Agregue un marketplace desde GitHub usando la abreviatura `owner/repo`:

1338 1371 


1376claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins1409claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

1377```1410```

1378 1411 

1412Agregue un [marketplace alojado en claude.ai](/docs/es/discover-plugins#add-from-claude-ai) por el nombre impreso en la sección `From claude.ai:` de `claude plugin marketplace list`:

1413 

1414```bash theme={null}

1415claude plugin marketplace add --claudeai claudeai-organization-library

1416```

1417 

1418Con `--claudeai`, el comando rechaza `--scope` y `--sparse`. El marketplace se aloja para su cuenta, no se declara en un archivo de configuración, por lo que no puede compartirlo a través del `.claude/settings.json` de un proyecto.

1419 

1379<h3 id="plugin-marketplace-list">1420<h3 id="plugin-marketplace-list">

1380 Plugin marketplace list1421 Plugin marketplace list

1381</h3>1422</h3>


1394 1435 

1395Con `--json`, cada entrada incluye `name`, `source`, un campo `installLocation` con la ruta de caché local donde se almacena el marketplace, y campos específicos de la fuente: `repo` para fuentes de GitHub, `url` para fuentes de git y URL, y `path` para fuentes locales. Las fuentes de GitHub y git también incluyen un campo `ref` cuando el marketplace se agregó con una rama o etiqueta fija.1436Con `--json`, cada entrada incluye `name`, `source`, un campo `installLocation` con la ruta de caché local donde se almacena el marketplace, y campos específicos de la fuente: `repo` para fuentes de GitHub, `url` para fuentes de git y URL, y `path` para fuentes locales. Las fuentes de GitHub y git también incluyen un campo `ref` cuando el marketplace se agregó con una rama o etiqueta fija.

1396 1437 

1438Un marketplace de [claude.ai](/docs/es/discover-plugins#add-from-claude-ai) agregado no tiene un clon local, por lo que su entrada lleva sus identificadores de claude.ai, `marketplaceId` y `organizationUuid`, en lugar de `installLocation`.

1439 

1440En sesiones de terminal donde [los plugins se sincronizan desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins), el listado de texto termina con una sección `From claude.ai:` que nombra lo que claude.ai lista para su cuenta más allá de los marketplaces que ha agregado. Para agregar uno de ellos, consulte [Agregar desde claude.ai](/docs/es/discover-plugins#add-from-claude-ai). La salida `--json` cubre solo los marketplaces configurados y deja esa sección fuera. Requiere Claude Code v2.1.273 o posterior.

1441 

1397<h3 id="plugin-marketplace-remove">1442<h3 id="plugin-marketplace-remove">

1398 Plugin marketplace remove1443 Plugin marketplace remove

1399</h3>1444</h3>


1472| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | El directorio que nombró no tiene `.claude-plugin/marketplace.json` o `plugin.json`, y no tiene archivos de skill, agente o comando para verificar | Ejecute desde la raíz del marketplace, o cree `.claude-plugin/marketplace.json` con los campos requeridos |1517| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | El directorio que nombró no tiene `.claude-plugin/marketplace.json` o `plugin.json`, y no tiene archivos de skill, agente o comando para verificar | Ejecute desde la raíz del marketplace, o cree `.claude-plugin/marketplace.json` con los campos requeridos |

1473| `Invalid JSON syntax: Unexpected token...` | Error de sintaxis JSON en marketplace.json | Verifique comas faltantes, comas extra o cadenas sin comillas |1518| `Invalid JSON syntax: Unexpected token...` | Error de sintaxis JSON en marketplace.json | Verifique comas faltantes, comas extra o cadenas sin comillas |

1474| `Duplicate plugin name "x" found in marketplace` | Dos plugins comparten el mismo nombre | Dé a cada plugin un valor `name` único |1519| `Duplicate plugin name "x" found in marketplace` | Dos plugins comparten el mismo nombre | Dé a cada plugin un valor `name` único |

1475| `plugins[0].source: Path contains ".."` | La ruta de fuente contiene `..` | Use rutas relativas a la raíz del marketplace sin `..`. Consulte [Rutas relativas](#relative-paths) |1520| `plugins[0].source: Path contains ".."` | Un segmento de la ruta de fuente es `..` | Use rutas relativas a la raíz del marketplace sin segmentos `..`. Consulte [Rutas relativas](#relative-paths) |

1476| `Marketplace name cannot contain control or bidirectional-formatting characters` | El `name` del marketplace contiene un carácter de formato bidireccional Unicode o un carácter de control, como un escape o una nueva línea | Elimine el carácter del nombre. Antes de v2.1.247, estos caracteres producían el error `Marketplace name impersonates an official Anthropic/Claude marketplace` |1521| `Marketplace name cannot contain control or bidirectional-formatting characters` | El `name` del marketplace contiene un carácter de formato bidireccional Unicode o un carácter de control, como un escape o una nueva línea | Elimine el carácter del nombre. Antes de v2.1.247, estos caracteres producían el error `Marketplace name impersonates an official Anthropic/Claude marketplace` |

1477| `Plugin name cannot contain control or bidirectional-formatting characters` | Un `name` de plugin contiene un carácter de formato bidireccional Unicode o un carácter de control, como un escape o una nueva línea | Elimine el carácter del nombre. Antes de v2.1.247, Claude Code no ejecutaba esta verificación |1522| `Plugin name cannot contain control or bidirectional-formatting characters` | Un `name` de plugin contiene un carácter de formato bidireccional Unicode o un carácter de control, como un escape o una nueva línea | Elimine el carácter del nombre. Antes de v2.1.247, Claude Code no ejecutaba esta verificación |

1478 1523 


1575 1620 

1576Para actualizaciones automáticas en segundo plano:1621Para actualizaciones automáticas en segundo plano:

1577 1622 

1578* Por defecto, las actualizaciones en segundo plano desactivan los ayudantes de credenciales de git para la extracción, por lo que la extracción no puede autenticarse sobre HTTPS. Los remotos SSH con una clave cargada en `ssh-agent` aún se autentican. Una extracción fallida desencadena un re-clonado desde cero, que usa sus credenciales almacenadas pero puede agotar el tiempo de espera en repositorios grandes1623* Por defecto, las actualizaciones en segundo plano desactivan los ayudantes de credenciales de git cuando verifican el remoto para nuevos commits, por lo que la verificación no puede autenticarse sobre HTTPS. Los remotos SSH con una clave cargada en `ssh-agent` aún se autentican

1579* Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para mantener el clon existente cuando la extracción en segundo plano falla1624* Cuando la verificación no puede autenticarse, Claude Code re-clona el marketplace con sus credenciales almacenadas, pero el re-clonado puede agotar el tiempo de espera en repositorios grandes

1580* Configure un ayudante de credenciales de git, por ejemplo `gh auth setup-git`, para que el re-clonado fallback pueda autenticarse1625* Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para mantener el clon existente sin intentar el re-clonado cuando la verificación en segundo plano no puede alcanzar o autenticarse al remoto

1626* Configure un ayudante de credenciales de git, por ejemplo `gh auth setup-git`, para que el re-clonado pueda autenticarse

1581* Si el re-clonado agota el tiempo de espera en un repositorio grande, aumente el límite con [`CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`](#git-operations-time-out)1627* Si el re-clonado agota el tiempo de espera en un repositorio grande, aumente el límite con [`CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`](#git-operations-time-out)

1582* Configure una [reescritura de URL de git](#private-repositories) limitada al repositorio del marketplace para que la extracción en segundo plano se autentique directamente1628* Configure una [reescritura de URL de git](#private-repositories) limitada al repositorio del marketplace para que la verificación en segundo plano se autentique directamente

1583* O actualice marketplaces privados manualmente con `/plugin marketplace update <name>`, que usa sus credenciales1629* O actualice marketplaces privados manualmente con `/plugin marketplace update <name>`, que usa sus credenciales

1584 1630 

1585<h3 id="marketplace-updates-fail-in-offline-environments">1631<h3 id="marketplace-updates-fail-in-offline-environments">

1586 Las actualizaciones del marketplace fallan en entornos sin conexión1632 Las actualizaciones del marketplace fallan en entornos sin conexión

1587</h3>1633</h3>

1588 1634 

1589**Síntomas**: El `git pull` del marketplace falla en segundo plano y Claude Code intenta repetidamente un re-clonado que no puede tener éxito.1635**Síntomas**: En un entorno sin conexión o aislado, la actualización de marketplace en segundo plano no puede alcanzar el remoto y Claude Code intenta repetidamente un re-clonado que no puede tener éxito.

1636 

1637**Causa**: La actualización en segundo plano verifica el remoto del marketplace para nuevos commits, y cuando la verificación no puede alcanzar el remoto, Claude Code intenta clonar el marketplace nuevamente. Sin conexión, el clonado falla de la misma manera y el clon existente permanece en su lugar. Antes de v2.1.274, la actualización ejecutaba `git pull` en el clon existente, movía el clon a un lado para re-clonar cuando el pull fallaba, y lo restauraba después en una base de mejor esfuerzo.

1590 1638 

1591**Causa**: Por defecto, cuando un `git pull` falla, Claude Code intenta un re-clonado desde cero. En entornos sin conexión o aislados, el re-clonado falla de la misma manera, y la restauración del caché anterior después es de mejor esfuerzo. La actualización se ejecuta en segundo plano después del inicio, por lo que no retrasa el inicio, pero cada sesión repite los intentos fallidos y cada operación de git puede esperar el [tiempo de espera de 120 segundos](#git-operations-time-out).1639La actualización se ejecuta en segundo plano después del inicio, por lo que no retrasa el inicio. Cada sesión aún repite el intento fallido, y cada operación de git puede esperar el [tiempo de espera de 120 segundos](#git-operations-time-out).

1592 1640 

1593**Solución**: Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para omitir el intento de re-clonado y mantener el uso del caché existente cuando la extracción falla:1641**Solución**: Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para omitir el intento de re-clonado y mantener el uso del clon existente cuando la verificación no puede alcanzar el remoto:

1594 1642 

1595```bash theme={null}1643```bash theme={null}

1596export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=11644export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1


1602 Las operaciones de Git agotan el tiempo de espera1650 Las operaciones de Git agotan el tiempo de espera

1603</h3>1651</h3>

1604 1652 

1605**Síntomas**: La instalación del plugin o las actualizaciones del marketplace fallan con un error de tiempo de espera como "Git clone timed out after 120s" o "Git pull timed out after 120s".1653**Síntomas**: La instalación del plugin o las actualizaciones del marketplace fallan con un error de tiempo de espera como `Git clone timed out after 120s`.

1606 1654 

1607**Causa**: Claude Code usa un tiempo de espera de 120 segundos para todas las operaciones de git, incluida la clonación de repositorios de plugins y la extracción de actualizaciones de marketplace. Los repositorios grandes o las conexiones de red lentas pueden exceder este límite.1655**Causa**: Claude Code usa un tiempo de espera de 120 segundos para todas las operaciones de git, incluyendo clonación de repositorios de plugins y re-clonación de un marketplace para actualizarlo. Los repositorios grandes o las conexiones de red lentas pueden exceder este límite.

1608 1656 

1609**Solución**: Aumente el tiempo de espera usando la variable de entorno `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. El valor está en milisegundos:1657**Solución**: Aumente el tiempo de espera usando la variable de entorno `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. El valor está en milisegundos:

1610 1658 


1634 1682 

1635**Síntomas**: El plugin se instala pero las referencias a archivos fallan, especialmente archivos fuera del directorio del plugin1683**Síntomas**: El plugin se instala pero las referencias a archivos fallan, especialmente archivos fuera del directorio del plugin

1636 1684 

1637**Causa**: Los plugins se copian a un directorio de caché en lugar de usarse en el lugar, excepto para una [`command` source in link mode](#copy-mode-and-link-mode). Las rutas que hacen referencia a archivos fuera del directorio del plugin copiado (como `../shared-utils`) no funcionarán porque esos archivos no se copian.1685**Causa**: Claude Code copia plugins instalados a un directorio de caché, a menos que el plugin se cargue en el lugar. Una [`command` source in link mode](#copy-mode-and-link-mode) se carga en el lugar, y también lo hace una [relative path source](#relative-paths) en un marketplace agregado desde un directorio local. Las rutas que hacen referencia a archivos fuera del directorio del plugin copiado (como `../shared-utils`) no funcionarán porque esos archivos no se copian.

1638 1686 

1639**Soluciones**: Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para soluciones alternativas incluyendo enlaces simbólicos y reestructuración de directorios.1687**Soluciones**: Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para soluciones alternativas incluyendo enlaces simbólicos y reestructuración de directorios.

1640 1688 

Details

86| `filesRead` | array of strings | Patrones Glob coincididos contra las rutas de archivos que Claude ha leído en esta sesión, por ejemplo `["**/*.tf"]`. Normalizado con barra diagonal y sin distinción de mayúsculas y minúsculas. Máximo 10 patrones de 256 caracteres cada uno. |86| `filesRead` | array of strings | Patrones Glob coincididos contra las rutas de archivos que Claude ha leído en esta sesión, por ejemplo `["**/*.tf"]`. Normalizado con barra diagonal y sin distinción de mayúsculas y minúsculas. Máximo 10 patrones de 256 caracteres cada uno. |

87| `manifestDeps` | array of objects | Dependencias declaradas en manifiestos de paquetes que Claude ha leído en esta sesión. Cada entrada es `{ "file": "...", "pattern": "..." }`, donde `file` es una expresión regular coincidida contra la ruta del archivo de manifiesto tal como se registra en el estado de la sesión, típicamente una ruta absoluta, y `pattern` es una expresión regular coincidida contra el contenido de ese archivo. Ancle `file` al final, por ejemplo `[/\\\\]package\\.json$` en forma escapada en JSON, porque un patrón anclado al inicio nunca coincide con una ruta absoluta. Las rutas no se normalizan de separador para esta señal, por lo que las rutas de Windows usan barras invertidas. Los archivos de manifiesto más grandes de 512 KB se omiten. Ambos valores son cadenas de fuente `RegExp` de JavaScript de como máximo 256 caracteres. `file` coincide sin distinción de mayúsculas y minúsculas. `pattern` distingue mayúsculas y minúsculas. Máximo 10 entradas. |87| `manifestDeps` | array of objects | Dependencias declaradas en manifiestos de paquetes que Claude ha leído en esta sesión. Cada entrada es `{ "file": "...", "pattern": "..." }`, donde `file` es una expresión regular coincidida contra la ruta del archivo de manifiesto tal como se registra en el estado de la sesión, típicamente una ruta absoluta, y `pattern` es una expresión regular coincidida contra el contenido de ese archivo. Ancle `file` al final, por ejemplo `[/\\\\]package\\.json$` en forma escapada en JSON, porque un patrón anclado al inicio nunca coincide con una ruta absoluta. Las rutas no se normalizan de separador para esta señal, por lo que las rutas de Windows usan barras invertidas. Los archivos de manifiesto más grandes de 512 KB se omiten. Ambos valores son cadenas de fuente `RegExp` de JavaScript de como máximo 256 caracteres. `file` coincide sin distinción de mayúsculas y minúsculas. `pattern` distingue mayúsculas y minúsculas. Máximo 10 entradas. |

88 88 

89Las señales `cli`, `hosts`, `filesRead` y `manifestDeps` necesitan historial de sesión, por lo que solo pueden coincidir en la sugerencia de spinner y la pestaña Discover. La señal `filesRead` y `manifestDeps` prueban el estado de archivo registrado de la sesión, que también incluye archivos que Claude ha escrito o editado y archivos de memoria `CLAUDE.md` cargados automáticamente.89Las señales `cli`, `hosts`, `filesRead` y `manifestDeps` necesitan historial de sesión, por lo que solo pueden coincidir en la sugerencia de spinner y la pestaña Discover.

90 

91Las señales `filesRead` y `manifestDeps` prueban el estado de archivo registrado de la sesión, que también incluye archivos que Claude ha escrito o editado y archivos de memoria `CLAUDE.md` cargados automáticamente. Para estas dos señales, Claude Code omite rutas bajo su propio [directorio de configuración](/docs/es/claude-directory) y sus directorios temporales.

90 92 

91El siguiente ejemplo usa `manifestDeps` para sugerir un plugin de Stripe una vez que Claude ha leído un `package.json` que depende de `stripe`. El patrón `file` usa `[/\\\\]` para que coincida tanto con separadores de barra diagonal como de barra invertida, y `\\.` para que el punto sea literal. En JSON, cada barra invertida en la expresión regular se escribe dos veces.93El siguiente ejemplo usa `manifestDeps` para sugerir un plugin de Stripe una vez que Claude ha leído un `package.json` que depende de `stripe`. El patrón `file` usa `[/\\\\]` para que coincida tanto con separadores de barra diagonal como de barra invertida, y `\\.` para que el punto sea literal. En JSON, cada barra invertida en la expresión regular se escribe dos veces.

92 94 

plugins.md +2 −2

Details

75 ```75 ```

76 76 

77 | Campo | Propósito |77 | Campo | Propósito |

78 | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |78 | :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

79 | `name` | Identificador único y espacio de nombres de skill. Los skills tienen este prefijo (por ejemplo, `/my-first-plugin:hello`). |79 | `name` | Identificador único y espacio de nombres de skill. Los skills tienen este prefijo (por ejemplo, `/my-first-plugin:hello`). |

80 | `description` | Se muestra en el administrador de plugins al examinar o instalar plugins. |80 | `description` | Se muestra en el administrador de plugins al examinar o instalar plugins. |

81 | `version` | Opcional. Si se establece, los usuarios solo reciben actualizaciones cuando usted incrementa este campo, excepto para una [fuente `command`](/docs/es/plugin-marketplaces#command-sources); consulte [gestión de versiones](/docs/es/plugins-reference#version-management). Si se omite, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management). |81 | `version` | Opcional. Si se establece, los usuarios solo reciben actualizaciones cuando usted incrementa este campo, excepto para una [fuente `command`](/docs/es/plugin-marketplaces#command-sources) o un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution); consulte [gestión de versiones](/docs/es/plugins-reference#version-management). Si se omite, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management). |

82 | `author` | Opcional. Útil para atribución. |82 | `author` | Opcional. Útil para atribución. |

83 83 

84 Para campos adicionales como `homepage`, `repository` y `license`, consulte el [esquema de manifiesto completo](/docs/es/plugins-reference#plugin-manifest-schema).84 Para campos adicionales como `homepage`, `repository` y `license`, consulte el [esquema de manifiesto completo](/docs/es/plugins-reference#plugin-manifest-schema).

Details

40 40 

41Los skills y commands se descubren automáticamente cuando se instala el plugin.41Los skills y commands se descubren automáticamente cuando se instala el plugin.

42 42 

43Si un plugin no tiene directorio `skills/` y no tiene campo manifest `skills`, un `SKILL.md` en la raíz del plugin se carga como un único skill. Establezca el campo frontmatter `name` para controlar el nombre de invocación del skill. Sin él, Claude Code recurre al nombre del directorio de instalación, que para plugins instalados desde marketplace es una cadena de versión que cambia en cada actualización. Para plugins que incluyen más de un skill, use el diseño de directorio `skills/` mostrado arriba.43Si un plugin no tiene directorio `skills/` y no tiene campo manifest `skills`, un `SKILL.md` en la raíz del plugin se carga como un único skill. Establezca el campo frontmatter `name` para controlar el nombre de invocación del skill. Sin él, Claude Code recurre al nombre del directorio de instalación. Para un plugin [copiado en la caché](#plugin-caching-and-file-resolution), ese nombre es una cadena de versión que cambia en cada actualización. Para plugins que incluyen más de un skill, use el diseño de directorio `skills/` mostrado arriba.

44 44 

45En skills y commands de plugins, los campos frontmatter booleanos como `disable-model-invocation` aceptan `yes`, `no`, `on`, `off`, `1`, y `0` en cualquier caso de letra, además de `true` y `false`. Antes de v2.1.218, Claude Code reconocía solo `true` y `false`.45En skills y commands de plugins, los campos frontmatter booleanos como `disable-model-invocation` aceptan `yes`, `no`, `on`, `off`, `1`, y `0` en cualquier caso de letra, además de `true` y `false`. Antes de v2.1.218, Claude Code reconocía solo `true` y `false`.

46 46 


71Prompt del sistema detallado para el agente describiendo su rol, experiencia y comportamiento.71Prompt del sistema detallado para el agente describiendo su rol, experiencia y comportamiento.

72```72```

73 73 

74Los agentes de plugins soportan campos frontmatter `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, e `isolation`. El único valor válido de `isolation` es `"worktree"`. Por razones de seguridad, `hooks`, `mcpServers`, y `permissionMode` no se soportan para agentes enviados por plugins.74Los agentes de plugins soportan campos frontmatter `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, [`omitClaudeMd`](/docs/es/sub-agents#supported-frontmatter-fields), e `isolation`. El único valor válido de `isolation` es `"worktree"`.

75 

76Por razones de seguridad, los agentes enviados por plugins no soportan `hooks`, `mcpServers`, o `permissionMode`.

75 77 

76Claude Code carga un agente de plugin incluso cuando su frontmatter no tiene `name` o no se analiza:78Claude Code carga un agente de plugin incluso cuando su frontmatter no tiene `name` o no se analiza:

77 79 


99 101 

100**Formato**: Configuración JSON con coincidencias de eventos y acciones102**Formato**: Configuración JSON con coincidencias de eventos y acciones

101 103 

104`hooks/hooks.json` puede llevar una clave `$schema` de nivel superior que nombre una URL de JSON Schema para autocompletado y validación del editor. Claude Code ignora la clave al cargar.

105 

102**Configuración de hook**:106**Configuración de hook**:

103 107 

104```json theme={null}108```json theme={null}


440 Plugins sincronizados desde claude.ai444 Plugins sincronizados desde claude.ai

441</h2>445</h2>

442 446 

443En [Cowork](https://claude.com/product/cowork) y [sesiones en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup), Claude Code descarga los plugins habilitados para su cuenta de claude.ai en `~/.claude/plugins/synced/` en el entorno propio de la sesión y carga cada uno como `<name>@synced`, sin marketplace ni registro de instalación. Claude Code no los carga en sesiones que inicia en su propia terminal. Dentro de ese entorno de Cowork o nube, `claude plugin list` muestra las copias descargadas bajo un encabezado `Synced from claude.ai`. Antes de v2.1.239, Claude Code cargaba estos plugins como `<name>@inline`, la identidad que usan los plugins de `--plugin-dir`.447Claude Code carga los plugins habilitados para su cuenta de claude.ai, incluidos los plugins que su organización activa para sus miembros, junto con los plugins que instala desde marketplaces. Los descarga en `~/.claude/plugins/synced/` y los carga como `<name>@synced`, sin marketplace ni registro de instalación. Un plugin sincronizado se ejecuta con la misma confianza que un plugin de marketplace que instaló: sus skills, agentes, hooks, servidores MCP y servidores LSP se cargan todos.

448 

449Dónde Claude Code sincroniza estos plugins depende de la sesión:

450 

451* En [Cowork](https://claude.com/product/cowork) y [sesiones en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup), Claude Code los descarga en el entorno propio de la sesión cuando la sesión comienza. Antes de v2.1.239, Claude Code cargaba estos plugins como `<name>@inline`, la identidad que usan los plugins de `--plugin-dir`.

452* En sesiones de terminal donde inicia sesión con su cuenta de claude.ai, Claude Code verifica su cuenta una vez cada vez que comienza, luego descarga plugins nuevos y actualizados y elimina los que usted u su organización desactivaron, todo en segundo plano. La sincronización en sesiones de terminal requiere Claude Code v2.1.273 o posterior.

453 

454La verificación de inicio se ejecuta en segundo plano, por lo que puede terminar después de que su sesión haya comenzado. Cuando agrega, actualiza o elimina un plugin sincronizado en una sesión interactiva, Claude Code muestra `Plugins changed. Run /reload-plugins to activate.` Ejecute [`/reload-plugins`](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para cargar el cambio en esa sesión, o déjelo para la próxima vez que inicie Claude Code. Si habilita un plugin en claude.ai mientras una sesión se está ejecutando, Claude Code lo descarga la próxima vez que comienza.

444 455 

445Administre un plugin sincronizado por el ID `<name>@synced` que imprime `claude plugin list`:456La sincronización de plugins en sesiones de terminal se ejecuta bajo las mismas condiciones de inicio de sesión que [skills sincronizados desde claude.ai](/docs/es/skills#where-synced-skills-load). También necesita un inicio de sesión que otorgue a Claude Code acceso a los plugins de su cuenta.

446 457 

447* **Desactivar uno**: en la sesión sincronizada, ejecute `claude plugin disable <name>@synced`, o pida a Claude que lo ejecute. Claude Code guarda la opción como `"<name>@synced": false` en el [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) a nivel de usuario de ese entorno. Para volver a activar el plugin, ejecute `claude plugin enable <name>@synced` en la misma sesión. Para mantener un plugin fuera de todas las sesiones sincronizadas, [desactívelo para su cuenta de claude.ai](/docs/es/desktop#extend-claude-code). Para mantenerlo fuera de las sesiones sincronizadas de un proyecto en todos los entornos, establezca `"<name>@synced": false` bajo `enabledPlugins` en el `.claude/settings.json` comprometido de ese proyecto.458Un inicio de sesión de una versión anterior de Claude Code obtiene acceso a plugins la próxima vez que Claude Code renueva ese inicio de sesión en segundo plano, dentro de unas pocas horas, o de inmediato si ejecuta `/login` nuevamente. La sincronización de plugins comienza la próxima vez que inicia Claude Code después de eso.

448* **Administre el plugin en claude.ai**: `claude plugin install`, `update` y `uninstall` no se aplican a un plugin sincronizado. Para eliminar uno, desactive el plugin para su cuenta de claude.ai; la siguiente sesión sincronizada comienza sin él.

449 459 

450Cuando un plugin habilitado de cualquier otra fuente, como una instalación de marketplace, un [plugin del directorio de skills](#skills-directory-plugins), o un plugin de `--plugin-dir`, coincide con el nombre de un plugin sincronizado, Claude Code carga ese plugin e informa que la copia sincronizada no se cargó. Para usar la copia de claude.ai en su lugar, desactive su propia copia. Antes de v2.1.239, Claude Code cargaba la copia sincronizada en lugar de una instalación de marketplace con el mismo nombre.460`claude plugin list` muestra plugins sincronizados bajo un encabezado `Synced from claude.ai`, y la pestaña **Installed** de `/plugin` los enumera con `synced` como su fuente. Administre un plugin sincronizado por el ID `<name>@synced` que imprime `claude plugin list`:

461 

462* **Desactivar uno**: ejecute `claude plugin disable <name>@synced`, o desactívelo desde la pestaña **Installed** de `/plugin`. Claude Code guarda la opción como `"<name>@synced": false` en su [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) a nivel de usuario. Para volver a activar el plugin, ejecute `claude plugin enable <name>@synced`.

463* **Mantener uno fuera en todas partes**: [desactívelo para su cuenta de claude.ai](/docs/es/desktop#extend-claude-code). Para mantenerlo fuera de un proyecto en todos los entornos, establezca `"<name>@synced": false` bajo `enabledPlugins` en el `.claude/settings.json` comprometido de ese proyecto.

464* **Administre el plugin en claude.ai**: `claude plugin install`, `update` y `uninstall` no se aplican a un plugin sincronizado. Claude Code descarga las actualizaciones del plugin en la próxima sincronización. Para eliminar uno, desactive el plugin para su cuenta de claude.ai, y Claude Code lo elimina en la próxima sincronización.

465* **Deje de sincronizar en una máquina**: establezca [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) en `false` en su configuración de usuario. Claude Code deja de descargar, y la próxima vez que comienza mueve los plugins que ya sincronizó a `~/.claude/plugins/.trash/` y ya no los carga. Su organización puede establecer la misma clave en [configuración administrada](/docs/es/managed-settings), o desactivar Skills en claude.ai, lo que también detiene la sincronización de plugins.

466 

467No puede desactivar un plugin que su organización marca como requerido en claude.ai. Claude Code lo carga incluso si lo desactivó anteriormente, y `claude plugin disable` rechaza con `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.` En `claude plugin list`, estos plugins están marcados como `required by your org`.

468 

469Cuando un plugin habilitado de cualquier otra fuente coincide con el nombre de un plugin sincronizado, Claude Code carga ese plugin e informa que la copia sincronizada no se cargó. Otras fuentes incluyen instalaciones de marketplace, [plugins del directorio de skills](#skills-directory-plugins), plugins de `--plugin-dir` y plugins integrados en Claude Code. Para usar la copia de claude.ai en su lugar, desactive su propia copia. Antes de v2.1.239, Claude Code cargaba la copia sincronizada en lugar de una instalación de marketplace con el mismo nombre.

451 470 

452***471***

453 472 


534</h3>553</h3>

535 554 

536| Campo | Tipo | Descripción | Ejemplo |555| Campo | Tipo | Descripción | Ejemplo |

537| :--------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |556| :--------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

538| `$schema` | string | URL de JSON Schema para autocompletado y validación del editor. Claude Code ignora este campo en tiempo de carga. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |557| `$schema` | string | URL de JSON Schema para autocompletado y validación del editor. Claude Code ignora este campo en tiempo de carga. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

539| `displayName` | string | Nombre legible por humanos mostrado en el selector `/plugin` y otras superficies de interfaz de usuario. Para un plugin instalado desde marketplace, un `displayName` en la [entrada de marketplace](/docs/es/plugin-marketplaces#optional-plugin-fields) tiene prioridad sobre este valor. Cuando no se establece ningún nombre de visualización en ninguno de los dos lugares, los usuarios ven `name`. A diferencia de `name`, puede contener espacios y cualquier capitalización. No se utiliza para espacios de nombres o búsqueda. | `"Deployment Tools"` |558| `displayName` | string | Nombre legible por humanos mostrado en el selector `/plugin` y otras superficies de interfaz de usuario. Para un plugin instalado desde marketplace, un `displayName` en la [entrada de marketplace](/docs/es/plugin-marketplaces#optional-plugin-fields) tiene prioridad sobre este valor. Cuando no se establece ningún nombre de visualización en ninguno de los dos lugares, los usuarios ven `name`. A diferencia de `name`, puede contener espacios y cualquier capitalización. No se utiliza para espacios de nombres o búsqueda. | `"Deployment Tools"` |

540| `version` | string | Opcional. Versión semántica. Establecer esto fija el plugin a esa cadena de versión, por lo que los usuarios solo reciben actualizaciones cuando la incrementa, excepto para una [`command` source](/docs/es/plugin-marketplaces#command-sources); vea [Gestión de versiones](#version-management). Si también se establece en la entrada de marketplace, `plugin.json` gana. Si se omite, la versión proviene de la siguiente fuente en [Gestión de versiones](#version-management). | `"2.1.0"` |559| `version` | string | Opcional. Versión semántica. Establecer esto fija el plugin a esa cadena de versión, por lo que los usuarios solo reciben actualizaciones cuando la incrementa, excepto para una [`command` source](/docs/es/plugin-marketplaces#command-sources) o un plugin [cargado en lugar](#plugin-caching-and-file-resolution); vea [Gestión de versiones](#version-management). Si también se establece en la entrada de marketplace, `plugin.json` gana. Si se omite, la versión proviene de la siguiente fuente en [Gestión de versiones](#version-management). | `"2.1.0"` |

541| `description` | string | Breve explicación del propósito del plugin | `"Deployment automation tools"` |560| `description` | string | Breve explicación del propósito del plugin | `"Deployment automation tools"` |

542| `author` | object | Información del autor | `{"name": "Dev Team", "email": "dev@company.com"}` |561| `author` | object | Información del autor | `{"name": "Dev Team", "email": "dev@company.com"}` |

543| `homepage` | string | URL de documentación | `"https://docs.example.com"` |562| `homepage` | string | URL de documentación | `"https://docs.example.com"` |


553 572 

554Establezca `defaultEnabled: false` en `plugin.json` para enviar un plugin que se instale deshabilitado. El usuario lo activa con `claude plugin enable <plugin>` o la interfaz `/plugin`. Úselo para plugins que agregan costo o alcance en el que un usuario debe optar, como uno que se conecta a un servicio externo.573Establezca `defaultEnabled: false` en `plugin.json` para enviar un plugin que se instale deshabilitado. El usuario lo activa con `claude plugin enable <plugin>` o la interfaz `/plugin`. Úselo para plugins que agregan costo o alcance en el que un usuario debe optar, como uno que se conecta a un servicio externo.

555 574 

556`defaultEnabled` es la alternativa cuando nada más ha decidido el estado del plugin. Dos cosas tienen prioridad sobre él:575`defaultEnabled` es la alternativa cuando nada más ha decidido el estado del plugin. El ajuste del usuario y un requisito de dependencia tienen prioridad sobre él:

557 576 

558* **La configuración del usuario**: una entrada para el plugin en `enabledPlugins` en cualquier ámbito de configuración. Una vez escrita, persiste en actualizaciones y reinstalaciones de plugins, por lo que cambiar `defaultEnabled` en una versión posterior no invierte un usuario existente.577* **La configuración del usuario**: una entrada para el plugin en `enabledPlugins` en cualquier ámbito de configuración. Una vez escrita, persiste en actualizaciones y reinstalaciones de plugins, por lo que cambiar `defaultEnabled` en una versión posterior no invierte un usuario existente.

559* **Un requisito de dependencia**: cuando un plugin es requerido por otro que está activo, Claude Code escribe `true` para él en tiempo de instalación o habilitación. Eso le da una configuración explícita, por lo que su propio valor predeterminado ya no se aplica. Vea [Habilitar o deshabilitar un plugin con dependencias](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).578* **Un requisito de dependencia**: cuando un plugin es requerido por otro que está activo, Claude Code escribe `true` para él en tiempo de instalación o habilitación. Eso le da una configuración explícita, por lo que su propio valor predeterminado ya no se aplica. Vea [Habilitar o deshabilitar un plugin con dependencias](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).


577| `experimental.themes` | string\|array | Archivos/directorios de tema de color (reemplaza el `themes/` predeterminado). Vea [Temas](#themes) | `"./themes/"` |596| `experimental.themes` | string\|array | Archivos/directorios de tema de color (reemplaza el `themes/` predeterminado). Vea [Temas](#themes) | `"./themes/"` |

578| `experimental.monitors` | string\|array | Configuraciones de [Monitor](/docs/es/tools-reference#monitor-tool) de fondo que se inician automáticamente cuando el plugin está activo. Vea [Monitores](#monitors) | `"./monitors.json"` |597| `experimental.monitors` | string\|array | Configuraciones de [Monitor](/docs/es/tools-reference#monitor-tool) de fondo que se inician automáticamente cuando el plugin está activo. Vea [Monitores](#monitors) | `"./monitors.json"` |

579| `experimental.evals` | string\|array | Directorio debajo de la raíz del plugin que contiene los [casos de eval](/docs/es/plugin-evals#use-a-different-eval-directory) del plugin, cuando no es el `evals/` predeterminado. `claude plugin eval --eval-dir` lo anula | `"quality/evals"` |598| `experimental.evals` | string\|array | Directorio debajo de la raíz del plugin que contiene los [casos de eval](/docs/es/plugin-evals#use-a-different-eval-directory) del plugin, cuando no es el `evals/` predeterminado. `claude plugin eval --eval-dir` lo anula | `"quality/evals"` |

580| `userConfig` | object | Valores configurables por el usuario solicitados en tiempo de habilitación. Vea [Configuración del usuario](#user-configuration) | Vea abajo |599| `userConfig` | object | Valores configurables por el usuario solicitados en tiempo de habilitación. Vea [Configuración del usuario](#user-configuration) | |

581| `channels` | array | Declaraciones de canales para inyección de mensajes (estilo Telegram, Slack, Discord). Vea [Canales](#channels) | Vea abajo |600| `channels` | array | Declaraciones de canales para inyección de mensajes (estilo Telegram, Slack, Discord). Vea [Canales](#channels) | |

582| `dependencies` | array | Otros plugins que este plugin requiere, opcionalmente con restricciones de versión semántica. Vea [Restringir versiones de dependencia de plugins](/docs/es/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |601| `dependencies` | array | Otros plugins que este plugin requiere, opcionalmente con restricciones de versión semántica. Vea [Restringir versiones de dependencia de plugins](/docs/es/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

583 602 

584<h3 id="experimental-components">603<h3 id="experimental-components">


614Las claves deben ser identificadores válidos. Cada opción admite estos campos:633Las claves deben ser identificadores válidos. Cada opción admite estos campos:

615 634 

616| Campo | Requerido | Descripción |635| Campo | Requerido | Descripción |

617| :------------ | :-------- | :---------------------------------------------------------------------------------------------------------- |636| :------------ | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

618| `type` | Sí | Uno de `string`, `number`, `boolean`, `directory`, o `file` |637| `type` | Sí | Uno de `string`, `number`, `boolean`, `directory`, o `file` |

619| `title` | Sí | Etiqueta mostrada en el diálogo de configuración |638| `title` | Sí | Etiqueta mostrada en el diálogo de configuración |

620| `description` | Sí | Texto de ayuda mostrado debajo del campo |639| `description` | Sí | Texto de ayuda mostrado debajo del campo |

621| `sensitive` | No | Si es `true`, enmascara la entrada y almacena el valor en almacenamiento seguro en lugar de `settings.json` |640| `sensitive` | No | Si es `true`, enmascara la entrada y almacena el valor en almacenamiento seguro en lugar de `settings.json` |

622| `required` | No | Si es `true`, la validación falla cuando el campo está vacío |641| `required` | No | Si es `true`, la validación falla cuando el campo está vacío |

623| `default` | No | Valor utilizado cuando el usuario no proporciona nada |642| `default` | No | Valor utilizado cuando el usuario no proporciona nada |

643| `options` | No | Para tipo `string`, los valores que el campo acepta, mostrados en `/config` como un selector sobre ellos. Requiere Claude Code v2.1.271 o posterior |

624| `multiple` | No | Para tipo `string`, permitir un array de cadenas |644| `multiple` | No | Para tipo `string`, permitir un array de cadenas |

625| `min` / `max` | No | Límites para tipo `number` |645| `min` / `max` | No | Límites para tipo `number` |

626 646 

647Excepto campos `sensitive` y listas `multiple`, cada campo de cada plugin habilitado también aparece como una fila en el panel `/config`. Las filas requieren Claude Code v2.1.269 o posterior.

648 

627Cada valor está disponible para sustitución como `${user_config.KEY}` en configuraciones de servidores MCP y LSP y comandos de hooks. Los valores no sensibles también pueden sustituirse en contenido de skills y agentes. Todos los valores se exportan a procesos de hooks como variables de entorno `CLAUDE_PLUGIN_OPTION_<KEY>`, donde `<KEY>` es la clave de opción en mayúsculas.649Cada valor está disponible para sustitución como `${user_config.KEY}` en configuraciones de servidores MCP y LSP y comandos de hooks. Los valores no sensibles también pueden sustituirse en contenido de skills y agentes. Todos los valores se exportan a procesos de hooks como variables de entorno `CLAUDE_PLUGIN_OPTION_<KEY>`, donde `<KEY>` es la clave de opción en mayúsculas.

628 650 

629Los campos que se ejecutan en un shell rechazan `${user_config.*}`: sustituir un valor configurado en un comando de shell permitiría que el shell ejecute lo que ese valor contiene, por lo que el componente falla con un [error](/docs/es/errors#plugin-command-references-user-config) en su lugar. Cada campo rechazado tiene una forma alternativa de pasar el valor:651Los campos que se ejecutan en un shell rechazan `${user_config.*}`: sustituir un valor configurado en un comando de shell permitiría que el shell ejecute lo que ese valor contiene, por lo que el componente falla con un [error](/docs/es/errors#plugin-command-references-user-config) en su lugar. Cada campo rechazado tiene una forma alternativa de pasar el valor:


733| `${CLAUDE_PLUGIN_DATA}` | [Directorio persistente](#persistent-data-directory) que sobrevive a actualizaciones de plugins, creado en primera referencia | Dependencias instaladas como `node_modules` o entornos virtuales de Python, código generado y cachés |755| `${CLAUDE_PLUGIN_DATA}` | [Directorio persistente](#persistent-data-directory) que sobrevive a actualizaciones de plugins, creado en primera referencia | Dependencias instaladas como `node_modules` o entornos virtuales de Python, código generado y cachés |

734| `${CLAUDE_PROJECT_DIR}` | La raíz del proyecto | Scripts y archivos de configuración locales del proyecto |756| `${CLAUDE_PROJECT_DIR}` | La raíz del proyecto | Scripts y archivos de configuración locales del proyecto |

735 757 

736Los tres se exportan como variables de entorno a procesos de hooks y a subprocesos de servidores MCP y LSP. Qué campos sustituyen en línea depende del componente del plugin:758Los tres se exportan como variables de entorno a procesos de hooks y a subprocesos de servidores MCP y LSP. No están presentes en el entorno de comandos que Claude ejecuta a través de la herramienta Bash, en la sesión principal o en un subagente. En contenido de plugins, escriba el marcador de posición en su lugar, y Claude Code sustituye la ruta en línea cuando carga el contenido. Qué campos sustituyen en línea depende del componente del plugin:

737 759 

738| Componente del plugin | Campos donde se resuelven los placeholders |760| Componente del plugin | Campos donde se resuelven los placeholders |

739| :--------------------------------- | :----------------------------------------------- |761| :--------------------------------- | :----------------------------------------------- |


762}784}

763```785```

764 786 

765`${CLAUDE_PLUGIN_ROOT}` cambia cuando el plugin se actualiza. El directorio de la versión anterior permanece en el disco durante un período de gracia después de una actualización, pero trátelo como efímero y no escriba estado allí. Vea [almacenamiento en caché de plugins](#plugin-caching-and-file-resolution) para semántica de limpieza.787Para un plugin copiado, `${CLAUDE_PLUGIN_ROOT}` cambia cuando el plugin se actualiza. El directorio de la versión anterior permanece en el disco durante un período de gracia después de una actualización, pero trátelo como efímero y no escriba estado allí. Para ver qué plugins se copian y para semántica de limpieza, vea [almacenamiento en caché de plugins](#plugin-caching-and-file-resolution).

766 788 

767Cuando un plugin se actualiza a mitad de sesión, comandos de hooks, monitores, servidores MCP y servidores LSP continúan usando la ruta de la versión anterior. Ejecute `/reload-plugins` para cambiar hooks, servidores MCP y servidores LSP a la nueva ruta; los monitores requieren un reinicio de sesión. En una sesión sin una terminal interactiva, la recarga deja servidores MCP de plugins en la ruta anterior hasta la siguiente sesión.789Cuando un plugin se actualiza a mitad de sesión, comandos de hooks, monitores, servidores MCP y servidores LSP continúan usando la ruta de la versión anterior. Ejecute `/reload-plugins` para cambiar hooks, servidores MCP y servidores LSP a la nueva ruta; los monitores requieren un reinicio de sesión. En una sesión sin una terminal interactiva, la recarga deja servidores MCP de plugins en la ruta anterior hasta la siguiente sesión.

768 790 


825 Almacenamiento en caché de plugins y resolución de archivos847 Almacenamiento en caché de plugins y resolución de archivos

826</h2>848</h2>

827 849 

828Los plugins se especifican de una de dos formas:850Los plugins se especifican de una de tres formas:

829 851 

830* A través de `claude --plugin-dir` o `claude --plugin-url`, durante la duración de una sesión.852* A través de `claude --plugin-dir` o `claude --plugin-url`, durante la duración de una sesión.

831* A través de un marketplace, instalado para sesiones futuras.853* A través de un marketplace, instalado para sesiones futuras.

854* A través de su cuenta de claude.ai, [sincronizado](#synced-plugins) en `~/.claude/plugins/synced/`.

832 855 

833Por razones de seguridad y verificación, Claude Code copia los plugins del *marketplace* en la **caché de plugins** local del usuario (`~/.claude/plugins/cache`) en lugar de usarlos en su lugar, excepto para [fuentes `command` en modo de enlace](/docs/es/plugin-marketplaces#copy-mode-and-link-mode), que Claude Code usa en su lugar a través de enlaces en la entrada de caché.856Por razones de seguridad y verificación, Claude Code copia los plugins del *marketplace* en la **caché de plugins** local del usuario (`~/.claude/plugins/cache`), a menos que el plugin se cargue en su lugar. Una [fuente `command` en modo de enlace](/docs/es/plugin-marketplaces#copy-mode-and-link-mode) se carga en su lugar a través de enlaces en la entrada de caché. Una [fuente de ruta relativa](/docs/es/plugin-marketplaces#relative-paths) en un marketplace agregado desde un directorio local se carga en su lugar desde la carpeta del marketplace.

857 

858Para un plugin cargado en su lugar desde un marketplace de directorio local, sus ediciones al directorio de origen surten efecto en el siguiente inicio de sesión o `/reload-plugins`. No necesita un aumento de versión. Los procesos de hook del plugin y los servidores MCP y LSP reciben un `CLAUDE_PLUGIN_ROOT` que apunta al directorio de origen. Claude Code no instala las [dependencias de paquetes Node.js](#node-js-package-dependencies) del plugin en el directorio de origen. Instálelas allí usted mismo, o desde un hook en el [directorio de datos persistentes](#persistent-data-directory).

834 859 

835Para plugins copiados, cada versión instalada es un directorio separado en la caché, agrupado por marketplace y plugin y nombrado para la versión resuelta, con su propia copia de los archivos del plugin y [dependencias de paquetes Node.js](#node-js-package-dependencies). Una dependencia resuelta desde una [etiqueta de lanzamiento](/docs/es/plugin-dependencies#tag-plugin-releases-for-version-resolution) obtiene un nombre de directorio con un sufijo de SHA de confirmación.860Para plugins copiados, cada versión instalada es un directorio separado en la caché, agrupado por marketplace y plugin y nombrado para la versión resuelta, con su propia copia de los archivos del plugin y [dependencias de paquetes Node.js](#node-js-package-dependencies). Una dependencia resuelta desde una [etiqueta de lanzamiento](/docs/es/plugin-dependencies#tag-plugin-releases-for-version-resolution) obtiene un nombre de directorio con un sufijo de SHA de confirmación.

836 861 


853| `bun.lock` o `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |878| `bun.lock` o `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

854| `npm-shrinkwrap.json` o `package-lock.json` | `npm ci --ignore-scripts` |879| `npm-shrinkwrap.json` o `package-lock.json` | `npm ci --ignore-scripts` |

855 880 

856Si un plugin contiene más de uno de estos archivos de bloqueo, Claude Code usa la primera coincidencia, verificando en orden: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`. Claude Code omite `yarn.lock` y `pnpm-lock.yaml` porque Yarn y pnpm admiten hooks de configuración en tiempo de resolución que omiten `--ignore-scripts`.881Si un plugin contiene más de uno de estos archivos de bloqueo, Claude Code usa la primera coincidencia, verificando en orden: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

882 

883Claude Code omite la instalación en dos casos, cada uno con su propia solución:

884 

885* Si su plugin solo incluye un `yarn.lock` o `pnpm-lock.yaml`, reemplácelo con un archivo de bloqueo npm.

886* Si un `bunfig.toml` se encuentra junto al archivo de bloqueo bun, elimine el `bunfig.toml`, o reemplace el archivo de bloqueo bun con un archivo de bloqueo npm.

857 887 

858Envíe un archivo de bloqueo npm para el alcance más amplio. Claude Code ejecuta el gestor de paquetes del archivo de bloqueo coincidente desde el PATH del usuario y no recurre al otro archivo de bloqueo si falta. Para un plugin distribuido a través de una fuente npm, use `npm-shrinkwrap.json`; npm excluye `package-lock.json` de los paquetes publicados.888Envíe un archivo de bloqueo npm para el alcance más amplio. Claude Code ejecuta el gestor de paquetes del archivo de bloqueo coincidente desde el PATH del usuario y no recurre al otro archivo de bloqueo si falta. Para un plugin distribuido a través de una fuente npm, use `npm-shrinkwrap.json`; npm excluye `package-lock.json` de los paquetes publicados.

859 889 


863* **Sin scripts de ciclo de vida:** `--ignore-scripts` evita que se ejecuten scripts `preinstall`, `install` y `postinstall`, por lo que las dependencias que construyen módulos nativos en esos scripts se descargan pero no se compilan durante esta instalación.893* **Sin scripts de ciclo de vida:** `--ignore-scripts` evita que se ejecuten scripts `preinstall`, `install` y `postinstall`, por lo que las dependencias que construyen módulos nativos en esos scripts se descargan pero no se compilan durante esta instalación.

864* **Tiempo de espera de 60 segundos:** Claude Code detiene una instalación que se ejecuta más tiempo y la trata como fallida.894* **Tiempo de espera de 60 segundos:** Claude Code detiene una instalación que se ejecuta más tiempo y la trata como fallida.

865 895 

866Obtener un plugin de fuente npm en sí ejecuta `npm install` con scripts de ciclo de vida habilitados, antes de que se ejecute esta instalación de dependencias.896Claude Code obtiene un plugin de fuente npm antes de esta instalación de dependencias, y ninguno de los scripts de instalación propios del paquete se ejecuta durante la obtención. Consulte [paquetes npm](/docs/es/plugin-marketplaces#npm-packages).

867 897 

868Una instalación fallida u omitida nunca bloquea el plugin. Cuando la instalación falla, o Claude Code omite un archivo de bloqueo yarn o pnpm, registra el motivo como una advertencia en [salida de depuración](#debugging-commands). Un plugin con un `package.json` y sin archivo de bloqueo se omite sin una entrada de registro. Una instalación que agota el tiempo de espera puede dejar un árbol `node_modules` parcial en la copia en caché.898Una instalación fallida u omitida nunca bloquea el plugin. Cuando la instalación falla, o Claude Code omite porque hay un archivo de bloqueo yarn o pnpm o un `bunfig.toml`, registra el motivo como una advertencia en [salida de depuración](#debugging-commands). Un plugin con un `package.json` y sin archivo de bloqueo se omite sin una entrada de registro. Una instalación que agota el tiempo de espera puede dejar un árbol `node_modules` parcial en la copia en caché.

869 899 

870No puede desactivar la instalación automática; ninguna configuración o variable de entorno la desactiva. En redes restringidas, consulte los [requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) para los hosts a permitir.900No puede desactivar la instalación automática; ninguna configuración o variable de entorno la desactiva. En redes restringidas, consulte los [requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) para los hosts a permitir.

871 901 


1061El comando acepta estas opciones:1091El comando acepta estas opciones:

1062 1092 

1063| Opción | Descripción | Predeterminado |1093| Opción | Descripción | Predeterminado |

1064| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |1094| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------- |

1065| `-s, --scope <scope>` | Alcance de instalación: `user`, `project` o `local` | `user` |1095| `-s, --scope <scope>` | Alcance de instalación: `user`, `project` o `local` | `user` |

1066| `--config <key=value>` | Establece una opción [`userConfig`](#user-configuration) declarada en el manifiesto del plugin. Repita la bandera para establecer múltiples opciones | |1096| `--config <key=value>` | Establece una opción [`userConfig`](#user-configuration) declarada en el manifiesto del plugin. Repita la bandera para establecer múltiples opciones | |

1067| `-y, --yes` | Acepta un comando que el marketplace del plugin declara, sin el mensaje de confirmación: el comando que produce un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), o el [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) que autentica una descarga de archivo. Aceptar un `headersHelper` requiere Claude Code v2.1.238 o posterior. Claude Code aún imprime el comando primero. Requerido cuando stdin o stdout no es una TTY. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal | |1097| `-y, --yes` | Acepta un comando que el marketplace del plugin declara, sin el mensaje de confirmación: el comando que produce un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), o el [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) que autentica una descarga de archivo. Aceptar un `headersHelper` requiere Claude Code v2.1.238 o posterior. Claude Code aún imprime el comando primero. Requerido cuando stdin o stdout no es una TTY, a menos que pase `--accept-command`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal | |

1098| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior con [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. La aceptación cuenta para exactamente ese comando, plugin y catálogo de marketplace. Si alguno de ellos cambió desde que se mostró el comando, incluyendo a través de la actualización de marketplace de la propia ejecución, Claude Code no acepta el resumen y muestra el comando nuevamente. No se puede combinar con `-y`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal. Requiere Claude Code v2.1.271 o posterior | |

1068| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulte [formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |1099| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulte [formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |

1069| `-h, --help` | Muestra la ayuda del comando | |1100| `-h, --help` | Muestra la ayuda del comando | |

1070 1101 


1078 1109 

1079Otros campos, como `pluginId`, `scope` y `failureCode`, aparecen solo cuando aplican. La opción `--json` en `plugin uninstall`, `plugin update`, `plugin enable` y `plugin disable` imprime el mismo objeto con los propios campos de ese subcomando. Un error de uso, como un `--scope` inválido, no imprime ninguna línea de resultado y sale con 1 con la razón en stderr.1110Otros campos, como `pluginId`, `scope` y `failureCode`, aparecen solo cuando aplican. La opción `--json` en `plugin uninstall`, `plugin update`, `plugin enable` y `plugin disable` imprime el mismo objeto con los propios campos de ese subcomando. Un error de uso, como un `--scope` inválido, no imprime ninguna línea de resultado y sale con 1 con la razón en stderr.

1080 1111 

1112Cuando una ejecución muestra un comando declarado por el marketplace y no lo ejecuta, el resultado `failed` también lleva un objeto `shownCommand` cuyos campos incluyen el comando tal como se mostró, el plugin al que pertenece y el `sha256` del comando. Para aceptar exactamente ese comando, vuelva a ejecutar con ese `sha256` como `--accept-command`. Requiere Claude Code v2.1.271 o posterior.

1113 

1114Si `shownCommand.acceptCommandMatched` es `false`, el resumen que pasó no coincide con el comando ahora mostrado. Muestre ese comando a una persona antes de pasar su `sha256`.

1115 

1081Estos ejemplos muestran invocaciones comunes:1116Estos ejemplos muestran invocaciones comunes:

1082 1117 

1083```bash theme={null}1118```bash theme={null}


1159 1194 

1160El comando toma estos argumentos:1195El comando toma estos argumentos:

1161 1196 

1162* `<plugin>`: Nombre del plugin o `plugin-name@marketplace-name`1197* `<plugin>`: Nombre del plugin, `plugin-name@marketplace-name` o `plugin-name@synced` para un [plugin sincronizado desde claude.ai](#synced-plugins)

1163 1198 

1164El comando acepta estas opciones:1199El comando acepta estas opciones:

1165 1200 


1173 plugin disable1208 plugin disable

1174</h3>1209</h3>

1175 1210 

1176Deshabilita un plugin sin desinstalarlo. Cuando el destino está instalado desde un marketplace, el comando falla si otro plugin habilitado [depende de](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) él. El mensaje de error incluye un comando encadenado que deshabilita primero cada dependiente.1211Deshabilita un plugin sin desinstalarlo.

1212 

1213Cuando el destino está instalado desde un marketplace, el comando falla si otro plugin habilitado [depende de](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) él. El mensaje de error incluye un comando encadenado que deshabilita primero cada dependiente.

1214 

1215Para un [plugin sincronizado](#synced-plugins) que su organización requiere, el comando falla y no guarda nada.

1177 1216 

1178```bash theme={null}1217```bash theme={null}

1179claude plugin disable [plugin] [options]1218claude plugin disable [plugin] [options]


1181 1220 

1182El comando toma estos argumentos:1221El comando toma estos argumentos:

1183 1222 

1184* `[plugin]`: Nombre del plugin o `plugin-name@marketplace-name`. Opcional cuando se usa `--all`1223* `[plugin]`: Nombre del plugin, `plugin-name@marketplace-name` o `plugin-name@synced` para un [plugin sincronizado desde claude.ai](#synced-plugins). Opcional cuando se usa `--all`

1185 1224 

1186El comando acepta estas opciones:1225El comando acepta estas opciones:

1187 1226 


1209El comando acepta estas opciones:1248El comando acepta estas opciones:

1210 1249 

1211| Opción | Descripción | Predeterminado |1250| Opción | Descripción | Predeterminado |

1212| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |1251| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------- |

1213| `-s, --scope <scope>` | Alcance a actualizar: `user`, `project`, `local` o `managed` | `user` |1252| `-s, --scope <scope>` | Alcance a actualizar: `user`, `project`, `local` o `managed` | `user` |

1214| `-y, --yes` | Acepta un comando que el marketplace del plugin declara, sin el mensaje de confirmación: el comando que produce un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), o el [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) que autentica una descarga de archivo. Aceptar un `headersHelper` requiere Claude Code v2.1.238 o posterior. Claude Code aún imprime el comando primero. Requerido cuando stdin o stdout no es una TTY. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal | |1253| `-y, --yes` | Acepta un comando que el marketplace del plugin declara, sin el mensaje de confirmación: el comando que produce un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), o el [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) que autentica una descarga de archivo. Aceptar un `headersHelper` requiere Claude Code v2.1.238 o posterior. Claude Code aún imprime el comando primero. Requerido cuando stdin o stdout no es una TTY, a menos que pase `--accept-command`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal | |

1254| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior con [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. La aceptación cuenta para exactamente ese comando, plugin y catálogo de marketplace. Si alguno de ellos cambió desde que se mostró el comando, incluyendo a través de la actualización de marketplace de la propia ejecución, Claude Code no acepta el resumen y muestra el comando nuevamente. No se puede combinar con `-y`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal. Requiere Claude Code v2.1.271 o posterior | |

1215| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |1255| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |

1216| `-h, --help` | Muestra la ayuda del comando | |1256| `-h, --help` | Muestra la ayuda del comando | |

1217 1257 


1242Dentro de una sesión interactiva, `/plugin list` imprime un listado similar en línea, pero solo cubre plugins instalados desde marketplace:1282Dentro de una sesión interactiva, `/plugin list` imprime un listado similar en línea, pero solo cubre plugins instalados desde marketplace:

1243 1283 

1244* Los plugins cargados desde directorios de skills aparecen en la interfaz `/plugin` y en `claude plugin list`, pero no en la salida en línea de `/plugin list`.1284* Los plugins cargados desde directorios de skills aparecen en la interfaz `/plugin` y en `claude plugin list`, pero no en la salida en línea de `/plugin list`.

1245* En Claude Code v2.1.239 o posterior, los [plugins sincronizados desde claude.ai](#synced-plugins) aparecen en `claude plugin list` cuando lo ejecuta en el entorno donde una sesión sincronizada los descargó. No aparecen en la salida en línea de `/plugin list`.1285* Los [plugins sincronizados desde claude.ai](#synced-plugins) aparecen en `claude plugin list` en Claude Code v2.1.239 o posterior y en la interfaz `/plugin`, pero no en la salida en línea de `/plugin list`.

1246* Los plugins cargados para la sesión con `--plugin-dir` o `--plugin-url` aparecen en la interfaz `/plugin`, y en `claude plugin list` solo cuando la misma bandera precede al subcomando, como en `claude --plugin-dir <dir> plugin list`. Solo el nombre de la bandera nombra su ubicación, así que un `claude plugin list` sin calificar no puede encontrarlos, a diferencia de los plugins sincronizados y los plugins del directorio de skills, cuyos directorios fijos escanea Claude Code.1286* Los plugins cargados para la sesión con `--plugin-dir` o `--plugin-url` aparecen en la interfaz `/plugin`, y en `claude plugin list` solo cuando la misma bandera precede al subcomando, como en `claude --plugin-dir <dir> plugin list`. Solo el nombre de la bandera nombra su ubicación, así que un `claude plugin list` sin calificar no puede encontrarlos, a diferencia de los plugins sincronizados y los plugins del directorio de skills, cuyos directorios fijos escanea Claude Code.

1247 1287 

1248El formulario interactivo acepta `--enabled` o `--disabled` para mostrar solo los plugins en ese estado, y `ls` como abreviatura de `list`.1288El formulario interactivo acepta `--enabled` o `--disabled` para mostrar solo los plugins en ese estado, y `ls` como abreviatura de `list`.


1520 Gestión de versiones1560 Gestión de versiones

1521</h3>1561</h3>

1522 1562 

1523Claude Code utiliza la versión del plugin como clave de caché que determina si hay una actualización disponible. Cuando ejecuta `/plugin update` o se activa la actualización automática, Claude Code calcula la versión actual y omite la actualización si coincide con la que ya está instalada.1563Claude Code utiliza la versión del plugin como clave de caché que determina si hay una actualización disponible. Cuando ejecuta `/plugin update` o se activa la actualización automática, Claude Code calcula la versión actual y omite la actualización si coincide con la que ya está instalada. Un plugin [cargado en su lugar](#plugin-caching-and-file-resolution) desde un marketplace de directorio local carga sus archivos de fuente actuales en cada inicio de sesión, sin importar lo que diga su cadena de versión.

1524 1564 

1525Para cada tipo de fuente excepto `command`, Claude Code resuelve la versión a partir de la primera de estas que esté establecida:1565Para cada tipo de fuente excepto `command`, Claude Code resuelve la versión a partir de la primera de estas que esté establecida:

1526 1566 


15282. El campo `version` en la entrada del plugin en el marketplace en `marketplace.json`15682. El campo `version` en la entrada del plugin en el marketplace en `marketplace.json`

15293. El SHA del commit de git de la fuente del plugin, para fuentes `github`, `url`, `git-subdir` y relative-path en un marketplace alojado en git15693. El SHA del commit de git de la fuente del plugin, para fuentes `github`, `url`, `git-subdir` y relative-path en un marketplace alojado en git

15304. El resumen SHA-256, para [fuentes `archive`](/docs/es/plugin-marketplaces#zip-archives): el pin `sha256` en la entrada del marketplace, o el resumen del archivo descargado cuando no establece ningún pin. Claude Code lo acorta a los primeros 12 caracteres15704. El resumen SHA-256, para [fuentes `archive`](/docs/es/plugin-marketplaces#zip-archives): el pin `sha256` en la entrada del marketplace, o el resumen del archivo descargado cuando no establece ningún pin. Claude Code lo acorta a los primeros 12 caracteres

15315. `unknown`, para fuentes `npm` o directorios locales que no estén dentro de un repositorio de git15715. `unknown`, para fuentes `npm` o directorios locales cuando ni el directorio del plugin ni su marketplace es un repositorio de git. Claude Code no toma la versión de un repositorio que encierra la ruta de instalación, como un `~/.claude` gestionado por git

1532 1572 

1533Para una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), Claude Code siempre deriva la versión de lo que produjo el comando: un hash de contenido de 12 caracteres por sí solo, o anexado a la versión `plugin.json` como `<version>-<hash>` cuando se establece uno. Claude Code ignora el campo `version` de la entrada del marketplace para fuentes de comando. Un comando cuya salida con hash cambia, por lo tanto, produce una nueva versión, incluso cuando la cadena de versión creada permanece igual. En [modo de enlace](/docs/es/plugin-marketplaces#copy-mode-and-link-mode), el hash cubre la ruta real del directorio impreso y sus entradas de nivel superior en lugar del contenido del archivo.1573Para una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), Claude Code siempre deriva la versión de lo que produjo el comando: un hash de contenido de 12 caracteres por sí solo, o anexado a la versión `plugin.json` como `<version>-<hash>` cuando se establece uno. Claude Code ignora el campo `version` de la entrada del marketplace para fuentes de comando. Un comando cuya salida con hash cambia, por lo tanto, produce una nueva versión, incluso cuando la cadena de versión creada permanece igual. En [modo de enlace](/docs/es/plugin-marketplaces#copy-mode-and-link-mode), el hash cubre la ruta real del directorio impreso y sus entradas de nivel superior en lugar del contenido del archivo.

1534 1574 

1535Para esos tipos de fuente, esto le proporciona tres formas de versionar un plugin:1575Para esos tipos de fuente, esto le proporciona tres formas de versionar un plugin:

1536 1576 

1537| Enfoque | Cómo | Comportamiento de actualización | Mejor para |1577| Enfoque | Cómo | Comportamiento de actualización | Mejor para |

1538| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |1578| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

1539| **Versión explícita** | Establezca `"version": "2.1.0"` en `plugin.json` | Los usuarios obtienen actualizaciones solo cuando incrementa este campo. Insertar nuevos commits sin incrementarlo no tiene efecto, y `/plugin update` informa "already at the latest version". | Plugins publicados con ciclos de lanzamiento estables |1579| **Versión explícita** | Establezca `"version": "2.1.0"` en `plugin.json` | Los usuarios obtienen actualizaciones solo cuando incrementa este campo. Insertar nuevos commits sin incrementarlo no tiene efecto, y `/plugin update` informa "already at the latest version". Para un plugin [cargado en su lugar](#plugin-caching-and-file-resolution), el nuevo contenido se carga de todas formas. | Plugins publicados con ciclos de lanzamiento estables |

1540| **Versión de SHA de commit** | Omita `version` tanto de `plugin.json` como de la entrada del marketplace | Los usuarios obtienen actualizaciones cada vez que cambia el commit resuelto de la fuente | Plugins internos o de equipo en desarrollo activo |1580| **Versión de SHA de commit** | Omita `version` tanto de `plugin.json` como de la entrada del marketplace | Los usuarios obtienen actualizaciones cada vez que cambia el commit resuelto de la fuente | Plugins internos o de equipo en desarrollo activo |

1541| **Versión de resumen** | Utilice una [fuente `archive`](/docs/es/plugin-marketplaces#zip-archives) y omita `version` tanto de `plugin.json` como de la entrada del marketplace | Con un pin `sha256`, los usuarios obtienen actualizaciones cuando cambia el pin. Sin uno, los usuarios obtienen actualizaciones cada vez que cambian los bytes del archivo zip alojado | Plugins publicados como archivos zip en un servidor estático o repositorio de artefactos |1581| **Versión de resumen** | Utilice una [fuente `archive`](/docs/es/plugin-marketplaces#zip-archives) y omita `version` tanto de `plugin.json` como de la entrada del marketplace | Con un pin `sha256`, los usuarios obtienen actualizaciones cuando cambia el pin. Sin uno, los usuarios obtienen actualizaciones cada vez que cambian los bytes del archivo zip alojado | Plugins publicados como archivos zip en un servidor estático o repositorio de artefactos |

1542 1582 

Details

88 88 

89Cada modelo tiene su propia caché. Cambiar con [`/model`](/docs/es/model-config#setting-your-model) significa que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché, aunque el contenido sea idéntico.89Cada modelo tiene su propia caché. Cambiar con [`/model`](/docs/es/model-config#setting-your-model) significa que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché, aunque el contenido sea idéntico.

90 90 

91Cuando ejecuta `/model` en la terminal, Claude Code le pide que confirme el cambio solo mientras la caché aún está activa. La caché permanece activa durante un [TTL de caché](#cache-lifetime) después de que Claude Code envió por última vez una solicitud en esta conversación o Claude respondió por última vez. Una vez que pasa ese tiempo, la caché ha expirado, por lo que Claude Code cambia sin preguntar.91Cuando ejecuta `/model` en la terminal, Claude Code le pide que confirme el cambio solo mientras la caché aún está activa y el nuevo modelo no es el que produjo la última respuesta. La caché permanece activa durante un [TTL de caché](#cache-lifetime) después de que Claude Code envió por última vez una solicitud en esta conversación o Claude respondió por última vez. Una vez que pasa ese tiempo, la caché ha expirado, por lo que Claude Code cambia sin preguntar.

92 92 

93Antes de v2.1.238, Claude Code no verificaba el TTL de caché y preguntaba incluso después de que la caché había expirado.93Antes de v2.1.238, Claude Code no verificaba el TTL de caché y preguntaba incluso después de que la caché había expirado.

94 94 


264 Cambiar estilo de salida264 Cambiar estilo de salida

265</h3>265</h3>

266 266 

267Cuando cambia [estilos de salida](/docs/es/output-styles) durante la sesión con `/config` o la configuración `outputStyle`, Claude usa el nuevo estilo a partir de su próximo mensaje. Claude Code entrega las instrucciones del nuevo estilo como un mensaje en la conversación, por lo que esa solicitud aún lee el prompt del sistema y la conversación anterior desde la caché.267Cuando cambia [estilos de salida](/docs/es/output-styles) durante la sesión con [`/output-style`](/docs/es/output-styles#change-your-output-style), `/config` o la configuración `outputStyle`, Claude usa el nuevo estilo a partir de su próximo mensaje. Claude Code entrega las instrucciones del nuevo estilo como un mensaje en la conversación, por lo que esa solicitud aún lee el prompt del sistema y la conversación anterior desde la caché.

268 268 

269Antes de v2.1.251, un cambio de estilo durante la sesión mantenía la caché pero no se aplicaba hasta que ejecutaba `/clear` o iniciaba una nueva sesión.269Antes de v2.1.251, un cambio de estilo durante la sesión mantenía la caché pero no se aplicaba hasta que ejecutaba `/clear` o iniciaba una nueva sesión.

270 270 


294 294 

295Cuando [reanuda una sesión](/docs/es/sessions#resume-a-session), Claude Code envía toda la conversación nuevamente, y la solicitud lee de la caché cualquier parte de su prefijo que no haya cambiado y que siga estando dentro de la [duración de la caché](#cache-lifetime). La tabla de capas en la parte superior de esta página indica qué cambios cada capa.295Cuando [reanuda una sesión](/docs/es/sessions#resume-a-session), Claude Code envía toda la conversación nuevamente, y la solicitud lee de la caché cualquier parte de su prefijo que no haya cambiado y que siga estando dentro de la [duración de la caché](#cache-lifetime). La tabla de capas en la parte superior de esta página indica qué cambios cada capa.

296 296 

297El mensaje del sistema cambiaría después de una [actualización de Claude Code](#upgrading-claude-code) o con un texto [`--append-system-prompt`](/docs/es/cli-reference#system-prompt-flags) diferente en la reanudación. De forma predeterminada, la conversación reanudada mantiene el mensaje del sistema con el que comenzó, por lo que su historial sigue estando detrás del mismo mensaje, y el cambio entra en vigor una vez que la conversación se compacta o en una nueva conversación. [Indicadores de mensaje del sistema en conversaciones reanudadas](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations) cubre `--system-prompt-snapshot off` y modo desnudo, donde esto no se aplica.297El mensaje del sistema cambiaría después de una [actualización de Claude Code](#upgrading-claude-code) o con un texto [`--append-system-prompt`](/docs/es/cli-reference#system-prompt-flags) diferente en la reanudación. De forma predeterminada, la conversación reanudada mantiene el mensaje del sistema con el que comenzó, por lo que su historial sigue estando detrás del mismo mensaje, y el cambio entra en vigor una vez que la conversación se compacta o en una nueva conversación. [Indicadores de mensaje del sistema en conversaciones reanudadas](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations) cubre los casos donde Claude Code reconstruye el mensaje en cada solicitud en su lugar.

298 298 

299<h2 id="cache-lifetime">299<h2 id="cache-lifetime">

300 Duración del caché300 Duración del caché

remote-control.md +19 −22

Details

46 46 

47<Tabs>47<Tabs>

48 <Tab title="Modo servidor">48 <Tab title="Modo servidor">

49 Navegue a su directorio de proyecto y ejecute:49 En su directorio de proyecto, ejecute:

50 50 

51 ```bash theme={null}51 ```bash theme={null}

52 claude remote-control52 claude remote-control

53 ```53 ```

54 54 

55 Hasta que acepte la confirmación única de Remote Control, `claude remote-control` explica qué hace y pregunta `¿Enable Remote Control? (y/n)` antes de iniciar el servidor. Responda `y` para aceptar e iniciar el servidor. Si rechaza, Claude Code sale sin iniciar el servidor y pregunta nuevamente la próxima vez que ejecute el comando.55 Hasta que acepte la confirmación única de Remote Control, `claude remote-control` explica qué hace y pregunta `Enable Remote Control? (y/n)` antes de iniciar el servidor. Responda `y` para aceptar e iniciar el servidor. Si rechaza, Claude Code sale sin iniciar el servidor y pregunta nuevamente la próxima vez que ejecute el comando.

56 56 

57 El proceso sigue ejecutándose en su terminal en modo servidor, esperando conexiones remotas. Muestra una URL de sesión que puede usar para [conectarse desde otro dispositivo](#connect-from-another-device), y puede presionar la barra espaciadora para mostrar un código QR para acceso rápido desde su teléfono. Mientras una sesión remota está activa, la terminal muestra el estado de la conexión y la actividad de las herramientas.57 El proceso sigue ejecutándose en su terminal en modo servidor, esperando conexiones remotas. Muestra una URL de sesión que puede usar para [conectarse desde otro dispositivo](#connect-from-another-device), y puede presionar la barra espaciadora para mostrar un código QR para acceso rápido desde su teléfono. Mientras una sesión remota está activa, la terminal muestra el estado de la conexión y la actividad de las herramientas.

58 58 


132 Verifique el estado de la conexión132 Verifique el estado de la conexión

133</h3>133</h3>

134 134 

135En una sesión de terminal interactiva, un indicador `/rc active` se muestra mientras la conexión está activa, y se oculta si la terminal es demasiado estrecha para ajustarlo. Con [renderizado a pantalla completa](/docs/es/fullscreen) se encuentra al final de la línea del directorio de trabajo en el encabezado de inicio, y sin él, en el pie de página debajo del cuadro de entrada.135En una sesión interactiva, mientras Remote Control está conectado, la terminal muestra un indicador `/rc active` que se vincula a la sesión en claude.ai. El indicador se oculta cuando la terminal es demasiado estrecha para ajustarlo. Para ver la URL de la sesión y un código QR para [conectarse desde otro dispositivo](#connect-from-another-device), ejecute `/remote-control` nuevamente para abrir el panel de estado. El panel también le permite desconectar Remote Control mientras su sesión local sigue ejecutándose.

136 136 

137El texto del indicador es un enlace a la sesión en claude.ai. Ejecute `/remote-control` nuevamente para abrir un panel de estado con la URL de la sesión y un código QR para [conectarse desde otro dispositivo](#connect-from-another-device). Cuando el indicador está en el pie de página, también puede abrir el panel seleccionando el indicador con la tecla de flecha hacia abajo y presionando Intro. El panel también ofrece una opción de desconexión, que desactiva Remote Control mientras su sesión local sigue ejecutándose en la terminal.137<span id="session-ended-elsewhere" />Si la conexión falla en una sesión interactiva, el indicador cambia para mostrar el fallo, y Claude Code muestra el motivo en una notificación y lo agrega a la conversación. Ejecute `/remote-control` para reconectarse, a menos que el motivo diga que la sesión cambió en otro lugar:

138 138 

139Si la conexión falla, Claude Code muestra una notificación con el motivo del fallo, agrega una línea de advertencia con el motivo a la conversación, y cambia el indicador a un estado de fallo que permanece en su lugar. Para reconectarse, ejecute `/remote-control`, a menos que el [motivo diga que la sesión fue tomada o terminada en otro lugar, o que el servidor no puede encontrarla](#session-ended-elsewhere).139* **Otra conexión tomó esta sesión**: otro dispositivo o sesión de Claude Code la tiene ahora. Ejecute `/remote-control` solo si desea recuperarla.

140 140* **Esta sesión fue terminada o archivada desde otro dispositivo o aplicación**: ejecute `/remote-control` solo si la desea de vuelta. Claude Code reabre una sesión archivada.

141<span id="session-ended-elsewhere" />Lea el motivo antes de reconectarse. Cuando la sesión fue tomada o terminada desde otro dispositivo, aplicación o sesión de Claude Code, o el servidor no puede encontrarla, el motivo dice cuál, y Claude Code omite su consejo habitual de ejecutar `/remote-control`:141* **El servidor ya no reporta esta sesión**: puede haber sido eliminada desde otro dispositivo o aplicación.

142 

143* **Otro dispositivo o sesión de Claude Code tomó la sesión**: ejecute `/remote-control` solo si desea recuperarla de ese dispositivo.

144* **Terminó o archivó la sesión desde otro dispositivo o aplicación**: ejecute `/remote-control` solo si la desea de vuelta; Claude Code reabre una sesión archivada.

145* **El servidor no puede encontrar la sesión**: puede haber sido eliminada desde otro dispositivo o aplicación.

146 142 

147<h3 id="session-url-reminders">143<h3 id="session-url-reminders">

148 Recordatorios de URL de sesión144 Recordatorios de URL de sesión


178 174 

179Cuando renombra una sesión desde claude.ai o la aplicación Claude, Claude Code también actualiza el título local que se muestra en `claude --resume`. Claude Code aplica el mismo cambio de nombre al nombre de sesión que se muestra en la barra de solicitud, y en la lista `claude agents` cuando la sesión [se ejecuta en segundo plano](/docs/es/agent-view). Antes de v2.1.221, renombrar desde la lista de sesiones en claude.ai o en la aplicación Claude actualizaba solo el título, y la CLI mantenía su nombre de sesión anterior; `/rename`, que se ejecuta en la CLI misma, establece el nombre en cualquier versión.175Cuando renombra una sesión desde claude.ai o la aplicación Claude, Claude Code también actualiza el título local que se muestra en `claude --resume`. Claude Code aplica el mismo cambio de nombre al nombre de sesión que se muestra en la barra de solicitud, y en la lista `claude agents` cuando la sesión [se ejecuta en segundo plano](/docs/es/agent-view). Antes de v2.1.221, renombrar desde la lista de sesiones en claude.ai o en la aplicación Claude actualizaba solo el título, y la CLI mantenía su nombre de sesión anterior; `/rename`, que se ejecuta en la CLI misma, establece el nombre en cualquier versión.

180 176 

181Si aún no tiene la aplicación Claude, use el comando `/mobile` dentro de Claude Code para mostrar un código QR de descarga para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).177Si aún no tiene la aplicación Claude, ejecute `/mobile` dentro de Claude Code para mostrar un código QR para [claude.ai/mobile](https://claude.ai/mobile), que abre la tienda de aplicaciones correcta para su teléfono.

182 178 

183<h3 id="what-connected-devices-see">179<h3 id="what-connected-devices-see">

184 Lo que ven los dispositivos conectados180 Lo que ven los dispositivos conectados


188 184 

189* **Compactación y `/clear`**: mientras Claude Code [compacta la conversación](/docs/es/context-window#what-survives-compaction), los dispositivos conectados muestran el progreso y luego dónde se compactó la conversación. Cuando ejecuta `/clear`, la conversación se reinicia en los dispositivos conectados también.185* **Compactación y `/clear`**: mientras Claude Code [compacta la conversación](/docs/es/context-window#what-survives-compaction), los dispositivos conectados muestran el progreso y luego dónde se compactó la conversación. Cuando ejecuta `/clear`, la conversación se reinicia en los dispositivos conectados también.

190* **Cambiar conversaciones con `/resume`**: el dispositivo conectado no recibe el título o historial anterior de la conversación a la que se cambió, pero los nuevos mensajes en ambas direcciones van hacia y desde cualquier conversación que esté abierta en su terminal. Para trabajar en la conversación original desde el dispositivo nuevamente, ejecute `/resume` en su terminal y vuelva a cambiar a ella.186* **Cambiar conversaciones con `/resume`**: el dispositivo conectado no recibe el título o historial anterior de la conversación a la que se cambió, pero los nuevos mensajes en ambas direcciones van hacia y desde cualquier conversación que esté abierta en su terminal. Para trabajar en la conversación original desde el dispositivo nuevamente, ejecute `/resume` en su terminal y vuelva a cambiar a ella.

191* **Extraer una sesión con `/teleport`**: cuando extrae una [sesión de Claude Code en la web](/docs/es/claude-code-on-the-web#from-web-to-terminal) en su terminal con `/teleport`, el dispositivo conectado no recibe el historial anterior de la conversación extraída. Los nuevos mensajes en ambas direcciones van hacia y desde la conversación extraída, que ahora es la que está abierta en su terminal.187* **Extraer una sesión con `/teleport`**: cuando extrae una [sesión de Claude Code en la web](/docs/es/claude-code-on-the-web#from-cloud-to-terminal) en su terminal con `/teleport`, el dispositivo conectado no recibe el historial anterior de la conversación extraída. Los nuevos mensajes en ambas direcciones van hacia y desde la conversación extraída, que ahora es la que está abierta en su terminal.

192* **Mensajes de sus otras sesiones**: con [mensajería entre sesiones](/docs/es/cross-session-messaging), la misma conexión lleva mensajes entre sus propias sesiones en diferentes máquinas y desde sus sesiones [Claude Code en la web](/docs/es/claude-code-on-the-web), a través de servidores de Anthropic como el resto del tráfico de Remote Control. [Mensajería de sesiones en otras máquinas](/docs/es/cross-session-messaging#message-sessions-on-other-machines) cubre las reglas de entrega y [Controle los mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages) cubre los controles entrantes. Requiere Claude Code v2.1.224 o posterior.188* **Mensajes de sus otras sesiones**: con [mensajería entre sesiones](/docs/es/cross-session-messaging), la misma conexión lleva mensajes entre sus propias sesiones en diferentes máquinas y desde sus sesiones [Claude Code en la web](/docs/es/claude-code-on-the-web), a través de servidores de Anthropic como el resto del tráfico de Remote Control. [Mensajería de sesiones en otras máquinas](/docs/es/cross-session-messaging#message-sessions-on-other-machines) cubre las reglas de entrega y [Controle los mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages) cubre los controles entrantes. Requiere Claude Code v2.1.224 o posterior.

193* **Solicitudes que envía a mitad de turno**: cuando envía una solicitud desde un dispositivo conectado antes de que termine el turno actual, Claude Code la pone en cola y la mantiene en la transcripción del dispositivo después de que ese turno termina.189* **Solicitudes que envía a mitad de turno**: cuando envía una solicitud desde un dispositivo conectado antes de que termine el turno actual, Claude Code la pone en cola y la mantiene en la transcripción del dispositivo después de que ese turno termina.

194* **Diferencia de sus cambios**: cuando el directorio de la sesión está en un repositorio git, el panel de diferencia de un dispositivo conectado muestra la diferencia de sus cambios sin confirmar. El dispositivo solicita la diferencia sobre la conexión, y Claude Code la calcula en su máquina. Cuando su árbol de trabajo está limpio, Claude Code en su lugar sirve los cambios de su rama desde que divergió de la rama predeterminada. Antes de v2.1.247, Claude Code reportaba la diferencia a los dispositivos conectados solo en sesiones servidas por `claude remote-control`.190* **Diferencia de sus cambios**: cuando el directorio de la sesión está en un repositorio git, el panel de diferencia de un dispositivo conectado muestra la diferencia de sus cambios sin confirmar. El dispositivo solicita la diferencia sobre la conexión, y Claude Code la calcula en su máquina. Cuando su árbol de trabajo está limpio, Claude Code en su lugar sirve los cambios de su rama desde que divergió de la rama predeterminada. Antes de v2.1.247, Claude Code reportaba la diferencia a los dispositivos conectados solo en sesiones servidas por `claude remote-control`.


312 308 

313Para un dispositivo perdido o robado, el miembro lo elimina de esta página. Si el miembro no puede iniciar sesión, un administrador puede usar **Sign out everywhere** en la consola de administración para revocar cada sesión y dispositivo inscrito para ese miembro, después de lo cual el miembro reinscribe los dispositivos que aún posee.309Para un dispositivo perdido o robado, el miembro lo elimina de esta página. Si el miembro no puede iniciar sesión, un administrador puede usar **Sign out everywhere** en la consola de administración para revocar cada sesión y dispositivo inscrito para ese miembro, después de lo cual el miembro reinscribe los dispositivos que aún posee.

314 310 

315<h2 id="remote-control-vs-claude-code-on-the-web">311<h2 id="remote-control-vs-cloud-sessions">

316 Remote Control vs Claude Code en la web312 Remote Control vs sesiones en la nube

317</h2>313</h2>

318 314 

319Remote Control y [Claude Code en la web](/docs/es/claude-code-on-the-web) ambos usan la interfaz claude.ai/code. La diferencia clave es dónde se ejecuta la sesión: Remote Control se ejecuta en su máquina, por lo que sus servidores MCP locales, herramientas y configuración del proyecto permanecen disponibles. Claude Code en la web se ejecuta en la nube.315Remote Control y [sesiones en la nube](/docs/es/claude-code-on-the-web) ambos usan la interfaz claude.ai/code. La diferencia clave es dónde se ejecuta la sesión: Remote Control se ejecuta en su máquina, por lo que sus servidores MCP locales, herramientas y configuración del proyecto permanecen disponibles. Una sesión en la nube se ejecuta en infraestructura en la nube, administrada por Anthropic de forma predeterminada.

320 316 

321Use Remote Control cuando esté en medio del trabajo local y desee continuar desde otro dispositivo. Use Claude Code en la web cuando desee iniciar una tarea sin ninguna configuración local, trabajar en un repositorio que no tiene clonado, o ejecutar varias tareas en paralelo.317Use Remote Control cuando esté en medio del trabajo local y desee continuar desde otro dispositivo. Use una sesión en la nube cuando desee iniciar una tarea sin ninguna configuración local, trabajar en un repositorio que no tiene clonado, o ejecutar varias tareas en paralelo.

322 318 

323<h2 id="mobile-push-notifications">319<h2 id="mobile-push-notifications">

324 Notificaciones push móviles320 Notificaciones push móviles


374 * Comandos de salida de texto: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` y `/reload-plugins`. `/usage-credits` imprime la URL de facturación en lugar de abrir un navegador. `/reload-plugins` funciona solo cuando la sesión se ejecuta en una terminal interactiva; una sesión sin una la rechaza.370 * Comandos de salida de texto: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` y `/reload-plugins`. `/usage-credits` imprime la URL de facturación en lugar de abrir un navegador. `/reload-plugins` funciona solo cuando la sesión se ejecuta en una terminal interactiva; una sesión sin una la rechaza.

375 * `/model`, `/effort`, `/fast`, `/color` y `/rename`: pase el valor como argumento, por ejemplo `/model sonnet` o `/effort high`. Desde móvil y web, `/model` y `/effort` toman el argumento en lugar del selector de terminal o deslizador.371 * `/model`, `/effort`, `/fast`, `/color` y `/rename`: pase el valor como argumento, por ejemplo `/model sonnet` o `/effort high`. Desde móvil y web, `/model` y `/effort` toman el argumento en lugar del selector de terminal o deslizador.

376 * `/mcp`: desde la aplicación móvil, devuelve un resumen de texto del estado del servidor en lugar de abrir el selector. En la web, `/mcp` por sí solo abre un directorio de [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) en lugar de devolver el resumen. Los [subcomandos](/docs/es/commands#all-commands) `reconnect`, `enable` y `disable` funcionan desde ambos. A diferencia de la CLI local, `/mcp reconnect` sin nombre de servidor reconecta cada servidor que ha fallado o necesita autenticación.372 * `/mcp`: desde la aplicación móvil, devuelve un resumen de texto del estado del servidor en lugar de abrir el selector. En la web, `/mcp` por sí solo abre un directorio de [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) en lugar de devolver el resumen. Los [subcomandos](/docs/es/commands#all-commands) `reconnect`, `enable` y `disable` funcionan desde ambos. A diferencia de la CLI local, `/mcp reconnect` sin nombre de servidor reconecta cada servidor que ha fallado o necesita autenticación.

377 * `/config`, a partir de v2.1.181: desde la aplicación móvil, pase `key=value` para establecer una configuración, o ejecútelo sin argumentos para listar las claves que puede establecer. En la web, `/config` abre la sección Claude Code de su configuración en su lugar, e ignora el texto después del comando.373 * `/config`: desde la aplicación móvil, pase `key=value` para establecer una configuración, o ejecútelo sin argumentos para listar las claves que puede establecer. En la web, `/config` abre la sección Claude Code de su configuración en su lugar, e ignora el texto después del comando.

378 * En Team y Enterprise, `/usage-credits` desde móvil o web no envía una [solicitud de créditos de uso a su administrador](/docs/es/costs#add-usage-credits-to-your-subscription). El envío requiere una confirmación que aparece solo en la CLI interactiva, por lo que el comando le indica que lo ejecute allí en su lugar. Antes de v2.1.211, el formulario de texto enviaba la solicitud sin confirmación.374 * En Team y Enterprise, `/usage-credits` desde móvil o web no envía una [solicitud de créditos de uso a su administrador](/docs/es/costs#add-usage-credits-to-your-subscription). El envío requiere una confirmación que aparece solo en la CLI interactiva, por lo que el comando le indica que lo ejecute allí en su lugar. Antes de v2.1.211, el formulario de texto enviaba la solicitud sin confirmación.

379 * `/autocompact`, a partir de v2.1.221: pase el tamaño de la ventana como argumento, por ejemplo `/autocompact 500k`. Sin argumento, imprime el tamaño de ventana actual como texto en lugar de abrir el diálogo que muestra el comando en una sesión de terminal.375 * `/autocompact`, a partir de v2.1.221: pase el tamaño de la ventana como argumento, por ejemplo `/autocompact 500k`. Sin argumento, imprime el tamaño de ventana actual como texto en lugar de abrir el diálogo que muestra el comando en una sesión de terminal.

380 * `/advisor`, a partir de v2.1.260: pase el modelo como argumento, por ejemplo `/advisor opus`, o pase `off` para desactivar el asesor. Ambas formas se aplican solo a la sesión actual y dejan su valor predeterminado guardado sin cambios. Sin argumento, imprime el asesor actual como texto en lugar de abrir el selector.376 * `/advisor`, a partir de v2.1.260: pase el modelo como argumento, por ejemplo `/advisor opus`, o pase `off` para desactivar el asesor. Ambas formas se aplican solo a la sesión actual y dejan su valor predeterminado guardado sin cambios. Sin argumento, imprime el asesor actual como texto en lugar de abrir el selector.

377 * `/output-style`, a partir de v2.1.269: pase el nombre del estilo como argumento, por ejemplo `/output-style concise`, o ejecútelo sin argumento para listar los estilos. Desde móvil y web, puede listar y seleccionar solo [estilos integrados](/docs/es/output-styles#built-in-output-styles). Para usar un [estilo personalizado](/docs/es/output-styles#create-a-custom-output-style), selecciónelo en la sesión misma.

381 378 

382<h2 id="troubleshooting">379<h2 id="troubleshooting">

383 Solución de problemas380 Solución de problemas


389 386 

390No está autenticado con una cuenta de claude.ai, o bien otra credencial está tomando precedencia sobre su inicio de sesión. El mensaje toma una de estas formas:387No está autenticado con una cuenta de claude.ai, o bien otra credencial está tomando precedencia sobre su inicio de sesión. El mensaje toma una de estas formas:

391 388 

392* Sin sesión iniciada, desde `/remote-control` o `--remote-control`: `Remote Control requires a claude.ai subscription.`389* Sin sesión iniciada, desde `/remote-control` o `--remote-control`: `Remote Control requires a claude.ai subscription.` o `/remote-control requires a claude.ai subscription.`

393* Sin sesión iniciada, desde `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`390* Sin sesión iniciada, desde `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`

394* Con sesión iniciada, pero se está usando una clave API o token: `Remote Control requires claude.ai subscription auth.` seguido de la credencial en uso, como `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Una configuración `apiKeyHelper` y `ANTHROPIC_AUTH_TOKEN` se nombran de la misma manera.391* Con sesión iniciada, pero se está usando una clave API o token: `Remote Control requires claude.ai subscription auth.` seguido de la credencial en uso, como `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Una configuración `apiKeyHelper` y `ANTHROPIC_AUTH_TOKEN` se nombran de la misma manera.

395 392 


423 "Couldn't verify Remote Control eligibility"420 "Couldn't verify Remote Control eligibility"

424</h3>421</h3>

425 422 

426Claude Code no pudo alcanzar el servicio de banderas de características para verificar si Remote Control está habilitado para su cuenta, típicamente porque está sin conexión o un proxy está bloqueando la solicitud. Reintente una vez que tenga acceso a la red, o ejecute `claude doctor` para obtener detalles. El mensaje relacionado "Couldn't verify your organization's Remote Control policy" tiene la misma causa y la misma solución. Ambos mensajes se agregaron en v2.1.178.423Claude Code no pudo alcanzar el servicio de banderas de características para verificar si Remote Control está habilitado para su cuenta, típicamente porque está sin conexión o un proxy está bloqueando la solicitud. Reintente una vez que tenga acceso a la red, o ejecute `claude doctor` para obtener detalles. El mensaje relacionado "Couldn't verify your organization's Remote Control policy" significa que Claude Code no pudo leer esa política, y tiene la misma solución. Ambos mensajes se agregaron en v2.1.178.

427 424 

428<h3 id="remote-control-requires-feature-flag-evaluation">425<h3 id="remote-control-requires-feature-flag-evaluation">

429 "Remote Control requires feature-flag evaluation"426 "Remote Control requires feature-flag evaluation"


536</h2>533</h2>

537 534 

538* [Claude Code en la web](/docs/es/claude-code-on-the-web): ejecute sesiones en la nube en lugar de en su máquina, configuradas a través de [entornos en la nube](/docs/es/cloud-environments)535* [Claude Code en la web](/docs/es/claude-code-on-the-web): ejecute sesiones en la nube en lugar de en su máquina, configuradas a través de [entornos en la nube](/docs/es/cloud-environments)

539* [Mensajería entre sesiones](/docs/es/cross-session-messaging): permita que Claude envíe mensajes a sus sesiones en otras máquinas o en [Claude Code en la web](/docs/es/claude-code-on-the-web)536* [Mensajería entre sesiones](/docs/es/cross-session-messaging): permita que Claude envíe mensajes a sus sesiones en otras máquinas o en [sesiones en la nube](/docs/es/claude-code-on-the-web)

540* [Channels](/docs/es/channels): reenvíe Telegram, Discord o iMessage a una sesión para que Claude reaccione a los mensajes mientras está fuera537* [Channels](/docs/es/channels): reenvíe Telegram, Discord o iMessage a una sesión para que Claude reaccione a los mensajes mientras está fuera

541* [Dispatch](/docs/es/desktop#sessions-from-dispatch): envíe un mensaje de una tarea desde su teléfono y puede generar una sesión de Desktop para manejarla538* [Dispatch](/docs/es/desktop#sessions-from-dispatch): envíe un mensaje de una tarea desde su teléfono y puede generar una sesión de Desktop para manejarla

542* [Autenticación](/docs/es/authentication): configure `/login` y administre credenciales para claude.ai539* [Autenticación](/docs/es/authentication): configure `/login` y administre credenciales para claude.ai

543* [Referencia de CLI](/docs/es/cli-reference): lista completa de banderas y comandos incluyendo `claude remote-control`540* [Referencia de CLI](/docs/es/cli-reference): lista completa de banderas y comandos incluyendo `claude remote-control`

544* [Seguridad](/docs/es/security): cómo las sesiones de Remote Control se ajustan al modelo de seguridad de Claude Code541* [Seguridad](/docs/es/security): cómo las sesiones de Remote Control se ajustan al modelo de seguridad de Claude Code

545* [Uso de datos](/docs/es/data-usage): qué datos fluyen a través de la API de Anthropic durante sesiones locales y remotas542* [Uso de datos](/docs/es/data-usage): qué datos fluyen a través de la API de Anthropic durante sesiones locales, Remote Control y en la nube

routines.md +14 −16

Details

174 174 

175<Steps>175<Steps>

176 <Step title="Abrir la rutina para editar">176 <Step title="Abrir la rutina para editar">

177 Vaya a [claude.ai/code/routines](https://claude.ai/code/routines), haga clic en la rutina que desea activar a través de API, luego haga clic en el icono de lápiz para abrir **Edit routine**.177 Vaya a [claude.ai/code/routines](https://claude.ai/code/routines), haga clic en la rutina que desea activar a través de API, luego abra el menú junto al nombre de la rutina y seleccione **Edit**.

178 </Step>178 </Step>

179 179 

180 <Step title="Agregar un disparador de API">180 <Step title="Agregar un disparador de API">


254 254 

255<Steps>255<Steps>

256 <Step title="Abrir la rutina para editar">256 <Step title="Abrir la rutina para editar">

257 Vaya a [claude.ai/code/routines](https://claude.ai/code/routines), haga clic en la rutina, luego haga clic en el icono de lápiz para abrir **Edit routine**.257 Vaya a [claude.ai/code/routines](https://claude.ai/code/routines), haga clic en la rutina, luego abra el menú junto al nombre de la rutina y seleccione **Edit**.

258 </Step>258 </Step>

259 259 

260 <Step title="Agregar un disparador de evento de GitHub">260 <Step title="Agregar un disparador de evento de GitHub">


331Desde la página de detalles de la rutina puede:331Desde la página de detalles de la rutina puede:

332 332 

333* Haga clic en **Run now** para iniciar una ejecución inmediatamente sin esperar la próxima hora programada. Opcionalmente puede proporcionar texto específico de la ejecución, que llega a la rutina de la misma manera que el campo `text` del disparador de API.333* Haga clic en **Run now** para iniciar una ejecución inmediatamente sin esperar la próxima hora programada. Opcionalmente puede proporcionar texto específico de la ejecución, que llega a la rutina de la misma manera que el campo `text` del disparador de API.

334* Use el botón de alternancia en la sección **Repeats** para pausar o reanudar el horario. Las rutinas pausadas mantienen su configuración pero no se ejecutan hasta que las vuelva a habilitar.334* Use el botón de alternancia en la parte superior de la página para pausar o reanudar el horario. Las rutinas pausadas mantienen su configuración pero no se ejecutan hasta que las vuelva a habilitar.

335* Haga clic en el icono de lápiz para abrir **Edit routine** y cambiar el nombre, prompt, repositorios, entorno, conectores o cualquiera de los disparadores de la rutina. La sección **Select a trigger** es donde agrega o elimina horarios, tokens de API y disparadores de eventos de GitHub.335* Abra el menú junto al nombre de la rutina y seleccione **Edit** para cambiar el nombre, prompt, repositorios, entorno, conectores o cualquiera de los disparadores de la rutina. La sección **Select a trigger** es donde agrega o elimina horarios, tokens de API y disparadores de eventos de GitHub.

336* Haga clic en el icono de eliminar para eliminar la rutina. Las sesiones anteriores creadas por la rutina permanecen en su lista de sesiones.336* Abra el mismo menú y seleccione **Delete** para eliminar la rutina.

337 337 

338<h3 id="manage-routines-from-the-cli">338<h3 id="manage-routines-from-the-cli">

339 Administrar rutinas desde la CLI339 Administrar rutinas desde la CLI


363 363 

364Las rutinas pueden usar sus conectores MCP conectados para leer y escribir en servicios externos durante cada ejecución. Por ejemplo, una rutina que clasifica solicitudes de soporte podría leer de un canal de Slack y crear problemas en Linear.364Las rutinas pueden usar sus conectores MCP conectados para leer y escribir en servicios externos durante cada ejecución. Por ejemplo, una rutina que clasifica solicitudes de soporte podría leer de un canal de Slack y crear problemas en Linear.

365 365 

366Los conectores son las [integraciones de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) en su cuenta. Los servidores MCP que agregó localmente en la CLI con `claude mcp add` se almacenan en su máquina en lugar de su cuenta de claude.ai, por lo que no aparecen en la lista de conectores. Para usar uno de esos servidores en una rutina, agréguelo como conector en [claude.ai/customize/connectors](https://claude.ai/customize/connectors), o declárelo en un [`.mcp.json`](/docs/es/mcp#project-scope) confirmado para que sea parte del repositorio clonado.366Los conectores son las [integraciones de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) en su cuenta. Los servidores MCP que agregó localmente en la CLI con `claude mcp add` se almacenan en su máquina en lugar de su cuenta de claude.ai, por lo que no aparecen en la lista de conectores. Para usar uno de esos servidores en una rutina, agréguelo como conector en [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Para una rutina con un repositorio, puede declararlo en un [`.mcp.json`](/docs/es/mcp#project-scope) confirmado para que sea parte del repositorio clonado.

367 367 

368Cuando crea una rutina, todos sus conectores actualmente conectados se incluyen de forma predeterminada. Elimine cualquiera que no sea necesario para limitar a qué herramientas tiene acceso Claude durante la ejecución. También puede agregar conectores directamente desde el formulario de rutina.368Cuando crea una rutina, todos sus conectores actualmente conectados se incluyen de forma predeterminada. Elimine cualquiera que no sea necesario para limitar a qué herramientas tiene acceso Claude durante la ejecución. También puede agregar conectores directamente desde el formulario de rutina.

369 369 


381 381 

382<Steps>382<Steps>

383 <Step title="Abra la rutina para editar">383 <Step title="Abra la rutina para editar">

384 En la página de detalles de la rutina, haga clic en el icono de lápiz para abrir **Edit routine**.384 En la página de detalles de la rutina, abra el menú junto al nombre de la rutina y seleccione **Edit**.

385 </Step>385 </Step>

386 386 

387 <Step title="Abra el selector de entorno">387 <Step title="Abra el selector de entorno">


421 `/schedule` devuelve "Unknown command"421 `/schedule` devuelve "Unknown command"

422</h3>422</h3>

423 423 

424La CLI oculta `/schedule` cuando uno de sus requisitos no se cumple: el menú de comandos muestra `No commands match "/schedule"` mientras escribe, y enviarlo devuelve `Unknown command: /schedule` en todos los casos siguientes excepto una clave de API de Console o un perfil de Anthropic con obtención de indicadores de características habilitada. La causa suele ser una de las siguientes:424La CLI oculta `/schedule` cuando uno de sus requisitos no se cumple: el menú de comandos muestra `No commands match "/schedule"` mientras escribe. Enviarlo devuelve `Unknown command: /schedule`, excepto en los casos siguientes que indican una respuesta diferente.

425 425 

426* Está autenticado con una clave de API de Console, un [perfil de Anthropic o credencial de federación](/docs/es/authentication#anthropic-profiles-and-federation-credentials), o un proveedor de nube como Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. `/schedule` requiere un inicio de sesión de suscripción de claude.ai. Con una clave de API de Console o un perfil, enviar `/schedule` muestra en su lugar `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. Con un inicio de sesión de proveedor de nube, aún ve `Unknown command: /schedule`. Si `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN` está configurado en su shell, o `apiKeyHelper` está configurado en `settings.json`, elimínelo primero, ya que estos tienen prioridad sobre un inicio de sesión de claude.ai. Un perfil o credencial de federación también tiene prioridad, así que desactívelo también426La causa suele ser una de las siguientes:

427 

428* Está autenticado con una clave de API de Console, un [perfil de Anthropic o credencial de federación](/docs/es/authentication#anthropic-profiles-and-federation-credentials), o un proveedor de nube como Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. `/schedule` requiere un inicio de sesión de suscripción de claude.ai. Con una clave de API de Console o un perfil, y con la obtención de indicadores de características habilitada, enviar `/schedule` muestra en su lugar `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. Con un inicio de sesión de proveedor de nube, aún ve `Unknown command: /schedule`. Si `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN` está configurado en su shell, o `apiKeyHelper` está configurado en `settings.json`, elimínelo primero, ya que estos tienen prioridad sobre un inicio de sesión de claude.ai. Un perfil o credencial de federación también tiene prioridad, así que desactívelo también

429* Está completamente desconectado, sin clave de API ni otra credencial. Con la obtención de indicadores de características habilitada, enviar `/schedule` muestra `/schedule requires a claude.ai subscription. Run /login to sign in with your claude.ai account.` Antes de v2.1.268, una sesión desconectada mostraba el mismo mensaje de Claude for Enterprise que una clave de API de Console

427* Se encuentra dentro de una sesión de Claude Code en la web. Administre rutinas desde la [interfaz web](https://claude.ai/code/routines) en su lugar430* Se encuentra dentro de una sesión de Claude Code en la web. Administre rutinas desde la [interfaz web](https://claude.ai/code/routines) en su lugar

428* La política de su organización desactiva [Claude Code en la web](/docs/es/claude-code-on-the-web), en la que se ejecutan las rutinas431* La política de su organización desactiva [Claude Code en la web](/docs/es/claude-code-on-the-web), en la que se ejecutan las rutinas. En este caso, enviar `/schedule` responde [`Cloud sessions are disabled by your organization's policy`](/docs/es/errors#cloud-sessions-are-disabled-by-your-organizations-policy) en su lugar. Antes de v2.1.268, devolvía `Unknown command: /schedule`

429* Un propietario [desactivó las rutinas](#routines-are-disabled-by-your-organizations-policy) para su organización de Team o Enterprise. Antes de v2.1.227, el comando aún aparecía en este caso, y claude.ai rechazaba la rutina cuando Claude intentaba crearla o ejecutarla432* Un propietario [desactivó las rutinas](#routines-are-disabled-by-your-organizations-policy) para su organización de Team o Enterprise. Antes de v2.1.227, el comando aún aparecía en este caso, y claude.ai rechazaba la rutina cuando Claude intentaba crearla o ejecutarla

430 433 

431A menos que la política de su organización desactive las rutinas o Claude Code en la web, puede crear y administrar rutinas en [claude.ai/code/routines](https://claude.ai/code/routines) independientemente de cómo esté configurada la CLI.434A menos que la política de su organización desactive las rutinas o Claude Code en la web, puede crear y administrar rutinas en [claude.ai/code/routines](https://claude.ai/code/routines) independientemente de cómo esté configurada la CLI.

432 435 

433<h3 id="/schedule-asks-you-to-authenticate">

434 `/schedule` le pide que se autentique

435</h3>

436 

437Si `/schedule` se ejecuta pero Claude responde que primero debe autenticarse con una cuenta de claude.ai, la CLI no tiene ningún inicio de sesión de claude.ai almacenado. Las cuentas de API no son compatibles con rutinas. Ejecute `/login`, inicie sesión con su cuenta de claude.ai y luego ejecute `/schedule` nuevamente.

438 

439<h3 id="routines-are-disabled-by-your-organizations-policy">436<h3 id="routines-are-disabled-by-your-organizations-policy">

440 "Routines are disabled by your organization's policy"437 "Routines are disabled by your organization's policy"

441</h3>438</h3>


449* [`/loop` e programación en sesión](/docs/es/scheduled-tasks): programe tareas locales dentro de una sesión de CLI abierta446* [`/loop` e programación en sesión](/docs/es/scheduled-tasks): programe tareas locales dentro de una sesión de CLI abierta

450* [Tareas programadas de escritorio](/docs/es/desktop-scheduled-tasks): tareas programadas locales que se ejecutan en su máquina con acceso a archivos locales447* [Tareas programadas de escritorio](/docs/es/desktop-scheduled-tasks): tareas programadas locales que se ejecutan en su máquina con acceso a archivos locales

451* [Entornos en la nube](/docs/es/cloud-environments): configure el acceso a la red, las variables de entorno y los scripts de configuración para sesiones en la nube448* [Entornos en la nube](/docs/es/cloud-environments): configure el acceso a la red, las variables de entorno y los scripts de configuración para sesiones en la nube

449* [Proyectos](/docs/es/claude-projects): trabajo en curso que Claude coordina en sesiones en la nube paralelas; las rutinas creadas a partir de un proyecto aparecen en su pestaña **Routines**

452* [Conectores MCP](/docs/es/mcp): conecte servicios externos como Slack, Linear y Google Drive450* [Conectores MCP](/docs/es/mcp): conecte servicios externos como Slack, Linear y Google Drive

453* [GitHub Actions](/docs/es/github-actions): ejecute Claude en su canalización de CI en eventos del repositorio451* [GitHub Actions](/docs/es/github-actions): ejecute Claude en su canalización de CI en eventos del repositorio

Details

21Los dos primeros enfoques en la tabla siguiente se ejecutan en el sistema operativo host sin contenedores. El resto coloca Claude Code dentro de un contenedor o máquina virtual.21Los dos primeros enfoques en la tabla siguiente se ejecutan en el sistema operativo host sin contenedores. El resto coloca Claude Code dentro de un contenedor o máquina virtual.

22 22 

23| Enfoque | Qué se aísla | Requiere Docker | Esfuerzo de configuración |23| Enfoque | Qué se aísla | Requiere Docker | Esfuerzo de configuración |

24| :------------------------------------------------- | :-------------------------------------------------------------------------------------------- | :-------------- | :-------------------------------------------------------------------------------------- |24| :------------------------------------------------- | :-------------------------------------------------------------------------------------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------ |

25| [Herramienta Bash sandboxed](#sandboxed-bash-tool) | Comandos Bash y sus procesos secundarios | No | Mínimo en macOS; bajo en Linux y WSL2 |25| [Herramienta Bash sandboxed](#sandboxed-bash-tool) | Comandos Bash, PowerShell y Monitor y sus procesos secundarios | No | Mínimo en macOS; bajo en Linux y WSL2 |

26| [Sandbox runtime](#sandbox-runtime) | Todo el proceso de Claude Code, incluidas las herramientas de archivo, servidores MCP y hooks | No | Bajo |26| [Sandbox runtime](#sandbox-runtime) | Todo el proceso de Claude Code, incluidas las herramientas de archivo, servidores MCP y hooks | No | Bajo |

27| [Dev container](#dev-containers) | Entorno de desarrollo completo | Sí | Medio |27| [Dev container](#dev-containers) | Entorno de desarrollo completo | Sí | Medio |

28| [Contenedor personalizado](#custom-container) | Entorno de desarrollo completo | Sí | Medio a alto |28| [Contenedor personalizado](#custom-container) | Entorno de desarrollo completo | Sí | Medio a alto |

29| [Máquina virtual](#virtual-machine) | Sistema operativo completo | No | Alto |29| [Máquina virtual](#virtual-machine) | Sistema operativo completo | No | Alto |

30| [Claude Code en la web](#claude-code-on-the-web) | Sistema operativo completo, alojado por Anthropic | No | Ninguno; requiere una suscripción a Claude y GitHub cuando inicia desde la interfaz web |30| [Cloud sessions](#cloud-sessions) | Sistema operativo completo, alojado por Anthropic | No | Ninguno; requiere una suscripción a Claude y una cuenta de GitHub conectada a menos que inicie con `claude --cloud` |

31 31 

32La [herramienta Bash sandboxed](/docs/es/sandboxing) está integrada en Claude Code y restringe los comandos Bash. Las herramientas de archivo integradas, los servidores MCP y los hooks aún se ejecutan directamente en su host. Todos los demás enfoques en la tabla colocan todo el proceso de Claude Code dentro del límite de aislamiento, por lo que las herramientas de archivo, los servidores MCP y los hooks también se restringen.32La [herramienta Bash sandboxed](/docs/es/sandboxing) está integrada en Claude Code y restringe los comandos Bash. Las herramientas de archivo integradas, los servidores MCP y los hooks aún se ejecutan directamente en su host. Todos los demás enfoques en la tabla colocan todo el proceso de Claude Code dentro del límite de aislamiento, por lo que las herramientas de archivo, los servidores MCP y los hooks también se restringen.

33 33 


44Haga coincidir su objetivo con una fila a continuación, luego lea la sección de detalle que sigue.44Haga coincidir su objetivo con una fila a continuación, luego lea la sección de detalle que sigue.

45 45 

46| Usted quiere | Comience con |46| Usted quiere | Comience con |

47| :------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |47| :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| Reducir solicitudes de permiso durante el trabajo diario en su propia máquina | La [herramienta Bash aislada](/docs/es/sandboxing), configurada con `/sandbox` |48| Reducir solicitudes de permiso durante el trabajo diario en su propia máquina | La [herramienta Bash aislada](/docs/es/sandboxing), configurada con `/sandbox` |

49| Permitir que Claude trabaje sin supervisión con `--dangerously-skip-permissions` o modo automático | El [contenedor de desarrollo](/docs/es/devcontainer) preconfigurado, cualquier contenedor o máquina virtual, o el [tiempo de ejecución sandbox](#sandbox-runtime) |49| Permitir que Claude trabaje sin supervisión con `--dangerously-skip-permissions` o modo automático | El [contenedor de desarrollo](/docs/es/devcontainer) preconfigurado, cualquier contenedor o máquina virtual, o el [tiempo de ejecución sandbox](#sandbox-runtime) |

50| Aislar servidores MCP y hooks así como Bash, sin Docker | El tiempo de ejecución sandbox |50| Aislar servidores MCP y hooks así como Bash, sin Docker | El tiempo de ejecución sandbox |

51| Trabajar en un repositorio no confiable | Una máquina virtual dedicada, o [Claude Code en la web](/docs/es/claude-code-on-the-web) si tiene una suscripción a Claude; GitHub solo es necesario cuando inicia desde la interfaz web |51| Trabajar en un repositorio no confiable | Una máquina virtual dedicada, o una [sesión en la nube](/docs/es/claude-code-on-the-web) si tiene una suscripción a Claude; GitHub no es necesario cuando inicia con `claude --cloud` |

52| Estandarizar un entorno aislado en un equipo | El [contenedor de desarrollo](/docs/es/devcontainer) preconfigurado, copiado en su repositorio |52| Estandarizar un entorno aislado en un equipo | El [contenedor de desarrollo](/docs/es/devcontainer) preconfigurado, copiado en su repositorio |

53| Usar Claude Code desde un dispositivo sin configuración local | [Claude Code en la web](/docs/es/claude-code-on-the-web), que requiere una suscripción a Claude y una cuenta de GitHub conectada |53| Usar Claude Code desde un dispositivo sin configuración local | Una [sesión en la nube](/docs/es/claude-code-on-the-web), que requiere una suscripción a Claude y una cuenta de GitHub conectada |

54| Requerir aislamiento para cada desarrollador en su organización | [Aplicar aislamiento en toda la organización](#enforce-isolation-across-an-organization) |54| Requerir aislamiento para cada desarrollador en su organización | [Aplicar aislamiento en toda la organización](#enforce-isolation-across-an-organization) |

55| Trabajar en un host Windows nativo | Un contenedor o máquina virtual, o ejecutar el sandbox Bash dentro de WSL2 |55| Trabajar en un host Windows nativo | Un contenedor o máquina virtual, o ejecutar el sandbox Bash dentro de WSL2 |

56 56 


66 66 

67El [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) reemplaza la solicitud con un clasificador que revisa acciones. El clasificador es un control por acción, no un límite de aislamiento, por lo que un límite de aislamiento aún agrega defensa en profundidad para ejecuciones sin supervisión, y no es requerido como lo es para `--dangerously-skip-permissions`.67El [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) reemplaza la solicitud con un clasificador que revisa acciones. El clasificador es un control por acción, no un límite de aislamiento, por lo que un límite de aislamiento aún agrega defensa en profundidad para ejecuciones sin supervisión, y no es requerido como lo es para `--dangerously-skip-permissions`.

68 68 

69La [herramienta Bash aislada](#sandboxed-bash-tool) por sí sola restringe solo Bash, por lo que no es suficiente para ejecuciones completamente sin supervisión en ninguno de los modos. Puede superponer enfoques: ejecutar la herramienta Bash aislada dentro de un contenedor o máquina virtual le da restricciones de comando a nivel de SO además del límite del entorno externo. Para cómo el sandbox Bash en sí interactúa con reglas de permiso y modos de permiso, consulte [Cómo el sandboxing se relaciona con permisos y modos de permiso](/docs/es/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes).69La [herramienta Bash aislada](#sandboxed-bash-tool) por sí sola restringe solo comandos shell, por lo que no es suficiente para ejecuciones completamente sin supervisión en ninguno de los modos. Puede superponer enfoques: ejecutar la herramienta Bash aislada dentro de un contenedor o máquina virtual le da restricciones de comando a nivel de SO además del límite del entorno externo. Para cómo el sandbox Bash en sí interactúa con reglas de permiso y modos de permiso, consulte [Cómo el sandboxing se relaciona con permisos y modos de permiso](/docs/es/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes).

70 70 

71<h2 id="sandboxed-bash-tool">71<h2 id="sandboxed-bash-tool">

72 Herramienta Bash aislada72 Herramienta Bash aislada


76 Esta opción no admite Windows nativo. En hosts Windows, use WSL2 o uno de los enfoques de contenedor o máquina virtual a continuación.76 Esta opción no admite Windows nativo. En hosts Windows, use WSL2 o uno de los enfoques de contenedor o máquina virtual a continuación.

77</Note>77</Note>

78 78 

79La herramienta Bash aislada está integrada en Claude Code. Utiliza primitivas del sistema operativo para restringir el acceso al sistema de archivos y la red de cada comando Bash que ejecuta Claude.79La herramienta Bash aislada está integrada en Claude Code. Utiliza primitivas del sistema operativo para restringir el acceso al sistema de archivos y la red de cada comando Bash, PowerShell o Monitor que ejecuta Claude.

80 80 

81Ejecute el comando `/sandbox` para abrir el panel de sandbox y elegir un modo. La guía [Sandboxing](/docs/es/sandboxing) cubre los modos de aprobación, el límite predeterminado y cómo ampliarlo o estrecharlo.81Ejecute el comando `/sandbox` para abrir el panel de sandbox y elegir un modo. La guía [Sandboxing](/docs/es/sandboxing) cubre los modos de aprobación, el límite predeterminado y cómo ampliarlo o estrecharlo.

82 82 


91 Tiempo de ejecución sandbox91 Tiempo de ejecución sandbox

92</h2>92</h2>

93 93 

94El paquete [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) envuelve un proceso completo en el mismo aislamiento Seatbelt o bubblewrap que usa el sandbox Bash integrado. Ejecutar Claude Code a través del tiempo de ejecución restringe cada herramienta, hook y servidor MCP en la sesión, no solo Bash. El tiempo de ejecución es una vista previa de investigación beta, y su formato de configuración puede cambiar a medida que el paquete evoluciona.94El paquete [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) envuelve un proceso completo en el mismo aislamiento Seatbelt o bubblewrap que usa el sandbox Bash integrado. Ejecutar Claude Code a través del tiempo de ejecución restringe cada herramienta, hook y servidor MCP en la sesión, no solo comandos de shell. El tiempo de ejecución es una vista previa de investigación beta, y su formato de configuración puede cambiar a medida que el paquete evoluciona.

95 95 

96Esta sección cubre qué configura usted y qué el tiempo de ejecución aplica por su cuenta. Para implementar el tiempo de ejecución en aplicaciones del Agent SDK, consulte la [guía de implementación segura](/docs/es/agent-sdk/secure-deployment#sandbox-runtime).96Esta sección cubre qué configura usted y qué el tiempo de ejecución aplica por su cuenta. Para implementar el tiempo de ejecución en aplicaciones del Agent SDK, consulte la [guía de implementación segura](/docs/es/agent-sdk/secure-deployment#sandbox-runtime).

97 97 


175 175 

176[Docker Sandboxes](https://docs.docker.com/ai/sandboxes/) proporciona una microVM con su propio daemon de Docker y sincronización de espacio de trabajo, que puede ejecutar Claude Code en cualquier host con Docker Sandboxes instalado. Es un producto gratuito e independiente de Docker que no requiere Docker Desktop.176[Docker Sandboxes](https://docs.docker.com/ai/sandboxes/) proporciona una microVM con su propio daemon de Docker y sincronización de espacio de trabajo, que puede ejecutar Claude Code en cualquier host con Docker Sandboxes instalado. Es un producto gratuito e independiente de Docker que no requiere Docker Desktop.

177 177 

178<h2 id="claude-code-on-the-web">178<h2 id="cloud-sessions">

179 Claude Code en la web179 Sesiones en la nube

180</h2>180</h2>

181 181 

182[Claude Code en la web](/docs/es/claude-code-on-the-web) ejecuta cada sesión en una máquina virtual aislada y administrada por Anthropic. Un proxy de red aplica una lista de permitidos predeterminada, y un proxy separado mantiene su token de GitHub fuera del sandbox mientras emite credenciales con alcance para acceso al repositorio dentro de él. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en la infraestructura que usted aprovisiona en su lugar, donde el aislamiento, el control de salida y las credenciales de git son responsabilidad de su implementación.182Una [sesión en la nube](/docs/es/claude-code-on-the-web) se ejecuta en una máquina virtual aislada administrada por Anthropic. Un proxy de red aplica una lista de permitidos predeterminada, y un proxy separado mantiene su token de GitHub fuera del sandbox mientras emite credenciales con alcance para acceso al repositorio dentro de él. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en la infraestructura que usted aprovisiona en su lugar, donde el aislamiento, el control de salida y las credenciales de git son responsabilidad de su implementación.

183 183 

184Utilice este enfoque cuando desee aislamiento completo de máquina virtual sin aprovisionar infraestructura usted mismo, o cuando esté delegando tareas desde un dispositivo que no tiene un entorno de desarrollo local. Requiere una suscripción a Claude. Cuando inicia una sesión desde la interfaz web, también necesita una cuenta de GitHub conectada para que el sandbox pueda clonar su repositorio. Cuando inicia desde la CLI con `--cloud`, Claude Code puede [agrupar y cargar su repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) en su lugar. Consulte [Claude Code en la web](/docs/es/claude-code-on-the-web) para disponibilidad de planes y opciones de autenticación de GitHub.184Utilice este enfoque cuando desee aislamiento completo de máquina virtual sin aprovisionar infraestructura usted mismo, o cuando esté delegando tareas desde un dispositivo que no tiene un entorno de desarrollo local. Requiere una suscripción a Claude. A menos que inicie desde la CLI, también necesita una cuenta de GitHub conectada para que el sandbox pueda clonar su repositorio. Cuando inicia desde la CLI con `--cloud`, Claude Code puede [agrupar y cargar su repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) en su lugar. Consulte [Usar Claude Code en la nube](/docs/es/claude-code-on-the-web) para disponibilidad de planes y opciones de autenticación de GitHub.

185 185 

186<h2 id="enforce-isolation-across-an-organization">186<h2 id="enforce-isolation-across-an-organization">

187 Aplicar aislamiento en toda la organización187 Aplicar aislamiento en toda la organización

sandboxing.md +27 −9

Details

6 6 

7> Aprenda cómo la herramienta Bash aislada de Claude Code proporciona aislamiento del sistema de archivos y la red para una ejecución de agentes más segura y autónoma.7> Aprenda cómo la herramienta Bash aislada de Claude Code proporciona aislamiento del sistema de archivos y la red para una ejecución de agentes más segura y autónoma.

8 8 

9El sandbox de Bash permite que Claude ejecute la mayoría de comandos de shell sin detenerse para pedir permiso. En lugar de aprobar cada comando, usted define qué archivos y dominios de red pueden tocar los comandos, y el sistema operativo aplica ese límite para cada comando Bash y sus procesos secundarios.9El sandbox de Bash permite que Claude ejecute la mayoría de comandos de shell sin detenerse para pedir permiso. En lugar de aprobar cada comando, usted define qué archivos y dominios de red pueden tocar los comandos, y el sistema operativo aplica ese límite para cada comando Bash, PowerShell o Monitor y sus procesos secundarios.

10 10 

11<Note>11<Note>

12 Para comparar otros enfoques de aislamiento como contenedores de desarrollo, contenedores personalizados y máquinas virtuales, consulte [Entornos sandbox](/docs/es/sandbox-environments). Para reducir solicitudes de permiso para herramientas distintas de Bash, consulte [modos de permiso](/docs/es/permission-modes).12 Para comparar otros enfoques de aislamiento como contenedores de desarrollo, contenedores personalizados y máquinas virtuales, consulte [Entornos sandbox](/docs/es/sandbox-environments). Para reducir solicitudes de permiso para herramientas distintas de Bash, consulte [modos de permiso](/docs/es/permission-modes).


42 </Step>42 </Step>

43 43 

44 <Step title="Ejecutar un comando Bash">44 <Step title="Ejecutar un comando Bash">

45 Pida a Claude que ejecute un comando, como una compilación o un conjunto de pruebas. De forma predeterminada, los comandos dentro del sandbox pueden escribir en el directorio de trabajo, el directorio temporal de la sesión y cualquier [directorio que haya agregado](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`. La primera vez que un comando necesita un nuevo dominio de red, Claude Code solicita aprobación, o en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) envía la solicitud al clasificador.45 Pida a Claude que ejecute un comando, como una compilación o un conjunto de pruebas. De forma predeterminada, los comandos dentro del sandbox pueden escribir en el directorio de trabajo, el directorio temporal de la sesión y cualquier [directorio que haya agregado](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`.

46 

47 La primera vez que un comando necesita un nuevo dominio de red, Claude Code solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra los hosts que un comando necesita [en el comando mismo](#per-command-allowed-domains-in-auto-mode) para que el clasificador lo revise con él.

46 48 

47 Los comandos que no pueden ejecutarse aislados vuelven al flujo de permiso regular. Claude Code titula su solicitud de permiso "Bash command (unsandboxed)" en lugar de "Bash command", para que pueda saber qué comandos se ejecutaron fuera del sandbox. Para ampliar o reducir lo que permite el sandbox, consulte [Configurar sandboxing](#configure-sandboxing).49 Los comandos que no pueden ejecutarse aislados vuelven al flujo de permiso regular. Claude Code titula su solicitud de permiso "Bash command (unsandboxed)" en lugar de "Bash command", para que pueda saber qué comandos se ejecutaron fuera del sandbox. Para ampliar o reducir lo que permite el sandbox, consulte [Configurar sandboxing](#configure-sandboxing).

48 50 


145* Una regla de solicitud `Bash` simple, o la forma equivalente `Bash(*)`, se omite para comandos que se ejecutan aislados; aún se aplica a comandos que vuelven al flujo de permiso regular. En [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), la regla no se omite: solicita comandos aislados también, incluyendo los de solo lectura. Antes de v2.1.212, la omisión se aplicaba en modo de plan también147* Una regla de solicitud `Bash` simple, o la forma equivalente `Bash(*)`, se omite para comandos que se ejecutan aislados; aún se aplica a comandos que vuelven al flujo de permiso regular. En [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), la regla no se omite: solicita comandos aislados también, incluyendo los de solo lectura. Antes de v2.1.212, la omisión se aplicaba en modo de plan también

146 148 

147<Info>149<Info>

148 El modo auto-allow funciona independientemente de su configuración de modo de permiso, con una excepción: [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Incluso si no está en modo "aceptar ediciones", los comandos Bash aislados se ejecutan automáticamente cuando auto-allow está habilitado. Esto significa que los comandos Bash que modifican archivos dentro de los límites del sandbox se ejecutan sin solicitar, incluso en modo Manual, donde las herramientas de edición de archivos solicitarían.150 El modo auto-allow funciona independientemente de su configuración de modo de permiso, excepto en [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) y, en modo automático, para un comando que lleva [dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode). Incluso si no está en modo "aceptar ediciones", los comandos Bash aislados se ejecutan automáticamente cuando auto-allow está habilitado. Esto significa que los comandos Bash que modifican archivos dentro de los límites del sandbox se ejecutan sin solicitar, incluso en modo Manual, donde las herramientas de edición de archivos solicitarían.

149 151 

150 En modo de plan, auto-allow no amplía las aprobaciones; consulte [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) para ver cómo Claude Code bloquea comandos mientras planifica. Antes de v2.1.212, auto-allow ejecutaba comandos aislados sin solicitud en modo de plan también.152 En modo de plan, auto-allow no amplía las aprobaciones; consulte [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) para ver cómo Claude Code bloquea comandos mientras planifica. Antes de v2.1.212, auto-allow ejecutaba comandos aislados sin solicitud en modo de plan también.

151</Info>153</Info>


540 542 

541* **En su directorio de trabajo y los directorios por encima de él**: los archivos de configuración `.claude`, los directorios `.claude/skills`, `.claude/agents`, `.claude/commands` y `.claude/hooks`, `.mcp.json`, y los archivos que Claude Code ejecuta por su cuenta, como `.claude/workflows` y `.claude/scheduled_tasks.json`543* **En su directorio de trabajo y los directorios por encima de él**: los archivos de configuración `.claude`, los directorios `.claude/skills`, `.claude/agents`, `.claude/commands` y `.claude/hooks`, `.mcp.json`, y los archivos que Claude Code ejecuta por su cuenta, como `.claude/workflows` y `.claude/scheduled_tasks.json`

542* **Solo en su directorio de trabajo**: archivos de inicio de shell como `.bashrc` y `.zshrc`, `.gitconfig`, los directorios `.vscode` e `.idea`, y `hooks` y `config` dentro de `.git`544* **Solo en su directorio de trabajo**: archivos de inicio de shell como `.bashrc` y `.zshrc`, `.gitconfig`, los directorios `.vscode` e `.idea`, y `hooks` y `config` dentro de `.git`

543* **Archivos que convertirían su directorio de trabajo en un repositorio git desnudo**: `HEAD`, `objects` y `refs` en el nivel superior, más `config` y `hooks` allí cuando ya existen, incluso cuando el directorio `config` pertenece a su proyecto en lugar de a git. En Linux y WSL2, el sandbox elimina un archivo `HEAD` de nivel superior o un directorio `objects` o `refs` que aparece mientras se ejecuta un comando aislado545* **Archivos que convertirían su directorio de trabajo en un repositorio git desnudo**: `HEAD`, `objects` y `refs` en el nivel superior, más `config` y `hooks` allí cuando un `HEAD` se sienta junto a ellos. Un archivo denominado `config` se deniega incluso sin `HEAD`. En Linux y WSL2, el sandbox elimina un archivo `HEAD` de nivel superior o un directorio `objects` o `refs` que aparece mientras se ejecuta un comando aislado

544* **En `~/.claude`, o el directorio al que apunta `CLAUDE_CONFIG_DIR`**: la mayoría de su contenido, más `~/.claude.json` y el almacén de credenciales `.credentials.json`546* **En `~/.claude`, o el directorio al que apunta `CLAUDE_CONFIG_DIR`**: la mayoría de su contenido, más `~/.claude.json` y el almacén de credenciales `.credentials.json`

545 547 

546Si aparece un enlace simbólico en la ruta de un archivo de configuración protegido durante la sesión, el sandbox también deniega escrituras en el archivo al que apunta, comenzando con el siguiente comando.548Si aparece un enlace simbólico en la ruta de un archivo de configuración protegido durante la sesión, el sandbox también deniega escrituras en el archivo al que apunta, comenzando con el siguiente comando.


555 557 

556El acceso a la red se controla a través de un servidor proxy que se ejecuta fuera del sandbox:558El acceso a la red se controla a través de un servidor proxy que se ejecuta fuera del sandbox:

557 559 

558* **Restricciones de dominio**: Claude Code no pre-permite dominios de forma predeterminada. La primera vez que un comando necesita un nuevo dominio, Claude Code solicita aprobación, o en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) envía la solicitud al clasificador. Si elige Sí cuando se le solicite, Claude Code permite el host para el resto de la sesión actual y no solicita nuevamente para conexiones posteriores al mismo host. Si elige "Sí, y no vuelvas a preguntar", Claude Code guarda una regla de permiso `WebFetch(domain:...)` en su [configuración local](/docs/es/permissions#permission-system), por lo que el host permanece permitido en sesiones futuras. Pre-permita dominios con [`allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains) para evitar completamente la solicitud. Claude Code también pre-permite dominios de reglas de permiso `WebFetch(domain:...)`, como se describe en [Permission rules](#permission-rules).560* **Restricciones de dominio**: Claude Code no pre-permite dominios de forma predeterminada. La primera vez que un comando necesita un nuevo dominio, Claude Code solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra los hosts que un comando necesita en el comando mismo, según [Dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode).

561* **Opciones de aprobación**: si elige Sí cuando se le solicite, Claude Code permite el host para el resto de la sesión actual y no solicita nuevamente para conexiones posteriores al mismo host. Si elige "Sí, y no vuelvas a preguntar", Claude Code guarda una regla de permiso `WebFetch(domain:...)` en su [configuración local](/docs/es/permissions#permission-system), por lo que el host permanece permitido en sesiones futuras.

562* **Dominios pre-permitidos**: pre-permita dominios con [`allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains) para evitar completamente la solicitud. Claude Code también pre-permite dominios de reglas de permiso `WebFetch(domain:...)`, como se describe en [Reglas de permisos](#permission-rules).

559* **Lista de permitidos estricta**: si establece [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) en `true` en la configuración de usuario, administrada o CLI `--settings`, Claude Code deniega a los comandos aislados el acceso a cualquier host fuera de la lista de permitidos en lugar de solicitar. La lista de permitidos es la misma contra la que el sandbox solicita de otra manera: `allowedDomains` más dominios de reglas de permiso `WebFetch(domain:...)`, o solo las entradas de configuración administrada cuando se establece `allowManagedDomainsOnly`. Claude Code aplica esto solo para comandos aislados; las herramientas en proceso como `WebFetch` aún siguen sus [reglas de permiso](#permission-rules). Establecerlo en `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no tiene efecto. Requiere Claude Code v2.1.219 o posterior.563* **Lista de permitidos estricta**: si establece [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) en `true` en la configuración de usuario, administrada o CLI `--settings`, Claude Code deniega a los comandos aislados el acceso a cualquier host fuera de la lista de permitidos en lugar de solicitar. La lista de permitidos es la misma contra la que el sandbox solicita de otra manera: `allowedDomains` más dominios de reglas de permiso `WebFetch(domain:...)`, o solo las entradas de configuración administrada cuando se establece `allowManagedDomainsOnly`. Claude Code aplica esto solo para comandos aislados; las herramientas en proceso como `WebFetch` aún siguen sus [reglas de permiso](#permission-rules). Establecerlo en `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no tiene efecto. Requiere Claude Code v2.1.219 o posterior.

560* **Bloqueo administrado**: si [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) se establece en la configuración administrada, los dominios no permitidos se bloquean automáticamente en lugar de solicitar, y solo se honran `allowedDomains` y reglas de permiso `WebFetch(domain:...)` de la configuración administrada.564* **Bloqueo administrado**: si [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) se establece en la configuración administrada, los dominios no permitidos se bloquean automáticamente en lugar de solicitar, y solo se honran `allowedDomains` y reglas de permiso `WebFetch(domain:...)` de la configuración administrada.

561* **Proxy corporativo**: cuando su red requiere que el tráfico saliente pase a través de un proxy corporativo, establezca `HTTPS_PROXY`, `HTTP_PROXY` y `NO_PROXY` como describe [proxy configuration](/docs/es/network-config#proxy-configuration), en el bloque `env` de su configuración para que [agentes de fondo](/docs/es/network-config#set-network-variables-in-settings-not-the-shell) también los obtengan, o en el entorno desde el que inicia Claude Code. Claude Code aplica la lista de permitidos de dominio y luego canaliza las conexiones permitidas a través de ese proxy ascendente.565* **Proxy corporativo**: cuando su red requiere que el tráfico saliente pase a través de un proxy corporativo, establezca `HTTPS_PROXY`, `HTTP_PROXY` y `NO_PROXY` como describe [proxy configuration](/docs/es/network-config#proxy-configuration), en el bloque `env` de su configuración para que [agentes de fondo](/docs/es/network-config#set-network-variables-in-settings-not-the-shell) también los obtengan, o en el entorno desde el que inicia Claude Code. Claude Code aplica la lista de permitidos de dominio y luego canaliza las conexiones permitidas a través de ese proxy ascendente.


565En una regla `WebFetch(domain:...)`, el sandbox honra dos formas de comodín: un `*.` inicial, como `*.example.com`, y un `*` desnudo. La forma `*` desnuda requiere Claude Code v2.1.186 o posterior. Un comodín en cualquier otra posición, como `WebFetch(domain:example.*)`, aún coincide con búsquedas pero no tiene efecto en comandos aislados.569En una regla `WebFetch(domain:...)`, el sandbox honra dos formas de comodín: un `*.` inicial, como `*.example.com`, y un `*` desnudo. La forma `*` desnuda requiere Claude Code v2.1.186 o posterior. Un comodín en cualquier otra posición, como `WebFetch(domain:example.*)`, aún coincide con búsquedas pero no tiene efecto en comandos aislados.

566 570 

567<Note>571<Note>

568 El proxy integrado aplica la lista de permitidos basada en el nombre de host solicitado y, de forma predeterminada, no termina ni inspecciona el tráfico TLS. La configuración experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate), disponible en Claude Code v2.1.199 y posterior, hace que el proxy integrado termine TLS por sí mismo, lo que requieren las entradas de credenciales [`mask`](#mask-credentials). Consulte [Security limitations](#security-limitations) para las implicaciones del comportamiento predeterminado, y [Custom proxy configuration](#custom-proxy-configuration) si su modelo de amenaza requiere inspección de TLS.572 El proxy integrado aplica la lista de permitidos basada en el nombre de host solicitado y, de forma predeterminada, no termina ni inspecciona el tráfico TLS. La configuración experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate), disponible en Claude Code v2.1.199 y posterior, hace que el proxy integrado termine TLS por sí mismo, lo que requieren las entradas de credenciales [`mask`](#mask-credentials). Consulte [Limitaciones de seguridad](#security-limitations) para las implicaciones del comportamiento predeterminado, y [Configuración de proxy personalizado](#custom-proxy-configuration) si su modelo de amenaza requiere inspección de TLS.

569</Note>573</Note>

570 574 

575<h4 id="per-command-allowed-domains-in-auto-mode">

576 Dominios permitidos por comando en modo automático

577</h4>

578 

579En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) con sandboxing activado, Claude nombra los hosts que un comando necesita en el comando mismo en lugar de desencadenar una aprobación de red para cada conexión. Cada comando Bash, PowerShell o [Monitor](/docs/es/tools-reference#monitor-tool) que se ejecuta en el sandbox puede llevar una lista de hosts más allá de la lista de permitidos del sandbox: un dominio como `registry.npmjs.org`, un comodín como `*.pythonhosted.org`, o una dirección IP, cada uno con un `:port` opcional. El clasificador revisa los hosts junto con el comando. Requiere Claude Code v2.1.271 o posterior.

580 

581Una lista aprobada abre esos hosts solo para ese comando, mientras se ejecuta. Nada se agrega a los hosts permitidos de su sesión o su configuración; el siguiente comando nombra sus propios hosts.

582 

583Un comando que lleva hosts va al clasificador en lugar de ser aprobado por una regla de permiso o el [modo de auto-permitir](#sandbox-modes) del sandbox. Si una [regla ask](/docs/es/permissions#manage-permissions) fuerza una solicitud para el comando, el diálogo de permiso en su terminal enumera los hosts junto a él, y aprobar allí cubre ambos.

584 

585Una lista por comando amplía solo lo que el sandbox deniega de forma predeterminada. Las entradas [`deniedDomains`](/docs/es/settings-reference#sandbox-network-denieddomains) aún bloquean. Cuando [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) o [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) bloquea la lista de permitidos, Claude Code rechaza listas por comando.

586 

587Mientras se aplican listas por comando, Claude Code rechaza una conexión a un host que ningún comando aprobado listó, sin una solicitud o una verificación del clasificador. El rechazo nombra el host en el resultado del comando, y Claude vuelve a ejecutar el comando con el host agregado.

588 

571<h4 id="ipv6-addresses-in-domain-lists">589<h4 id="ipv6-addresses-in-domain-lists">

572 Direcciones IPv6 en listas de dominios590 Direcciones IPv6 en listas de dominios

573</h4>591</h4>


610Las reglas de permiso y el sandboxing controlan cosas diferentes:628Las reglas de permiso y el sandboxing controlan cosas diferentes:

611 629 

612* **Reglas de permiso** controlan qué herramientas puede usar Claude Code y se evalúan antes de que se ejecute cualquier herramienta. Se aplican a todas las herramientas: Bash, Read, Edit, WebFetch, MCP y otras, excepto que una regla de denegación o solicitud no puede bloquear [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) mientras que cualquier otra herramienta permanezca.630* **Reglas de permiso** controlan qué herramientas puede usar Claude Code y se evalúan antes de que se ejecute cualquier herramienta. Se aplican a todas las herramientas: Bash, Read, Edit, WebFetch, MCP y otras, excepto que una regla de denegación o solicitud no puede bloquear [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) mientras que cualquier otra herramienta permanezca.

613* **Sandboxing** proporciona aplicación a nivel del sistema operativo que restringe lo que los comandos Bash pueden acceder a nivel del sistema de archivos y la red. Se aplica solo a comandos Bash y sus procesos secundarios.631* **Sandboxing** proporciona aplicación a nivel del sistema operativo que restringe lo que los comandos Bash pueden acceder a nivel del sistema de archivos y la red. Se aplica solo a comandos Bash, PowerShell y [Monitor](/docs/es/tools-reference#monitor-tool) y sus procesos secundarios.

614 632 

615Las dos capas también difieren en cómo se aplican. Claude Code evalúa las decisiones de permiso antes de que se ejecute un comando, basándose en la cadena de comando y, en modo automático, el juicio de un clasificador separado sobre si el comando es seguro. El sistema operativo aplica el límite del sandbox en el proceso en ejecución, por lo que se mantiene independientemente de lo que el modelo eligió ejecutar e incluso si un comando permitido hace más de lo que su nombre sugiere.633Las dos capas también difieren en cómo se aplican. Claude Code evalúa las decisiones de permiso antes de que se ejecute un comando, basándose en la cadena de comando y, en modo automático, el juicio de un clasificador separado sobre si el comando es seguro. El sistema operativo aplica el límite del sandbox en el proceso en ejecución, por lo que se mantiene independientemente de lo que el modelo eligió ejecutar e incluso si un comando permitido hace más de lo que su nombre sugiere.

616 634 


644| [Modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) | Si se ejecuta cada llamada de herramienta | Un clasificador que revisa acciones |662| [Modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) | Si se ejecuta cada llamada de herramienta | Un clasificador que revisa acciones |

645| `--dangerously-skip-permissions` | Si se ejecuta cada llamada de herramienta | Nada. Las verificaciones de [ruta protegida](/docs/es/permission-modes#protected-paths) también se omiten; las [acciones que ningún modo auto-aprueba](/docs/es/permission-modes#actions-no-mode-auto-approves) aún se aplican |663| `--dangerously-skip-permissions` | Si se ejecuta cada llamada de herramienta | Nada. Las verificaciones de [ruta protegida](/docs/es/permission-modes#protected-paths) también se omiten; las [acciones que ningún modo auto-aprueba](/docs/es/permission-modes#actions-no-mode-auto-approves) aún se aplican |

646 664 

647El [modo auto-allow](#sandbox-modes) del sandbox es separado del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): auto-allow aprueba comandos Bash porque el límite del sandbox los contiene, mientras que el modo automático usa un clasificador para revisar acciones. Los dos funcionan independientemente y pueden combinarse. Para elegir un límite de aislamiento para ejecuciones desatendidas, consulte [Entornos sandbox](/docs/es/sandbox-environments#how-isolation-relates-to-permission-modes). Para una tabla de emparejamientos comunes de modo de permiso y sandbox con los indicadores que inician cada uno, consulte [Configuraciones comunes](/docs/es/permission-modes#common-setups).665El [modo auto-allow](#sandbox-modes) del sandbox es separado del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): auto-allow aprueba comandos Bash porque el límite del sandbox los contiene, mientras que el modo automático usa un clasificador para revisar acciones. Los dos funcionan independientemente y pueden combinarse, con las excepciones enumeradas en [Modos sandbox](#sandbox-modes). Para elegir un límite de aislamiento para ejecuciones desatendidas, consulte [Entornos sandbox](/docs/es/sandbox-environments#how-isolation-relates-to-permission-modes). Para una tabla de emparejamientos comunes de modo de permiso y sandbox con los indicadores que inician cada uno, consulte [Configuraciones comunes](/docs/es/permission-modes#common-setups).

648 666 

649<h2 id="configure-the-sandbox-for-your-organization">667<h2 id="configure-the-sandbox-for-your-organization">

650 Configurar el sandbox para su organización668 Configurar el sandbox para su organización


656 Aplicar sandboxing con configuración administrada674 Aplicar sandboxing con configuración administrada

657</h3>675</h3>

658 676 

659Para requerir el sandbox para cada desarrollador, entregue las claves `sandbox` a través de [configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya sea como un archivo administrado por su MDM o a través de [configuración administrada por servidor](/docs/es/server-managed-settings) en Claude.ai.677Para requerir el sandbox para cada desarrollador, entregue las claves `sandbox` a través de [configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya sea como un archivo administrado por su MDM o a través de [configuración administrada por servidor](/docs/es/server-managed-settings) en claude.ai.

660 678 

661La siguiente configuración de configuración administrada habilita el sandbox, se niega a iniciar Claude Code si el sandbox no puede inicializarse y evita que el modelo reintente comandos fuera del sandbox:679La siguiente configuración de configuración administrada habilita el sandbox, se niega a iniciar Claude Code si el sandbox no puede inicializarse y evita que el modelo reintente comandos fuera del sandbox:

662 680 

Details

169cancel the deploy check job169cancel the deploy check job

170```170```

171 171 

172Bajo el capó, Claude utiliza estas herramientas:172Estas son las herramientas subyacentes que Claude utiliza:

173 173 

174| Herramienta | Propósito |174| Herramienta | Propósito |

175| :----------- | :------------------------------------------------------------------------------------------------------------------------------- |175| :----------- | :------------------------------------------------------------------------------------------------------------------------------- |


238* Las tareas solo se ejecutan mientras Claude Code está ejecutándose e inactivo. Cerrar la terminal o dejar que la sesión salga detiene su ejecución. [Poner la sesión en segundo plano](/docs/es/agent-view#from-inside-a-session) traslada las tareas `/loop` a una sesión en segundo plano, que sigue ejecutándose sin una terminal.238* Las tareas solo se ejecutan mientras Claude Code está ejecutándose e inactivo. Cerrar la terminal o dejar que la sesión salga detiene su ejecución. [Poner la sesión en segundo plano](/docs/es/agent-view#from-inside-a-session) traslada las tareas `/loop` a una sesión en segundo plano, que sigue ejecutándose sin una terminal.

239* Sin recuperación de disparos perdidos. Si el tiempo programado de una tarea pasa mientras Claude está ocupado en una solicitud de larga duración, se ejecuta una vez cuando Claude queda inactivo, no una vez por intervalo perdido.239* Sin recuperación de disparos perdidos. Si el tiempo programado de una tarea pasa mientras Claude está ocupado en una solicitud de larga duración, se ejecuta una vez cuando Claude queda inactivo, no una vez por intervalo perdido.

240* Iniciar una conversación nueva borra todas las tareas con alcance de sesión. Cuando reanuda una sesión con `claude --resume` o `claude --continue`, Claude Code restaura las tareas programadas con `CronCreate`, excepto las tareas recurrentes que han [expirado](#seven-day-expiry) y las tareas únicas cuyo tiempo programado ha pasado. Un [`/loop` autorrítmico](#let-claude-choose-the-interval) no se restaura, así que ejecute `/loop` nuevamente para reiniciarlo. Las tareas de Bash de fondo y monitor nunca se restauran al reanudar.240* Iniciar una conversación nueva borra todas las tareas con alcance de sesión. Cuando reanuda una sesión con `claude --resume` o `claude --continue`, Claude Code restaura las tareas programadas con `CronCreate`, excepto las tareas recurrentes que han [expirado](#seven-day-expiry) y las tareas únicas cuyo tiempo programado ha pasado. Un [`/loop` autorrítmico](#let-claude-choose-the-interval) no se restaura, así que ejecute `/loop` nuevamente para reiniciarlo. Las tareas de Bash de fondo y monitor nunca se restauran al reanudar.

241* Con [obtención de banderas de características desactivada](/docs/es/env-vars#features-that-need-feature-flag-fetching), Claude Code almacena una tarea que solicitó mantener entre sesiones en el directorio `.claude` del proyecto. Cuando ese directorio o el archivo de tarea en él es un enlace simbólico, Claude Code devuelve un error en lugar de programar la tarea.241* Con [obtención de banderas de características desactivada](/docs/es/env-vars#features-that-need-feature-flag-fetching), Claude Code almacena una tarea que solicitó mantener entre sesiones en el archivo `.claude/scheduled_tasks.json` del proyecto. Cuando el directorio `.claude` o ese archivo es un enlace simbólico, Claude Code devuelve un error en lugar de programar la tarea. Una tarea guardada se ejecuta solo en la carpeta del proyecto donde la creó. Si copia el archivo en otra carpeta, como un nuevo worktree, las sesiones allí enumeran las tareas copiadas pero no las ejecutan, así que cree la tarea nuevamente en esa carpeta.

242 242 

243Para la automatización impulsada por cron que necesita ejecutarse sin supervisión:243Para la automatización impulsada por cron que necesita ejecutarse sin supervisión:

244 244 

Details

34`/plugin` abre un panel interactivo y está disponible solo en la CLI de terminal. Si Claude responde que `/plugin` no está disponible en este entorno, instale de otra manera:34`/plugin` abre un panel interactivo y está disponible solo en la CLI de terminal. Si Claude responde que `/plugin` no está disponible en este entorno, instale de otra manera:

35 35 

36* **Aplicación de escritorio Claude, sesión local o SSH**: abra el [navegador de plugins](/docs/es/desktop#install-plugins) haciendo clic en el botón **+** junto al prompt, luego **Plugins**, luego **Agregar plugin**36* **Aplicación de escritorio Claude, sesión local o SSH**: abra el [navegador de plugins](/docs/es/desktop#install-plugins) haciendo clic en el botón **+** junto al prompt, luego **Plugins**, luego **Agregar plugin**

37* **Claude Code en la web o una sesión en la nube de escritorio**: declare el plugin en `.claude/settings.json` como se muestra en [Habilitar en sesiones en la nube y repositorios compartidos](#enable-in-cloud-sessions-and-shared-repositories)37* **Sesiones en la nube**: declare el plugin en `.claude/settings.json` como se muestra en [Habilitar en sesiones en la nube y repositorios compartidos](#enable-in-cloud-sessions-and-shared-repositories)

38 38 

39La instalación en terminal solicita un alcance. Elija alcance de usuario para escribir el plugin en su configuración de usuario, de modo que se cargue en cada nueva sesión local que inicie en esta máquina.39La instalación en terminal solicita un alcance. Elija alcance de usuario para escribir el plugin en su configuración de usuario, de modo que se cargue en cada nueva sesión local que inicie en esta máquina.

40 40 


49 Habilitar en sesiones en la nube y repositorios compartidos49 Habilitar en sesiones en la nube y repositorios compartidos

50</h3>50</h3>

51 51 

52Los plugins con alcance de usuario no se transfieren a [Claude Code en la web](/docs/es/claude-code-on-the-web), porque esas sesiones se ejecutan en la nube en lugar de en su máquina. Para habilitar el plugin allí, o para activarlo para todos los que clonan un repositorio, declárelo en la configuración del proyecto registrada:52Los plugins con alcance de usuario no se transfieren a [sesiones en la nube](/docs/es/claude-code-on-the-web), porque esas sesiones no se ejecutan en su máquina. Para habilitar el plugin allí, o para activarlo para todos los que clonan un repositorio, declárelo en la configuración del proyecto registrada:

53 53 

54```json .claude/settings.json theme={null}54```json .claude/settings.json theme={null}

55{55{

Details

10 Los entornos autohospedados están en versión beta pública en planes Team y Enterprise y están deshabilitados de forma predeterminada. Consulte [Disponibilidad y limitaciones](#availability-and-limitations) para conocer la ruta de habilitación y qué está excluido.10 Los entornos autohospedados están en versión beta pública en planes Team y Enterprise y están deshabilitados de forma predeterminada. Consulte [Disponibilidad y limitaciones](#availability-and-limitations) para conocer la ruta de habilitación y qué está excluido.

11</Note>11</Note>

12 12 

13Un entorno autohospedado ejecuta sesiones en la nube de Claude Code en la infraestructura que opera su organización. Una [sesión en la nube](/docs/es/claude-code-on-the-web) es cualquier sesión que se ejecuta en algún lugar que no sea la máquina del desarrollador: los desarrolladores las inician desde claude.ai, las aplicaciones móviles y de escritorio, la terminal con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-web), y [rutinas programadas](/docs/es/routines), y de forma predeterminada se ejecutan en la infraestructura de Anthropic. En un entorno autohospedado, esas mismas sesiones se ejecutan dentro de su red, y la experiencia del desarrollador es la misma excepto por las diferencias en [Disponibilidad y limitaciones](#availability-and-limitations) y los [problemas conocidos](/docs/es/self-hosted-environments-deploy#known-issues-and-limitations) de la página de implementación.13Un entorno autohospedado ejecuta sesiones en la nube de Claude Code en la infraestructura que opera su organización. Una [sesión en la nube](/docs/es/claude-code-on-the-web) es cualquier sesión que se ejecuta en algún lugar que no sea la máquina del desarrollador: los desarrolladores las inician desde claude.ai, las aplicaciones móviles y de escritorio, la terminal con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud), y [rutinas programadas](/docs/es/routines), y de forma predeterminada se ejecutan en la infraestructura de Anthropic. En un entorno autohospedado, esas mismas sesiones se ejecutan dentro de su red, y la experiencia del desarrollador es la misma excepto por las diferencias en [Disponibilidad y limitaciones](#availability-and-limitations) y los [problemas conocidos](/docs/es/self-hosted-environments-deploy#known-issues-and-limitations) de la página de implementación.

14 14 

15Si su equipo no utiliza sesiones en la nube, no hay nada que configurar aquí: las sesiones en una terminal o IDE siempre se ejecutan en la máquina del desarrollador. Si desea ejecutar Claude Code en su propia máquina siempre activa e impulsarla desde otros dispositivos, use [Control remoto](/docs/es/remote-control), que también está disponible en planes Pro y Max. Cuando esté listo para configurar, vaya directamente al [inicio rápido](/docs/es/self-hosted-environments-quickstart); para revisar primero la postura de seguridad, comience con [Implementar en producción](/docs/es/self-hosted-environments-deploy). El resto de esta página explica cómo funciona el autohospedaje y cuándo elegirlo.15Si su equipo no utiliza sesiones en la nube, no hay nada que configurar aquí: las sesiones en una terminal o IDE siempre se ejecutan en la máquina del desarrollador. Si desea ejecutar Claude Code en su propia máquina siempre activa e impulsarla desde otros dispositivos, use [Control remoto](/docs/es/remote-control), que también está disponible en planes Pro y Max. Cuando esté listo para configurar, vaya directamente al [inicio rápido](/docs/es/self-hosted-environments-quickstart); para revisar primero la postura de seguridad, comience con [Implementar en producción](/docs/es/self-hosted-environments-deploy). El resto de esta página explica cómo funciona el autohospedaje y cuándo elegirlo.

16 16 


44 44 

45Verifique esto antes de planificar un despliegue:45Verifique esto antes de planificar un despliegue:

46 46 

47* **Planes**: versión beta pública para organizaciones Team y Enterprise. Los entornos autohospedados están deshabilitados de forma predeterminada; un [Propietario](/docs/es/cloud-environments#organization-shared-environments) activa **Permitir entornos autohospedados** en la [página de administrador de **Entornos en la nube**](https://claude.ai/admin-settings/cloud-environments), que requiere que [Claude Code en la web](/docs/es/claude-code-on-the-web) esté habilitado para la organización.47* **Planes**: versión beta pública para organizaciones Team y Enterprise. Los entornos autohospedados están deshabilitados de forma predeterminada; un [Propietario](/docs/es/cloud-environments#organization-shared-environments) activa **Permitir entornos autohospedados** en la [página de administrador de **Entornos en la nube**](https://claude.ai/admin-settings/cloud-environments), que requiere que [sesiones en la nube](/docs/es/claude-code-on-the-web) estén habilitadas para la organización.

48* **Retención cero de datos**: no disponible para organizaciones con [Retención cero de datos](/docs/es/zero-data-retention) habilitada.48* **Retención cero de datos**: no disponible para organizaciones con [Retención cero de datos](/docs/es/zero-data-retention) habilitada.

49* **Inferencia de modelos**: las sesiones utilizan la API de Anthropic, y la inferencia no se puede enrutar a través de [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/es/third-party-integrations), o una [puerta de enlace LLM](/docs/es/llm-gateway).49* **Inferencia de modelos**: las sesiones utilizan la API de Anthropic, y la inferencia no se puede enrutar a través de [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/es/third-party-integrations), o una [puerta de enlace LLM](/docs/es/llm-gateway).

50* **Superficies**: sesiones iniciadas desde [Claude Code en la web](/docs/es/claude-code-on-the-web), las aplicaciones móviles y de escritorio, [rutinas programadas](/docs/es/routines), y la terminal, con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-web) o un [envío `--environment`](/docs/es/self-hosted-environments-testing#run-the-test-loop), pueden ejecutarse en entornos autohospedados. Las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) también pueden ejecutarse en ellas, pero Claude aún no puede usar [Paquetes de acceso](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) en esas sesiones. Las sesiones de [Claude Security](/docs/es/claude-security) y [Code Review](/docs/es/code-review) aún no se enrutan a ellas. El soporte para esas dos superficies sigue por separado.50* **Superficies**: sesiones iniciadas desde [claude.ai/code](https://claude.ai/code), las aplicaciones móviles y de escritorio, [rutinas programadas](/docs/es/routines), y la terminal, con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) o un [envío `--environment`](/docs/es/self-hosted-environments-testing#run-the-test-loop), pueden ejecutarse en entornos autohospedados. Las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) también pueden ejecutarse en ellas, pero Claude aún no puede usar [Paquetes de acceso](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) en esas sesiones. Las sesiones de [Claude Security](/docs/es/claude-security) y [Code Review](/docs/es/code-review) aún no se enrutan a ellas. El soporte para esas dos superficies sigue por separado.

51* **Repositorios**: las sesiones clonan repositorios desde GitHub; consulte [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options).51* **Repositorios**: las sesiones clonan repositorios desde GitHub; consulte [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options).

52* **Facturación**: las sesiones en un entorno autohospedado consumen el uso de Claude Code de su organización de la misma manera que las sesiones en entornos alojados por Anthropic.52* **Facturación**: las sesiones en un entorno autohospedado consumen el uso de Claude Code de su organización de la misma manera que las sesiones en entornos alojados por Anthropic.

53 53 

Details

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID de sesión en forma etiquetada `cse_...`. Esta es la misma sesión que los [hooks de ciclo de vida](#lifecycle-hooks) ven como `CLAUDE_RUNNER_SESSION_ID` en forma `session_...`; las variables UUID coinciden en ambas, y sustituir el prefijo `cse_` con `session_` produce el ID que se muestra en la URL de la sesión. |37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID de sesión en forma etiquetada `cse_...`. Esta es la misma sesión que los [hooks de ciclo de vida](#lifecycle-hooks) ven como `CLAUDE_RUNNER_SESSION_ID` en forma `session_...`; las variables UUID coinciden en ambas, y sustituir el prefijo `cse_` con `session_` produce el ID que se muestra en la URL de la sesión. |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | El mismo ID de sesión en forma UUID canónica, para sistemas que usan UUID como clave. |38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | El mismo ID de sesión en forma UUID canónica, para sistemas que usan UUID como clave. |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Ruta absoluta a un archivo por sesión que contiene el JWT de sesión actual, mantenido fresco en los refrescos de token. Los subprocesos de shell lo leen para su encabezado `Authorization` al descargar archivos adjuntos que el usuario agregó a la sesión. `exec` preserva la variable automáticamente; un contenedor que reconstruye el entorno del hijo debe llevar la variable, o las descargas de archivos adjuntos dejan de funcionar silenciosamente. |39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Ruta absoluta a un archivo por sesión que contiene el JWT de sesión actual, mantenido fresco en los refrescos de token. Los subprocesos de shell lo leen para su encabezado `Authorization` al descargar archivos adjuntos que el usuario agregó a la sesión. `exec` preserva la variable automáticamente; un contenedor que reconstruye el entorno del hijo debe llevar la variable, o las descargas de archivos adjuntos dejan de funcionar silenciosamente. |

40| `CLAUDE_CONFIG_DIR` | Directorio de configuración de Claude por sesión, escrito al inicio de la sesión desde la instantánea de la configuración del host del ejecutor que el ejecutor captura al inicio; consulte [Permisos y aprobación de herramientas](#permissions-and-tool-approval). Las escrituras aquí se aíslan a esta sesión. |40| `CLAUDE_CONFIG_DIR` | Directorio de configuración de Claude por sesión, escrito al inicio de la sesión desde la instantánea de la configuración del host del ejecutor que el ejecutor captura al inicio; consulte [Permisos y aprobación de herramientas](#permissions-and-tool-approval). Las escrituras aquí se aíslan a esta sesión. El directorio permanece bajo `<base-dir>/_sessions/` después de que la sesión finaliza a menos que inicie el ejecutor con [`--remove-session-state`](/docs/es/self-hosted-environments-reference#runner-cli-flags); consulte [Reutilizar un checkout precalentado](/docs/es/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |

41| `ANTHROPIC_BASE_URL` | La URL base de API que el hijo usará, entregada por el plano de control por sesión y normalmente `https://api.anthropic.com`. No la anule: la credencial de inferencia de la sesión es un token OAuth emitido por Anthropic que otros proveedores no aceptan, por lo que la inferencia en entornos autohospedados no es enrutable a otros lugares. |41| `ANTHROPIC_BASE_URL` | La URL base de API que el hijo usará, entregada por el plano de control por sesión y normalmente `https://api.anthropic.com`. No la anule: la credencial de inferencia de la sesión es un token OAuth emitido por Anthropic que otros proveedores no aceptan, por lo que la inferencia en entornos autohospedados no es enrutable a otros lugares. |

42| `CLAUDE_CODE_OAUTH_TOKEN` | El token de acceso OAuth de corta duración que el hijo usa para inferencia de modelo, limitado a inferencia de modelo y carga de archivos solamente, con una vida útil de aproximadamente 30 minutos. El ejecutor lo vuelve a acuñar antes del vencimiento y entrega la rotación a través de stdin del hijo, por lo que un contenedor que no [mantiene stdin adjunto](#keep-stdin-and-file-descriptor-3-attached) solo ve el valor inicial. No confíe en la lista de permitidos de IP de su organización para limitar el uso de este token: trate como una credencial de portador que permanece utilizable durante aproximadamente 30 minutos si se filtra, y no la registre, escriba en disco o reenvíe fuera del contenedor de sesión. |42| `CLAUDE_CODE_OAUTH_TOKEN` | El token de acceso OAuth de corta duración que el hijo usa para inferencia de modelo, limitado a inferencia de modelo y carga de archivos solamente, con una vida útil de aproximadamente 30 minutos. El ejecutor lo vuelve a acuñar antes del vencimiento y entrega la rotación a través de stdin del hijo, por lo que un contenedor que no [mantiene stdin adjunto](#keep-stdin-and-file-descriptor-3-attached) solo ve el valor inicial. No confíe en la lista de permitidos de IP de su organización para limitar el uso de este token: trate como una credencial de portador que permanece utilizable durante aproximadamente 30 minutos si se filtra, y no la registre, escriba en disco o reenvíe fuera del contenedor de sesión. |

43 43 


407 Cómo se ensambla la configuración de cada sesión407 Cómo se ensambla la configuración de cada sesión

408</h3>408</h3>

409 409 

410El ejecutor da a cada sesión su propio directorio de configuración, sembrado desde una instantánea en memoria de `~/.claude/` del host que el ejecutor captura una vez al inicio: `settings.json`, `CLAUDE.md`, hooks, agentes, comandos y habilidades en su imagen de ejecutor se aplican a cada sesión como la línea de base a nivel de usuario. Porque la instantánea se toma al inicio, los cambios de configuración en un host en ejecución tienen efecto solo después de un reinicio del ejecutor. Establezca `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` para sembrar desde una ruta diferente, o apúntelo a un directorio vacío para deshabilitar la siembra.410El ejecutor da a cada sesión su propio directorio de configuración, sembrado desde una instantánea en memoria de `~/.claude/` del host que el ejecutor captura una vez al inicio: `settings.json`, `CLAUDE.md`, hooks, agentes, comandos y habilidades en su imagen de ejecutor se aplican a cada sesión como la línea de base a nivel de usuario. Si cambia la configuración en un host en ejecución, el cambio tiene efecto solo después de reiniciar el ejecutor.

411 

412Establezca `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` para sembrar desde una ruta diferente, o apúntelo a un directorio vacío para deshabilitar la siembra.

411 413 

412El `.claude/settings.json` confirmado en el repositorio se superpone como configuración del proyecto. Las sesiones también leen [`managed-settings.json`](/docs/es/settings#where-settings-live) desde la ruta estándar del sistema en su imagen de ejecutor. Si sus claves se aplican junto con [configuración administrada por servidor](/docs/es/server-managed-settings) sigue [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources): por defecto, cuando su organización entrega cualquier clave administrada por servidor, las sesiones ignoran el archivo de imagen del ejecutor aparte de las [claves que Claude Code lee de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source), como el bloque `env`, los bloqueos de sandbox, las rutas binarias de sandbox y `forceRemoteSettingsRefresh`. Consulte [precedencia de configuración](/docs/es/settings#settings-precedence).414El `.claude/settings.json` confirmado en el repositorio se superpone como configuración del proyecto. Las sesiones también leen [`managed-settings.json`](/docs/es/settings#where-settings-live) desde la ruta estándar del sistema en su imagen de ejecutor. Si sus claves se aplican junto con [configuración administrada por servidor](/docs/es/server-managed-settings) sigue [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources): por defecto, cuando su organización entrega cualquier clave administrada por servidor, las sesiones ignoran el archivo de imagen del ejecutor aparte de las [claves que Claude Code lee de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source), como el bloque `env`, los bloqueos de sandbox, las rutas binarias de sandbox y `forceRemoteSettingsRefresh`. Consulte [precedencia de configuración](/docs/es/settings#settings-precedence).

413 415 

Details

434 434 

435* **Cualquier forma de clon funciona**: un clon completo, superficial, o de rama única en la ruta se usa tal cual. El runner nunca pasa `--depth` cuando obtiene en un clon existente, por lo que un precalentamiento completo mantiene su historial completo y uno superficial permanece superficial. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, o un número; valor predeterminado 50) controla solo el clon frío que el runner hace cuando no existe clon aún.435* **Cualquier forma de clon funciona**: un clon completo, superficial, o de rama única en la ruta se usa tal cual. El runner nunca pasa `--depth` cuando obtiene en un clon existente, por lo que un precalentamiento completo mantiene su historial completo y uno superficial permanece superficial. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, o un número; valor predeterminado 50) controla solo el clon frío que el runner hace cuando no existe clon aún.

436* **Los cambios rastreados se reinician, los archivos sin rastrear persisten**: cada sesión comienza desde un reinicio duro que borra las modificaciones rastreadas de la sesión anterior, pero el runner nunca ejecuta `git clean`, por lo que los archivos sin rastrear de las sesiones anteriores del propietario bloqueado permanecen en el árbol.436* **Los cambios rastreados se reinician, los archivos sin rastrear persisten**: cada sesión comienza desde un reinicio duro que borra las modificaciones rastreadas de la sesión anterior, pero el runner nunca ejecuta `git clean`, por lo que los archivos sin rastrear de las sesiones anteriores del propietario bloqueado permanecen en el árbol.

437* **Directorios por sesión persisten también**: junto al checkout, el runner crea entradas por sesión bajo `<base-dir>/_sessions/` para cada sesión que ejecuta. El directorio de configuración de Claude de la sesión contiene una copia local de la transcripción de la conversación. Junto a él se encuentran los archivos cargados de la sesión, cuando la sesión tiene alguno. El directorio de sesión también se encuentra allí: contiene cualquier worktree por sesión y checkouts de hook `checkout` mientras se ejecuta la sesión, y mantiene cualquier otra cosa que Claude escribió en él.

438 

439 Por defecto, el runner deja estos en su lugar cuando termina la sesión, por lo que en un disco que sobrevive al proceso del runner se acumulan. Cada sesión se ejecuta como el usuario del runner, por lo que cualquier sesión posterior que ese disco sirva puede leerlos. Si mantiene un `--base-dir` persistente, dimensione el volumen para ese crecimiento. Lo mismo se aplica a cualquier configuración que reinicie el runner en el mismo sistema de archivos, incluida la [receta de Docker Compose](#docker-compose).

440* **Con `--remove-session-state`, los directorios por sesión no persisten**: inicie el runner con [`--remove-session-state`](/docs/es/self-hosted-environments-reference#runner-cli-flags) para que elimine los directorios por sesión de cada sesión cuando termina la sesión. La eliminación es de mejor esfuerzo: los directorios permanecen cuando el runner se mata antes de que se ejecute su limpieza. El clon canónico y los archivos que una sesión escribió en otro lugar del host, como el directorio temporal, permanecen independientemente.

437* **Con el proxy de git, el reinicio se convierte en un checkout**: con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), el runner sanitiza el `.git/` del clon antes de cada sesión, manteniendo el almacén de objetos, refs, y estado superficial pero eliminando el índice, por lo que cada sesión paga un checkout de árbol de trabajo completo en lugar de un reinicio casi instantáneo; aún nunca vuelve a clonar. Los precalentamientos de submódulos no son compatibles con el proxy.441* **Con el proxy de git, el reinicio se convierte en un checkout**: con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), el runner sanitiza el `.git/` del clon antes de cada sesión, manteniendo el almacén de objetos, refs, y estado superficial pero eliminando el índice, por lo que cada sesión paga un checkout de árbol de trabajo completo en lugar de un reinicio casi instantáneo; aún nunca vuelve a clonar. Los precalentamientos de submódulos no son compatibles con el proxy.

438* **Los clones largos no necesitan solución alternativa**: el runner limita cada operación de git con un vigilante de 120 segundos sin progreso y un límite duro de 30 minutos, no un tiempo de espera plano, por lo que un clon frío lento que sigue reportando progreso se completa.442* **Los clones largos no necesitan solución alternativa**: el runner limita cada operación de git con un vigilante de 120 segundos sin progreso y un límite duro de 30 minutos, no un tiempo de espera plano, por lo que un clon frío lento que sigue reportando progreso se completa.

439 443 


530* **Las sesiones tardan minutos en iniciarse**: el clon inicial generalmente domina. Observe la [métrica](/docs/es/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` para confirmar, y corte el clon con un [pre-warmed checkout](#reuse-a-pre-warmed-checkout) o un `CLAUDE_RUNNER_FETCH_DEPTH` más pequeño.534* **Las sesiones tardan minutos en iniciarse**: el clon inicial generalmente domina. Observe la [métrica](/docs/es/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` para confirmar, y corte el clon con un [pre-warmed checkout](#reuse-a-pre-warmed-checkout) o un `CLAUDE_RUNNER_FETCH_DEPTH` más pequeño.

531* **El pod se mata a mitad del drenaje**: aumente `terminationGracePeriodSeconds` al menos al valor que el runner registra al inicio. Consulte [Shutdown timing](#shutdown-timing).535* **El pod se mata a mitad del drenaje**: aumente `terminationGracePeriodSeconds` al menos al valor que el runner registra al inicio. Consulte [Shutdown timing](#shutdown-timing).

532 536 

533Una vez que se inicializa el registro, el runner escribe su registro de ciclo de vida, incluidas las líneas `[runner:fatal]`, en stdout, y la salida de depuración en stderr, todo como líneas de texto sin formato en lugar de JSON. Las fallas de inicio descritas en las entradas de solución de problemas anteriores se imprimen en stderr antes de ese punto. Capture ambas secuencias con `--log-file`, que también permite que `self-hosted-runner doctor` las siga, o con la recopilación de registros de su plataforma. El proceso secundario de cada sesión escribe un registro de depuración separado. En caso de fallo, el runner preserva el registro, imprime la ruta del registro en el registro del runner y muestra la cola del registro junto con la sesión en claude.ai/code.537Una vez que se inicializa el registro, el runner escribe su registro de ciclo de vida, incluidas las líneas `[runner:fatal]`, en stdout, y la salida de depuración en stderr, todo como líneas de texto sin formato en lugar de JSON. Las fallas de inicio descritas en las entradas de solución de problemas anteriores se imprimen en stderr antes de ese punto. Capture ambas secuencias con `--log-file`, que también permite que `self-hosted-runner doctor` las siga, o con la recopilación de registros de su plataforma.

538 

539Cada proceso secundario de sesión escribe un registro de depuración separado. En caso de fallo, el runner expone la cola del registro junto con la sesión en claude.ai/code. A menos que haya iniciado el runner con [`--remove-session-state`](/docs/es/self-hosted-environments-reference#runner-cli-flags), también mantiene el registro de una sesión fallida en el disco e imprime su ruta en el registro del runner.

534 540 

535<h2 id="what’s-next">541<h2 id="what’s-next">

536 Qué sigue542 Qué sigue

Details

31| `--debug-token-dir <path>` | `SELF_HOSTED_RUNNER_DEBUG_TOKEN_DIR` | unset | Escriba tokens en vivo en disco para inspección. Solo depuración; no use en producción. |31| `--debug-token-dir <path>` | `SELF_HOSTED_RUNNER_DEBUG_TOKEN_DIR` | unset | Escriba tokens en vivo en disco para inspección. Solo depuración; no use en producción. |

32| `--defer-shutdown-max-min <n>` | `SELF_HOSTED_RUNNER_DEFER_SHUTDOWN_MAX_MS` | `0` | En el primer `SIGTERM` o `SIGINT`, continúe sirviendo las sesiones ya adjuntas en lugar de drenarlas, luego libere lo que aún esté adjunto N minutos después y salga. Aumente el timeout de parada de su host antes de establecer esto. Consulte [Defer the drain past the first signal](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal). `0` desactiva. Requiere Claude Code v2.1.238 o posterior. |32| `--defer-shutdown-max-min <n>` | `SELF_HOSTED_RUNNER_DEFER_SHUTDOWN_MAX_MS` | `0` | En el primer `SIGTERM` o `SIGINT`, continúe sirviendo las sesiones ya adjuntas en lugar de drenarlas, luego libere lo que aún esté adjunto N minutos después y salga. Aumente el timeout de parada de su host antes de establecer esto. Consulte [Defer the drain past the first signal](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal). `0` desactiva. Requiere Claude Code v2.1.238 o posterior. |

33| `--drain-grace-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_GRACE_MS` | `0` | Hasta que el runner reciba una señal de apagado o alcance su tiempo de retiro, controla cuándo sale el runner después de que sus sesiones activas terminen: `0` sale inmediatamente sin sondear más, y un valor positivo mantiene el runner vivo y re-sondea la cola del owner bloqueado durante esos muchos segundos primero, al costo del aislamiento de contenedor por sesión descrito en la [sección de endurecimiento](/docs/es/self-hosted-environments-deploy#harden-your-deployment). Después de una primera señal que difirió con [`--defer-shutdown-max-min`](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), el runner sale tan pronto como no tenga sesiones, sin importar lo que establezca aquí. |33| `--drain-grace-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_GRACE_MS` | `0` | Hasta que el runner reciba una señal de apagado o alcance su tiempo de retiro, controla cuándo sale el runner después de que sus sesiones activas terminen: `0` sale inmediatamente sin sondear más, y un valor positivo mantiene el runner vivo y re-sondea la cola del owner bloqueado durante esos muchos segundos primero, al costo del aislamiento de contenedor por sesión descrito en la [sección de endurecimiento](/docs/es/self-hosted-environments-deploy#harden-your-deployment). Después de una primera señal que difirió con [`--defer-shutdown-max-min`](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), el runner sale tan pronto como no tenga sesiones, sin importar lo que establezca aquí. |

34| `--drain-marker-file <path>` | `SELF_HOSTED_RUNNER_DRAIN_MARKER_FILE` | unset | Archivo marcador que su host escribe para anunciar un drenaje elegante antes de enviar `SIGTERM`. Cuando el archivo existe cuando comienza el drenaje, el runner reporta su salida a Anthropic como un drenaje de host en lugar de una señal de apagado simple. El drenaje en sí, incluida la espera de `--drain-wait-sec`, se ejecuta igual que sin el flag. Nombre una ruta en un sistema de archivos local que las sesiones no puedan escribir. Requiere Claude Code v2.1.271 o posterior. |

34| `--drain-wait-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_WAIT_MS` | `0` | Una vez que comienza el drenaje, que es en `SIGTERM` a menos que establezca [`--defer-shutdown-max-min`](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), espere hasta N segundos para que el turno en vuelo de cada sesión y las tareas de fondo terminen antes de terminar el hijo. Durante esta espera, el runner cuenta una tarea de fondo que acaba de terminar como aún en ejecución hasta que comienza el turno de seguimiento que lee su resultado, durante como máximo la ventana [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). |35| `--drain-wait-sec <n>` | `SELF_HOSTED_RUNNER_DRAIN_WAIT_MS` | `0` | Una vez que comienza el drenaje, que es en `SIGTERM` a menos que establezca [`--defer-shutdown-max-min`](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), espere hasta N segundos para que el turno en vuelo de cada sesión y las tareas de fondo terminen antes de terminar el hijo. Durante esta espera, el runner cuenta una tarea de fondo que acaba de terminar como aún en ejecución hasta que comienza el turno de seguimiento que lee su resultado, durante como máximo la ventana [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). |

35| `--environment-secret-file <path>` | `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` | required | Ruta a un archivo que contiene el secreto del entorno, o, para runners generados por el [orquestador](/docs/es/self-hosted-environments-configuration#on-demand-runners), el JWT de orden de trabajo de un solo uso. `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` lleva el valor secreto directamente, no una ruta de archivo. El flag más antiguo `--pool-secret-file` y la variable `SELF_HOSTED_RUNNER_POOL_SECRET` aún funcionan e imprimen un aviso de deprecación a stderr; las compilaciones de runner del programa de vista previa más antiguas que 2.1.216 solo reconocen esos nombres más antiguos. |36| `--environment-secret-file <path>` | `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` | required | Ruta a un archivo que contiene el secreto del entorno, o, para runners generados por el [orquestador](/docs/es/self-hosted-environments-configuration#on-demand-runners), el JWT de orden de trabajo de un solo uso. `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` lleva el valor secreto directamente, no una ruta de archivo. El flag más antiguo `--pool-secret-file` y la variable `SELF_HOSTED_RUNNER_POOL_SECRET` aún funcionan e imprimen un aviso de deprecación a stderr; las compilaciones de runner del programa de vista previa más antiguas que 2.1.216 solo reconocen esos nombres más antiguos. |

36| `--exec-path <path>` | `SELF_HOSTED_RUNNER_EXEC_PATH` | own binary | Binario o script de envoltura para generar para cada sesión. Consulte [Wrapper scripts](/docs/es/self-hosted-environments-configuration#wrapper-scripts). |37| `--exec-path <path>` | `SELF_HOSTED_RUNNER_EXEC_PATH` | own binary | Binario o script de envoltura para generar para cada sesión. Consulte [Wrapper scripts](/docs/es/self-hosted-environments-configuration#wrapper-scripts). |


39| `--git-ssh-rewrite <host>` | none | unset | Reescriba las URLs de origen `https://<host>/...` a `git@<host>:...` antes de clonar, para hosts git solo SSH. Repetible; solo flag. |40| `--git-ssh-rewrite <host>` | none | unset | Reescriba las URLs de origen `https://<host>/...` a `git@<host>:...` antes de clonar, para hosts git solo SSH. Repetible; solo flag. |

40| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Puerto para el listener `/healthz` y `/metrics`. Establezca `0` para desactivar. |41| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Puerto para el listener `/healthz` y `/metrics`. Establezca `0` para desactivar. |

41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Directorio de scripts de hook de ciclo de vida. Consulte [Lifecycle hooks](/docs/es/self-hosted-environments-configuration#lifecycle-hooks). |42| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Directorio de scripts de hook de ciclo de vida. Consulte [Lifecycle hooks](/docs/es/self-hosted-environments-configuration#lifecycle-hooks). |

43| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Dónde el runner mantiene la instantánea de inicio del [directorio de configuración del host](#environment-variable-only-settings) que siembra cada sesión desde. `disk` copia la instantánea en un directorio propiedad del runner bajo `--base-dir` y, en cada inicio de sesión, verifica cada archivo contra un resumen en memoria. Si un archivo en la copia ha sido modificado, la sesión falla y el runner rechaza sesiones hasta que lo reinicie. `memory` mantiene toda la instantánea en el heap, limitada a 64 MiB; sobre el límite, las sesiones comienzan sin configuración de host y muestran un aviso diciendo así. Cuando el runner no puede escribir la instantánea de disco, registra el fallo y usa `memory` para esa ejecución. Requiere Claude Code v2.1.271 o posterior. |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limite una sesión a N minutos de reloj de pared, como límite de seguridad para sesiones atascadas. En v2.1.260 o posterior, el runner libera una sesión que alcanza el límite para que pueda reanudarse en el siguiente mensaje de su usuario, y la termina solo si aún está en el runner cuando termina la ventana de gracia [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings). Antes de v2.1.260, el runner terminaba la sesión en el límite. Consulte [Some sessions don't count as idle](/docs/es/self-hosted-environments-deploy#some-sessions-don%E2%80%99t-count-as-idle) para los detalles y cómo elegir un valor. `0` desactiva. |44| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limite una sesión a N minutos de reloj de pared, como límite de seguridad para sesiones atascadas. En v2.1.260 o posterior, el runner libera una sesión que alcanza el límite para que pueda reanudarse en el siguiente mensaje de su usuario, y la termina solo si aún está en el runner cuando termina la ventana de gracia [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings). Antes de v2.1.260, el runner terminaba la sesión en el límite. Consulte [Some sessions don't count as idle](/docs/es/self-hosted-environments-deploy#some-sessions-don%E2%80%99t-count-as-idle) para los detalles y cómo elegir un valor. `0` desactiva. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-bloquee el runner a una cuenta específica al iniciar en lugar de bloquear en la primera sesión. Acepta una dirección de correo electrónico o un ID `user_...` en la organización del entorno. Un runner pre-bloqueado nunca recoge sesiones del canal Claude Tag, que no tienen cuenta. |45| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-bloquee el runner a una cuenta específica al iniciar en lugar de bloquear en la primera sesión. Acepta una dirección de correo electrónico o un ID `user_...` en la organización del entorno. Un runner pre-bloqueado nunca recoge sesiones del canal Claude Tag, que no tienen cuenta. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Espeje los logs del runner a un archivo además de stdout y stderr, creado con permisos `0600`. Requerido para que `self-hosted-runner doctor` rastree logs localmente. |46| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Espeje los logs del runner a un archivo además de stdout y stderr, creado con permisos `0600`. Requerido para que `self-hosted-runner doctor` rastree logs localmente. |


48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | Archivo que el runner lee para cada conexión a su proxy de salida, usando su contenido recortado como el valor del encabezado `Proxy-Authorization`. Use este flag para un token que otro proceso rota en su lugar. Lleva los mismos requisitos que `--proxy-authorization-command`, y no se puede combinar con él. Consulte [Authenticate to an egress proxy](/docs/es/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Requiere Claude Code v2.1.238 o posterior. |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | Archivo que el runner lee para cada conexión a su proxy de salida, usando su contenido recortado como el valor del encabezado `Proxy-Authorization`. Use este flag para un token que otro proceso rota en su lugar. Lleva los mismos requisitos que `--proxy-authorization-command`, y no se puede combinar con él. Consulte [Authenticate to an egress proxy](/docs/es/self-hosted-environments-deploy#authenticate-to-an-egress-proxy). Requiere Claude Code v2.1.238 o posterior. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | En un final de sesión iniciado por el runner como un drenaje o liberación por inactividad, empuje las ramas de resultado rastreadas a `origin` antes de eliminar el workspace, para que los commits en vuelo sobrevivan a un reinicio. Mejor esfuerzo; agrega 30 segundos al presupuesto de apagado, y requiere git 2.29 o más nuevo para reanudar desde la rama empujada. Restrinja el acceso de push a refs `claude/*` antes de habilitar; consulte [Resumed sessions lose unpushed work](/docs/es/self-hosted-environments-deploy#additional-limitations). Los repositorios verificados a través de un hook de ciclo de vida `checkout` no se empujan; tome una instantánea de esos desde el hook [`post-session`](/docs/es/self-hosted-environments-configuration#post-session) en su lugar. |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | En un final de sesión iniciado por el runner como un drenaje o liberación por inactividad, empuje las ramas de resultado rastreadas a `origin` antes de eliminar el workspace, para que los commits en vuelo sobrevivan a un reinicio. Mejor esfuerzo; agrega 30 segundos al presupuesto de apagado, y requiere git 2.29 o más nuevo para reanudar desde la rama empujada. Restrinja el acceso de push a refs `claude/*` antes de habilitar; consulte [Resumed sessions lose unpushed work](/docs/es/self-hosted-environments-deploy#additional-limitations). Los repositorios verificados a través de un hook de ciclo de vida `checkout` no se empujan; tome una instantánea de esos desde el hook [`post-session`](/docs/es/self-hosted-environments-configuration#post-session) en su lugar. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libere un slot de sesión después de N minutos de inactividad una vez que un turno termina o la sesión espera la acción del usuario. Una sesión que aún está a mitad de turno, incluida una que sostiene una tarea de fondo que nunca termina o una aprobación solicitada desde dentro de una llamada de herramienta en ejecución, no cuenta como inactiva; empareje con `--kill-session-after-min` como el tope duro. Después de que la tarea de fondo de una sesión termina, el runner considera la sesión ocupada hasta que comienza el turno de seguimiento que lee el resultado, durante como máximo la ventana [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Hasta que el runner reciba una señal de apagado o alcance su tiempo de retiro, una liberación que deja el runner sin sesiones activas inicia la misma ruta de salida que un drenaje normal, gobernado por `--drain-grace-sec`. Después de una primera señal que difirió con [`--defer-shutdown-max-min`](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), el runner sale tan pronto como una liberación lo deja sin sesiones. `0` desactiva. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libere un slot de sesión después de N minutos de inactividad una vez que un turno termina o la sesión espera la acción del usuario. Una sesión que aún está a mitad de turno, incluida una que sostiene una tarea de fondo que nunca termina o una aprobación solicitada desde dentro de una llamada de herramienta en ejecución, no cuenta como inactiva; empareje con `--kill-session-after-min` como el tope duro. Después de que la tarea de fondo de una sesión termina, el runner considera la sesión ocupada hasta que comienza el turno de seguimiento que lee el resultado, durante como máximo la ventana [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Hasta que el runner reciba una señal de apagado o alcance su tiempo de retiro, una liberación que deja el runner sin sesiones activas inicia la misma ruta de salida que un drenaje normal, gobernado por `--drain-grace-sec`. Después de una primera señal que difirió con [`--defer-shutdown-max-min`](/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), el runner sale tan pronto como una liberación lo deja sin sesiones. `0` desactiva. |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Elimine los directorios por sesión de una sesión bajo `<base-dir>/_sessions/` cuando la sesión termina en este runner, sin importar el resultado. [Reuse a pre-warmed checkout](/docs/es/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) describe lo que contienen y quién puede leerlos cuando permanecen. La eliminación es mejor esfuerzo: los directorios por sesión permanecen en su lugar cuando el runner es asesinado o alcanza su plazo de drenaje antes de que se ejecute la limpieza. Con el flag activado, el log de depuración de una sesión fallida o interrumpida no se mantiene en disco. Requiere Claude Code v2.1.268 o posterior. |

51| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Retire el runner en una marca de tiempo Unix absoluta en segundos, para infraestructura que mata el runner en un tiempo conocido; [Runner lifecycle](/docs/es/self-hosted-environments#runner-lifecycle) describe la secuencia de liberación y cómo dimensionar el margen. Los valores antes de 2001 o después del año 5138 son rechazados por el flag e ignorados por la variable de entorno. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Retire el runner en una marca de tiempo Unix absoluta en segundos, para infraestructura que mata el runner en un tiempo conocido; [Runner lifecycle](/docs/es/self-hosted-environments#runner-lifecycle) describe la secuencia de liberación y cómo dimensionar el margen. Los valores antes de 2001 o después del año 5138 son rechazados por el flag e ignorados por la variable de entorno. |

52| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Cuánto tiempo esperar a que el proceso de Claude salga limpiamente después de que una sesión termina, antes de matarlo por la fuerza. Aumente el valor si los hooks `SessionEnd` propios del hijo necesitan más tiempo. |55| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Cuánto tiempo esperar a que el proceso de Claude salga limpiamente después de que una sesión termina, antes de matarlo por la fuerza. Aumente el valor si los hooks `SessionEnd` propios del hijo necesitan más tiempo. |

53| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Libere un slot de sesión si el hijo no ha señalado que se inicializó dentro de N minutos de generación. Borrado por la señal de inicialización del hijo en el [canal de actividad](/docs/es/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), no por salida ordinaria, después de lo cual `--release-idle-session-min` toma el control. `0` desactiva. |56| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Libere un slot de sesión si el hijo no ha señalado que se inicializó dentro de N minutos de generación. Borrado por la señal de inicialización del hijo en el [canal de actividad](/docs/es/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), no por salida ordinaria, después de lo cual `--release-idle-session-min` toma el control. `0` desactiva. |

Details

74 Antes de iniciar el ejecutor74 Antes de iniciar el ejecutor

75</h3>75</h3>

76 76 

77Dos cosas de las que depende el hook:77El hook tiene estos requisitos:

78 78 

79* Instálelo antes de iniciar el ejecutor. El ejecutor toma una instantánea de `~/.claude/` una vez al inicio, por lo que un hook añadido a un ejecutor en ejecución solo tiene efecto después de un reinicio.79* Instálelo antes de iniciar el ejecutor. El ejecutor toma una instantánea de `~/.claude/` una vez al inicio, por lo que un hook añadido a un ejecutor en ejecución solo tiene efecto después de un reinicio.

80* Exporte `E2E_REPLY_DIR` al proceso del ejecutor. El hook es una operación sin efecto cuando la variable no está configurada o el directorio no existe, así que configúrelo donde inicie el ejecutor, como la unidad systemd, especificación de pod o paso de CI. El script de prueba a continuación también lo requiere.80* Exporte `E2E_REPLY_DIR` al proceso del ejecutor. El hook es una operación sin efecto cuando la variable no está configurada o el directorio no existe, así que configúrelo donde inicie el ejecutor, como la unidad systemd, especificación de pod o paso de CI. El script de prueba a continuación también lo requiere.

Details

6 6 

7> Configure Claude Code centralmente para su organización a través de configuración entregada por servidor, sin requerir infraestructura de administración de dispositivos.7> Configure Claude Code centralmente para su organización a través de configuración entregada por servidor, sin requerir infraestructura de administración de dispositivos.

8 8 

9La configuración administrada por servidor permite a los propietarios de la organización configurar Claude Code centralmente desde [**Admin Settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code) en la consola de claude.ai. Los clientes de Claude Code obtienen automáticamente estas configuraciones cuando los usuarios se autentican con un inicio de sesión OAuth de Team o Enterprise, un token OAuth suministrado a través de `CLAUDE_CODE_OAUTH_TOKEN`, o una clave API configurada directamente, en plataformas donde se admite la entrega administrada por servidor. Consulte [Disponibilidad de plataforma](#platform-availability).9La configuración administrada por servidor permite a los propietarios de la organización configurar Claude Code centralmente desde [**Admin Settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code) en la consola de claude.ai. Los clientes de Claude Code obtienen automáticamente estas configuraciones cuando los usuarios se autentican con una credencial elegible en una plataforma donde se admite la entrega administrada por servidor. Consulte [Disponibilidad de plataforma](#platform-availability) para conocer las credenciales y plataformas que califican.

10 10 

11<Note>11<Note>

12 La configuración administrada por servidor está disponible para clientes de [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) y [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise).12 La configuración administrada por servidor está disponible para clientes de [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) y [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise).


33| **Configuración administrada por servidor** | Organizaciones sin MDM, o usuarios en dispositivos no administrados | Configuración que Claude Code obtiene de los servidores de Anthropic al iniciar y actualiza cada hora durante la sesión |33| **Configuración administrada por servidor** | Organizaciones sin MDM, o usuarios en dispositivos no administrados | Configuración que Claude Code obtiene de los servidores de Anthropic al iniciar y actualiza cada hora durante la sesión |

34| **[Configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms)** | Organizaciones con MDM o administración de endpoint | Configuración implementada en dispositivos a través de perfiles de configuración MDM, políticas de registro o archivos de configuración administrados |34| **[Configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms)** | Organizaciones con MDM o administración de endpoint | Configuración implementada en dispositivos a través de perfiles de configuración MDM, políticas de registro o archivos de configuración administrados |

35 35 

36Si sus dispositivos están inscritos en una solución MDM o de administración de endpoint, la configuración administrada por endpoint proporciona garantías de seguridad más sólidas porque el archivo de configuración puede protegerse de la modificación del usuario a nivel del sistema operativo. La configuración administrada por endpoint no llega a las [sesiones en la nube](/docs/es/model-config#surface-coverage) en entornos alojados por Anthropic, por lo que las organizaciones que utilizan Claude Code en la web también deben configurar la configuración administrada por servidor. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) también leen el archivo de configuración administrada en la imagen del ejecutor. La [precedencia de configuración](#settings-precedence) a continuación indica cuándo se aplica ese archivo.36Si sus dispositivos están inscritos en una solución MDM o de administración de endpoint, la configuración administrada por endpoint proporciona garantías de seguridad más sólidas porque el archivo de configuración puede protegerse de la modificación del usuario a nivel del sistema operativo. La configuración administrada por endpoint no llega a las [sesiones en la nube](/docs/es/model-config#surface-coverage) en entornos alojados por Anthropic, por lo que las organizaciones cuyos desarrolladores ejecutan sesiones en la nube también deben configurar la configuración administrada por servidor. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) también leen el archivo de configuración administrada en la imagen del ejecutor. La [precedencia de configuración](#settings-precedence) a continuación indica cuándo se aplica ese archivo.

37 37 

38<h2 id="configure-server-managed-settings">38<h2 id="configure-server-managed-settings">

39 Configurar la configuración administrada por servidor39 Configurar la configuración administrada por servidor


49 <Step title="Definir su configuración">49 <Step title="Definir su configuración">

50 Agregue su configuración como JSON. Todas las [configuraciones disponibles en `settings.json`](/docs/es/settings-reference#all-settings) son compatibles excepto las restringidas a la entrega de políticas a nivel del sistema operativo; consulte [Limitaciones actuales](#current-limitations) para esa lista breve. Esto incluye [hooks](/docs/es/hooks), [variables de entorno](/docs/es/env-vars) y [configuraciones solo administradas](/docs/es/managed-settings#managed-only-settings) como `allowManagedPermissionRulesOnly`.50 Agregue su configuración como JSON. Todas las [configuraciones disponibles en `settings.json`](/docs/es/settings-reference#all-settings) son compatibles excepto las restringidas a la entrega de políticas a nivel del sistema operativo; consulte [Limitaciones actuales](#current-limitations) para esa lista breve. Esto incluye [hooks](/docs/es/hooks), [variables de entorno](/docs/es/env-vars) y [configuraciones solo administradas](/docs/es/managed-settings#managed-only-settings) como `allowManagedPermissionRulesOnly`.

51 51 

52 Este ejemplo aplica una lista de denegación de permisos, impide que los usuarios omitan permisos y restringe las reglas de permisos a las definidas en la configuración administrada:52 Este ejemplo aplica una lista de denegación de permisos, impide que los usuarios omitan permisos y restringe las reglas de permisos a las definidas en la configuración administrada. La regla `Bash(curl *)` coincide con `curl` [tal como Claude la escribe](/docs/es/permissions#bash-rule-limits), no `/usr/bin/curl` o `sh -c 'curl …'`; para la aplicación de red que no depende del texto del comando, agregue un [bloque `sandbox` con `allowManagedDomainsOnly`](/docs/es/sandboxing#configure-the-sandbox-for-your-organization).

53 53 

54 ```json theme={null}54 ```json theme={null}

55 {55 {


136La configuración administrada por servidor tiene las siguientes limitaciones:136La configuración administrada por servidor tiene las siguientes limitaciones:

137 137 

138* La configuración se aplica uniformemente a todos los usuarios de la organización. Las configuraciones por grupo aún no son compatibles.138* La configuración se aplica uniformemente a todos los usuarios de la organización. Las configuraciones por grupo aún no son compatibles.

139* Un archivo [`managed-mcp.json`](/docs/es/managed-mcp) no se puede distribuir a través de la configuración administrada por servidor. Entregue las claves de política `allowedMcpServers` y `deniedMcpServers` allí en su lugar. Claude Code lee un archivo `managed-mcp.json` implementado en su [ruta del sistema](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) por separado del nivel de configuración administrada, por lo que el archivo aún se aplica cuando la configuración administrada por servidor está en vigor.139* Un archivo [`managed-mcp.json`](/docs/es/managed-mcp) no se puede distribuir a través de la configuración administrada por servidor. Entregue las claves de política `allowedMcpServers` y `deniedMcpServers` allí en su lugar. En Claude Code v2.1.259 o posterior, también puede proporcionar servidores remotos con [`managedMcpServers`](/docs/es/managed-mcp#provide-servers-through-managed-settings), que acepta solo servidores `http` y `sse` y no toma control exclusivo de la manera que lo hace el archivo.

140 

141 Claude Code lee un archivo `managed-mcp.json` implementado en su [ruta del sistema](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) por separado del nivel de configuración administrada, por lo que el archivo aún se aplica cuando la configuración administrada por servidor está en vigor.

140* Las configuraciones restringidas a fuentes de políticas a nivel del sistema operativo, como `policyHelper` y `wslInheritsWindowsSettings`, no se respetan. Impleméntelas a través de MDM o un archivo `managed-settings.json` del sistema en su lugar. Un `policyHelper` implementado de esa manera se ejecuta solo cuando su fuente es la seleccionada en [precedencia dentro del nivel administrado](/docs/es/managed-settings#precedence-within-the-managed-tier).142* Las configuraciones restringidas a fuentes de políticas a nivel del sistema operativo, como `policyHelper` y `wslInheritsWindowsSettings`, no se respetan. Impleméntelas a través de MDM o un archivo `managed-settings.json` del sistema en su lugar. Un `policyHelper` implementado de esa manera se ejecuta solo cuando su fuente es la seleccionada en [precedencia dentro del nivel administrado](/docs/es/managed-settings#precedence-within-the-managed-tier).

141 143 

142<h2 id="settings-delivery">144<h2 id="settings-delivery">


149 151 

150La configuración administrada por servidor y la [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) ocupan el nivel más alto en la [jerarquía de configuración](/docs/es/settings#settings-precedence) de Claude Code. Ningún otro nivel de configuración puede anularlas, incluidos los argumentos de línea de comandos, aparte de las [excepciones a la precedencia de configuración administrada](/docs/es/settings#exceptions-to-managed-settings-precedence).152La configuración administrada por servidor y la [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) ocupan el nivel más alto en la [jerarquía de configuración](/docs/es/settings#settings-precedence) de Claude Code. Ningún otro nivel de configuración puede anularlas, incluidos los argumentos de línea de comandos, aparte de las [excepciones a la precedencia de configuración administrada](/docs/es/settings#exceptions-to-managed-settings-precedence).

151 153 

152Dentro del nivel administrado, Claude Code utiliza de forma predeterminada la primera fuente que entrega al menos una clave de política, verificando primero la configuración administrada por servidor y luego la configuración administrada por endpoint, aparte de la [excepción de claves cubierta a continuación](#per-key-exceptions-across-managed-sources). [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#precedence-within-the-managed-tier) tiene la clasificación completa, la exclusión para las claves de control y la opción de participación que se aplica a cada fuente.154Dentro del nivel administrado, Claude Code utiliza de forma predeterminada la primera fuente que entrega al menos una clave de política, verificando primero la configuración administrada por servidor y luego la configuración administrada por endpoint, aparte de las [claves de excepción cubiertas a continuación](#per-key-exceptions-across-managed-sources). [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#precedence-within-the-managed-tier) tiene la clasificación completa, la exclusión para las claves de control y la opción de participación que se aplica a cada fuente.

155 

156Si la fuente seleccionada es una política MDM o un archivo de configuración administrada cuyo [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, la salida del asistente reemplaza esa fuente como la única configuración administrada para la ejecución. Claude Code no consulta un `policyHelper` configurado en MDM o configuración basada en archivos mientras la configuración administrada por servidor entrega una clave de política.

153 157 

154Si la fuente seleccionada es una política MDM o archivo de configuración administrada cuya [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, la salida del asistente reemplaza esa fuente como la única configuración administrada para la ejecución. Claude Code no consulta una `policyHelper` configurada en MDM o configuración basada en archivos mientras la configuración administrada por servidor entrega una clave de política.158Si una búsqueda posterior encuentra que se ha eliminado la configuración administrada por servidor, Claude Code ejecuta ese asistente de inmediato en lugar de en el siguiente lanzamiento. La entrada [`policyHelper`](/docs/es/settings-reference#policyhelper) cubre lo que sucede cuando esa ejecución falla.

155 159 

156Si borra su configuración administrada por servidor en la consola de administración con la intención de volver a una política plist administrada por endpoint o de registro, tenga en cuenta que la [configuración en caché](#fetch-and-caching-behavior) persiste en máquinas cliente hasta la siguiente obtención exitosa, y las claves que [se aplican solo en el siguiente lanzamiento](#fetch-and-caching-behavior), como `model`, permanecen en vigor hasta que cada cliente se reinicie. Ejecute `/status` para ver qué fuente administrada está activa.160Si borra su configuración administrada por servidor en la consola de administración con la intención de volver a una política de plist administrada por endpoint o de registro, tenga en cuenta que la [configuración en caché](#fetch-and-caching-behavior) persiste en las máquinas cliente hasta la siguiente búsqueda exitosa, y las claves que [se aplican solo en el siguiente lanzamiento](#fetch-and-caching-behavior), como `model`, permanecen en vigor hasta que cada cliente se reinicie. Ejecute `/status` para ver qué fuente administrada está activa.

157 161 

158<h3 id="per-key-exceptions-across-managed-sources">162<h3 id="per-key-exceptions-across-managed-sources">

159 Excepciones por clave entre fuentes administradas163 Excepciones por clave en fuentes administradas

160</h3>164</h3>

161 165 

162Dos tipos de claves son excepciones a la regla de no fusión:166Tres tipos de claves son excepciones a la regla de no fusión:

167 

168* **Claves de bloqueo entre fuentes**: un pequeño conjunto de claves, como los bloqueos de lista de permitidos de sandbox, [enumeradas en la página de configuración administrada](/docs/es/managed-settings#precedence-within-the-managed-tier). Claude Code las honra cuando cualquier fuente administrada controlada por administrador las establece; el nivel de registro HKCU escribible por el usuario se excluye.

163 169 

164* **Claves de bloqueo entre fuentes**: un pequeño conjunto de claves, como los bloqueos de lista de permitidos de sandbox, [enumeradas en la página de configuración administrada](/docs/es/managed-settings#precedence-within-the-managed-tier). Se respetan cuando cualquier fuente administrada controlada por administrador las establece; el nivel de registro HKCU escribible por el usuario se excluye, y cuando una [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, su salida es la única fuente que estas comprobaciones leen. La comprobación de inicio [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) se ejecuta antes del asistente y lee cualquier fuente de administrador.170 Cuando un [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, su salida es la única fuente que estas comprobaciones leen, aparte de [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#forceremotesettingsrefresh), que Claude Code lee de las fuentes de administrador directamente al inicio.

165* **El bloque `env`**: aparte de la unidad de telemetría y las variables de enrutamiento emparejadas con una clave de credencial, ambas cubiertas a continuación, se fusiona por clave entre las fuentes controladas por administrador. Para cada variable de entorno, la fuente de mayor prioridad que la define gana, y las fuentes de administrador inferiores rellenan variables que las fuentes superiores dejan sin establecer. Una entrada `env` administrada por endpoint se aplica, por lo tanto, siempre que la configuración administrada por servidor deje esa variable sin establecer, o mientras un valor de servidor en caché para ella esté [retenido pendiente de confirmación del servidor](#fetch-and-caching-behavior). Requiere Claude Code v2.1.223 o posterior. Antes de v2.1.223, Claude Code aplica solo el bloque `env` de la fuente seleccionada.171* **El bloque `env`**: aparte de la unidad de telemetría y las variables de enrutamiento emparejadas con una clave de credencial, ambas cubiertas a continuación, se fusiona por clave en las fuentes controladas por administrador. Para cada variable de entorno, la fuente de mayor prioridad que la define gana, y las fuentes de administrador inferiores rellenan las variables que las fuentes superiores dejan sin establecer. Una entrada `env` administrada por endpoint se aplica, por lo tanto, siempre que la configuración administrada por servidor deje esa variable sin establecer, o mientras un valor de servidor en caché para ella se [retiene pendiente de confirmación del servidor](#fetch-and-caching-behavior). Requiere Claude Code v2.1.223 o posterior. Antes de v2.1.223, Claude Code aplica solo el bloque `env` de la fuente seleccionada.

166 * **Unidad de telemetría**: las claves del exportador `OTEL_EXPORTER_OTLP_*`, los conmutadores de captura de contenido `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER` y las variables de rastreo beta `ENABLE_BETA_TRACING_DETAILED` y `BETA_TRACING_ENDPOINT` siguen la fuente más alta que establece cualquiera de ellas como unidad. Una fuente que entrega la clave de credencial `otelHeadersHelper` reclama la unidad también, pero coloca estas variables solo cuando es la fuente seleccionada: una fuente que no está seleccionada pero entrega la clave no contribuye ninguna de ellas y aún bloquea las fuentes inferiores de rellenarlas. De cualquier forma, un endpoint de exportador de una fuente nunca puede emparejarse con credenciales de otra.172 * **Unidad de telemetría**: las claves del exportador `OTEL_EXPORTER_OTLP_*`, los conmutadores de captura de contenido `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER` y las variables de rastreo beta `ENABLE_BETA_TRACING_DETAILED` y `BETA_TRACING_ENDPOINT` siguen la fuente más alta que establece cualquiera de ellas como una unidad. Una fuente que entrega la clave de credencial `otelHeadersHelper` reclama la unidad también, pero coloca estas variables solo cuando es la fuente seleccionada: una fuente que no está seleccionada pero entrega la clave no contribuye ninguna de ellas y aún bloquea las fuentes inferiores de rellenarlas. De cualquier forma, un punto final del exportador de una fuente nunca puede emparejarse con credenciales de otra.

167 * **Enrutamiento emparejado con credencial**: una fuente que empareja variables de enrutamiento con una clave de credencial solo para fuente seleccionada, como `apiKeyHelper` u `otelHeadersHelper`, contribuye esas variables de enrutamiento solo cuando gana la ranura.173 * **Enrutamiento emparejado con credencial**: una fuente que empareja variables de enrutamiento con una clave de credencial solo para fuente seleccionada, como `apiKeyHelper` u `otelHeadersHelper`, contribuye esas variables de enrutamiento solo cuando gana la ranura.

174* **Claves de inicio de sesión de puerta de enlace**: Claude Code nunca lee [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl) ni el valor `"gateway"` de [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod) de la configuración administrada por servidor, por lo que seleccionar la configuración administrada por servidor ni suministra un inicio de sesión de puerta de enlace ni oculta uno establecido en una política MDM o archivo de configuración administrada. La entrada [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) dice qué fuente de administrador en la máquina los suministra.

168 175 

169<h3 id="fetch-and-caching-behavior">176<h3 id="fetch-and-caching-behavior">

170 Comportamiento de obtención y almacenamiento en caché177 Comportamiento de búsqueda y almacenamiento en caché

171</h3>178</h3>

172 179 

173Claude Code obtiene la configuración de los servidores de Anthropic al inicio y sondea actualizaciones cada hora durante sesiones activas.180Claude Code obtiene la configuración de los servidores de Anthropic al inicio y sondea actualizaciones cada hora durante sesiones activas.

174 181 

175Un 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 obtención antes de que comience la sesión, por lo que la obtención en las listas a continuación no se aplica a él. [Aplicar inicio cerrado por fallo](#enforce-fail-closed-startup) cubre qué sucede cuando esa obtención falla.182Un 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.

176 183 

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

178 185 

179* 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 que la obtención se complete antes de abrir la sesión. Cuando la política llega a tiempo, Claude Code la aplica desde la primera pantalla y muestra sus [`companyAnnouncements`](/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`](/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

180* En cualquier otro inicio, y cuando se agota esa espera de cinco segundos, Claude Code abre la sesión mientras la obtención continúa, por lo que pasa una breve ventana antes de que se cargue la configuración y las restricciones entren en vigor187* 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

181* Si la obtención 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 se cierra en su lugar188* 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 lugar

182 189 

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

184 191 

185* La configuración en caché se aplica inmediatamente al inicio, excepto para las variables de entorno retenidas descritas a continuación192* La configuración en caché se aplica inmediatamente al inicio, excepto para los valores en caché `modelPricing` y `managedMcpServers` y las variables de entorno que Claude Code retiene hasta que el servidor confirma la carga útil

186* Un [`modelPricing`](/docs/es/settings-reference#modelpricing) en caché no se aplica hasta que la obtención de la sesión confirma la carga útil. Hasta entonces, las cifras de costo que los desarrolladores ven en `/usage` y la línea de estado están al precio de lista193* Un [`modelPricing`](/docs/es/settings-reference#modelpricing) en caché no se aplica hasta que la búsqueda de la sesión confirma la carga útil. Hasta entonces, las cifras de costo que los desarrolladores ven en `/usage` y la línea de estado están al precio de lista

187* Claude Code obtiene configuración nueva en segundo plano194* Un bloque [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) en caché no se aplica hasta que la búsqueda de la sesión confirma la carga útil. Claude Code espera hasta 30 segundos para esa búsqueda antes de conectar servidores MCP. Si la búsqueda falla o agota el tiempo de espera, la sesión comienza sin los servidores de la organización, `/status` lo dice, y se conectan una vez que una búsqueda posterior los confirma. Consulte [Cuándo se conectan los servidores proporcionados](/docs/es/managed-mcp#when-provided-servers-connect) para el comportamiento completo, incluido el primer lanzamiento. Requiere Claude Code v2.1.259 o posterior

188* La configuración en caché persiste a través de fallos de red. Si la obtención de inicio falla, Claude Code advierte en sesiones interactivas que la política en caché está en vigor195* Claude Code obtiene configuración fresca en segundo plano

189* Hasta que una obtención se realiza correctamente, las variables de entorno retenidas permanecen retenidas y las cifras de costo permanecen al precio de lista196* 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 vigor

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

190 198 

191Claude Code retiene varias categorías de variables en el bloque `env` en caché hasta que el servidor confirma la carga útil 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 obtención de configuración que confirma la carga útil. El endurecimiento se aplica solo a la caché de configuración obtenida del servidor: la [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) implementada a través de MDM o `managed-settings.json` no se ve afectada. La retención requiere Claude Code v2.1.198 o posterior; antes de v2.1.198, todo el bloque `env` en caché se aplica al inicio. Las categorías retenidas incluyen:199Claude Code retiene varias categorías de variables en el bloque `env` en caché hasta que el servidor confirma la carga útil para la sesión. Esto evita que un valor de proxy, autoridad de certificado, punto final o credencial en caché redirija, intercepte o reautentique la búsqueda de configuración que confirma la carga útil. El endurecimiento se aplica solo al caché de configuración obtenido del servidor: la [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) implementada a través de MDM o `managed-settings.json` no se ve afectada. La retención requiere Claude Code v2.1.198 o posterior; antes de v2.1.198, todo el bloque `env` en caché se aplica al inicio. Las categorías retenidas incluyen:

192 200 

193* Configuración de proxy y TLS, como `HTTPS_PROXY`, `NODE_EXTRA_CA_CERTS` y las variables de certificado de cliente mTLS `CLAUDE_CODE_CLIENT_CERT` y `CLAUDE_CODE_CLIENT_KEY`201* Configuración de proxy y TLS, como `HTTPS_PROXY`, `NODE_EXTRA_CA_CERTS` y las variables de certificado de cliente mTLS `CLAUDE_CODE_CLIENT_CERT` y `CLAUDE_CODE_CLIENT_KEY`

194* Enrutamiento de API y selección de proveedor, incluido `ANTHROPIC_BASE_URL`, las variables de selección de proveedor como `CLAUDE_CODE_USE_BEDROCK` y `CLAUDE_CODE_USE_VERTEX`, y las URL de endpoint del proveedor como `ANTHROPIC_BEDROCK_BASE_URL`202* Enrutamiento de API y selección de proveedor, incluido `ANTHROPIC_BASE_URL`, las variables de selección de proveedor como `CLAUDE_CODE_USE_BEDROCK` y `CLAUDE_CODE_USE_VERTEX`, y las URL de punto final del proveedor como `ANTHROPIC_BEDROCK_BASE_URL`

195* Credenciales de autenticación, como `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` y `CLAUDE_CODE_OAUTH_TOKEN`203* Credenciales de autenticación, como `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` y `CLAUDE_CODE_OAUTH_TOKEN`

196* El selector de directorio de configuración `CLAUDE_CONFIG_DIR`204* El selector de directorio de configuración `CLAUDE_CONFIG_DIR`

197* Selectores de fuente de credencial y directorio de configuración, en Claude Code v2.1.223 o posterior: las variables de Workload Identity Federation como `ANTHROPIC_FEDERATION_RULE_ID` e `ANTHROPIC_IDENTITY_TOKEN`, los selectores de perfil y directorio de configuración `ANTHROPIC_PROFILE` y `ANTHROPIC_CONFIG_DIR`, y las variables de directorio del sistema operativo `HOME`, `XDG_CONFIG_HOME`, `APPDATA` y `USERPROFILE`205* Selectores de fuente de credencial y directorio de configuración, en Claude Code v2.1.223 o posterior: las variables de Workload Identity Federation como `ANTHROPIC_FEDERATION_RULE_ID` e `ANTHROPIC_IDENTITY_TOKEN`, los selectores de perfil y directorio de configuración `ANTHROPIC_PROFILE` y `ANTHROPIC_CONFIG_DIR`, y las variables de directorio del sistema operativo `HOME`, `XDG_CONFIG_HOME`, `APPDATA` y `USERPROFILE`

198 206 

199Claude Code lee las variables de Workload Identity Federation y los selectores `ANTHROPIC_PROFILE` y `ANTHROPIC_CONFIG_DIR` solo al inicio, por lo que un valor entregado por servidor para ellos no cambia la fuente de credencial de la sesión incluso después de que la obtención se realiza correctamente. Para entregar esos selectores en Claude Code v2.1.223 o posterior, use [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) como MDM o `managed-settings.json`. Para `CLAUDE_CONFIG_DIR` y las variables de directorio del sistema operativo, la retención en sí es la protección: el valor en caché permanece fuera del entorno hasta que el servidor confirma la carga útil.207Claude Code lee las variables de Workload Identity Federation y los selectores `ANTHROPIC_PROFILE` y `ANTHROPIC_CONFIG_DIR` solo al inicio, por lo que un valor entregado por servidor para ellos no cambia la fuente de credencial de la sesión incluso después de que la búsqueda tenga éxito. Para entregar esos selectores en Claude Code v2.1.223 o posterior, use [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) como MDM o `managed-settings.json`. Para `CLAUDE_CONFIG_DIR` y las variables de directorio del sistema operativo, la retención en sí es la protección: el valor en caché permanece fuera del entorno hasta que el servidor confirma la carga útil.

200 208 

201Todas las demás claves en el bloque `env` en caché, como telemetría y configuración de OpenTelemetry, se aplican al inicio como antes. Una vez que el servidor confirma la carga útil, y usted la aprueba si necesita [aprobación de seguridad](#security-approval-dialogs), las variables retenidas se aplican para el resto de la sesión; los selectores de solo inicio cubiertos anteriormente llegan al entorno pero no cambian la fuente de credencial de la sesión en ejecución.209Todas las demás claves en el bloque `env` en caché se aplican al inicio. Una vez que el servidor confirma la carga útil, y usted la aprueba si necesita [aprobación de seguridad](#security-approval-dialogs), las variables retenidas se aplican durante el resto de la sesión.

202 210 

203Si su organización necesita un proxy para llegar a `api.anthropic.com`, la retención solo afecta al bloque `env` entregado por servidor en sí: un proxy establecido en un bloque `env` [administrado por endpoint](/docs/es/managed-settings#delivery-mechanisms) a través de MDM o `managed-settings.json`, en el entorno de shell, o en [configuración del usuario](/docs/es/settings#where-settings-live) llega a la obtención de configuración. La fuente administrada por endpoint requiere Claude Code v2.1.223 o posterior: el valor de proxy administrado por servidor en caché se retiene hasta que la obtención lo confirma, por lo que el valor administrado por endpoint se rellena por clave y llega a la obtención en sí. Antes de v2.1.223, use el entorno de shell o la configuración del usuario para que el proxy se aplique junto con una carga útil de servidor en caché. El primer lanzamiento no tiene caché, por lo que una fuente administrada por endpoint, el entorno de shell o la configuración del usuario aún es necesaria para la obtención inicial.211Si su organización necesita un proxy para llegar a `api.anthropic.com`, la retención solo afecta al bloque `env` entregado por servidor en sí: un proxy establecido en un bloque `env` [administrado por endpoint](/docs/es/managed-settings#delivery-mechanisms) a través de MDM o `managed-settings.json`, en el entorno del shell, o en [configuración de usuario](/docs/es/settings#where-settings-live) llega a la búsqueda de configuración. La fuente administrada por endpoint requiere Claude Code v2.1.223 o posterior: el valor de proxy administrado por servidor en caché se retiene hasta que la búsqueda lo confirma, por lo que el valor administrado por endpoint se rellena por clave y llega a la búsqueda en sí. Antes de v2.1.223, use el entorno del shell o la configuración de usuario para que el proxy se aplique junto con una carga útil de servidor en caché. El primer lanzamiento no tiene caché, por lo que una fuente administrada por endpoint, el entorno del shell o la configuración de usuario sigue siendo necesaria para la búsqueda inicial.

204 212 

205Claude Code aplica la mayoría de actualizaciones de configuración a sesiones en ejecución sin reinicio. Algunas actualizaciones se aplican solo en el siguiente lanzamiento, incluida la configuración del exportador de OpenTelemetry, la clave `model` y la eliminación de una variable del bloque `env`.213Claude Code aplica la mayoría de las actualizaciones de configuración a sesiones en ejecución sin reinicio. Algunas actualizaciones se aplican solo en el siguiente lanzamiento, incluida la configuración del exportador OpenTelemetry, la clave `model` y la eliminación de una variable del bloque `env`.

206 214 

207<h3 id="invalid-entries-in-delivered-settings">215<h3 id="invalid-entries-in-delivered-settings">

208 Entradas inválidas en la configuración entregada216 Entradas inválidas en la configuración entregada

209</h3>217</h3>

210 218 

211Cuando parte de una carga útil falla en la validación del esquema, Claude Code muestra un error de validación y aplica todas las configuraciones válidas restantes; [Entradas inválidas en configuración administrada](/docs/es/managed-settings#invalid-entries-in-managed-settings) dice qué elimina y qué claves se revierten a un valor más estricto. Requiere Claude Code v2.1.169 o posterior.219Cuando parte de una carga útil falla la validación del esquema, Claude Code muestra un error de validación y aplica todas las configuraciones válidas restantes; [Entradas inválidas en configuración administrada](/docs/es/managed-settings#invalid-entries-in-managed-settings) dice qué descarta y qué claves se replantean a un valor más estricto. Requiere Claude Code v2.1.169 o posterior.

212 220 

213La entrega administrada por servidor agrega estos comportamientos:221La entrega administrada por servidor agrega estos comportamientos:

214 222 

215* La caché en `~/.claude/remote-settings.json` almacena la carga útil salvada con entradas inválidas eliminadas, aparte de valores `cleanupPeriodDays` y `desktopSessionCleanupPeriodDays` inválidos, que permanecen en la copia en caché y nunca se aplican.223* El caché en `~/.claude/remote-settings.json` almacena la carga útil salvada con entradas inválidas eliminadas, aparte de valores `cleanupPeriodDays` y `desktopSessionCleanupPeriodDays` inválidos, que permanecen en la copia en caché y nunca se aplican.

216* Cuando ningún campo en la carga útil puede salvarse y la carga útil no es solo esas claves de retención, Claude Code rechaza la carga útil, mantiene la última configuración en caché aceptada y escribe `Remote settings: Settings validation failed - no fields could be salvaged` en el registro de depuración. Con `forceRemoteSettingsRefresh` establecido, la CLI se cierra en su lugar.224* Cuando ningún campo en la carga útil puede salvarse y la carga útil no es solo esas claves de retención, Claude Code rechaza la carga útil, mantiene la última configuración en caché aceptada y escribe `Remote settings: Settings validation failed - no fields could be salvaged` en el registro de depuración. Con `forceRemoteSettingsRefresh` establecido, la CLI sale en su lugar.

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

218 226 

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

220 228 

221<h3 id="enforce-fail-closed-startup">229<h3 id="enforce-fail-closed-startup">

222 Aplicar inicio cerrado por fallo230 Aplicar inicio cerrado por error

223</h3>231</h3>

224 232 

225De forma predeterminada, si la obtención de configuración remota falla al inicio, la CLI continúa con la configuración en caché de la última obtención exitosa, excepto para las [variables de entorno retenidas](#fetch-and-caching-behavior), o sin configuración administrada por servidor en una máquina que nunca las ha obtenido. Sin caché, Claude Code aún aplica cualquier [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) en el dispositivo. Para entornos donde cualquiera de estas ventanas es inaceptable, establezca `forceRemoteSettingsRefresh: true` en su configuración administrada. Los clientes que inician sesión a través de una [puerta de enlace de aplicaciones Claude](#platform-availability) se cierran cuando la obtención de inicio falla, sin esta configuración.233De 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](/docs/es/managed-settings#delivery-mechanisms) en el dispositivo.

234 

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

236 

237Los clientes que inician sesión a través de una [puerta de enlace de aplicaciones Claude](#platform-availability) esperan la búsqueda de inicio independientemente de si establece esto o no, y manejan una búsqueda fallida de la siguiente manera:

238 

239* Si la puerta de enlace responde a un lanzamiento interactivo asistido con un `401` y esta configuración está desactivada, la puerta de enlace ha terminado ese inicio de sesión. Claude Code imprime [`Cloud gateway session expired — run /login to reconnect.`](/docs/es/errors#cloud-gateway-session-expired) y abre la sesión sin iniciar sesión en la puerta de enlace hasta que el usuario ejecute `/login`.

240* Cuando la búsqueda falla de cualquier otra forma, o en cualquier otro tipo de lanzamiento excepto un subcomando `claude auth`, el cliente sale con un error.

226 241 

227Cuando esta configuración está activa en una sesión que obtiene configuración administrada por servidor, la CLI se bloquea al inicio hasta que la configuración remota se obtiene recientemente. Si la obtención falla, la CLI se cierra en lugar de continuar sin la política. Esta configuración se autoperpetúa: una vez entregada desde el servidor, también se almacena en caché localmente para que los inicios posteriores apliquen el mismo comportamiento incluso antes de la primera obtención exitosa de una nueva sesión. Una sesión que [no obtiene configuración administrada por servidor](#platform-availability) comienza sin esperar.242Cuando esta configuración está activa en una sesión que obtiene configuración administrada por servidor, la CLI se bloquea al inicio hasta que la configuración remota se obtenga recientemente. Si la búsqueda falla, la CLI sale en lugar de continuar sin la política. Esta configuración se perpetúa a sí misma: una vez entregada desde el servidor, también se almacena en caché localmente para que los inicios posteriores apliquen el mismo comportamiento incluso antes de la primera búsqueda exitosa de una nueva sesión. Una sesión que [no obtiene configuración administrada por servidor](#platform-availability) comienza sin esperar.

228 243 

229Para habilitarlo, agregue la clave a su configuración de configuración administrada:244Para habilitar esto, agregue la clave a su configuración de configuración administrada:

230 245 

231```json theme={null}246```json theme={null}

232{247{


234}249}

235```250```

236 251 

237También puede establecer esta clave en un [perfil MDM administrado por endpoint](/docs/es/managed-settings#delivery-mechanisms) o archivo `managed-settings.json` del sistema para aplicar el comportamiento de cierre por fallo en el primer lanzamiento, antes de que se entregue ninguna carga útil del servidor. En Claude Code v2.1.191 o posterior, esta bandera es una excepción a la [regla de precedencia](#settings-precedence) anterior: se respeta cuando se establece en cualquier fuente administrada controlada por administrador incluso si también está presente una carga útil en caché administrada por servidor, por lo que un valor entregado por MDM no se ignora cuando existen configuraciones administradas por servidor. Cuando una [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, su salida reemplaza todas las demás fuentes administradas para las claves que Claude Code lee después del inicio; la comprobación de cierre por fallo de inicio en sí lee esta clave de cualquier fuente controlada por administrador antes de que se ejecute el asistente. La entrada dice qué fuentes Lee Claude Code el asistente y cuándo se ejecuta.252También puede establecer esta clave en un perfil MDM [administrado por endpoint](/docs/es/managed-settings#delivery-mechanisms) o archivo `managed-settings.json` del sistema para aplicar comportamiento de cierre por error en el primer lanzamiento, antes de que llegue cualquier carga útil de servidor. En Claude Code v2.1.191 o posterior, esta bandera es una excepción a la [regla de precedencia](#settings-precedence) anterior: Claude Code la honra cuando cualquier fuente administrada controlada por administrador la establece, incluso si también está presente una carga útil administrada por servidor en caché, por lo que no ignora un valor entregado por MDM cuando existe configuración administrada por servidor.

238 253 

239La obtención de configuración también envía un encabezado `Cache-Control: no-cache` para que los proxies HTTP intermedios no sirvan una respuesta obsoleta.254Cuando un [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, su salida reemplaza todas las demás fuentes administradas para las claves que Claude Code lee después del inicio. Para las fuentes de las que Claude Code lee esta clave, consulte [su entrada de configuración](/docs/es/settings-reference#forceremotesettingsrefresh). La entrada `policyHelper` dice de qué fuentes Claude Code lee el asistente y cuándo se ejecuta.

240 255 

241Antes de habilitar esta configuración, asegúrese de que sus políticas de red permitan la conectividad a `api.anthropic.com`. Si ese endpoint no es accesible, la CLI se cierra al inicio y los usuarios no pueden iniciar Claude Code.256La búsqueda de configuración también envía un encabezado `Cache-Control: no-cache` para que los proxies HTTP intermedios no sirvan una respuesta obsoleta.

242 257 

243Los subcomandos `claude auth` como `claude auth login` están exentos de esta comprobación y de la salida de inicio de la puerta de enlace, por lo que los usuarios pueden volver a autenticarse cuando las credenciales caducadas son la razón por la que falla la obtención de configuración.258Antes de habilitar esta configuración, asegúrese de que sus políticas de red permitan conectividad a `api.anthropic.com`. Si ese punto final es inaccesible, la CLI sale al inicio y los usuarios no pueden iniciar Claude Code.

259 

260Los subcomandos `claude auth` como `claude auth login` están exentos de esta comprobación y de la salida de inicio de la puerta de enlace, por lo que los usuarios pueden reautenticarse cuando las credenciales caducadas son la razón por la que falla la búsqueda de configuración.

244 261 

245<h3 id="security-approval-dialogs">262<h3 id="security-approval-dialogs">

246 Diálogos de aprobación de seguridad263 Diálogos de aprobación de seguridad

247</h3>264</h3>

248 265 

249Ciertas configuraciones que podrían presentar riesgos de seguridad requieren aprobación explícita del usuario antes de que Claude Code las aplique en una sesión interactiva:266Cierta configuración que podría plantear riesgos de seguridad requiere aprobación explícita del usuario antes de que Claude Code la aplique en una sesión interactiva:

250 267 

251* **Configuraciones de comandos de shell**: configuraciones que ejecutan comandos de shell, como `apiKeyHelper`, `statusLine` y `otelHeadersHelper`268* **Configuración de comandos de shell**: configuración que ejecuta comandos de shell, como `apiKeyHelper`, `statusLine` y `otelHeadersHelper`

252* **Configuraciones de binarios de sandbox**: `sandbox.bwrapPath`, `sandbox.socatPath` y `sandbox.ripgrep`. Cada una de estas configuraciones apunta a un ejecutable, y Claude Code ejecuta ese ejecutable269* **Configuración de binarios de sandbox**: `sandbox.bwrapPath`, `sandbox.socatPath` y `sandbox.ripgrep`. Cada una de estas configuraciones apunta a un ejecutable, y Claude Code ejecuta ese ejecutable

253* **Configuraciones de red y aislamiento de sandbox**: configuraciones de [sandbox](/docs/es/sandboxing) que permiten que el proxy de sandbox lea, redirija o autentique tráfico, o que debiliten el aislamiento del sandbox: `sandbox.network.tlsTerminate`, `sandbox.network.httpProxyPort`, `sandbox.network.socksProxyPort`, `sandbox.credentials`, `sandbox.allowAppleEvents`, `sandbox.enableWeakerNestedSandbox`, `sandbox.enableWeakerNetworkIsolation`, `sandbox.filesystem.disabled`, `sandbox.network.allowAllUnixSockets`, `sandbox.network.allowUnixSockets` y `sandbox.network.allowMachLookup`. Un bloque `sandbox.credentials` que contiene solo reglas `deny` no necesita aprobación, ya que restringe el sandbox sin dar al proxy una credencial. Antes de v2.1.251, Claude Code aplicaba estas configuraciones sin aprobación270* **Configuración de red y aislamiento de sandbox**: configuración de [sandbox](/docs/es/sandboxing) que permite que el proxy de sandbox lea, redirija o autentique tráfico, o que debilite el aislamiento del sandbox: `sandbox.network.tlsTerminate`, `sandbox.network.httpProxyPort`, `sandbox.network.socksProxyPort`, `sandbox.credentials`, `sandbox.allowAppleEvents`, `sandbox.enableWeakerNestedSandbox`, `sandbox.enableWeakerNetworkIsolation`, `sandbox.filesystem.disabled`, `sandbox.network.allowAllUnixSockets`, `sandbox.network.allowUnixSockets` y `sandbox.network.allowMachLookup`. Un bloque `sandbox.credentials` que contiene solo reglas `deny` no necesita aprobación, ya que restringe el sandbox sin dar al proxy una credencial. Antes de v2.1.251, Claude Code aplicaba estas configuraciones sin aprobación

254* **Variables de entorno personalizadas**: variables `env` entregadas que requieren la aprobación del usuario, como variables de proxy y URL base; consulte [Variables de entorno y el diálogo de aprobación](#environment-variables-and-the-approval-dialog)271* **Variables de entorno personalizadas**: variables `env` entregadas que requieren la aprobación del usuario, como variables de proxy y URL base; consulte [Variables de entorno y el diálogo de aprobación](#environment-variables-and-the-approval-dialog)

255* **Configuraciones de hooks**: cualquier definición de hook272* **Configuraciones de hooks**: cualquier definición de hook

256 273 

257Cuando estas configuraciones están presentes, los usuarios ven un diálogo de seguridad que explica qué se está configurando. Los usuarios deben aprobar para continuar. Si un usuario rechaza la configuración, Claude Code se cierra.274Cuando estas configuraciones están presentes, los usuarios ven un diálogo de seguridad que explica qué se está configurando. Los usuarios deben aprobar para continuar. Si un usuario rechaza la configuración, Claude Code sale.

258 275 

259Un CLAUDE.md administrado entregado a través de la clave [`claudeMd`](/docs/es/settings-reference#claudemd) no requiere aprobación, porque es texto de instrucción para Claude en lugar de un comando que Claude Code ejecuta. Claude Code aún verifica [permisos](/docs/es/permissions) para las herramientas que Claude usa mientras sigue esas instrucciones. Antes de v2.1.260, un valor `claudeMd` requería aprobación también.276Un CLAUDE.md administrado entregado a través de la clave [`claudeMd`](/docs/es/settings-reference#claudemd) no requiere aprobación, porque es texto de instrucción para Claude en lugar de un comando que Claude Code ejecuta. Claude Code aún verifica [permisos](/docs/es/permissions) para las herramientas que Claude usa mientras sigue esas instrucciones. Antes de v2.1.260, un valor `claudeMd` también requería aprobación.

260 277 

261<h4 id="approval-memory">278<h4 id="approval-memory">

262 Memoria de aprobación279 Memoria de aprobación

263</h4>280</h4>

264 281 

265Claude Code registra su aprobación en su directorio de configuración, `~/.claude` a menos que establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars). Lo que registra depende de la credencial que usa la obtención de configuración:282Claude Code registra su aprobación en su directorio de configuración, `~/.claude` a menos que establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars). Lo que registra depende de la credencial que usa la búsqueda de configuración:

266 283 

267* **Un inicio de sesión de claude.ai guardado por `/login` o `claude auth login`**: una aprobación por organización, mantenida por la cuenta que aprobó más recientemente.284* **Un inicio de sesión de claude.ai guardado por `/login` o `claude auth login`, o el [inicio de sesión de consola sin clave](/docs/es/authentication#sign-in-without-an-api-key)**: una aprobación por organización, mantenida por la cuenta que aprobó más recientemente.

268* **Un inicio de sesión de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway)**: una aprobación por puerta de enlace.285* **Un inicio de sesión de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway)**: una aprobación por puerta de enlace.

269 286 

270 Si cierra sesión e inicia sesión nuevamente en la misma puerta de enlace, Claude Code no muestra el diálogo nuevamente mientras la configuración que requiere aprobación no cambie. Claude Code lo muestra nuevamente cuando esa configuración cambia, cuando inicia sesión en una puerta de enlace diferente y cuando acepta un nuevo certificado para la misma puerta de enlace.287 Si cierra sesión e inicia sesión nuevamente en la misma puerta de enlace, Claude Code no muestra el diálogo nuevamente mientras la configuración que requiere aprobación no cambie. Claude Code lo muestra nuevamente cuando esa configuración cambia, cuando inicia sesión en una puerta de enlace diferente y cuando acepta un nuevo certificado para la misma puerta de enlace.

271 288 

272 Claude Code no guarda ninguna aprobación para una puerta de enlace de desarrollo de bucle invertido alcanzada a través de HTTP simple, por lo que el diálogo aparece nuevamente después de cada inicio de sesión.289 Claude Code no guarda aprobación para una puerta de enlace de desarrollo de bucle invertido alcanzada a través de HTTP simple, por lo que el diálogo aparece nuevamente después de cada inicio de sesión.

273* **Cualquier otra credencial**, como una clave de API o `CLAUDE_CODE_OAUTH_TOKEN`: una aprobación para la configuración entregada, mantenida con la copia en caché de la configuración en ese directorio de configuración. Claude Code muestra el diálogo nuevamente cuando la configuración que requiere aprobación cambia, y después de ejecutar `/logout` o `claude auth logout`, cualquiera de los cuales elimina la copia en caché.290* **Cualquier otra credencial**, como una clave API u `CLAUDE_CODE_OAUTH_TOKEN`: una aprobación para la configuración entregada, mantenida con la copia en caché de la configuración en ese directorio de configuración. Claude Code muestra el diálogo nuevamente cuando la configuración que requiere aprobación cambia, y después de ejecutar `/logout` o `claude auth logout`, cualquiera de los cuales elimina la copia en caché.

291 

292Una aprobación para `sandbox.credentials` o `sandbox.network.tlsTerminate` también cubre las entradas [`sandbox.network.allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains) en esa misma configuración entregada, porque ambas configuraciones actúan en esa lista de permitidos. El diálogo aparece nuevamente cuando su administrador agrega o elimina una de esas entradas, aunque `sandbox.network.allowedDomains` no requiera aprobación por sí sola.

274 293 

275Con un inicio de sesión de claude.ai guardado:294Con un inicio de sesión de claude.ai guardado:

276 295 


280Claude Code no siempre puede mostrar el diálogo. Cada caso a continuación dice qué configuración se aplica cuando no puede y cuándo ve el diálogo a continuación:299Claude Code no siempre puede mostrar el diálogo. Cada caso a continuación dice qué configuración se aplica cuando no puede y cuándo ve el diálogo a continuación:

281 300 

282* **Una sesión interactiva que no puede mostrar el diálogo**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. El diálogo aparece en la siguiente sesión que puede mostrarlo. Requiere Claude Code v2.1.211 o posterior.301* **Una sesión interactiva que no puede mostrar el diálogo**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. El diálogo aparece en la siguiente sesión que puede mostrarlo. Requiere Claude Code v2.1.211 o posterior.

283* **`claude install` o `claude update`**: Claude Code no muestra el diálogo durante ninguno de los comandos. El comando se ejecuta con la última configuración aprobada, y el diálogo aparece en su siguiente sesión interactiva. Si Claude Code espera la obtención de configuración al inicio, como con [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) establecido o en una implementación de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway), muestra el diálogo durante el comando en su lugar, y una ejecución de instalación desde una tubería falla; consulte [`Raw mode is not supported` durante la instalación](/docs/es/troubleshoot-install#raw-mode-is-not-supported-during-install). Antes de v2.1.246, Claude Code intentaba mostrar el diálogo durante estos comandos también.302* **`claude install` o `claude update`**: Claude Code no muestra el diálogo durante ninguno de los comandos. El comando se ejecuta con la última configuración aprobada, y el diálogo aparece en su siguiente sesión interactiva. Si Claude Code espera la búsqueda de configuración al inicio, como con [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) establecido o en una implementación de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway), muestra el diálogo durante el comando en su lugar, y una ejecución de instalación desde una tubería falla; consulte [`Raw mode is not supported` durante la instalación](/docs/es/troubleshoot-install#raw-mode-is-not-supported-during-install). Antes de v2.1.246, Claude Code intentaba mostrar el diálogo durante estos comandos también.

284* **Un error cierra el diálogo antes de que responda**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. Lo muestra nuevamente en la siguiente sesión que puede mostrarlo.303* **Un error cierra el diálogo antes de que responda**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. Lo muestra nuevamente en la siguiente sesión que puede mostrarlo.

285* **Una ejecución no interactiva**, como `claude -p` o una sesión del SDK de Agent: Claude Code no puede mostrar el diálogo, por lo que cuando la configuración entregada requeriría aprobación, la aplica solo para esa ejecución. No la registra como aprobada ni la escribe en la [caché local](#fetch-and-caching-behavior), y la siguiente sesión interactiva muestra el diálogo. Hasta que un usuario apruebe en una sesión interactiva, cada ejecución no interactiva obtiene la configuración nuevamente al inicio. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada, por lo que las sesiones interactivas posteriores nunca mostraban el diálogo para ellas.304* **Una ejecución no interactiva**, como `claude -p` o una sesión del SDK del Agente: Claude Code no puede mostrar el diálogo, por lo que cuando la configuración entregada requeriría aprobación, la aplica solo para esa ejecución. No la registra como aprobada ni la escribe en el [caché local](#fetch-and-caching-behavior), y la siguiente sesión interactiva muestra el diálogo. Hasta que un usuario apruebe en una sesión interactiva, cada ejecución no interactiva obtiene la configuración nuevamente al inicio. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada, por lo que las sesiones interactivas posteriores nunca mostraban el diálogo para ellas.

286 305 

287<h4 id="environment-variables-and-the-approval-dialog">306<h4 id="environment-variables-and-the-approval-dialog">

288 Variables de entorno y el diálogo de aprobación307 Variables de entorno y el diálogo de aprobación


296* Opciones de interfaz de usuario de terminal y accesibilidad315* Opciones de interfaz de usuario de terminal y accesibilidad

297* Límites numéricos, presupuestos y tiempos de espera316* Límites numéricos, presupuestos y tiempos de espera

298 317 

299Otras variables entregadas pueden requerir la aprobación del usuario antes de que entren en vigor; un valor de proxy, URL base o `OTEL_EXPORTER_OTLP_ENDPOINT` no vacío siempre lo hace. Cuando una variable entregada necesita aprobación, el diálogo la nombra, por lo que el usuario ve exactamente qué está pidiendo la política que establezca. Antes de v2.1.218, Claude Code aplicaba menos variables sin preguntar al usuario, por lo que configuraciones como `DISABLE_AUTO_COMPACT` activaban el diálogo en cualquier valor no vacío.318Otras variables entregadas pueden requerir la aprobación del usuario antes de que entren en vigor; un valor de proxy, URL base u `OTEL_EXPORTER_OTLP_ENDPOINT` no vacío siempre lo hace. Cuando una variable entregada necesita aprobación, el diálogo la nombra, por lo que el usuario ve exactamente qué es lo que la política le pide que establezca. Antes de v2.1.218, Claude Code aplicaba menos variables sin preguntar al usuario, por lo que configuraciones como `DISABLE_AUTO_COMPACT` activaban el diálogo en cualquier valor no vacío.

300 319 

301Claude Code decide si cuatro conmutadores de privacidad necesitan aprobación por el valor entregado en lugar de por el nombre de la variable: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY` y `DO_NOT_TRACK`. Un valor verdadero como `1` o `true` solo desactiva el seguimiento, la notificación de errores u otro tráfico no esencial, por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.218, todos excepto `DO_NOT_TRACK` se aplicaban sin aprobación en cualquier valor, y `DO_NOT_TRACK` activaba el diálogo en cualquier valor no vacío.320Claude Code decide si cuatro conmutadores de privacidad necesitan aprobación por el valor entregado en lugar de por el nombre de la variable: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY` y `DO_NOT_TRACK`. Un valor verdadero como `1` o `true` solo desactiva el seguimiento, la notificación de errores u otro tráfico no esencial, por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.218, todos excepto `DO_NOT_TRACK` se aplicaban sin aprobación en cualquier valor, y `DO_NOT_TRACK` activaba el diálogo en cualquier valor no vacío.

302 321 

303Claude Code también decide si [`API_FORCE_IDLE_TIMEOUT`](/docs/es/env-vars) necesita aprobación por el valor entregado: un valor verdadero solo activa el [tiempo de espera de inactividad del cuerpo](/docs/es/network-config#streaming-idle-watchdogs), por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.248, cualquier valor no vacío activaba el diálogo.322Claude Code también decide si [`API_FORCE_IDLE_TIMEOUT`](/docs/es/env-vars) necesita aprobación por el valor entregado: un valor verdadero solo activa el [tiempo de espera de inactividad del cuerpo](/docs/es/network-config#streaming-idle-watchdogs), por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.248, cualquier valor no vacío activaba el diálogo.

304 323 

305Si [`ANTHROPIC_CUSTOM_HEADERS`](/docs/es/env-vars#variables) necesita aprobación también depende del valor entregado. Los encabezados que solo etiquetan solicitudes, como `Accept-Language`, se aplican sin el diálogo. Una línea que nombra una credencial, un selector de organización o inquilino, un enrutamiento o anulación de host, o un encabezado de comportamiento de API, como `Authorization`, `X-Api-Key`, `Host`, `anthropic-beta` o los encabezados `X-Amzn-Bedrock-*`, requiere aprobación. También lo hace una línea cuyo nombre no es un token de encabezado HTTP válido, o cuyo valor contiene un carácter que un encabezado HTTP no puede llevar. La comprobación coincide con palabras dentro del nombre del encabezado, por lo que `X-Client-Version`, que contiene `client` y `version`, también requiere aprobación. Antes de v2.1.251, cualquier valor `ANTHROPIC_CUSTOM_HEADERS` se aplicaba sin él.324Si [`ANTHROPIC_CUSTOM_HEADERS`](/docs/es/env-vars#variables) necesita aprobación también depende del valor entregado. Los encabezados que solo etiquetan solicitudes, como `Accept-Language`, se aplican sin el diálogo. Una línea que nombra una credencial, un selector de organización o inquilino, un enrutamiento o anulación de host, o un encabezado de comportamiento de API, como `Authorization`, `X-Api-Key`, `Host`, `anthropic-beta` o los encabezados `X-Amzn-Bedrock-*`, requiere aprobación. Una línea también requiere aprobación cuando su nombre no es un token de encabezado HTTP válido o su valor contiene un carácter que un encabezado HTTP no puede llevar. La comprobación coincide con palabras dentro del nombre del encabezado, por lo que `X-Client-Version`, que contiene `client` y `version`, también requiere aprobación. Antes de v2.1.251, cualquier valor `ANTHROPIC_CUSTOM_HEADERS` se aplicaba sin él.

325 

326Un valor falso como `0` o `false` para [`ENABLE_BETA_TRACING_DETAILED`](/docs/es/env-vars#variables) o [`OTEL_LOG_RAW_API_BODIES`](/docs/es/env-vars#variables) se aplica sin el diálogo, porque solo desactiva el rastreo detallado o la captura de cuerpo de API sin procesar. Cualquier otro valor no vacío para cualquiera de las variables requiere aprobación.

306 327 

307<h2 id="platform-availability">328<h2 id="platform-availability">

308 Disponibilidad de plataforma329 Disponibilidad de plataforma

309</h2>330</h2>

310 331 

311La configuración administrada por servidor requiere una conexión directa a `api.anthropic.com`, y la entrega requiere que la sesión se autentique con un inicio de sesión OAuth de organización o empresa, un token OAuth suministrado a través de `CLAUDE_CODE_OAUTH_TOKEN`, o una clave API configurada directamente. Las claves devueltas por un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) no activan la búsqueda de configuración.332La configuración administrada por servidor requiere una conexión directa a `api.anthropic.com`. La entrega también requiere que la sesión se autentique con una de estas credenciales:

333 

334* Un inicio de sesión OAuth de organización o empresa

335* Un token OAuth suministrado a través de `CLAUDE_CODE_OAUTH_TOKEN`

336* Una clave API configurada directamente

337* Un [perfil de Anthropic](/docs/es/authentication#anthropic-profiles-and-federation-credentials) `user_oauth`, a menos que el perfil establezca una `base_url` diferente a la API de Anthropic. Requiere Claude Code v2.1.257 o posterior.

338 

339Ni las claves devueltas por un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) ni las credenciales de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) activan la búsqueda de configuración.

312 340 

313En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude Code no obtiene la configuración administrada por servidor de la consola de administración de claude.ai, incluso cuando el usuario inicia sesión con una cuenta de organización o empresa. [Dónde y cuándo se aplica una política](/docs/es/managed-settings#where-and-when-a-policy-applies) cubre qué política llega a las sesiones de Cowork en la máquina del usuario y las sesiones remotas de Cowork.341En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude Code no obtiene la configuración administrada por servidor de la consola de administración de claude.ai, incluso cuando el usuario inicia sesión con una cuenta de organización o empresa. [Dónde y cuándo se aplica una política](/docs/es/managed-settings#where-and-when-a-policy-applies) cubre qué política llega a las sesiones de Cowork en la máquina del usuario y las sesiones remotas de Cowork.

314 342 


335La configuración administrada por servidor proporciona aplicación de políticas centralizada, pero funciona como un control del lado del cliente, no como un límite de seguridad. En dispositivos no administrados, un usuario no necesita acceso de administrador o sudo para omitirla.363La configuración administrada por servidor proporciona aplicación de políticas centralizada, pero funciona como un control del lado del cliente, no como un límite de seguridad. En dispositivos no administrados, un usuario no necesita acceso de administrador o sudo para omitirla.

336 364 

337| Escenario | Comportamiento |365| Escenario | Comportamiento |

338| :-------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |366| :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

339| El usuario edita el archivo de configuración en caché | El archivo manipulado se aplica al inicio, y la siguiente obtención del servidor restaura la configuración correcta, excepto para las [claves que se aplican solo en el siguiente lanzamiento](#fetch-and-caching-behavior), como `model` o una variable agregada al bloque `env`, que permanecen en vigor hasta el relanzamiento. En Claude Code v2.1.198 o posterior, las [variables de entorno retenidas](#fetch-and-caching-behavior) en el bloque `env` no se aplican hasta que el servidor confirma la carga útil. En Claude Code v2.1.242 o posterior, un [`modelPricing`](/docs/es/settings-reference#modelpricing) en caché tampoco se aplica hasta que el servidor confirma la carga útil, por lo que las cifras de costo están al precio de lista hasta entonces |367| El usuario edita el archivo de configuración en caché | El archivo manipulado se aplica al inicio, excepto para los [valores que Claude Code retiene](#fetch-and-caching-behavior) hasta que el servidor confirma la carga útil. La siguiente obtención del servidor restaura la configuración correcta, excepto para las [claves que se aplican solo en el siguiente lanzamiento](#fetch-and-caching-behavior), como `model` o una variable agregada al bloque `env`, que permanecen en vigor hasta el relanzamiento |

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

341| 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 |369| 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 |

342| 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 |370| 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 |

343| 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 y aún aplica cualquier [configuración administrada por endpoint](/docs/es/managed-settings#delivery-mechanisms) en el dispositivo. En Claude Code v2.1.198 o posterior, las [variables de entorno retenidas](#fetch-and-caching-behavior) en el bloque `env` en caché no se aplican en caso de fallo de obtención. En Claude Code v2.1.242 o posterior, un [`modelPricing`](/docs/es/settings-reference#modelpricing) en caché tampoco se aplica en caso de fallo de obtención, por lo que las cifras de costo permanecen al precio de lista hasta que una obtención tenga éxito. El resto de la caché aún se aplica. 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` |371| 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](/docs/es/managed-settings#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` |

344| El usuario se autentica con una organización diferente | La configuración no se entrega para cuentas fuera de la organización administrada |372| El usuario se autentica con una organización diferente | La configuración no se entrega para cuentas fuera de la organización administrada |

345| 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 |373| 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 |

346| 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 |374| 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 +6 −5

Details

470 470 

471Para cambiar una configuración para usted en un proyecto sin cambiarla para sus compañeros de equipo, guárdela en `.claude/settings.local.json` dentro del proyecto. Claude Code aplica ese archivo sobre el `.claude/settings.json` confirmado, por lo que si el archivo de su equipo establece `"model": "claude-sonnet-5"` y usted quiere Opus, ponga `"model": "claude-opus-4-8"` en su archivo local y solo sus sesiones cambian.471Para cambiar una configuración para usted en un proyecto sin cambiarla para sus compañeros de equipo, guárdela en `.claude/settings.local.json` dentro del proyecto. Claude Code aplica ese archivo sobre el `.claude/settings.json` confirmado, por lo que si el archivo de su equipo establece `"model": "claude-sonnet-5"` y usted quiere Opus, ponga `"model": "claude-opus-4-8"` en su archivo local y solo sus sesiones cambian.

472 472 

473Tres cosas que saber sobre el archivo local:473Claude Code también escribe en este archivo, lo mantiene fuera de sus confirmaciones, y aplica sus reglas allow sin el paso de confianza:

474 474 

475* **Claude Code también lo escribe.** Cuando Claude pide permiso para ejecutar un comando Bash y elige "Sí, y no preguntes de nuevo", Claude Code guarda esa [aprobación de permiso](/docs/es/permissions#permission-system) aquí como una regla `allow`.475* **Claude Code también lo escribe.** Cuando Claude pide permiso para ejecutar un comando Bash y elige "Sí, y no preguntes de nuevo", Claude Code guarda esa [aprobación de permiso](/docs/es/permissions#permission-system) aquí como una regla `allow`.

476* **No necesita gitignore usted mismo, a menos que lo haya creado a mano.** La primera vez que Claude Code escribe el archivo en un repositorio de git que aún no lo ignora, agrega `**/.claude/settings.local.json` a su archivo de exclusiones global de git, por lo que el archivo se mantiene fuera de sus confirmaciones en cada repositorio. Ese archivo es `core.excludesFile` cuando su configuración global de git lo establece en una ruta absoluta o con prefijo `~`; de lo contrario es `$XDG_CONFIG_HOME/git/ignore`, o `~/.config/git/ignore` cuando `XDG_CONFIG_HOME` no está establecido. Si creó el archivo a mano y Claude Code aún no ha escrito en él, agréguelo a `.gitignore` usted mismo.476* **No necesita gitignore usted mismo, a menos que lo haya creado a mano.** La primera vez que Claude Code escribe el archivo en un repositorio de git que aún no lo ignora, agrega `**/.claude/settings.local.json` a su archivo de exclusiones global de git, por lo que el archivo se mantiene fuera de sus confirmaciones en cada repositorio. Ese archivo es `core.excludesFile` cuando su configuración global de git lo establece en una ruta absoluta o con prefijo `~`; de lo contrario es `$XDG_CONFIG_HOME/git/ignore`, o `~/.config/git/ignore` cuando `XDG_CONFIG_HOME` no está establecido. Si creó el archivo a mano y Claude Code aún no ha escrito en él, agréguelo a `.gitignore` usted mismo.


765 765 

766Dos cosas mantienen una clave en `.claude/settings.json` de aplicarse para todos los que la clonan:766Dos cosas mantienen una clave en `.claude/settings.json` de aplicarse para todos los que la clonan:

767 767 

768* **Claude Code ignora la clave en un archivo de repositorio.** Busque `User, local, or managed`, `User or managed`, `Managed`, o `Global config` en la columna Scope del [índice de configuración](/docs/es/settings-reference#settings-index); esas claves nunca se aplican desde el archivo compartido, aparte de [`autoContinueAtUsageLimit`](/docs/es/settings-reference#autocontinueatusagelimit), que un archivo de repositorio aún puede apagar: mientras el archivo establece la clave y ningún usuario, `--settings`, o valor administrado lo hace, Claude Code lee la configuración como apagada. Las claves `Global config` se aplican solo desde `~/.claude.json`.768* **Claude Code ignora la clave en un archivo de repositorio.** Busque `User, local, or managed`, `User or managed`, `Managed`, o `Global config` en la columna Scope del [índice de configuración](/docs/es/settings-reference#settings-index). Esas claves nunca se aplican desde el archivo compartido, aparte de algunas que un archivo de repositorio aún puede apagar. Cada una de esas entradas lo dice en su línea de Scope. Las claves `Global config` se aplican solo desde `~/.claude.json`.

769* **La clave espera confianza.** Las reglas `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces` y la mayoría de valores [`env`](/docs/es/settings-reference#env) se aplican solo después de que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust). Hasta entonces aún ven avisos y no obtienen plugins de un marketplace que el archivo declara. Las reglas `deny` y `ask` se aplican de inmediato.769* **La clave espera confianza.** Las reglas `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces` y la mayoría de valores [`env`](/docs/es/settings-reference#env) se aplican solo después de que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust). Hasta entonces aún ven avisos y no obtienen plugins de un marketplace que el archivo declara. Las reglas `deny` y `ask` se aplican de inmediato.

770 770 

771<h4 id="permission-rules-combine-differently-than-you-expected">771<h4 id="permission-rules-combine-differently-than-you-expected">


792| [`crossSessionInbound`](/docs/es/settings-reference#crosssessioninbound) | Un valor más estricto de `.claude/settings.json` o `.claude/settings.local.json`, en la escalera `accept` \< `hold` \< `refuse` | Honrado sobre valores administrados, `--settings` y de usuario; un valor de proyecto o local que no es más estricto se ignora |792| [`crossSessionInbound`](/docs/es/settings-reference#crosssessioninbound) | Un valor más estricto de `.claude/settings.json` o `.claude/settings.local.json`, en la escalera `accept` \< `hold` \< `refuse` | Honrado sobre valores administrados, `--settings` y de usuario; un valor de proyecto o local que no es más estricto se ignora |

793| [`useAutoModeDuringPlan`](/docs/es/settings-reference#useautomodeduringplan) | `false` de cualquier fuente administrada, `--settings`, `~/.claude/settings.json`, o `.claude/settings.local.json` | Honrado incluso cuando la fuente administrada ganadora establece `true`; un `false` en `.claude/settings.json` se ignora |793| [`useAutoModeDuringPlan`](/docs/es/settings-reference#useautomodeduringplan) | `false` de cualquier fuente administrada, `--settings`, `~/.claude/settings.json`, o `.claude/settings.local.json` | Honrado incluso cuando la fuente administrada ganadora establece `true`; un `false` en `.claude/settings.json` se ignora |

794| [`syncClaudeAiSkills`](/docs/es/settings-reference#syncclaudeaiskills) | `false` de cualquier fuente administrada, `--settings`, `~/.claude/settings.json`, o `.claude/settings.local.json` | Honrado incluso cuando la fuente administrada ganadora establece `true`; un `false` en `.claude/settings.json` se ignora |794| [`syncClaudeAiSkills`](/docs/es/settings-reference#syncclaudeaiskills) | `false` de cualquier fuente administrada, `--settings`, `~/.claude/settings.json`, o `.claude/settings.local.json` | Honrado incluso cuando la fuente administrada ganadora establece `true`; un `false` en `.claude/settings.json` se ignora |

795| [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) | `false` de cualquier fuente administrada, `--settings`, `~/.claude/settings.json`, o `.claude/settings.local.json` | Honrado incluso cuando la fuente administrada ganadora establece `true`; un `false` en `.claude/settings.json` se ignora |

795| [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) | Un límite más bajo de cualquier ámbito, incluyendo `--settings` | Honrado incluso cuando las configuraciones administradas que Claude Code aplica establecen un límite más alto; se aplica el límite más bajo. Requiere Claude Code v2.1.267 o posterior |796| [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) | Un límite más bajo de cualquier ámbito, incluyendo `--settings` | Honrado incluso cuando las configuraciones administradas que Claude Code aplica establecen un límite más alto; se aplica el límite más bajo. Requiere Claude Code v2.1.267 o posterior |

796 797 

797Una aplicación que ejecuta Claude Code dentro de sí misma y establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars) también es una excepción. Claude Code toma la configuración de modelo de esa aplicación sobre las claves `model`, `fallbackModel`, `modelPicker`, y `modelOverrides` de cada fuente administrada, y sobre las variables de selección de modelo en un bloque `env` administrado, como `ANTHROPIC_MODEL` y la familia `ANTHROPIC_DEFAULT_*_MODEL`. Claude Code mantiene una lista blanca [`availableModels`](/docs/es/settings-reference#availablemodels) administrada en vigor a menos que la aplicación suministre la suya.798Una aplicación que ejecuta Claude Code dentro de sí misma y establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars) también es una excepción. Claude Code toma la configuración de modelo de esa aplicación sobre las claves `model`, `fallbackModel`, `modelPicker`, y `modelOverrides` de cada fuente administrada, y sobre las variables de selección de modelo en un bloque `env` administrado, como `ANTHROPIC_MODEL` y la familia `ANTHROPIC_DEFAULT_*_MODEL`. Claude Code mantiene una lista blanca [`availableModels`](/docs/es/settings-reference#availablemodels) administrada en vigor a menos que la aplicación suministre la suya.


800 Configuraciones en sesiones en la nube801 Configuraciones en sesiones en la nube

801</h2>802</h2>

802 803 

803Una sesión en la nube, en [Claude Code en la web](/docs/es/claude-code-on-the-web) o desde [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-web), se ejecuta en un [entorno en la nube](/docs/es/cloud-environments) en un clon fresco de su repositorio, no en su máquina. Eso cambia qué configuraciones lo alcanzan:804Una [sesión en la nube](/docs/es/claude-code-on-the-web) se ejecuta en un [entorno en la nube](/docs/es/cloud-environments) en un clon fresco de su repositorio, no en su máquina. Eso cambia qué configuraciones lo alcanzan:

804 805 

805* **Configuraciones compartidas de proyecto** (`.claude/settings.json`): se leen, porque el archivo es parte del clon. Confirme una configuración allí para aplicarla en sesiones en la nube.806* **Configuraciones compartidas de proyecto** (`.claude/settings.json`): se leen en una sesión con un repositorio, porque el archivo es parte del clon y la sesión comienza dentro de él. Confirme una configuración allí para aplicarla en esas sesiones. Una sesión con varios repositorios comienza por encima de los clones, por lo que de cada `.claude/settings.json` del repositorio solo carga los plugins y mercados que el archivo declara, no reglas de permisos, hooks, `env` u otras claves; consulte [Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup).

806* **Configuraciones de usuario y proyecto local** (`~/.claude/settings.json` y `.claude/settings.local.json`): no se leen. Ambas permanecen en su máquina, y el archivo local no está en el clon.807* **Configuraciones de usuario y proyecto local** (`~/.claude/settings.json` y `.claude/settings.local.json`): no se leen. Ambas permanecen en su máquina, y el archivo local no está en el clon.

807* **Configuraciones administradas**: solo [configuraciones administradas por servidor](/docs/es/server-managed-settings) alcanzan una sesión en la nube; un archivo `managed-settings.json` o perfil MDM en su dispositivo no. Un [entorno autohospedado](/docs/es/self-hosted-environments) también lee el archivo de configuraciones administradas en su imagen de ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice cuándo se aplica ese archivo.808* **Configuraciones administradas**: solo [configuraciones administradas por servidor](/docs/es/server-managed-settings) alcanzan una sesión en la nube; un archivo `managed-settings.json` o perfil MDM en su dispositivo no. Un [entorno autohospedado](/docs/es/self-hosted-environments) también lee el archivo de configuraciones administradas en su imagen de ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice cuándo se aplica ese archivo.

808* **`/config`**: en la web, abre la sección Claude Code de su configuración de claude.ai en su lugar de cambiar un valor. Para cambiar una configuración para una sesión en la nube, establezca una [variable de entorno](/docs/es/cloud-environments#set-environment-variables) en el entorno o confirme la clave en el `.claude/settings.json` del repositorio.809* **`/config`**: en su navegador en claude.ai/code, abre la sección Claude Code de su configuración de claude.ai en lugar de cambiar un valor. Para cambiar una configuración para una sesión en la nube, establezca una [variable de entorno](/docs/es/cloud-environments#set-environment-variables) en el entorno, o en una sesión con un repositorio, confirme la clave en el `.claude/settings.json` de ese repositorio.

809 810 

810[Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup) enumera el resto: `CLAUDE.md`, skills, servidores MCP, plugins y credenciales.811[Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup) enumera el resto: `CLAUDE.md`, skills, servidores MCP, plugins y credenciales.

811 812 

Details

96 96 

97La configuración compartida de un equipo, confirmada en el repositorio para que todos los que lo clonan obtengan los mismos permisos, hooks, telemetría y marketplace de plugins. Guarde un archivo como este en `.claude/settings.json` en la parte superior del repositorio. Lo que debe saber antes de confirmar uno:97La configuración compartida de un equipo, confirmada en el repositorio para que todos los que lo clonan obtengan los mismos permisos, hooks, telemetría y marketplace de plugins. Guarde un archivo como este en `.claude/settings.json` en la parte superior del repositorio. Lo que debe saber antes de confirmar uno:

98 98 

99* **Las sesiones en la nube también lo leen.** Una [sesión en la nube](/docs/es/settings#settings-in-cloud-sessions) en Claude Code en la web comienza desde un clon del repositorio, por lo que el archivo confirmado también se aplica allí.99* **Las sesiones en la nube también lo leen.** Una [sesión en la nube](/docs/es/settings#settings-in-cloud-sessions) comienza desde un clon del repositorio, por lo que el archivo confirmado también se aplica allí.

100* **Las reglas de permiso esperan confianza.** Las reglas de permiso y las entradas de `extraKnownMarketplaces` entran en vigor después de que cada persona [confía en esta carpeta misma](/docs/es/permissions#project-allow-rules-and-workspace-trust), no solo en una carpeta principal; las reglas de denegación y pregunta se aplican en cada sesión, confiable o no.100* **Las reglas de permiso esperan confianza.** Las reglas de permiso y las entradas de `extraKnownMarketplaces` entran en vigor después de que cada persona [confía en esta carpeta misma](/docs/es/permissions#project-allow-rules-and-workspace-trust), no solo en una carpeta principal; las reglas de denegación y pregunta se aplican en cada sesión, confiable o no.

101* **El hook es un script en el repositorio.** El hook de este archivo ejecuta `.claude/hooks/block-rm.sh`; [Cómo se resuelve un hook](/docs/es/hooks#how-a-hook-resolves) explica cómo escribirlo.101* **El hook es un script en el repositorio.** El hook de este archivo ejecuta `.claude/hooks/block-rm.sh`; [Cómo se resuelve un hook](/docs/es/hooks#how-a-hook-resolves) explica cómo escribirlo.

102* **Las reglas coinciden con el comando y la ruta tal como se escriben.** `Bash(git push *)` no coincide con [`git -C . push`](/docs/es/permissions#bash-rule-limits). `Read(./.env)` por sí solo detiene las herramientas de archivo y los comandos que nombran el archivo, como `cat .env`, pero no [`grep -r` ejecutado sobre el directorio](/docs/es/permissions#read-and-edit); el bloque `sandbox` en este archivo cierra esa brecha, porque el sandbox [añade sus rutas de denegación de `Read`](/docs/es/settings-reference#sandbox-filesystem-denyread) a lo que ningún comando en sandbox puede leer.102* **Las reglas coinciden con el comando y la ruta tal como se escriben.** `Bash(git push *)` no coincide con [`git -C . push`](/docs/es/permissions#bash-rule-limits). `Read(./.env)` por sí solo detiene las herramientas de archivo y los comandos que nombran el archivo, como `cat .env`, pero no [`grep -r` ejecutado sobre el directorio](/docs/es/permissions#read-and-edit); el bloque `sandbox` en este archivo cierra esa brecha, porque el sandbox [añade sus rutas de denegación de `Read`](/docs/es/settings-reference#sandbox-filesystem-denyread) a lo que ningún comando en sandbox puede leer.

Details

610| [`attribution.sessionUrl`](#attribution-sessionurl) | Omita el enlace de sesión de claude.ai de los commits de [nube](/docs/es/claude-code-on-the-web) y [Control Remoto](/docs/es/remote-control) | Git y atribución | Cualquier archivo |610| [`attribution.sessionUrl`](#attribution-sessionurl) | Omita el enlace de sesión de claude.ai de los commits de [nube](/docs/es/claude-code-on-the-web) y [Control Remoto](/docs/es/remote-control) | Git y atribución | Cualquier archivo |

611| [`autoCompactEnabled`](#autocompactenabled) | Desactive o active la [compactación automática](/docs/es/context-window) | Memoria y contexto | Cualquier archivo |611| [`autoCompactEnabled`](#autocompactenabled) | Desactive o active la [compactación automática](/docs/es/context-window) | Memoria y contexto | Cualquier archivo |

612| [`autoCompactWindow`](#autocompactwindow) | Establezca qué tan lleno se llena el contexto antes de que Claude Code [compacte](/docs/es/context-window) | Memoria y contexto | Cualquier archivo |612| [`autoCompactWindow`](#autocompactwindow) | Establezca qué tan lleno se llena el contexto antes de que Claude Code [compacte](/docs/es/context-window) | Memoria y contexto | Cualquier archivo |

613| [`autoConnectIde`](#autoconnectide) | Conéctese automáticamente a un IDE [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#from-external-terminals) en ejecución desde una terminal externa | Configuración de configuración global | Configuración global |613| [`autoConnectIde`](#autoconnectide) | Conéctese automáticamente a un IDE [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#from-external-terminals) en ejecución desde una terminal externa | Configuración global | Configuración global |

614| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Espere en la sesión abierta y [continúe la tarea automáticamente](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) después de que se restablezca un límite de uso de claude.ai | Interfaz y terminal | Usuario o administrado |614| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Espere en la sesión abierta y [continúe la tarea automáticamente](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) después de que se restablezca un límite de uso de claude.ai | Interfaz y terminal | Usuario o administrado |

615| [`autoInstallIdeExtension`](#autoinstallideextension) | Desactive la instalación automática de la [extensión IDE](/docs/es/vs-code#install-the-extension) desde una terminal de VS Code | Configuración de configuración global | Configuración global |615| [`autoInstallIdeExtension`](#autoinstallideextension) | Desactive la instalación automática de la [extensión IDE](/docs/es/vs-code#install-the-extension) desde una terminal de VS Code | Configuración global | Configuración global |

616| [`autoMemoryDirectory`](#automemorydirectory) | Almacene [memoria automática](/docs/es/memory#auto-memory) en un directorio que elija | Memoria y contexto | Cualquier archivo |616| [`autoMemoryDirectory`](#automemorydirectory) | Almacene [memoria automática](/docs/es/memory#auto-memory) en un directorio que elija | Memoria y contexto | Cualquier archivo |

617| [`autoMemoryEnabled`](#automemoryenabled) | Desactive o active la [memoria automática](/docs/es/memory#auto-memory) | Memoria y contexto | Cualquier archivo |617| [`autoMemoryEnabled`](#automemoryenabled) | Desactive o active la [memoria automática](/docs/es/memory#auto-memory) | Memoria y contexto | Cualquier archivo |

618| [`autoMode`](#automode) | Agregue sus propias reglas de permitir y denegar al clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) | Configuración de permisos | Usuario o administrado |618| [`autoMode`](#automode) | Agregue sus propias reglas de permitir y denegar al clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) | Configuración de permisos | Usuario o administrado |


624| [`awsAuthRefresh`](#awsauthrefresh) | Actualice las [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) expiradas en `.aws` con su propio comando | Autenticación y proveedores | Cualquier archivo |624| [`awsAuthRefresh`](#awsauthrefresh) | Actualice las [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) expiradas en `.aws` con su propio comando | Autenticación y proveedores | Cualquier archivo |

625| [`awsCredentialExport`](#awscredentialexport) | Suministre [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) como JSON desde su propio comando | Autenticación y proveedores | Cualquier archivo |625| [`awsCredentialExport`](#awscredentialexport) | Suministre [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) como JSON desde su propio comando | Autenticación y proveedores | Cualquier archivo |

626| [`axScreenReader`](#axscreenreader) | Represente [salida amigable con lectores de pantalla](/docs/es/accessibility) | Interfaz y terminal | Cualquier archivo |626| [`axScreenReader`](#axscreenreader) | Represente [salida amigable con lectores de pantalla](/docs/es/accessibility) | Interfaz y terminal | Cualquier archivo |

627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registre los [archivos que cambió un comando Bash](/docs/es/hooks#bash) en cada modo de permisos | Interfaz y terminal | Usuario o administrado |

627| [`bashOutputMaxChars`](#bashoutputmaxchars) | Establezca cuánta [salida](/docs/es/tools-reference#output-limits) de un comando exitoso recibe Claude en línea | Memoria y contexto | Cualquier archivo |628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Establezca cuánta [salida](/docs/es/tools-reference#output-limits) de un comando exitoso recibe Claude en línea | Memoria y contexto | Cualquier archivo |

628| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquee [fuentes de marketplace de plugins](/docs/es/plugin-marketplaces) para su organización | Plugins y skills | Administrado |629| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquee [fuentes de marketplace de plugins](/docs/es/plugin-marketplaces) para su organización | Plugins y skills | Administrado |

629| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenga las herramientas de Claude fuera de las páginas externas en el panel del navegador [escritorio](/docs/es/desktop) | Herramientas | Administrado |630| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenga las herramientas de Claude fuera de las páginas externas en el panel del navegador [escritorio](/docs/es/desktop) | Herramientas | Administrado |


632| [`claudeMdExcludes`](#claudemdexcludes) | Omita archivos específicos de [CLAUDE.md](/docs/es/memory#exclude-specific-claude-md-files) cuando se carga la memoria | Memoria y contexto | Cualquier archivo |633| [`claudeMdExcludes`](#claudemdexcludes) | Omita archivos específicos de [CLAUDE.md](/docs/es/memory#exclude-specific-claude-md-files) cuando se carga la memoria | Memoria y contexto | Cualquier archivo |

633| [`cleanupPeriodDays`](#cleanupperioddays) | Elija cuántos días Claude Code mantiene [transcripciones](/docs/es/data-usage#data-retention) antes de eliminarlas | Privacidad y telemetría | Cualquier archivo |634| [`cleanupPeriodDays`](#cleanupperioddays) | Elija cuántos días Claude Code mantiene [transcripciones](/docs/es/data-usage#data-retention) antes de eliminarlas | Privacidad y telemetría | Cualquier archivo |

634| [`companyAnnouncements`](#companyannouncements) | Muestre los anuncios de su organización al inicio | Interfaz y terminal | Cualquier archivo |635| [`companyAnnouncements`](#companyannouncements) | Muestre los anuncios de su organización al inicio | Interfaz y terminal | Cualquier archivo |

635| [`copyOnSelect`](#copyonselect) | Desactive la copia automática del texto que selecciona con el ratón en la [representación de pantalla completa](/docs/es/fullscreen#use-the-mouse) y vista de agente | Configuración de configuración global | Configuración global |636| [`copyOnSelect`](#copyonselect) | Desactive la copia automática del texto que selecciona con el ratón en la [representación de pantalla completa](/docs/es/fullscreen#use-the-mouse) y vista de agente | Configuración global | Configuración global |

636| [`crossSessionInbound`](#crosssessioninbound) | Elija si Claude Code entrega [mensajes de sus otras sesiones](/docs/es/cross-session-messaging#control-inbound-messages), muestra un aviso sin entregarlos, o los rechaza | Agentes, sesiones y worktrees | Cualquier archivo |637| [`crossSessionInbound`](#crosssessioninbound) | Elija si Claude Code entrega [mensajes de sus otras sesiones](/docs/es/cross-session-messaging#control-inbound-messages), muestra un aviso sin entregarlos, o los rechaza | Agentes, sesiones y worktrees | Cualquier archivo |

637| [`defaultShell`](#defaultshell) | Elija si Bash o PowerShell ejecuta los comandos shell que escribe con el prefijo [`!`](/docs/es/interactive-mode#shell-mode-with-prefix) | Interfaz y terminal | Cualquier archivo |638| [`defaultShell`](#defaultshell) | Elija si Bash o PowerShell ejecuta los comandos shell que escribe con el prefijo [`!`](/docs/es/interactive-mode#shell-mode-with-prefix) | Interfaz y terminal | Cualquier archivo |

638| [`deniedMcpServers`](#deniedmcpservers) | Bloquee [servidores MCP](/docs/es/mcp) específicos por URL, comando o nombre | MCP | Cualquier archivo |639| [`deniedMcpServers`](#deniedmcpservers) | Bloquee [servidores MCP](/docs/es/mcp) específicos por URL, comando o nombre | MCP | Cualquier archivo |

639| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Establezca un límite de antigüedad en días para [transcripciones de Claude Desktop y Cowork](/docs/es/claude-directory#cleaned-up-automatically) | Privacidad y telemetría | Usuario o administrado |640| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Establezca un límite de antigüedad en días para [transcripciones de Claude Desktop y Cowork](/docs/es/claude-directory#cleaned-up-automatically) | Privacidad y telemetría | Usuario o administrado |

640| [`dialogExpiry`](#dialogexpiry) | Establezca cuánto tiempo Claude Code espera a que [Control Remoto](/docs/es/remote-control) o un host SDK responda a un diálogo reenviado antes de cancelarlo | Interfaz y terminal | Usuario o administrado |641| [`dialogExpiry`](#dialogexpiry) | Establezca cuánto tiempo Claude Code espera a que [Control Remoto](/docs/es/remote-control) o un host SDK responda a un diálogo reenviado antes de cancelarlo | Interfaz y terminal | Usuario o administrado |

641| [`diffTool`](#difftool) | Elija si los cambios de archivo propuestos por Claude se abren en el visor de diferencias de [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#features) o permanecen en la terminal | Configuración de configuración global | Configuración global |642| [`diffTool`](#difftool) | Elija si los cambios de archivo propuestos por Claude se abren en el visor de diferencias de [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#features) o permanecen en la terminal | Configuración global | Configuración global |

642| [`disableAgentView`](#disableagentview) | Desactive los agentes de fondo y la [vista de agente](/docs/es/agent-view) | Agentes, sesiones y worktrees | Cualquier archivo |643| [`disableAgentView`](#disableagentview) | Desactive los agentes de fondo y la [vista de agente](/docs/es/agent-view) | Agentes, sesiones y worktrees | Cualquier archivo |

643| [`disableAllHooks`](#disableallhooks) | Desactive [hooks](/docs/es/hooks), una [línea de estado](/docs/es/statusline) personalizada, y un comando de [sugerencia de archivo `@`](/docs/es/interactive-mode#quick-commands) personalizado de una vez | Hooks y automatización | Cualquier archivo |644| [`disableAllHooks`](#disableallhooks) | Desactive [hooks](/docs/es/hooks), una [línea de estado](/docs/es/statusline) personalizada, y un comando de [sugerencia de archivo `@`](/docs/es/interactive-mode#quick-commands) personalizado de una vez | Hooks y automatización | Cualquier archivo |

644| [`disableArtifact`](#disableartifact) | Obsoleto; use `enableArtifact` para desactivar la [herramienta Artifact](/docs/es/artifacts) | Remoto, escritorio y notificaciones | Cualquier archivo |645| [`disableArtifact`](#disableartifact) | Obsoleto; use `enableArtifact` para desactivar la [herramienta Artifact](/docs/es/artifacts) | Remoto, escritorio y notificaciones | Cualquier archivo |


665| [`enableWorkflows`](#enableworkflows) | Active o desactive los [flujos de trabajo dinámicos](/docs/es/workflows) contra el predeterminado de su plan | Hooks y automatización | Cualquier archivo |666| [`enableWorkflows`](#enableworkflows) | Active o desactive los [flujos de trabajo dinámicos](/docs/es/workflows) contra el predeterminado de su plan | Hooks y automatización | Cualquier archivo |

666| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenga la [opción Predeterminada de `/model`](/docs/es/model-config#enforce-the-allowlist-for-the-default-model) dentro de su lista de permitidos `availableModels` | Modelo y respuestas | Cualquier archivo |667| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenga la [opción Predeterminada de `/model`](/docs/es/model-config#enforce-the-allowlist-for-the-default-model) dentro de su lista de permitidos `availableModels` | Modelo y respuestas | Cualquier archivo |

667| [`env`](#env) | Establezca [variables de entorno](/docs/es/env-vars#in-settings-files) para cada sesión y sus subprocesos | Memoria y contexto | Cualquier archivo |668| [`env`](#env) | Establezca [variables de entorno](/docs/es/env-vars#in-settings-files) para cada sesión y sus subprocesos | Memoria y contexto | Cualquier archivo |

668| [`externalEditorContext`](#externaleditorcontext) | Muestre la última respuesta de Claude como comentarios cuando presione [Ctrl+G](/docs/es/interactive-mode#general-controls) para editar | Configuración de configuración global | Configuración global |669| [`externalEditorContext`](#externaleditorcontext) | Muestre la última respuesta de Claude como comentarios cuando presione [Ctrl+G](/docs/es/interactive-mode#general-controls) para editar | Configuración global | Configuración global |

669| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registre [marketplaces](/docs/es/plugin-marketplaces) para un repositorio u organización | Plugins y skills | Cualquier archivo |670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registre [marketplaces](/docs/es/plugin-marketplaces) para un repositorio u organización | Plugins y skills | Cualquier archivo |

670| [`fallbackModel`](#fallbackmodel) | Nombre [modelos de respaldo](/docs/es/model-config#fallback-model-chains) para cuando el primario está sobrecargado | Modelo y respuestas | Cualquier archivo |671| [`fallbackModel`](#fallbackmodel) | Nombre [modelos de respaldo](/docs/es/model-config#fallback-model-chains) para cuando el primario está sobrecargado | Modelo y respuestas | Cualquier archivo |

671| [`fastMode`](#fastmode) | Active el [modo rápido](/docs/es/fast-mode) para sesiones donde está disponible | Modelo y respuestas | Cualquier archivo |672| [`fastMode`](#fastmode) | Active el [modo rápido](/docs/es/fast-mode) para sesiones donde está disponible | Modelo y respuestas | Cualquier archivo |


679| [`forceLoginMethod`](#forceloginmethod) | [Restrinja el inicio de sesión](/docs/es/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console, o una [puerta de enlace en la nube](/docs/es/claude-apps-gateway) | Autenticación y proveedores | Cualquier archivo |680| [`forceLoginMethod`](#forceloginmethod) | [Restrinja el inicio de sesión](/docs/es/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console, o una [puerta de enlace en la nube](/docs/es/claude-apps-gateway) | Autenticación y proveedores | Cualquier archivo |

680| [`forceLoginOrgUUID`](#forceloginorguuid) | [Fije los inicios de sesión de claude.ai a su organización](/docs/es/authentication#restrict-login-to-your-organization); solo una fuente administrada lo aplica | Autenticación y proveedores | Cualquier archivo |681| [`forceLoginOrgUUID`](#forceloginorguuid) | [Fije los inicios de sesión de claude.ai a su organización](/docs/es/authentication#restrict-login-to-your-organization); solo una fuente administrada lo aplica | Autenticación y proveedores | Cualquier archivo |

681| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloquee el inicio hasta que la [configuración administrada por servidor](/docs/es/server-managed-settings) se obtenga recientemente | Configuración empresarial y administrada | Administrado |682| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloquee el inicio hasta que la [configuración administrada por servidor](/docs/es/server-managed-settings) se obtenga recientemente | Configuración empresarial y administrada | Administrado |

683| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Permita que `/login` alcance una [puerta de enlace en la nube](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en espacio IPv4 público que su organización usa internamente | Autenticación y proveedores | Administrado |

682| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualice las [credenciales de Google Cloud](/docs/es/google-vertex-ai#advanced-credential-configuration) con su propio comando | Autenticación y proveedores | Cualquier archivo |684| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualice las [credenciales de Google Cloud](/docs/es/google-vertex-ai#advanced-credential-configuration) con su propio comando | Autenticación y proveedores | Cualquier archivo |

683| [`hooks`](#hooks) | Ejecute sus propios comandos como [hooks](/docs/es/hooks) en puntos del ciclo de vida de Claude Code | Hooks y automatización | Cualquier archivo |685| [`hooks`](#hooks) | Ejecute sus propios comandos como [hooks](/docs/es/hooks) en puntos del ciclo de vida de Claude Code | Hooks y automatización | Cualquier archivo |

684| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limite qué variables de entorno pueden poner los [hooks HTTP](/docs/es/hooks) en encabezados | Hooks y automatización | Cualquier archivo |686| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limite qué variables de entorno pueden poner los [hooks HTTP](/docs/es/hooks) en encabezados | Hooks y automatización | Cualquier archivo |


700| [`otelHeadersHelper`](#otelheadershelper) | Genere encabezados [OpenTelemetry](/docs/es/monitoring-usage#dynamic-headers) rotativos con su propio comando | Autenticación y proveedores | Cualquier archivo |702| [`otelHeadersHelper`](#otelheadershelper) | Genere encabezados [OpenTelemetry](/docs/es/monitoring-usage#dynamic-headers) rotativos con su propio comando | Autenticación y proveedores | Cualquier archivo |

701| [`outputStyle`](#outputstyle) | Cambie el rol, tono y formato de salida de Claude con un [estilo de salida](/docs/es/output-styles) | Modelo y respuestas | Cualquier archivo |703| [`outputStyle`](#outputstyle) | Cambie el rol, tono y formato de salida de Claude con un [estilo de salida](/docs/es/output-styles) | Modelo y respuestas | Cualquier archivo |

702| [`parentSettingsBehavior`](#parentsettingsbehavior) | Aplique o suelte restricciones que un [host SDK o IDE](/docs/es/managed-settings#let-an-embedding-host-add-policy) pasa cuando implementa [configuración administrada](/docs/es/managed-settings) | Configuración empresarial y administrada | Administrado |704| [`parentSettingsBehavior`](#parentsettingsbehavior) | Aplique o suelte restricciones que un [host SDK o IDE](/docs/es/managed-settings#let-an-embedding-host-add-policy) pasa cuando implementa [configuración administrada](/docs/es/managed-settings) | Configuración empresarial y administrada | Administrado |

703| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Eliminado en v2.1.257, junto con la explicación del comando `Ctrl+E` en indicadores de permisos de shell | Configuración de configuración global | Configuración global |705| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Eliminado en v2.1.257, junto con la explicación del comando `Ctrl+E` en indicadores de permisos de shell | Configuración global | Configuración global |

704| [`permissions`](#permissions) | Establezca reglas de permitir, preguntar y denegar y el [modo de permisos](/docs/es/permission-modes) inicial | Configuración de permisos | Cualquier archivo |706| [`permissions`](#permissions) | Establezca reglas de permitir, preguntar y denegar y el [modo de permisos](/docs/es/permission-modes) inicial | Configuración de permisos | Cualquier archivo |

705| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Dé a Claude acceso a archivos en [directorios fuera del actual](/docs/es/permissions#working-directories) | Configuración de permisos | Cualquier archivo |707| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Dé a Claude acceso a archivos en [directorios fuera del actual](/docs/es/permissions#working-directories) | Configuración de permisos | Cualquier archivo |

706| [`permissions.allow`](#permissions-allow) | Apruebe [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados sin un indicador | Configuración de permisos | Cualquier archivo |708| [`permissions.allow`](#permissions-allow) | Apruebe [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados sin un indicador | Configuración de permisos | Cualquier archivo |


792| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Elija la [duración del caché de indicación](/docs/es/prompt-caching#cache-lifetime) para subagentes y otras solicitudes fuera de la conversación principal | Modelo y respuestas | Cualquier archivo |794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Elija la [duración del caché de indicación](/docs/es/prompt-caching#cache-lifetime) para subagentes y otras solicitudes fuera de la conversación principal | Modelo y respuestas | Cualquier archivo |

793| [`subagentStatusLine`](#subagentstatusline) | Reescriba filas en la [pantalla de tareas del subagente](/docs/es/sub-agents) con su propio comando | Interfaz y terminal | Cualquier archivo |795| [`subagentStatusLine`](#subagentstatusline) | Reescriba filas en la [pantalla de tareas del subagente](/docs/es/sub-agents) con su propio comando | Interfaz y terminal | Cualquier archivo |

794| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambie modelos automáticamente o pause cuando un [clasificador de seguridad](/docs/es/model-config#ask-before-switching) marca una solicitud | Modelo y respuestas | Cualquier archivo |796| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambie modelos automáticamente o pause cuando un [clasificador de seguridad](/docs/es/model-config#ask-before-switching) marca una solicitud | Modelo y respuestas | Cualquier archivo |

795| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Deje de descargar los [skills habilitados en su cuenta de claude.ai](/docs/es/skills#how-synced-skills-behave) y oculte los ya sincronizados | Plugins y skills | Usuario, local o administrado |797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Deje de cargar los [plugins habilitados en su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins) y deje de descargar nuevos | Plugins y skills | Usuario, local o administrado |

798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Deje de cargar los [skills habilitados en su cuenta de claude.ai](/docs/es/skills#how-synced-skills-behave) y deje de descargar nuevos | Plugins y skills | Usuario, local o administrado |

796| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Desactive el resaltado de sintaxis en diffs y bloques de código | Interfaz y terminal | Cualquier archivo |799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Desactive el resaltado de sintaxis en diffs y bloques de código | Interfaz y terminal | Cualquier archivo |

797| [`taskOutputMaxChars`](#taskoutputmaxchars) | Establezca cuánta [salida de tarea de fondo](/docs/es/tools-reference#background-commands) recibe Claude en línea | Memoria y contexto | Cualquier archivo |800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Establezca cuánta [salida de tarea de fondo](/docs/es/tools-reference#background-commands) recibe Claude en línea | Memoria y contexto | Cualquier archivo |

798| [`teammateDefaultModel`](#teammatedefaultmodel) | Eliminado en v2.1.234; vea [Especificar compañeros de equipo y modelos](/docs/es/agent-teams#specify-teammates-and-models) para cómo Claude Code elige el modelo de un compañero de equipo | Configuración de configuración global | Configuración global |801| [`teammateDefaultModel`](#teammatedefaultmodel) | Eliminado en v2.1.234; vea [Especificar compañeros de equipo y modelos](/docs/es/agent-teams#specify-teammates-and-models) para cómo Claude Code elige el modelo de un compañero de equipo | Configuración global | Configuración global |

799| [`teammateMode`](#teammatemode) | Elija cómo [se muestran los compañeros de equipo del equipo de agentes](/docs/es/agent-teams#choose-a-display-mode) | Agentes, sesiones y worktrees | Cualquier archivo |802| [`teammateMode`](#teammatemode) | Elija cómo [se muestran los compañeros de equipo del equipo de agentes](/docs/es/agent-teams#choose-a-display-mode) | Agentes, sesiones y worktrees | Cualquier archivo |

800| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Oculte la barra de progreso del terminal en terminales que la admitan | Interfaz y terminal | Cualquier archivo |803| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Oculte la barra de progreso del terminal en terminales que la admitan | Interfaz y terminal | Cualquier archivo |

801| [`terminalTitleFromRename`](#terminaltitlefromrename) | Impida que [`/rename`](/docs/es/sessions#name-your-sessions) y `--name` cambien el título de la pestaña del terminal | Interfaz y terminal | Cualquier archivo |804| [`terminalTitleFromRename`](#terminaltitlefromrename) | Impida que [`/rename`](/docs/es/sessions#name-your-sessions) y `--name` cambien el título de la pestaña del terminal | Interfaz y terminal | Cualquier archivo |


1152* **Tipo**: objeto con un `multiplier` opcional y un mapa `overrides` opcional1155* **Tipo**: objeto con un `multiplier` opcional y un mapa `overrides` opcional

1153* **Predeterminado**: sin establecer, por lo que Claude Code informa el precio de lista a menos que una aplicación host proporcione una tabla1156* **Predeterminado**: sin establecer, por lo que Claude Code informa el precio de lista a menos que una aplicación host proporcione una tabla

1154 1157 

1155Este ejemplo establece tasas contratadas para Sonnet 4.6 y luego reduce cada cifra, la fila Sonnet incluida, en un 15%. Establezca `multiplier` solo para un descuento plano, `overrides` solo para tasas por modelo, o ambos:1158Establezca `multiplier` solo para un descuento plano o marcado, `overrides` solo para tasas por modelo, o ambos.

1159 

1160Este ejemplo establece tasas contratadas para Sonnet 4.6 y luego reduce cada cifra, la fila Sonnet incluida, en un 15%:

1156 1161 

1157```json managed-settings.json theme={null}1162```json managed-settings.json theme={null}

1158{1163{


1170}1175}

1171```1176```

1172 1177 

1178Establezca `multiplier` por encima de 1, hasta 10, para marcar cada cifra. Un marcado requiere Claude Code v2.1.271 o posterior. Las versiones anteriores ignoran un `multiplier` por encima de 1 con una advertencia y mantienen el resto de la configuración.

1179 

1173Para los pasos, incluida la forma de confirmar que las tasas están en vigor, consulte [Informar el gasto a sus tasas contratadas](/docs/es/costs#report-spend-at-your-contracted-rates).1180Para los pasos, incluida la forma de confirmar que las tasas están en vigor, consulte [Informar el gasto a sus tasas contratadas](/docs/es/costs#report-spend-at-your-contracted-rates).

1174 1181 

1175<span id="modelpricing-multiplier" />1182<span id="modelpricing-multiplier" />


1182 1189 

1183| Campo | Tipo | Qué hace |1190| Campo | Tipo | Qué hace |

1184| :----------- | :---------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1191| :----------- | :---------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1185| `multiplier` | número mayor que 0 y como máximo 1 | Escala cada costo que Claude Code calcula, independientemente de si una fila `overrides` la cubre |1192| `multiplier` | número mayor que 0 y como máximo 10 | Escala cada costo que Claude Code calcula, independientemente de si una fila `overrides` la cubre. Por debajo de 1 es un descuento, por encima de 1 un marcado |

1186| `overrides` | mapa de ID de modelo a un objeto de tasa con `input`, `output`, `cacheRead` y `cacheWrite`, cada uno de 0 a 10000 | Las tasas USD por millón de tokens para ese modelo, las cuatro requeridas. `cacheWrite` cubre tanto escrituras de caché de cinco minutos como de una hora. Consulte [Qué modelos se aplica una fila de modelPricing](#which-models-a-modelpricing-row-applies-to) |1193| `overrides` | mapa de ID de modelo a un objeto de tasa con `input`, `output`, `cacheRead` y `cacheWrite`, cada uno de 0 a 10000 | Las tasas USD por millón de tokens para ese modelo, las cuatro requeridas. `cacheWrite` cubre tanto escrituras de caché de cinco minutos como de una hora. Consulte [Qué modelos se aplica una fila de modelPricing](#which-models-a-modelpricing-row-applies-to) |

1187 1194 

1188Claude Code utiliza las tasas de una fila exactamente como las escribió, sin agregar el recargo de modo rápido o la [tasa de inferencia solo para EE.UU.](https://platform.claude.com/docs/en/about-claude/pricing). Si también establece `multiplier`, Claude Code la aplica además de las tasas de la fila. Claude Code descarta una fila con una tasa que no puede analizar, o un `multiplier` que no puede analizar, y mantiene el resto; consulte [Reparar un archivo de configuración roto](/docs/es/settings#fix-a-broken-settings-file).1195Claude Code utiliza las tasas de una fila exactamente como las escribió, sin agregar el recargo de modo rápido o la [tasa de inferencia solo para EE.UU.](https://platform.claude.com/docs/en/about-claude/pricing). Si también establece `multiplier`, Claude Code la aplica además de las tasas de la fila. Claude Code descarta una fila con una tasa que no puede analizar, o un `multiplier` que no puede analizar, y mantiene el resto; consulte [Reparar un archivo de configuración roto](/docs/es/settings#fix-a-broken-settings-file).


1369 1376 

1370Haga que la configuración administrada sea la única fuente de reglas de permisos. Claude Code ignora entonces las reglas `allow`, `ask` y `deny` en archivos de usuario, proyecto, local y `--settings`, ignora `--allowedTools`, oculta las opciones de permitir siempre en los avisos de permisos y deja de guardar nuevas reglas.1377Haga que la configuración administrada sea la única fuente de reglas de permisos. Claude Code ignora entonces las reglas `allow`, `ask` y `deny` en archivos de usuario, proyecto, local y `--settings`, ignora `--allowedTools`, oculta las opciones de permitir siempre en los avisos de permisos y deja de guardar nuevas reglas.

1371 1378 

1372Cuando se aplican [configuraciones principales de un host de incrustación](/docs/es/managed-settings#let-an-embedding-host-add-policy), Claude Code las trata como parte del nivel administrado: mantiene sus reglas `deny` y `ask` y descarta sus reglas `allow` y `additionalDirectories`.1379Cuando se aplican [configuraciones principales de un host de incrustación](/docs/es/managed-settings#let-an-embedding-host-add-policy), Claude Code las trata como parte del nivel administrado. Descarta sus reglas `allow` y `additionalDirectories`, y mantiene sus reglas `deny` y `ask` excepto las reglas `Read` y `Edit` cuyo patrón comienza con `!`. Un host no puede excluir rutas de las reglas administradas con una regla `!`, independientemente de si establece esta clave.

1373 1380 

1374Las reglas `--disallowedTools` y las reglas `deny` y `ask` de la sesión actual aún se aplican, incluso después de que Claude Code recargue la configuración a mitad de la sesión. Solo restringen, por lo que no pueden ampliar lo que otorgan las reglas administradas. Antes de v2.1.257, Claude Code descartaba esas reglas de línea de comandos y sesión en la primera recarga de configuración.1381Las reglas `--disallowedTools` y las reglas `deny` y `ask` de la sesión actual aún se aplican, incluso después de que Claude Code recargue la configuración a mitad de la sesión. Solo restringen, por lo que no pueden ampliar lo que otorgan las reglas administradas. Antes de v2.1.257, Claude Code descartaba esas reglas de línea de comandos y sesión en la primera recarga de configuración.

1375 1382 

1383Para lo que un patrón `!` en una regla `--disallowedTools` o de sesión puede excluir, consulte [Reglas Read y Edit](/docs/es/permissions#read-and-edit).

1384 

1376* **Scope**: [`Managed`](#scopes)1385* **Scope**: [`Managed`](#scopes)

1377* **Type**: Boolean1386* **Type**: Boolean

1378 * `true`: la configuración administrada se convierte en la única fuente de reglas de permisos1387 * `true`: la configuración administrada se convierte en la única fuente de reglas de permisos


1413 `autoMode.classifyAllShell`1422 `autoMode.classifyAllShell`

1414</h3>1423</h3>

1415 1424 

1416Envíe cada comando Bash y PowerShell a través del clasificador del modo automático mientras el modo automático está activo. De forma predeterminada, el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario: reglas de herramienta completa y comodín como `Bash(*)`, y prefijos de intérprete o contenedor de shell como `Bash(python *)`. Un comando que coincida con cualquier otra regla de permitir, como `Bash(npm test)`, omite el clasificador, y un argumento destructivo que el prefijo de la regla no anticipó puede pasar desapercibido. Al establecer esta clave, suspende cada regla de permitir shell para la sesión para que el clasificador vea cada comando. Requiere Claude Code v2.1.193 o posterior.1425Envíe cada comando Bash y PowerShell a través del clasificador del modo automático mientras el modo automático está activo. De forma predeterminada, el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario: reglas de herramienta completa y comodín como `Bash(*)`, y prefijos de intérprete o contenedor de shell como `Bash(python *)`. Un comando que coincida con cualquier otra regla de permitir, como `Bash(npm test)`, omite el clasificador a menos que lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode). Cuando lo omite, un argumento destructivo que el prefijo de la regla no anticipó puede pasar desapercibido. Al establecer esta clave, suspende cada regla de permitir shell para la sesión para que el clasificador vea cada comando. Requiere Claude Code v2.1.193 o posterior.

1417 1426 

1418* **Scope**: [`User or managed`](#scopes). Léase donde se lee [`autoMode`](#automode).1427* **Scope**: [`User or managed`](#scopes). Léase donde se lee [`autoMode`](#automode).

1419* **Type**: Boolean1428* **Type**: Boolean

1420 * `true`: mientras el modo automático está activo, Claude Code envía cada comando Bash y PowerShell a través del clasificador y suspende sus reglas de permitir shell; fuera del modo automático las reglas aún se aplican1429 * `true`: mientras el modo automático está activo, Claude Code envía cada comando Bash y PowerShell a través del clasificador y suspende sus reglas de permitir shell; fuera del modo automático las reglas aún se aplican

1421 * `false`: el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario, como `Bash(*)` y `Bash(python *)`; un comando que coincida con cualquier otra regla de permitir omite el clasificador, y cada otro comando shell pasa por él1430 * `false`: el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario, como `Bash(*)` y `Bash(python *)`; un comando que coincida con cualquier otra regla de permitir omite el clasificador a menos que lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode), y cada otro comando shell pasa por él

1422* **Default**: `false`1431* **Default**: `false`

1423 1432 

1424```json settings.json theme={null}1433```json settings.json theme={null}


1554 `permissions.deny`1563 `permissions.deny`

1555</h3>1564</h3>

1556 1565 

1557Enumere los usos de herramientas que Claude Code bloquea. Úselo para archivos que contienen claves API, secretos o valores de entorno: Claude Code excluye archivos coincidentes del descubrimiento de archivos y resultados de búsqueda, deniega lecturas de ellos y bloquea las herramientas [Edit y Write](/docs/es/permissions#read-and-edit) en las rutas coincidentes. Las reglas de denegar Read y Edit se aplican a las herramientas de archivo integradas de Claude, a comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail` y `sed`, y a los destinos de [redirecciones](/docs/es/permissions#redirections) de Bash como `> file` y `< file`; no se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .`, o a subprocesos arbitrarios, por lo que para la aplicación a nivel del SO [habilite el sandbox](/docs/es/sandboxing).1566Enumere los usos de herramientas que Claude Code bloquea. Úselo para archivos que contienen claves API, secretos o valores de entorno: Claude Code excluye archivos coincidentes del descubrimiento de archivos y resultados de búsqueda, deniega lecturas de ellos y bloquea las herramientas [Edit y Write](/docs/es/permissions#read-and-edit) en las rutas coincidentes.

1567 

1568Las reglas de denegar Read y Edit se aplican a las herramientas de archivo integradas de Claude, a comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail`, `sed` y `tee`, y a los destinos de [redirecciones](/docs/es/permissions#redirections) de Bash como `> file` y `< file`; no se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .`, o a subprocesos arbitrarios, por lo que para la aplicación a nivel del SO [habilite el sandbox](/docs/es/sandboxing).

1558 1569 

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

1560* **Type**: matriz de cadenas de regla de permisos1571* **Type**: matriz de cadenas de regla de permisos


1606 1617 

1607Impida que Claude lea rutas fuera de los [directorios de trabajo](/docs/es/permissions#working-directories) de la sesión con las herramientas Read, Grep, Glob y LSP, en cada modo de permisos incluyendo `bypassPermissions`. Un comando Bash que lee una ruta coincidente a través de un comando de archivo que Claude Code reconoce, como `cat`, le solicita confirmación incluso en modo automático y modo `bypassPermissions`. Requiere Claude Code v2.1.257 o posterior.1618Impida que Claude lea rutas fuera de los [directorios de trabajo](/docs/es/permissions#working-directories) de la sesión con las herramientas Read, Grep, Glob y LSP, en cada modo de permisos incluyendo `bypassPermissions`. Un comando Bash que lee una ruta coincidente a través de un comando de archivo que Claude Code reconoce, como `cat`, le solicita confirmación incluso en modo automático y modo `bypassPermissions`. Requiere Claude Code v2.1.257 o posterior.

1608 1619 

1620Un comando Bash que el analizador de shell no puede rastrear, como uno que cambia de directorio más de una vez o ejecuta un subshell, le solicita confirmación incluso en modo automático y modo `bypassPermissions`. El aviso aparece incluso cuando el comando no nombra ninguna ruta fuera de los directorios de trabajo. Este aviso no se aplica cuando el comando se ejecuta en el [sandbox](/docs/es/sandboxing) y el sandbox hace cumplir el bloqueo.

1621 

1609Claude Code también escribe `true` aquí cuando elige bloquear tales lecturas en [el aviso del modo automático antes de la primera lectura fuera de los directorios de trabajo](/docs/es/permission-modes#first-read-outside-the-working-directories).1622Claude Code también escribe `true` aquí cuando elige bloquear tales lecturas en [el aviso del modo automático antes de la primera lectura fuera de los directorios de trabajo](/docs/es/permission-modes#first-read-outside-the-working-directories).

1610 1623 

1611* **Scope**: [`Any file`](#scopes). Si cualquier fuente de configuración establece `true`, se aplica el bloqueo, por lo que un archivo registrado de un repositorio puede activar el bloqueo para un proyecto pero no puede levantar un bloqueo que establezca.1624* **Scope**: [`Any file`](#scopes). Si cualquier fuente de configuración establece `true`, se aplica el bloqueo, por lo que un archivo registrado de un repositorio puede activar el bloqueo para un proyecto pero no puede levantar un bloqueo que establezca.


1622}1635}

1623```1636```

1624 1637 

1625Si solo el archivo de configuración registrado de un repositorio agrega un directorio, el bloqueo aún se aplica a las lecturas allí. Los archivos que Claude Code necesita permanecen legibles, como sus skills, plugins, reglas, agents, comandos y el archivo de memoria `CLAUDE.md` bajo `~/.claude/`.1638Si solo el archivo de configuración registrado de un repositorio agrega un directorio, el bloqueo aún se aplica a las lecturas allí. Cuando [`autoMemoryDirectory`](#automemorydirectory) proviene del `.claude/settings.json` del proyecto, o de un `.claude/settings.local.json` [tratado como suministrado por repositorio](/docs/es/permissions#when-your-local-settings-file-needs-trust), Claude Code no carga ninguna [memoria automática](/docs/es/memory#storage-location) desde ese directorio y no guarda ninguna en él. Los archivos que Claude Code necesita permanecen legibles, como sus skills, plugins, reglas, agents, comandos y el archivo de memoria `CLAUDE.md` bajo `~/.claude/`.

1626 1639 

1627Cuando el [sandbox](/docs/es/sandboxing) está activado, el bloqueo también deniega a los comandos en sandbox acceso de lectura a directorios de inicio y raíces de volúmenes montados fuera de los directorios de trabajo. Un reintento que necesita aprobación para [ejecutarse fuera del sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch) le solicita confirmación incluso en modo `bypassPermissions`. Los archivos que una herramienta lee desde su directorio de inicio, como `~/.gitconfig`, se deniegan con el resto; reabra una ruta específica con [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) cuando una herramienta la necesita.1640Cuando el [sandbox](/docs/es/sandboxing) está activado, el bloqueo también deniega a los comandos en sandbox acceso de lectura a directorios de inicio y raíces de volúmenes montados fuera de los directorios de trabajo. Un reintento que necesita aprobación para [ejecutarse fuera del sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch) le solicita confirmación incluso en modo `bypassPermissions`. Los archivos que una herramienta lee desde su directorio de inicio, como `~/.gitconfig`, se deniegan con el resto; reabra una ruta específica con [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) cuando una herramienta la necesita.

1628 1641 


1654}1667}

1655```1668```

1656 1669 

1657Las reglas de permisos se superponen en cada modo: las reglas `deny` bloquean en cada modo, incluyendo `bypassPermissions`. Consulte [Modos de permisos](/docs/es/permission-modes). `manual` nombra el modo de permisos etiquetado Manual en la CLI y la extensión VS Code; el alias requiere Claude Code v2.1.200 o posterior. En Claude Code en la web, Claude Code honra solo `acceptEdits`, `plan`, `default` y `auto` de esta clave. Para conversaciones que inicia la extensión VS Code, consulte [qué configuración lee la extensión para el modo de permisos inicial](/docs/es/permission-modes#switch-permission-modes).1670Las reglas de permisos se superponen en cada modo: las reglas `deny` bloquean en cada modo, incluyendo `bypassPermissions`. Consulte [Modos de permisos](/docs/es/permission-modes). `manual` nombra el modo de permisos etiquetado Manual en la CLI y la extensión VS Code; el alias requiere Claude Code v2.1.200 o posterior. En sesiones en la nube, Claude Code honra solo `acceptEdits`, `plan`, `default` y `auto` de esta clave. Para conversaciones que inicia la extensión VS Code, consulte [qué configuración lee la extensión para el modo de permisos inicial](/docs/es/permission-modes#switch-permission-modes).

1658 1671 

1659<h3 id="permissions-disablebypasspermissionsmode">1672<h3 id="permissions-disablebypasspermissionsmode">

1660 `permissions.disableBypassPermissionsMode`1673 `permissions.disableBypassPermissionsMode`


2670* **Scope**: [`User or managed`](#scopes). Un repositorio no puede activarlo o desactivarlo.2683* **Scope**: [`User or managed`](#scopes). Un repositorio no puede activarlo o desactivarlo.

2671* **Type**: Boolean2684* **Type**: Boolean

2672 * `true`: Claude Code niega a los comandos en sandbox el acceso a hosts fuera de la lista de permiso2685 * `true`: Claude Code niega a los comandos en sandbox el acceso a hosts fuera de la lista de permiso

2673 * `false`: a menos que otro archivo de configuración confiable establezca `true`, Claude Code decide un host fuera de la lista de permiso por modo de permiso en lugar de negarlo directamente: ejecuta el clasificador en modo automático, niega en modo `dontAsk`, permite en modo `bypassPermissions` y en modo plan cuando el bypass está disponible, y de otro modo pregunta2686 * `false`: a menos que otro archivo de configuración confiable establezca `true`, Claude Code decide un host fuera de la lista de permiso por modo de permiso en lugar de negarlo directamente: en modo automático ejecuta el clasificador contra los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode), en modo `dontAsk` niega, en modo `bypassPermissions` y en sesiones de modo plan interactivo de terminal donde el bypass está disponible permite, y de otro modo pregunta

2674* **Default**: `false`2687* **Default**: `false`

2675 2688 

2676```json settings.json theme={null}2689```json settings.json theme={null}


3136 `axScreenReader`3149 `axScreenReader`

3137</h3>3150</h3>

3138 3151 

3139Renderiza salida compatible con lectores de pantalla: texto plano sin bordes decorativos ni animaciones. El modo lector de pantalla utiliza el renderizador clásico, por lo que la configuración `tui` no tiene efecto mientras está activo; las [sesiones en segundo plano](/docs/es/agent-view) adjuntas aún se renderizan en pantalla completa. Requiere Claude Code v2.1.181 o posterior.3152Renderiza salida compatible con lectores de pantalla: texto plano sin bordes decorativos ni animaciones. El modo lector de pantalla utiliza el renderizador clásico, por lo que la configuración `tui` no tiene efecto mientras está activo; las [sesiones en segundo plano](/docs/es/agent-view) adjuntas aún se renderizan en pantalla completa.

3140 3153 

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

3142* **Type**: Boolean3155* **Type**: Boolean


3151}3164}

3152```3165```

3153 3166 

3154Requiere Claude Code v2.1.181 o posterior.3167<h3 id="basheditdiffenabled">

3168 `bashEditDiffEnabled`

3169</h3>

3170 

3171Elige si Claude Code registra los archivos que un comando Bash cambia en un repositorio Git. Cuando los registra, ves su diff en la terminal después del comando, y tus [hooks PostToolUse Bash](/docs/es/hooks#bash) reciben la lista de archivos cambiados.

3172 

3173Establece la clave a `true` para registrarlos en cada modo de permiso. Requiere Claude Code v2.1.269 o posterior.

3174 

3175* **Scope**: [`User or managed`](#scopes). Un `true` cuenta solo desde tu configuración de usuario, JSON pasado con `--settings`, o [configuración administrada](/docs/es/managed-settings), por lo que un `true` en el `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no puede activar el registro. Un `false` en cualquier archivo de repositorio aún lo desactiva a menos que un archivo de [precedencia más alta](/docs/es/settings#settings-precedence) establezca `true`.

3176* **Type**: Boolean

3177* **Default**: unset, por lo que Claude Code registra cambios en modo auto y modo `bypassPermissions` cuando dirige a Claude a editar archivos a través de Bash

3178* **Per-session overrides**: [`CLAUDE_CODE_BASH_EDIT_DIFF`](/docs/es/env-vars) tiene precedencia sobre esta clave para una sesión

3179 

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

3181{

3182 "bashEditDiffEnabled": true

3183}

3184```

3155 3185 

3156<h3 id="companyannouncements">3186<h3 id="companyannouncements">

3157 `companyAnnouncements`3187 `companyAnnouncements`


4297 `workflowSizeGuideline`4327 `workflowSizeGuideline`

4298</h3>4328</h3>

4299 4329 

4300Establezca el [recuento de agentes al que Claude apunta](/docs/es/workflows#set-a-size-guideline) en los flujos de trabajo dinámicos que escribe. Claude Code envía el valor a Claude como consejo, no como un límite impuesto: `"small"` solicita menos de 5 agentes, `"medium"` menos de 15 y `"large"` menos de 50. Elija `"small"` cuando desee limitar lo que gasta un flujo de trabajo. Requiere Claude Code v2.1.219 o posterior.4330Establezca el [recuento de agentes al que Claude apunta](/docs/es/workflows#set-a-size-guideline) en los flujos de trabajo dinámicos que escribe. Claude Code envía el valor a Claude como consejo, no como un límite impuesto: `"small"` solicita menos de 5 agentes, `"medium"` menos de 10 y `"large"` menos de 50. Elija `"small"` cuando desee limitar lo que gasta un flujo de trabajo. Requiere Claude Code v2.1.219 o posterior.

4301 4331 

4302* **Alcance**: [`Any file`](#scopes). Un valor allí tiene precedencia sobre la opción **Dynamic workflow size** en `/config`, que Claude Code almacena en `~/.claude.json`, y Claude Code oculta esa fila mientras un archivo de configuración establece la clave.4332* **Alcance**: [`Any file`](#scopes). Un valor allí tiene precedencia sobre la opción **Dynamic workflow size** en `/config`, que Claude Code almacena en `~/.claude.json`, y Claude Code oculta esa fila mientras un archivo de configuración establece la clave.

4303* **Tipo**: cadena, una de:4333* **Tipo**: cadena, una de:

4304 * `"unrestricted"`: sin directriz, por lo que Claude dimensiona el flujo de trabajo a la tarea4334 * `"unrestricted"`: sin directriz, por lo que Claude dimensiona el flujo de trabajo a la tarea

4305 * `"small"`: Claude apunta a menos de 5 agentes4335 * `"small"`: Claude apunta a menos de 5 agentes

4306 * `"medium"`: Claude apunta a menos de 15 agentes4336 * `"medium"`: Claude apunta a menos de 10 agentes

4307 * `"large"`: Claude apunta a menos de 50 agentes4337 * `"large"`: Claude apunta a menos de 50 agentes

4308* **Predeterminado**: `"medium"`4338* **Predeterminado**: `"medium"`, o `"small"` cuando está conectado en un plan Pro con Claude Code v2.1.271 o posterior

4309 4339 

4310```json settings.json theme={null}4340```json settings.json theme={null}

4311{4341{


4401 `syncClaudeAiSkills`4431 `syncClaudeAiSkills`

4402</h3>4432</h3>

4403 4433 

4404Desactive la descarga de los [skills que habilita en claude.ai](/docs/es/skills#how-synced-skills-behave). Claude Code los descarga en `~/.claude/skills/synced/` cuando lo ejecuta en [modo no interactivo](/docs/es/headless) con la bandera `-p` y [`CLAUDE_CODE_SYNC_SKILLS`](/docs/es/env-vars#variables) establecido. Establezca `false` para detener esa descarga y ocultar los skills que ya sincronizó. Claude Code solo respeta `false`: `true` es lo mismo que sin establecer y no activa la sincronización.4434Desactive la descarga de los [skills habilitados para su cuenta claude.ai](/docs/es/skills#how-synced-skills-behave). Claude Code los descarga en `~/.claude/skills/synced/` en [sesiones de terminal donde inicia sesión con su cuenta claude.ai](/docs/es/skills#where-synced-skills-load), interactivas o no interactivas, y en sesiones de Cowork y en la nube. Establezca `false` para detener esa descarga y dejar de cargar los skills que ya sincronizó. Claude Code solo respeta `false`: `true` es lo mismo que sin establecer y no activa la sincronización donde de otro modo está desactivada.

4405 4435 

4406* **Scope**: [`User, local, or managed`](#scopes). Un repositorio no puede desactivarlo para usted.4436* **Scope**: [`User, local, or managed`](#scopes), y archivos pasados con `--settings`. Un repositorio no puede desactivarlo para usted.

4407* **Type**: Boolean4437* **Type**: Boolean

4408 * `false`: Claude Code deja de descargar skills sincronizados y oculta los que ya están en `~/.claude/skills/synced/`. En configuración de usuario o administrada, también los mueve a `~/.claude/skills/.trash/`4438 * `false`: Claude Code deja de descargar skills sincronizados y deja de cargar los que ya están en `~/.claude/skills/synced/`. En configuración de usuario o administrada, también los mueve a `~/.claude/skills/.trash/`

4409 * `true`: lo mismo que sin establecer4439 * `true`: lo mismo que sin establecer

4410* **Default**: sin establecer, por lo que una ejecución no interactiva con `CLAUDE_CODE_SYNC_SKILLS` establecido descarga los skills4440* **Default**: sin establecer, por lo que las sesiones que iniciaron sesión con su cuenta claude.ai sincronizan sus skills

4411 4441 

4412Este ejemplo evita que una máquina descargue los skills de la cuenta, sea lo que sea que una sesión establezca en su entorno:4442Este ejemplo evita que una máquina descargue los skills de la cuenta en cualquier sesión:

4413 4443 

4414```json settings.json theme={null}4444```json settings.json theme={null}

4415{4445{


4417}4447}

4418```4448```

4419 4449 

4450<h3 id="syncclaudeaiplugins">

4451 `syncClaudeAiPlugins`

4452</h3>

4453 

4454Desactive la descarga de los [plugins habilitados para su cuenta claude.ai](/docs/es/plugins-reference#synced-plugins). Claude Code los descarga en `~/.claude/plugins/synced/` al inicio de sesiones de terminal donde inicia sesión con su cuenta claude.ai, y en sesiones de Cowork y en la nube, y carga cada uno como `<name>@synced`. Establezca `false` para detener esa descarga y dejar de cargar los plugins que ya sincronizó. Claude Code solo respeta `false`: `true` es lo mismo que sin establecer y no activa la sincronización donde de otro modo está desactivada. Requiere Claude Code v2.1.273 o posterior.

4455 

4456* **Scope**: [`User, local, or managed`](#scopes), y archivos pasados con `--settings`. Un repositorio no puede desactivarlo para usted.

4457* **Type**: Boolean

4458 * `false`: Claude Code deja de descargar plugins sincronizados y deja de cargar los que ya están en `~/.claude/plugins/synced/`. En configuración de usuario o administrada, también los mueve a `~/.claude/plugins/.trash/`

4459 * `true`: lo mismo que sin establecer

4460* **Default**: sin establecer, por lo que las sesiones que iniciaron sesión con su cuenta claude.ai sincronizan sus plugins

4461 

4462Para desactivar un plugin sincronizado en lugar de todos ellos, establezca `"<name>@synced": false` en [`enabledPlugins`](#enabledplugins).

4463 

4464Este ejemplo evita que una máquina descargue los plugins de la cuenta en cualquier sesión:

4465 

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

4467{

4468 "syncClaudeAiPlugins": false

4469}

4470```

4471 

4420<h3 id="allowedchannelplugins">4472<h3 id="allowedchannelplugins">

4421 `allowedChannelPlugins`4473 `allowedChannelPlugins`

4422</h3>4474</h3>


4858 4910 

4859El tipo de fuente `git` funciona con cualquier servicio de alojamiento de git, incluido GitLab autohospedado y Bitbucket. Claude Code clona el repositorio con la misma autenticación que `git clone` usaría en esa máquina: ayudantes de credenciales configurados o claves SSH. Un token de proveedor como `GITHUB_TOKEN` entra en vigor solo a través de un ayudante de credenciales que lo lee. Consulte [Repositorios privados](/docs/es/plugin-marketplaces#private-repositories) para detalles de configuración.4911El tipo de fuente `git` funciona con cualquier servicio de alojamiento de git, incluido GitLab autohospedado y Bitbucket. Claude Code clona el repositorio con la misma autenticación que `git clone` usaría en esa máquina: ayudantes de credenciales configurados o claves SSH. Un token de proveedor como `GITHUB_TOKEN` entra en vigor solo a través de un ayudante de credenciales que lo lee. Consulte [Repositorios privados](/docs/es/plugin-marketplaces#private-repositories) para detalles de configuración.

4860 4912 

4861Para fuentes `github` y `git`, establezca `"skipLfs": true` dentro del objeto `source`, junto a `repo` o `url`, para omitir descargas de Git LFS cuando Claude Code clona o actualiza el repositorio de mercado. Los archivos de puntero LFS permanecen como punteros en lugar de descargar su contenido. Úselo cuando el repositorio contiene objetos LFS grandes no relacionados con contenido de plugin.4913Para fuentes `github` y `git`, Claude Code nunca descarga contenido de [Git LFS](https://git-lfs.com) cuando clona el repositorio de mercado para agregarlo o actualizarlo. Los archivos rastreados por LFS se extraen como archivos de puntero, y la salida de agregar o actualizar reporta cuántos.

4914 

4915El campo `skipLfs` dentro del objeto `source` se acepta y no tiene efecto. Antes de v2.1.274, Claude Code descargaba contenido de LFS a menos que estableciera `"skipLfs": true`.

4862 4916 

4863Para una fuente `url`, establezca `headersHelper` dentro del objeto `source` cuando la credencial en `headers` expira y un comando tiene que producir una nueva. Requiere Claude Code v2.1.238 o posterior. Para lo que el comando debe imprimir y dónde Claude Code lo ejecuta, consulte [Escribir el comando headersHelper](/docs/es/plugin-marketplaces#write-the-headershelper-command), y para los casos donde Claude Code no lo ejecuta, consulte [Cuándo Claude Code omite un comando headersHelper](/docs/es/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Una vez que establezca `headersHelper` en una URL de mercado `https://`, Claude Code ejecuta el comando en dos puntos, reutilizando la salida de una ejecución durante hasta 60 segundos:4917Para una fuente `url`, establezca `headersHelper` dentro del objeto `source` cuando la credencial en `headers` expira y un comando tiene que producir una nueva. Requiere Claude Code v2.1.238 o posterior. Para lo que el comando debe imprimir y dónde Claude Code lo ejecuta, consulte [Escribir el comando headersHelper](/docs/es/plugin-marketplaces#write-the-headershelper-command), y para los casos donde Claude Code no lo ejecuta, consulte [Cuándo Claude Code omite un comando headersHelper](/docs/es/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Una vez que establezca `headersHelper` en una URL de mercado `https://`, Claude Code ejecuta el comando en dos puntos, reutilizando la salida de una ejecución durante hasta 60 segundos:

4864 4918 


4934}4988}

4935```4989```

4936 4990 

4991Los plugins integrados almacenan sus opciones bajo la misma clave con un sufijo `@builtin`. Por ejemplo, la configuración [**Instrucciones del proyecto**](/docs/es/memory#choose-which-instruction-files-load) que controla si Claude Code lee archivos `AGENTS.md` es `pluginConfigs["agents-md@builtin"].options.instructionFiles`.

4992 

4937Claude Code ignora entradas de proyecto y local porque sustituye estos valores en configuraciones de hook de plugin, MCP y LSP, y un repositorio clonado no debe poder suministrarlos. Antes de v2.1.207, la configuración de proyecto y local también se leía.4993Claude Code ignora entradas de proyecto y local porque sustituye estos valores en configuraciones de hook de plugin, MCP y LSP, y un repositorio clonado no debe poder suministrarlos. Antes de v2.1.207, la configuración de proyecto y local también se leía.

4938 4994 

4939<h2 id="mcp">4995<h2 id="mcp">


5020Bloquee servidores MCP específicos. Claude Code se niega a cargar un servidor coincidente dondequiera que esté definido, incluidos servidores de complementos, servidores pasados con `--mcp-config`, servidores de `managed-mcp.json`, servidores de [`managedMcpServers`](#managedmcpservers) y los conectores de claude.ai [que obtiene por sí mismo](/docs/es/mcp#how-connectors-reach-claude-code). Los servidores `type: "sdk"` en proceso están exentos; la aplicación que inició la sesión los registra.5076Bloquee servidores MCP específicos. Claude Code se niega a cargar un servidor coincidente dondequiera que esté definido, incluidos servidores de complementos, servidores pasados con `--mcp-config`, servidores de `managed-mcp.json`, servidores de [`managedMcpServers`](#managedmcpservers) y los conectores de claude.ai [que obtiene por sí mismo](/docs/es/mcp#how-connectors-reach-claude-code). Los servidores `type: "sdk"` en proceso están exentos; la aplicación que inició la sesión los registra.

5021 5077 

5022* **Scope**: [`Any file`](#scopes). Las entradas de cada archivo se fusionan en una lista de denegados, y [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) no cambia eso. Impleméntelo en la configuración administrada para aplicarlo.5078* **Scope**: [`Any file`](#scopes). Las entradas de cada archivo se fusionan en una lista de denegados, y [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) no cambia eso. Impleméntelo en la configuración administrada para aplicarlo.

5023* **Type**: matriz de objetos, cada uno con exactamente una clave: `serverName`, cualquier cadena no vacía, por lo que el nombre para mostrar de un conector de claude.ai como `"claude.ai Slack"` funciona; `serverCommand`, una matriz del comando y sus argumentos coincididos exactamente; o `serverUrl`, un patrón de URL con comodines `*`5079* **Type**: matriz de objetos, cada uno con exactamente una clave: `serverName`, una cadena, por lo que el nombre para mostrar de un conector de claude.ai como `"claude.ai Slack"` funciona; `serverCommand`, una matriz del comando y sus argumentos coincididos exactamente; o `serverUrl`, un patrón de URL con comodines `*`

5024* **Default**: sin establecer, por lo que ningún servidor se bloquea; una matriz vacía tampoco bloquea nada5080* **Default**: sin establecer, por lo que ningún servidor se bloquea; una matriz vacía tampoco bloquea nada

5025 5081 

5026```json settings.json theme={null}5082```json settings.json theme={null}


5037 `disableClaudeAiConnectors`5093 `disableClaudeAiConnectors`

5038</h3>5094</h3>

5039 5095 

5040Apague los [conectores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) [que Claude Code obtiene por sí mismo](/docs/es/mcp#how-connectors-reach-claude-code), por lo que ni los obtiene ni se conecta a ellos. Un `true` en cualquier archivo de configuración se aplica: un `.claude/settings.json` de proyecto registrado puede optar por un repositorio fuera de esos conectores, pero un `false` a nivel de proyecto no puede anular un `true` a nivel de usuario o administrado. Requiere Claude Code v2.1.182 o posterior.5096Apague los [conectores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) [que Claude Code obtiene por sí mismo](/docs/es/mcp#how-connectors-reach-claude-code), por lo que ni los obtiene ni se conecta a ellos. Un `true` en cualquier archivo de configuración se aplica: un `.claude/settings.json` de proyecto registrado puede optar por un repositorio fuera de esos conectores, pero un `false` a nivel de proyecto no puede anular un `true` a nivel de usuario o administrado.

5041 5097 

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

5043* **Type**: Boolean5099* **Type**: Boolean


5052}5108}

5053```5109```

5054 5110 

5055Los servidores que pasa explícitamente con `--mcp-config` no se ven afectados. Para bloquear conectores individuales en lugar de todos ellos, use [`deniedMcpServers`](#deniedmcpservers). Consulte [Deshabilitar conectores de claude.ai](/docs/es/mcp#disable-claude-ai-connectors). Requiere Claude Code v2.1.182 o posterior.5111Los servidores que pasa explícitamente con `--mcp-config` no se ven afectados. Para bloquear conectores individuales en lugar de todos ellos, use [`deniedMcpServers`](#deniedmcpservers). Consulte [Deshabilitar conectores de claude.ai](/docs/es/mcp#disable-claude-ai-connectors).

5056 5112 

5057<h3 id="disabledmcpjsonservers">5113<h3 id="disabledmcpjsonservers">

5058 `disabledMcpjsonServers`5114 `disabledMcpjsonServers`


5266}5322}

5267```5323```

5268 5324 

5269Antes de v2.1.179, el predeterminado era `auto`. El valor `iterm2` requiere Claude Code v2.1.186 o posterior.5325El valor `iterm2` requiere Claude Code v2.1.186 o posterior.

5270 5326 

5271<span id="worktree-settings" />5327<span id="worktree-settings" />

5272 5328 


5791 5847 

5792Consulte [Restringir el inicio de sesión a su organización](/docs/es/authentication#restrict-login-to-your-organization) para ver cómo Claude Code trata los inicios de sesión de Claude Console, las otras rutas de inicio de sesión y las credenciales ambientales.5848Consulte [Restringir el inicio de sesión a su organización](/docs/es/authentication#restrict-login-to-your-organization) para ver cómo Claude Code trata los inicios de sesión de Claude Console, las otras rutas de inicio de sesión y las credenciales ambientales.

5793 5849 

5850<h3 id="gatewayinternalnetworks">

5851 `gatewayInternalNetworks`

5852</h3>

5853 

5854Declare los bloques de IPv4 públicos desde los que su organización numera su red interna, para que `/login` acepte una [puerta de enlace en la nube](/docs/es/claude-apps-gateway) allí. Requiere Claude Code v2.1.268 o posterior.

5855 

5856Sin esta clave, `/login` se conecta a cualquier puerta de enlace en una dirección privada y nada más. Con ella, `/login` también acepta una puerta de enlace dentro de un bloque listado, solo sobre una conexión directa. La dirección propia de la máquina en esa conexión también debe estar dentro del mismo bloque.

5857 

5858* **Scope**: [`Managed`](#scopes). Lea solo desde una fuente en la máquina: `managed-settings.json`, la lista de propiedades de macOS o el registro HKLM de Windows, o un auxiliar de política. Claude Code lo ignora en la configuración de HKCU y administrada por servidor.

5859* **Type**: matriz de strings, como máximo cuatro bloques CIDR de IPv4, cada uno `/8` a `/32`, sin superponerse entre sí, y ninguno superponiéndose con espacio privado.

5860* **Default**: sin establecer, por lo que `/login` acepta solo puertas de enlace en direcciones privadas

5861 

5862```json managed-settings.json theme={null}

5863{

5864 "gatewayInternalNetworks": ["203.0.113.0/24"]

5865}

5866```

5867 

5868Reemplace el rango de documentación en el ejemplo con su propio bloque. Claude Code rechaza los rangos de documentación, los rangos que los clientes de VPN y NAT64 usan localmente, y el espacio reservado desde el que ninguna red está numerada, como multidifusión.

5869 

5870Si una entrada es inválida, o el valor no es una lista de strings, `/login` nombra el problema y rechaza cada nuevo inicio de sesión de puerta de enlace en la máquina hasta que corrija el valor. Los inicios de sesión existentes siguen funcionando. Consulte [Permitir una puerta de enlace en espacio de dirección pública que posee](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) para las reglas completas y lo que ven los desarrolladores.

5871 

5794<h3 id="gcpauthrefresh">5872<h3 id="gcpauthrefresh">

5795 `gcpAuthRefresh`5873 `gcpAuthRefresh`

5796</h3>5874</h3>


6105 6183 

6106Claude Code aún acepta un `--mcp-config` cuyos servidores son todas entradas `type: "sdk"` en proceso, por lo que el SDK del Agente y la extensión de VS Code siguen funcionando. Los usuarios aún pueden agregar servidores con `claude mcp add` o un archivo `.mcp.json`; para control por servidor, establezca también [`allowedMcpServers`](/docs/es/managed-mcp). Requiere Claude Code v2.1.193 o posterior.6184Claude Code aún acepta un `--mcp-config` cuyos servidores son todas entradas `type: "sdk"` en proceso, por lo que el SDK del Agente y la extensión de VS Code siguen funcionando. Los usuarios aún pueden agregar servidores con `claude mcp add` o un archivo `.mcp.json`; para control por servidor, establezca también [`allowedMcpServers`](/docs/es/managed-mcp). Requiere Claude Code v2.1.193 o posterior.

6107 6185 

6108En sesiones en la nube, Claude Code también ignora las actualizaciones MCP entregadas por el servidor a mitad de sesión, la ruta detrás de la configuración de sesión en la nube y `setMcpServers()` del SDK en trabajadores remotos. Las entradas `type: "sdk"` en proceso permanecen exentas allí también. Antes de v2.1.239, un `--mcp-config` entregado por el servidor bloqueaba el inicio de una sesión en la nube.6186En sesiones en la nube, Claude Code también ignora las actualizaciones MCP entregadas por el servidor a mitad de sesión, la ruta detrás de la configuración de sesión en la nube y llamadas `setMcpServers()` del SDK que llegan a esas sesiones. Las entradas `type: "sdk"` en proceso permanecen exentas allí también. Antes de v2.1.239, un `--mcp-config` entregado por el servidor bloqueaba el inicio de una sesión en la nube.

6109 6187 

6110<h3 id="forceremotesettingsrefresh">6188<h3 id="forceremotesettingsrefresh">

6111 `forceRemoteSettingsRefresh`6189 `forceRemoteSettingsRefresh`


6170 6248 

6171* **[`policyHelper`](#policyhelper)**: Claude Code la honra solo cuando la fuente de mayor prioridad que lleva una clave de política es una política MDM o un archivo de configuraciones gestionadas, por lo que bajo configuraciones gestionadas por el servidor no se aplica.6249* **[`policyHelper`](#policyhelper)**: Claude Code la honra solo cuando la fuente de mayor prioridad que lleva una clave de política es una política MDM o un archivo de configuraciones gestionadas, por lo que bajo configuraciones gestionadas por el servidor no se aplica.

6172* **[`modelOverrides`](#modeloverrides)**: se empareja con `availableModels`. Claude Code toma `modelOverrides` de la fuente de mayor prioridad que la establece, a menos que una fuente superior establezca `availableModels` sin `modelOverrides`. En ese caso, ignora `modelOverrides` de todas las fuentes.6250* **[`modelOverrides`](#modeloverrides)**: se empareja con `availableModels`. Claude Code toma `modelOverrides` de la fuente de mayor prioridad que la establece, a menos que una fuente superior establezca `availableModels` sin `modelOverrides`. En ese caso, ignora `modelOverrides` de todas las fuentes.

6173* **[`forceLoginGatewayUrl`](#forcelogingatewayurl) y el valor `"gateway"` de [`forceLoginMethod`](#forceloginmethod)**: Claude Code nunca lee ninguno de ellos de configuraciones gestionadas por el servidor, por lo que un valor allí ni se aplica ni oculta uno establecido en una política MDM o archivo de configuraciones gestionadas. Entre las fuentes de administrador en la máquina, solo la de mayor rango que lleva una clave de política los suministra, independientemente de si las configuraciones gestionadas por el servidor también están presentes.6251* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) y el valor `"gateway"` de [`forceLoginMethod`](#forceloginmethod)**: Claude Code nunca lee ninguno de ellos de configuraciones gestionadas por el servidor, por lo que un valor allí ni se aplica ni oculta uno establecido en una política MDM o archivo de configuraciones gestionadas. Entre las fuentes de administrador en la máquina, solo la de mayor rango que lleva una clave de política los suministra, independientemente de si las configuraciones gestionadas por el servidor también están presentes.

6174 6252 

6175Para confirmar qué fuentes se combinaron en una máquina, ejecute `/status` y [lea la línea `Setting sources`](/docs/es/managed-settings#read-the-source-in-/status).6253Para confirmar qué fuentes se combinaron en una máquina, ejecute `/status` y [lea la línea `Setting sources`](/docs/es/managed-settings#read-the-source-in-/status).

6176 6254 

skills.md +35 −28

Details

130| Anidada | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesiones iniciadas en o debajo de `<subdir>`. Una sesión iniciada por encima de ella carga la skill una vez que Claude trabaja en archivos allí. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |130| Anidada | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesiones iniciadas en o debajo de `<subdir>`. Una sesión iniciada por encima de ella carga la skill una vez que Claude trabaja en archivos allí. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |

131| Directorio adicional | `.claude/skills/<skill-name>/SKILL.md` en un directorio que pasas con `--add-dir` | Esa sesión. Consulta [directorios fuera del proyecto](#skills-from-additional-directories) |131| Directorio adicional | `.claude/skills/<skill-name>/SKILL.md` en un directorio que pasas con `--add-dir` | Esa sesión. Consulta [directorios fuera del proyecto](#skills-from-additional-directories) |

132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Dondequiera que el [plugin](/docs/es/plugins) esté habilitado, como `/plugin-name:skill-name` |132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Dondequiera que el [plugin](/docs/es/plugins) esté habilitado, como `/plugin-name:skill-name` |

133| Cuenta de claude.ai | Skills que habilitas en tu configuración de claude.ai | Sesiones de Cowork y en la nube. Consulta [Skills sincronizadas desde claude.ai](#how-synced-skills-behave) para sesiones locales |133| Cuenta de claude.ai | Skills habilitadas para tu cuenta de claude.ai | Sesiones de Cowork, sesiones en la nube y sesiones de terminal donde inicias sesión con esa cuenta. Consulta [Skills sincronizadas desde claude.ai](#how-synced-skills-behave) |

134 134 

135Las carpetas de skills también siguen estas reglas:135Las carpetas de skills también siguen estas reglas:

136 136 


169Cuando dos skills comparten un nombre, de dónde vino cada una decide cuál ejecuta `/name`. La tabla cubre las ubicaciones enterprise, personal, proyecto, anidada, plugin y claude.ai, skills agrupadas y archivos de comando:169Cuando dos skills comparten un nombre, de dónde vino cada una decide cuál ejecuta `/name`. La tabla cubre las ubicaciones enterprise, personal, proyecto, anidada, plugin y claude.ai, skills agrupadas y archivos de comando:

170 170 

171| Mismo nombre en | Cuál se ejecuta |171| Mismo nombre en | Cuál se ejecuta |

172| :-------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |172| :-------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

173| Dos de enterprise, personal y proyecto | Enterprise sobre personal, y personal sobre proyecto. Con `deploy` en ambos `~/.claude/skills/` y el `.claude/skills/` del proyecto, `/deploy` ejecuta la personal |173| Dos de enterprise, personal y proyecto | Enterprise sobre personal, y personal sobre proyecto. Con `deploy` en ambos `~/.claude/skills/` y el `.claude/skills/` del proyecto, `/deploy` ejecuta la personal |

174| Cualquiera de esas ubicaciones y una [skill agrupada](#bundled-skills) | Tu skill reemplaza el comando agrupado, pero no sus alias. Una skill `code-review` de proyecto reemplaza `/code-review`, y el alias agrupado `/review` nunca ejecuta tu skill |174| Cualquiera de esas ubicaciones y una [skill agrupada](#bundled-skills) | Tu skill reemplaza el comando agrupado, pero no sus alias. Una skill `code-review` de proyecto reemplaza `/code-review`, y el alias agrupado `/review` nunca ejecuta tu skill |

175| Una skill y un archivo en `.claude/commands/` | La skill |175| Una skill y un archivo en `.claude/commands/` | La skill |

176| Una skill raíz de proyecto y una skill anidada | Ambas se cargan. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |176| Una skill raíz de proyecto y una skill anidada | Ambas se cargan. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |

177| Una skill de plugin y una skill en cualquiera de las ubicaciones anteriores | Ambas se cargan, porque las skills de plugin tienen espacios de nombres como `/plugin-name:skill-name` |177| Una skill de plugin y una skill en cualquiera de las ubicaciones anteriores | Ambas se cargan, porque las skills de plugin tienen espacios de nombres como `/plugin-name:skill-name` |

178| Cualquiera de las anteriores y una skill sincronizada desde claude.ai | La otra skill o comando. La skill sincronizada aún se ejecuta como `/anthropic-skills:<name>`. Consulta [Cuando un nombre de skill sincronizada coincide con otro comando](#when-a-synced-skill-name-matches-another-command) |178| Cualquiera de las anteriores y una skill [sincronizada desde tu cuenta de claude.ai](#how-synced-skills-behave) | La otra skill o comando. La skill sincronizada aún se ejecuta como `/anthropic-skills:<name>`. Consulta [Cuando un nombre de skill sincronizada coincide con otro comando](#when-a-synced-skill-name-matches-another-command) |

179 179 

180<h3 id="skills-in-cowork-and-cloud-sessions">180<h3 id="skills-in-cowork-and-cloud-sessions">

181 Usa skills en sesiones de Cowork y en la nube181 Usa skills en sesiones de Cowork y en la nube


183 183 

184Las sesiones de [Cowork](https://claude.com/product/cowork) y [sesiones en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup), incluyendo [rutinas](/docs/es/routines), no leen `~/.claude/skills/` en tu máquina. Tanto las sesiones de Cowork interactivas como las programadas cargan las skills habilitadas para tu cuenta de claude.ai, sincronizadas al inicio de la sesión; adminístralas desde **Customize** en la barra lateral de la aplicación de escritorio o desde la configuración de skills en claude.ai. Las sesiones en la nube cargan adicionalmente las skills de proyecto confirmadas en el `.claude/skills/` del repositorio clonado.184Las sesiones de [Cowork](https://claude.com/product/cowork) y [sesiones en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup), incluyendo [rutinas](/docs/es/routines), no leen `~/.claude/skills/` en tu máquina. Tanto las sesiones de Cowork interactivas como las programadas cargan las skills habilitadas para tu cuenta de claude.ai, sincronizadas al inicio de la sesión; adminístralas desde **Customize** en la barra lateral de la aplicación de escritorio o desde la configuración de skills en claude.ai. Las sesiones en la nube cargan adicionalmente las skills de proyecto confirmadas en el `.claude/skills/` del repositorio clonado.

185 185 

186Si una skill existe solo en `~/.claude/skills/` en tu máquina, Claude Code reporta que la skill no fue encontrada cuando una [rutina](/docs/es/routines) la invoca, porque cada ejecución de rutina comienza como una sesión remota nueva. Para hacer que una skill personal esté disponible en estas sesiones:186Si una skill existe solo en `~/.claude/skills/` en tu máquina, Claude Code reporta que la skill no fue encontrada cuando una [rutina](/docs/es/routines) la invoca, porque cada ejecución de rutina comienza como una sesión en la nube nueva. Para hacer que una skill personal esté disponible en estas sesiones:

187 187 

188* Para sesiones de Cowork y en la nube, habilita la skill para tu cuenta de claude.ai.188* Para sesiones de Cowork y en la nube, habilita la skill para tu cuenta de claude.ai.

189* Para sesiones en la nube, puedes en su lugar confirmar la skill en el `.claude/skills/` del repositorio, o enviarla en un plugin declarado en el `.claude/settings.json` del repositorio. Los plugins declarados en el repositorio [se instalan al inicio de la sesión](/docs/es/cloud-environments#what-carries-over-from-your-setup); los plugins habilitados solo en tu configuración de usuario no se transfieren.189* Para sesiones en la nube, puedes en su lugar confirmar la skill en el `.claude/skills/` del repositorio, o enviarla en un plugin declarado en el `.claude/settings.json` del repositorio. Los plugins declarados en el repositorio [se instalan al inicio de la sesión](/docs/es/cloud-environments#what-carries-over-from-your-setup); los plugins habilitados solo en tu configuración de usuario no se transfieren.


194 Skills sincronizadas desde claude.ai194 Skills sincronizadas desde claude.ai

195</h3>195</h3>

196 196 

197Esta sección se aplica a ti si habilitaste skills para tu cuenta de claude.ai. En sesiones de Cowork y en la nube, Claude Code carga esas skills sin ninguna configuración en tu máquina. En cualquier otra sesión en tu máquina, Claude Code las carga solo después de que actives la sincronización con [`CLAUDE_CODE_SYNC_SKILLS`](/docs/es/env-vars#variables) en una ejecución no interactiva, como describe [Dónde se cargan las skills sincronizadas](#where-synced-skills-load).197Esta sección se aplica a ti si usas sesiones de Cowork o en la nube, o inicias sesión en Claude Code en tu terminal con una cuenta de claude.ai. En esas sesiones, Claude Code carga las skills habilitadas para tu cuenta de claude.ai, sin ninguna configuración de tu parte, como describe [Dónde se cargan las skills sincronizadas](#where-synced-skills-load). Esas skills incluyen las que creas o actives en tu configuración de claude.ai, skills que tu organización proporciona allí, y las skills integradas de Anthropic como `pdf` y `xlsx`.

198 198 

199Claude Code descarga una skill sincronizada desde tu cuenta en lugar de leer un archivo que escribiste en la máquina donde se ejecuta la sesión, por lo que aplica reglas a las skills sincronizadas que no se aplican a las skills que almacenas en las [ubicaciones de skills](#where-skills-live).199Claude Code descarga una skill sincronizada desde tu cuenta en lugar de leer un archivo que escribiste en la máquina donde se ejecuta la sesión, por lo que aplica reglas a las skills sincronizadas que no se aplican a las skills que almacenas en las [ubicaciones de skills](#where-skills-live).

200 200 


204 204 

205En una sesión de Cowork o en la nube, Claude Code carga las skills habilitadas para tu cuenta de claude.ai, y [Skills en sesiones de Cowork y en la nube](#skills-in-cowork-and-cloud-sessions) dice cómo elegir qué skills obtienen esas sesiones.205En una sesión de Cowork o en la nube, Claude Code carga las skills habilitadas para tu cuenta de claude.ai, y [Skills en sesiones de Cowork y en la nube](#skills-in-cowork-and-cloud-sessions) dice cómo elegir qué skills obtienen esas sesiones.

206 206 

207En cualquier otra sesión en tu máquina, Claude Code las carga solo después de que las descargues una vez en una ejecución no interactiva:207En tu terminal, Claude Code sincroniza esas skills en sesiones donde inicias sesión con tu cuenta de claude.ai. Cuando la sesión comienza, Claude Code descarga las skills de tu cuenta en `~/.claude/skills/synced/` en segundo plano, luego verifica claude.ai para cambios aproximadamente cada 10 minutos mientras se ejecuta la sesión. Cuando una verificación encuentra que una skill fue agregada, editada o desactivada en claude.ai, Claude Code la agrega, actualiza o elimina en la sesión en ejecución sin un reinicio. La sincronización en sesiones de terminal requiere Claude Code v2.1.273 o posterior.

208 208 

209<Steps>209La sincronización nunca retrasa el inicio, porque Claude espera la descarga de una skill solo cuando la invoca. Una ejecución corta [no interactiva](/docs/es/headless) puede por lo tanto terminar antes de que una skill recién agregada se descargue, en cuyo caso una sesión posterior la descarga. Para hacer que una ejecución no interactiva descargue tus skills y espere la lista antes de responder el prompt, establece [`CLAUDE_CODE_SYNC_SKILLS`](/docs/es/env-vars#variables) en `1`.

210 <Step title="Habilita las skills para tu cuenta de claude.ai">

211 Habilita cada skill que desees para tu cuenta de claude.ai, como describe [Skills en sesiones de Cowork y en la nube](#skills-in-cowork-and-cloud-sessions). Claude Code descarga solo las skills que habilitaste, y necesita tu inicio de sesión de claude.ai para descargarlas.

212 </Step>

213 210 

214 <Step title="Ejecuta Claude Code en modo no interactivo con sincronización activada">211Claude Code sincroniza solo en una sesión que inicia sesión con tu cuenta de claude.ai y [obtiene banderas de características de Anthropic](/docs/es/env-vars#features-that-need-feature-flag-fetching). No sincroniza en estas sesiones:

215 Claude Code descarga skills sincronizadas solo cuando lo ejecutas en [modo no interactivo](/docs/es/headless) con la bandera `-p` y estableces [`CLAUDE_CODE_SYNC_SKILLS`](/docs/es/env-vars#variables) en `1`. El prompt que pasas no afecta la descarga.

216 212 

217 ```bash theme={null}213* Una sesión que no usa un inicio de sesión almacenado por `/login`, como una que se autentica con una clave API, o una donde `ANTHROPIC_AUTH_TOKEN`, `CLAUDE_CODE_OAUTH_TOKEN`, o un script `apiKeyHelper` proporciona la credencial

218 CLAUDE_CODE_SYNC_SKILLS=1 claude -p "List the skills you have available"214* Una sesión que no obtiene banderas de características, como una en Amazon Bedrock o una donde estableces `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

219 ```215* Una sesión en [modo bare](/docs/es/headless#start-faster-with-bare-mode) o una que inicias con `--safe-mode`

216* Una sesión donde la configuración administrada de tu organización [bloquea skills a fuentes de plugins](/docs/es/settings-reference#strictpluginonlycustomization-skills), o una que inicias con una lista [`--setting-sources`](/docs/es/cli-reference#cli-flags) que deja fuera `user`

220 217 

221 Claude Code descarga las skills en `~/.claude/skills/synced/`, responde el prompt y sale como cualquier otra ejecución no interactiva. Las skills descargadas permanecen en el disco después de que sale, por lo que no necesitas mantener la ejecución abierta. Claude Code descarga skills solo durante una ejecución con `CLAUDE_CODE_SYNC_SKILLS` establecido, por lo que después de que habilites o cambies una skill en claude.ai, ejecuta el comando nuevamente. Para cambiar cuánto tiempo espera la ejecución para la sincronización antes de responder el prompt, establece [`CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`](/docs/es/env-vars#variables).218Si inicias sesión con `/login` durante una sesión, reinicia Claude Code para comenzar a sincronizar.

222 </Step>

223 219 

224 <Step title="Confirma que las skills se cargan en una sesión local">220Las skills que una sesión anterior sincronizó permanecen en el disco. Claude Code las carga en sesiones posteriores iniciadas en la misma cuenta, incluso cuando no puede alcanzar claude.ai.

225 Inicia una sesión interactiva, sin `CLAUDE_CODE_SYNC_SKILLS` establecido, y ejecuta `/skills`. El menú enumera las skills descargadas bajo `claude.ai sync`. Cada sesión local que inicies después con el mismo inicio de sesión de claude.ai las carga desde `~/.claude/skills/synced/` también.221 

226 </Step>222Para ver qué skills sincronizaron, ejecuta `/skills`. El menú las enumera bajo `claude.ai sync`.

227</Steps>223 

224Algunas de las skills de Anthropic, como `pdf` y `xlsx`, siempre se sincronizan. Para el resto, activa o desactiva una skill en tu configuración de skills en claude.ai para cambiar si se sincroniza.

225 

226Para dejar de sincronizar en una máquina, establece [`syncClaudeAiSkills`](/docs/es/settings-reference#syncclaudeaiskills) en `false` en tu configuración de usuario. Claude Code deja de descargar, y la próxima vez que inicie mueve las skills que ya sincronizó a `~/.claude/skills/.trash/` y ya no las carga. Tu organización puede desactivar la sincronización para todos desactivando Skills en claude.ai. Para dejar de sincronizar mientras mantienes Skills activado, puede establecer la misma clave en [configuración administrada](/docs/es/managed-settings).

227 

228Si tu organización desactiva Skills en claude.ai, Claude Code elimina las skills descargadas y dejan de cargarse. Las skills eliminadas se mueven a `~/.claude/skills/.trash/`, donde puedes recuperar los archivos hasta que el [barrido de retención](/docs/es/claude-directory#cleaned-up-automatically) los elimine. Una vez que tu organización activa Skills nuevamente, Claude Code descarga las skills que habilitaste en la próxima sincronización.

228 229 

229<h4 id="when-a-synced-skill-name-matches-another-command">230<h4 id="when-a-synced-skill-name-matches-another-command">

230 Cuando un nombre de skill sincronizada coincide con otro comando231 Cuando un nombre de skill sincronizada coincide con otro comando


387| Skills de Claude Code en [cualquier nivel](#where-skills-live), incluidos skills de [plugin](/docs/es/plugins) | Cada campo en la tabla anterior |388| Skills de Claude Code en [cualquier nivel](#where-skills-live), incluidos skills de [plugin](/docs/es/plugins) | Cada campo en la tabla anterior |

388| Cargas de skills de claude.ai, la API de Skills y empaquetamiento con `package_skill.py` de [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |389| Cargas de skills de claude.ai, la API de Skills y empaquetamiento con `package_skill.py` de [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |

389 390 

390Cuando habilitas un skill personal para [sesiones de Cowork y nube](#skills-in-cowork-and-cloud-sessions), incluidas rutinas, lo cargas en claude.ai, por lo que se aplican las mismas reglas.391Cuando habilitas un skill personal para tu cuenta de claude.ai, por ejemplo para usarlo en [sesiones de Cowork y nube](#skills-in-cowork-and-cloud-sessions) e incluidas rutinas, lo cargas en claude.ai, por lo que se aplican las mismas reglas.

391 392 

392Si incluyes algún campo que la especificación no permite, el empaquetamiento o la carga falla con un error grave en lugar de ignorar el campo:393Si incluyes algún campo que la especificación no permite, el empaquetamiento o la carga falla con un error grave en lugar de ignorar el campo:

393 394 


417 418 

418En un skill de plugin, el frontmatter `name` reemplaza el nombre del directorio en el último segmento del comando, por lo que `my-plugin/skills/review/SKILL.md` con `name: fancy` se convierte en `/my-plugin:fancy`. El comando desnudo `/fancy` también invoca el skill a menos que otro comando ya use ese nombre. Si el `name` que escribes ya comienza con el prefijo propio del plugin, Claude Code no añade el prefijo nuevamente en v2.1.246 o posterior. Por ejemplo, `name: my-plugin:fancy` sigue siendo `/my-plugin:fancy`. De v2.1.216 a v2.1.245, Claude Code duplicaba el prefijo cuando el `name` ya lo llevaba.419En un skill de plugin, el frontmatter `name` reemplaza el nombre del directorio en el último segmento del comando, por lo que `my-plugin/skills/review/SKILL.md` con `name: fancy` se convierte en `/my-plugin:fancy`. El comando desnudo `/fancy` también invoca el skill a menos que otro comando ya use ese nombre. Si el `name` que escribes ya comienza con el prefijo propio del plugin, Claude Code no añade el prefijo nuevamente en v2.1.246 o posterior. Por ejemplo, `name: my-plugin:fancy` sigue siendo `/my-plugin:fancy`. De v2.1.216 a v2.1.245, Claude Code duplicaba el prefijo cuando el `name` ya lo llevaba.

419 420 

420En [sesiones no interactivas](/docs/es/headless), los nombres `help` y `feedback` no están reservados para sus comandos integrados solo de terminal, por lo que un skill de plugin con uno de esos nombres mantiene su comando desnudo allí. Todos los demás nombres de integrados solo de terminal, como `/login`, permanecen reservados aunque el comando no pueda ejecutarse en esas sesiones. Un skill sincronizado llamado `help` o `feedback` aún se omite allí, porque Claude Code [omite un skill sincronizado](#when-a-synced-skill-name-matches-another-command) cuyo nombre coincide con cualquier comando integrado, independientemente de si ese comando puede ejecutarse.421En [sesiones no interactivas](/docs/es/headless), los nombres `help` y `feedback` no están reservados para sus comandos integrados solo de terminal, por lo que un skill de plugin con uno de esos nombres mantiene su comando desnudo allí. Todos los demás nombres de integrados solo de terminal, como `/login`, permanecen reservados aunque el comando no pueda ejecutarse en esas sesiones.

421 422 

422Para un `SKILL.md` raíz de plugin, no hay directorio de skill del que tomar el nombre, por lo que `name` proporciona el segmento final completo. Sin un campo `name`, Claude Code recurre al nombre del directorio del plugin.423Para un `SKILL.md` raíz de plugin, no hay directorio de skill del que tomar el nombre, por lo que `name` proporciona el segmento final completo. Sin un campo `name`, Claude Code recurre al nombre del directorio del plugin.

423 424 


719 720 

720Con el shell `bash` predeterminado, agregue `|| true` a cualquier otro comando que espere que salga con un código distinto de cero. Un script de verificación que sale con 1 cuando encuentra problemas es un ejemplo.721Con el shell `bash` predeterminado, agregue `|| true` a cualquier otro comando que espere que salga con un código distinto de cero. Un script de verificación que sale con 1 cuando encuentra problemas es un ejemplo.

721 722 

722Los comandos inyectados nunca solicitan permiso. Cuando la verificación de permisos de un comando devuelve algo que no sea permitir, Claude Code aborta la invocación. Esto incluye una regla que normalmente le preguntaría. El aborto muestra `Shell command permission check failed for pattern "..."`.723<h4 id="permission-checks-on-injected-commands">

724 Verificaciones de permisos en comandos inyectados

725</h4>

726 

727Los comandos inyectados nunca solicitan permiso mientras se renderiza la skill. Claude Code verifica cada uno contra sus [reglas de permisos](/docs/es/permissions) primero. Un comando que una regla de denegación coincide aborta la invocación con `Shell command permission check failed for pattern "..."`.

728 

729Fuera del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), cuando la verificación de permisos de un comando devuelve algo que no sea permitir, Claude Code aborta la invocación con el mismo error. Esto incluye una regla que normalmente le preguntaría. Para evitar que un comando sin coincidencia aborte aquí, apruébelo previamente con [`allowed-tools`](#pre-approve-tools-for-a-skill). Las reglas de denegación y solicitud aún anulan `allowed-tools`. Consulte [Manage permissions](/docs/es/permissions#manage-permissions).

723 730 

724Para evitar que un comando sin coincidencia aborte aquí, apruébelo previamente con [`allowed-tools`](#pre-approve-tools-for-a-skill). Una regla de solicitud o denegación coincidente aún aborta la invocación independientemente de `allowed-tools`. Consulte [Manage permissions](/docs/es/permissions#manage-permissions).731En modo automático, un comando que de otro modo necesitaría su aprobación no aborta la invocación. La skill se carga con una instrucción que le dice a Claude que ejecute el comando primero, y la llamada propia de Claude luego pasa por las [verificaciones habituales del modo automático](/docs/es/permission-modes#how-the-classifier-evaluates-actions). La invocación aún aborta en una [skill bifurcada](#run-skills-in-a-subagent) que establece `agent`, y en una sesión donde Claude no tiene la [herramienta de shell que ejecuta comandos inyectados](#how-injected-commands-run).

725 732 

726<h3 id="run-skills-in-a-subagent">733<h3 id="run-skills-in-a-subagent">

727 Ejecutar skills en un subagente734 Ejecutar skills en un subagente


753Las skills y los [subagentes](/docs/es/sub-agents) funcionan juntos en dos direcciones:760Las skills y los [subagentes](/docs/es/sub-agents) funcionan juntos en dos direcciones:

754 761 

755| Enfoque | Prompt del sistema | Tarea | También carga |762| Enfoque | Prompt del sistema | Tarea | También carga |

756| :--------------------------- | :---------------------------- | :------------------------------ | :---------------------------------------------------- |763| :--------------------------- | :---------------------------- | :------------------------------ | :--------------------------------------------------------------------------------------------------------- |

757| Skill con `context: fork` | Del tipo de agente | Contenido de SKILL.md | CLAUDE.md, excepto cuando el agente es Explore o Plan |764| Skill con `context: fork` | Del tipo de agente | Contenido de SKILL.md | CLAUDE.md, per the agent's [startup context](/docs/es/sub-agents#what-loads-at-startup) |

758| Subagente con campo `skills` | Cuerpo markdown del subagente | Mensaje de delegación de Claude | Skills precargadas + CLAUDE.md |765| Subagente con campo `skills` | Cuerpo markdown del subagente | Mensaje de delegación de Claude | Skills precargadas + CLAUDE.md, per the subagent's [startup context](/docs/es/sub-agents#what-loads-at-startup) |

759 766 

760Con `context: fork`, escribe la tarea en su skill y elige un tipo de agente para ejecutarla. Los agentes Explore y Plan integrados [omiten CLAUDE.md y el estado de git](/docs/es/sub-agents#what-loads-at-startup) para mantener su contexto pequeño, por lo que una skill bifurcada que usa `agent: Explore` solo ve el contenido de SKILL.md y el prompt del sistema del agente. Para lo inverso, donde define un subagente personalizado que usa skills como material de referencia, consulte [Subagentes](/docs/es/sub-agents#preload-skills-into-subagents).767Con `context: fork`, escribe la tarea en su skill y elige un tipo de agente para ejecutarla. Los agentes Explore y Plan integrados [omiten CLAUDE.md y el estado de git](/docs/es/sub-agents#what-loads-at-startup) para mantener su contexto pequeño, por lo que una skill bifurcada que usa `agent: Explore` solo ve el contenido de SKILL.md y el prompt del sistema del agente. Para lo inverso, donde define un subagente personalizado que usa skills como material de referencia, consulte [Subagentes](/docs/es/sub-agents#preload-skills-into-subagents).

761 768 

slack.md +14 −14

Details

35| Requisito | Detalles |35| Requisito | Detalles |

36| :--------------------- | :---------------------------------------------------------------------------------------------------- |36| :--------------------- | :---------------------------------------------------------------------------------------------------- |

37| Plan de Claude | Pro, Max, Team o Enterprise con acceso a Claude Code (asientos premium o asientos Chat + Claude Code) |37| Plan de Claude | Pro, Max, Team o Enterprise con acceso a Claude Code (asientos premium o asientos Chat + Claude Code) |

38| Claude Code en la web | El acceso a [Claude Code en la web](/docs/es/claude-code-on-the-web) debe estar habilitado |38| Sesiones en la nube | Las [sesiones en la nube](/docs/es/claude-code-on-the-web) están habilitadas para su cuenta |

39| Cuenta de GitHub | Conectada a Claude Code en la web con al menos un repositorio autenticado |39| Cuenta de GitHub | Conectada en [claude.ai/code](https://claude.ai/code) con al menos un repositorio autenticado |

40| Autenticación de Slack | Su cuenta de Slack vinculada a su cuenta de Claude a través de la aplicación Claude |40| Autenticación de Slack | Su cuenta de Slack vinculada a su cuenta de Claude a través de la aplicación Claude |

41 41 

42<h2 id="setting-up-claude-code-in-slack">42<h2 id="setting-up-claude-code-in-slack">


52 Después de que la aplicación esté instalada, autentica tu cuenta individual de Claude:52 Después de que la aplicación esté instalada, autentica tu cuenta individual de Claude:

53 53 

54 1. Abre la aplicación Claude en Slack haciendo clic en "Claude" en tu sección de Aplicaciones54 1. Abre la aplicación Claude en Slack haciendo clic en "Claude" en tu sección de Aplicaciones

55 2. Navega a la pestaña App Home55 2. Abre la pestaña App Home

56 3. Haz clic en "Connect" para vincular tu cuenta de Slack con tu cuenta de Claude56 3. Haz clic en "Connect" para vincular tu cuenta de Slack con tu cuenta de Claude

57 4. Completa el flujo de autenticación en tu navegador57 4. Completa el flujo de autenticación en tu navegador

58 </Step>58 </Step>

59 59 

60 <Step title="Configura Claude Code en la web">60 <Step title="Configura sesiones en la nube">

61 Asegúrate de que tu Claude Code en la web esté correctamente configurado:61 Asegúrate de que las sesiones en la nube estén correctamente configuradas para tu cuenta:

62 62 

63 * Visita [claude.ai/code](https://claude.ai/code) e inicia sesión con la misma cuenta que conectaste a Slack63 * Visita [claude.ai/code](https://claude.ai/code) e inicia sesión con la misma cuenta que conectaste a Slack

64 * Conecta tu cuenta de GitHub si aún no está conectada64 * Conecta tu cuenta de GitHub si aún no está conectada


66 </Step>66 </Step>

67 67 

68 <Step title="Elige tu modo de enrutamiento">68 <Step title="Elige tu modo de enrutamiento">

69 Después de conectar tus cuentas, configura cómo Claude maneja tus mensajes en Slack. Navega a la App Home de Claude en Slack para encontrar la configuración de **Routing Mode**.69 Después de conectar tus cuentas, configura cómo Claude maneja tus mensajes en Slack. Abre la App Home de Claude en Slack para encontrar la configuración de **Routing Mode**.

70 70 

71 | Modo | Comportamiento |71 | Modo | Comportamiento |

72 | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |72 | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


91 Detección automática91 Detección automática

92</h3>92</h3>

93 93 

94En el modo de enrutamiento Code + Chat, cuando mencionas @Claude en un canal o hilo de Slack, Claude detecta automáticamente si tu mensaje es una tarea de codificación. Las tareas de codificación van a Claude Code en la web. Cualquier otra cosa recibe una respuesta de chat regular. En el modo Code only, cada @mención va a Claude Code.94En el modo de enrutamiento Code + Chat, cuando mencionas @Claude en un canal o hilo de Slack, Claude detecta automáticamente si tu mensaje es una tarea de codificación. Las tareas de codificación van a una sesión de Claude Code en la nube. Cualquier otra cosa recibe una respuesta de chat regular. En el modo Code only, cada @mención va a Claude Code.

95 95 

96También puedes decirle explícitamente a Claude que maneje una solicitud como una tarea de codificación, incluso si no la detecta automáticamente.96También puedes decirle explícitamente a Claude que maneje una solicitud como una tarea de codificación, incluso si no la detecta automáticamente.

97 97 


135* **View Session**: Abre la sesión completa de Claude Code en tu navegador donde puedes ver todo el trabajo realizado, continuar la sesión o hacer solicitudes adicionales.135* **View Session**: Abre la sesión completa de Claude Code en tu navegador donde puedes ver todo el trabajo realizado, continuar la sesión o hacer solicitudes adicionales.

136* **Create PR**: Crea una solicitud de extracción directamente desde los cambios de la sesión.136* **Create PR**: Crea una solicitud de extracción directamente desde los cambios de la sesión.

137* **Retry as Code**: Si Claude inicialmente responde como un asistente de chat pero querías una sesión de codificación, haz clic en este botón para reintentar la solicitud como una tarea de Claude Code.137* **Retry as Code**: Si Claude inicialmente responde como un asistente de chat pero querías una sesión de codificación, haz clic en este botón para reintentar la solicitud como una tarea de Claude Code.

138* **Change Repo**: Te permite seleccionar un repositorio diferente si Claude eligió incorrectamente.138* **Change Repo**: Le permite seleccionar un repositorio diferente si Claude eligió incorrectamente.

139 139 

140<h3 id="repository-selection">140<h3 id="repository-selection">

141 Selección de repositorio141 Selección de repositorio


182 182 

183**En Slack**: Verás actualizaciones de estado, resúmenes de finalización y botones de acción. La transcripción completa se conserva y siempre es accesible.183**En Slack**: Verás actualizaciones de estado, resúmenes de finalización y botones de acción. La transcripción completa se conserva y siempre es accesible.

184 184 

185**En la web**: La sesión completa de Claude Code con historial de conversación completo, todos los cambios de código y operaciones de archivo. Las sesiones permanecen en tu historial de Claude Code en [claude.ai/code](https://claude.ai/code), donde puedes continuar sesiones anteriores, consultarlas o crear solicitudes de extracción.185**En claude.ai/code**: La sesión completa de Claude Code con historial de conversación completo, todos los cambios de código y operaciones de archivo. Las sesiones permanecen en tu historial de Claude Code en [claude.ai/code](https://claude.ai/code), donde puedes continuar sesiones anteriores, consultarlas o crear solicitudes de extracción.

186 186 

187Para cuentas Enterprise y Team, las sesiones creadas desde Claude en Slack son187Para cuentas Enterprise y Team, las sesiones creadas desde Claude en Slack son

188automáticamente visibles para la organización. Consulta [Compartir sesiones de Claude Code en la web](/docs/es/claude-code-on-the-web#share-sessions)188automáticamente visibles para la organización. Consulta [compartir sesiones](/docs/es/claude-code-on-the-web#share-sessions)

189para más detalles.189para más detalles.

190 190 

191<h2 id="best-practices">191<h2 id="best-practices">


244 El repositorio no se muestra244 El repositorio no se muestra

245</h3>245</h3>

246 246 

2471. Conecta el repositorio en Claude Code en la web en [claude.ai/code](https://claude.ai/code)2471. Conecta el repositorio en [claude.ai/code](https://claude.ai/code)

2482. Verifica tus permisos de GitHub para ese repositorio2482. Verifica tus permisos de GitHub para ese repositorio

2493. Intenta desconectar y reconectar tu cuenta de GitHub2493. Intenta desconectar y reconectar tu cuenta de GitHub

250 250 


269 269 

270* **Solo GitHub**: Los repositorios deben estar en GitHub.270* **Solo GitHub**: Los repositorios deben estar en GitHub.

271* **Un PR a la vez**: Cada sesión puede crear una solicitud de extracción.271* **Un PR a la vez**: Cada sesión puede crear una solicitud de extracción.

272* **Se requiere acceso web**: Los usuarios necesitan acceso a Claude Code en la web; sin él, Claude responde con respuestas de chat estándar.272* **Se requiere acceso a sesiones en la nube**: Los usuarios necesitan acceso a [sesiones en la nube](/docs/es/claude-code-on-the-web); sin él, Claude responde con respuestas de chat estándar.

273 273 

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

275 Recursos relacionados275 Recursos relacionados

276</h2>276</h2>

277 277 

278<CardGroup>278<CardGroup>

279 <Card title="Claude Code en la web" icon="globe" href="/docs/es/claude-code-on-the-web">279 <Card title="Claude Code en la nube" icon="cloud" href="/docs/es/claude-code-on-the-web">

280 Obtén más información sobre Claude Code en la web280 Obtén más información sobre sesiones en la nube

281 </Card>281 </Card>

282 282 

283 <Card title="Claude para Slack" icon="slack" href="https://claude.com/claude-and-slack">283 <Card title="Claude para Slack" icon="slack" href="https://claude.com/claude-and-slack">

statusline.md +1 −1

Details

86 Construir una línea de estado paso a paso86 Construir una línea de estado paso a paso

87</h2>87</h2>

88 88 

89Este tutorial muestra lo que está sucediendo bajo el capó creando manualmente una línea de estado que muestra el modelo actual, el directorio de trabajo y el porcentaje de uso de la ventana de contexto.89Este tutorial muestra lo que `/statusline` configura para ti creando manualmente una línea de estado que muestra el modelo actual, el directorio de trabajo y el porcentaje de uso de la ventana de contexto.

90 90 

91<Note>Ejecutar [`/statusline`](#use-the-%2Fstatusline-command) con una descripción de lo que deseas configura todo esto automáticamente para ti.</Note>91<Note>Ejecutar [`/statusline`](#use-the-%2Fstatusline-command) con una descripción de lo que deseas configura todo esto automáticamente para ti.</Note>

92 92 

sub-agents.md +111 −104

Details

32 32 

33Claude Code incluye subagentes integrados que Claude utiliza automáticamente cuando es apropiado. Cada uno hereda los permisos de la conversación principal; la mayoría se ejecuta con un conjunto de herramientas restringido.33Claude Code incluye subagentes integrados que Claude utiliza automáticamente cuando es apropiado. Cada uno hereda los permisos de la conversación principal; la mayoría se ejecuta con un conjunto de herramientas restringido.

34 34 

35Explore y Plan omiten sus archivos CLAUDE.md y el estado de git de la sesión principal para mantener la investigación rápida y económica. Todos los demás subagentes integrados y [subagentes personalizados](#configure-subagents) cargan ambos. Para el desglose completo de lo que llega a un subagente, consulte [qué se carga al iniciar](#what-loads-at-startup).35Explore y Plan omiten sus archivos CLAUDE.md y el estado de git de la sesión principal para mantener la investigación rápida y económica. Todos los demás subagentes integrados y [subagentes personalizados](#configure-subagents) cargan ambos, a menos que su definición establezca el campo [`omitClaudeMd`](#supported-frontmatter-fields) para omitir los archivos CLAUDE.md del usuario, proyecto y local. Para el desglose completo de lo que llega a un subagente, consulte [qué se carga al iniciar](#what-loads-at-startup).

36 36 

37<Tabs>37<Tabs>

38 <Tab title="Explore">38 <Tab title="Explore">


230 </Tab>230 </Tab>

231</Tabs>231</Tabs>

232 232 

233La bandera `--agents` acepta JSON con un campo `prompt` más estos campos de [frontmatter](#supported-frontmatter-fields): `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, e `isolation`. Use `prompt` para el mensaje del sistema, equivalente al cuerpo markdown en subagentes basados en archivos. Cada clave de nivel superior en el JSON es el nombre del agente. No comience un nombre con `-`.233La bandera `--agents` acepta JSON con un campo `prompt` más estos campos de [frontmatter](#supported-frontmatter-fields): `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd`, e `isolation`. Use `prompt` para el mensaje del sistema, equivalente al cuerpo markdown en subagentes basados en archivos.

234 

235Cada clave de nivel superior en el JSON es el nombre del agente. No comience un nombre con `-`.

234 236 

235Para lo que Claude Code hace con un valor que no puede cargar, y las banderas y variable de entorno que omiten esa verificación, consulte [`Configuración de --agents inválida`](/docs/es/errors#invalid-agents-configuration).237Para lo que Claude Code hace con un valor que no puede cargar, y las banderas y variable de entorno que omiten esa verificación, consulte [`Configuración de --agents inválida`](/docs/es/errors#invalid-agents-configuration).

236 238 


313| `hooks` | No | [Hooks de ciclo de vida](#define-hooks-for-subagents) limitados a este subagente. Se ignora para [subagentes de plugin](#choose-the-subagent-scope) |315| `hooks` | No | [Hooks de ciclo de vida](#define-hooks-for-subagents) limitados a este subagente. Se ignora para [subagentes de plugin](#choose-the-subagent-scope) |

314| `memory` | No | [Alcance de memoria persistente](#enable-persistent-memory): `user`, `project`, o `local`. Habilita aprendizaje entre sesiones |316| `memory` | No | [Alcance de memoria persistente](#enable-persistent-memory): `user`, `project`, o `local`. Habilita aprendizaje entre sesiones |

315| `background` | No | Establecer en `true` para mantener este subagente en segundo plano incluso cuando Claude pide ejecutarlo en primer plano. Donde [fork mode](#turn-fork-mode-on-or-off) está activado, Claude Code ya ejecuta los subagentes que Claude genera [en segundo plano](#run-subagents-in-foreground-or-background) |317| `background` | No | Establecer en `true` para mantener este subagente en segundo plano incluso cuando Claude pide ejecutarlo en primer plano. Donde [fork mode](#turn-fork-mode-on-or-off) está activado, Claude Code ya ejecuta los subagentes que Claude genera [en segundo plano](#run-subagents-in-foreground-or-background) |

318| `omitClaudeMd` | No | Establecer en `true` para lanzar este subagente sin los archivos CLAUDE.md de usuario, proyecto y local; [archivos de política administrada](/docs/es/memory#how-claude-md-files-load) aún se cargan, excepto para [subagentes administrados](#choose-the-subagent-scope). Úselo para subagentes que toman todo lo que necesitan del [mensaje de delegación](#what-loads-at-startup). Se ignora cuando el agente se ejecuta como el agente de sesión principal a través de `--agent` o la configuración `agent`. Requiere Claude Code v2.1.271 o posterior |

316| `effort` | No | Nivel de esfuerzo cuando este subagente está activo. Anula el nivel de esfuerzo de la sesión. Por defecto: hereda de la sesión. Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo |319| `effort` | No | Nivel de esfuerzo cuando este subagente está activo. Anula el nivel de esfuerzo de la sesión. Por defecto: hereda de la sesión. Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo |

317| `isolation` | No | Establecer en `worktree` para ejecutar el subagente en un [git worktree](/docs/es/worktrees) temporal, dándole una copia aislada del repositorio ramificada por defecto desde su [rama predeterminada](/docs/es/worktrees#choose-the-base-branch) en lugar del `HEAD` de la sesión principal. El worktree se limpia automáticamente si el subagente no realiza cambios |320| `isolation` | No | Establecer en `worktree` para ejecutar el subagente en un [git worktree](/docs/es/worktrees) temporal, dándole una copia aislada del repositorio ramificada por defecto desde su [rama predeterminada](/docs/es/worktrees#choose-the-base-branch) en lugar del `HEAD` de la sesión principal. El worktree se limpia automáticamente si el subagente no realiza cambios |

318| `color` | No | Color de visualización para el subagente en la lista de tareas y transcripción. Acepta `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan` |321| `color` | No | Color de visualización para el subagente en la lista de tareas y transcripción. Acepta `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan` |


439* `WaitForMcpServers`442* `WaitForMcpServers`

440* `Workflow`443* `Workflow`

441 444 

442El segundo filtro se aplica a subagentes que se ejecutan en segundo plano. Aparte de `Agent` y `ExitPlanMode`, que siguen las condiciones del primer filtro dondequiera que se ejecute el subagente, un subagente en segundo plano mantiene todas las herramientas MCP pero solo estas herramientas integradas: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage`, y `Artifact`. Claude Code elimina todas las otras herramientas integradas de un subagente en segundo plano, ya sean heredadas o listadas en el campo `tools`, por lo que la misma definición puede resolver a diferentes herramientas en primer plano y en segundo plano. La eliminación no reporta error a menos que deje la lista `tools` [resolviendo a nada](/docs/es/errors#agent-would-be-spawned-with-zero-tools).445El segundo filtro se aplica a subagentes que se ejecutan en segundo plano. Aparte de `Agent` y `ExitPlanMode`, que siguen las condiciones del primer filtro dondequiera que se ejecute el subagente, un subagente en segundo plano mantiene todas las herramientas MCP pero solo estas herramientas integradas: `Read`, `Grep`, `Glob`, `Bash`, `PowerShell`, `Edit`, `Write`, `NotebookEdit`, `WebFetch`, `WebSearch`, `TodoWrite`, `Skill`, `ToolSearch`, `EnterWorktree`, `ExitWorktree`, `Monitor`, `TaskStop`, `SendMessage`, y `Artifact`, más [`SubagentHandback`](/docs/es/tools-reference) para un subagente que reporta a través de él. Claude Code elimina todas las otras herramientas integradas de un subagente en segundo plano, ya sean heredadas o listadas en el campo `tools`, por lo que la misma definición puede resolver a diferentes herramientas en primer plano y en segundo plano. La eliminación no reporta error a menos que deje la lista `tools` [resolviendo a nada](/docs/es/errors#agent-would-be-spawned-with-zero-tools).

443 446 

444[`ListAgents`](/docs/es/cross-session-messaging) sigue estos filtros como cualquier herramienta integrada: un subagente en primer plano la hereda en sesiones donde la mensajería entre sesiones está habilitada, y un subagente en segundo plano no la mantiene.447[`ListAgents`](/docs/es/cross-session-messaging) sigue estos filtros como cualquier herramienta integrada: un subagente en primer plano la hereda en sesiones donde la mensajería entre sesiones está habilitada, y un subagente en segundo plano no la mantiene.

445 448 


578 581 

579El modo de permiso de la conversación principal decide si Claude Code usa el valor que establece:582El modo de permiso de la conversación principal decide si Claude Code usa el valor que establece:

580 583 

581* Cuando la conversación principal está en `bypassPermissions`, `acceptEdits`, o [modo auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el subagente se ejecuta en ese mismo modo y Claude Code ignora el `permissionMode` que establece. Bajo modo auto, el clasificador evalúa las llamadas de herramientas del subagente con las reglas de bloqueo y permiso de la conversación principal.584* Cuando la conversación principal está en `bypassPermissions`, `acceptEdits`, o [modo auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el subagente se ejecuta en ese mismo modo y Claude Code ignora el `permissionMode` que establece. Bajo modo auto, el clasificador evalúa las llamadas de herramientas del subagente con las reglas de bloqueo y permiso de la conversación principal. Cuando el subagente termina, el clasificador también revisa su trabajo y su informe final antes de que el informe se entregue, como [Cómo el modo auto maneja subagentes](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) describe.

582* Cuando la conversación principal está en modo `default`, `dontAsk`, o `plan`, el subagente se ejecuta en el modo de permiso que establece, excepto `bypassPermissions`. Un subagente que declara `bypassPermissions` mantiene el modo de la conversación principal en su lugar. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.585* Cuando la conversación principal está en modo `default`, `dontAsk`, o `plan`, el subagente se ejecuta en el modo de permiso que establece, excepto `bypassPermissions`. Un subagente que declara `bypassPermissions` mantiene el modo de la conversación principal en su lugar. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.

583 586 

584`permissionMode` acepta estos valores, y `manual` como alias para `default`:587`permissionMode` acepta estos valores, y `manual` como alias para `default`:


842</h2>845</h2>

843 846 

844<h3 id="understand-automatic-delegation">847<h3 id="understand-automatic-delegation">

845 Entender delegación automática848 Entender la delegación automática

846</h3>849</h3>

847 850 

848Claude delega automáticamente tareas basadas en la descripción de la tarea en su solicitud, el campo `description` en configuraciones de subagentes y el contexto actual. Para alentar delegación proactiva, incluya frases como "use proactively" en el campo description de su subagente.851Claude delega tareas automáticamente en función de la descripción de la tarea en tu solicitud, el campo `description` en las configuraciones de subagentes y el contexto actual. Para fomentar la delegación proactiva, incluye frases como "use proactively" en el campo de descripción de tu subagente.

849 852 

850Mantenga las descripciones breves: Claude Code muestra una advertencia de inicio cuando las descripciones combinadas de sus subagentes superan [el límite de 15,000 tokens](/docs/es/errors#agent-descriptions-are-over-the-15000-token-limit), y aún carga cada subagente.853Mantén las descripciones breves: Claude Code muestra una advertencia de inicio cuando las descripciones combinadas de tus subagentes superan el [límite de 15,000 tokens](/docs/es/errors#agent-descriptions-are-over-the-15000-token-limit), y aún así carga todos los subagentes.

851 854 

852<h3 id="invoke-subagents-explicitly">855<h3 id="invoke-subagents-explicitly">

853 Invocar subagentes explícitamente856 Invocar subagentes explícitamente

854</h3>857</h3>

855 858 

856Cuando la delegación automática no es suficiente, puede solicitar un subagente usted mismo. Tres patrones escalan desde una sugerencia única a un valor predeterminado de sesión completa:859Cuando la delegación automática no es suficiente, puedes solicitar un subagente tú mismo. Tres patrones escalan desde una sugerencia única hasta un valor predeterminado de toda la sesión:

857 860 

858* **Lenguaje natural**: nombre el subagente en su solicitud; Claude decide si delegar861* **Lenguaje natural**: nombra el subagente en tu solicitud; Claude decide si delega

859* **@-mention**: garantiza que el subagente se ejecute para una tarea862* **@-mention**: garantiza que el subagente se ejecute para una tarea

860* **Sesión completa**: toda la sesión usa el mensaje del sistema del subagente, restricciones de herramientas y modelo a través de la bandera `--agent` o la configuración `agent`863* **Sesión completa**: toda la sesión utiliza el símbolo del sistema del subagente, las restricciones de herramientas y el modelo a través de la bandera `--agent` o la configuración `agent`

861 864 

862Para lenguaje natural, no hay sintaxis especial. Nombre el subagente y Claude típicamente delega:865Para lenguaje natural, no hay sintaxis especial. Nombra el subagente y Claude típicamente delega:

863 866 

864```text wrap theme={null}867```text wrap theme={null}

865Use the test-runner subagent to fix failing tests868Use the test-runner subagent to fix failing tests

866Have the code-reviewer subagent look at my recent changes869Have the code-reviewer subagent look at my recent changes

867```870```

868 871 

869**@-mention el subagente.** Escriba `@` y elija el subagente del typeahead, de la misma manera que @-menciona archivos. Esto asegura que ese subagente específico se ejecute en lugar de dejar la opción a Claude:872**@-mention el subagente.** Escribe `@` y elige el subagente del typeahead, de la misma manera que @-mencionas archivos. Esto asegura que se ejecute ese subagente específico en lugar de dejar la elección a Claude:

870 873 

871```text wrap theme={null}874```text wrap theme={null}

872@"code-reviewer (agent)" look at the auth changes875@"code-reviewer (agent)" look at the auth changes

873```876```

874 877 

875Su mensaje completo aún va a Claude, que escribe el mensaje de tarea del subagente basado en lo que pidió. El @-mention controla qué subagente Claude invoca, no qué mensaje recibe.878Tu mensaje completo aún va a Claude, que escribe el símbolo del sistema de la tarea del subagente en función de lo que solicitaste. El @-mention controla qué subagente invoca Claude, no qué símbolo del sistema recibe.

876 879 

877Los subagentes proporcionados por un [plugin](/docs/es/plugins) habilitado aparecen en el typeahead bajo su nombre con alcance, como `my-plugin:code-reviewer` o `my-plugin:review:security` cuando el plugin [organiza agentes en subcarpetas](#choose-the-subagent-scope). Los subagentes de fondo nombrados actualmente en ejecución en la sesión también aparecen en el typeahead, mostrando su estado junto al nombre.880Los subagentes proporcionados por un [plugin](/docs/es/plugins) habilitado aparecen en el typeahead bajo su nombre con alcance, como `my-plugin:code-reviewer` o `my-plugin:review:security` cuando el plugin [organiza agentes en subcarpetas](#choose-the-subagent-scope). Los subagentes de fondo nombrados que se ejecutan actualmente en la sesión también aparecen en el typeahead, mostrando su estado junto al nombre.

878 881 

879También puede escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`. Mientras escribe esta forma, el typeahead muestra coincidencias de archivos en lugar de agentes. La mención del agente aún se resuelve cuando envía.882También puedes escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`. Mientras escribes esta forma, el typeahead muestra coincidencias de archivos en lugar de agentes. La mención del agente aún se resuelve cuando envías.

880 883 

881**Ejecute toda la sesión como un subagente.** Pase [`--agent <name>`](/docs/es/cli-reference) para iniciar una sesión donde el hilo principal en sí toma el mensaje del sistema del subagente, restricciones de herramientas y modelo:884**Ejecuta toda la sesión como un subagente.** Pasa [`--agent <name>`](/docs/es/cli-reference) para iniciar una sesión donde el hilo principal en sí toma el símbolo del sistema del subagente, las restricciones de herramientas y el modelo:

882 885 

883```bash theme={null}886```bash theme={null}

884claude --agent code-reviewer887claude --agent code-reviewer

885```888```

886 889 

887El mensaje del sistema del subagente reemplaza completamente el mensaje del sistema predeterminado de Claude Code, de la misma manera que [`--system-prompt`](/docs/es/cli-reference) lo hace. Los archivos `CLAUDE.md` y la memoria del proyecto aún se cargan a través del flujo de mensajes normal. El nombre del agente aparece como `@<name>` en el encabezado de inicio para que pueda confirmar que está activo.890El símbolo del sistema del subagente reemplaza completamente el símbolo del sistema predeterminado de Claude Code, de la misma manera que [`--system-prompt`](/docs/es/cli-reference) lo hace. Los archivos `CLAUDE.md` y la memoria del proyecto aún se cargan a través del flujo de mensajes normal, incluso cuando la definición del agente establece [`omitClaudeMd`](#supported-frontmatter-fields).

891 

892El nombre del agente aparece como `@<name>` en el encabezado de inicio para que puedas confirmar que está activo.

888 893 

889Esto funciona con subagentes integrados y personalizados, y la opción persiste cuando reanuda la sesión: Claude Code restaura el mensaje del sistema del agente, restricciones de herramientas y modelo junto con la conversación. Si el agente ya no existe cuando reanuda, la sesión continúa con las herramientas predeterminadas y muestra una [advertencia que nombra el agente](/docs/es/errors#session-agent-no-longer-available). Para el mensaje del sistema en cualquier caso, vea [Banderas de mensaje del sistema en conversaciones reanudadas](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations).894Esto funciona con subagentes integrados y personalizados, y la elección persiste cuando reanudas la sesión: Claude Code restaura las restricciones de herramientas y el modelo del agente junto con la conversación. Si el agente ya no existe cuando reanudas, la sesión continúa con las herramientas predeterminadas y muestra una [advertencia que nombra el agente](/docs/es/errors#session-agent-no-longer-available). Para el símbolo del sistema en cualquier caso, consulta [Banderas de símbolo del sistema en conversaciones reanudadas](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations).

890 895 

891Para un subagente proporcionado por plugin, puede pasar solo el nombre del agente y Claude Code lo encontrará:896Para un subagente proporcionado por un plugin, puedes pasar solo el nombre del agente y Claude Code lo encuentra:

892 897 

893```bash theme={null}898```bash theme={null}

894claude --agent security-reviewer899claude --agent security-reviewer

895```900```

896 901 

897Si múltiples plugins proporcionan agentes con el mismo nombre, pase el nombre con alcance para desambiguar:902Si varios plugins proporcionan agentes con el mismo nombre, pasa el nombre con alcance para desambiguar:

898 903 

899```bash theme={null}904```bash theme={null}

900claude --agent my-plugin:security-reviewer905claude --agent my-plugin:security-reviewer

901```906```

902 907 

903Si el plugin coloca el agente en una subcarpeta de su directorio `agents/`, incluya la subcarpeta en el nombre con alcance, por ejemplo `claude --agent my-plugin:review:security`.908Si el plugin coloca el agente en una subcarpeta de su directorio `agents/`, incluye la subcarpeta en el nombre con alcance, por ejemplo `claude --agent my-plugin:review:security`.

904 909 

905Para hacerlo el predeterminado para cada sesión en un proyecto, establezca `agent` en `.claude/settings.json`:910Para hacerlo el predeterminado para cada sesión en un proyecto, establece `agent` en `.claude/settings.json`:

906 911 

907```json theme={null}912```json theme={null}

908{913{


918 923 

919Los subagentes pueden ejecutarse en primer plano o en fondo:924Los subagentes pueden ejecutarse en primer plano o en fondo:

920 925 

921* **Subagentes en primer plano** bloquean la conversación principal hasta completarse. Las solicitudes de permiso se le pasan a usted a medida que surgen.926* **Subagentes en primer plano** bloquean la conversación principal hasta completarse. Los avisos de permiso se te pasan a medida que surgen.

922* **Subagentes en fondo** se ejecutan concurrentemente mientras continúa trabajando. Cuando un subagente en fondo alcanza una llamada de herramienta que necesita permiso, Claude Code muestra la solicitud en su sesión principal y nombra el subagente que está preguntando. Apruebe para permitir que el subagente continúe, o presione Esc para denegar esa llamada de herramienta sin detener el subagente. Antes de v2.1.186, los subagentes en fondo denegaban automáticamente cualquier llamada de herramienta que habría solicitado.927* **Subagentes en fondo** se ejecutan simultáneamente mientras continúas trabajando. Cuando un subagente en fondo llega a una llamada de herramienta que necesita permiso, Claude Code muestra el aviso en tu sesión principal y nombra el subagente que está pidiendo. Aprueba para permitir que el subagente continúe, o presiona Esc para negar esa llamada de herramienta sin detener el subagente. Antes de v2.1.186, los subagentes en fondo negaban automáticamente cualquier llamada de herramienta que hubiera solicitado.

923 928 

924Para cada subagente que Claude genera con la herramienta Agent, Claude Code elige primer plano o fondo del primero de estos casos que se aplica:929Para cada subagente que Claude genera con la herramienta Agent, Claude Code elige primer plano o fondo del primero de estos casos que se aplique:

925 930 

926* Si un compañero de [equipo de agentes](/docs/es/agent-teams#limitations) en proceso generó el subagente, Claude Code lo ejecuta en primer plano. Claude Code rechaza con un error generar un subagente de compañero cuya definición establece [`background: true`](#supported-frontmatter-fields). Donde [el modo fork](#turn-fork-mode-on-or-off) está desactivado y usted no ha [desactivado tareas en fondo](/docs/es/env-vars), Claude Code también rechaza con un error cuando un compañero establece `run_in_background: true`.931* Si un compañero de [equipo de agentes](/docs/es/agent-teams#limitations) en proceso generó el subagente, Claude Code lo ejecuta en primer plano. Claude Code rechaza con un error generar un subagente de un compañero cuya definición establece [`background: true`](#supported-frontmatter-fields). Donde el [modo fork](#turn-fork-mode-on-or-off) está desactivado y no has [desactivado tareas en fondo](/docs/es/env-vars), Claude Code también rechaza con un error cuando un compañero establece `run_in_background: true`.

927* Si establece [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/es/env-vars) en `1`, Claude Code ejecuta el subagente en primer plano, en todo tipo de sesión y si el modo fork está activado o no.932* Si estableces [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/es/env-vars) en `1`, Claude Code ejecuta el subagente en primer plano, en todo tipo de sesión y si el modo fork está activado o no.

928* Donde [el modo fork](#turn-fork-mode-on-or-off) está activado, como lo está por defecto en una sesión interactiva, Claude Code ejecuta el subagente en fondo, subagentes fork y no-fork por igual, y Claude no puede pedir el primer plano.933* Donde el [modo fork](#turn-fork-mode-on-or-off) está activado, como lo está por defecto en una sesión interactiva, Claude Code ejecuta el subagente en fondo, subagentes fork y no-fork por igual, y Claude no puede pedir el primer plano.

929* Donde el modo fork está desactivado, Claude ejecuta el subagente en fondo por defecto y en primer plano cuando necesita el resultado antes de continuar. El modo fork está desactivado en [modo no interactivo](/docs/es/headless) con `-p` y en el SDK del Agent a menos que lo active. Para mantener un subagente particular en fondo incluso cuando Claude quiere el resultado, establezca su campo frontmatter [`background`](#supported-frontmatter-fields) en `true`.934* Donde el modo fork está desactivado, Claude ejecuta el subagente en fondo por defecto y en primer plano cuando necesita el resultado antes de continuar. El modo fork está desactivado en [modo no interactivo](/docs/es/headless) con `-p` y en el Agent SDK a menos que lo actives. Para mantener un subagente particular en fondo incluso cuando Claude quiere el resultado, establece su campo frontmatter [`background`](#supported-frontmatter-fields) en `true`.

930 935 

931Para una habilidad con `context: fork`, Claude Code sigue las reglas en [Ejecutar habilidades en un subagente](/docs/es/skills#run-skills-in-a-subagent) en su lugar, si el modo fork está activado o no.936Para una skill con `context: fork`, Claude Code sigue las reglas en [Ejecutar skills en un subagente](/docs/es/skills#run-skills-in-a-subagent) en su lugar, independientemente de si el modo fork está activado o no.

932 937 

933Los subagentes en fondo se ejecutan con un [conjunto de herramientas integradas más pequeño](#available-tools) que los subagentes en primer plano, excepto para forks de conversación y [subagentes reanudados](#resume-subagents) en primer plano.938Los subagentes en fondo se ejecutan con un [conjunto de herramientas integradas más pequeño](#available-tools) que los subagentes en primer plano, excepto para forks de conversación y subagentes en primer plano [reanudados](#resume-subagents).

934 939 

935Los subagentes en fondo muestran cada solicitud de permiso en su sesión principal. Cuando responde una de esas solicitudes con una opción que dura más allá de esa llamada de herramienta, como una concesión que dura el resto de la sesión, Claude Code aplica su respuesta a toda la sesión, incluyendo su conversación principal.940Los subagentes en fondo muestran cada aviso de permiso en tu sesión principal. Cuando respondes a uno de esos avisos con una opción que dura más allá de esa llamada de herramienta, como una concesión que dura el resto de la sesión, Claude Code aplica tu respuesta a toda la sesión, incluyendo tu conversación principal.

936 941 

937Un subagente en fondo puede dejar un comando [Bash o PowerShell](/docs/es/tools-reference#background-commands) en fondo [ejecutándose más allá del final de su turno](/docs/es/interactive-mode#how-backgrounding-works). Cuando ese comando termina, Claude Code envía al subagente una notificación.942Un subagente en fondo puede dejar un comando [Bash o PowerShell](/docs/es/tools-reference#background-commands) en fondo [ejecutándose más allá del final de su turno](/docs/es/interactive-mode#how-backgrounding-works). Cuando ese comando termina, Claude Code envía al subagente una notificación.

938 943 

939Los resultados de un subagente en fondo llegan a Claude como una notificación de finalización en un turno posterior. Claude espera esa notificación antes de reportar los resultados del subagente, y si pregunta sobre el progreso primero, reporta que el subagente aún se está ejecutando. Antes de v2.1.211, Claude a veces reportaba resultados para un subagente en fondo que no había terminado.944Los resultados de un subagente en fondo llegan a Claude como una notificación de finalización en un turno posterior. Claude espera esa notificación antes de reportar los resultados del subagente, y si preguntas sobre el progreso primero, reporta que el subagente aún se está ejecutando. Antes de v2.1.211, Claude a veces reportaba resultados para un subagente en fondo que no había terminado.

940 945 

941También puede dirigir esto usted mismo:946También puedes dirigir esto tú mismo:

942 947 

943* Donde el modo fork está desactivado, pida a Claude que ejecute una tarea en fondo o en primer plano948* Donde el modo fork está desactivado, pide a Claude que ejecute una tarea en fondo o en primer plano

944* Presione **Ctrl+B** para poner en fondo una tarea en ejecución949* Presiona **Ctrl+B** para poner en fondo una tarea en ejecución

945 950 

946Claude Code borra la fila de un subagente en fondo del panel de subagentes debajo de la entrada de solicitud de una de dos maneras, dependiendo de cómo terminó el subagente:951Claude Code borra la fila de un subagente en fondo del panel de subagentes debajo de la entrada de solicitud de dos maneras, dependiendo de cómo terminó el subagente:

947 952 

948* Cuando un subagente termina exitosamente, Claude Code elimina su fila inmediatamente y, excepto en [modo lector de pantalla](/docs/es/accessibility), muestra `/tasks to see subagents` en el pie de página durante 30 segundos. Durante esos 30 segundos, ejecute [`/tasks`](/docs/es/commands) y presione `Enter` en el subagente para abrir su transcripción. Antes de v2.1.232, Claude Code mantenía la fila durante 30 segundos después de que el subagente terminaba, igual que uno fallido, y no mostraba ninguna pista de pie de página.953* Cuando un subagente termina exitosamente, Claude Code elimina su fila inmediatamente y, excepto en [modo lector de pantalla](/docs/es/accessibility), muestra `/tasks to see subagents` en el pie de página durante 30 segundos. Durante esos 30 segundos, ejecuta [`/tasks`](/docs/es/commands) y presiona `Enter` en el subagente para abrir su transcripción. Antes de v2.1.232, Claude Code mantenía la fila durante 30 segundos después de que el subagente terminaba, igual que uno fallido, y no mostraba ninguna pista de pie de página.

949* Cuando un subagente falla o usted lo detiene, Claude Code mantiene su fila durante 30 segundos. Para borrar la fila más rápido, selecciónela y presione `x`.954* Cuando un subagente falla o lo detienes, Claude Code mantiene su fila durante 30 segundos. Para borrar la fila más rápido, selecciónala y presiona `x`.

950 955 

951Un subagente en fondo que se completa permanece listado en [`/tasks`](/docs/es/commands), marcado como hecho y ordenado debajo del trabajo en ejecución, durante la misma ventana que la pista de pie de página anterior. Su vista de detalle permanece abierta cuando el subagente termina. Los subagentes que fallan o que usted detiene dejan la lista. Antes de v2.1.208, un subagente completado dejaba la lista en el momento en que terminaba y su vista de detalle se cerraba.956Un subagente en fondo que se completa permanece listado en [`/tasks`](/docs/es/commands), marcado como hecho y ordenado debajo del trabajo en ejecución, durante los mismos 30 segundos que la pista de pie de página. Su vista de detalle permanece abierta cuando el subagente termina. Los subagentes que fallan o que detienes dejan la lista. Antes de v2.1.208, un subagente completado dejaba la lista en el momento en que terminaba y su vista de detalle se cerraba.

952 957 

953<h3 id="subagent-names">958<h3 id="subagent-names">

954 Nombres de subagentes959 Nombres de subagentes

955</h3>960</h3>

956 961 

957Claude puede dar a un subagente un nombre pasando un parámetro `name` en la llamada de herramienta Agent, y puede hacerlo por su cuenta, sin preguntarle primero. El nombre hace que el subagente sea direccionable: Claude puede [enviarle un mensaje o reanudarlo por nombre](#resume-subagents) después de que termine.962Claude puede dar a un subagente un nombre pasando un parámetro `name` en la llamada de herramienta Agent, y puede hacerlo por su cuenta, sin pedirte permiso primero. El nombre hace que el subagente sea direccionable: Claude puede [enviarle un mensaje o reanudarlo por nombre](#resume-subagents) después de que termine.

958 963 

959En una sesión interactiva con [equipos de agentes](/docs/es/agent-teams) habilitados, un subagente que Claude genera desde la conversación principal con un `name` se lanza como un compañero en su lugar, a menos que la llamada sea un [fork](#fork-the-current-conversation) o pase `isolation` en la llamada en sí. Un valor `isolation` en el frontmatter del subagente no lo previene, y el compañero entonces se ejecuta en el directorio de trabajo de la sesión principal. Vea [Cómo Claude inicia equipos de agentes](/docs/es/agent-teams#how-claude-starts-agent-teams).964En una sesión interactiva con [equipos de agentes](/docs/es/agent-teams) habilitados, un subagente que Claude genera desde la conversación principal con un `name` se lanza como un compañero en su lugar, a menos que la llamada sea un [fork](#fork-the-current-conversation) o pase `isolation` en la llamada misma. Un valor `isolation` en el frontmatter del subagente no lo previene, y el compañero entonces se ejecuta en el directorio de trabajo de la sesión principal. Consulta [Cómo Claude inicia equipos de agentes](/docs/es/agent-teams#how-claude-starts-agent-teams).

960 965 

961<h3 id="api-errors-in-subagents">966<h3 id="api-errors-in-subagents">

962 Errores de API en subagentes967 Errores de API en subagentes

963</h3>968</h3>

964 969 

965Cuando algo [corta la respuesta de un subagente a mitad de flujo](/docs/es/errors#the-response-above-may-be-incomplete), y la respuesta parcial contiene texto pero sin llamadas de herramientas, Claude Code solicita al subagente que continúe en lugar de terminar la ejecución. Esto sucede en sesiones interactivas también. La ejecución termina en el error solo una vez que esas continuaciones se agotan.970Cuando algo [corta la respuesta de un subagente a mitad de la transmisión](/docs/es/errors#the-response-above-may-be-incomplete), y la respuesta parcial contiene texto pero sin llamadas de herramienta, Claude Code solicita al subagente que continúe en lugar de terminar la ejecución. Esto sucede también en sesiones interactivas. La ejecución termina en el error solo una vez que esas continuaciones se agotan.

966 971 

967A partir de v2.1.199, un subagente cuya ejecución termina en un error de API, como un límite de uso o un error de servidor repetido, reporta esa falla de vuelta a Claude en lugar de devolver el texto de error como si fueran los hallazgos del subagente. Lo que Claude recibe depende de dónde se ejecutó el subagente:972A partir de v2.1.199, un subagente cuya ejecución termina en un error de API, como un límite de uso o un error de servidor repetido, reporta esa falla de vuelta a Claude en lugar de devolver el texto de error como si fueran los hallazgos del subagente. Lo que Claude recibe depende de dónde se ejecutó el subagente:

968 973 

969* **Primer plano**: si un límite de velocidad, sobrecarga o error de servidor corta un subagente que ya produjo salida de texto, la herramienta Agent devuelve esa salida parcial con una nota de que el subagente fue cortado y no completó su tarea. Un subagente que no produjo nada, o cuya única salida fueron llamadas de herramientas, falla con [`Agent terminated early due to an API error`](/docs/es/errors#agent-terminated-early-due-to-an-api-error), seguido del detalle del error. En v2.1.199, un límite de velocidad, sobrecarga o error de servidor que cortó la forma de solo llamadas de herramientas devolvió un resultado parcial vacío que contenía solo la nota de corte en su lugar.974* **Primer plano**: si un límite de velocidad, sobrecarga o error de servidor corta un subagente que ya produjo salida de texto, la herramienta Agent devuelve esa salida parcial con una nota de que el subagente fue cortado y no completó su tarea. Un subagente que no produjo nada, o cuya única salida fueron llamadas de herramienta, falla con [`Agent terminated early due to an API error`](/docs/es/errors#agent-terminated-early-due-to-an-api-error), seguido del detalle del error. En v2.1.199, un límite de velocidad, sobrecarga o error de servidor que cortó la forma de solo llamadas de herramienta devolvió un resultado parcial vacío que contenía solo la nota de corte en su lugar.

970* **Fondo**: el subagente se marca como fallido, y el mensaje que Claude recibe cuando termina nombra el error de API e incluye la última salida del subagente, por lo que el trabajo parcial no se pierde.975* **Fondo**: el subagente se marca como fallido, y el mensaje que Claude recibe cuando termina nombra el error de API e incluye la última salida del subagente, por lo que el trabajo parcial no se pierde.

971 976 

972Cuando configura una [cadena de modelos de respaldo](/docs/es/model-config#fallback-model-chains) y un subagente encuentra una falla que la cadena cubre, como su modelo no disponible, Claude Code cambia el subagente al primer modelo en la cadena que acepta la solicitud. El subagente continúa trabajando en lugar de terminar en el error.977Cuando configuras una [cadena de modelo de respaldo](/docs/es/model-config#fallback-model-chains) y un subagente encuentra una falla que la cadena cubre, como que su modelo no esté disponible, Claude Code cambia el subagente al primer modelo en la cadena que acepta la solicitud. El subagente continúa trabajando en lugar de terminar en el error.

973 978 

974Una vez que el error de API subyacente se resuelve, pida a Claude que reintente la tarea o [reanude el subagente](#resume-subagents).979Una vez que el error de API subyacente se resuelve, pide a Claude que reintente la tarea o [reanude el subagente](#resume-subagents).

975 980 

976<h3 id="subagent-output-scanning">981<h3 id="subagent-output-scanning">

977 Escaneo de salida de subagentes982 Escaneo de salida de subagentes

978</h3>983</h3>

979 984 

980Claude Code escanea el informe final de cada subagente antes de que Claude lo lea. Un subagente puede haber leído archivos, páginas web o salida de comandos que nunca revisó, y el texto de esas fuentes puede llevar instrucciones dirigidas a la conversación principal. El escaneo nunca elimina ni reformula nada; hace dos tipos de cambios que puede notar en un informe:985Claude Code escanea el informe final de cada subagente antes de que Claude lo lea. Un subagente puede haber leído archivos, páginas web o salida de comandos que nunca revisaste, y el texto de esas fuentes puede llevar instrucciones dirigidas a la conversación principal. El escaneo nunca elimina ni reformula nada; hace dos tipos de cambios que puedes notar en un informe:

981 986 

982* **Inserción de barra invertida**: el escaneo inserta una barra invertida en texto que imita la propia salida de Claude Code, como una etiqueta `<system-reminder>` o una línea que comienza con `Human:` o `Assistant:`, para que la imitación se lea como texto ordinario en lugar de ser confundida con parte de la conversación.987* **Inserción de barra invertida**: el escaneo inserta una barra invertida en el texto que imita la salida propia de Claude Code, como una etiqueta `<system-reminder>` o una línea que comienza con `Human:` o `Assistant:`, para que la imitación se lea como texto ordinario en lugar de ser confundida con parte de la conversación.

983* **Línea de marcador**: el escaneo antepone una línea que comienza con `[harness: subagent output matched instruction-shaped pattern(s):` cuando el informe imita una etiqueta como `<system-reminder>` o menciona configuraciones de permiso como `bypassPermissions` o `--dangerously-skip-permissions`. Las menciones de configuración de permiso obtienen la línea de marcador, pero el texto en sí permanece como está escrito.988* **Línea de marcador**: el escaneo antepone una línea que comienza con `[harness: subagent output matched instruction-shaped pattern(s):` cuando el informe imita una etiqueta como `<system-reminder>` o menciona configuraciones de permiso como `bypassPermissions` o `--dangerously-skip-permissions`. Las menciones de configuración de permiso obtienen la línea de marcador, pero el texto en sí permanece como está escrito.

984 989 

985El escaneo no juzga si el contenido es malicioso, y no cambia lo que una instrucción en un informe puede hacer: una llamada de herramienta que el informe lleva a Claude a hacer aún pasa por los [controles de permiso](/docs/es/permissions) de la sesión y [sandboxing](/docs/es/sandboxing). No es un sustituto para [restringir lo que un subagente puede alcanzar](#control-subagent-capabilities).990El escaneo no juzga si el contenido es malicioso, y no cambia lo que una instrucción en un informe puede hacer: una llamada de herramienta que el informe lleva a Claude a hacer aún pasa por los [controles de permiso](/docs/es/permissions) y [sandboxing](/docs/es/sandboxing) de la sesión. No es un sustituto para [restringir lo que un subagente puede alcanzar](#control-subagent-capabilities).

986 991 

987<Note>992<Note>

988 El escaneo de salida de subagentes requiere Claude Code v2.1.210 o posterior.993 El escaneo de salida de subagentes requiere Claude Code v2.1.210 o posterior.


996 Aislar operaciones de alto volumen1001 Aislar operaciones de alto volumen

997</h4>1002</h4>

998 1003 

999Uno de los usos más efectivos para subagentes es aislar operaciones que producen grandes cantidades de salida. Ejecutar pruebas, obtener documentación o procesar archivos de registro puede consumir contexto significativo. Al delegar estos a un subagente, la salida detallada permanece en el contexto del subagente mientras solo el resumen relevante regresa a su conversación principal.1004Uno de los usos más efectivos para subagentes es aislar operaciones que producen grandes cantidades de salida. Ejecutar pruebas, obtener documentación o procesar archivos de registro puede consumir contexto significativo. Al delegar estos a un subagente, la salida detallada permanece en el contexto del subagente mientras solo el resumen relevante regresa a tu conversación principal.

1000 1005 

1001```text wrap theme={null}1006```text wrap theme={null}

1002Use a subagent to run the test suite and report only the failing tests with their error messages1007Use a subagent to run the test suite and report only the failing tests with their error messages


1006 Ejecutar investigación en paralelo1011 Ejecutar investigación en paralelo

1007</h4>1012</h4>

1008 1013 

1009Para investigaciones independientes, genere múltiples subagentes para trabajar simultáneamente:1014Para investigaciones independientes, genera múltiples subagentes para trabajar simultáneamente:

1010 1015 

1011```text wrap theme={null}1016```text wrap theme={null}

1012Research the authentication, database, and API modules in parallel using separate subagents1017Research the authentication, database, and API modules in parallel using separate subagents


1015Cada subagente explora su área independientemente, luego Claude sintetiza los hallazgos. Esto funciona mejor cuando las rutas de investigación no dependen una de la otra.1020Cada subagente explora su área independientemente, luego Claude sintetiza los hallazgos. Esto funciona mejor cuando las rutas de investigación no dependen una de la otra.

1016 1021 

1017<Warning>1022<Warning>

1018 Cuando los subagentes se completan, sus resultados regresan a su conversación principal. Ejecutar muchos subagentes que cada uno devuelve resultados detallados puede consumir contexto significativo.1023 Cuando los subagentes se completan, sus resultados regresan a tu conversación principal. Ejecutar muchos subagentes que cada uno devuelve resultados detallados puede consumir contexto significativo.

1019</Warning>1024</Warning>

1020 1025 

1021Para trabajo que necesita mantener la ejecución en paralelo o no cabe en una ventana de contexto, ejecútelo en [sesiones separadas](/docs/es/agents) y deje que Claude [pase hallazgos entre ellas](/docs/es/cross-session-messaging).1026Para trabajo que necesita seguir ejecutándose en paralelo o no cabe en una ventana de contexto, ejecútalo en [sesiones separadas](/docs/es/agents) y deja que Claude [pase hallazgos entre ellas](/docs/es/cross-session-messaging).

1022 1027 

1023<h4 id="chain-subagents">1028<h4 id="chain-subagents">

1024 Encadenar subagentes1029 Encadenar subagentes

1025</h4>1030</h4>

1026 1031 

1027Para flujos de trabajo de múltiples pasos, pida a Claude que use subagentes en secuencia. Cada subagente completa su tarea y devuelve resultados a Claude, que luego pasa contexto relevante al siguiente subagente.1032Para flujos de trabajo de múltiples pasos, pide a Claude que use subagentes en secuencia. Cada subagente completa su tarea y devuelve resultados a Claude, que luego pasa contexto relevante al siguiente subagente.

1028 1033 

1029```text wrap theme={null}1034```text wrap theme={null}

1030Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them1035Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them


1034 Elegir entre subagentes y conversación principal1039 Elegir entre subagentes y conversación principal

1035</h3>1040</h3>

1036 1041 

1037Use la **conversación principal** cuando:1042Usa la **conversación principal** cuando:

1038 1043 

1039* La tarea necesita ida y vuelta frecuente o refinamiento iterativo1044* La tarea necesita ida y vuelta frecuente o refinamiento iterativo

1040* Múltiples fases comparten contexto significativo, como planificación, implementación y prueba1045* Múltiples fases comparten contexto significativo, como planificación, implementación y pruebas

1041* Está haciendo un cambio rápido y dirigido1046* Estás haciendo un cambio rápido y dirigido

1042* La latencia importa. Un subagente que no es un [fork](#fork-the-current-conversation) comienza de nuevo y puede necesitar tiempo para recopilar contexto1047* La latencia importa. Un subagente que no es un [fork](#fork-the-current-conversation) comienza de nuevo y puede necesitar tiempo para reunir contexto

1043 1048 

1044Use **subagentes** cuando:1049Usa **subagentes** cuando:

1045 1050 

1046* La tarea produce salida detallada que no necesita en su contexto principal1051* La tarea produce salida detallada que no necesitas en tu contexto principal

1047* Desea aplicar restricciones de herramientas específicas o permisos1052* Quieres aplicar restricciones de herramientas o permisos específicos

1048* El trabajo es autónomo y puede devolver un resumen1053* El trabajo es autónomo y puede devolver un resumen

1049 1054 

1050Considere [Skills](/docs/es/skills) en su lugar cuando desee mensajes reutilizables o flujos de trabajo que se ejecuten en el contexto de conversación principal en lugar de contexto de subagente aislado.1055Considera [Skills](/docs/es/skills) en su lugar cuando quieras solicitudes reutilizables o flujos de trabajo que se ejecuten en el contexto de conversación principal en lugar de contexto de subagente aislado.

1051 1056 

1052Para una pregunta sobre algo ya en su conversación, use [`/btw`](/docs/es/interactive-mode#side-questions-with-%2Fbtw) en lugar de un subagente. Ve su contexto completo pero no tiene acceso a herramientas, y la respuesta no se agrega al historial.1057Para una pregunta sobre algo ya en tu conversación, usa [`/btw`](/docs/es/interactive-mode#side-questions-with-%2Fbtw) en lugar de un subagente. Ve tu contexto completo pero no tiene acceso a herramientas, y la respuesta no se añade al historial.

1053 1058 

1054<h3 id="let-subagents-spawn-their-own-subagents">1059<h3 id="let-subagents-spawn-their-own-subagents">

1055 Permitir que subagentes generen sus propios subagentes1060 Permitir que los subagentes generen sus propios subagentes

1056</h3>1061</h3>

1057 1062 

1058Por defecto, un subagente puede generar subagentes de su propio, hasta tres capas debajo de la conversación principal. En el límite de profundidad, Claude Code retiene la herramienta `Agent` de cada subagente excepto un [fork](#fork-the-current-conversation), por lo que un subagente en el límite hace su trabajo delegado en sí mismo y devuelve un resumen. Un fork en el límite mantiene `Agent` en su lista de herramientas heredada, pero la herramienta devuelve un error en lugar de generar.1063Por defecto, un subagente puede generar subagentes propios, hasta tres capas por debajo de la conversación principal. En el límite de profundidad, Claude Code retiene la herramienta `Agent` de cada subagente excepto un [fork](#fork-the-current-conversation), por lo que un subagente en el límite hace su trabajo delegado a sí mismo y devuelve un resumen. Un fork en el límite mantiene `Agent` en su lista de herramientas heredada, pero la herramienta devuelve un error en lugar de generar.

1059 1064 

1060Los subagentes anidados se adaptan a una tarea delegada que en sí se divide en subtareas paralelas, como un subagente revisor que distribuye un verificador por hallazgo, por lo que la salida intermedia nunca llega a su conversación principal. Solo el resumen del subagente de nivel superior regresa a usted.1065Los subagentes anidados se adaptan a una tarea delegada que a su vez se divide en subtareas paralelas, como un subagente revisor que envía un verificador por hallazgo. En una sesión interactiva, solo el resumen del subagente de nivel superior regresa a ti y la salida intermedia permanece fuera de tu conversación principal: un subagente que lanza subagentes en fondo espera sus resultados antes de terminar. En [modo no interactivo](/docs/es/headless) y el Agent SDK, el subagente de lanzamiento no espera, por lo que un subagente en fondo anidado que termina después de que su lanzador ha terminado reporta a tu conversación principal en su lugar.

1061 1066 

1062Para cambiar el límite, establezca [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/es/env-vars) al número de capas de subagentes que desea debajo de su conversación principal. Por ejemplo, esta entrada en [`settings.json`](/docs/es/settings) limita el anidamiento a dos capas:1067Para cambiar el límite, establece [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/es/env-vars) al número de capas de subagentes que quieres por debajo de tu conversación principal. Por ejemplo, esta entrada en [`settings.json`](/docs/es/settings) limita el anidamiento a dos capas:

1063 1068 

1064```json theme={null}1069```json theme={null}

1065{1070{


1069}1074}

1070```1075```

1071 1076 

1072Con este valor, sus subagentes pueden delegar a una segunda capa de los suyos, y esa segunda capa no puede delegar más. Establezca `1` para desactivar el anidamiento.1077Con este valor, tus subagentes pueden delegar a una segunda capa de los suyos, y esa segunda capa no puede delegar más. Establece `1` para desactivar el anidamiento.

1073 1078 

1074Un subagente anidado se configura de la misma manera que uno de nivel superior y se resuelve desde los mismos [alcances](#choose-the-subagent-scope). Para evitar que un subagente genere mientras el anidamiento está activado, como un revisor que debe permanecer de solo lectura, omita `Agent` de su lista [`tools`](#available-tools) o añádalo a `disallowedTools`.1079Un subagente anidado se configura de la misma manera que uno de nivel superior y se resuelve desde los mismos [alcances](#choose-the-subagent-scope). Para mantener un subagente sin generar mientras el anidamiento está activado, como un revisor que debe permanecer de solo lectura, omite `Agent` de su lista [`tools`](#available-tools) o añádelo a `disallowedTools`.

1075 1080 

1076Claude Code muestra subagentes anidados como un árbol en el panel de subagentes debajo de la entrada de solicitud y marca cada fila que aún tiene descendientes en el panel con un recuento `(+N)` de ellos. Abra una fila para ver los hermanos de ese subagente e hijos directos con una ruta de regreso a `main`.1081Claude Code muestra subagentes anidados como un árbol en el panel de subagentes debajo de la entrada de solicitud y marca cada fila que aún tiene descendientes en el panel con un conteo `(+N)` de ellos. Abre una fila para ver los hermanos y hijos directos de ese subagente con una ruta de vuelta a `main`.

1077 1082 

1078<Note>1083<Note>

1079 Las versiones anteriores usaban diferentes valores predeterminados:1084 Las versiones anteriores usaban diferentes valores predeterminados:

1080 1085 

1081 * **v2.1.172 a v2.1.216**: los subagentes podían anidar por defecto, hasta cinco capas de profundidad, y el límite no podía cambiarse.1086 * **v2.1.172 a v2.1.216**: los subagentes podían anidar por defecto, hasta cinco capas de profundidad, y el límite no podía cambiarse.

1082 * **v2.1.217 a v2.1.218**: el límite predeterminado era uno, por lo que un subagente no podía generar el suyo a menos que lo aumentara; v2.1.219 aumentó el predeterminado a tres.1087 * **v2.1.217 a v2.1.218**: el límite predeterminado era uno, por lo que un subagente no podía generar el suyo a menos que lo aumentaras; v2.1.219 aumentó el predeterminado a tres.

1083</Note>1088</Note>

1084 1089 

1085<h3 id="concurrent-subagent-limit">1090<h3 id="concurrent-subagent-limit">


1088 1093 

1089Dos límites controlan el uso de subagentes, cada uno con su propia variable: este detiene a Claude de generar más subagentes mientras demasiados se están ejecutando, y el [límite de profundidad](#let-subagents-spawn-their-own-subagents) limita cuán profundamente se anidan los subagentes. No hay límite en el número total de subagentes que Claude puede generar durante una sesión.1094Dos límites controlan el uso de subagentes, cada uno con su propia variable: este detiene a Claude de generar más subagentes mientras demasiados se están ejecutando, y el [límite de profundidad](#let-subagents-spawn-their-own-subagents) limita cuán profundamente se anidan los subagentes. No hay límite en el número total de subagentes que Claude puede generar durante una sesión.

1090 1095 

1091Por defecto, cuando 20 subagentes se están ejecutando en una sesión, generar otro con la herramienta Agent falla con `Concurrent subagent limit reached`, y el error le dice a Claude que no reintente. La generación tiene éxito de nuevo cuando el recuento en ejecución cae por debajo del límite. Para cambiar el límite, establezca [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/es/env-vars) a cualquier número entero positivo. Las sesiones con [ultracode](/docs/es/model-config#adjust-effort-level) activo están exentas: el límite no se aplica allí. Requiere Claude Code v2.1.217 o posterior.1096Por defecto, cuando 20 subagentes se están ejecutando en una sesión, generar otro con la herramienta Agent falla con `Concurrent subagent limit reached`, y el error le dice a Claude que no reintente. La generación tiene éxito de nuevo cuando el conteo en ejecución cae por debajo del límite. Para cambiar el límite, establece [`CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`](/docs/es/env-vars) a cualquier número entero positivo. Las sesiones con [ultracode](/docs/es/model-config#adjust-effort-level) activo están exentas: el límite no se aplica allí. Requiere Claude Code v2.1.217 o posterior.

1092 1097 

1093El límite bloquea solo subagentes que Claude genera con la herramienta Agent, pero otras ejecuciones ocupan los mismos espacios:1098El límite bloquea solo subagentes que Claude genera con la herramienta Agent, pero otras ejecuciones ocupan los mismos espacios:

1094 1099 

1095* Un fork en sesión que inicia con [`/subtask`](#fork-the-current-conversation) toma un espacio mientras se ejecuta y nunca es bloqueado por el límite.1100* Un fork en sesión que inicias con [`/subtask`](#fork-the-current-conversation) toma un espacio mientras se ejecuta y nunca es bloqueado por el límite.

1096* [Reanudar un subagente](#resume-subagents) que ya terminó toma un espacio nuevo sin verificar el límite, por lo que los reanudos pueden empujar el recuento en ejecución más allá de él.1101* [Reanudar un subagente](#resume-subagents) que ya terminó toma un espacio nuevo sin verificar el límite, por lo que las reanudaciones pueden empujar el conteo en ejecución más allá de él.

1097 1102 

1098Los agentes que otras características ejecutan, como agentes de [workflow](/docs/es/workflows) y compañeros de [equipo de agentes](/docs/es/agent-teams), siguen sus propios límites en su lugar.1103Los agentes que otras características ejecutan, como agentes de [workflow](/docs/es/workflows) y compañeros de [equipo de agentes](/docs/es/agent-teams), siguen sus propios límites en su lugar.

1099 1104 

1100<h3 id="manage-subagent-context">1105<h3 id="manage-subagent-context">

1101 Administrar contexto de subagentes1106 Gestionar contexto de subagentes

1102</h3>1107</h3>

1103 1108 

1104<h4 id="what-loads-at-startup">1109<h4 id="what-loads-at-startup">

1105 Qué se carga al inicio1110 Qué se carga al inicio

1106</h4>1111</h4>

1107 1112 

1108Cada subagente comienza con una ventana de contexto fresca e aislada. No ve su historial de conversación, las habilidades que ya ha invocado, o los archivos que Claude ya ha leído. Claude compone un mensaje de delegación que resume la tarea, y el subagente trabaja a partir de ahí. La excepción es un [fork](#fork-the-current-conversation), que hereda la conversación principal en lugar de comenzar de nuevo.1113Cada subagente comienza con una ventana de contexto fresca y aislada. No ve tu historial de conversación, las skills que ya has invocado, o los archivos que Claude ya ha leído. Claude compone un mensaje de delegación que resume la tarea, y el subagente trabaja a partir de ahí. La excepción es un [fork](#fork-the-current-conversation), que hereda la conversación padre en lugar de comenzar de nuevo.

1109 1114 

1110El contexto inicial de un subagente que no es fork contiene:1115El contexto inicial de un subagente que no es fork contiene:

1111 1116 

1112* **Mensaje del sistema**: el mensaje del agente propio más detalles de entorno que Claude Code añade, no el mensaje del sistema de Claude Code. Los subagentes personalizados definen el suyo en el [cuerpo markdown](#write-subagent-files) o campo `prompt`. Los agentes integrados tienen mensajes predefinidos.1117* **Símbolo del sistema**: el símbolo del sistema propio del agente más detalles del entorno que Claude Code añade, no el símbolo del sistema de Claude Code. Los subagentes personalizados definen el suyo en el [cuerpo markdown](#write-subagent-files) o campo `prompt`. Los agentes integrados tienen símbolos del sistema predefinidos.

1113* **Mensaje de tarea**: el mensaje de delegación que Claude escribe cuando entrega el trabajo.1118* **Mensaje de tarea**: el símbolo del sistema de delegación que Claude escribe cuando entrega el trabajo.

1114* **Archivos CLAUDE.md**: cada nivel de la [jerarquía de CLAUDE.md](/docs/es/memory#how-claude-md-files-load) que la conversación principal carga, incluyendo `~/.claude/CLAUDE.md`, reglas del proyecto, `CLAUDE.local.md` y archivos de política administrados. Los agentes integrados Explore y Plan omiten esto.1119* **Archivos CLAUDE.md**: cada nivel de la [jerarquía CLAUDE.md](/docs/es/memory#how-claude-md-files-load) que la conversación principal carga, incluyendo `~/.claude/CLAUDE.md`, reglas del proyecto, `CLAUDE.local.md`, archivos de política gestionada, y cualquier archivo [`AGENTS.md`](/docs/es/memory#agents-md) cargado como instrucciones del proyecto. Los agentes Explore y Plan integrados omiten esto. Un subagente cuya definición establece [`omitClaudeMd`](#supported-frontmatter-fields) carga solo los archivos de política gestionada, o ninguno en absoluto cuando la definición viene de [configuración gestionada](#choose-the-subagent-scope).

1115* **Estado de Git**: una instantánea tomada al inicio de la sesión principal. Ausente cuando el directorio de trabajo no es un repositorio de Git o cuando [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) es `false`. Explore y Plan lo omiten de todas formas.1120* **Estado de Git**: una instantánea tomada al inicio de la sesión padre. Ausente cuando el directorio de trabajo no es un repositorio de Git o cuando [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) es `false`. Explore y Plan lo omiten independientemente.

1116* **Habilidades precargadas**: contenido completo de cualquier habilidad nombrada en el campo [`skills`](#preload-skills-into-subagents) del agente. Los agentes integrados no precargan habilidades.1121* **Skills precargadas**: contenido completo de cualquier skill nombrada en el campo [`skills`](#preload-skills-into-subagents) del agente. Los agentes integrados no precargan skills.

1117* **Roster de hermanos**: un recordatorio del sistema que enumera `main` y cada otro agente nombrado en la sesión, cada uno un valor `to` válido para [`SendMessage`](#resume-subagents). Requiere Claude Code v2.1.206 o posterior. El roster aparece solo cuando las herramientas del subagente incluyen `SendMessage` y al menos otro agente tiene un nombre, ya sea que Claude lo nombró cuando lo generó o se ejecuta como un compañero de [equipo de agentes](/docs/es/agent-teams). Es una instantánea tomada cuando el subagente comienza, por lo que los agentes nombrados más tarde no aparecen.1122* **Roster de hermanos**: un recordatorio del sistema listando `main` y cada otro agente nombrado en la sesión, cada uno un valor `to` válido para [`SendMessage`](#resume-subagents). Requiere Claude Code v2.1.206 o posterior. El roster aparece solo cuando las herramientas del subagente incluyen `SendMessage` y al menos otro agente tiene un nombre, ya sea que Claude lo nombró al generarlo o se ejecuta como un compañero de [equipo de agentes](/docs/es/agent-teams). Es una instantánea tomada cuando el subagente comienza, por lo que los agentes nombrados después no aparecen.

1123 

1124Para lanzar uno de tus propios subagentes sin los archivos CLAUDE.md del usuario, proyecto y local, establece [`omitClaudeMd: true`](#supported-frontmatter-fields) en su frontmatter o `--agents` JSON.

1118 1125 

1119Explore y Plan son los únicos subagentes que omiten CLAUDE.md y estado de Git. No hay campo de frontmatter o configuración por agente para cambiar qué agentes los omiten.1126La conversación principal aún tiene tu CLAUDE.md completo cuando lee los resultados de estos subagentes, por lo que la mayoría de reglas no necesitan llegar al subagente mismo. Si una regla debe, como "ignora el directorio `vendor/`," reafírmala en el símbolo del sistema que das a Claude cuando delegas.

1120 1127 

1121La conversación principal lee resultados de Explore y Plan con contexto completo de CLAUDE.md, por lo que la mayoría de reglas no necesitan llegar al subagente en sí. Si una regla debe, como "ignore el directorio `vendor/`", restate la en el mensaje que da a Claude cuando delega.1128No puedes cambiar qué subagentes reciben estado de git. Solo Explore y Plan lo omiten.

1122 1129 

1123Algún estado de conversación principal nunca llega a un subagente que no es fork:1130Algún estado de conversación principal nunca llega a un subagente que no es fork:

1124 1131 

1125* **Estilo de salida**: un subagente ejecuta su propio mensaje del sistema, por lo que su [estilo de salida](/docs/es/output-styles) no forma sus respuestas, excepto en un [fork](#fork-the-current-conversation).1132* **Estilo de salida**: un subagente ejecuta su propio símbolo del sistema, por lo que tu [estilo de salida](/docs/es/output-styles) no forma sus respuestas, excepto en un [fork](#fork-the-current-conversation).

1126* **Memoria automática**: la [memoria automática](/docs/es/memory#auto-memory) de la conversación principal no se carga. Para dar a un subagente memoria persistente de su propio, use el campo [`memory`](#enable-persistent-memory).1133* **Memoria automática**: la [memoria automática](/docs/es/memory#auto-memory) de la conversación principal no se carga. Para dar a un subagente memoria persistente propia, usa el campo [`memory`](#enable-persistent-memory).

1127* **Tamaño de ventana de contexto**: la ventana de contexto de un subagente es dimensionada por su propio modelo, no la del principal. Delegar a un modelo con una ventana más pequeña da a ese subagente la ventana más pequeña.1134* **Tamaño de ventana de contexto**: la ventana de contexto de un subagente se dimensiona por su propio modelo, no por el del padre. Delegar a un modelo con una ventana más pequeña da a ese subagente la ventana más pequeña.

1128 1135 

1129<h4 id="resume-subagents">1136<h4 id="resume-subagents">

1130 Reanudar subagentes1137 Reanudar subagentes

1131</h4>1138</h4>

1132 1139 

1133Cada invocación de subagente crea una nueva instancia en lugar de continuar una anterior. Para continuar el trabajo de un subagente existente en lugar de comenzar de nuevo, pida a Claude que lo reanude.1140Cada invocación de subagente crea una nueva instancia en lugar de continuar una anterior. Para continuar el trabajo de un subagente existente en lugar de comenzar de nuevo, pide a Claude que lo reanude.

1134 1141 

1135Los subagentes reanudados retienen su historial de conversación completo, incluyendo todas las llamadas de herramientas anteriores, resultados y razonamiento. Si el subagente generó [subagentes en fondo de su propio](#let-subagents-spawn-their-own-subagents), ese historial incluye los resultados que entregaron mientras se ejecutaba. El subagente continúa exactamente donde se detuvo en lugar de comenzar de nuevo.1142Los subagentes reanudados retienen su historial de conversación completo, incluyendo todas las llamadas de herramienta anteriores, resultados y razonamiento. Si el subagente generó [subagentes en fondo propios](#let-subagents-spawn-their-own-subagents), ese historial incluye los resultados que entregaron mientras se ejecutaba. El subagente continúa exactamente donde se detuvo en lugar de comenzar de nuevo.

1136 1143 

1137* Cuando un subagente se completa, Claude recibe su ID de agente.1144* Cuando un subagente se completa, Claude recibe su ID de agente.

1138* Los agentes integrados Explore y Plan son de una sola ejecución y no devuelven ID de agente, por lo que Claude no puede reanudarlo. Use `general-purpose` o un subagente personalizado cuando necesite continuar el trabajo.1145* Los agentes Explore y Plan integrados son de una sola vez y no devuelven un ID de agente, por lo que Claude no puede reanudarlo. Usa `general-purpose` o un subagente personalizado cuando necesites continuar el trabajo.

1139* Cuando un subagente se detiene en su límite [`maxTurns`](#supported-frontmatter-fields), Claude Code marca la salida devuelta como parcial. Para subagentes que devuelven un ID de agente, Claude Code también nota en el resultado que Claude puede enviar un mensaje al subagente para continuar desde donde se detuvo.1146* Cuando un subagente se detiene en su límite [`maxTurns`](#supported-frontmatter-fields), Claude Code marca la salida devuelta como parcial. Para subagentes que devuelven un ID de agente, Claude Code también nota en el resultado que Claude puede enviar un mensaje al subagente para continuar desde donde se detuvo.

1140 1147 

1141Claude usa la herramienta `SendMessage` con el ID del agente o nombre como campo `to` para reanudarlo. `SendMessage` no requiere que [equipos de agentes](/docs/es/agent-teams) estén habilitados; solo los mensajes de protocolo de equipo estructurados como `shutdown_request` y `plan_approval_response` lo hacen. Más allá de subagentes y compañeros, en sesiones donde la mensajería entre sesiones está habilitada, Claude puede usar la misma herramienta para enviar mensajes a [sus otras sesiones de Claude Code](/docs/es/cross-session-messaging), en esta máquina o [más allá de ella](/docs/es/cross-session-messaging#message-sessions-on-other-machines).1148Claude usa la herramienta `SendMessage` con el ID o nombre del agente como campo `to` para reanudarlo. `SendMessage` no requiere que [equipos de agentes](/docs/es/agent-teams) estén habilitados; solo mensajes de protocolo de equipo estructurados como `shutdown_request` y `plan_approval_response` lo hacen. Más allá de subagentes y compañeros, en sesiones donde la mensajería entre sesiones está habilitada, Claude puede usar la misma herramienta para enviar mensajes a [tus otras sesiones de Claude Code](/docs/es/cross-session-messaging), en esta máquina o [más allá de ella](/docs/es/cross-session-messaging#message-sessions-on-other-machines).

1142 1149 

1143Para reanudar un subagente, pida a Claude que continúe el trabajo anterior:1150Para reanudar un subagente, pide a Claude que continúe el trabajo anterior:

1144 1151 

1145```text wrap theme={null}1152```text wrap theme={null}

1146Use the code-reviewer subagent to review the authentication module1153Use the code-reviewer subagent to review the authentication module


1150[Claude resumes the subagent with full context from previous conversation]1157[Claude resumes the subagent with full context from previous conversation]

1151```1158```

1152 1159 

1153Cuando Claude envía a un subagente completado un mensaje con la herramienta `SendMessage`, el subagente se reanuda automáticamente en el fondo sin una nueva invocación de `Agent`. Lo mismo aplica a un subagente que Claude detuvo con la herramienta `TaskStop`, una vez que su ejecución detenida ha salido. La ejecución reanudada mantiene el [conjunto de herramientas de donde el subagente se ejecutó primero](#run-subagents-in-foreground-or-background) y puede mantener leyendo el [caché de solicitud que la ejecución original calentó](/docs/es/prompt-caching#subagents-and-the-cache).1160Cuando Claude envía un mensaje a un subagente completado con la herramienta `SendMessage`, el subagente se reanuda en fondo sin una nueva invocación de `Agent`. Lo mismo se aplica a un subagente que Claude detuvo con la herramienta `TaskStop`, una vez que su ejecución detenida ha salido. La ejecución reanudada mantiene el [conjunto de herramientas de donde el subagente se ejecutó primero](#run-subagents-in-foreground-or-background) y puede seguir leyendo el [caché de solicitud que la ejecución original calentó](/docs/es/prompt-caching#subagents-and-the-cache).

1154 1161 

1155Un subagente que tiene la herramienta `SendMessage` puede enviar ese mensaje también. En una sesión interactiva, el agente reanudado entonces reporta de vuelta al subagente que lo reanudó, no a su conversación principal. Ese subagente espera el resultado antes de terminar su propio trabajo. Cuando un subagente envía un mensaje a un agente al que reporta, como su propio lanzador, Claude Code reanuda ese agente sin redirigir sus resultados.1162Un subagente que tiene la herramienta `SendMessage` puede enviar ese mensaje también. En una sesión interactiva, el agente reanudado entonces reporta de vuelta al subagente que lo reanudó, no a tu conversación principal. Ese subagente espera el resultado antes de terminar su propio trabajo. Cuando un subagente envía un mensaje a un agente al que reporta, como su propio lanzador, Claude Code reanuda ese agente sin redirigir sus resultados.

1156 1163 

1157Un subagente que usted detuvo, con `x` en `/tasks` o una solicitud SDK `stop_task`, no se reanuda automáticamente. Si Claude le envía un mensaje, el mensaje es rechazado y Claude es informado de que el agente fue cancelado.1164Un subagente que detuviste tú mismo, con `x` en `/tasks` o una solicitud SDK `stop_task`, no se reanuda automáticamente. Si Claude le envía un mensaje, el mensaje es rechazado y Claude es informado de que el agente fue cancelado.

1158 1165 

1159Mientras [la fila de ese subagente aún está en el panel de subagentes](#run-subagents-in-foreground-or-background), escriba en su transcripción para reanudarlo usted mismo. Después de eso, un mensaje de Claude puede reanudarlo automáticamente de nuevo. Requiere Claude Code v2.1.191 o posterior.1166Mientras [la fila de ese subagente aún está en el panel de subagentes](#run-subagents-in-foreground-or-background), escribe en su transcripción para reanudarlo tú mismo. Después de eso, un mensaje de Claude puede reanudarlo automáticamente de nuevo. Requiere Claude Code v2.1.191 o posterior.

1160 1167 

1161Reanudar inicia una nueva ejecución del agente bajo el mismo ID, por lo que un subagente que ya había fallado o completado se muestra como ejecutándose de nuevo en la lista de tareas y en los eventos de tareas del SDK del Agent. Antes de v2.1.205, seguía mostrando su estado anterior fallido o completado mientras la ejecución reanudada estaba funcionando.1168Reanudar comienza una nueva ejecución del agente bajo el mismo ID, por lo que un subagente que ya había fallado o se completó muestra como ejecutándose de nuevo en la lista de tareas y en los eventos de tareas del Agent SDK. Antes de v2.1.205, mantenía su estado anterior fallido o completado mientras la ejecución reanudada estaba trabajando.

1162 1169 

1163A partir de v2.1.199, `SendMessage` verifica que un nombre aún se refiera al mismo agente que alcanzó anteriormente en la conversación. Si un agente más nuevo ha tomado el nombre, como un subagente en fondo re-generado que lo reutilizó, Claude Code rechaza el envío en lugar de entregarlo al agente incorrecto, y el error reporta qué agente el nombre ahora alcanza para que Claude pueda redirigirse. Para alcanzar el agente anterior mientras aún se está ejecutando, Claude lo dirige por el ID del agente que recibió cuando generó ese agente. La verificación se limita a la conversación actual y se reinicia en `/clear`.1170A partir de v2.1.199, `SendMessage` verifica que un nombre aún se refiera al mismo agente que alcanzó anteriormente en la conversación. Si un agente más nuevo ha tomado el nombre, como un agente en fondo re-generado que lo reutilizó, Claude Code rechaza el envío en lugar de entregarlo al agente incorrecto, y el error reporta qué agente el nombre ahora alcanza para que Claude pueda redirigir. Para alcanzar el agente anterior mientras aún se está ejecutando, Claude lo dirige por el ID de agente que recibió cuando generó ese agente. La verificación está limitada a la conversación actual y se reinicia en `/clear`.

1164 1171 

1165A partir de v2.1.198, un subagente trata los mensajes del agente que lo lanzó como dirección de tarea normal, incluyendo correcciones de curso a mitad de tarea, y actúa sobre ellos dentro de su propia configuración de permisos. Dos límites aún se mantienen independientemente de quién envió el mensaje: ningún mensaje de ningún agente cuenta como su aprobación para una solicitud de permiso pendiente, y ningún mensaje de agente puede cambiar la configuración de permisos de un subagente, `CLAUDE.md` o configuración. Solo el sistema de permisos o sus propios mensajes pueden otorgar aprobación.1172A partir de v2.1.198, un subagente trata mensajes del agente que lo lanzó como dirección de tarea normal, incluyendo correcciones de curso a mitad de tarea, y actúa sobre ellos dentro de sus propias configuraciones de permiso. Dos límites aún se mantienen independientemente de quién envió el mensaje: ningún mensaje de ningún agente cuenta como tu aprobación para un aviso de permiso pendiente, y ningún mensaje de agente puede cambiar las configuraciones de permiso, `CLAUDE.md`, o configuración de un subagente. Solo el sistema de permiso o tus propios mensajes pueden otorgar aprobación.

1166 1173 

1167También puede pedir a Claude el ID del agente si desea referenciarlo explícitamente, o encontrar IDs en los archivos de transcripción en `~/.claude/projects/{project}/{sessionId}/subagents/`. Cada transcripción se almacena como `agent-{agentId}.jsonl`.1174También puedes pedir a Claude el ID de agente si quieres referenciarlo explícitamente, o encontrar IDs en los archivos de transcripción en `~/.claude/projects/{project}/{sessionId}/subagents/`. Cada transcripción se almacena como `agent-{agentId}.jsonl`.

1168 1175 

1169Las transcripciones de subagentes persisten independientemente de la conversación principal:1176Las transcripciones de subagentes persisten independientemente de la conversación principal:

1170 1177 

1171* **Compactación de conversación principal**: Cuando la conversación principal se compacta, las transcripciones de subagentes no se ven afectadas. Se almacenan en archivos separados.1178* **Compactación de conversación principal**: cuando la conversación principal se compacta, las transcripciones de subagentes no se ven afectadas. Se almacenan en archivos separados.

1172* **Persistencia de sesión**: Las transcripciones de subagentes persisten dentro de su sesión. Puede [reanudar un subagente](#resume-subagents) después de reiniciar Claude Code reanudando la misma sesión.1179* **Persistencia de sesión**: las transcripciones de subagentes persisten dentro de su sesión. Puedes [reanudar un subagente](#resume-subagents) después de reiniciar Claude Code reanudando la misma sesión.

1173* **Limpieza automática**: Claude Code elimina transcripciones de subagentes después del período de retención `cleanupPeriodDays`, 30 días por defecto, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically).1180* **Limpieza automática**: Claude Code elimina las transcripciones de subagentes después del período de retención `cleanupPeriodDays`, 30 días por defecto, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically).

1174 1181 

1175<h4 id="auto-compaction">1182<h4 id="auto-compaction">

1176 Auto-compactación1183 Auto-compactación

1177</h4>1184</h4>

1178 1185 

1179Los subagentes soportan compactación automática usando la misma lógica que la conversación principal. La compactación se dispara bajo las mismas condiciones, y `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` se aplica a subagentes también. Consulte [variables de entorno](/docs/es/env-vars) para cuándo entra en vigor el override.1186Los subagentes soportan compactación automática usando la misma lógica que la conversación principal. La compactación se dispara bajo las mismas condiciones, y `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` se aplica a subagentes también. Consulta [variables de entorno](/docs/es/env-vars) para cuándo entra en vigor el override.

1180 1187 

1181Los eventos de compactación se registran en archivos de transcripción de subagentes:1188Los eventos de compactación se registran en archivos de transcripción de subagentes:

1182 1189 

Details

126 Configurar tmux126 Configurar tmux

127</h2>127</h2>

128 128 

129Cuando Claude Code se ejecuta dentro de tmux, dos cosas se rompen por defecto: Shift+Enter envía en lugar de insertar una nueva línea, y las notificaciones de escritorio y la [barra de progreso](/docs/es/settings-reference#terminalprogressbarenabled) nunca llegan a la terminal externa. Agregue estas líneas a `~/.tmux.conf`, luego ejecute `tmux source-file ~/.tmux.conf` para aplicarlas al servidor en ejecución:129Cuando Claude Code se ejecuta dentro de tmux, por defecto Shift+Enter envía en lugar de insertar una nueva línea, y las notificaciones de escritorio y la [barra de progreso](/docs/es/settings-reference#terminalprogressbarenabled) nunca llegan a la terminal externa. Agregue estas líneas a `~/.tmux.conf`, luego ejecute `tmux source-file ~/.tmux.conf` para aplicarlas al servidor en ejecución:

130 130 

131```bash ~/.tmux.conf theme={null}131```bash ~/.tmux.conf theme={null}

132set -g allow-passthrough on132set -g allow-passthrough on

Details

50| `SendUserFile` | Envía archivos de la sesión a ti con un título opcional, para que un informe generado, diagrama, captura de pantalla o artefacto construido llegue a tu dispositivo en lugar de solo ser mencionado en la transcripción. A partir de v2.1.196, la entrada `display` opcional controla la presentación: `render` abre el archivo en línea en el cliente, `attach` muestra solo una tarjeta de descarga, y cuando no está establecida el cliente decide por tipo de archivo. Disponible cuando un cliente [Remote Control](/docs/es/remote-control) está conectado o la sesión se ejecuta en un entorno en la nube administrado como [Claude Code en la web](/docs/es/claude-code-on-the-web). La entrega se ejecuta a través de infraestructura alojada por Anthropic, por lo que la herramienta no está disponible en Amazon Bedrock, Agent Platform de Google Cloud, o Microsoft Foundry | No |50| `SendUserFile` | Envía archivos de la sesión a ti con un título opcional, para que un informe generado, diagrama, captura de pantalla o artefacto construido llegue a tu dispositivo en lugar de solo ser mencionado en la transcripción. A partir de v2.1.196, la entrada `display` opcional controla la presentación: `render` abre el archivo en línea en el cliente, `attach` muestra solo una tarjeta de descarga, y cuando no está establecida el cliente decide por tipo de archivo. Disponible cuando un cliente [Remote Control](/docs/es/remote-control) está conectado o la sesión se ejecuta en un entorno en la nube administrado como [Claude Code en la web](/docs/es/claude-code-on-the-web). La entrega se ejecuta a través de infraestructura alojada por Anthropic, por lo que la herramienta no está disponible en Amazon Bedrock, Agent Platform de Google Cloud, o Microsoft Foundry | No |

51| `ShareOnboardingGuide` | Carga `ONBOARDING.md` y devuelve un enlace de uso compartido que los compañeros de equipo pueden abrir en Claude Code. Llamado desde `/team-onboarding` después de que se escribe la guía. Disponible para suscriptores de claude.ai en los planes Pro, Max, Team y Enterprise | Sí |51| `ShareOnboardingGuide` | Carga `ONBOARDING.md` y devuelve un enlace de uso compartido que los compañeros de equipo pueden abrir en Claude Code. Llamado desde `/team-onboarding` después de que se escribe la guía. Disponible para suscriptores de claude.ai en los planes Pro, Max, Team y Enterprise | Sí |

52| `Skill` | Ejecuta una [skill](/docs/es/skills#control-who-invokes-a-skill) dentro de la conversación principal | Sí |52| `Skill` | Ejecuta una [skill](/docs/es/skills#control-who-invokes-a-skill) dentro de la conversación principal | Sí |

53| `SubagentHandback` | Entrega el informe final de un subagente a cualquier conversación que reciba el resultado de ese subagente. Proporcionado solo en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), a subagentes que la herramienta Agent ejecuta localmente que no sean [bifurcaciones](/docs/es/sub-agents#fork-the-current-conversation), y disponible en la CLI de terminal, extensiones de IDE, sesiones en la nube y el Agent SDK; el clasificador revisa el informe antes de que se entregue. Requiere Claude Code v2.1.271 o posterior | No |

53| `TaskCreate` | Crea una nueva tarea en la lista de tareas. Proporcionado de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](#task-tool-availability), y en otros modelos cuando optas por participar | No |54| `TaskCreate` | Crea una nueva tarea en la lista de tareas. Proporcionado de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](#task-tool-availability), y en otros modelos cuando optas por participar | No |

54| `TaskGet` | Recupera detalles completos para una tarea específica. Proporcionado de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](#task-tool-availability), y en otros modelos cuando optas por participar | No |55| `TaskGet` | Recupera detalles completos para una tarea específica. Proporcionado de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](#task-tool-availability), y en otros modelos cuando optas por participar | No |

55| `TaskList` | Lista todas las tareas con su estado actual. Proporcionado de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](#task-tool-availability), y en otros modelos cuando optas por participar | No |56| `TaskList` | Lista todas las tareas con su estado actual. Proporcionado de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](#task-tool-availability), y en otros modelos cuando optas por participar | No |


99 Comportamiento de la herramienta Agent100 Comportamiento de la herramienta Agent

100</h2>101</h2>

101 102 

102La herramienta Agent genera un subagente en una ventana de contexto separada. El subagente trabaja en su tarea de forma autónoma y luego devuelve un único resultado de texto a la conversación principal. El principal no ve las llamadas a herramientas intermedias ni las salidas del subagente, solo ese resultado final. Con [agent teams](/docs/es/agent-teams) habilitados, una llamada que lleve un `name` puede lanzar un [teammate](/docs/es/agent-teams#how-claude-starts-agent-teams) en su lugar, que informa a través de mensajes de equipo en lugar de devolver un resultado.103La herramienta Agent genera un subagente en una ventana de contexto separada. El subagente trabaja en su tarea de forma autónoma y luego devuelve su resultado a la conversación principal. El principal no ve las llamadas a herramientas intermedias ni las salidas del subagente, solo ese resultado final. Con [agent teams](/docs/es/agent-teams) habilitados, una llamada que lleve un `name` puede lanzar un [teammate](/docs/es/agent-teams#how-claude-starts-agent-teams) en su lugar, que informa a través de mensajes de equipo en lugar de devolver un resultado.

103 104 

104Para limitar cuántos turnos ejecuta un subagente, establezca `maxTurns` en la [definición del subagente](/docs/es/sub-agents#supported-frontmatter-fields). Cuando el subagente alcanza el límite, Claude Code marca el resultado devuelto como salida parcial, y Claude puede [reanudar el subagente](/docs/es/sub-agents#resume-subagents) para continuar.105Para limitar cuántos turnos ejecuta un subagente, establezca `maxTurns` en la [definición del subagente](/docs/es/sub-agents#supported-frontmatter-fields). Cuando el subagente alcanza el límite, Claude Code marca el resultado devuelto como salida parcial, y Claude puede [reanudar el subagente](/docs/es/sub-agents#resume-subagents) para continuar.

105 106 


112* **Solo `disallowedTools`**: el subagente obtiene todas las herramientas principales excepto las listadas.113* **Solo `disallowedTools`**: el subagente obtiene todas las herramientas principales excepto las listadas.

113* **Ambos establecidos**: `disallowedTools` tiene prioridad. Una herramienta listada en ambos se elimina.114* **Ambos establecidos**: `disallowedTools` tiene prioridad. Una herramienta listada en ambos se elimina.

114 115 

115En todos los casos, el conjunto resuelto se limita a las [herramientas disponibles para subagentes](/docs/es/sub-agents#available-tools): una herramienta que no está disponible para subagentes nunca se otorga, incluso cuando se lista en `tools`.116En todos los casos, el conjunto resuelto se limita a las [herramientas disponibles para subagentes](/docs/es/sub-agents#available-tools): una herramienta que no está disponible para subagentes nunca se otorga, incluso cuando se lista en `tools`. Donde se cumplen las condiciones en la entrada de la tabla de herramientas de `SubagentHandback`, Claude Code también le da al subagente esa herramienta, incluso si la deja fuera de `tools` o la lista en `disallowedTools`.

116 117 

117Si cada entrada en la lista `tools` de un subagente no coincide con una herramienta utilizable, la herramienta Agent generalmente devuelve un error nombrando las entradas en lugar de lanzar el subagente; consulte [Agent would be spawned with zero tools](/docs/es/errors#agent-would-be-spawned-with-zero-tools) para el mensaje y cómo corregir cada entrada.118Si cada entrada en la lista `tools` de un subagente no coincide con una herramienta utilizable, la herramienta Agent generalmente devuelve un error nombrando las entradas en lugar de lanzar el subagente; consulte [Agent would be spawned with zero tools](/docs/es/errors#agent-would-be-spawned-with-zero-tools) para el mensaje y cómo corregir cada entrada.

118 119 


363 364 

364Continúa trabajando en la misma sesión y Claude interviene cuando llega un evento.365Continúa trabajando en la misma sesión y Claude interviene cuando llega un evento.

365 366 

367Cada observación que Claude inicia tiene un plazo: 5 minutos por defecto, como máximo 30 minutos, y como máximo 10 minutos en una ejecución [no interactiva](/docs/es/headless) dada una única solicitud con `-p`.

368 

369En el plazo, la observación termina. Claude recibe un aviso, por lo que puede reiniciar la observación si aún es necesaria.

370 

366Detenga un monitor pidiendo a Claude que lo cancele o terminando la sesión. Cuando detiene una [subagente](/docs/es/sub-agents) que inició monitores, por ejemplo desde `/tasks`, esos monitores se detienen con ella.371Detenga un monitor pidiendo a Claude que lo cancele o terminando la sesión. Cuando detiene una [subagente](/docs/es/sub-agents) que inició monitores, por ejemplo desde `/tasks`, esos monitores se detienen con ella.

367 372 

368Cuando Monitor ejecuta un comando, utiliza las mismas [reglas de permisos que Bash](/docs/es/permissions#tool-specific-permission-rules), por lo que los patrones `allow` y `deny` que tiene establecidos para Bash se aplican aquí también. Mientras [el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) está activo, Claude Code reserva reglas de permiso que nombran `Monitor` en sí mismo, junto con las otras [reglas de permiso amplias que descarta](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que el clasificador revisa los comandos de Monitor de la misma manera que revisa los comandos de Bash.373Cuando Monitor ejecuta un comando, utiliza las mismas [reglas de permisos que Bash](/docs/es/permissions#tool-specific-permission-rules), por lo que los patrones `allow` y `deny` que tiene establecidos para Bash se aplican aquí también. Mientras [el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) está activo, Claude Code reserva reglas de permiso que nombran `Monitor` en sí mismo, junto con las otras [reglas de permiso amplias que descarta](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que el clasificador revisa los comandos de Monitor de la misma manera que revisa los comandos de Bash.


395| `url` | Sí | El punto final al que conectarse. Debe ser una URL `ws://` o `wss://` sin credenciales incrustadas o espacios en blanco, utilizando solo caracteres ASCII |400| `url` | Sí | El punto final al que conectarse. Debe ser una URL `ws://` o `wss://` sin credenciales incrustadas o espacios en blanco, utilizando solo caracteres ASCII |

396| `protocols` | No | Nombres de subprotocolo de WebSocket para ofrecer durante el apretón de manos. Cada entrada debe ser un token de subprotocolo válido, y la lista no puede contener duplicados |401| `protocols` | No | Nombres de subprotocolo de WebSocket para ofrecer durante el apretón de manos. Cada entrada debe ser un token de subprotocolo válido, y la lista no puede contener duplicados |

397 402 

398Las entradas `timeout_ms` y `persistent` se comportan igual que lo hacen para un comando: la observación termina en el plazo a menos que `persistent` esté establecido, y `TaskStop` la cancela temprano.403El plazo `timeout_ms` se aplica también a una observación de WebSocket: la observación termina en el plazo, y `TaskStop` la cancela temprano.

399 404 

400Abrir un WebSocket solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) el clasificador decide en su lugar. El mensaje no ofrece una opción para omitir futuros mensajes para el mismo host.405Abrir un WebSocket solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) el clasificador decide en su lugar. El mensaje no ofrece una opción para omitir futuros mensajes para el mismo host.

401 406 


593* Liste las herramientas en [`--tools`](/docs/es/cli-reference#cli-flags), que restringe las herramientas integradas de la sesión a las que nombra. Incluya las herramientas que desea junto con las otras herramientas integradas que utiliza598* Liste las herramientas en [`--tools`](/docs/es/cli-reference#cli-flags), que restringe las herramientas integradas de la sesión a las que nombra. Incluya las herramientas que desea junto con las otras herramientas integradas que utiliza

594* En el Agent SDK, las opciones [`allowedTools` y `tools`](/docs/es/agent-sdk/todo-tracking#model-availability) funcionan de la misma manera que las dos banderas599* En el Agent SDK, las opciones [`allowedTools` y `tools`](/docs/es/agent-sdk/todo-tracking#model-availability) funcionan de la misma manera que las dos banderas

595 600 

596En [sesiones en segundo plano](/docs/es/agent-view) y en [Claude Code en la web](/docs/es/claude-code-on-the-web), Claude Code proporciona las mismas herramientas en cada modelo, listado o no.601En [sesiones en segundo plano](/docs/es/agent-view) y en [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code proporciona las mismas herramientas en cada modelo, listado o no.

597 602 

598Claude Code proporciona a una subagente las herramientas solo cuando su sesión las tiene, incluso cuando la subagente ejecuta un modelo diferente. Un compañero de [equipo de agentes](/docs/es/agent-teams) en proceso sigue su sesión de la misma manera, mientras que un compañero en su propio [panel dividido](/docs/es/agent-teams#choose-a-display-mode) se ejecuta como un proceso Claude Code separado, por lo que su propio modelo decide. Sin las herramientas Task, un agente se coordina con su equipo a través de mensajes en lugar de la [lista de tareas compartida](/docs/es/agent-teams#assign-and-claim-tasks).603Claude Code proporciona a una subagente las herramientas solo cuando su sesión las tiene, incluso cuando la subagente ejecuta un modelo diferente. Un compañero de [equipo de agentes](/docs/es/agent-teams) en proceso sigue su sesión de la misma manera, mientras que un compañero en su propio [panel dividido](/docs/es/agent-teams#choose-a-display-mode) se ejecuta como un proceso Claude Code separado, por lo que su propio modelo decide. Sin las herramientas Task, un agente se coordina con su equipo a través de mensajes en lugar de la [lista de tareas compartida](/docs/es/agent-teams#assign-and-claim-tasks).

599 604 


609 614 

610Algunos comportamientos dan forma a la respuesta que Claude recibe:615Algunos comportamientos dan forma a la respuesta que Claude recibe:

611 616 

617* WebFetch rechaza `localhost` y cualquier otro nombre de host sin un punto, como un nombre de intranet simple, antes de hacer una solicitud. El [error que devuelve](/docs/es/errors#webfetch-cannot-fetch-localhost) le dice a Claude que alcance servidores locales con `curl` a través de Bash en su lugar.

612* Las URLs HTTP se actualizan automáticamente a HTTPS.618* Las URLs HTTP se actualizan automáticamente a HTTPS.

613* Las páginas grandes se truncan a un límite de caracteres fijo antes del procesamiento.619* Las páginas grandes se truncan a un límite de caracteres fijo antes del procesamiento.

614* WebFetch almacena en caché cada respuesta durante 15 minutos de forma predeterminada, por lo que las búsquedas repetidas de la misma URL se devuelven rápidamente. En Claude Code v2.1.233 o posterior, establezca [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/es/env-vars#variables) para cambiar cuánto tiempo WebFetch mantiene cada respuesta.620* WebFetch almacena en caché cada respuesta durante 15 minutos de forma predeterminada, por lo que las búsquedas repetidas de la misma URL se devuelven rápidamente. En Claude Code v2.1.233 o posterior, establezca [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/es/env-vars#variables) para cambiar cuánto tiempo WebFetch mantiene cada respuesta.

ultrareview.md +15 −8

Details

10 Ultrareview es una característica de vista previa de investigación. La característica, los precios y la disponibilidad pueden cambiar según los comentarios. El comando es `/code-review ultra`. Cuando ultrareview está disponible para su cuenta, `/ultrareview` es un alias.10 Ultrareview es una característica de vista previa de investigación. La característica, los precios y la disponibilidad pueden cambiar según los comentarios. El comando es `/code-review ultra`. Cuando ultrareview está disponible para su cuenta, `/ultrareview` es un alias.

11</Note>11</Note>

12 12 

13Ultrareview es una revisión de código profunda que se ejecuta en Claude Code en la infraestructura web. Cuando ejecuta `/code-review ultra`, Claude Code lanza una flota de agentes revisores en un sandbox remoto para encontrar errores en su rama o solicitud de extracción.13Ultrareview es una revisión de código profunda que se ejecuta como una [sesión en la nube](/docs/es/claude-code-on-the-web) en la infraestructura de Anthropic. Cuando ejecuta `/code-review ultra`, Claude Code lanza una flota de agentes revisores en un sandbox en la nube para encontrar errores en su rama o solicitud de extracción.

14 14 

15En comparación con una `/code-review` local, ultrareview ofrece:15En comparación con una `/code-review` local, ultrareview ofrece:

16 16 

17* **Mayor señal**: cada hallazgo reportado se reproduce y verifica de forma independiente, por lo que los resultados se centran en errores reales en lugar de sugerencias de estilo17* **Mayor señal**: cada hallazgo reportado se reproduce y verifica de forma independiente, por lo que los resultados se centran en errores reales en lugar de sugerencias de estilo

18* **Cobertura más amplia**: una flota más grande de agentes revisores explora el cambio en paralelo, lo que expone problemas que una revisión local podría perder18* **Cobertura más amplia**: una flota más grande de agentes revisores explora el cambio en paralelo, lo que expone problemas que una revisión local podría perder

19* **Sin uso de recursos locales**: la revisión se ejecuta completamente en un sandbox remoto, por lo que su terminal permanece libre para otro trabajo mientras se ejecuta19* **Sin uso de recursos locales**: la revisión se ejecuta completamente en un sandbox en la nube, por lo que su terminal permanece libre para otro trabajo mientras se ejecuta

20 20 

21Ultrareview requiere autenticación con una cuenta de claude.ai porque se ejecuta en Claude Code en la infraestructura web. Si ha iniciado sesión solo con una clave API, ejecute `/login` y autentica con claude.ai primero. Ultrareview no está disponible cuando se usa Claude Code con Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry, y no está disponible para organizaciones que han habilitado Zero Data Retention. Cuando ultrareview no está disponible, `/code-review ultra` ejecuta una revisión local en su sesión en su lugar.21Ultrareview requiere autenticación con una cuenta de claude.ai porque se ejecuta como una sesión en la nube en la infraestructura de Anthropic. Si ha iniciado sesión solo con una clave API, ejecute `/login` y autentica con claude.ai primero. Ultrareview no está disponible cuando se usa Claude Code con Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry, y no está disponible para organizaciones que han habilitado Zero Data Retention. Cuando ultrareview no está disponible, `/code-review ultra` ejecuta una revisión local en su sesión en su lugar.

22 22 

23<h2 id="run-ultrareview-from-the-cli">23<h2 id="run-ultrareview-from-the-cli">

24 Ejecuta ultrareview desde la CLI24 Ejecuta ultrareview desde la CLI


79* **Interactivo**: en el diálogo de lanzamiento, seleccione **Ejecutar y publicar los hallazgos en el PR como yo**. Si agrega `--post` al comando, como en `/code-review ultra 1234 --post`, Claude Code preselecciona esa opción y aún pregunta antes de lanzar.79* **Interactivo**: en el diálogo de lanzamiento, seleccione **Ejecutar y publicar los hallazgos en el PR como yo**. Si agrega `--post` al comando, como en `/code-review ultra 1234 --post`, Claude Code preselecciona esa opción y aún pregunta antes de lanzar.

80* **No interactivo**: ejecute el [subcomando `claude ultrareview`](#run-ultrareview-non-interactively) con `--post`. Usted consiente la publicación al ejecutar el subcomando con la bandera, por lo que Claude Code publica sin preguntar. En una ejecución de `claude -p '/code-review ultra'`, Claude Code sale antes de que lleguen los hallazgos, por lo que no publica nada; use el subcomando en su lugar.80* **No interactivo**: ejecute el [subcomando `claude ultrareview`](#run-ultrareview-non-interactively) con `--post`. Usted consiente la publicación al ejecutar el subcomando con la bandera, por lo que Claude Code publica sin preguntar. En una ejecución de `claude -p '/code-review ultra'`, Claude Code sale antes de que lleguen los hallazgos, por lo que no publica nada; use el subcomando en su lugar.

81 81 

82Claude Code no publica desde su máquina. Envía los hallazgos a una sesión en [Claude Code en la web](/docs/es/claude-code-on-the-web), que publica el comentario a través de la cuenta de GitHub que ha conectado a Claude. Publicar requiere el mismo inicio de sesión en claude.ai que la revisión en sí. Debido a que publicar se ejecuta a través de Claude Code en la web, no está disponible en proveedores de terceros o cuando establece [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars).82Claude Code no publica desde su máquina. Envía el ID de sesión de la revisión a la API de Anthropic, que publica los hallazgos almacenados de la revisión como el comentario a través de la cuenta de GitHub que ha conectado a Claude. Publicar requiere el mismo inicio de sesión en claude.ai que la revisión en sí, y no está disponible en proveedores de terceros o cuando establece [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars).

83 83 

84En una sesión interactiva, Claude Code inicia la publicación cuando llegan los hallazgos, por lo que mantenga la sesión abierta hasta que se complete la revisión. Claude Code mantiene la opción de publicación solo en esa sesión. Si la sesión termina antes de que se complete la revisión, Claude Code no publica nada, incluso si reanuda la conversación más tarde.84En una sesión interactiva, Claude Code inicia la publicación cuando llegan los hallazgos, por lo que mantenga la sesión abierta hasta que se complete la revisión. Claude Code mantiene la opción de publicación solo en esa sesión. Si la sesión termina antes de que se complete la revisión, Claude Code no publica nada, incluso si reanuda la conversación más tarde.

85 85 

86Cuando la publicación no puede comenzar mientras su sesión está abierta, Claude le dice que nada fue al PR y por qué, y los hallazgos permanecen en su terminal para que pueda publicarlos manualmente.86Cuando la publicación se completa, Claude le dice el resultado:

87 

88* **Publicado**: Claude le proporciona un enlace al comentario.

89* **Ya publicado**: una publicación anterior de la misma revisión ya puso el comentario en el PR, por lo que Claude le vincula a la solicitud de extracción en su lugar de publicar de nuevo.

90* **Falló**: Claude le dice por qué, y los hallazgos permanecen en su terminal para que pueda publicarlos manualmente.

87 91 

88<h3 id="pass-a-request-in-plain-words">92<h3 id="pass-a-request-in-plain-words">

89 Pasa una solicitud en palabras simples93 Pasa una solicitud en palabras simples


185 189 

186Si interrumpe el subcomando, la revisión remota continúa ejecutándose; siga la URL de sesión impresa en stderr para verla en el navegador.190Si interrumpe el subcomando, la revisión remota continúa ejecutándose; siga la URL de sesión impresa en stderr para verla en el navegador.

187 191 

188Con `--post`, el subcomando inicia la publicación justo después de imprimir los hallazgos. Si la ejecución falla, se agota el tiempo de espera o la interrumpe, el subcomando no publica nada. Si la revisión se completa pero la publicación no puede iniciarse, Claude Code imprime la razón en stderr y los hallazgos permanecen en stdout para que pueda publicarlos manualmente.192Con `--post`, el subcomando inicia la publicación justo después de imprimir los hallazgos, e imprime el enlace a stderr.

193 

194* Si la ejecución falla, se agota el tiempo de espera o la interrumpe, el subcomando no publica nada.

195* Si la revisión se completa pero el comentario no se publica, Claude Code imprime la razón en stderr, y los hallazgos permanecen en stdout para que pueda publicarlos manualmente.

189 196 

190Para revisiones automáticas en solicitudes de extracción de GitHub, [Code Review](/docs/es/code-review) se integra directamente con su repositorio e imprime hallazgos como comentarios de PR en línea sin un paso de CLI.197Para revisiones automáticas en solicitudes de extracción de GitHub, [Code Review](/docs/es/code-review) se integra directamente con su repositorio e imprime hallazgos como comentarios de PR en línea sin un paso de CLI.

191 198 


198| | `/code-review` | `/code-review ultra` |205| | `/code-review` | `/code-review ultra` |

199| ----------- | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |206| ----------- | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |

200| Objetivo | su diff de trabajo, una solicitud de extracción, una rama o una ruta | su diff de trabajo o una solicitud de extracción |207| Objetivo | su diff de trabajo, una solicitud de extracción, una rama o una ruta | su diff de trabajo o una solicitud de extracción |

201| Se ejecuta | localmente en su sesión | remotamente en un sandbox en la nube |208| Se ejecuta | localmente en su sesión | en un sandbox en la nube |

202| Profundidad | se escala con el argumento de esfuerzo | flota multiagente con verificación independiente |209| Profundidad | se escala con el argumento de esfuerzo | flota multiagente con verificación independiente |

203| Duración | segundos a pocos minutos | aproximadamente 5 a 10 minutos |210| Duración | segundos a pocos minutos | aproximadamente 5 a 10 minutos |

204| Costo | cuenta hacia el uso normal | ejecuciones gratuitas, luego aproximadamente \$5 a \$25 por revisión como créditos de uso |211| Costo | cuenta hacia el uso normal | ejecuciones gratuitas, luego aproximadamente \$5 a \$25 por revisión como créditos de uso |


210 Recursos relacionados217 Recursos relacionados

211</h2>218</h2>

212 219 

213* [Claude Code en la web](/docs/es/claude-code-on-the-web): aprende cómo funcionan las sesiones remotas y los sandboxes en la nube220* [Claude Code en la web](/docs/es/claude-code-on-the-web): aprende cómo funcionan las sesiones en la nube y los sandboxes en la nube

214* [Gestiona costos de manera efectiva](/docs/es/costs): rastrear el uso y establecer límites de gasto221* [Gestiona costos de manera efectiva](/docs/es/costs): rastrear el uso y establecer límites de gasto

Details

17El dictado de voz transmite su audio grabado a los servidores de Anthropic para su transcripción. El audio no se procesa localmente. Necesita todos los siguientes requisitos:17El dictado de voz transmite su audio grabado a los servidores de Anthropic para su transcripción. El audio no se procesa localmente. Necesita todos los siguientes requisitos:

18 18 

19* **Una cuenta de Claude.ai**: el servicio de voz a texto solo está disponible cuando se autentica con una, y no está disponible cuando Claude Code está configurado para usar una clave de API de Anthropic directamente, Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.19* **Una cuenta de Claude.ai**: el servicio de voz a texto solo está disponible cuando se autentica con una, y no está disponible cuando Claude Code está configurado para usar una clave de API de Anthropic directamente, Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.

20* **Un micrófono local**: el dictado de voz no funciona en entornos remotos como [Claude Code en la web](/docs/es/claude-code-on-the-web) o sesiones SSH.20* **Un micrófono local**: el dictado de voz no funciona en [sesiones en la nube](/docs/es/claude-code-on-the-web) o sesiones SSH.

21* **WSLg, si ejecuta Claude Code en WSL**: WSLg se incluye con WSL2 cuando se instala desde Microsoft Store en Windows 10 u 11. Si WSLg no está disponible, por ejemplo en WSL1, ejecute Claude Code en Windows nativo en su lugar.21* **WSLg, si ejecuta Claude Code en WSL**: WSLg se incluye con WSL2 cuando se instala desde Microsoft Store en Windows 10 u 11. Si WSLg no está disponible, por ejemplo en WSL1, ejecute Claude Code en Windows nativo en su lugar.

22 22 

23La transcripción no consume mensajes de Claude ni tokens y no cuenta hacia los límites mostrados en `/usage`. Consulte [uso de datos](/docs/es/data-usage) para ver cómo Anthropic maneja sus datos.23La transcripción no consume mensajes de Claude ni tokens y no cuenta hacia los límites mostrados en `/usage`. Consulte [uso de datos](/docs/es/data-usage) para ver cómo Anthropic maneja sus datos.

vs-code.md +29 −16

Details

108* **Modos de permiso**: haga clic en el indicador de modo en la parte inferior del cuadro de solicitud para cambiar los modos de permiso. En los planes Pro, Max y Team, Auto es el modo de permiso inicial integrado. Consulte [cómo la extensión elige el modo de permiso inicial](/docs/es/permission-modes#switch-permission-modes) para saber qué cambia eso y todos los modos de permiso que ofrece el indicador.108* **Modos de permiso**: haga clic en el indicador de modo en la parte inferior del cuadro de solicitud para cambiar los modos de permiso. En los planes Pro, Max y Team, Auto es el modo de permiso inicial integrado. Consulte [cómo la extensión elige el modo de permiso inicial](/docs/es/permission-modes#switch-permission-modes) para saber qué cambia eso y todos los modos de permiso que ofrece el indicador.

109 * **Auto**: un clasificador revisa la mayoría de las acciones en lugar de pedirle permiso. Consulte [modo auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para saber qué revisa y bloquea.109 * **Auto**: un clasificador revisa la mayoría de las acciones en lugar de pedirle permiso. Consulte [modo auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para saber qué revisa y bloquea.

110 * **Manual**: Claude solicita permiso antes de ediciones de archivos y la mayoría de comandos de shell.110 * **Manual**: Claude solicita permiso antes de ediciones de archivos y la mayoría de comandos de shell.

111 * **Plan**: Claude describe lo que hará y espera aprobación antes de realizar cambios. VS Code abre automáticamente el plan como un documento Markdown completo donde puede agregar comentarios en línea para proporcionar retroalimentación antes de que Claude comience.111 * **Plan**: Claude describe lo que hará y espera aprobación antes de hacer cambios. VS Code abre automáticamente el plan como un documento Markdown completo donde puede agregar comentarios en línea para dar retroalimentación antes de que Claude comience.

112 * **Edit automatically**: Claude realiza ediciones sin preguntar.112 * **Edit automatically**: Claude realiza ediciones sin preguntar.

113* **Model**: seleccione **Switch model…** desde el menú de comandos para cambiar el modelo durante la sesión. También puede hacer clic en el nombre del modelo en la parte inferior del cuadro de solicitud para abrir el mismo selector. Cuando el modelo actual admite [niveles de esfuerzo](/docs/es/model-config#adjust-effort-level), el selector también muestra una fila **Effort** y el botón de nombre del modelo muestra el nivel seleccionado. El botón de nombre del modelo y la fila **Effort** requieren Claude Code v2.1.257 o posterior.113* **Model**: seleccione **Switch model…** desde el menú de comandos para cambiar el modelo durante la sesión. También puede hacer clic en el nombre del modelo en la parte inferior del cuadro de solicitud para abrir el mismo selector. Cuando el modelo actual admite [niveles de esfuerzo](/docs/es/model-config#adjust-effort-level), el selector también muestra una fila **Effort** y el botón del nombre del modelo muestra el nivel seleccionado. El botón del nombre del modelo y la fila **Effort** requieren Claude Code v2.1.257 o posterior.

114* **Command menu**: haga clic en `/` o escriba `/` para abrir el menú de comandos. Las opciones incluyen adjuntar archivos, cambiar modelos y alternar el pensamiento extendido. La sección Customize proporciona acceso a servidores MCP, slash commands, estilos de salida, hooks, memoria, permisos y plugins. Los elementos con un icono de terminal se abren en el terminal integrado.114* **Command menu**: haga clic en `/` o escriba `/` para abrir el menú de comandos. Las opciones incluyen adjuntar archivos, cambiar modelos y alternar el pensamiento extendido. La sección Customize proporciona acceso a servidores MCP, comandos, estilos de salida, hooks, memoria, permisos y plugins. Los elementos con un icono de terminal se abren en la terminal integrada.

115 * Para examinar comandos como `/usage` o [`/remote-control`](/docs/es/remote-control), seleccione **Slash commands** en la sección Customize. Un diálogo los enumera con un cuadro de filtro. Elija uno para ejecutarlo. Escribir `/` en el cuadro de solicitud aún sugiere comandos en línea. Requiere Claude Code v2.1.257 o posterior.115 * Para examinar comandos como `/usage` o [`/remote-control`](/docs/es/remote-control), seleccione **Slash commands** en la sección Customize. Un diálogo los enumera con un cuadro de filtro. Elija uno para ejecutarlo. Escribir `/` en el cuadro de solicitud aún sugiere comandos en línea. Requiere Claude Code v2.1.257 o posterior.

116 * Seleccione **Output styles** en la sección Customize para elegir un [estilo de salida](/docs/es/output-styles), incluidos sus estilos personalizados. Requiere Claude Code v2.1.257 o posterior.116 * Seleccione **Output styles** en la sección Customize para elegir un [estilo de salida](/docs/es/output-styles), incluidos sus estilos personalizados. Requiere Claude Code v2.1.257 o posterior.

117 117 


123 Cuando activa o desactiva el conmutador en una ventana de VS Code, el cambio se aplica a las sesiones ya abiertas en esa ventana de VS Code, no solo a las sesiones que inicia después. Si lo desactiva, las sesiones abiertas se desconectan. Con Claude Code v2.1.261 o posterior, el cambio también llega a las sesiones abiertas en sus otras ventanas de VS Code.123 Cuando activa o desactiva el conmutador en una ventana de VS Code, el cambio se aplica a las sesiones ya abiertas en esa ventana de VS Code, no solo a las sesiones que inicia después. Si lo desactiva, las sesiones abiertas se desconectan. Con Claude Code v2.1.261 o posterior, el cambio también llega a las sesiones abiertas en sus otras ventanas de VS Code.

124 * La sección Settings también incluye **Focus view**, que oculta llamadas de herramientas, resultados de herramientas y pensamiento detrás de filas expandibles, dejando sus solicitudes y las respuestas de Claude. Actívelo allí, con `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux), o desde la Paleta de comandos con **Claude Code: Toggle Focus view**. El cambio se aplica a todas las sesiones abiertas y persiste entre sesiones. Requiere Claude Code v2.1.221 o posterior.124 * La sección Settings también incluye **Focus view**, que oculta llamadas de herramientas, resultados de herramientas y pensamiento detrás de filas expandibles, dejando sus solicitudes y las respuestas de Claude. Actívelo allí, con `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux), o desde la Paleta de comandos con **Claude Code: Toggle Focus view**. El cambio se aplica a todas las sesiones abiertas y persiste entre sesiones. Requiere Claude Code v2.1.221 o posterior.

125 125 

126 La lista de tareas más reciente de Claude permanece visible, al igual que el texto de una pregunta pendiente de Claude; esto requiere Claude Code v2.1.225 o posterior. Mientras Claude ejecuta [subagentes](/docs/es/sub-agents), las filas de progreso en vivo con su actividad más reciente aparecen bajo el grupo de llamadas de herramientas que las inició. Esto requiere Claude Code v2.1.269 o posterior.126 La lista de tareas más reciente de Claude permanece visible, al igual que el texto de una pregunta pendiente de Claude; esto requiere Claude Code v2.1.225 o posterior. Mientras Claude ejecuta [subagentes](/docs/es/sub-agents), filas de progreso en vivo con su actividad más reciente aparecen bajo el grupo de llamadas de herramientas que las inició. Esto requiere Claude Code v2.1.269 o posterior.

127 * Para reportar un error, haga clic en **Report a problem** en la parte inferior del menú, o escriba `/bug` o `/feedback` con una descripción opcional que rellene previamente el informe. Cuando envía el informe y está conectado a Anthropic en una conexión de primera parte, Claude Code lo envía a Anthropic. En un proveedor de terceros, o sin credenciales de Anthropic, el diálogo aún se abre, pero enviar muestra un error y no envía nada: a diferencia del `/bug` de la CLI, la extensión no escribe un archivo local. Requiere Claude Code v2.1.229 o posterior.127 * Para reportar un error, haga clic en **Report a problem** en la parte inferior del menú, o escriba `/bug` o `/feedback` con una descripción opcional que rellene previamente el informe. Cuando envía el informe y está conectado a Anthropic en una conexión de primera parte, Claude Code lo envía a Anthropic. En un proveedor de terceros, o sin credenciales de Anthropic, el diálogo aún se abre, pero enviar muestra un error y no envía nada: a diferencia de `/bug` de la CLI, la extensión no escribe un archivo local. Requiere Claude Code v2.1.229 o posterior.

128* **Side questions**: escriba `/btw` seguido de una pregunta para preguntar sobre su sesión [sin agregar a la conversación](/docs/es/interactive-mode#side-questions-with-%2Fbtw). La respuesta se abre en un panel junto al chat, donde puede hacer preguntas de seguimiento. El hilo sobrevive a las recargas de ventana. Claude Code mantiene los 20 intercambios más recientes y expira los hilos almacenados en el cronograma [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays), siempre que Claude Code pueda [determinar de forma segura el período de retención](/docs/es/claude-directory#cleaned-up-automatically). Para borrar un hilo, haga clic en el icono de papelera en el panel. Requiere Claude Code v2.1.227 o posterior.128 

129 Si la política de su organización desactiva la retroalimentación del producto, **Report a problem** no aparece en el menú, y `/bug` y `/feedback` muestran un aviso `Feedback is turned off by your organization's policy or this environment's settings.` en lugar de abrir el informe.

130* **Side questions**: escriba `/btw` seguido de una pregunta para preguntar sobre su sesión [sin agregar a la conversación](/docs/es/interactive-mode#side-questions-with-%2Fbtw). La respuesta se abre en un panel junto al chat, donde puede hacer preguntas de seguimiento. El hilo sobrevive a las recargas de ventana. Claude Code mantiene los 20 intercambios más nuevos y expira los hilos almacenados en el cronograma [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays), siempre que Claude Code pueda [determinar de forma segura el período de retención](/docs/es/claude-directory#cleaned-up-automatically). Para borrar un hilo, haga clic en el icono de papelera en el panel. Requiere Claude Code v2.1.227 o posterior.

129* **Context indicator**: el cuadro de solicitud muestra cuánta ventana de contexto de Claude está utilizando. Claude se compacta automáticamente cuando es necesario, o puede ejecutar `/compact` manualmente.131* **Context indicator**: el cuadro de solicitud muestra cuánta ventana de contexto de Claude está utilizando. Claude se compacta automáticamente cuando es necesario, o puede ejecutar `/compact` manualmente.

132* **Prompt cache clock**: un icono de reloj junto al indicador de contexto estima cuánto tiempo le queda a la [caché de solicitud](/docs/es/prompt-caching) de la conversación antes de que expire. Cuenta regresiva desde la [vida útil](/docs/es/prompt-caching#cache-lifetime) de cinco minutos o una hora de la caché, y cada respuesta que usa la caché reinicia la cuenta regresiva. Aparte de la compactación, las [acciones que invalidan la caché](/docs/es/prompt-caching#actions-that-invalidate-the-cache) no restablecen el reloj, por lo que aún puede mostrar minutos restantes después de cambiar modelos.

133 * Hasta que se agote la cuenta regresiva, el icono muestra los minutos restantes, como **12m**.

134 * Cuando se agota la cuenta regresiva, los minutos desaparecen y el icono se vuelve rojo, o el color de error de su tema, hasta la siguiente respuesta. Es probable que la caché haya expirado, así que espere una respuesta más lenta y costosa a su próximo mensaje mientras se reconstruye la caché. Si la vida útil de cinco minutos sigue agotándose entre sus mensajes, consulte [Elija el TTL usted mismo](/docs/es/prompt-caching#choose-the-ttl-yourself).

135 * Justo después de que la conversación se [compacte](/docs/es/prompt-caching#compacting-the-conversation), el icono también se vuelve rojo sin minutos hasta la siguiente respuesta, porque la caché aún no cubre la conversación compactada.

130* **Agent map**: cuando la conversación incluye [subagentes](/docs/es/sub-agents), un recuento de agentes como **2 agents** aparece en la parte inferior del cuadro de solicitud. Su punto muestra si algún subagente está trabajando o esperando su permiso.136* **Agent map**: cuando la conversación incluye [subagentes](/docs/es/sub-agents), un recuento de agentes como **2 agents** aparece en la parte inferior del cuadro de solicitud. Su punto muestra si algún subagente está trabajando o esperando su permiso.

131 137 

132 Haga clic en el recuento de agentes para abrir el mapa de agentes, que dibuja los subagentes de la conversación como un árbol bajo el agente principal, cada uno con su estado, tiempo transcurrido y recuento de tokens. Haga clic en un subagente para ver su solicitud y llamadas de herramientas, abrir su transcripción de solo lectura, o detenerlo mientras se ejecuta. Requiere Claude Code v2.1.269 o posterior.138 Haga clic en el recuento de agentes para abrir el mapa de agentes, que dibuja los subagentes de la conversación como un árbol bajo el agente principal, cada uno con su estado, tiempo transcurrido y recuento de tokens. Haga clic en un subagente para ver su solicitud y llamadas de herramientas, abrir su transcripción de solo lectura, o detenerlo mientras se ejecuta. Requiere Claude Code v2.1.269 o posterior.

133* **Extended thinking**: permite que Claude dedique más tiempo a razonar problemas complejos. Actívelo a través del menú de comandos (`/`). El razonamiento de Claude aparece en la conversación como bloques contraídos: haga clic en un bloque para leerlo, o presione `Ctrl+O` para expandir o contraer cada bloque de pensamiento en la sesión. Consulte [Extended thinking](/docs/es/model-config#extended-thinking) para obtener más detalles.139* **Extended thinking**: permite que Claude dedique más tiempo a razonar problemas complejos. Actívelo a través del menú de comandos (`/`). El razonamiento de Claude aparece en la conversación como bloques contraídos: haga clic en un bloque para leerlo, o presione `Ctrl+O` para expandir o contraer cada bloque de pensamiento en la sesión. Consulte [Extended thinking](/docs/es/model-config#extended-thinking) para obtener detalles.

134* **Multi-line input**: presione `Shift+Enter` para agregar una nueva línea sin enviar. Esto también funciona en la entrada de texto libre "Other" de los diálogos de preguntas.140* **Multi-line input**: presione `Shift+Enter` para agregar una nueva línea sin enviar. Esto también funciona en la entrada de texto libre "Other" de los diálogos de preguntas.

135 141 

136<h3 id="reference-files-and-folders">142<h3 id="reference-files-and-folders">

137 Archivos y carpetas de referencia143 Archivos y carpetas de referencia

138</h3>144</h3>

139 145 

140Use menciones con @ para dar a Claude contexto sobre archivos o carpetas específicas. Cuando escribe `@` seguido de un nombre de archivo o carpeta, Claude lee ese contenido y puede responder preguntas sobre él o realizar cambios en él. Claude Code admite coincidencia difusa, por lo que puede escribir nombres parciales para encontrar lo que necesita:146Use menciones con @ para dar a Claude contexto sobre archivos o carpetas específicos. Cuando escribe `@` seguido de un nombre de archivo o carpeta, Claude lee ese contenido y puede responder preguntas sobre él o hacer cambios en él. Claude Code admite coincidencia difusa, por lo que puede escribir nombres parciales para encontrar lo que necesita:

141 147 

142```text wrap theme={null}148```text wrap theme={null}

143Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)149Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)


146 152 

147Para archivos PDF grandes, puede pedirle a Claude que lea páginas específicas en lugar del archivo completo: una sola página, un rango como páginas 1-10, o un rango abierto como página 3 en adelante.153Para archivos PDF grandes, puede pedirle a Claude que lea páginas específicas en lugar del archivo completo: una sola página, un rango como páginas 1-10, o un rango abierto como página 3 en adelante.

148 154 

149Cuando selecciona texto en el editor, Claude puede ver su código resaltado automáticamente. El pie de página del cuadro de solicitud muestra cuántas líneas están seleccionadas. Presione `Option+K` (Mac) / `Alt+K` (Windows/Linux) para insertar una mención con @ con la ruta del archivo y números de línea (por ejemplo, `@app.ts#5-10`). Haga clic en la **X** en el indicador de selección para eliminarlo para que Claude no reciba la selección. El indicador vuelve cuando selecciona otro texto o cambia a un archivo diferente.155Cuando selecciona texto en el editor, Claude puede ver su código resaltado automáticamente. El pie de página del cuadro de solicitud muestra cuántas líneas están seleccionadas. Presione `Option+K` (Mac) / `Alt+K` (Windows/Linux) para insertar una mención con @ con la ruta del archivo y números de línea (por ejemplo, `@app.ts#5-10`). Haga clic en la **X** en el indicador de selección para eliminarlo para que Claude no reciba la selección. El indicador reaparece cuando selecciona otro texto.

156 

157Claude también ve qué archivo tiene abierto en el editor, incluso cuando nada está seleccionado, y el cuadro de solicitud muestra su nombre. Para agregar solo su texto seleccionado, desactive la [configuración Attach Open File](vscode://settings/claudeCode.attachOpenFile). La configuración requiere Claude Code v2.1.271 o posterior.

150 158 

151Para adjuntar una imagen, péguelo desde su portapapeles en el cuadro de solicitud. También puede mantener presionado `Shift` mientras arrastra archivos al cuadro de solicitud para agregarlos como adjuntos. Haga clic en la X en cualquier adjunto para eliminarlo del contexto.159Para adjuntar una imagen, péguela desde su portapapeles en el cuadro de solicitud. También puede mantener presionado `Shift` mientras arrastra archivos al cuadro de solicitud para agregarlos como adjuntos. Haga clic en la X en cualquier adjunto para eliminarlo del contexto.

152 160 

153<h3 id="resume-past-conversations">161<h3 id="resume-past-conversations">

154 Reanudar conversaciones anteriores162 Reanudar conversaciones pasadas

155</h3>163</h3>

156 164 

157Haga clic en el botón **Session history** en la parte superior del panel de Claude Code para acceder a su historial de conversaciones. Puede buscar por palabra clave o examinar por tiempo.165Haga clic en el botón **Session history** en la parte superior del panel de Claude Code para acceder a su historial de conversaciones. Puede buscar por palabra clave o examinar por tiempo.


174 Reanudar sesiones en la nube desde Claude.ai182 Reanudar sesiones en la nube desde Claude.ai

175</h3>183</h3>

176 184 

177Si utiliza [Claude Code en la web](/docs/es/claude-code-on-the-web), puede reanudar esas sesiones en la nube directamente en VS Code. Esto requiere iniciar sesión con **Claude.ai Subscription**, no Anthropic Console.185Si ejecuta [sesiones en la nube](/docs/es/claude-code-on-the-web), puede reanudarlas directamente en VS Code. Esto requiere iniciar sesión con **Claude.ai Subscription**, no Anthropic Console.

178 186 

179<Steps>187<Steps>

180 <Step title="Open session history">188 <Step title="Open session history">


191</Steps>199</Steps>

192 200 

193<Note>201<Note>

194 Solo las sesiones web iniciadas con un repositorio de GitHub aparecen en la pestaña Web. Reanudar carga el historial de conversaciones localmente; los cambios no se sincronizan de vuelta a claude.ai.202 Solo las sesiones en la nube iniciadas con un repositorio de GitHub aparecen en la pestaña Web. Reanudar carga el historial de conversaciones localmente; los cambios no se sincronizan de vuelta a claude.ai.

195</Note>203</Note>

196 204 

197<h3 id="check-account-and-usage">205<h3 id="check-account-and-usage">

198 Verificar cuenta y uso206 Verificar cuenta y uso

199</h3>207</h3>

200 208 

201Ejecute `/usage` para abrir el diálogo Account & usage. El diálogo requiere un inicio de sesión en claude.ai, por lo que no se ofrece en un [proveedor de terceros](#use-third-party-providers). Muestra su cuenta conectada, su plan y barras de uso para los límites de su plan, como la sesión actual y la semana. Cada barra muestra cuánto tiempo falta para que se reinicie su límite.209Ejecute `/usage` para abrir el diálogo Account & usage. El diálogo requiere un inicio de sesión en claude.ai, por lo que no se ofrece en un [proveedor de terceros](#use-third-party-providers). Muestra su cuenta conectada, su plan y barras de uso para los límites de su plan, como la sesión actual y la semana. Cada barra muestra cuánto tiempo falta para que se restablezca su límite.

202 210 

203El diálogo también desglosa qué está contribuyendo a los límites de su plan. Marca comportamientos que representan el 10% o más del uso reciente, como fallos de caché, contexto largo, sesiones con muchos subagentes o altamente paralelas, cada una con un consejo para reducirlo. Las tablas de atribución muestran cuánto uso provino de cada skill, subagente, plugin y servidor MCP.211El diálogo también desglosa qué está contribuyendo a los límites de su plan. Marca comportamientos que representan el 10% o más del uso reciente, como fallos de caché, contexto largo, sesiones pesadas en subagentes o altamente paralelas, cada una con un consejo para reducirlo. Las tablas de atribución muestran cuánto uso provino de cada skill, subagente, plugin y servidor MCP.

204 212 

205Use el conmutador Day y Week para cambiar entre las últimas 24 horas y los últimos 7 días. Las cifras son aproximadas y se calculan a partir de sesiones locales en esta máquina, por lo que el uso de otros dispositivos o claude.ai no se incluye. Para obtener más información sobre cómo rastrear y reducir el uso, consulte [Track your costs](/docs/es/costs#track-your-costs).213Use el conmutador Day y Week para cambiar entre las últimas 24 horas y los últimos 7 días. Las cifras son aproximadas y se calculan a partir de sesiones locales en esta máquina, por lo que el uso de otros dispositivos o claude.ai no se incluye. Para obtener más información sobre cómo rastrear y reducir el uso, consulte [Track your costs](/docs/es/costs#track-your-costs).

206 214 


450| `initialPermissionMode` | - | Controla los mensajes de aprobación para nuevas conversaciones: `default`, `plan`, `acceptEdits` o `bypassPermissions`. `manual` es un alias para `default` y selecciona el modo etiquetado como **Manual** en el indicador de modo. Cuando lo deja sin establecer, la extensión elige el modo de permisos inicial como se describe en [Switch permission modes](/docs/es/permission-modes#switch-permission-modes). |458| `initialPermissionMode` | - | Controla los mensajes de aprobación para nuevas conversaciones: `default`, `plan`, `acceptEdits` o `bypassPermissions`. `manual` es un alias para `default` y selecciona el modo etiquetado como **Manual** en el indicador de modo. Cuando lo deja sin establecer, la extensión elige el modo de permisos inicial como se describe en [Switch permission modes](/docs/es/permission-modes#switch-permission-modes). |

451| `preferredLocation` | `panel` | Dónde se abre Claude: `sidebar` (derecha) o `panel` (nueva pestaña) |459| `preferredLocation` | `panel` | Dónde se abre Claude: `sidebar` (derecha) o `panel` (nueva pestaña) |

452| `autosave` | `true` | Guardar automáticamente archivos antes de que Claude los lea o escriba |460| `autosave` | `true` | Guardar automáticamente archivos antes de que Claude los lea o escriba |

461| `attachOpenFile` | `true` | Agregue el archivo que está abierto en el editor a sus mensajes y muéstrelo en el cuadro de mensaje. Cuando está desactivado, solo se agrega el texto seleccionado. Requiere Claude Code v2.1.271 o posterior |

453| `useCtrlEnterToSend` | `false` | Usar Ctrl/Cmd+Enter en lugar de Enter para enviar mensajes |462| `useCtrlEnterToSend` | `false` | Usar Ctrl/Cmd+Enter en lugar de Enter para enviar mensajes |

454| `enableNewConversationShortcut` | `false` | Habilitar Cmd/Ctrl+N para iniciar una nueva conversación |463| `enableNewConversationShortcut` | `false` | Habilitar Cmd/Ctrl+N para iniciar una nueva conversación |

455| `enableReopenClosedSessionShortcut` | `true` | Usar Cmd/Ctrl+Shift+T para reabrir la pestaña de sesión de Claude cerrada más recientemente. Cuando la última pestaña cerrada no era una sesión de Claude, el atajo ejecuta el comando normal de reapertura de editor cerrado de VS Code en su lugar. |464| `enableReopenClosedSessionShortcut` | `true` | Usar Cmd/Ctrl+Shift+T para reabrir la pestaña de sesión de Claude cerrada más recientemente. Cuando la última pestaña cerrada no era una sesión de Claude, el atajo ejecuta el comando normal de reapertura de editor cerrado de VS Code en su lugar. |


623 632 

624El servidor se llama `ide` y está oculto en `/mcp` porque no hay nada que configurar. Sin embargo, si su organización utiliza un hook `PreToolUse` para crear una lista de herramientas MCP permitidas, deberá saber que existe.633El servidor se llama `ide` y está oculto en `/mcp` porque no hay nada que configurar. Sin embargo, si su organización utiliza un hook `PreToolUse` para crear una lista de herramientas MCP permitidas, deberá saber que existe.

625 634 

626**Contexto de selección y archivo abierto.** Mientras está conectado, la CLI incluye su selección actual del editor y la ruta del archivo activo como contexto en cada solicitud que envía. La transcripción muestra una línea `⧉ Selected N lines from <file>` cuando esto sucede. Para excluir un archivo sensible como `.env`, agregue una [regla de denegación `Read`](/docs/es/permissions#read-and-edit) para su ruta. Una regla de denegación coincidente evita que tanto el texto seleccionado como el aviso de archivo abierto para ese archivo lleguen a Claude.635**Contexto de selección y archivo abierto.** Mientras está conectado, la CLI incluye su selección actual del editor y la ruta del archivo activo como contexto en cada solicitud que envía. La transcripción muestra una línea `⧉ Selected N lines from <file>` cuando esto sucede.

636 

637Para excluir un archivo sensible como `.env`, agregue una [regla de denegación `Read`](/docs/es/permissions#read-and-edit) para su ruta. Una regla de denegación coincidente evita que tanto el texto seleccionado como el aviso de archivo abierto para ese archivo lleguen a Claude.

638 

639Si desactiva la [configuración Attach Open File](#extension-settings), la CLI recibe la ruta del archivo activo solo mientras tenga texto seleccionado en él.

627 640 

628**Transporte y autenticación.** El servidor se vincula a `127.0.0.1` en un puerto aleatorio en el rango 10000–65535, y el puerto no es configurable. El transporte es `ws://` sin cifrar; como el socket es solo de bucle invertido, cualquier proceso que pueda capturar el tráfico también puede leer el token del archivo de bloqueo, por lo que TLS no agregaría protección. Cada activación de extensión genera un token de autenticación aleatorio nuevo, lo escribe en un archivo de bloqueo en `~/.claude/ide/<port>.lock`, y la CLI debe presentarlo como el encabezado `X-Claude-Code-Ide-Authorization` para conectarse. El archivo de bloqueo tiene permisos `0600` en un directorio `0700`, por lo que solo el usuario que ejecuta VS Code puede leerlo. Si se establece `CLAUDE_CONFIG_DIR`, el archivo de bloqueo se escribe en `$CLAUDE_CONFIG_DIR/ide/` en su lugar.641**Transporte y autenticación.** El servidor se vincula a `127.0.0.1` en un puerto aleatorio en el rango 10000–65535, y el puerto no es configurable. El transporte es `ws://` sin cifrar; como el socket es solo de bucle invertido, cualquier proceso que pueda capturar el tráfico también puede leer el token del archivo de bloqueo, por lo que TLS no agregaría protección. Cada activación de extensión genera un token de autenticación aleatorio nuevo, lo escribe en un archivo de bloqueo en `~/.claude/ide/<port>.lock`, y la CLI debe presentarlo como el encabezado `X-Claude-Code-Ide-Authorization` para conectarse. El archivo de bloqueo tiene permisos `0600` en un directorio `0700`, por lo que solo el usuario que ejecuta VS Code puede leerlo. Si se establece `CLAUDE_CONFIG_DIR`, el archivo de bloqueo se escribe en `$CLAUDE_CONFIG_DIR/ide/` en su lugar.

629 642 

web-quickstart.md +43 −37

Details

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

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

4 4 

5# Comienza con Claude Code en la web5# Comienza con Claude Code en la nube

6 6 

7> Ejecuta Claude Code en la nube desde tu navegador o teléfono. Conecta un repositorio de GitHub, envía una tarea y revisa el PR sin configuración local.7> Ejecuta Claude Code en la nube desde tu navegador o teléfono. Conecta un repositorio de GitHub, envía una tarea y revisa el PR sin configuración local.

8 8 

9<Note>9<Note>

10 Claude Code en la web está en vista previa de investigación para usuarios Pro, Max y Team, y para usuarios Enterprise con asientos premium o asientos de Chat + Claude Code.10 Las sesiones en la nube están en vista previa de investigación para usuarios Pro, Max y Team, y para usuarios Enterprise con asientos premium o asientos de Chat + Claude Code.

11</Note>11</Note>

12 12 

13Claude Code en la web se ejecuta en la infraestructura en la nube en lugar de en tu máquina, administrada por Anthropic de forma predeterminada. Envía tareas desde [claude.ai/code](https://claude.ai/code) en tu navegador o en la aplicación móvil de Claude.13Una sesión en la nube ejecuta Claude Code en la infraestructura en la nube en lugar de en tu máquina, administrada por Anthropic de forma predeterminada. Este inicio rápido inicia una desde [claude.ai/code](https://claude.ai/code) en tu navegador. También puedes iniciar una desde la aplicación móvil de Claude, la aplicación de Desktop, o tu terminal con `claude --cloud`.

14 14 

15Necesitarás un repositorio de GitHub para [comenzar](#connect-github). Claude lo clona en una máquina virtual aislada, realiza cambios e impulsa una rama para que la revises. Las sesiones persisten entre dispositivos, por lo que una tarea que comiences en tu portátil está lista para revisar desde tu teléfono más tarde.15Necesitarás un repositorio de GitHub para [comenzar](#connect-github). Claude lo clona en una máquina virtual aislada, realiza cambios e impulsa una rama para que la revises. Las sesiones persisten entre dispositivos, por lo que una tarea que comiences en tu portátil está lista para revisar desde tu teléfono más tarde.

16 16 

17Claude Code en la web funciona bien para:17Las sesiones en la nube funcionan bien para:

18 18 

19* **Tareas paralelas**: ejecuta varias tareas independientes a la vez, cada una en su propia sesión y rama, sin necesidad de gestionar múltiples worktrees19* **Tareas paralelas**: ejecuta varias tareas independientes a la vez, cada una en su propia sesión y rama, sin necesidad de gestionar múltiples worktrees

20* **Repositorios que no tienes localmente**: Claude clona el repositorio nuevo en cada sesión, por lo que no necesitas tenerlo descargado20* **Repositorios que no tienes localmente**: Claude clona el repositorio nuevo en cada sesión, por lo que no necesitas tenerlo descargado


40 Compara formas de ejecutar Claude Code40 Compara formas de ejecutar Claude Code

41</h2>41</h2>

42 42 

43Claude Code se comporta igual en todas partes. Lo que cambia es dónde se ejecuta el código y si tu configuración local está disponible. La aplicación Desktop ofrece sesiones locales y en la nube, por lo que las respuestas a continuación dependen de cuál elijas:43Claude Code se comporta igual en todas partes. Lo que cambia es dónde se ejecuta la sesión y si tu configuración local está disponible:

44 44 

45| | En la web | Remote Control | Terminal CLI | Aplicación Desktop |45| | Sesión en la nube | Sesión local | Sesión local con [Remote Control](/docs/es/remote-control) |

46| :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------- | :---------------- | :---------------------------- |46| :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------- |

47| **El código se ejecuta en** | VM en la nube de Anthropic | Tu máquina | Tu máquina | Tu máquina o VM en la nube |47| **El código se ejecuta en** | VM en la nube, administrada por Anthropic de forma predeterminada | Tu máquina | Tu máquina |

48| **Chateas desde** | claude.ai o aplicación móvil | claude.ai o aplicación móvil | Tu terminal | La interfaz de Desktop |48| **La inicias desde** | claude.ai/code, la aplicación móvil de Claude, la aplicación Desktop con **Cloud** seleccionado, o `claude --cloud` | Tu terminal, tu IDE, o la aplicación Desktop con **Local** seleccionado | Tu terminal, la extensión de VS Code, o la aplicación Desktop |

49| **Usa tu configuración local** | No, solo repositorio | Sí | Sí | Sí para local, no para nube |49| **Chateas desde** | claude.ai, la aplicación móvil, o la aplicación Desktop | Donde la iniciaste | claude.ai o la aplicación móvil, así como donde la iniciaste |

50| **Requiere GitHub** | Sí, o [agrupa un repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) mediante `--cloud` | No | No | Solo para sesiones en la nube |50| **Usa tu configuración local** | No, solo repositorio | Sí | Sí |

51| **Sigue ejecutándose si te desconectas** | Sí | Mientras la terminal permanezca abierta | No | Depende del tipo de sesión |51| **Requiere GitHub** | Sí, o [agrupa un repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) mediante `--cloud` | No | No |

52| **[Modos de permiso](/docs/es/permission-modes)** | Aceptar ediciones, Plan, Auto | Preguntar, Aceptar ediciones automáticamente, Plan | Todos los modos | Depende del tipo de sesión |52| **Sigue ejecutándose si te desconectas** | Sí | No | Mientras la sesión permanezca abierta en tu máquina |

53| **Acceso a la red** | Configurable por entorno | Red de tu máquina | Red de tu máquina | Depende del tipo de sesión |53| **[Modos de permiso](/docs/es/permission-modes)** | Aceptar ediciones, Plan, Auto | Todos los modos en la terminal; consulta [Cambiar modos de permiso](/docs/es/permission-modes#switch-permission-modes) para la IDE y la aplicación Desktop | Manual, Aceptar ediciones, o Plan desde claude.ai y la aplicación móvil |

54| **Acceso a la red** | Configurable por entorno | Red de tu máquina | Red de tu máquina |

54 55 

55Consulta los documentos de [inicio rápido de terminal](/docs/es/quickstart), [aplicación Desktop](/docs/es/desktop) o [Remote Control](/docs/es/remote-control) para configurarlos.56Consulta los documentos de [inicio rápido de terminal](/docs/es/quickstart), [aplicación Desktop](/docs/es/desktop), o [Remote Control](/docs/es/remote-control) para configurar sesiones locales.

56 57 

57<h2 id="connect-github">58<h2 id="connect-github">

58 Conecta GitHub59 Conecta GitHub


66 67 

67<Steps>68<Steps>

68 <Step title="Visita claude.ai/code">69 <Step title="Visita claude.ai/code">

69 Ve a [claude.ai/code](https://claude.ai/code) e inicia sesión con tu cuenta de claude.ai. En macOS o Windows, la primera pantalla ofrece la aplicación de escritorio Claude Code y otras formas de instalar Claude Code. Para permanecer en el navegador, haz clic en **Continuar en web** en la parte inferior de la página.70 Ve a [claude.ai/code](https://claude.ai/code) e inicia sesión con tu cuenta de claude.ai.

70 </Step>71 </Step>

71 72 

72 <Step title="Inicia sesión con GitHub">73 <Step title="Inicia sesión con GitHub">


93 Conecta desde tu terminal94 Conecta desde tu terminal

94</h3>95</h3>

95 96 

96Si ya usas la CLI de GitHub (`gh`), puedes configurar Claude Code en la web desde tu terminal. Esto requiere la [CLI de Claude Code](/docs/es/quickstart). En planes Team y Enterprise, `/web-setup` está disponible solo después de que un Propietario active [Configuración rápida de web](/docs/es/claude-code-on-the-web#github-authentication-options).97Si ya usas la CLI de GitHub (`gh`), puedes conectar GitHub para sesiones en la nube desde tu terminal. Esto requiere la [CLI de Claude Code](/docs/es/quickstart). En planes Team y Enterprise, `/web-setup` está disponible solo después de que un Propietario active [Configuración rápida de web](/docs/es/claude-code-on-the-web#github-authentication-options).

97 98 

98Cuando ejecutas `/web-setup`, Claude Code lee el token que `gh auth token` imprime, te pide que confirmes y envía el token a Anthropic. Anthropic lo almacena cifrado con tu cuenta de claude.ai, y tus sesiones en la nube lo usan para acceso a GitHub hasta que [lo elimines](#remove-the-web-setup-token). Una sesión en la nube puede entonces acceder a cualquier repositorio que ese token pueda acceder, sin instalación de la aplicación Claude GitHub.99Cuando ejecutas `/web-setup`, Claude Code lee el token que `gh auth token` imprime, te pide que confirmes y envía el token a Anthropic. Anthropic lo almacena cifrado con tu cuenta de claude.ai, y tus sesiones en la nube lo usan para acceso a GitHub hasta que [lo elimines](#remove-the-web-setup-token). Una sesión en la nube que inicies tú mismo puede entonces acceder a cualquier repositorio que ese token pueda acceder, sin instalación de la aplicación Claude GitHub. Los hilos en un [proyecto](/docs/es/claude-projects#set-up-github-access) aún necesitan la aplicación.

99 100 

100Si ya conectaste GitHub en el navegador, `/web-setup` te advierte que continuar reemplaza esa conexión para tus sesiones en la nube.101Si ya conectaste GitHub en el navegador, `/web-setup` te advierte que continuar reemplaza esa conexión para tus sesiones en la nube.

101 102 


123 /web-setup124 /web-setup

124 ```125 ```

125 126 

126 Confirma el mensaje para enviar tu token de `gh` a tu cuenta de Claude. Si tiene éxito, Claude Code imprime `Connected as <tu-nombre-de-usuario-github>` y abre [claude.ai/code](https://claude.ai/code) en tu navegador. Si aún no tienes un entorno en la nube, `/web-setup` crea uno con acceso a red Trusted y sin script de configuración. Puedes [editar el entorno o agregar variables](/docs/es/cloud-environments#configure-your-environment) después. Una vez que `/web-setup` se complete, puedes iniciar sesiones en la nube desde tu terminal con [`--cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-web) o configurar tareas recurrentes con [`/schedule`](/docs/es/routines).127 Confirma el mensaje para enviar tu token de `gh` a tu cuenta de Claude. Si tiene éxito, Claude Code imprime `Connected as <tu-nombre-de-usuario-github>` y abre [claude.ai/code](https://claude.ai/code) en tu navegador. Si aún no tienes un entorno en la nube, `/web-setup` crea uno con acceso a red Trusted y sin script de configuración. Puedes [editar el entorno o agregar variables](/docs/es/cloud-environments#configure-your-environment) después. Una vez que `/web-setup` se complete, puedes iniciar sesiones en la nube desde tu terminal con [`--cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) o configurar tareas recurrentes con [`/schedule`](/docs/es/routines).

127 </Step>128 </Step>

128</Steps>129</Steps>

129 130 


226 La página solo muestra un botón de inicio de sesión de GitHub227 La página solo muestra un botón de inicio de sesión de GitHub

227</h3>228</h3>

228 229 

229Las sesiones en la nube requieren una cuenta de GitHub conectada. Conecta a través del flujo del navegador anterior, o ejecuta `/web-setup` desde tu terminal si usas la CLI de GitHub. Si prefieres no conectar GitHub en absoluto, consulta [Remote Control](/docs/es/remote-control) para ejecutar Claude Code en tu propia máquina y monitorearlo desde la web.230Las sesiones en la nube requieren una cuenta de GitHub conectada. Conecte a través del flujo del navegador anterior, o ejecute `/web-setup` desde su terminal si usa la CLI de GitHub. Si prefiere no conectar GitHub en absoluto, consulte [Remote Control](/docs/es/remote-control) para ejecutar Claude Code en su propia máquina y monitorearlo desde su navegador o teléfono.

230 231 

231<h3 id="not-available-for-the-selected-organization">232<h3 id="not-available-for-the-selected-organization">

232 "No disponible para la organización seleccionada"233 "No disponible para la organización seleccionada"

233</h3>234</h3>

234 235 

235Las organizaciones Enterprise pueden necesitar que un administrador habilite Claude Code en la web. Contacta a tu equipo de cuenta de Anthropic.236Las organizaciones Enterprise pueden necesitar que un propietario habilite sesiones en la nube. Contacte a su equipo de cuenta de Anthropic.

236 237 

237<h3 id="/web-setup-says-not-signed-in-to-claude">238<h3 id="/web-setup-says-not-signed-in-to-claude">

238 `/web-setup` dice "No signed in to Claude"239 `/web-setup` dice "Not signed in to Claude"

239</h3>240</h3>

240 241 

241Si `/web-setup` responde con "Not signed in to Claude. Run /login first.", la CLI no tiene un inicio de sesión válido en claude.ai. Esto también puede ocurrir cuando un inicio de sesión anterior ha expirado. Ejecuta `/login`, inicia sesión con tu cuenta de claude.ai, luego ejecuta `/web-setup` nuevamente.242Si `/web-setup` responde con "Not signed in to Claude. Run /login first.", la CLI no tiene un inicio de sesión válido en claude.ai. Esto también puede ocurrir cuando un inicio de sesión anterior ha expirado. Ejecute `/login`, inicie sesión con su cuenta de claude.ai, luego ejecute `/web-setup` nuevamente.

242 243 

243<h3 id="/web-setup-warns-that-your-token-doesn’t-have-the-workflow-scope">244<h3 id="/web-setup-warns-that-your-token-doesn’t-have-the-workflow-scope">

244 `/web-setup` advierte que tu token no tiene el alcance `workflow`245 `/web-setup` advierte que su token no tiene el alcance `workflow`

245</h3>246</h3>

246 247 

247Si `/web-setup` dice que tu token de CLI de GitHub no tiene el alcance `workflow`, puedes continuar, pero GitHub puede rechazar algunos pushes realizados con ese token, como los pushes que cambian archivos de flujo de trabajo de GitHub Actions. Para agregar el alcance, ejecuta `gh auth refresh -s workflow` en tu shell, luego ejecuta `/web-setup` nuevamente.248Si `/web-setup` dice que su token de CLI de GitHub no tiene el alcance `workflow`, puede continuar, pero GitHub puede rechazar algunos pushes realizados con ese token, como los pushes que cambian archivos de flujo de trabajo de GitHub Actions. Para agregar el alcance, ejecute `gh auth refresh -s workflow` en su shell, luego ejecute `/web-setup` nuevamente.

248 249 

249<h3 id="web-setup-shows-no-commands-match-or-unknown-command">250<h3 id="web-setup-shows-no-commands-match-or-unknown-command">

250 `/web-setup` muestra "No commands match" o "Unknown command"251 `/web-setup` muestra "No commands match" o "Unknown command"

251</h3>252</h3>

252 253 

253`/web-setup` se ejecuta dentro de la CLI de Claude Code, no en tu shell. Inicia `claude` primero, luego escribe `/web-setup` en el mensaje.254`/web-setup` se ejecuta dentro de la CLI de Claude Code, no en su shell. Inicie `claude` primero, luego escriba `/web-setup` en el mensaje.

254 255 

255Si lo escribiste dentro de Claude Code y el menú de comandos muestra `No commands match "/web-setup"`, o enviarlo devuelve `Unknown command: /web-setup`, el comando está oculto porque no se cumple un requisito. La causa generalmente es que estás autenticado con una clave API o proveedor de terceros en lugar de una suscripción de claude.ai. Ejecuta `/login` para iniciar sesión con tu cuenta de claude.ai.256Si lo escribió dentro de Claude Code y el menú de comandos muestra `No commands match "/web-setup"`, o enviarlo devuelve `Unknown command: /web-setup`, el comando está oculto porque no se cumple un requisito. La causa generalmente es que está autenticado con una clave API o proveedor de terceros en lugar de una suscripción de claude.ai. Ejecute `/login` para iniciar sesión con su cuenta de claude.ai.

256 257 

257En planes Team y Enterprise, el comando está oculto de forma predeterminada: el [interruptor de configuración rápida de web](/docs/es/claude-code-on-the-web#github-authentication-options) está desactivado hasta que un propietario lo active. Mientras esté desactivado, [conecta GitHub desde el navegador](#connect-github) en su lugar. El comando también está oculto cuando un administrador ha deshabilitado Claude Code en la web para tu organización, o cuando tu organización Enterprise tiene [Zero Data Retention](/docs/es/zero-data-retention) habilitado, lo que hace que Claude Code en la web no esté disponible.258En planes Team y Enterprise, el comando está oculto de forma predeterminada: el [interruptor de configuración rápida de web](/docs/es/claude-code-on-the-web#github-authentication-options) está desactivado hasta que un propietario lo active. Mientras esté desactivado, [conecte GitHub desde el navegador](#connect-github) en su lugar.

259 

260El comando también está oculto en otros dos casos:

261 

262* Un administrador ha deshabilitado sesiones en la nube para su organización. En este caso, enviar `/web-setup` devuelve [`Cloud sessions are disabled by your organization's policy`](/docs/es/errors#cloud-sessions-are-disabled-by-your-organizations-policy). Antes de v2.1.268, este caso también devolvía `Unknown command: /web-setup`.

263* Su organización Enterprise tiene [Zero Data Retention](/docs/es/zero-data-retention) habilitado, lo que hace que las sesiones en la nube no estén disponibles.

258 264 

259<h3 id="could-not-create-a-cloud-environment-or-no-cloud-environment-available-when-using-cloud">265<h3 id="could-not-create-a-cloud-environment-or-no-cloud-environment-available-when-using-cloud">

260 "No se pudo crear un entorno en la nube" o "No hay entorno en la nube disponible" al usar `--cloud`266 "No se pudo crear un entorno en la nube" o "No hay entorno en la nube disponible" al usar `--cloud`

261</h3>267</h3>

262 268 

263Las características de sesión remota crean un entorno en la nube predeterminado automáticamente si no tienes uno. Si ves "No se pudo crear un entorno en la nube", la creación automática falló. Si ves "No hay entorno en la nube disponible", tu CLI es anterior a la creación automática. En cualquier caso, ejecuta `/web-setup` en la CLI de Claude Code, o agrega un entorno desde el [selector de entorno](/docs/es/cloud-environments#configure-your-environment) en [claude.ai/code](https://claude.ai/code).269Las características de sesión en la nube crean un entorno en la nube predeterminado automáticamente si no tiene uno. Si ve "No se pudo crear un entorno en la nube", la creación automática falló. Si ve "No hay entorno en la nube disponible", su CLI es anterior a la creación automática. En cualquier caso, ejecute `/web-setup` en la CLI de Claude Code, o agregue un entorno desde el [selector de entorno](/docs/es/cloud-environments#configure-your-environment) en [claude.ai/code](https://claude.ai/code).

264 270 

265<h3 id="setup-script-failed">271<h3 id="setup-script-failed">

266 El script de configuración falló272 El script de configuración falló


268 274 

269El script de configuración salió con un estado distinto de cero, lo que bloquea el inicio de la sesión. Las causas comunes son:275El script de configuración salió con un estado distinto de cero, lo que bloquea el inicio de la sesión. Las causas comunes son:

270 276 

271* Una instalación de paquete falló porque el registro no está en tu [nivel de acceso a la red](/docs/es/cloud-environments#access-levels). `Trusted` cubre la mayoría de los administradores de paquetes; `None` los bloquea todos.277* Una instalación de paquete falló porque el registro no está en su [nivel de acceso a la red](/docs/es/cloud-environments#access-levels). `Trusted` cubre la mayoría de los administradores de paquetes; `None` los bloquea todos.

272* El script hace referencia a un archivo o ruta que no existe en un clon nuevo.278* El script hace referencia a un archivo o ruta que no existe en un clon nuevo.

273* Un comando que funciona localmente necesita una invocación diferente en Ubuntu.279* Un comando que funciona localmente necesita una invocación diferente en Ubuntu.

274 280 

275Para depurar, agrega `set -x` en la parte superior del script para ver qué comando falló. Para comandos no críticos, agrega `|| true` para que no bloqueen el inicio de la sesión.281Para depurar, agregue `set -x` en la parte superior del script para ver qué comando falló. Para comandos no críticos, agregue `|| true` para que no bloqueen el inicio de la sesión.

276 282 

277<h3 id="new-sessions-hang-or-time-out-during-setup">283<h3 id="new-sessions-hang-or-time-out-during-setup">

278 Las nuevas sesiones se cuelgan o agotan el tiempo de espera durante la configuración284 Las nuevas sesiones se cuelgan o agotan el tiempo de espera durante la configuración


280 286 

281Si las nuevas sesiones se estancan en el paso del script de configuración o fallan con un error genérico del contenedor antes de que el script termine, el script probablemente está excediendo el presupuesto de tiempo de aproximadamente cinco minutos para construir el [caché del entorno](/docs/es/cloud-environments#environment-caching). Los pasos pesados como extraer imágenes grandes de Docker, sincronizar árboles de dependencias completos o descargar pesos de modelos a menudo empujan el total por encima del límite, especialmente cuando se ejecutan uno tras otro.287Si las nuevas sesiones se estancan en el paso del script de configuración o fallan con un error genérico del contenedor antes de que el script termine, el script probablemente está excediendo el presupuesto de tiempo de aproximadamente cinco minutos para construir el [caché del entorno](/docs/es/cloud-environments#environment-caching). Los pasos pesados como extraer imágenes grandes de Docker, sincronizar árboles de dependencias completos o descargar pesos de modelos a menudo empujan el total por encima del límite, especialmente cuando se ejecutan uno tras otro.

282 288 

283Para solucionar esto, recorta el script para que se complete de manera confiable en menos de cinco minutos:289Para solucionar esto, recorte el script para que se complete de manera confiable en menos de cinco minutos:

284 290 

285* Ejecuta instalaciones independientes en paralelo con `&` y un `wait` final en lugar de ejecutarlas en serie.291* Ejecute instalaciones independientes en paralelo con `&` y un `wait` final en lugar de ejecutarlas en serie.

286* Mueve las descargas más grandes fuera del script de configuración y hacia un [hook SessionStart](/docs/es/cloud-environments#setup-scripts-vs-sessionstart-hooks) que las lance en segundo plano, para que la sesión sea utilizable mientras se completan.292* Mueva las descargas más grandes fuera del script de configuración y hacia un [hook SessionStart](/docs/es/cloud-environments#setup-scripts-vs-sessionstart-hooks) que las lance en segundo plano, para que la sesión sea utilizable mientras se completan.

287* Elimina los reintentos de sueño largo del script de configuración, ya que un bucle de reintento estancado cuenta contra el presupuesto.293* Elimine los reintentos de sueño largo del script de configuración, ya que un bucle de reintento estancado cuenta contra el presupuesto.

288 294 

289<h3 id="session-keeps-running-after-closing-the-tab">295<h3 id="session-keeps-running-after-closing-the-tab">

290 La sesión sigue ejecutándose después de cerrar la pestaña296 La sesión sigue ejecutándose después de cerrar la pestaña

291</h3>297</h3>

292 298 

293Esto es por diseño. Cerrar la pestaña o navegar lejos no detiene la sesión. Continúa ejecutándose en segundo plano hasta que Claude termine la tarea actual, luego se queda inactiva. Desde la barra lateral, puedes [archivar una sesión](/docs/es/claude-code-on-the-web#archive-sessions) para ocultarla de tu lista, o [eliminarla](/docs/es/claude-code-on-the-web#delete-sessions) para eliminarla permanentemente.299Esto es por diseño. Cerrar la pestaña o navegar lejos no detiene la sesión. Continúa ejecutándose en segundo plano hasta que Claude termine la tarea actual, luego se queda inactiva. Desde la barra lateral, puede [archivar una sesión](/docs/es/claude-code-on-the-web#archive-sessions) para ocultarla de su lista, o [eliminarla](/docs/es/claude-code-on-the-web#delete-sessions) para eliminarla permanentemente.

294 300 

295<h2 id="next-steps">301<h2 id="next-steps">

296 Próximos pasos302 Próximos pasos


302* [Configura entornos en la nube](/docs/es/cloud-environments): niveles de acceso de red, variables de entorno y scripts de configuración para sesiones en la nube308* [Configura entornos en la nube](/docs/es/cloud-environments): niveles de acceso de red, variables de entorno y scripts de configuración para sesiones en la nube

303* [Routines](/docs/es/routines): automatiza el trabajo en un horario, mediante llamada API o en respuesta a eventos de GitHub309* [Routines](/docs/es/routines): automatiza el trabajo en un horario, mediante llamada API o en respuesta a eventos de GitHub

304* [CLAUDE.md](/docs/es/memory): da a Claude instrucciones y contexto persistentes que se cargan al inicio de cada sesión310* [CLAUDE.md](/docs/es/memory): da a Claude instrucciones y contexto persistentes que se cargan al inicio de cada sesión

305* Instala la aplicación móvil de Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) para monitorear sesiones desde tu teléfono. Desde la CLI de Claude Code, `/mobile` muestra un código QR.311* Instala la aplicación móvil de Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) para monitorear sesiones desde tu teléfono. Desde la CLI de Claude Code, `/mobile` muestra un código QR para [claude.ai/mobile](https://claude.ai/mobile) que abre la tienda de aplicaciones correcta para tu teléfono.

whats-new.md +24 −0

Details

8 8 

9El resumen semanal para desarrolladores destaca las características más propensas a cambiar la forma en que trabaja. Cada entrada incluye código ejecutable, una breve demostración y un enlace a la documentación completa. Para cada corrección de errores y mejora menor, consulte el [registro de cambios](/docs/en/changelog).9El resumen semanal para desarrolladores destaca las características más propensas a cambiar la forma en que trabaja. Cada entrada incluye código ejecutable, una breve demostración y un enlace a la documentación completa. Para cada corrección de errores y mejora menor, consulte el [registro de cambios](/docs/en/changelog).

10 10 

11<Update label="Week 37" description="September 7–11, 2026" tags={["v2.1.263–v2.1.269"]}>

12 **`claude plugin eval`**: ejecute su plugin contra un conjunto de casos de prueba, califique los resultados y compare con una línea de base sin plugin. `claude plugin eval init` redacta los casos y calificadores para usted.

13 

14 También esta semana: extraiga cualquier **panel de Claude Code Desktop** en su propia ventana y acóplelo nuevamente más tarde; la configuración **`maxEffortLevel`** limita el nivel de esfuerzo en cada proveedor; y una página que **WebFetch** no ha terminado de descargar dentro de cinco minutos falla en lugar de colgarse.

15 

16 [Lea el resumen de la Week 37 →](/docs/es/whats-new/2026-w37)

17</Update>

18 

19<Update label="Week 36" description="August 31 – September 4, 2026" tags={["v2.1.251–v2.1.261"]}>

20 **Claude Fable 5.1**: disponible en Claude Code con una ventana de contexto de 1M de tokens.

21 

22 También esta semana: en planes Pro y Max, **el uso de computadora en la aplicación Desktop** funciona en segundo plano en macOS mientras continúa trabajando; en renderizado a pantalla completa, **`/diff`** abre un panel en vivo junto a la conversación que se actualiza mientras Claude edita; y **`/skill-doctor`** muestra qué cuesta cada una de sus skills en contexto y con qué frecuencia se usa.

23 

24 [Lea el resumen de la Week 36 →](/docs/es/whats-new/2026-w36)

25</Update>

26 

27<Update label="Week 35" description="August 24–28, 2026" tags={["v2.1.240–v2.1.250"]}>

28 **Reanudar sesiones de terminal en la aplicación Desktop**: escriba `/resume` en el cuadro de solicitud de Claude Code Desktop para retomar cualquier sesión que haya iniciado desde la CLI, con la conversación completa e intacta.

29 

30 También esta semana: **comentarios redactados por Claude** hace que Claude redacte un informe de comentarios cuando algo sale mal en una sesión, que usted revisa y envía desde `/feedback`; **`--restricted`** inicia una sesión sin las herramientas de ejecución de comandos ni su configuración de usuario y proyecto, para arneses de evaluación en máquinas compartidas; y la configuración **`modelPicker`** controla qué modelos lista el selector `/model`.

31 

32 [Lea el resumen de la Week 35 →](/docs/es/whats-new/2026-w35)

33</Update>

34 

11<Update label="Week 34" description="August 17–21, 2026" tags={["v2.1.234–v2.1.239"]}>35<Update label="Week 34" description="August 17–21, 2026" tags={["v2.1.234–v2.1.239"]}>

12 **`/design`**: una vista previa de investigación que trae el flujo de trabajo de artboard de Claude Design a la CLI y Claude Code Desktop, construido sobre artifacts, para que Claude redacte artboards editables para su interfaz de usuario e implemente el que elija.36 **`/design`**: una vista previa de investigación que trae el flujo de trabajo de artboard de Claude Design a la CLI y Claude Code Desktop, construido sobre artifacts, para que Claude redacte artboards editables para su interfaz de usuario e implemente el que elija.

13 37 

whats-new/2026-w35.md +98 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Semana 35 · 24–28 de agosto de 2026

6 

7> Reanude sesiones de terminal en la aplicación Claude Code Desktop, revise informes de comentarios que Claude redacta para usted e inicie una sesión en modo restringido.

8 

9<div className="digest-meta">

10 <span>Versiones <a href="/docs/en/changelog#2-1-240">v2.1.240 → v2.1.250</a></span>

11 <span>3 características · 24–28 de agosto</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Reanude sesiones de terminal en la aplicación Desktop</span>

17 <span className="digest-feature-pill">Desktop</span>

18 </div>

19 

20 <p className="digest-feature-lede">Escriba <code>/resume</code> en el cuadro de solicitud de Claude Code Desktop para retomar cualquier sesión que haya iniciado desde la CLI y continuar en la aplicación con toda la conversación e contexto intactos. Busque sus sesiones por título, carpeta o rama, y obtenga una vista previa de dónde se quedó antes de reanudar.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/desktop-resume-cli-session.mp4?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=41e4a5fda6b9d63280589f2cbdabf44f" data-path="images/whats-new/desktop-resume-cli-session.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">En una sesión de Desktop, ejecute el comando para listar sus sesiones de terminal:</p>

27 

28 ```text Claude Code theme={null}

29 > /resume

30 ```

31 

32 <p className="digest-feature-try">Seleccione una sesión y presione <code>Enter</code>. La conversación se abre en la aplicación donde se quedó.</p>

33 

34 <a className="digest-feature-link" href="/docs/es/desktop#coming-from-the-cli">Moverse entre la CLI y Desktop</a>

35</div>

36 

37<div className="digest-feature">

38 <div className="digest-feature-header">

39 <span className="digest-feature-title">Comentarios redactados por Claude</span>

40 <span className="digest-feature-pill">CLI</span>

41 </div>

42 

43 <p className="digest-feature-lede">Cuando una herramienta sigue fallando, Claude no puede ayudar con una solicitud, o usted señala un error, Claude ahora redacta un informe de comentarios para usted con la herramienta <code>SendFeedback</code>. Una tarjeta encima de su solicitud muestra el borrador, y puede revisarlo, enviarlo o descartarlo desde allí. Nada llega a Anthropic hasta que lo envíe. Requiere v2.1.238 o posterior.</p>

44 

45 <Frame>

46 <img className="w-full" src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/claude-drafted-feedback.jpg?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=5cacb3be0dffd1cbd417381f3721637e" alt="Una sesión de Claude Code donde Claude ha redactado un informe de error titulado Sandbox image pull fails behind proxy, mostrado como una tarjeta encima de la solicitud con opciones para revisar, enviar o descartar" width="1440" height="756" data-path="images/whats-new/claude-drafted-feedback.jpg" />

47 </Frame>

48 

49 <p className="digest-feature-try">Ejecute <code>/feedback</code> sin argumento para abrir su cola de borradores de cada sesión:</p>

50 

51 ```text Claude Code theme={null}

52 > /feedback

53 ```

54 

55 <p className="digest-feature-try">Seleccione un borrador, luego edítelo, envíelo o descártelo. Para desactivar la redacción, establezca <strong>Claude-drafted feedback</strong> en <code>off</code> en <code>/config</code>.</p>

56 

57 <a className="digest-feature-link" href="/docs/es/tools-reference#sendfeedback-tool-behavior">Comportamiento de la herramienta SendFeedback</a>

58</div>

59 

60<div className="digest-feature">

61 <div className="digest-feature-header">

62 <span className="digest-feature-title">Modo restringido</span>

63 <span className="digest-feature-pill">v2.1.248</span>

64 </div>

65 

66 <p className="digest-feature-lede">El modo restringido inicia Claude Code sin las herramientas integradas que ejecutan comandos o código. Úselo cuando un arnés de evaluación ejecute <code>claude</code> en una máquina compartida. Inicie con `--restricted` o establezca <code>CLAUDE\_CODE\_RESTRICTED=1</code>. Claude Code también elimina <code>WebFetch</code>, confina las herramientas de archivo a los directorios de trabajo, carga solo la configuración administrada y `--settings`, y rechaza el modo de permiso <code>bypassPermissions</code>.</p>

67 

68 <p className="digest-feature-try">Ejecute una consulta no interactiva sin las herramientas de ejecución de comandos:</p>

69 

70 ```bash terminal theme={null}

71 claude --restricted -p "review src/ for SQL injection risks"

72 ```

73 

74 <p className="digest-feature-try">Para darle a Claude una de las herramientas eliminadas, enumérela en `--tools` junto con las otras herramientas integradas que desee, por ejemplo `--tools "Bash,Read,Edit"`. `--tools` es una lista de permitidos, y su preestablecimiento <code>default</code> no restaura las herramientas eliminadas.</p>

75 

76 <a className="digest-feature-link" href="/docs/es/cli-reference#cli-flags">Indicadores de CLI</a>

77</div>

78 

79<div className="digest-wins">

80 <p className="digest-wins-title">Otros logros</p>

81 

82 <div className="digest-wins-grid">

83 <div>Establezca la nueva configuración <a href="/docs/es/settings-reference#modelpicker"><code>modelPicker</code></a> para extender o reemplazar la lista integrada del selector <code>/model</code> con sus propias entradas ordenadas y etiquetadas, incluidos los ID de modelo de Amazon Bedrock o de la Plataforma de Agentes de Google Cloud</div>

84 <div>Establezca <a href="/docs/es/prompt-caching#choose-the-ttl-yourself"><code>promptCacheTtl</code></a> en <code>1h</code> para mantener una caché de solicitud de una hora en la conversación principal cuando use una clave de API o un proveedor de nube; <code>subagentPromptCacheTtl</code> establece el TTL para subagentes y todas las otras solicitudes fuera de la conversación principal</div>

85 <div>En los planes Pro, Max, Team y Enterprise, <a href="/docs/es/costs#plan-usage-breakdown"><code>/usage</code></a> añade un desglose de Loops: recuento de ejecuciones, tokens totales, tokens por ejecución y última ejecución para <code>/loop</code> y tareas programadas que utilizaron la mayoría de tokens</div>

86 <div>Las organizaciones con tasas contratadas pueden establecer la configuración administrada <a href="/docs/es/costs#report-spend-at-your-contracted-rates"><code>modelPricing</code></a> para que <code>/usage</code>, la línea de estado y OpenTelemetry reporten el costo en esas tasas en lugar del precio de lista</div>

87 <div><code>/login</code> ofrece <strong>Inicie sesión con su cuenta de Console</strong> bajo la opción <strong>Cuenta de Anthropic Console</strong>, para que los miembros de organizaciones de Console que no permiten claves de API puedan iniciar sesión sin crear una</div>

88 <div>Ejecute <code>/permissions</code> y abra la nueva <a href="/docs/es/auto-mode-config#edit-rules-from-permissions">pestaña <strong>Auto mode</strong></a> para ver y editar las reglas del clasificador de modo automático sin abrir un archivo de configuración</div>

89 <div>Cuando el modo automático está disponible, los mensajes de permiso de Bash en los modos Manual y <code>acceptEdits</code> ofrecen una opción <a href="/docs/es/permission-modes#switch-permission-modes"><strong>Sí, y cambiar a modo automático</strong></a>; selecciónela para aprobar el comando y cambiar la sesión al modo automático</div>

90 <div>Después de <a href="/docs/es/permissions#move-the-session-to-another-directory">mover una sesión con <code>/cd</code></a>, la configuración del proyecto del nuevo directorio, hooks, servidores <code>.mcp.json</code>, skills y subagentes entran en vigor inmediatamente en lugar de en el próximo `--resume`</div>

91 <div>En sesiones no interactivas, incluidas ejecuciones de <code>-p</code>, ejecuciones de Agent SDK y sesiones en la nube, Claude Code <a href="/docs/es/errors#the-response-above-may-be-incomplete">continúa una respuesta</a> que un error del servidor, una conexión perdida o un estancamiento cortó a mitad de la transmisión, cuando la respuesta parcial contiene texto y sin llamadas de herramientas</div>

92 <div>Un subagente que se detiene en su límite <code>maxTurns</code> devuelve su salida marcada como parcial, con una sugerencia de que Claude puede <a href="/docs/es/sub-agents#resume-subagents">continuarla con <code>SendMessage</code></a>, en lugar de parecer terminada</div>

93 <div>En Amazon Bedrock, la Plataforma de Agentes de Google Cloud y Microsoft Foundry, las sesiones en la misma máquina ahora pueden <a href="/docs/es/cross-session-messaging#availability">mensajearse entre sí</a>, <code>/loop</code> puede <a href="/docs/es/scheduled-tasks#let-claude-choose-the-interval">elegir su propio intervalo</a>, y <code>/model</code> y <code>/effort</code> se aplican inmediatamente en lugar de después de que termine el turno</div>

94 <div>El instalador nativo y el actualizador automático descargan una compilación comprimida con zstd, aproximadamente 75 MB en lugar de 340 MB en Linux x64, y las compilaciones nativas cargan código bajo demanda, utilizando aproximadamente 40 a 70 MB menos de memoria por sesión</div>

95 </div>

96</div>

97 

98[Registro de cambios completo para v2.1.240–v2.1.250 →](/docs/en/changelog#2-1-240)

whats-new/2026-w36.md +109 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Semana 36 · 31 de agosto – 4 de septiembre de 2026

6 

7> Cambia a Claude Fable 5.1, permite que el computer use se ejecute en segundo plano en Desktop, y observa las ediciones de Claude en un panel /diff en vivo.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/en/changelog#2-1-251">v2.1.251 → v2.1.261</a></span>

11 <span>4 características · 31 de agosto – 4 de septiembre</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Fable 5.1</span>

17 <span className="digest-feature-pill">nuevo modelo</span>

18 </div>

19 

20 <p className="digest-feature-lede">Claude Fable 5.1 está disponible en Claude Code con una ventana de contexto de 1M de tokens, y el alias <code>fable</code> ahora lo selecciona. En sesiones de gateway de aplicaciones Claude, <code>fable</code> sigue seleccionando Fable 5. Si tu gateway sirve Fable 5.1, ejecuta <code>/model claude-fable-5-1</code>. Requiere v2.1.257 o posterior.</p>

21 

22 <p className="digest-feature-try">Cambia la sesión actual a Fable 5.1 y guárdala como tu predeterminada:</p>

23 

24 ```text Claude Code theme={null}

25 > /model fable

26 ```

27 

28 <p className="digest-feature-try">En la API de Anthropic, el selector lista Fable solo una vez que el servidor informa que está disponible para tu organización, pero escribir <code>/model fable</code> verifica directamente con el servidor.</p>

29 

30 <a className="digest-feature-link" href="/docs/es/model-config#work-with-fable">Trabajar con Fable</a>

31</div>

32 

33<div className="digest-feature">

34 <div className="digest-feature-header">

35 <span className="digest-feature-title">Computer use se ejecuta en segundo plano en Desktop</span>

36 <span className="digest-feature-pill">Desktop</span>

37 </div>

38 

39 <p className="digest-feature-lede">En macOS, el computer use en la aplicación Claude Code Desktop ahora funciona en segundo plano: Claude ve y actúa en las aplicaciones que has aprobado mientras continúas trabajando. El computer use en segundo plano está en beta en los planes Pro y Max.</p>

40 

41 <Frame>

42 <img className="w-full" src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/background-computer-use.jpg?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=a599a6c6fa544cb8d1b426b93706caf4" alt="Una sesión de Claude Code Desktop donde Claude solicita usar Xcode, con una tarjeta de permiso de Computer use que dice Permite que Claude vea y actúe en las aplicaciones que apruebes, en segundo plano o con control total de tu pantalla, junto a un botón Habilitar" width="1440" height="810" data-path="images/whats-new/background-computer-use.jpg" />

43 </Frame>

44 

45 <a className="digest-feature-link" href="/docs/es/desktop#let-claude-use-your-computer">Permite que Claude use tu computadora</a>

46</div>

47 

48<div className="digest-feature">

49 <div className="digest-feature-header">

50 <span className="digest-feature-title">Panel diff en vivo en renderizado a pantalla completa</span>

51 <span className="digest-feature-pill">v2.1.260</span>

52 </div>

53 

54 <p className="digest-feature-lede">En renderizado a pantalla completa, <code>/diff</code> ahora abre un panel junto a la conversación en lugar de un visor que tengas que cerrar. El panel lista los archivos modificados con sus recuentos de líneas añadidas y eliminadas y se actualiza cada vez que Claude edita un archivo o ejecuta un comando shell. Selecciona líneas en el panel con el ratón para adjuntarlas a tu siguiente prompt.</p>

55 

56 <Frame>

57 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/diff-panel.mp4?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=9d7553c19e7f227891cd95f1f59d796d" data-path="images/whats-new/diff-panel.mp4" />

58 </Frame>

59 

60 <p className="digest-feature-try">Con renderizado a pantalla completa activado, dentro de un repositorio git, y en una terminal de al menos 110 columnas de ancho, alterna el panel:</p>

61 

62 ```text Claude Code theme={null}

63 > /diff

64 ```

65 

66 <p className="digest-feature-try">Ejecuta <code>/diff</code> de nuevo o haz clic en la <code>✕</code> en su encabezado para cerrarlo.</p>

67 

68 <a className="digest-feature-link" href="/docs/es/interactive-mode#diff-panel">Panel diff</a>

69</div>

70 

71<div className="digest-feature">

72 <div className="digest-feature-header">

73 <span className="digest-feature-title">Encuentra skills no utilizadas con /skill-doctor</span>

74 <span className="digest-feature-pill">CLI</span>

75 </div>

76 

77 <p className="digest-feature-lede"><code>/skill-doctor</code> muestra lo que cada uno de tus skills cuesta en contexto y con qué frecuencia se usa, para que puedas decidir cuáles desactivar. Cada skill en el <a href="/docs/es/skills#skill-descriptions-are-cut-short">listado de skills</a> se suma a tu contexto en cada turno, independientemente de si Claude lo usa o no. Requiere v2.1.252 o posterior y no está disponible en sesiones que omitan <a href="/docs/es/env-vars#features-that-need-feature-flag-fetching">la obtención de banderas de características</a>.</p>

78 

79 <p className="digest-feature-try">Ejecútalo en una sesión interactiva para abrir el informe en la pestaña <strong>Stats</strong> del gestor <code>/plugin</code>:</p>

80 

81 ```text Claude Code theme={null}

82 > /skill-doctor

83 ```

84 

85 <p className="digest-feature-try">En modo no interactivo con <code>-p</code>, Claude Code imprime el informe como texto en su lugar.</p>

86 

87 <a className="digest-feature-link" href="/docs/es/skills#find-unused-skills">Encuentra skills no utilizadas</a>

88</div>

89 

90<div className="digest-wins">

91 <p className="digest-wins-title">Otros logros</p>

92 

93 <div className="digest-wins-grid">

94 <div>Un hook <a href="/docs/es/hooks#premodelswitch"><code>PreModelSwitch</code></a> puede bloquear un cambio de modelo que solicites, y un hook <a href="/docs/es/hooks#postmodelswitch"><code>PostModelSwitch</code></a> puede añadir contexto para Claude después de que cambie el modelo de la sesión</div>

95 <div><a href="/docs/es/costs#prompt-cache-statistics"><code>/cost</code></a> añade una línea <code>Prompt cache (main)</code>: la proporción de tokens de entrada servidos desde caché, los fallos de caché, si la caché está caliente, y una causa probable para el último fallo cuando Claude Code puede nombrar una. Los scripts de línea de estado obtienen un objeto <code>prompt\_cache</code> correspondiente</div>

96 <div>Las organizaciones pueden listar servidores MCP HTTP y SSE bajo la <a href="/docs/es/managed-mcp#provide-servers-through-managed-settings">configuración gestionada <code>managedMcpServers</code></a> para proporcionarlos a cada usuario, además de los servidores que los usuarios añaden por su cuenta</div>

97 <div><code>/effort</code> y el selector <code>/model</code> ahora <a href="/docs/es/model-config#adjust-effort-level">guardan un nivel de esfuerzo separado para cada modelo</a>; presiona <code>s</code> en lugar de <code>Enter</code> para aplicar un nivel solo a la sesión actual</div>

98 <div>Por defecto, el clasificador de modo automático <a href="/docs/es/permission-modes#what-the-classifier-blocks-by-default">ahora también bloquea</a> acciones como solicitar credenciales del endpoint de metadatos de instancia en la nube o conectarse a contenedores hermanos que Claude no inició</div>

99 <div>En modo automático, Claude Code te pregunta antes de que Claude <a href="/docs/es/permission-modes#first-read-outside-the-working-directories">lea por primera vez un archivo fuera de tus directorios de trabajo</a>, con una opción para bloquear tales lecturas a partir de entonces</div>

100 <div>Aumenta <a href="/docs/es/settings-reference#bashoutputmaxchars"><code>bashOutputMaxChars</code></a> y <a href="/docs/es/settings-reference#taskoutputmaxchars"><code>taskOutputMaxChars</code></a>, hasta 128,000 caracteres, para que Claude reciba más de la salida de un comando exitoso o tarea en segundo plano en línea</div>

101 <div>Los atajos de teclado de edición de palabras del prompt <a href="/docs/es/interactive-mode#make-ctrl-w-delete-back-to-whitespace">siguen readline</a> para todos, y la configuración <code>keybindingFlavor</code> ya no tiene ningún efecto. <code>Ctrl+W</code> elimina hacia el espacio en blanco anterior, y <code>Alt+B</code>, <code>Alt+F</code>, y <code>Alt+D</code> tratan la puntuación como <code>/</code> y <code>.</code> como separadores de palabras</div>

102 <div>Si estableces <code>defaultMode</code> en <code>"bypassPermissions"</code> en el <code>.claude/settings.json</code> o <code>.claude/settings.local.json</code> de un proyecto, <a href="/docs/es/permission-modes#which-mode-a-session-starts-in">ya no tiene efecto</a> y la sesión comienza en modo Manual; establece <code>"bypassPermissions"</code> en configuración de usuario o gestionada en su lugar, o pasa `--permission-mode`</div>

103 <div>Los planes Enterprise basados en asientos ahora <a href="/docs/es/model-config#default-model-setting">tienen Opus 5 como predeterminado</a></div>

104 <div>En la extensión de VS Code, haz clic en el nombre del modelo en la parte inferior del cuadro de prompt para <a href="/docs/es/vs-code#use-the-prompt-box">abrir el selector de modelo</a></div>

105 <div>En la extensión de VS Code, selecciona <strong>Output styles</strong> en la sección Personalizar del menú de comandos para <a href="/docs/es/vs-code#use-the-prompt-box">elegir un estilo de salida</a>, incluyendo los personalizados</div>

106 </div>

107</div>

108 

109[Registro de cambios completo para v2.1.251–v2.1.261 →](/docs/en/changelog#2-1-251)

whats-new/2026-w37.md +69 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Semana 37 · 7–11 de septiembre de 2026

6 

7> Prueba tus plugins con claude plugin eval y extrae los paneles de Claude Code Desktop en sus propias ventanas.

8 

9<div className="digest-meta">

10 <span>Lanzamientos <a href="/docs/en/changelog#2-1-263">v2.1.263 → v2.1.269</a></span>

11 <span>2 características · 7–11 de septiembre</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Prueba plugins con claude plugin eval</span>

17 <span className="digest-feature-pill">v2.1.269</span>

18 </div>

19 

20 <p className="digest-feature-lede"><code>claude plugin eval</code> ejecuta tu plugin contra un conjunto de casos de prueba, califica los resultados y, de forma predeterminada, ejecuta cada caso nuevamente sin el plugin para que puedas ver qué contribuye. <code>claude plugin eval init</code> te pregunta cómo debería verse un buen resultado, luego propone casos de prueba y las comprobaciones que los califican, prueba el conjunto una vez y escribe los archivos. Cada ejecución y cada comprobación que tiene un segundo modelo que juzga la respuesta es una llamada de modelo real en tu cuenta.</p>

21 

22 <Frame>

23 <img className="w-full" src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/plugin-eval.jpg?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=913066f6d4a2a15426e98a627802f47f" alt="Salida de terminal de claude plugin eval: una tabla de siete casos con la puntuación de cada caso con y sin el plugin, la diferencia entre ellos, el recuento de ejecuciones y el costo, seguido de una línea de resumen con la diferencia media, la duración total y el costo total" width="1600" height="900" data-path="images/whats-new/plugin-eval.jpg" />

24 </Frame>

25 

26 <p className="digest-feature-try">Desde el directorio raíz de tu plugin, pídele a Claude que redacte el conjunto:</p>

27 

28 ```bash terminal theme={null}

29 claude plugin eval init

30 ```

31 

32 <p className="digest-feature-try">Cuando Claude te diga que el conjunto está listo, sal de la sesión que <code>claude plugin eval init</code> abrió y ejecuta <code>claude plugin eval .</code> para calificar cada caso. La tabla de resumen se imprime en tu terminal, y <code>report.html</code> bajo <code>evals/results/</code> tiene el detalle por ejecución.</p>

33 

34 <a className="digest-feature-link" href="/docs/es/plugin-evals">Prueba plugins con evals</a>

35</div>

36 

37<div className="digest-feature">

38 <div className="digest-feature-header">

39 <span className="digest-feature-title">Extrae los paneles de Desktop en sus propias ventanas</span>

40 <span className="digest-feature-pill">Desktop</span>

41 </div>

42 

43 <p className="digest-feature-lede">En la aplicación Claude Code Desktop, puedes extraer cualquier panel en su propia ventana. Arrastra el diff o la terminal a una segunda pantalla mientras Claude sigue trabajando en la ventana principal, luego acopla el panel cuando hayas terminado.</p>

44 

45 <Frame>

46 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/desktop-pop-out-panes.mp4?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=ff3770dd09bb15ed9cf17a460f3d1e23" data-path="images/whats-new/desktop-pop-out-panes.mp4" />

47 </Frame>

48 

49 <a className="digest-feature-link" href="/docs/es/desktop#arrange-your-workspace">Organiza tu espacio de trabajo</a>

50</div>

51 

52<div className="digest-wins">

53 <p className="digest-wins-title">Otros logros</p>

54 

55 <div className="digest-wins-grid">

56 <div>Establece <a href="/docs/es/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> en el nivel superior o por modelo bajo <code>modelSettings</code> para limitar el nivel de esfuerzo en cada proveedor, incluidos Amazon Bedrock, la plataforma de agentes de Google Cloud y Microsoft Foundry; cualquier nivel superior se ejecuta en el límite</div>

57 <div>Apunta `--plugin-dir` a una carpeta de plugins para <a href="/docs/es/plugins#test-your-plugins-locally">cargar cada subcarpeta inmediata que tenga un manifiesto</a></div>

58 <div>Si WebFetch no ha terminado de descargar una página dentro de cinco minutos, <a href="/docs/es/tools-reference#webfetch-tool-behavior">la descarga falla con un error de límite de tiempo</a> en lugar de colgarse; establece <code>CLAUDE\_CODE\_WEBFETCH\_DEADLINE\_MS</code> para cambiar el límite, o a <code>0</code> para eliminar el límite</div>

59 <div>Pasa `--json` a <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code> o <code>disable</code> para imprimir el resultado como <a href="/docs/es/plugins-reference#plugin-json-result">un objeto JSON en la última línea de stdout</a></div>

60 <div>Cuando el clasificador del modo automático bloquea una acción, la razón que recibe Claude <a href="/docs/es/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">generalmente nombra la regla que coincidió</a>, como <code>\[Data Exfiltration]</code></div>

61 <div>Cuando escribes <code>/</code> a mitad de un mensaje, ahora puedes elegir de <a href="/docs/es/interactive-mode#complete-a-command-mid-prompt">una lista de comandos coincidentes</a> en lugar de una sola sugerencia. La lista se abre mientras escribes en renderizado a pantalla completa. Una habilidad de plugin también coincide con su nombre sin el prefijo del plugin</div>

62 <div>En la extensión de VS Code, haz clic en el recuento de agentes en la parte inferior del cuadro de mensaje para abrir el <a href="/docs/es/vs-code#use-the-prompt-box">mapa de agentes</a>, donde puedes abrir la transcripción de solo lectura de un subagente o detenerlo</div>

63 <div>En la extensión de VS Code, selecciona <strong>Hooks</strong> o <strong>Permissions</strong> en la sección Personalizar del menú de comandos para <a href="/docs/es/vs-code#use-the-prompt-box">agregar o eliminar hooks y reglas de permisos</a> en tu configuración de usuario, proyecto y local</div>

64 <div>Claude puede elegir un <a href="/docs/es/artifacts#create-an-artifact">icono de pestaña del navegador</a> para que coincida con cada artefacto que publica</div>

65 <div>En Claude Code en la web, recupera un mensaje en cola en una sesión en la nube antes de que Claude lo lea: elimínalo de la cola, o presiona <code>Esc</code> o <code>Up</code>, y el texto vuelve al cuadro de mensaje</div>

66 </div>

67</div>

68 

69[Registro de cambios completo para v2.1.263–v2.1.269 →](/docs/en/changelog#2-1-263)

workflows.md +21 −6

Details

400El runtime aplica las siguientes restricciones:400El runtime aplica las siguientes restricciones:

401 401 

402| Restricción | Por qué |402| Restricción | Por qué |

403| :------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |403| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

404| Sin entrada de usuario a mitad de ejecución | Solo los prompts de permiso del agente pueden pausar una ejecución. Para la aprobación entre etapas, ejecute cada etapa como su propio workflow |404| Sin entrada de usuario a mitad de ejecución | Una ejecución se pausa por sí sola solo para prompts de permiso del agente y una [espera de límite de uso](#when-a-run-hits-your-usage-limit). Para la aprobación entre etapas, ejecute cada etapa como su propio workflow |

405| Sin acceso directo al sistema de archivos o shell desde el workflow en sí | Los agentes leen, escriben y ejecutan comandos. El script coordina los agentes |405| Sin acceso directo al sistema de archivos o shell desde el workflow en sí | Los agentes leen, escriben y ejecutan comandos. El script coordina los agentes |

406| Sin carga de módulos: un script que contiene `import()` falla antes de que comience la ejecución | El cuerpo del script es JavaScript simple. Coloque el trabajo que necesita una biblioteca en la tarea de un agente |406| Sin carga de módulos: un script que contiene `import()` falla antes de que comience la ejecución | El cuerpo del script es JavaScript simple. Coloque el trabajo que necesita una biblioteca en la tarea de un agente |

407| Hasta 16 agentes concurrentes, menos cuando Claude Code tiene menos CPUs disponibles, incluso dentro de un contenedor con CPU limitada | Limita el uso de recursos locales |407| Hasta 16 agentes concurrentes por defecto, menos cuando Claude Code tiene menos CPUs disponibles, incluso dentro de un contenedor con CPU limitada. Para cambiar el límite, establezca [`CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS`](/docs/es/env-vars#variables) en un valor de 1 a 256, lo que requiere Claude Code v2.1.269 o posterior | Limita el uso de recursos locales |

408| En un fan-out, los agentes que comparten el prefijo de prompt-cache del primer agente se inician hasta 5 segundos después por defecto | Todos excepto el primero leen el [prefijo que el primer agente almacenó en cache](#prompt-caching-in-a-fan-out) en lugar de que cada uno lo procese sin cache |408| En un fan-out, los agentes que comparten el prefijo de prompt-cache del primer agente se inician hasta 5 segundos después por defecto | Todos excepto el primero leen el [prefijo que el primer agente almacenó en cache](#prompt-caching-in-a-fan-out) en lugar de que cada uno lo procese sin cache |

409| Hasta 4.096 elementos en una única llamada `parallel()` o `pipeline()`: el runtime rechaza una lista más larga con un error | Un límite silencioso dejaría caer parte de la carga de trabajo sin informar al script |409| Hasta 4.096 elementos en una única llamada `parallel()` o `pipeline()`: el runtime rechaza una lista más larga con un error | Un límite silencioso dejaría caer parte de la carga de trabajo sin informar al script |

410| 1.000 agentes totales por ejecución | Previene bucles descontrolados |410| 1.000 agentes totales por ejecución | Previene bucles descontrolados |


440 440 

441En sesiones locales y en la nube por igual, cuando Claude relanza una ejecución anterior y Claude Code no puede encontrar los resultados guardados de esa ejecución en absoluto, el relanzamiento falla con un error `nothing to resume` en lugar de iniciar la ejecución de nuevo por su cuenta. Pida a Claude que inicie el workflow de nuevo como una nueva ejecución.441En sesiones locales y en la nube por igual, cuando Claude relanza una ejecución anterior y Claude Code no puede encontrar los resultados guardados de esa ejecución en absoluto, el relanzamiento falla con un error `nothing to resume` en lugar de iniciar la ejecución de nuevo por su cuenta. Pida a Claude que inicie el workflow de nuevo como una nueva ejecución.

442 442 

443<h3 id="when-a-run-hits-your-usage-limit">

444 Cuando una ejecución alcanza su límite de uso

445</h3>

446 

447Cuando un agente alcanza su límite de uso de [claude.ai](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset), la ejecución se pausa en lugar de fallar ese agente: los agentes que alcanzan el límite esperan el reinicio, y no comienzan nuevos agentes. Poco después de que se reinicia el límite, los agentes en espera se ejecutan de nuevo y la ejecución continúa por su cuenta. Requiere Claude Code v2.1.271 o posterior; en versiones anteriores, los agentes afectados fallan.

448 

449Mientras la ejecución espera, su línea de progreso en el panel de tareas y el encabezado [`/workflows`](#watch-the-run) muestran cuándo se reinicia el límite.

450 

451La ejecución se pausa solo cuando se cumplen todas estas condiciones; cuando una no se cumple, el agente afectado falla en su lugar:

452 

453* La sesión es interactiva e inició sesión con una suscripción de claude.ai. Una ejecución no se pausa en [modo no interactivo](/docs/es/headless) con `claude -p` o el [Agent SDK](/docs/es/agent-sdk/overview), en una [sesión en segundo plano](/docs/es/agent-view), o en una sesión de compañero de [Remote Control](/docs/es/remote-control) o [equipo de agentes](/docs/es/agent-teams).

454* [`autoContinueAtUsageLimit`](/docs/es/settings-reference#autocontinueatusagelimit) está activado, la misma configuración que permite que la sesión misma [espere a que se reinicie un límite de uso](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset). Si lo desactiva durante una espera, la espera termina y los agentes en espera fallan.

455* El límite se reinicia dentro de 24 horas. Un límite semanal puede reiniciarse más adelante.

456* La ejecución aún no ha esperado dos veces. Cuando alcanza el límite por tercera vez, el agente falla.

457 

443<h3 id="cost">458<h3 id="cost">

444 Costo459 Costo

445</h3>460</h3>

446 461 

447Un workflow genera muchos agentes, por lo que una sola ejecución puede usar significativamente más tokens que trabajar a través de la misma tarea en conversación. Las ejecuciones cuentan hacia el uso de su plan y los límites de velocidad como cualquier otra sesión.462Un workflow genera muchos agentes, por lo que una sola ejecución puede usar significativamente más tokens que trabajar a través de la misma tarea en conversación. Las ejecuciones cuentan hacia el uso de su plan y los límites de velocidad.

448 463 

449Para evaluar el gasto antes de comprometerse con una tarea grande, ejecute el workflow en un segmento pequeño primero: un directorio en lugar de todo el repositorio, o una pregunta estrecha en lugar de una amplia. La vista `/workflows` muestra el uso de tokens de cada agente a medida que avanza la ejecución, y puede detener la ejecución allí en cualquier momento, generalmente sin perder el trabajo completado. [Reanudar después de una pausa](#resume-after-a-pause) cubre lo que una ejecución detenida conserva. Los límites de agente del runtime [limitan cuántos agentes puede generar una sola ejecución](#behavior-and-limits), lo que limita el costo de un script descontrolado. Para mantener las ejecuciones con menos agentes, elija la directriz de tamaño `small` [](#set-a-size-guideline).464Para evaluar el gasto antes de comprometerse con una tarea grande, ejecute el workflow en un segmento pequeño primero: un directorio en lugar de todo el repositorio, o una pregunta estrecha en lugar de una amplia. La vista `/workflows` muestra el uso de tokens de cada agente a medida que avanza la ejecución, y puede detener la ejecución allí en cualquier momento, generalmente sin perder el trabajo completado. [Reanudar después de una pausa](#resume-after-a-pause) cubre lo que una ejecución detenida conserva. Los límites de agente del runtime [limitan cuántos agentes puede generar una sola ejecución](#behavior-and-limits), lo que limita el costo de un script descontrolado. Para mantener las ejecuciones con menos agentes, elija la directriz de tamaño `small` [](#set-a-size-guideline).

450 465 


476| :------------- | :------------------------------------------------------ |491| :------------- | :------------------------------------------------------ |

477| `unrestricted` | Sin directriz: Claude dimensiona el workflow a la tarea |492| `unrestricted` | Sin directriz: Claude dimensiona el workflow a la tarea |

478| `small` | Menos de 5 agentes |493| `small` | Menos de 5 agentes |

479| `medium` | Menos de 15 agentes |494| `medium` | Menos de 10 agentes |

480| `large` | Menos de 50 agentes |495| `large` | Menos de 50 agentes |

481 496 

482El valor predeterminado es `medium`. Hasta que elija un valor, la fila `/config` muestra `medium (default)` y la línea `Running in background` del workflow muestra `medium size (/config)`. Requiere Claude Code v2.1.219 o posterior; las versiones anteriores tienen como valor predeterminado `unrestricted`.497El valor predeterminado es `medium`, o `small` cuando inicia sesión en un plan Pro con Claude Code v2.1.271 o posterior. Hasta que elija un valor, la fila `/config` marca el valor como predeterminado, y la línea `Running in background` del workflow nombra el tamaño en vigor. Requiere Claude Code v2.1.219 o posterior; las versiones anteriores tienen como valor predeterminado `unrestricted`.

483 498 

484Para cambiar la directriz, elija un valor para la configuración Dynamic workflow size en `/config`, o ejecute `/config workflowSizeGuideline=small`. En v2.1.219 y posterior, también puede establecer la clave [`workflowSizeGuideline`](/docs/es/settings-reference#workflowsizeguideline) en cualquier archivo de configuración; ese valor tiene prioridad sobre `/config`, y Claude Code oculta la fila `/config` mientras un archivo de configuración proporciona uno.499Para cambiar la directriz, elija un valor para la configuración Dynamic workflow size en `/config`, o ejecute `/config workflowSizeGuideline=small`. En v2.1.219 y posterior, también puede establecer la clave [`workflowSizeGuideline`](/docs/es/settings-reference#workflowsizeguideline) en cualquier archivo de configuración; ese valor tiene prioridad sobre `/config`, y Claude Code oculta la fila `/config` mientras un archivo de configuración proporciona uno.

485 500 

worktrees.md +5 −2

Details

139Cuando [envía al fondo](/docs/es/agent-view#send-the-session-to-the-background) una sesión `--worktree`, su worktree se convierte en un worktree de sesión en segundo plano que el barrido puede eliminar. El barrido deja un worktree en su lugar en estos casos:139Cuando [envía al fondo](/docs/es/agent-view#send-the-session-to-the-background) una sesión `--worktree`, su worktree se convierte en un worktree de sesión en segundo plano que el barrido puede eliminar. El barrido deja un worktree en su lugar en estos casos:

140 140 

141* El worktree aún contiene trabajo: archivos cambiados o sin seguimiento, o commits no enviados.141* El worktree aún contiene trabajo: archivos cambiados o sin seguimiento, o commits no enviados.

142* Claude Code no puede determinar qué controladores de filtro define la configuración del repositorio, en cualquiera de los [tres casos que también bloquean la creación de worktree](#git-lfs-content-is-missing-from-a-worktree-claude-code-created).142* Uno de los [cuatro casos que también bloquean la creación de worktree](#git-lfs-content-is-missing-from-a-worktree-claude-code-created) se aplica: Claude Code no puede determinar qué controladores de filtro define la configuración del repositorio, o encuentra una configuración allí que no puede desactivar.

143* El worktree pertenece a una sesión `--worktree` que no ha enviado al fondo, sin importar su antigüedad.143* El worktree pertenece a una sesión `--worktree` que no ha enviado al fondo, sin importar su antigüedad.

144* Creó el worktree usted mismo con `git worktree add`, incluso si luego ejecutó una sesión `--worktree <name>` en él y envió esa sesión al fondo.144* Creó el worktree usted mismo con `git worktree add`, incluso si luego ejecutó una sesión `--worktree <name>` en él y envió esa sesión al fondo.

145 145 


353 353 

354Para obtener los archivos reales, ejecute `git lfs pull` dentro del worktree.354Para obtener los archivos reales, ejecute `git lfs pull` dentro del worktree.

355 355 

356En tres casos raros, Claude Code no puede decir qué controladores de filtro define la configuración del repositorio, y no crea ningún worktree en absoluto. Haga coincidir el error con su corrección:356En cuatro casos raros, Claude Code no crea ningún worktree en absoluto: no puede determinar qué controladores de filtro define la configuración del repositorio, o encuentra una configuración allí que no puede desactivar. Haga coincidir el error con su corrección:

357 357 

358* **`Could not read the repository git config to neutralize filter drivers`**: Claude Code no pudo leer el `.git/config` del repositorio, por ejemplo debido a sus permisos. Corrija eso e intente de nuevo.358* **`Could not read the repository git config to neutralize filter drivers`**: Claude Code no pudo leer el `.git/config` del repositorio, por ejemplo debido a sus permisos. Corrija eso e intente de nuevo.

359* **`The repository git config defines a filter driver whose name cannot be neutralized (contains "=" or a newline)`**: cambie el nombre o elimine ese controlador de filtro en `.git/config` e intente de nuevo.359* **`The repository git config defines a filter driver whose name cannot be neutralized (contains "=" or a newline)`**: cambie el nombre o elimine ese controlador de filtro en `.git/config` e intente de nuevo.

360* **`The repository git config has a conditional include (includeIf)`**: mueva la configuración que el `includeIf` en `.git/config` extrae directamente a ese archivo, elimine el `includeIf`, e intente de nuevo. Un `includeIf` en su configuración de git global no activa esto.360* **`The repository git config has a conditional include (includeIf)`**: mueva la configuración que el `includeIf` en `.git/config` extrae directamente a ese archivo, elimine el `includeIf`, e intente de nuevo. Un `includeIf` en su configuración de git global no activa esto.

361* **`Git was not run: the repository's own git config sets <key>`**: el mensaje nombra una clave que apunta Git LFS a un programa para ejecutar, como `lfs.customtransfer.<name>.path` o `lfs.standalonetransferagent`. Si esa configuración es suya, muévala a su configuración de git global. Si no la reconoce, elimínela de la configuración de git del repositorio, ya que una herramienta o checkout que no confía puede haberla escrito. Reintente una vez que la clave se haya ido de la configuración del repositorio.

361 362 

362<h3 id="claude-code-refuses-to-use-a-worktree">363<h3 id="claude-code-refuses-to-use-a-worktree">

363 Claude Code se niega a usar un worktree364 Claude Code se niega a usar un worktree


406 407 

407El final de rechazo incrustado en cada error se comparte con los avisos interactivos, así que aún coincide con su entrada bajo [Claude Code se niega a usar un worktree](#claude-code-refuses-to-use-a-worktree).408El final de rechazo incrustado en cada error se comparte con los avisos interactivos, así que aún coincide con su entrada bajo [Claude Code se niega a usar un worktree](#claude-code-refuses-to-use-a-worktree).

408 409 

410En el resultado stream-json, [`startup_failure_reason`](/docs/es/agent-sdk/typescript#startup_failure_reason) es `worktree_unverified` para el error `could not verify worktree` y `worktree_resume_refused` para los errores `cannot resume into worktree` y `The worktree binding is kept`. Una aplicación puede ramificarse en él en lugar de hacer coincidir el texto del error. Antes de v2.1.274, el resultado no llevaba ningún campo `startup_failure_reason`.

411 

409<h2 id="see-also">412<h2 id="see-also">

410 Véase también413 Véase también

411</h2>414</h2>

Details

64Cuando ZDR está habilitado para una organización de Claude Code en Claude for Enterprise, ciertas características que requieren almacenar prompts o completaciones se deshabilitan automáticamente a nivel de backend:64Cuando ZDR está habilitado para una organización de Claude Code en Claude for Enterprise, ciertas características que requieren almacenar prompts o completaciones se deshabilitan automáticamente a nivel de backend:

65 65 

66| Característica | Razón |66| Característica | Razón |

67| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |67| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |

68| [Claude Code en la Web](/docs/es/claude-code-on-the-web) | Requiere almacenamiento del lado del servidor del historial de conversaciones. |68| [Cloud sessions](/docs/es/claude-code-on-the-web), incluidas las iniciadas desde la [aplicación Desktop](/docs/es/desktop#cloud-sessions) | Requiere almacenamiento del lado del servidor de datos de sesión, incluido el historial de conversaciones con prompts y completaciones. |

69| [Sesiones remotas](/docs/es/desktop#cloud-sessions) desde la aplicación Desktop | Requiere datos de sesión persistentes que incluyen prompts y completaciones. |

70| [Claude Tag](/docs/es/claude-tag) | Retiene la memoria del canal y las transcripciones de sesión. |69| [Claude Tag](/docs/es/claude-tag) | Retiene la memoria del canal y las transcripciones de sesión. |

71| [Artefactos](/docs/es/artifacts) | Requiere almacenar contenido de página publicado en infraestructura operada por Anthropic. |70| [Artefactos](/docs/es/artifacts) | Requiere almacenar contenido de página publicado en infraestructura operada por Anthropic. |

72| Envío de comentarios (`/feedback`, `/bug`, `/share`) | Enviar comentarios envía datos de conversación a Anthropic. |71| Envío de comentarios (`/feedback`, `/bug`, `/share`) | Enviar comentarios envía datos de conversación a Anthropic. |