SpyBara
Go Premium

Documentation 2026-06-29 23:02 UTC to 2026-06-30 23:02 UTC

78 files changed +3,065 −604. View all changes and history on the product overview
2026
Tue 30 23:02 Mon 29 23:02 Sat 27 01:01 Fri 26 23:00 Thu 25 23:58 Wed 24 22:02 Tue 23 22:00 Mon 22 23:59 Fri 19 22:58 Thu 18 22:00 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

admin-setup.md +11 −9

Details

46 Decidir cómo llega la configuración a los dispositivos46 Decidir cómo llega la configuración a los dispositivos

47</h2>47</h2>

48 48 

49La configuración administrada define la política que tiene prioridad sobre la configuración local del desarrollador. Claude Code comprueba las cuatro fuentes que se indican a continuación en orden de prioridad y aplica la primera que devuelve una configuración no vacía.49La configuración administrada define la política que tiene prioridad sobre la configuración local del desarrollador. Claude Code comprueba las cuatro fuentes que se indican a continuación en orden de prioridad y aplica la primera que devuelve una configuración no vacía, con una excepción: un pequeño conjunto de [claves de bloqueo entre fuentes](/es/settings#settings-precedence), como los bloqueos de lista de permitidos de sandbox, se respeta cuando cualquier fuente controlada por administrador los establece.

50 50 

51| Mecanismo | Entrega | Prioridad | Plataformas |51| Mecanismo | Entrega | Prioridad | Plataformas |

52| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- | :------------- |52| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- | :------------- |

53| Server-managed | Consola de administración de Claude.ai | Más alta | Todas |53| Server-managed | Consola de administración de claude.ai, o una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) autohospedada para inicios de sesión de puerta de enlace | Más alta | Todas |

54| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Alta | macOS, Windows |54| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Alta | macOS, Windows |

55| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux y WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Media | Todas |55| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux y WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Media | Todas |

56| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Más baja | Solo Windows |56| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Más baja | Solo Windows |

57 57 

58La configuración administrada por servidor llega a los dispositivos en el momento de la autenticación y se actualiza cada hora durante las sesiones activas, sin infraestructura de punto final. Requieren un plan Claude for Teams o Enterprise, por lo que las implementaciones en otros proveedores necesitan uno de los mecanismos basados en archivos o a nivel del SO en su lugar.58Un [`policyHelper`](/es/settings#compute-managed-settings-with-a-policy-helper) configurado tiene prioridad sobre las cuatro fuentes: su salida se convierte en la única configuración administrada para la ejecución. Consulte [Settings precedence](/es/settings#settings-precedence).

59 59 

60Si su organización mezcla proveedores, configure [server-managed settings](/es/server-managed-settings) para usuarios de Claude.ai más un [respaldo basado en archivos o plist/registry](/es/settings#settings-files) para que otros usuarios aún reciban política administrada.60La configuración administrada por servidor llega a los dispositivos en el momento de la autenticación y se actualiza cada hora durante las sesiones activas, sin infraestructura de punto final. La entrega a través de la consola de administración de claude.ai requiere un plan Claude for Teams o Enterprise. Las implementaciones en Bedrock, Vertex AI o Foundry pueden obtener la misma entrega remota ejecutando una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway), o usar uno de los mecanismos basados en archivos o a nivel del SO en su lugar.

61 

62Si su organización mezcla proveedores, configure [server-managed settings](/es/server-managed-settings) para usuarios de claude.ai más un [respaldo basado en archivos o plist/registry](/es/settings#settings-files) para que otros usuarios aún reciban política administrada.

61 63 

62Las ubicaciones de plist y registro HKLM funcionan con cualquier proveedor y resisten la manipulación porque requieren privilegios de administrador para escribir. El registro de usuario de Windows en HKCU se puede escribir sin elevación, así que trátelo como un valor predeterminado de conveniencia en lugar de un canal de aplicación.64Las ubicaciones de plist y registro HKLM funcionan con cualquier proveedor y resisten la manipulación porque requieren privilegios de administrador para escribir. El registro de usuario de Windows en HKCU se puede escribir sin elevación, así que trátelo como un valor predeterminado de conveniencia en lugar de un canal de aplicación.

63 65 

64Por defecto, WSL lee solo la ruta de archivo de Linux en `/etc/claude-code`. Para extender su política de registro de Windows y `C:\Program Files\ClaudeCode` a WSL en la misma máquina, establezca [`wslInheritsWindowsSettings: true`](/es/settings#available-settings) en cualquiera de esas fuentes de solo administrador de Windows.66Por defecto, WSL lee solo la ruta de archivo de Linux en `/etc/claude-code`. Para extender su política de registro de Windows y `C:\Program Files\ClaudeCode` a WSL en la misma máquina, establezca [`wslInheritsWindowsSettings: true`](/es/settings#available-settings) en cualquiera de esas fuentes de solo administrador de Windows.

65 67 

66Cualquiera que sea el mecanismo que elija, los valores administrados tienen prioridad sobre la configuración de usuario y proyecto. La configuración de matriz como `permissions.allow` y `permissions.deny` fusionan entradas de todas las fuentes, por lo que los desarrolladores pueden extender listas administradas pero no eliminar de ellas, con [dos excepciones](/es/settings#settings-precedence) donde el valor administrado reemplaza capas inferiores en lugar de fusionarse: `fallbackModel` y `availableModels`.68Cualquiera que sea el mecanismo que elija, los valores administrados tienen prioridad sobre la configuración de usuario y proyecto. La configuración de matriz como `permissions.allow` y `permissions.deny` fusionan entradas de todas las fuentes, por lo que los desarrolladores pueden extender listas administradas pero no eliminar de ellas. Para [dos excepciones](/es/settings#settings-precedence), `fallbackModel` y `availableModels`, el valor administrado reemplaza capas inferiores en lugar de fusionarse.

67 69 

68Consulte [Server-managed settings](/es/server-managed-settings) y [Settings files and precedence](/es/settings#settings-files).70Consulte [Server-managed settings](/es/server-managed-settings) y [Settings files and precedence](/es/settings#settings-files).

69 71 


80| [Sandboxing](/es/sandboxing) | Aislamiento de sistema de archivos y red a nivel del SO con listas de permitidos de dominio | `sandbox.enabled`, `sandbox.network.allowedDomains` |82| [Sandboxing](/es/sandboxing) | Aislamiento de sistema de archivos y red a nivel del SO con listas de permitidos de dominio | `sandbox.enabled`, `sandbox.network.allowedDomains` |

81| [Managed policy CLAUDE.md](/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 |83| [Managed policy CLAUDE.md](/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 |

82| [MCP server control](/es/managed-mcp) | Restringir qué servidores MCP pueden agregar o conectar los usuarios, o implementar un conjunto fijo | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, o un archivo `managed-mcp.json` implementado |84| [MCP server control](/es/managed-mcp) | Restringir qué servidores MCP pueden agregar o conectar los usuarios, o implementar un conjunto fijo | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, o un archivo `managed-mcp.json` implementado |

83| [Plugin marketplace control](/es/plugin-marketplaces#managed-marketplace-restrictions) | Restringir qué fuentes de marketplace pueden agregar e instalar los usuarios | `strictKnownMarketplaces`, `blockedMarketplaces` |85| [Plugin marketplace control](/es/plugin-marketplaces#managed-marketplace-restrictions) | Restringir qué fuentes de marketplace pueden agregar e instalar los usuarios, y rechazar las banderas CLI que cargan plugins, agents y servidores MCP para una única ejecución | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags` |

84| [Customization lockdown](/es/settings#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` |86| [Customization lockdown](/es/settings#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` |

85| [Hook restrictions](/es/settings#hook-configuration) | Solo se cargan hooks administrados; restringir URLs de hooks HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |87| [Hook restrictions](/es/settings#hook-configuration) | Solo se cargan hooks administrados; restringir URLs de hooks HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

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


99Elija monitoreo basado en lo que necesita reportar.101Elija monitoreo basado en lo que necesita reportar.

100 102 

101| Capacidad | Lo que obtiene | Disponibilidad | Dónde comenzar |103| Capacidad | Lo que obtiene | Disponibilidad | Dónde comenzar |

102| :------------------ | :-------------------------------------------------------------------------- | :-------------------- | :--------------------------------------- |104| :------------------ | :-------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- |

103| Usage monitoring | Exportación de OpenTelemetry de sesiones, herramientas y tokens | Todos los proveedores | [Monitoring usage](/es/monitoring-usage) |105| Usage monitoring | Exportación de OpenTelemetry de sesiones, herramientas y tokens | Todos los proveedores | [Monitoring usage](/es/monitoring-usage) |

104| Analytics dashboard | Métricas por usuario, seguimiento de contribuciones, tabla de clasificación | Solo Anthropic | [Analytics](/es/analytics) |106| Analytics dashboard | Métricas por usuario, seguimiento de contribuciones, tabla de clasificación | Solo Anthropic | [Analytics](/es/analytics) |

105| Cost tracking | Límites de gasto, límites de velocidad y atribución de uso | Solo Anthropic | [Costs](/es/costs) |107| Cost tracking | Límites de gasto, límites de velocidad y atribución de uso | Solo Anthropic; en nubes de terceros, una [Claude apps gateway](/es/claude-apps-gateway) proporciona atribución por usuario y [límites de gasto](/es/claude-apps-gateway-spend-limits) | [Costs](/es/costs) |

106 108 

107Los proveedores de nube exponen el gasto a través de AWS Cost Explorer, GCP Billing o Azure Cost Management. Los planes Claude for Teams y Enterprise incluyen un panel de uso en [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).109Los proveedores de nube exponen el gasto a través de AWS Cost Explorer, GCP Billing o Azure Cost Management. Los planes Claude for Teams y Enterprise incluyen un panel de uso en [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

108 110 


118| Zero Data Retention (ZDR) | Nada almacenado después de que se completa la solicitud. Disponible en Claude for Enterprise | [Zero data retention](/es/zero-data-retention) |120| Zero Data Retention (ZDR) | Nada almacenado después de que se completa la solicitud. Disponible en Claude for Enterprise | [Zero data retention](/es/zero-data-retention) |

119| Security architecture | Modelo de red, cifrado, autenticación, pista de auditoría | [Security](/es/security) |121| Security architecture | Modelo de red, cifrado, autenticación, pista de auditoría | [Security](/es/security) |

120 122 

121Si necesita registro de auditoría a nivel de solicitud o enrutar tráfico por sensibilidad de datos, coloque una [LLM gateway](/es/llm-gateway) entre desarrolladores y su proveedor. Para requisitos regulatorios y certificaciones, consulte [Legal and compliance](/es/legal-and-compliance).123Si necesita registro de auditoría a nivel de solicitud o enrutar tráfico por sensibilidad de datos, coloque una puerta de enlace entre desarrolladores y su proveedor: una [Claude apps gateway](/es/claude-apps-gateway) autohospedada registra un registro de auditoría por solicitud con identidad de IdP, o use otra [LLM gateway](/es/llm-gateway). Para requisitos regulatorios y certificaciones, consulte [Legal and compliance](/es/legal-and-compliance).

122 124 

123<h2 id="verify-and-onboard">125<h2 id="verify-and-onboard">

124 Verificar e incorporar126 Verificar e incorporar

advisor.md +2 −1

Details

88| ----------------------------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------- |88| ----------------------------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------- |

89| Haiku 4.5 | Fable, Opus, Sonnet | Haiku puede llamar al advisor pero no puede actuar como uno |89| Haiku 4.5 | Fable, Opus, Sonnet | Haiku puede llamar al advisor pero no puede actuar como uno |

90| Sonnet 4.6 | Fable, Opus, Sonnet | |90| Sonnet 4.6 | Fable, Opus, Sonnet | |

91| Sonnet 5 | Fable, Opus, Sonnet 5 | Un advisor Sonnet 4.6 se rechaza |

91| Opus 4.6 o posterior | Fable, Opus en o por encima de la versión del modelo principal | Un Opus 4.7 principal con un advisor Opus 4.6 se rechaza |92| Opus 4.6 o posterior | Fable, Opus en o por encima de la versión del modelo principal | Un Opus 4.7 principal con un advisor Opus 4.6 se rechaza |

92| Fable 5 ({/* min-version: 2.1.170 */}v2.1.170+) | Fable | Un advisor Opus o Sonnet se rechaza |93| Fable 5 ({/* min-version: 2.1.170 */}v2.1.170+) | Fable | Un advisor Opus o Sonnet se rechaza |

93 94 


161 162 

162* **Claude Code v2.1.98 o posterior**: ejecute `claude update` para actualizar.163* **Claude Code v2.1.98 o posterior**: ejecute `claude update` para actualizar.

163* **Solo API de Anthropic**: el advisor es una herramienta ejecutada por servidor. No está disponible en Amazon Bedrock, Google Vertex AI o Microsoft Foundry. A través de una [puerta de enlace LLM](/es/llm-gateway) configurada con `ANTHROPIC_BASE_URL`, la disponibilidad depende de si la puerta de enlace reenvía la solicitud intacta a la API de Anthropic.164* **Solo API de Anthropic**: el advisor es una herramienta ejecutada por servidor. No está disponible en Amazon Bedrock, Google Vertex AI o Microsoft Foundry. A través de una [puerta de enlace LLM](/es/llm-gateway) configurada con `ANTHROPIC_BASE_URL`, la disponibilidad depende de si la puerta de enlace reenvía la solicitud intacta a la API de Anthropic.

164* **Modelo principal admitido**: Opus 4.6 o posterior, Sonnet 4.6, o Haiku 4.5. {/* min-version: 2.1.170 */}Fable 5 también califica en Claude Code v2.1.170 o posterior.165* **Modelo principal admitido**: Opus 4.6 o posterior, Sonnet 4.6 o posterior, o Haiku 4.5. {/* min-version: 2.1.170 */}Fable 5 también califica en Claude Code v2.1.170 o posterior.

165 166 

166<h2 id="turn-the-advisor-off">167<h2 id="turn-the-advisor-off">

167 Desactivar el advisor168 Desactivar el advisor

Details

226 Modelo226 Modelo

227</h3>227</h3>

228 228 

229Si 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-4-6"`) 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.229Si 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.

230 230 

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

232 La ventana de contexto232 La ventana de contexto

agent-sdk/hooks.md +21 −13

Details

203 ```203 ```

204</CodeGroup>204</CodeGroup>

205 205 

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

207 207 

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

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

210 210 

211<h3 id="matchers">211<h3 id="matchers">

212 Matchers212 Matchers


214 214 

215Use matchers para filtrar cuándo se disparan sus devoluciones de llamada. El campo `matcher` coincide con un valor diferente dependiendo del tipo de evento de hook. Por ejemplo, los hooks basados en herramientas coinciden con el nombre de la herramienta, mientras que los hooks `Notification` coinciden con el tipo de notificación. Vea la [referencia de hooks de Claude Code](/es/hooks#matcher-patterns) para la lista completa de valores de matcher para cada tipo de evento.215Use matchers para filtrar cuándo se disparan sus devoluciones de llamada. El campo `matcher` coincide con un valor diferente dependiendo del tipo de evento de hook. Por ejemplo, los hooks basados en herramientas coinciden con el nombre de la herramienta, mientras que los hooks `Notification` coinciden con el tipo de notificación. Vea la [referencia de hooks de Claude Code](/es/hooks#matcher-patterns) para la lista completa de valores de matcher para cada tipo de evento.

216 216 

217Los matchers del SDK siguen las mismas reglas que [matchers en archivos de configuración](/es/hooks#matcher-patterns): un matcher que contiene solo letras, dígitos, `_`, espacios, `,` y `|` se compara como una cadena exacta, con alternativas separadas por `|` o `,` y espacios en blanco opcionales alrededor, por lo que `Write|Edit` y `Write, Edit` coinciden exactamente con esas dos herramientas. Un matcher de `*`, una cadena vacía, u omitir el matcher completamente coincide con cada ocurrencia del evento; un matcher que contiene cualquier otro carácter se evalúa como una expresión regular, por lo que `^mcp__` coincide con cada herramienta MCP. Un matcher como `mcp__memory` contiene solo letras y guiones bajos, por lo que se compara como una cadena exacta y no coincide con ninguna herramienta; use `mcp__memory__.*` para coincidir con cada herramienta de ese servidor.217Los matchers del SDK siguen las mismas reglas que [matchers en archivos de configuración](/es/hooks#matcher-patterns). Un matcher que contiene solo letras, dígitos, `_`, `-`, espacios, `,` y `|` se compara como una cadena exacta, con alternativas separadas por `|` o `,` y espacios en blanco opcionales alrededor, por lo que `Write|Edit` y `Write, Edit` coinciden exactamente con esas dos herramientas y `code-reviewer` coincide solo con ese tipo de agente. Un matcher de `*`, una cadena vacía, u omitir el matcher completamente coincide con cada ocurrencia del evento.

218 

219Un matcher que contiene cualquier otro carácter se evalúa como una expresión regular sin ancla, por lo que `^mcp__` coincide con cada herramienta MCP y `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`. Envuelva una expresión regular en `^` y `$` cuando necesite una coincidencia de cadena completa.

220 

221Un 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; use `mcp__memory__.*` para coincidir con cada herramienta de ese servidor.

222 

223Los guiones en el conjunto de coincidencia exacta requieren un tiempo de ejecución de 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 ancla y debe anclarse como `^code-reviewer$` para coincidir exactamente.

218 224 

219| Opción | Tipo | Predeterminado | Descripción |225| Opción | Tipo | Predeterminado | Descripción |

220| --------- | ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |226| --------- | ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


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

223| `timeout` | `number` | `60` | Tiempo de espera en segundos |229| `timeout` | `number` | `60` | Tiempo de espera en segundos |

224 230 

225Use el patrón `matcher` para dirigirse a herramientas específicas siempre que sea posible. Un matcher con `'Bash'` solo se ejecuta para comandos Bash, mientras que omitir el patrón ejecuta sus devoluciones de llamada para cada ocurrencia del evento. Tenga en cuenta que para hooks basados en herramientas, los matchers solo filtran por **nombre de herramienta**, no por rutas de archivo u otros argumentos. Para filtrar por ruta de archivo, verifique `tool_input.file_path` dentro de su devolución de llamada.231Use el patrón `matcher` para dirigirse a herramientas específicas siempre que sea posible. Un matcher con `'Bash'` solo se ejecuta para comandos Bash, mientras que omitir el patrón ejecuta sus devoluciones de llamada para cada ocurrencia del evento.

232 

233Para hooks basados en herramientas, los matchers solo filtran por nombre de herramienta, no por rutas de archivo u otros argumentos. Para filtrar por ruta de archivo, verifique `tool_input.file_path` dentro de su devolución de llamada.

226 234 

227<Tip>235<Tip>

228 **Descubriendo nombres de herramientas:** Vea [Tipos de entrada de herramienta](/es/agent-sdk/typescript#tool-input-types) para la lista completa de nombres de herramientas integradas, o agregue un hook sin un matcher para registrar todas las llamadas de herramienta que su sesión realiza.236 **Descubriendo nombres de herramientas:** Vea [Tipos de entrada de herramienta](/es/agent-sdk/typescript#tool-input-types) para la lista completa de nombres de herramientas integradas, o agregue un hook sin un matcher para registrar todas las llamadas de herramienta que su sesión realiza.

229 237 

230 **Nomenclatura de herramientas MCP:** Las herramientas MCP siempre comienzan con `mcp__` seguido del nombre del servidor y la acción: `mcp__<server>__<action>`. Por ejemplo, si configura un servidor llamado `playwright`, sus herramientas se nombrarán `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click`, etc. El nombre del servidor proviene de la clave que usa en la configuración `mcpServers`.238 **Nomenclatura de herramientas MCP:** Las herramientas MCP siempre comienzan con `mcp__` seguido del nombre del servidor y la acción: `mcp__<server>__<action>`. Por ejemplo, si configura un servidor llamado `playwright`, sus herramientas se nombrarán `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click` y así sucesivamente. El nombre del servidor proviene de la clave que usa en la configuración `mcpServers`.

231</Tip>239</Tip>

232 240 

233<h3 id="callback-functions">241<h3 id="callback-functions">


240 248 

241Cada devolución de llamada de hook recibe tres argumentos:249Cada devolución de llamada de hook recibe tres argumentos:

242 250 

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

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

245 * `agent_id` y `agent_type` se rellenan cuando el hook se dispara dentro de un subagente. En TypeScript, estos están en la entrada de hook base y disponibles para todos los tipos de hook. En Python, están solo en `PreToolUse`, `PostToolUse` y `PostToolUseFailure`.253 * `agent_id` y `agent_type` se rellenan cuando el hook se dispara dentro de un subagente. En TypeScript, estos están en la entrada de hook base y disponibles para todos los tipos de hook. En Python, están solo en `PreToolUse`, `PostToolUse` y `PostToolUseFailure`.

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


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

259 267 

260<Note>268<Note>

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

262</Note>270</Note>

263 271 

264<h4 id="asynchronous-output">272<h4 id="asynchronous-output">

265 Salida asincrónica273 Salida asincrónica

266</h4>274</h4>

267 275 

268De forma predeterminada, el agente espera a que su hook devuelva antes de continuar. Si su hook realiza un efecto secundario (registro, envío de webhook) y no necesita influir en el comportamiento del agente, puede devolver una salida asincrónica en su lugar. Esto le dice al agente que continúe inmediatamente sin esperar a que el hook termine:276De forma predeterminada, el agente espera a que su hook devuelva antes de continuar. Si su hook realiza un efecto secundario, como registro o envío de webhook, y no necesita influir en el comportamiento del agente, puede devolver una salida asincrónica en su lugar. Esto le dice al agente que continúe inmediatamente sin esperar a que el hook termine:

269 277 

270<CodeGroup>278<CodeGroup>

271 ```python Python theme={null}279 ```python Python theme={null}


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

783* Verifique que su patrón de matcher coincida exactamente con el nombre de la herramienta791* Verifique que su patrón de matcher coincida exactamente con el nombre de la herramienta

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

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

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

787 795 

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

789 Matcher no filtra como se esperaba797 Matcher no filtra como se esperaba

790</h3>798</h3>

791 799 

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

793 801 

794```typescript theme={null}802```typescript theme={null}

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


815 823 

816* Verifique todos los hooks `PreToolUse` para devoluciones de `permissionDecision: 'deny'`824* Verifique todos los hooks `PreToolUse` para devoluciones de `permissionDecision: 'deny'`

817* Agregue registro a sus hooks para ver qué `permissionDecisionReason` están devolviendo825* Agregue registro a sus hooks para ver qué `permissionDecisionReason` están devolviendo

818* Verifique que los patrones de matcher no sean demasiado amplios (un matcher vacío coincide con todas las herramientas)826* Verifique que los patrones de matcher no sean demasiado amplios: un matcher vacío coincide con todas las herramientas

819 827 

820<h3 id="modified-input-not-applied">828<h3 id="modified-input-not-applied">

821 Entrada modificada no aplicada829 Entrada modificada no aplicada


841 Hooks de sesión no disponibles en Python849 Hooks de sesión no disponibles en Python

842</h3>850</h3>

843 851 

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

845 853 

846<CodeGroup>854<CodeGroup>

847 ```python Python theme={null}855 ```python Python theme={null}

Details

209 209 

210* **Solo transcripciones**: `SessionStore` refleja transcripciones, no archivos de memoria `CLAUDE.md` u otros artefactos del directorio de trabajo. Monte un volumen compartido o sincronice esos por separado.210* **Solo transcripciones**: `SessionStore` refleja transcripciones, no archivos de memoria `CLAUDE.md` u otros artefactos del directorio de trabajo. Monte un volumen compartido o sincronice esos por separado.

211* **Reflejo, no reemplazo**: el subproceso escribe en el disco local primero, y el almacén recibe una copia de cada lote. Las escrituras locales siguen siendo autoritativas.211* **Reflejo, no reemplazo**: el subproceso escribe en el disco local primero, y el almacén recibe una copia de cada lote. Las escrituras locales siguen siendo autoritativas.

212* **Mensajes `mirror_error`**: si el almacén rechaza o agota el tiempo de espera, el SDK emite un mensaje `{ type: "system", subtype: "mirror_error" }` y continúa la consulta sin reintentos. Alerte sobre estos si la durabilidad del almacén es importante.212* **Mensajes `mirror_error`**: un lote que el almacén rechaza se envía hasta tres veces en total, con un retroceso corto antes de cada reintento; una llamada que agota el tiempo de espera no se reintenta. Si el lote aún falla, el SDK lo descarta, emite un mensaje `{ type: "system", subtype: "mirror_error" }` y continúa la consulta. Alerte sobre estos si la durabilidad del almacén es importante.

213 213 

214<h3 id="observability">214<h3 id="observability">

215 Observabilidad215 Observabilidad

Details

44 </Step>44 </Step>

45</Steps>45</Steps>

46 46 

47<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=cc94220087262cd48c9b64a14c4e1c2c" alt="Diagrama del flujo de evaluación de permisos de cinco pasos que coincide con los pasos anteriores: una solicitud de herramienta pasa a través de hooks, reglas de denegar, modo de permiso, reglas de permitir y canUseTool. Los hooks, reglas de denegar y canUseTool pueden enrutar hacia Bloqueado; el modo de permiso de omisión, reglas de permitir y canUseTool pueden enrutar hacia Ejecutar." width="1024" height="260" data-path="images/agent-sdk/permissions-flow.svg" />47<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" alt="Diagrama del flujo de evaluación de permisos de seis pasos que coincide con los pasos anteriores: una solicitud de herramienta pasa a través de hooks, reglas de denegar, reglas de preguntar, modo de permiso, reglas de permitir y canUseTool. Los hooks, reglas de denegar y canUseTool pueden enrutar hacia Bloqueado; el modo de permiso de omisión, reglas de permitir y canUseTool pueden enrutar hacia Ejecutar; las reglas de preguntar enrutan a canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />

48 48 

49Esta página se enfoca en **reglas de permitir y denegar** y **modos de permiso**. Para los otros pasos:49Esta página se enfoca en **reglas de permitir y denegar** y **modos de permiso**. Para los otros pasos:

50 50 

51* **Hooks:** ejecute código personalizado para permitir, denegar o modificar solicitudes de herramientas. Consulte [Controlar la ejecución con hooks](/es/agent-sdk/hooks).51* **Hooks:** ejecute código personalizado para permitir, denegar o modificar solicitudes de herramientas. Consulte [Controlar la ejecución con hooks](/es/agent-sdk/hooks).

52* **Devolución de llamada canUseTool:** solicite aprobación a los usuarios en tiempo de ejecución. Consulte [Manejar aprobaciones e entrada del usuario](/es/agent-sdk/user-input).52* **Devolución de llamada canUseTool:** solicite aprobación a los usuarios en tiempo de ejecución, cuando ningún paso anterior resuelve la llamada. Consulte [Manejar aprobaciones e entrada del usuario](/es/agent-sdk/user-input).

53 53 

54<h2 id="allow-and-deny-rules">54<h2 id="allow-and-deny-rules">

55 Reglas de permitir y denegar55 Reglas de permitir y denegar


66 66 

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

68 68 

69<Warning>

70 **Las herramientas pre-aprobadas nunca llegan a `canUseTool`.** Una llamada de herramienta aprobada en cualquier paso anterior, por `acceptEdits` o `bypassPermissions`, o por una regla de permitir, omite su devolución de llamada `canUseTool`, por lo que las comprobaciones de permiso que coloque allí se omiten silenciosamente para esa herramienta. La cobertura depende de la forma de la entrada: un nombre simple como `Read` o `mcp__github__get_issue` pre-aprueba cada llamada a esa herramienta, mientras que una regla delimitada como `Bash(ls *)` pre-aprueba solo las llamadas coincidentes y otras llamadas de `Bash` aún se descartan a la devolución de llamada. Para comprobaciones que deben ejecutarse en cada llamada de herramienta, use un hook [`PreToolUse`](/es/agent-sdk/hooks): los hooks se ejecutan antes de cada otro paso, y una denegación de hook se aplica incluso en modo `bypassPermissions`.

71</Warning>

72 

69Para un agente bloqueado, empareje `allowedTools` con `permissionMode: "dontAsk"`. Las herramientas listadas se aprueban; cualquier otra cosa se deniega directamente en lugar de solicitar:73Para un agente bloqueado, empareje `allowedTools` con `permissionMode: "dontAsk"`. Las herramientas listadas se aprueban; cualquier otra cosa se deniega directamente en lugar de solicitar:

70 74 

71```typescript theme={null}75```typescript theme={null}

Details

750 750 

751 751 

752async def main():752async def main():

753 options = ClaudeAgentOptions(753 # Don't also list the gated tools in allowed_tools: allow rules approve calls before can_use_tool runs

754 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]754 options = ClaudeAgentOptions(can_use_tool=custom_permission_handler)

755 )

756 755 

757 async with ClaudeSDKClient(options=options) as client:756 async with ClaudeSDKClient(options=options) as client:

758 await client.query("Update the system config file")757 await client.query("Update the system config file")


886 fork_session: bool = False885 fork_session: bool = False

887 agents: dict[str, AgentDefinition] | None = None886 agents: dict[str, AgentDefinition] | None = None

888 setting_sources: list[SettingSource] | None = None887 setting_sources: list[SettingSource] | None = None

888 skills: list[str] | Literal["all"] | None = None

889 sandbox: SandboxSettings | None = None889 sandbox: SandboxSettings | None = None

890 plugins: list[SdkPluginConfig] = field(default_factory=list)890 plugins: list[SdkPluginConfig] = field(default_factory=list)

891 max_thinking_tokens: int | None = None # Deprecated: use thinking instead891 max_thinking_tokens: int | None = None # Deprecated: use thinking instead


924| `max_buffer_size` | `int \| None` | `None` | Bytes máximos al almacenar en búfer la salida estándar del CLI |924| `max_buffer_size` | `int \| None` | `None` | Bytes máximos al almacenar en búfer la salida estándar del CLI |

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

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

927| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Función de devolución de llamada de permiso de herramienta. Ver [Tipos de permiso](#canusetool) para detalles |927| `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](/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`. Ver [`CanUseTool`](#canusetool) para detalles |

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

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

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


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

961* `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` para reintentar errores de capacidad indefinidamente.961* `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` para reintentar errores de capacidad indefinidamente.

962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: perro guardián de estancamiento para subagentes lanzados con `run_in_background`. Predeterminado `600000`. Se reinicia en cada evento de flujo; en caso de estancamiento, aborta el subagente, marca la tarea como fallida y expone el error al padre con cualquier resultado parcial. No se aplica a subagentes síncronos.962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: perro guardián de estancamiento para subagentes lanzados con `run_in_background`. Predeterminado `600000`. Se reinicia en cada evento de flujo; en caso de estancamiento, aborta el subagente, marca la tarea como fallida y expone el error al padre con cualquier resultado parcial. No se aplica a subagentes síncronos.

963* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: aborta la solicitud cuando los encabezados han llegado pero el cuerpo de la respuesta deja de transmitir. Cuando `CLAUDE_ENABLE_STREAM_WATCHDOG` no está establecido, el valor predeterminado es controlado por el servidor en la API directa de Anthropic y desactivado en otros proveedores. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tiene un valor predeterminado de `300000` y se fija a ese mínimo. La solicitud abortada pasa por la ruta de reintento normal.963* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: 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. La solicitud abortada pasa por la ruta de reintento normal.

964 964 

965<h3 id="outputformat">965<h3 id="outputformat">

966 `OutputFormat`966 `OutputFormat`


1206 "low", # Minimal thinking, fastest responses1206 "low", # Minimal thinking, fastest responses

1207 "medium", # Moderate thinking1207 "medium", # Moderate thinking

1208 "high", # Deep reasoning1208 "high", # Deep reasoning

1209 "xhigh", # Extended reasoning (Opus 4.8 and Opus 4.7; falls back to "high" on other models)1209 "xhigh", # Extended reasoning; falls back to "high" on models that don't support it

1210 "max", # Maximum effort1210 "max", # Maximum effort

1211]1211]

1212```1212```


1231 1231 

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

1233 1233 

1234La 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](/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`](/es/agent-sdk/hooks) en su lugar.

1235 

1234<h3 id="toolpermissioncontext">1236<h3 id="toolpermissioncontext">

1235 `ToolPermissionContext`1237 `ToolPermissionContext`

1236</h3>1238</h3>


1432Use con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.1434Use con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.

1433 1435 

1434<Warning>1436<Warning>

1435 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 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.1437 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 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.

1436</Warning>1438</Warning>

1437 1439 

1438<h3 id="mcpsdkserverconfig">1440<h3 id="mcpsdkserverconfig">


2681 2683 

2682**Nombre de herramienta:** `Monitor`2684**Nombre de herramienta:** `Monitor`

2683 2685 

2684Ejecuta un script de fondo y entrega cada línea stdout a Claude como un evento para que pueda reaccionar sin sondeo. Monitor sigue las mismas reglas de permiso que Bash. Ver la [referencia de herramienta Monitor](/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.2686Ejecuta una fuente de fondo y entrega cada evento a Claude para que pueda reaccionar sin sondeo: `command` ejecuta un script y emite un evento por línea stdout, y `ws` abre un WebSocket y emite un evento por marco de texto. Proporcione exactamente uno de `command` o `ws`.

2687 

2688Cuando Monitor ejecuta un comando, sigue las mismas reglas de permiso que Bash; una vigilancia de WebSocket solicita aprobación por separado. {/* min-version: 2.1.195 */}La fuente `ws` requiere Claude Code v2.1.195 o posterior. Ver la [referencia de herramienta Monitor](/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.

2685 2689 

2686**Entrada:**2690**Entrada:**

2687 2691 

2688```python theme={null}2692```python theme={null}

2689{2693{

2690 "command": str, # Shell script; each stdout line is an event, exit ends the watch2694 "command": str | None, # Shell script; each stdout line is an event, exit ends the watch

2695 "ws": dict | None, # WebSocket source: {"url": str, "protocols": list[str] | None}; each text frame is an event

2691 "description": str, # Short description shown in notifications2696 "description": str, # Short description shown in notifications

2692 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)2697 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)

2693 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop2698 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop

Details

41 Instale el paquete del SDK de Agent para su idioma:41 Instale el paquete del SDK de Agent para su idioma:

42 42 

43 <Tabs>43 <Tabs>

44 <Tab title="TypeScript">44 <Tab title="TypeScript (nuevo proyecto)">

45 ```bash theme={null}45 ```bash theme={null}

46 npm init -y

47 npm pkg set type=module

46 npm install @anthropic-ai/claude-agent-sdk48 npm install @anthropic-ai/claude-agent-sdk

49 npm install --save-dev tsx

47 ```50 ```

51 

52 Establecer `"type": "module"` en `package.json` permite que su script de agente use `await` de nivel superior, y [tsx](https://tsx.is) ejecuta archivos TypeScript directamente.

53 </Tab>

54 

55 <Tab title="TypeScript (proyecto existente)">

56 ```bash theme={null}

57 npm install @anthropic-ai/claude-agent-sdk

58 npm install --save-dev tsx

59 ```

60 

61 [tsx](https://tsx.is) ejecuta archivos TypeScript directamente. Si su proyecto usa CommonJS, nombre su script de agente `agent.mts` en lugar de `agent.ts`. La extensión `.mts` hace que tsx trate el archivo como un módulo ES, por lo que `await` de nivel superior funciona sin convertir todo su proyecto a módulos ES. Use `agent.mts` en lugar de `agent.ts` en los pasos de creación y ejecución posteriores en este inicio rápido.

48 </Tab>62 </Tab>

49 63 

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


85 </Step>99 </Step>

86 100 

87 <Step title="Establecer su clave de API">101 <Step title="Establecer su clave de API">

88 Obtenga una clave de API de la [Consola de Claude](https://platform.claude.com/), luego cree un archivo `.env` en su directorio de proyecto:102 Obtenga una clave de API de la [Consola de Claude](https://platform.claude.com/), luego establézcala como una variable de entorno en el shell donde ejecutará su agente:

89 103 

104 <Tabs>

105 <Tab title="macOS / Linux">

90 ```bash theme={null}106 ```bash theme={null}

91 ANTHROPIC_API_KEY=your-api-key107 export ANTHROPIC_API_KEY=your-api-key

92 ```108 ```

109 </Tab>

110 

111 <Tab title="Windows (PowerShell)">

112 ```powershell theme={null}

113 $env:ANTHROPIC_API_KEY = "your-api-key"

114 ```

115 </Tab>

116 </Tabs>

117 

118 El SDK lee la clave del entorno del proceso que ejecuta su agente; no carga archivos `.env` automáticamente. Si mantiene la clave en un archivo `.env`, cárguela usted mismo, por ejemplo con el paquete `dotenv`, antes de llamar al SDK.

93 119 

94 El SDK también admite autenticación a través de proveedores de API de terceros:120 El SDK también admite autenticación a través de proveedores de API de terceros:

95 121 


133 Construir un agente que encuentre y corrija errores159 Construir un agente que encuentre y corrija errores

134</h2>160</h2>

135 161 

136Cree `agent.py` si está utilizando el SDK de Python, o `agent.ts` para TypeScript:162Cree `agent.py` si está utilizando el SDK de Python, o `agent.ts` para TypeScript. Use `agent.mts` en su lugar si su proyecto existente usa CommonJS:

137 163 

138<CodeGroup>164<CodeGroup>

139 ```python Python theme={null}165 ```python Python theme={null}


218 ```bash theme={null}244 ```bash theme={null}

219 npx tsx agent.ts245 npx tsx agent.ts

220 ```246 ```

247 

248 Si nombró su script `agent.mts`, ejecute `npx tsx agent.mts` en su lugar.

221 </Tab>249 </Tab>

222 250 

223 <Tab title="Python (uv)">251 <Tab title="Python (uv)">


235 </Tab>263 </Tab>

236</Tabs>264</Tabs>

237 265 

238Después de ejecutar, verifique `utils.py`. Verá código defensivo que maneja listas vacías y usuarios nulos. Su agente de forma autónoma:266Mientras trabaja, el agente imprime su razonamiento y cada herramienta que llama, terminando con `Done: success`. Después de ejecutar, verifique `utils.py`. Verá código defensivo que maneja listas vacías y usuarios nulos. Su agente de forma autónoma:

239 267 

2401. **Leyó** `utils.py` para entender el código2681. **Leyó** `utils.py` para entender el código

2412. **Analizó** la lógica e identificó casos extremos que causarían bloqueos2692. **Analizó** la lógica e identificó casos extremos que causarían bloqueos


244Esto es lo que hace diferente al SDK de Agent: Claude ejecuta herramientas directamente en lugar de pedirle que las implemente.272Esto es lo que hace diferente al SDK de Agent: Claude ejecuta herramientas directamente en lugar de pedirle que las implemente.

245 273 

246<Note>274<Note>

247 Si ve "API key not found", asegúrese de haber establecido la variable de entorno `ANTHROPIC_API_KEY` en su archivo `.env` o entorno de shell. Consulte la [guía completa de solución de problemas](/es/troubleshooting) para obtener más ayuda.275 Si ve "API key not found", asegúrese de haber establecido la variable de entorno `ANTHROPIC_API_KEY` en el shell donde ejecuta su agente. El SDK no carga archivos `.env` automáticamente. Consulte la [guía completa de solución de problemas](/es/troubleshooting) para obtener más ayuda.

248</Note>276</Note>

249 277 

250<h3 id="try-other-prompts">278<h3 id="try-other-prompts">


340**Modos de permiso** controlan cuánta supervisión humana desea:368**Modos de permiso** controlan cuánta supervisión humana desea:

341 369 

342| Modo | Comportamiento | Caso de uso |370| Modo | Comportamiento | Caso de uso |

343| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |371| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |

344| `acceptEdits` | Aprueba automáticamente ediciones de archivo y comandos comunes del sistema de archivos, pregunta por otras acciones | Flujos de trabajo de desarrollo confiables |372| `acceptEdits` | Aprueba automáticamente ediciones de archivo y comandos comunes del sistema de archivos, pregunta por otras acciones | Flujos de trabajo de desarrollo confiables |

373| `plan` | Ejecuta herramientas de solo lectura; las ediciones de archivo nunca se aprueban automáticamente y llegan a su devolución de llamada `canUseTool` | Definición del alcance de una tarea antes de aprobar la ejecución |

345| `dontAsk` | Deniega cualquier cosa que no esté en `allowedTools` | Agentes sin cabeza bloqueados |374| `dontAsk` | Deniega cualquier cosa que no esté en `allowedTools` | Agentes sin cabeza bloqueados |

346| `auto` (solo TypeScript) | Un clasificador de modelo aprueba o deniega cada llamada de herramienta | Agentes autónomos con protecciones de seguridad |375| `auto` (solo TypeScript) | Un clasificador de modelo aprueba o deniega cada llamada de herramienta | Agentes autónomos con protecciones de seguridad |

347| `bypassPermissions` | Ejecuta cada herramienta sin indicadores, a menos que una [regla `ask` explícita](/es/agent-sdk/permissions#how-permissions-are-evaluated) coincida | CI en sandbox, entornos completamente confiables |376| `bypassPermissions` | Ejecuta cada herramienta sin indicadores, a menos que una [regla `ask` explícita](/es/agent-sdk/permissions#how-permissions-are-evaluated) coincida | CI en sandbox, entornos completamente confiables |


349 378 

350El ejemplo anterior utiliza el modo `acceptEdits`, que aprueba automáticamente las operaciones de archivo para que el agente pueda ejecutarse sin indicadores interactivos. Si desea solicitar a los usuarios la aprobación, utilice el modo `default` y proporcione una devolución de llamada [`canUseTool`](/es/agent-sdk/user-input) que recopile la entrada del usuario. Para más control, consulte [Permisos](/es/agent-sdk/permissions).379El ejemplo anterior utiliza el modo `acceptEdits`, que aprueba automáticamente las operaciones de archivo para que el agente pueda ejecutarse sin indicadores interactivos. Si desea solicitar a los usuarios la aprobación, utilice el modo `default` y proporcione una devolución de llamada [`canUseTool`](/es/agent-sdk/user-input) que recopile la entrada del usuario. Para más control, consulte [Permisos](/es/agent-sdk/permissions).

351 380 

352<h2 id="troubleshooting">

353 Solución de problemas

354</h2>

355 

356<h3 id="api-error-thinking-type-enabled-is-not-supported-for-this-model">

357 Error de API `thinking.type.enabled` no es compatible con este modelo

358</h3>

359 

360Claude Opus 4.7 reemplaza `thinking.type.enabled` con `thinking.type.adaptive`. Las versiones anteriores del SDK de Agent fallan con el siguiente error de API cuando selecciona `claude-opus-4-7`:

361 

362```text theme={null}

363API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

364```

365 

366Actualice a la versión 0.2.111 o posterior del SDK de Agent para usar Opus 4.7.

367 

368<h2 id="next-steps">381<h2 id="next-steps">

369 Próximos pasos382 Próximos pasos

370</h2>383</h2>

Details

235 Las escrituras de espejo son de mejor esfuerzo235 Las escrituras de espejo son de mejor esfuerzo

236</h3>236</h3>

237 237 

238Si `append()` rechaza o agota el tiempo de espera, el error se registra, se emite un mensaje `{ type: "system", subtype: "mirror_error" }` en el iterador, y la consulta continúa. La transcripción local ya es duradera en disco, por lo que una interrupción del almacén no interrumpe al agente ni pierde datos localmente. Los lotes que fallan no se reintentan, por lo que monitorea `mirror_error` si necesitas detectar pérdida de datos del almacén.238Si `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 error se registra, se emite un mensaje `{ type: "system", subtype: "mirror_error" }` en el iterador, el lote se descarta y la consulta continúa. La transcripción local ya es duradera en disco, por lo que una interrupción del almacén no interrumpe al agente ni pierde datos localmente. Monitorea `mirror_error` si necesitas detectar pérdida de datos del almacén. Debido a que un lote reintentado puede reentrega entradas que ya llegaron, deduplica por `entry.uuid` en tu implementación de `append()`.

239 239 

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

241 `getSessionMessages` devuelve la cadena posterior a la compactación241 `getSessionMessages` devuelve la cadena posterior a la compactación

Details

24 })) {24 })) {

25 if (message.type === "system" && message.subtype === "init") {25 if (message.type === "system" && message.subtype === "init") {

26 console.log("Available slash commands:", message.slash_commands);26 console.log("Available slash commands:", message.slash_commands);

27 // Example output: ["clear", "compact", "context", "usage"]27 // Includes built-in commands plus bundled skills, for example:

28 // ["clear", "compact", "context", "usage", "code-review", "verify", ...]

28 }29 }

29 }30 }

30 ```31 ```


38 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):39 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

39 if isinstance(message, SystemMessage) and message.subtype == "init":40 if isinstance(message, SystemMessage) and message.subtype == "init":

40 print("Available slash commands:", message.data["slash_commands"])41 print("Available slash commands:", message.data["slash_commands"])

41 # Example output: ["clear", "compact", "context", "usage"]42 # Includes built-in commands plus bundled skills, for example:

43 # ["clear", "compact", "context", "usage", "code-review", "verify", ...]

42 44 

43 45 

44 asyncio.run(main())46 asyncio.run(main())


49 Envío de Slash Commands51 Envío de Slash Commands

50</h2>52</h2>

51 53 

52Envíe slash commands incluyéndolos en su cadena de prompt, como texto normal:54Envíe slash commands incluyéndolos en su cadena de prompt, como texto normal. Los comandos que actúan sobre el historial de conversación, como `/compact`, necesitan mensajes previos para funcionar, por lo que los ejemplos a continuación hacen una pregunta primero y luego envían el comando como seguimiento en la misma conversación:

53 55 

54<CodeGroup>56<CodeGroup>

55 ```typescript TypeScript theme={null}57 ```typescript TypeScript theme={null}

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

57 59 

58 // Send a slash command60 // Build up conversation history first

61 try {

59 for await (const message of query({62 for await (const message of query({

60 prompt: "/compact",63 prompt: "What does the README in this directory cover?",

61 options: { maxTurns: 1 }64 options: { maxTurns: 2 }

62 })) {65 })) {

63 if (message.type === "result" && message.subtype === "success") {66 if (message.type === "result" && message.subtype === "success") {

64 console.log("Command executed:", message.result);67 console.log(message.result);

68 }

69 }

70 } catch (error) {

71 // A single-shot query() throws after yielding an error result,

72 // so the follow-up query below still runs.

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

74 }

75 

76 // Send a slash command as a follow-up to the same conversation

77 for await (const message of query({

78 prompt: "/compact",

79 options: { continue: true, maxTurns: 1 }

80 })) {

81 if (message.type === "result") {

82 console.log("Command executed, result subtype:", message.subtype);

83 // Example output: Command executed, result subtype: success

65 }84 }

66 }85 }

67 ```86 ```


72 91 

73 92 

74 async def main():93 async def main():

75 # Send a slash command94 # Build up conversation history first

76 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):95 try:

96 async for message in query(

97 prompt="What does the README in this directory cover?",

98 options=ClaudeAgentOptions(max_turns=2),

99 ):

100 if isinstance(message, ResultMessage) and message.subtype == "success":

101 print(message.result)

102 except Exception as error:

103 # A single-shot query() raises after yielding an error result,

104 # so the follow-up query below still runs.

105 print(f"Session ended with an error: {error}")

106 

107 # Send a slash command as a follow-up to the same conversation

108 async for message in query(

109 prompt="/compact",

110 options=ClaudeAgentOptions(continue_conversation=True, max_turns=1),

111 ):

77 if isinstance(message, ResultMessage):112 if isinstance(message, ResultMessage):

78 print("Command executed:", message.result)113 print("Command executed, result subtype:", message.subtype)

114 # Example output: Command executed, result subtype: success

79 115 

80 116 

81 asyncio.run(main())117 asyncio.run(main())

82 ```118 ```

83</CodeGroup>119</CodeGroup>

84 120 

121<Note>

122 Una consulta puede terminar con un resultado de error, por ejemplo cuando se alcanza el límite de `maxTurns` / `max_turns` antes de que se complete el trabajo. El mensaje de resultado final tiene entonces `is_error: true` y un subtipo de error como `error_max_turns` en lugar de `success`.

123 

124 Después de ceder ese mensaje de resultado final, el SDK genera un error, porque el proceso de CLI se cierra con un código distinto de cero.

125 

126 Envuelva el bucle en un `try`/`catch` en TypeScript o `try`/`except` en Python si su comando podría alcanzar el límite, como se muestra en [Single Message Input](/es/agent-sdk/streaming-vs-single-mode#single-message-input), o establezca `maxTurns` lo suficientemente alto para que se complete el trabajo. En Python, capture `Exception`: el SDK presenta resultados de error como una `Exception` simple.

127</Note>

128 

85<h2 id="common-slash-commands">129<h2 id="common-slash-commands">

86 Comandos Slash Comunes130 Comandos Slash Comunes

87</h2>131</h2>


90 `/compact` - Compactar historial de conversación134 `/compact` - Compactar historial de conversación

91</h3>135</h3>

92 136 

93El comando `/compact` reduce el tamaño de su historial de conversación resumiendo mensajes antiguos mientras preserva el contexto importante:137El comando `/compact` reduce el tamaño de su historial de conversación resumiendo mensajes antiguos mientras preserva el contexto importante. La compactación requiere una conversación existente con al menos dos intercambios previos para resumir. Este ejemplo tiene una conversación primero, luego la compacta y lee el mensaje del sistema `compact_boundary` que reporta el resultado:

94 138 

95<CodeGroup>139<CodeGroup>

96 ```typescript TypeScript theme={null}140 ```typescript TypeScript theme={null}

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

98 142 

143 // Compaction needs existing history, so have a conversation first

144 try {

145 for await (const message of query({

146 prompt: "Explain what this project does",

147 options: { maxTurns: 2 }

148 })) {

149 if (message.type === "result" && message.subtype === "success") {

150 console.log(message.result);

151 }

152 }

153 } catch (error) {

154 // A single-shot query() throws after yielding an error result,

155 // so the follow-up query below still runs.

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

157 }

158 

159 // Compact the same conversation

99 for await (const message of query({160 for await (const message of query({

100 prompt: "/compact",161 prompt: "/compact",

101 options: { maxTurns: 1 }162 options: { continue: true, maxTurns: 1 }

102 })) {163 })) {

103 if (message.type === "system" && message.subtype === "compact_boundary") {164 if (message.type === "system" && message.subtype === "compact_boundary") {

104 console.log("Compaction completed");165 console.log("Compaction completed");

105 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);166 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);

106 console.log("Trigger:", message.compact_metadata.trigger);167 console.log("Trigger:", message.compact_metadata.trigger);

168 // Example output:

169 // Compaction completed

170 // Pre-compaction tokens: 1842

171 // Trigger: manual

107 }172 }

108 }173 }

109 ```174 ```

110 175 

111 ```python Python theme={null}176 ```python Python theme={null}

112 import asyncio177 import asyncio

113 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage178 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage, SystemMessage

114 179 

115 180 

116 async def main():181 async def main():

117 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):182 # Compaction needs existing history, so have a conversation first

183 try:

184 async for message in query(

185 prompt="Explain what this project does",

186 options=ClaudeAgentOptions(max_turns=2),

187 ):

188 if isinstance(message, ResultMessage) and message.subtype == "success":

189 print(message.result)

190 except Exception as error:

191 # A single-shot query() raises after yielding an error result,

192 # so the follow-up query below still runs.

193 print(f"Session ended with an error: {error}")

194 

195 # Compact the same conversation

196 async for message in query(

197 prompt="/compact",

198 options=ClaudeAgentOptions(continue_conversation=True, max_turns=1),

199 ):

118 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":200 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

119 print("Compaction completed")201 print("Compaction completed")

120 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])202 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])

121 print("Trigger:", message.data["compact_metadata"]["trigger"])203 print("Trigger:", message.data["compact_metadata"]["trigger"])

204 # Example output:

205 # Compaction completed

206 # Pre-compaction tokens: 1842

207 # Trigger: manual

122 208 

123 209 

124 asyncio.run(main())210 asyncio.run(main())

125 ```211 ```

126</CodeGroup>212</CodeGroup>

127 213 

214<Note>

215 Un mensaje `compact_boundary` solo llega cuando se ejecutó la compactación. Sin nada que resumir, `/compact` reporta la razón en su lugar de lanzar una excepción: la ejecución aún termina con un resultado `success`, no se emite ningún mensaje `compact_boundary`, y el texto del resultado lleva el mensaje, por ejemplo `Not enough messages to compact.` después de un único intercambio corto. Una nueva llamada `query()` de una sola vez comienza con contexto vacío, así que use este patrón en una sesión con turnos previos, por ejemplo en [modo de entrada en streaming](/es/agent-sdk/streaming-vs-single-mode) o cuando reanuda una sesión.

216</Note>

217 

128<h3 id="/clear-reset-conversation-context">218<h3 id="/clear-reset-conversation-context">

129 `/clear` - Restablecer contexto de conversación219 `/clear` - Restablecer contexto de conversación

130</h3>220</h3>


170 Ejemplo Básico260 Ejemplo Básico

171</h4>261</h4>

172 262 

173Cree `.claude/commands/refactor.md`:263Cree el directorio `.claude/commands` en su proyecto si no existe, luego cree `.claude/commands/refactor.md`:

174 264 

175```markdown theme={null}265```markdown theme={null}

176Refactor the selected code to improve readability and maintainability.266Refactor the selected code to improve readability and maintainability.


189---279---

190allowed-tools: Read, Grep, Glob280allowed-tools: Read, Grep, Glob

191description: Run security vulnerability scan281description: Run security vulnerability scan

192model: claude-opus-4-7282model: claude-opus-4-8

193---283---

194 284 

195Analyze the codebase for security vulnerabilities including:285Analyze the codebase for security vulnerabilities including:


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

211 301 

212 // Use a custom command302 // Use a custom command

303 try {

213 for await (const message of query({304 for await (const message of query({

214 prompt: "/refactor src/auth/login.ts",305 prompt: "/refactor src/auth/login.ts",

215 options: { maxTurns: 3 }306 options: { maxTurns: 3 }


218 console.log("Refactoring suggestions:", message.message);309 console.log("Refactoring suggestions:", message.message);

219 }310 }

220 }311 }

312 } catch (error) {

313 // A single-shot query() throws after yielding an error result,

314 // so the second query below still runs.

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

316 }

221 317 

222 // Custom commands appear in the slash_commands list318 // Custom commands appear in the slash_commands list

223 for await (const message of query({319 for await (const message of query({


225 options: { maxTurns: 1 }321 options: { maxTurns: 1 }

226 })) {322 })) {

227 if (message.type === "system" && message.subtype === "init") {323 if (message.type === "system" && message.subtype === "init") {

228 // Will include both built-in and custom commands

229 console.log("Available commands:", message.slash_commands);324 console.log("Available commands:", message.slash_commands);

230 // Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]325 // Includes built-in commands plus bundled skills and your custom commands, for example:

326 // ["clear", "compact", "context", "usage", "code-review", "verify", "refactor", "security-check", ...]

231 }327 }

232 }328 }

233 ```329 ```


239 335 

240 async def main():336 async def main():

241 # Use a custom command337 # Use a custom command

338 try:

242 async for message in query(339 async for message in query(

243 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)340 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

244 ):341 ):


246 for block in message.content:343 for block in message.content:

247 if hasattr(block, "text"):344 if hasattr(block, "text"):

248 print("Refactoring suggestions:", block.text)345 print("Refactoring suggestions:", block.text)

346 except Exception as error:

347 # A single-shot query() raises after yielding an error result,

348 # so the second query below still runs.

349 print(f"Session ended with an error: {error}")

249 350 

250 # Custom commands appear in the slash_commands list351 # Custom commands appear in the slash_commands list

251 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):352 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):

252 if isinstance(message, SystemMessage) and message.subtype == "init":353 if isinstance(message, SystemMessage) and message.subtype == "init":

253 # Will include both built-in and custom commands

254 print("Available commands:", message.data["slash_commands"])354 print("Available commands:", message.data["slash_commands"])

255 # Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]355 # Includes built-in commands plus bundled skills and your custom commands, for example:

356 # ["clear", "compact", "context", "usage", "code-review", "verify", "refactor", "security-check", ...]

256 357 

257 358 

258 asyncio.run(main())359 asyncio.run(main())


384 Ejemplos Prácticos485 Ejemplos Prácticos

385</h3>486</h3>

386 487 

387<h4 id="code-review-command">488<h4 id="pull-request-review-command">

388 Comando de Revisión de Código489 Comando de Revisión de Pull Request

389</h4>490</h4>

390 491 

391Cree `.claude/commands/code-review.md`:492Cree `.claude/commands/review-pr.md`:

392 493 

393```markdown theme={null}494```markdown theme={null}

394---495---


414Provide specific, actionable feedback organized by priority.515Provide specific, actionable feedback organized by priority.

415```516```

416 517 

518<Note>

519 Claude Code incluye skills integrados `code-review` y `verify`. Si nombra un comando personalizado igual a uno de ellos, por ejemplo `.claude/commands/code-review.md`, su comando reemplaza el skill integrado y `slash_commands` lista el nombre una sola vez.

520</Note>

521 

417<h4 id="test-runner-command">522<h4 id="test-runner-command">

418 Comando de Ejecutor de Pruebas523 Comando de Ejecutor de Pruebas

419</h4>524</h4>


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

443 548 

444 // Run code review549 // Run code review

550 try {

445 for await (const message of query({551 for await (const message of query({

446 prompt: "/code-review",552 prompt: "/review-pr",

447 options: { maxTurns: 3 }553 options: { maxTurns: 3 }

448 })) {554 })) {

449 // Process review feedback555 // Process review feedback

450 }556 }

557 } catch (error) {

558 // A single-shot query() throws after yielding an error result,

559 // so the second query below still runs.

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

561 }

451 562 

452 // Run specific tests563 // Run specific tests

453 for await (const message of query({564 for await (const message of query({


465 576 

466 async def main():577 async def main():

467 # Run code review578 # Run code review

468 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):579 try:

580 async for message in query(prompt="/review-pr", options=ClaudeAgentOptions(max_turns=3)):

469 # Process review feedback581 # Process review feedback

470 pass582 pass

583 except Exception as error:

584 # A single-shot query() raises after yielding an error result,

585 # so the second query below still runs.

586 print(f"Session ended with an error: {error}")

471 587 

472 # Run specific tests588 # Run specific tests

473 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):589 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

Details

71 71 

72Defina subagentes directamente en su código utilizando el parámetro `agents`. Este ejemplo crea dos subagentes: un revisor de código con acceso de solo lectura y un ejecutor de pruebas que puede ejecutar comandos. Claude invoca subagentes a través de la herramienta `Agent`, por lo que incluya `Agent` en `allowedTools` para aprobar automáticamente las invocaciones de subagentes sin un aviso de permiso.72Defina subagentes directamente en su código utilizando el parámetro `agents`. Este ejemplo crea dos subagentes: un revisor de código con acceso de solo lectura y un ejecutor de pruebas que puede ejecutar comandos. Claude invoca subagentes a través de la herramienta `Agent`, por lo que incluya `Agent` en `allowedTools` para aprobar automáticamente las invocaciones de subagentes sin un aviso de permiso.

73 73 

74La mayoría de los ejemplos en esta página imprimen solo el resultado final. Para confirmar que Claude delegó a un subagente en lugar de responder directamente, consulte [Detección de invocación de subagentes](#detecting-subagent-invocation).

75 

74<CodeGroup>76<CodeGroup>

75 ```python Python theme={null}77 ```python Python theme={null}

76 import asyncio78 import asyncio


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

194| `permissionMode` | `PermissionMode` | No | Modo de permiso para la ejecución de herramientas dentro de este agente |196| `permissionMode` | `PermissionMode` | No | Modo de permiso para la ejecución de herramientas dentro de este agente |

195 197 

196En el SDK de Python, estos nombres de campo usan camelCase para coincidir con el formato de cable. Consulte la referencia [`AgentDefinition`](/es/agent-sdk/python#agentdefinition) para obtener detalles.198En el SDK de Python, los nombres de campo de varias palabras como `disallowedTools` y `mcpServers` mantienen su ortografía camelCase para coincidir con el formato de cable en lugar de seguir la convención snake\_case de Python. Consulte la referencia [`AgentDefinition`](/es/agent-sdk/python#agentdefinition) para obtener detalles.

197 199 

198<Note>200<Note>

199 {/* min-version: 2.1.172 */}A partir de Claude Code v2.1.172, los subagentes pueden generar sus propios subagentes. Un subagente cinco niveles por debajo del agente principal no puede generar más subagentes, independientemente de si se ejecuta en primer plano o en segundo plano. Para evitar que un subagente genere otros, omita `Agent` de su matriz `tools` o agréguelo a `disallowedTools`. Consulte [subagentes anidados](/es/sub-agents#spawn-nested-subagents) para conocer las reglas de profundidad completas.201 {/* min-version: 2.1.172 */}A partir de Claude Code v2.1.172, los subagentes pueden generar sus propios subagentes. Un subagente cinco niveles por debajo del agente principal no puede generar más subagentes, independientemente de si se ejecuta en primer plano o en segundo plano. Para evitar que un subagente genere otros, omita `Agent` de su matriz `tools` o agréguelo a `disallowedTools`. Consulte [subagentes anidados](/es/sub-agents#spawn-nested-subagents) para conocer las reglas de profundidad completas.


469 session_id = None471 session_id = None

470 472 

471 # First invocation - run the endpoint-finder subagent473 # First invocation - run the endpoint-finder subagent

474 try:

472 async for message in query(475 async for message in query(

473 prompt="Use the endpoint-finder agent to find all API endpoints in this codebase",476 prompt="Use the endpoint-finder agent to find all API endpoints in this codebase",

474 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS),477 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS),


483 # Print the final result486 # Print the final result

484 if hasattr(message, "result"):487 if hasattr(message, "result"):

485 print(message.result)488 print(message.result)

489 except Exception as error:

490 # A single-shot query() raises after yielding an error result,

491 # so session_id and agent_id have already been captured by the loop above.

492 print(f"Session ended with an error: {error}")

486 493 

487 # Second invocation - resume and ask follow-up494 # Second invocation - resume and ask follow-up

488 if agent_id and session_id:495 if agent_id and session_id:


494 ):501 ):

495 if hasattr(message, "result"):502 if hasattr(message, "result"):

496 print(message.result)503 print(message.result)

504 else:

505 print("No agentId found in the first query, so there is no subagent to resume.")

497 506 

498 507 

499 asyncio.run(main())508 asyncio.run(main())


522 let sessionId: string | undefined;531 let sessionId: string | undefined;

523 532 

524 // First invocation - run the endpoint-finder subagent533 // First invocation - run the endpoint-finder subagent

534 try {

525 for await (const message of query({535 for await (const message of query({

526 prompt: "Use the endpoint-finder agent to find all API endpoints in this codebase",536 prompt: "Use the endpoint-finder agent to find all API endpoints in this codebase",

527 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents }537 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents }


534 // Print the final result544 // Print the final result

535 if ("result" in message) console.log(message.result);545 if ("result" in message) console.log(message.result);

536 }546 }

547 } catch (error) {

548 // A single-shot query() throws after yielding an error result,

549 // so sessionId and agentId have already been captured by the loop above.

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

551 }

537 552 

538 // Second invocation - resume and ask follow-up553 // Second invocation - resume and ask follow-up

539 if (agentId && sessionId) {554 if (agentId && sessionId) {


543 })) {558 })) {

544 if ("result" in message) console.log(message.result);559 if ("result" in message) console.log(message.result);

545 }560 }

561 } else {

562 console.log("No agentId found in the first query, so there is no subagent to resume.");

546 }563 }

547 ```564 ```

548</CodeGroup>565</CodeGroup>

Details

475| `allowDangerouslySkipPermissions` | `boolean` | `false` | Habilite omitir permisos. Requerido cuando se usa `permissionMode: 'bypassPermissions'` |475| `allowDangerouslySkipPermissions` | `boolean` | `false` | Habilite omitir permisos. Requerido cuando se usa `permissionMode: 'bypassPermissions'` |

476| `allowedTools` | `string[]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude a solo estas herramientas; las herramientas no listadas caen en `permissionMode` y `canUseTool`. Use `disallowedTools` para bloquear herramientas. Vea [Permissions](/es/agent-sdk/permissions#allow-and-deny-rules) |476| `allowedTools` | `string[]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude a solo estas herramientas; las herramientas no listadas caen en `permissionMode` y `canUseTool`. Use `disallowedTools` para bloquear herramientas. Vea [Permissions](/es/agent-sdk/permissions#allow-and-deny-rules) |

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

478| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Función de permiso personalizado para el uso de herramientas |478| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Función de permiso personalizado, invocada solo cuando el [flujo de permisos](/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`. Vea [`CanUseTool`](#canusetool) para detalles |

479| `continue` | `boolean` | `false` | Continúe la conversación más reciente |479| `continue` | `boolean` | `false` | Continúe la conversación más reciente |

480| `cwd` | `string` | `process.cwd()` | Directorio de trabajo actual |480| `cwd` | `string` | `process.cwd()` | Directorio de trabajo actual |

481| `debug` | `boolean` | `false` | Habilite el modo de depuración para el proceso de Claude Code |481| `debug` | `boolean` | `false` | Habilite el modo de depuración para el proceso de Claude Code |


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

554* `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 retroceso. Para ejecuciones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG=1` para reintentar capacidades de error indefinidamente.554* `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 retroceso. Para ejecuciones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG=1` para reintentar capacidades de error indefinidamente.

555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: perro guardián de estancamiento para subagentes lanzados con `run_in_background`. Predeterminado `600000`. Se reinicia en cada evento de transmisión; en caso de estancamiento, aborta el subagente, marca la tarea como fallida y expone el error al padre con cualquier resultado parcial. No se aplica a subagentes síncronos.555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: perro guardián de estancamiento para subagentes lanzados con `run_in_background`. Predeterminado `600000`. Se reinicia en cada evento de transmisión; en caso de estancamiento, aborta el subagente, marca la tarea como fallida y expone el error al padre con cualquier resultado parcial. No se aplica a subagentes síncronos.

556* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: aborta la solicitud cuando los encabezados han llegado pero el cuerpo de respuesta deja de transmitirse. Cuando `CLAUDE_ENABLE_STREAM_WATCHDOG` no está establecido, el predeterminado es controlado por el servidor en la API directa de Anthropic y desactivado en otros proveedores. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tiene un valor predeterminado de `300000` y se fija a ese mínimo. La solicitud abortada pasa por la ruta de reintento normal.556* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: 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 valor predeterminado de `300000` y se fija a ese mínimo. La solicitud abortada pasa por la ruta de reintento normal.

557 557 

558<h3 id="query-object">558<h3 id="query-object">

559 Objeto `Query`559 Objeto `Query`


573 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;573 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

574 applyFlagSettings(settings: { [K in keyof Settings]?: Settings[K] | null }): Promise<void>;574 applyFlagSettings(settings: { [K in keyof Settings]?: Settings[K] | null }): Promise<void>;

575 initializationResult(): Promise<SDKControlInitializeResponse>;575 initializationResult(): Promise<SDKControlInitializeResponse>;

576 reinitialize(): Promise<SDKControlInitializeResponse>;

576 supportedCommands(): Promise<SlashCommand[]>;577 supportedCommands(): Promise<SlashCommand[]>;

577 supportedModels(): Promise<ModelInfo[]>;578 supportedModels(): Promise<ModelInfo[]>;

578 supportedAgents(): Promise<AgentInfo[]>;579 supportedAgents(): Promise<AgentInfo[]>;


592</h4>593</h4>

593 594 

594| Método | Descripción |595| Método | Descripción |

595| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |596| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

596| `interrupt()` | Interrumpe la consulta (solo disponible en modo de entrada de transmisión) |597| `interrupt()` | Interrumpe la consulta (solo disponible en modo de entrada de transmisión) |

597| `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](/es/agent-sdk/file-checkpointing) |598| `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](/es/agent-sdk/file-checkpointing) |

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


600| `setMaxThinkingTokens()` | *Deprecado:* Use la opción `thinking` en su lugar. Cambia los tokens de pensamiento máximos |601| `setMaxThinkingTokens()` | *Deprecado:* Use la opción `thinking` en su lugar. Cambia los tokens de pensamiento máximos |

601| `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) |602| `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) |

602| `initializationResult()` | Devuelve el resultado de inicialización completo incluyendo comandos compatibles, modelos, información de cuenta y configuración de estilo de salida |603| `initializationResult()` | Devuelve el resultado de inicialización completo incluyendo comandos compatibles, modelos, información de cuenta y configuración de estilo de salida |

604| `reinitialize()` | {/* min-version: 2.1.195 */}Reenvía la solicitud de control `initialize` a la CLI en ejecución y devuelve un resultado nuevo en lugar del resultado de primera conexión en caché. Úselo después de una brecha de transporte, como reconectarse a una sesión después de una desconexión, para que las solicitudes de permiso pendientes lleguen a su devolución de llamada `canUseTool` nuevamente. Haga que la devolución de llamada sea idempotente por ID de solicitud, porque una solicitud cuya respuesta se perdió se envía nuevamente. Requiere Claude Code v2.1.195 o posterior |

603| `supportedCommands()` | Devuelve comandos slash disponibles |605| `supportedCommands()` | Devuelve comandos slash disponibles |

604| `supportedModels()` | Devuelve modelos disponibles con información de visualización |606| `supportedModels()` | Devuelve modelos disponibles con información de visualización |

605| `supportedAgents()` | Devuelve subagentes disponibles como [`AgentInfo`](#agentinfo)`[]` |607| `supportedAgents()` | Devuelve subagentes disponibles como [`AgentInfo`](#agentinfo)`[]` |


616 `applyFlagSettings()`618 `applyFlagSettings()`

617</h4>619</h4>

618 620 

619Cambia cualquier [setting](/es/settings) en una sesión en ejecución sin reiniciar la consulta. Úselo cuando una configuración que no tiene un setter dedicado necesite cambiar a mitad de sesión, como restringir `permissions` después de que el agente lea entrada no confiable. `setModel()` y `setPermissionMode()` son setters dedicados para esas dos claves; `applyFlagSettings()` es la forma general que acepta cualquier subconjunto de las claves de configuración, y pasar `model` aquí se comporta igual que `setModel()`.621Cambia [settings](/es/settings) en una sesión en ejecución sin reiniciar la consulta. Úselo cuando una configuración que no tiene un setter dedicado necesite cambiar a mitad de sesión, como restringir `permissions` después de que el agente lea entrada no confiable. `setModel()` y `setPermissionMode()` son setters dedicados para esas dos claves; `applyFlagSettings()` es la forma general que acepta cualquier subconjunto de las claves de configuración, y pasar `model` aquí se comporta igual que `setModel()`.

620 622 

621Solo algunas claves tienen efecto a mitad de sesión:623Solo algunas claves tienen efecto a mitad de sesión:

622 624 


689 691 

690Cuando un cliente envía `initialize` a una sesión que ya se está ejecutando, el contenedor de respuesta de control también lleva una matriz `pending_permission_requests` opcional. El campo está en el contenedor de respuesta en sí, no en la carga `SDKControlInitializeResponse` anterior. Cada entrada es un mensaje `control_request` completo con la misma forma `{ type: "control_request", request_id, request }` que la sesión transmite para solicitudes de permiso mientras se ejecuta.692Cuando un cliente envía `initialize` a una sesión que ya se está ejecutando, el contenedor de respuesta de control también lleva una matriz `pending_permission_requests` opcional. El campo está en el contenedor de respuesta en sí, no en la carga `SDKControlInitializeResponse` anterior. Cada entrada es un mensaje `control_request` completo con la misma forma `{ type: "control_request", request_id, request }` que la sesión transmite para solicitudes de permiso mientras se ejecuta.

691 693 

692Estas son solicitudes que se emitieron antes de que el cliente se conectara y aún están esperando una respuesta, así que lea esta matriz para mostrar solicitudes de permiso en vuelo inmediatamente; no se reenviará.694Estas son solicitudes que se emitieron antes de que el cliente se conectara y aún están esperando una respuesta. El SDK lee la matriz para usted y envía cada entrada a su devolución de llamada [`canUseTool`](#canusetool), el mismo reenvío que [`reinitialize()`](#query-object) activa después de una brecha de transporte. Maneje IDs de solicitud repetidos de forma idempotente, porque una entrada puede repetir una solicitud que la devolución de llamada ya recibió antes de que se cayera la conexión.

693 695 

694<h3 id="agentdefinition">696<h3 id="agentdefinition">

695 `AgentDefinition`697 `AgentDefinition`


886 888 

887Tipo de función de permiso personalizado para controlar el uso de herramientas.889Tipo de función de permiso personalizado para controlar el uso de herramientas.

888 890 

891La función es el reemplazo del SDK para el mensaje de permiso interactivo: se invoca solo cuando el [flujo de evaluación de permisos](/es/agent-sdk/permissions#how-permissions-are-evaluated) se resuelve en un mensaje. Las llamadas de herramientas ya aprobadas por una entrada `allowedTools`, 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`](/es/agent-sdk/hooks) en su lugar.

892 

889```typescript theme={null}893```typescript theme={null}

890type CanUseTool = (894type CanUseTool = (

891 toolName: string,895 toolName: string,


1531 session_id: string;1535 session_id: string;

1532 transcript_path: string;1536 transcript_path: string;

1533 cwd: string;1537 cwd: string;

1538 prompt_id?: string;

1534 permission_mode?: string;1539 permission_mode?: string;

1535 effort?: { level: string };1540 effort?: { level: string };

1536 agent_id?: string;1541 agent_id?: string;


1538};1543};

1539```1544```

1540 1545 

1546El campo `prompt_id` es un UUID que identifica el mensaje del usuario que se está procesando actualmente. Coincide con el [atributo `prompt.id` en eventos de OpenTelemetry](/es/monitoring-usage#event-correlation-attributes) y está ausente hasta la primera entrada del usuario. Requiere Claude Code v2.1.196 o posterior.

1547 

1541<h4 id="pretoolusehookinput">1548<h4 id="pretoolusehookinput">

1542 `PreToolUseHookInput`1549 `PreToolUseHookInput`

1543</h4>1550</h4>


2037 2044 

2038```typescript theme={null}2045```typescript theme={null}

2039type MonitorInput = {2046type MonitorInput = {

2040 command: string;2047 command?: string;

2048 ws?: {

2049 url: string;

2050 protocols?: string[];

2051 };

2041 description: string;2052 description: string;

2042 timeout_ms?: number;2053 timeout_ms?: number;

2043 persistent?: boolean;2054 persistent?: boolean;

2044};2055};

2045```2056```

2046 2057 

2047Ejecuta un script de fondo y entrega cada línea de stdout a Claude como un evento para que pueda reaccionar sin sondeo. Establezca `persistent: true` para vigilancias de duración de sesión como colas de registro. Monitor sigue las mismas reglas de permiso que Bash. Vea la [referencia de herramienta Monitor](/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.2058Ejecuta 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`. {/* min-version: 2.1.195 */}La fuente `ws` requiere Claude Code v2.1.195 o posterior.

2059 

2060Establezca `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](/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.

2048 2061 

2049<h3 id="taskoutput">2062<h3 id="taskoutput">

2050 TaskOutput2063 TaskOutput


2236Ejecuta un [flujo de trabajo dinámico](/es/workflows): un script que orquesta muchos subagentes en segundo plano y devuelve un resultado consolidado. La herramienta `Workflow` está disponible en Agent SDK v0.3.149 y posterior. Se requiere al menos uno de `script`, `name` o `scriptPath`.2249Ejecuta un [flujo de trabajo dinámico](/es/workflows): un script que orquesta muchos subagentes en segundo plano y devuelve un resultado consolidado. La herramienta `Workflow` está disponible en Agent SDK v0.3.149 y posterior. Se requiere al menos uno de `script`, `name` o `scriptPath`.

2237 2250 

2238| Campo | Tipo | Descripción |2251| Campo | Tipo | Descripción |

2239| ----------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2252| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2240| `script` | `string` | Script de flujo de trabajo en línea. Debe comenzar con `export const meta = { name, description, phases }` como un literal, seguido del cuerpo del script usando `agent()`, `parallel()`, `pipeline()` y `phase()` |2253| `script` | `string` | Script de flujo de trabajo en línea. Debe comenzar con `export const meta = { name, description }` como un literal, seguido del cuerpo del script usando `agent()`, `parallel()`, `pipeline()` y `phase()`. Una matriz `phases` opcional en `meta` agrupa agentes bajo etapas nombradas en la vista de progreso |

2241| `name` | `string` | Nombre de un flujo de trabajo integrado o uno guardado en `.claude/workflows/`. Se resuelve a un script |2254| `name` | `string` | Nombre de un flujo de trabajo integrado o uno guardado en `.claude/workflows/`. Se resuelve a un script |

2242| `scriptPath` | `string` | Ruta a un archivo de script de flujo de trabajo en disco. Tiene precedencia sobre `script` y `name`. Cada invocación persiste su script y devuelve la ruta en el resultado, para que pueda editar ese archivo e invocar nuevamente con el mismo `scriptPath` para iterar |2255| `scriptPath` | `string` | Ruta a un archivo de script de flujo de trabajo en disco. Tiene precedencia sobre `script` y `name`. Cada invocación persiste su script y devuelve la ruta en el resultado, para que pueda editar ese archivo e invocar nuevamente con el mismo `scriptPath` para iterar |

2243| `args` | `unknown` | Valor de entrada expuesto al script como el `args` global, para flujos de trabajo nombrados parametrizados como una pregunta de investigación o una lista de rutas de archivo. Pase matrices y objetos como valores JSON reales, no como una cadena codificada en JSON |2256| `args` | `unknown` | Valor de entrada expuesto al script como el `args` global, para flujos de trabajo nombrados parametrizados como una pregunta de investigación o una lista de rutas de archivo. Pase matrices y objetos como valores JSON reales, no como una cadena codificada en JSON |


3098```3111```

3099 3112 

3100<Warning>3113<Warning>

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

3102</Warning>3115</Warning>

3103 3116 

3104<h3 id="slashcommand">3117<h3 id="slashcommand">

Details

44 44 

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

46 46 

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

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

49 49 

50<Note>50<Warning>

51 Para permitir o denegar automáticamente herramientas sin solicitar a los usuarios, use [hooks](/es/agent-sdk/hooks) en su lugar. Los hooks se ejecutan antes de `canUseTool` y pueden permitir, denegar o modificar solicitudes según su propia lógica. También puede usar el [`PermissionRequest` hook](/es/agent-sdk/hooks#available-hooks) para enviar notificaciones externas (Slack, correo electrónico, push) cuando Claude está esperando aprobación.51 **El callback nunca se activa para herramientas aprobadas automáticamente.** Cualquier aprobación anterior en el [flujo de evaluación de permisos](/es/agent-sdk/permissions#how-permissions-are-evaluated), una regla de permiso o un modo como `acceptEdits` o `bypassPermissions`, resuelve la llamada antes de que se consulte `canUseTool`. Si enumera una herramienta directamente en `allowed_tools`, una verificación `canUseTool` para esa herramienta nunca se ejecuta a menos que una regla de pregunta o modo `plan` redirija la llamada de vuelta a un prompt. Para lógica que debe aplicarse a cada llamada de herramienta, use un [hook `PreToolUse`](/es/agent-sdk/hooks), que se ejecuta antes del resto del flujo y puede permitir, denegar o modificar solicitudes.

52</Note>52</Warning>

53 

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

53 55 

54<h2 id="handle-tool-approval-requests">56<h2 id="handle-tool-approval-requests">

55 Manejar solicitudes de aprobación de herramientas57 Manejar solicitudes de aprobación de herramientas

56</h2>58</h2>

57 59 

58Una vez que haya pasado un callback `canUseTool` en sus opciones de consulta, se activa cuando Claude quiere usar una herramienta que no está aprobada automáticamente. Su callback recibe tres argumentos:60Una vez que haya pasado un callback `canUseTool` en sus opciones de consulta, se activa cuando Claude quiere usar una herramienta que nada anterior en el flujo de permisos ha aprobado. Su callback recibe tres argumentos:

59 61 

60| Argumento | Descripción |62| Argumento | Descripción |

61| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |63| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

agent-view.md +63 −37

Details

76 76 

77Ejecute `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 lo necesitan en la parte superior. Cada fila muestra el nombre de la sesión, la actividad actual y cuánto tiempo hace que cambió por última vez.77Ejecute `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 lo necesitan en la parte superior. Cada fila muestra el nombre de la sesión, la actividad actual y cuánto tiempo hace que cambió por última vez.

78 78 

79De forma predeterminada, la lista muestra cada sesión en segundo plano que ha iniciado, en todos sus proyectos. Una sesión que trabaja en un repositorio y otra en un worktree diferente aparecen aquí, independientemente de qué directorio abrió la vista de agentes. Para limitar la lista a un proyecto, pase `--cwd` (requiere Claude Code v2.1.141 o posterior):79De forma predeterminada, la lista muestra cada sesión en segundo plano que ha iniciado, en todos sus proyectos. Una sesión que trabaja en un repositorio y otra en un worktree diferente aparecen aquí, independientemente de qué directorio abrió la vista de agentes. Para limitar la lista a un proyecto, pase `--cwd`:

80 80 

81```bash theme={null}81```bash theme={null}

82claude agents --cwd ~/projects/my-app82claude agents --cwd ~/projects/my-app


143 143 

144El resumen de una línea en cada fila es generado por un [modelo de clase Haiku](/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 resumen se actualiza como máximo una vez cada 15 segundos, más una vez cuando cada turno termina.144El resumen de una línea en cada fila es generado por un [modelo de clase Haiku](/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 resumen se actualiza como máximo una vez cada 15 segundos, más una vez cuando cada turno termina.

145 145 

146A partir de v2.1.161, cuando la sesión está ejecutando dos o más elementos de trabajo paralelos, como subagentes, comandos shell en segundo plano o monitores, aparece un recuento `done/total` como `2/5` antes del texto del resumen.146Cuando la sesión está ejecutando dos o más elementos de trabajo paralelos, como subagentes, comandos shell en segundo plano o monitores, aparece un recuento `done/total` como `2/5` antes del texto del resumen.

147 147 

148Cada actualización es 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](/es/data-usage) que la sesión misma. En proveedores de terceros como Bedrock, Vertex AI, Microsoft Foundry y puertas de enlace personalizadas, la solicitud se revierte al modelo principal de la sesión cuando no hay ningún modelo Haiku configurado. Establezca [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/es/model-config#environment-variables) para elegir el modelo para estos resúmenes en esos proveedores.148Cada actualización es 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](/es/data-usage) que la sesión misma. En proveedores de terceros como Bedrock, Vertex AI, Microsoft Foundry y puertas de enlace personalizadas, la solicitud se revierte al modelo principal de la sesión cuando no hay ningún modelo Haiku configurado. Establezca [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/es/model-config#environment-variables) para elegir el modelo para estos resúmenes en esos proveedores.

149 149 


172 172 

173Presione `Space` en una fila seleccionada para abrir el panel de vista previa. Muestra qué necesita la sesión de usted, su salida más reciente y cualquier solicitud de extracción que haya abierto. La mayoría de las veces esto es suficiente, y nunca necesita abrir la transcripción completa.173Presione `Space` en una fila seleccionada para abrir el panel de vista previa. Muestra qué necesita la sesión de usted, su salida más reciente y cualquier solicitud de extracción que haya abierto. La mayoría de las veces esto es suficiente, y nunca necesita abrir la transcripción completa.

174 174 

175A partir de v2.1.161, cuando la sesión está ejecutando elementos de trabajo paralelos, el panel también nombra el que más tiempo lleva ejecutándose y cuánto tiempo ha estado en ejecución, para que pueda ver en qué está esperando la sesión sin conectarse.175Cuando la sesión está ejecutando elementos de trabajo paralelos, el panel también nombra el que más tiempo lleva ejecutándose y cuánto tiempo ha estado en ejecución, para que pueda ver en qué está esperando la sesión sin conectarse.

176 176 

177Escriba una respuesta en el panel de vista previa y presione `Enter` para enviarla a esa sesión. Cuando la sesión está haciendo una pregunta de opción múltiple, el panel de vista previa muestra las opciones y puede presionar una tecla numérica para elegir una. 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.177Escriba una respuesta en el panel de vista previa y presione `Enter` para enviarla a esa sesión. Cuando la sesión está haciendo una pregunta de opción múltiple, el panel de vista previa muestra las opciones y puede presionar una tecla numérica para elegir una. 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.

178 178 

179A partir de v2.1.145, con [dictado de voz](/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 distribución en la parte inferior de la vista de agentes.179Con [dictado de voz](/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 distribución en la parte inferior de la vista de agentes.

180 180 

181Use `↑` y `↓` para echar un vistazo a sesiones adyacentes sin cerrar el panel, o `→` para conectarse.181Use `↑` y `↓` para echar un vistazo a sesiones adyacentes sin cerrar el panel, o `→` para conectarse.

182 182 


196 196 

197Desconectarse 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`.197Desconectarse 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`.

198 198 

199Presionar `←` en un mensaje vacío funciona desde cualquier sesión de Claude Code, no solo desde las que se conectó desde la vista de agentes. Envía la sesión actual al segundo plano y abre la vista de agentes con esa fila seleccionada, por lo que puede cambiar de sesión sin salir de la terminal. La fila se crea incluso desde una sesión nueva sin historial de conversación, por lo que `→` vuelve a ella. Cuando esa fila es la única, la vista de agentes muestra una sugerencia de incorporación debajo de ella. Puede desactivar este atajo en `/config` (la configuración `leftArrowOpensAgents`).199En una sesión que se ejecuta en primer plano, una que inició en la terminal en lugar de conectarse desde la vista de agentes, presionar `←` en un mensaje vacío la envía al segundo plano y abre la vista de agentes con esa fila seleccionada, por lo que puede cambiar de sesión sin salir de la terminal. El mismo presionar único desconecta una sesión conectada.

200 

201Si una herramienta se está ejecutando cuando presiona `←`, Claude Code espera hasta aproximadamente diez segundos para que termine antes de enviar al segundo plano, y la respuesta continúa en la sesión en segundo plano. Presione `←` nuevamente para enviar al segundo plano inmediatamente en lugar de esperar. Cuando el trabajo en vuelo no puede trasladarse a la sesión en segundo plano, aparece primero el diálogo `Background this session?`, igual que con [`/background`](#from-inside-a-session).

202 

203La fila se crea incluso desde una sesión nueva sin historial de conversación, por lo que `→` vuelve a ella. Cuando esa fila es la única, la vista de agentes muestra una sugerencia de incorporación debajo de ella.

204 

205Puede desactivar este atajo con la configuración `leftArrowOpensAgents` en `/config`.

200 206 

201<h3 id="organize-the-list">207<h3 id="organize-the-list">

202 Organizar la lista208 Organizar la lista

203</h3>209</h3>

204 210 

205La vista de agentes agrupa sesiones para que las que necesitan entrada estén en la parte superior, con `Ready for review` y `Needs input` por 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. Presione `Ctrl+S` para agrupar por directorio en su lugar. Su elección persiste entre ejecuciones.211La vista de agentes agrupa sesiones para que las que necesitan entrada estén en la parte superior, con `Ready for review` y `Needs input` por 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.

212 

213Presione `Ctrl+S` para agrupar por directorio en su lugar. Su elección persiste entre ejecuciones.

206 214 

207Dentro de un grupo:215Dentro de un grupo:

208 216 


215 223 

216Eliminar elimina la sesión de la vista de agentes. Si Claude [creó un worktree](#how-file-edits-are-isolated) para la sesión, eliminar elimina ese worktree también, incluidos los cambios sin confirmar en él, por lo que envíe o confirme el trabajo que desea conservar primero. Un worktree que creó usted mismo e inició la sesión dentro se deja en su lugar. La transcripción de conversación permanece en su máquina local y sigue siendo accesible a través de `claude --resume`.224Eliminar elimina la sesión de la vista de agentes. Si Claude [creó un worktree](#how-file-edits-are-isolated) para la sesión, eliminar elimina ese worktree también, incluidos los cambios sin confirmar en él, por lo que envíe o confirme el trabajo que desea conservar primero. Un worktree que creó usted mismo e inició la sesión dentro se deja en su lugar. La transcripción de conversación permanece en su máquina local y sigue siendo accesible a través de `claude --resume`.

217 225 

218Las sesiones completadas más antiguas se pliegan en una fila `… N more` para mantener la lista corta. Los fallos y las sesiones con una solicitud de extracción abierta siempre permanecen visibles.226Las 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 restante después de los grupos activos, y en una terminal corta el encabezado se compacta a una línea de resumen única para que las sesiones que están funcionando o necesitan entrada permanezcan visibles.

219 227 

220<h3 id="filter-sessions">228<h3 id="filter-sessions">

221 Filtrar sesiones229 Filtrar sesiones


305 313 

306Ejecute `/background` o su alias `/bg` para mover la conversación actual a una sesión en segundo plano. Pase un mensaje como `/bg run the test suite and fix any failures` para dar una instrucción más primero. Si Claude está respondiendo cuando ejecuta `/bg`, la respuesta continúa en la sesión en segundo plano.314Ejecute `/background` o su alias `/bg` para mover la conversación actual a una sesión en segundo plano. Pase un mensaje como `/bg run the test suite and fix any failures` para dar una instrucción más primero. Si Claude está respondiendo cuando ejecuta `/bg`, la respuesta continúa en la sesión en segundo plano.

307 315 

308Enviar al segundo plano desde una sesión interactiva inicia un proceso nuevo que se reanuda desde la conversación guardada, por lo que ejecutar subagentes, [monitores](/es/tools-reference#monitor-tool) y comandos en segundo plano no se transfieren a él. Claude le pide que confirme antes de enviar al segundo plano cuando alguno está en ejecución. Una vez en segundo plano, la sesión puede iniciar nuevos subagentes, monitores y comandos en segundo plano, y esos continúan ejecutándose en desconexiones y reconexiones posteriores.316Enviar al segundo plano desde una sesión interactiva inicia un proceso nuevo que se reanuda desde la conversación guardada, y el trabajo en vuelo se traslada a él: comandos shell en segundo plano en ejecución, subagentes en segundo plano, flujos de trabajo dinámicos y tareas programadas que creó con [`/loop`](/es/scheduled-tasks) se trasladan a la sesión en segundo plano y siguen ejecutándose allí. Un subagente se traslada junto con todo lo que inició, por lo que se traslada solo cuando todo ese trabajo puede trasladarse también, incluso en Windows. Para detener el trabajo en vuelo en lugar de trasladarlo, establezca la variable de entorno [`CLAUDE_DISABLE_ADOPT=1`](/es/env-vars#variables); Claude Code luego le pide que confirme antes de enviar al segundo plano.

317 

318El trabajo que no puede trasladarse, como un [monitor](/es/tools-reference#monitor-tool) en ejecución, se detiene. Un subagente en segundo plano que posee un monitor se detiene junto con él. Cuando algún trabajo de este tipo se está ejecutando, Claude Code muestra un diálogo `Background this session?` para que pueda confirmar antes de que se detenga.

319 

320Una vez en segundo plano, la sesión puede iniciar nuevos subagentes, monitores y comandos en segundo plano, y esos continúan ejecutándose en desconexiones y reconexiones posteriores.

309 321 

310Las banderas de configuración del lanzamiento original se transfieren a la sesión enviada al segundo plano, por lo que sus servidores MCP, configuración y modelo de respaldo permanecen en vigor:322Las banderas de configuración del lanzamiento original se transfieren a la sesión enviada al segundo plano, por lo que sus servidores MCP, configuración y modelo de respaldo permanecen en vigor:

311 323 


394}406}

395```407```

396 408 

397<Note>

398 La configuración `worktree.bgIsolation` requiere Claude Code v2.1.143 o posterior.

399</Note>

400 

401Fuera de un repositorio git, las sesiones escriben en el directorio de trabajo directamente y no están aisladas entre sí, por lo que evite distribuir sesiones paralelas que editen los mismos archivos. Si utiliza un sistema de control de versiones diferente, configure un hook [`WorktreeCreate`](/es/worktrees#non-git-version-control) y Claude aísla las ediciones de la misma manera que lo hace para git.409Fuera de un repositorio git, las sesiones escriben en el directorio de trabajo directamente y no están aisladas entre sí, por lo que evite distribuir sesiones paralelas que editen los mismos archivos. Si utiliza un sistema de control de versiones diferente, configure un hook [`WorktreeCreate`](/es/worktrees#non-git-version-control) y Claude aísla las ediciones de la misma manera que lo hace para git.

402 410 

403Eliminar una sesión en la vista de agentes (`Ctrl+X` dos veces) elimina un worktree que Claude creó para ella, incluidos los cambios sin confirmar, por lo que fusione o envíe los cambios que desee mantener primero. Eliminar desde el shell con [`claude rm`](#manage-sessions-from-the-shell) mantiene un worktree que tiene cambios sin confirmar e imprime su ruta para que pueda limpiarlo usted mismo. Un worktree que creó usted mismo e inició la sesión dentro se deja en su lugar de cualquier forma.411Eliminar una sesión en la vista de agentes con `Ctrl+X` dos veces elimina un worktree que Claude creó para ella, incluidos los cambios sin confirmar, por lo que fusione o envíe los cambios que desee mantener primero. Eliminar desde el shell con [`claude rm`](#manage-sessions-from-the-shell) mantiene un worktree que tiene cambios sin confirmar e imprime su ruta para que pueda limpiarlo usted mismo. Un worktree que creó usted mismo e inició la sesión dentro se deja en su lugar de cualquier forma.

404 412 

405Para encontrar la ruta del worktree de una sesión, eche un vistazo a la sesión o conéctese y verifique su directorio de trabajo.413Para encontrar la ruta del worktree de una sesión, eche un vistazo a la sesión o conéctese y verifique su directorio de trabajo.

406 414 


410 Establecer el modelo418 Establecer el modelo

411</h3>419</h3>

412 420 

413El nombre del modelo mostrado en el encabezado de la vista de agentes es el valor predeterminado de distribución. Las nuevas sesiones que inicia desde la entrada utilizan este modelo, que proviene de la configuración [`model`](/es/settings#available-settings) en su configuración de usuario. Establézcalo seleccionando un modelo en el selector [`/model`](/es/model-config), o edite la configuración directamente. Para anularlo para toda la sesión de vista de agentes, pase `--model` al abrir la vista de agentes. Consulte [Modo de permiso, modelo y esfuerzo](#permission-mode-model-and-effort).421El nombre del modelo mostrado en el encabezado de la vista de agentes es el valor predeterminado de distribución. Las nuevas sesiones que inicia desde la entrada utilizan este modelo, que proviene de la configuración [`model`](/es/settings#available-settings) en su configuración de usuario. Establézcalo seleccionando un modelo en el selector [`/model`](/es/model-config), o edite la configuración directamente.

422 

423Para anularlo para toda la sesión de vista de agentes, pase `--model` al abrir la vista de agentes. Consulte [Modo de permiso, modelo y esfuerzo](#permission-mode-model-and-effort).

414 424 

415Para cambiar el valor predeterminado de distribución desde dentro de la vista de agentes, escriba `/model` seguido de un nombre de modelo en la entrada de distribución y presione `Enter`. El encabezado se actualiza para mostrar ese modelo con un marcador `(session)`, y las sesiones que distribuya después lo utilizan. Escriba `/model default` para borrar la anulación y volver al valor predeterminado de distribución. Esta anulación dura el resto de la ejecución actual de `claude agents`, no se escribe en su archivo de configuración y requiere Claude Code v2.1.172 o posterior. {/* min-version: 2.1.172 */} El siguiente ejemplo distribuye una sesión en Opus y la siguiente en Sonnet:425Para cambiar el valor predeterminado de distribución desde dentro de la vista de agentes, escriba `/model` seguido de un nombre de modelo en la entrada de distribución y presione `Enter`. El encabezado se actualiza para mostrar ese modelo con un marcador `(session)`, y las sesiones que distribuya después lo utilizan. Escriba `/model default` para borrar la anulación y volver al valor predeterminado de distribución. Esta anulación dura el resto de la ejecución actual de `claude agents` y no se escribe en su archivo de configuración. El siguiente ejemplo distribuye una sesión en Opus y la siguiente en Sonnet:

416 426 

417```text theme={null}427```text theme={null}

418/model opus428/model opus


449 459 

450`claude agents` también acepta `--dangerously-skip-permissions` como abreviatura de `--permission-mode bypassPermissions`, y `--allow-dangerously-skip-permissions` para hacer que `bypassPermissions` esté disponible en el ciclo `Shift+Tab` de cada sesión distribuida sin comenzar en ese modo. Ambos coinciden con las [banderas CLI de nivel superior](/es/cli-reference).460`claude agents` también acepta `--dangerously-skip-permissions` como abreviatura de `--permission-mode bypassPermissions`, y `--allow-dangerously-skip-permissions` para hacer que `bypassPermissions` esté disponible en el ciclo `Shift+Tab` de cada sesión distribuida sin comenzar en ese modo. Ambos coinciden con las [banderas CLI de nivel superior](/es/cli-reference).

451 461 

452Estas banderas se agregaron en diferentes versiones. Las versiones anteriores las rechazan con un error de opción desconocida.

453 

454| Bandera o configuración | Versión mínima |

455| :--------------------------------------------------------------------------- | :------------------------------------ |

456| `--permission-mode`, `--model`, `--effort`, `--dangerously-skip-permissions` | v2.1.142 {/* min-version: 2.1.142 */} |

457| `--allow-dangerously-skip-permissions` | v2.1.143 {/* min-version: 2.1.143 */} |

458| `--agent` y respeto de la configuración `agent` para sesiones distribuidas | v2.1.157 {/* min-version: 2.1.157 */} |

459 

460Antes de v2.1.157, la vista de agentes ignora la configuración `agent` y distribuye el agente integrado `claude`.

461 

462Los valores predeterminados activos aparecen en el pie de página debajo de la entrada de distribución.462Los valores predeterminados activos aparecen en el pie de página debajo de la entrada de distribución.

463 463 

464Sin estas banderas, la sesión utiliza el `defaultMode` de la configuración de ese directorio o el `permissionMode` del [frontmatter del subagente distribuido](/es/sub-agents#supported-frontmatter-fields), y el modelo mostrado en el encabezado de la vista de agentes.464Sin estas banderas, la sesión utiliza el `defaultMode` de la configuración de ese directorio o el `permissionMode` del [frontmatter del subagente distribuido](/es/sub-agents#supported-frontmatter-fields), y el modelo mostrado en el encabezado de la vista de agentes.

465 465 

466El uso de `bypassPermissions` o `auto` se rechaza hasta que haya aceptado ese modo ejecutando `claude` con él una vez de forma interactiva, ya que esos modos permiten que una sesión que no está viendo actúe sin aprobación. Lo mismo se aplica si pasa el modo a `claude agents` o a `claude --bg --permission-mode`.466El uso de `bypassPermissions` con `claude --bg --permission-mode` se rechaza hasta que haya aceptado el descargo de responsabilidad de bypass ejecutando `claude --dangerously-skip-permissions` una vez de forma interactiva, ya que ese modo permite que una sesión que no está viendo actúe sin aprobación. Pasar `--dangerously-skip-permissions` o `--permission-mode bypassPermissions` a `claude agents` muestra el mismo descargo de responsabilidad cuando no lo ha aceptado antes, y aceptar aplica `bypassPermissions` a las sesiones que lanza desde la vista. Pasar `--allow-dangerously-skip-permissions` muestra el mismo descargo de responsabilidad también, y aceptar hace que `bypassPermissions` esté disponible en el ciclo `Shift+Tab` de esas sesiones sin iniciarlas en él.

467 467 

468<h3 id="settings-plugins-and-mcp-servers">468<h3 id="settings-plugins-and-mcp-servers">

469 Configuración, plugins y servidores MCP469 Configuración, plugins y servidores MCP

470</h3>470</h3>

471 471 

472La vista de agentes acepta las mismas banderas de configuración que `claude` para cargar configuración, plugins, servidores MCP y directorios adicionales. Estas banderas requieren Claude Code v2.1.142 o posterior. Cada bandera se aplica a la vista de agentes en sí y se pasa a cada sesión que distribuya desde ella, por lo que un plugin o servidor MCP que cargue de esta manera está disponible en esas sesiones también.472La vista de agentes acepta las mismas banderas de configuración que `claude` para cargar configuración, plugins, servidores MCP y directorios adicionales. Cada bandera se aplica a la vista de agentes en sí y se pasa a cada sesión que distribuya desde ella, por lo que un plugin o servidor MCP que cargue de esta manera está disponible en esas sesiones también.

473 473 

474| Bandera | Efecto |474| Bandera | Efecto |

475| :----------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |475| :----------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |


494Cada sesión en segundo plano tiene un ID corto que puede usar desde el shell. El ID se imprime cuando inicia una sesión con `claude --bg`, y el ID de cada sesión es su nombre de directorio bajo `~/.claude/jobs/`. Estos comandos son útiles para scripting o cuando no desea abrir la vista de agentes.494Cada sesión en segundo plano tiene un ID corto que puede usar desde el shell. El ID se imprime cuando inicia una sesión con `claude --bg`, y el ID de cada sesión es su nombre de directorio bajo `~/.claude/jobs/`. Estos comandos son útiles para scripting o cuando no desea abrir la vista de agentes.

495 495 

496| Comando | Propósito |496| Comando | Propósito |

497| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |497| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

498| `claude agents` | Abrir la vista de agentes |498| `claude agents` | Abrir la vista de agentes |

499| `claude agents --cwd <path>` | Abrir la vista de agentes limitada a sesiones iniciadas bajo `<path>` |499| `claude agents --cwd <path>` | Abrir la vista de agentes limitada a sesiones iniciadas bajo `<path>` |

500| `claude agents --json` | Imprimir sesiones activas como un array JSON y salir: cada sesión activa, más sesiones en segundo plano que aún están funcionando o bloqueadas incluso cuando su proceso ha salido. Agregue `--all` para incluir también sesiones en segundo plano completadas. Cada entrada tiene `cwd`, `kind` y `startedAt`. Las entradas en segundo plano también tienen `id`, utilizable con `claude attach`/`logs`/`stop`, y `state`: uno de `working`, `blocked`, `done`, `failed` o `stopped`. `pid` y `status` están presentes solo mientras el proceso está activo, más `waitingFor` cuando el estado es `waiting`, que indica en qué está bloqueada la sesión, como `permission prompt` o `input needed`; `sessionId` y `name` aparecen cuando están configurados. Combinar con `--cwd <path>` para filtrar |500| `claude agents --json` | Imprimir sesiones activas como un array JSON y salir: cada sesión activa, más sesiones en segundo plano que aún están funcionando o bloqueadas incluso cuando su proceso ha salido. Agregue `--all` para incluir también sesiones en segundo plano completadas. Cada entrada tiene `cwd`, `kind` y `startedAt`. Las entradas en segundo plano también tienen `id`, utilizable con `claude attach`/`logs`/`stop`, y `state`: uno de `working`, `blocked`, `done`, `failed` o `stopped`. `pid` y `status` están presentes solo mientras el proceso está activo, más `waitingFor` cuando el estado es `waiting`, que indica en qué está bloqueada la sesión, como `permission prompt` o `input needed`; `sessionId` y `name` aparecen cuando están configurados. Una entrada interactiva que nunca nombró lleva un nombre predeterminado construido a partir del nombre del directorio de trabajo más un sufijo de dos caracteres, como `my-app-3f`. Combinar con `--cwd <path>` para filtrar |

501| `claude attach <id>` | Conectarse a una sesión en esta terminal |501| `claude attach <id>` | Conectarse a una sesión en esta terminal |

502| `claude logs <id>` | Imprimir la salida reciente de la sesión |502| `claude logs <id>` | Imprimir la salida reciente de la sesión |

503| `claude stop <id>` | Detener una sesión. También acepta `claude kill` |503| `claude stop <id>` | Detener una sesión. También acepta `claude kill` |


523 523 

524El supervisor y sus sesiones se autentican con las mismas credenciales almacenadas que sus sesiones interactivas y no realizan conexiones de red adicionales más allá de la API del modelo. Las variables de selección de proveedor como `CLAUDE_CODE_USE_BEDROCK` y los alias `ANTHROPIC_DEFAULT_*_MODEL` se leen del shell que envió cada sesión y se aplican a su trabajador.524El supervisor y sus sesiones se autentican con las mismas credenciales almacenadas que sus sesiones interactivas y no realizan conexiones de red adicionales más allá de la API del modelo. Las variables de selección de proveedor como `CLAUDE_CODE_USE_BEDROCK` y los alias `ANTHROPIC_DEFAULT_*_MODEL` se leen del shell que envió cada sesión y se aplican a su trabajador.

525 525 

526{/* min-version: 2.1.174 */}Una sesión en segundo plano no hereda variables de punto final de puerta de enlace como `ANTHROPIC_BASE_URL`, las variables de URL base equivalentes de Bedrock, Vertex y Foundry, o un `ANTHROPIC_AUTH_TOKEN` emparejado del shell que inició el supervisor o del shell de envío. La sesión utiliza sus credenciales almacenadas y cualquier valor `env` en la [configuración](/es/settings) del directorio del proyecto en su lugar. Para apuntar sesiones en segundo plano en un proyecto a una [puerta de enlace LLM](/es/llm-gateway), establezca `ANTHROPIC_BASE_URL` en el bloque `env` de `settings.json` de ese proyecto en `.claude/` en lugar de exportarlo en su shell. Antes de v2.1.174, una sesión en segundo plano heredaba estas variables del shell de lanzamiento del supervisor, por lo que podría usar la puerta de enlace que había configurado en ese shell en lugar de la configurada para el directorio del proyecto.526Una sesión en segundo plano no hereda variables de punto final de puerta de enlace como `ANTHROPIC_BASE_URL`, las variables de URL base equivalentes de Bedrock, Vertex y Foundry, o un `ANTHROPIC_AUTH_TOKEN` emparejado del shell que inició el supervisor o del shell de envío. La sesión utiliza sus credenciales almacenadas y cualquier valor `env` en la [configuración](/es/settings) del directorio del proyecto en su lugar. Para apuntar sesiones en segundo plano en un proyecto a una [puerta de enlace LLM](/es/llm-gateway), establezca `ANTHROPIC_BASE_URL` en el bloque `env` de `settings.json` de ese proyecto en `.claude/` en lugar de exportarlo en su shell.

527 527 

528Cada sesión en segundo plano es su propio proceso de Claude Code, administrado por el supervisor en lugar de estar vinculado a su terminal. Una sesión que está funcionando activamente, esperando su entrada o tiene una terminal conectada mantiene su proceso ejecutándose. Un comando de shell en segundo plano en ejecución, subagente, flujo de trabajo dinámico o monitor cuenta como trabajo activo, por lo que un proceso de larga duración como un servidor de desarrollo mantiene la sesión activa.528Cada sesión en segundo plano es su propio proceso de Claude Code, administrado por el supervisor en lugar de estar vinculado a su terminal. Una sesión que está funcionando activamente, esperando su entrada o tiene una terminal conectada mantiene su proceso ejecutándose. Un comando de shell en segundo plano en ejecución, subagente, flujo de trabajo dinámico o monitor cuenta como trabajo activo, por lo que un proceso de larga duración como un servidor de desarrollo mantiene la sesión activa.

529 529 

530Una vez que una sesión finaliza y permanece sin conectar durante aproximadamente una hora, el supervisor detiene su proceso para liberar recursos. Una sesión que ha [fijado](#organize-the-list) con `Ctrl+T` está exenta y mantiene su proceso ejecutándose mientras está inactiva. La transcripción y el estado permanecen en el disco de cualquier forma, y la próxima vez que se conecte, eche un vistazo o responda a una sesión detenida, el supervisor inicia un proceso nuevo desde donde se quedó. Cuando cada sesión ha finalizado y no hay terminal conectada, el supervisor mismo sale e inicia nuevamente la próxima vez que lo necesite.530Una vez que una sesión finaliza y permanece sin conectar durante aproximadamente una hora, el supervisor detiene su proceso para liberar recursos. Una sesión que ha [fijado](#organize-the-list) con `Ctrl+T` está exenta y mantiene su proceso ejecutándose mientras está inactiva. La transcripción y el estado permanecen en el disco de cualquier forma, y la próxima vez que se conecte, eche un vistazo o responda a una sesión detenida, el supervisor inicia un proceso nuevo desde donde se quedó. Cuando cada sesión ha finalizado y no hay terminal conectada, el supervisor mismo sale e inicia nuevamente la próxima vez que lo necesite.

531 531 

532Los comandos shell en segundo plano y flujos de trabajo dinámicos que la sesión inició siguen ejecutándose cuando su proceso se detiene, se reinicia o se actualiza, incluso en Windows. El siguiente proceso iniciado para esa sesión los recoge, un comando shell que terminó en el ínterin se reporta como completado con su salida, y un flujo de trabajo se reanuda desde donde se quedó. Los comandos shell iniciados por un subagente y los [monitores](/es/tools-reference#monitor-tool) en ejecución aún se detienen con el proceso, y eliminar la sesión detiene todo lo que entregó. Para detener comandos shell en segundo plano y flujos de trabajo con el proceso también, establezca la variable de entorno [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/es/env-vars#variables) en `1`.

533 

534Si una sesión reiniciada vuelve mostrando solo su mensaje original porque Claude Code malinterpretó su transcripción como vacía, la transcripción de conversación se renombra con un sufijo `.orphaned-` en lugar de eliminarse, por lo que permanece en su máquina.

535 

532Una fila vacía dejada por presionar `←` que nunca recibió un mensaje se elimina completamente después de aproximadamente cinco minutos para que la lista se limpie por sí sola. Las sesiones iniciadas con `claude --bg` y las sesiones que esperan un mensaje de configuración como un diálogo de confianza no se eliminan de esta manera.536Una fila vacía dejada por presionar `←` que nunca recibió un mensaje se elimina completamente después de aproximadamente cinco minutos para que la lista se limpie por sí sola. Las sesiones iniciadas con `claude --bg` y las sesiones que esperan un mensaje de configuración como un diálogo de confianza no se eliminan de esta manera.

533 537 

534Cuando el host tiene poca memoria, el supervisor detiene primero las sesiones inactivas no fijadas y detiene las fijadas inactivas solo si eso no liberó nada.538Cuando el host tiene poca memoria, el supervisor detiene primero las sesiones inactivas no fijadas y detiene las fijadas inactivas solo si eso no liberó nada.


570 `claude agents` enumera subagentes en lugar de abrir la vista de agentes574 `claude agents` enumera subagentes en lugar de abrir la vista de agentes

571</h3>575</h3>

572 576 

573Si `claude agents` imprime un recuento seguido de sus subagentes configurados y luego sale, la vista de agentes no está disponible en su entorno. Las versiones anteriores no abrían la vista de agentes en todos los entornos, incluyendo cuando se conecta a través de Bedrock, Vertex AI o Foundry. Ejecute `claude update` para instalar la versión más reciente.577Si `claude agents` imprime un recuento seguido de sus subagentes configurados y luego sale, la vista de agentes no está disponible en su entorno. Ejecute `claude update` para instalar la versión más reciente.

574 578 

575Si la vista de agentes aún no se abre después de actualizar, verifique si ha sido [desactivada](#turn-off-agent-view) por una configuración o variable de entorno.579Si la vista de agentes aún no se abre después de actualizar, verifique si ha sido [desactivada](#turn-off-agent-view) por una configuración o variable de entorno.

576 580 


580 584 

581Antes de distribuir su primera sesión, la vista de agentes muestra una breve sugerencia de incorporación con mensajes de ejemplo en lugar de la lista de sesiones. Escriba un mensaje en la entrada en la parte inferior y presione `Enter` para distribuir su primera sesión.585Antes de distribuir su primera sesión, la vista de agentes muestra una breve sugerencia de incorporación con mensajes de ejemplo en lugar de la lista de sesiones. Escriba un mensaje en la entrada en la parte inferior y presione `Enter` para distribuir su primera sesión.

582 586 

583<h3 id="cannot-open-agents-because-work-is-running-in-the-background">587<h3 id="backgrounding-shows-a-background-this-session-dialog">

584 No se pueden abrir agentes porque hay trabajo en ejecución en segundo plano588 Backgrounding muestra un diálogo `Background this session?`

585</h3>589</h3>

586 590 

587Si presionar `←` para poner en segundo plano la sesión actual muestra `Cannot open agents — N still running in the background`, la sesión tiene trabajo en vuelo como un subagente, un flujo de trabajo dinámico o un comando de shell en segundo plano, y el atajo no lo abandonará silenciosamente. Ejecute `/tasks` para ver qué se está ejecutando, luego `/bg` para confirmar abandonarlos. Vea [Desde dentro de una sesión](#from-inside-a-session) para saber qué se transfiere y qué no cuando pone en segundo plano.591Si presionar `←` para enviar al segundo plano la sesión actual muestra un diálogo `Background this session?`, la sesión tiene trabajo en vuelo que no puede trasladarse a la sesión en segundo plano, como un [monitor](/es/tools-reference#monitor-tool) en ejecución, y Claude Code no lo detendrá silenciosamente. El diálogo nombra el trabajo que se detendrá y, por separado, cuenta las tareas que se trasladan. Ejecute `/tasks` para ver todo lo que se está ejecutando, luego confirme para enviar al segundo plano de todas formas o elija `Stay` para dejar que el trabajo termine primero. Consulte [Desde dentro de una sesión](#from-inside-a-session) para saber qué tipos de tareas se trasladan y cuáles se detienen.

588 592 

589<h3 id="prompt-rejected-as-too-short">593<h3 id="prompt-rejected-as-too-short">

590 Mensaje rechazado por ser demasiado corto594 Mensaje rechazado por ser demasiado corto


612 616 

613El nuevo supervisor se reconecta a las sesiones en ejecución. Sin `--keep-workers`, el comando también termina las sesiones en segundo plano. La bandera `--any` confirma que desea detener un supervisor que se inició bajo demanda en lugar de como un servicio instalado, que es el predeterminado.617El nuevo supervisor se reconecta a las sesiones en ejecución. Sin `--keep-workers`, el comando también termina las sesiones en segundo plano. La bandera `--any` confirma que desea detener un supervisor que se inició bajo demanda en lugar de como un servicio instalado, que es el predeterminado.

614 618 

619Un supervisor que se inicia pero no puede aceptar conexiones sale y libera su bloqueo por sí solo, por lo que el siguiente `claude agents` inicia uno nuevo sin este detención manual. Los pasos anteriores se aplican cuando un supervisor en ejecución se estanca.

620 

615En Windows, si el supervisor no responde a la solicitud de detención, el comando imprime su ID de proceso. Termine ese proceso con `taskkill /PID <pid>` para finalizar la recuperación. Las sesiones en segundo plano aún se conservan cuando pasó `--keep-workers`.621En Windows, si el supervisor no responde a la solicitud de detención, el comando imprime su ID de proceso. Termine ese proceso con `taskkill /PID <pid>` para finalizar la recuperación. Las sesiones en segundo plano aún se conservan cuando pasó `--keep-workers`.

616 622 

617<h3 id="dispatch-fails-with-could-not-resolve-authentication-method">623<h3 id="dispatch-fails-with-could-not-resolve-authentication-method">

618 La distribución falla con `Could not resolve authentication method`624 La distribución falla con `Could not resolve authentication method`

619</h3>625</h3>

620 626 

621{/* min-version: 2.1.174 */}Si una distribución en segundo plano falla con `Could not resolve authentication method` mientras las sesiones interactivas se autentican normalmente, el worker que recibió la distribución no recogió las credenciales. En v2.1.174 y posteriores, el supervisor proporciona una instantánea de credencial nueva cuando asigna un [worker precalentado](#the-supervisor-process), por lo que este error significa que no había credencial almacenada disponible para el proceso supervisor en sí. Confirme que ha ejecutado `/login` o ha configurado una clave API, luego detenga el supervisor:627Si una distribución en segundo plano falla con `Could not resolve authentication method` mientras las sesiones interactivas se autentican normalmente, el worker que recibió la distribución no recogió las credenciales. El supervisor proporciona una instantánea de credencial nueva cuando asigna un [worker precalentado](#the-supervisor-process), por lo que este error significa que no había credencial almacenada disponible para el proceso supervisor en sí. Confirme que ha ejecutado `/login` o ha configurado una clave API, luego detenga el supervisor:

622 628 

623```bash theme={null}629```bash theme={null}

624claude daemon stop --any --keep-workers630claude daemon stop --any --keep-workers


626 632 

627El siguiente `claude agents` o `claude --bg` inicia un supervisor nuevo que lee sus credenciales almacenadas. Si se autentica con una variable de entorno como `ANTHROPIC_API_KEY` en lugar de `/login`, ejecute ese comando siguiente desde un shell donde la variable esté configurada.633El siguiente `claude agents` o `claude --bg` inicia un supervisor nuevo que lee sus credenciales almacenadas. Si se autentica con una variable de entorno como `ANTHROPIC_API_KEY` en lugar de `/login`, ejecute ese comando siguiente desde un shell donde la variable esté configurada.

628 634 

629Vea la [referencia de errores](/es/errors#could-not-resolve-authentication-method) para la lista completa de causas y soluciones. Antes de v2.1.174, un worker precalentado que estaba inactivo podría mostrar este error cuando se le asignaba a una distribución incluso cuando sus credenciales eran válidas. Actualice para recuperarse.635Vea la [referencia de errores](/es/errors#could-not-resolve-authentication-method) para la lista completa de causas y soluciones.

630 636 

631<h3 id="background-sessions-cannot-read-desktop-documents-or-downloads-on-macos">637<h3 id="background-sessions-cannot-read-desktop-documents-or-downloads-on-macos">

632 Las sesiones en segundo plano no pueden leer Desktop, Documents o Downloads en macOS638 Las sesiones en segundo plano no pueden leer Desktop, Documents o Downloads en macOS


640 Una sesión es lenta para responder después de conectarse646 Una sesión es lenta para responder después de conectarse

641</h3>647</h3>

642 648 

643Una vez que una sesión ha terminado y se ha quedado sin conectar durante aproximadamente una hora, el supervisor detiene su proceso para liberar recursos. Conectarse inicia un proceso nuevo desde donde se quedó, lo que toma un momento. Las sesiones que están funcionando, esperando su entrada o [fijadas](#organize-the-list) no se detienen de esta manera, así que fije una sesión con `Ctrl+T` para mantenerla receptiva.649Una vez que una sesión ha terminado y se ha quedado sin conectar durante aproximadamente una hora, el supervisor detiene su proceso para liberar recursos. Conectarse inicia un proceso nuevo desde donde se quedó y cambia a la sesión inmediatamente mientras el proceso se reinicia. Las sesiones que están funcionando, esperando su entrada o [fijadas](#organize-the-list) no se detienen de esta manera, así que fije una sesión con `Ctrl+T` para mantenerla receptiva.

644 650 

645<h3 id="claude/worktrees/-is-filling-up">651<h3 id="claude/worktrees/-is-filling-up">

646 `.claude/worktrees/` se está llenando652 `.claude/worktrees/` se está llenando


667* [Ejecutar agentes en paralelo](/es/agents): compare la vista de agentes con subagentes, equipos de agentes y worktrees673* [Ejecutar agentes en paralelo](/es/agents): compare la vista de agentes con subagentes, equipos de agentes y worktrees

668* [Equipos de agentes](/es/agent-teams): coordine múltiples sesiones que se envíen mensajes entre sí674* [Equipos de agentes](/es/agent-teams): coordine múltiples sesiones que se envíen mensajes entre sí

669* [Claude Code en la web](/es/claude-code-on-the-web): ejecute sesiones en un entorno en la nube administrado en lugar de localmente675* [Claude Code en la web](/es/claude-code-on-the-web): ejecute sesiones en un entorno en la nube administrado en lugar de localmente

676 

677<h2 id="version-history">

678 Historial de versiones

679</h2>

680 

681La vista de agentes ha evolucionado rápidamente durante la vista previa de investigación. Si está en una versión anterior de Claude Code, algunos comportamientos en esta página pueden diferir; en particular, `claude agents` rechaza banderas que aún no admite con un error `unknown option`. La tabla a continuación enumera cuándo se agregó cada bandera y comportamiento.

682 

683| Versión | Cambio |

684| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

685| v2.1.196 | {/* min-version: 2.1.196 */}Un único presionar `←` envía al segundo plano una sesión en primer plano; las versiones anteriores requerían dos presiones, con una sugerencia de pie de página y una confirmación. `--dangerously-skip-permissions` pasado a `claude agents` muestra el descargo de responsabilidad de bypass en lugar de ser silenciosamente descartado. Las sesiones interactivas que nunca nombró llevan un nombre predeterminado como `my-app-3f` en listados de sesiones y `claude agents --json`. Los comandos shell en segundo plano y flujos de trabajo dinámicos sobreviven al proceso de la sesión siendo detenido, reiniciado o actualizado, incluso en Windows; establezca `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1` para desactivar la entrega. Una transcripción malinterpretada como vacía al reiniciar se renombra con un sufijo `.orphaned-` en lugar de eliminarse. |

686| v2.1.195 | {/* min-version: 2.1.195 */}El trabajo en vuelo se traslada cuando envía al segundo plano una sesión en Windows también; establezca `CLAUDE_DISABLE_ADOPT=1` para detenerlo en su lugar. El grupo `Completed` llena el espacio vertical restante y el encabezado se compacta en terminales cortas. Una versión anterior de Claude Code ya no descarta campos `state.json` más nuevos de sesiones o oculta esas sesiones de `claude agents`. Conectarse a una sesión detenida cambia inmediatamente en lugar de mostrar una pantalla en blanco durante hasta cinco segundos. Un supervisor que no puede aceptar conexiones sale y libera su bloqueo por sí solo. |

687| v2.1.174 | {/* min-version: 2.1.174 */}Las sesiones en segundo plano ya no heredan variables de punto final de puerta de enlace como `ANTHROPIC_BASE_URL` del shell de lanzamiento del supervisor; el supervisor proporciona una instantánea de credencial nueva a workers precalentados, corrigiendo errores espurios de `Could not resolve authentication method`. |

688| v2.1.172 | {/* min-version: 2.1.172 */}`/model` en la entrada de distribución establece una anulación de modelo de distribución con alcance de sesión. |

689| v2.1.161 | {/* min-version: 2.1.161 */}Los resúmenes de filas muestran un recuento `done/total` para elementos de trabajo paralelos; el panel de vista previa nombra el elemento de trabajo paralelo que más tiempo lleva ejecutándose. |

690| v2.1.157 | {/* min-version: 2.1.157 */}`claude agents` acepta `--agent`; las sesiones distribuidas honran la configuración `agent`. |

691| v2.1.145 | {/* min-version: 2.1.145 */}Dictado de voz compatible en la entrada de respuesta del panel de vista previa y la entrada de distribución. |

692| v2.1.143 | {/* min-version: 2.1.143 */}Se agregó la configuración `worktree.bgIsolation`; `claude agents` acepta `--allow-dangerously-skip-permissions`. |

693| v2.1.142 | {/* min-version: 2.1.142 */}`claude agents` acepta `--permission-mode`, `--model`, `--effort`, `--dangerously-skip-permissions`, `--settings`, `--add-dir`, `--plugin-dir`, `--mcp-config` y `--strict-mcp-config`. |

694| v2.1.141 | {/* min-version: 2.1.141 */}`claude agents` acepta `--cwd` para limitar la lista a un proyecto. |

695| v2.1.139 | {/* min-version: 2.1.139 */}La vista de agentes se introdujo como una vista previa de investigación. |

Details

397 Ventana de contexto de 1M de tokens397 Ventana de contexto de 1M de tokens

398</h2>398</h2>

399 399 

400Claude Opus 4.6 y posteriores, y Sonnet 4.6, admiten la [ventana de contexto de 1M de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) en Amazon Bedrock. Claude Code habilita automáticamente la ventana de contexto extendida cuando selecciona una variante de modelo de 1M.400Claude Sonnet 5, Opus 4.6 y posteriores, y Sonnet 4.6 admiten la [ventana de contexto de 1M de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) en Amazon Bedrock. Sonnet 5 se sirve a través del [punto de conexión Mantle](#use-the-mantle-endpoint) y siempre se ejecuta con la ventana de 1M, sin variante `[1m]` para seleccionar. Para los otros modelos, Claude Code habilita automáticamente la ventana de contexto extendida cuando selecciona una variante de modelo de 1M.

401 401 

402El [asistente de configuración](#sign-in-with-bedrock) ofrece una opción de contexto de 1M cuando fija modelos. Para habilitarlo para un modelo fijado manualmente en su lugar, agregue `[1m]` al ID del modelo. Vea [Fijar modelos para implementaciones de terceros](/es/model-config#pin-models-for-third-party-deployments) para detalles.402El [asistente de configuración](#sign-in-with-bedrock) ofrece una opción de contexto de 1M cuando fija modelos. Para habilitarlo para un modelo fijado manualmente en su lugar, agregue `[1m]` al ID del modelo. Vea [Fijar modelos para implementaciones de terceros](/es/model-config#pin-models-for-third-party-deployments) para detalles.

403 403 


458 Seleccionar un modelo de Mantle458 Seleccionar un modelo de Mantle

459</h3>459</h3>

460 460 

461Mantle utiliza IDs de modelo con prefijo `anthropic.` y sin sufijo de versión, por ejemplo `anthropic.claude-haiku-4-5`. Los modelos disponibles para su cuenta dependen de lo que su organización haya sido autorizada; los IDs de modelo adicionales se enumeran en sus materiales de incorporación de AWS. Póngase en contacto con su equipo de cuenta de AWS para solicitar acceso a modelos permitidos.461Mantle utiliza IDs de modelo con prefijo `anthropic.` y sin sufijo de versión, por ejemplo `anthropic.claude-sonnet-5` o `anthropic.claude-haiku-4-5`. Los modelos disponibles para su cuenta dependen de lo que su organización haya sido autorizada; los IDs de modelo adicionales se enumeran en sus materiales de incorporación de AWS. Póngase en contacto con su equipo de cuenta de AWS para solicitar acceso a modelos permitidos.

462 462 

463Establezca el modelo con la bandera `--model` o con `/model` dentro de Claude Code:463Establezca el modelo con la bandera `--model` o con `/model` dentro de Claude Code:

464 464 


542 542 

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

544 544 

545<h3 id="zero-token-counts-in-/context">

546 Recuentos de tokens cero en /context

547</h3>

548 

549El comando `/context` cuenta tokens para cada grupo de herramientas enviando los esquemas de herramientas a la API de conteo de tokens de Bedrock. {/* min-version: 2.1.196 */}En versiones de Claude Code anteriores a v2.1.196, Bedrock rechazó esa solicitud porque los esquemas llevaban campos que su API de conteo de tokens no acepta, por lo que cada grupo de herramientas mostraba 0 tokens. Otras filas en el desglose, como archivos de mensajes y memoria, no se ven afectadas.

550 

551Actualice a v2.1.196 o posterior.

552 

545<h3 id="mantle-endpoint-errors">553<h3 id="mantle-endpoint-errors">

546 Errores del punto final de Mantle554 Errores del punto final de Mantle

547</h3>555</h3>

Details

24* **Claude for Teams o Enterprise**: inicie sesión con la cuenta de Claude.ai que su administrador de equipo le invitó a usar.24* **Claude for Teams o Enterprise**: inicie sesión con la cuenta de Claude.ai que su administrador de equipo le invitó a usar.

25* **Claude Console**: inicie sesión con sus credenciales de Console. Su administrador debe haberle [invitado](#claude-console-authentication) primero.25* **Claude Console**: inicie sesión con sus credenciales de Console. Su administrador debe haberle [invitado](#claude-console-authentication) primero.

26* **Proveedores de nube**: si su organización usa [Amazon Bedrock](/es/amazon-bedrock), [Google Vertex AI](/es/google-vertex-ai) o [Microsoft Foundry](/es/microsoft-foundry), establezca las variables de entorno requeridas antes de ejecutar `claude`. No se necesita inicio de sesión en el navegador.26* **Proveedores de nube**: si su organización usa [Amazon Bedrock](/es/amazon-bedrock), [Google Vertex AI](/es/google-vertex-ai) o [Microsoft Foundry](/es/microsoft-foundry), establezca las variables de entorno requeridas antes de ejecutar `claude`. No se necesita inicio de sesión en el navegador.

27* **Puerta de enlace en la nube**: si su organización ejecuta una [puerta de enlace de aplicaciones Claude](/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.

27 28 

28Para cerrar sesión y volver a autenticarse, escriba `/logout` en el símbolo del sistema de Claude Code.29Para cerrar sesión y volver a autenticarse, escriba `/logout` en el símbolo del sistema de Claude Code.

29 30 


37 38 

38* [Claude for Teams o Enterprise](#claude-for-teams-or-enterprise), recomendado para la mayoría de los equipos39* [Claude for Teams o Enterprise](#claude-for-teams-or-enterprise), recomendado para la mayoría de los equipos

39* [Claude Console](#claude-console-authentication)40* [Claude Console](#claude-console-authentication)

41* [Puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway), una puerta de enlace autohospedada que inicia sesión a los desarrolladores con su IdP y enruta la inferencia al proveedor de nube que configure

40* [Amazon Bedrock](/es/amazon-bedrock)42* [Amazon Bedrock](/es/amazon-bedrock)

41* [Google Vertex AI](/es/google-vertex-ai)43* [Google Vertex AI](/es/google-vertex-ai)

42* [Microsoft Foundry](/es/microsoft-foundry)44* [Microsoft Foundry](/es/microsoft-foundry)


131 * 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.133 * 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.

132 * Si ha establecido la variable de entorno `CLAUDE_CONFIG_DIR` en Linux o Windows, el archivo `.credentials.json` se encuentra en ese directorio en su lugar.134 * Si ha establecido la variable de entorno `CLAUDE_CONFIG_DIR` en Linux o Windows, el archivo `.credentials.json` se encuentra en ese directorio en su lugar.

133 * 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`](/es/env-vars) en su lugar.135 * 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`](/es/env-vars) en su lugar.

134* **Tipos de autenticación admitidos**: credenciales de Claude.ai, credenciales de API de Claude, Azure Auth, Bedrock Auth y Vertex Auth.136* **Tipos de autenticación admitidos**: credenciales de Claude.ai, credenciales de API de Claude, Azure Auth, Bedrock Auth, Vertex Auth y tokens de sesión de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway).

135* **Scripts de credenciales personalizados**: la configuración [`apiKeyHelper`](/es/settings#available-settings) se puede configurar para ejecutar un script de shell que devuelva una clave API.137* **Scripts de credenciales personalizados**: la configuración [`apiKeyHelper`](/es/settings#available-settings) se puede configurar para ejecutar un script de shell que devuelva una clave API.

136* **Intervalos de actualización**: por defecto, `apiKeyHelper` se llama después de 5 minutos o en respuesta HTTP 401. Establezca la variable de entorno `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` para intervalos de actualización personalizados.138* **Intervalos de actualización**: por defecto, `apiKeyHelper` se llama después de 5 minutos o en respuesta HTTP 401. Establezca la variable de entorno `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` para intervalos de actualización personalizados.

137* **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.139* **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.


1515. Variable de entorno `CLAUDE_CODE_OAUTH_TOKEN`. Un token OAuth de larga duración generado por [`claude setup-token`](#generate-a-long-lived-token). Use esto para canalizaciones de CI y scripts donde el inicio de sesión del navegador no está disponible.1535. Variable de entorno `CLAUDE_CODE_OAUTH_TOKEN`. Un token OAuth de larga duración generado por [`claude setup-token`](#generate-a-long-lived-token). Use esto para canalizaciones de CI y scripts donde el inicio de sesión del navegador no está disponible.

1526. Credenciales OAuth de suscripción de `/login`. Este es el predeterminado para usuarios de Claude Pro, Max, Team y Enterprise.1546. Credenciales OAuth de suscripción de `/login`. Este es el predeterminado para usuarios de Claude Pro, Max, Team y Enterprise.

153 155 

156Una sesión de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada se encuentra fuera de esta lista: es una selección de proveedor como Bedrock o Vertex, y los supera. Cuando existe una sesión de puerta de enlace, la CLI se autentica con el token de puerta de enlace incluso si `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` o `CLAUDE_CODE_USE_FOUNDRY` está establecido, y las entradas de token de portador, clave API y `apiKeyHelper` anteriores no se utilizan.

157 

154Si tiene una suscripción activa de Claude pero también tiene `ANTHROPIC_API_KEY` establecido en su entorno, la clave API tiene precedencia una vez aprobada. Esto puede causar fallos de autenticación si la clave pertenece a una organización deshabilitada o expirada. Ejecute `unset ANTHROPIC_API_KEY` para volver a su suscripción y verifique `/status` para confirmar qué método está activo.158Si tiene una suscripción activa de Claude pero también tiene `ANTHROPIC_API_KEY` establecido en su entorno, la clave API tiene precedencia una vez aprobada. Esto puede causar fallos de autenticación si la clave pertenece a una organización deshabilitada o expirada. Ejecute `unset ANTHROPIC_API_KEY` para volver a su suscripción y verifique `/status` para confirmar qué método está activo.

155 159 

156[Claude Code en la Web](/es/claude-code-on-the-web) siempre usa sus credenciales de suscripción. `ANTHROPIC_API_KEY` y `ANTHROPIC_AUTH_TOKEN` en el entorno de sandbox no las anulan.160[Claude Code en la Web](/es/claude-code-on-the-web) siempre usa sus credenciales de suscripción. `ANTHROPIC_API_KEY` y `ANTHROPIC_AUTH_TOKEN` en el entorno de sandbox no las anulan.

Details

9[El modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode) permite que Claude Code se ejecute sin solicitudes de permiso rutinarias al enrutar llamadas de herramienta a través de un clasificador que bloquea cualquier cosa irreversible, destructiva o dirigida fuera de su entorno. Las reglas de denegación y solicitud explícita se evalúan antes del clasificador y aún bloquean o solicitan. Utilice el bloque de configuración `autoMode` para indicar a ese clasificador qué repositorios, buckets y dominios confía su organización, de modo que deje de bloquear operaciones internas rutinarias.9[El modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode) permite que Claude Code se ejecute sin solicitudes de permiso rutinarias al enrutar llamadas de herramienta a través de un clasificador que bloquea cualquier cosa irreversible, destructiva o dirigida fuera de su entorno. Las reglas de denegación y solicitud explícita se evalúan antes del clasificador y aún bloquean o solicitan. Utilice el bloque de configuración `autoMode` para indicar a ese clasificador qué repositorios, buckets y dominios confía su organización, de modo que deje de bloquear operaciones internas rutinarias.

10 10 

11<Note>11<Note>

12 El modo automático está disponible para todos los usuarios en la API de Anthropic. En Amazon Bedrock, Google Cloud Vertex AI y Microsoft Foundry, primero debe [establecer `CLAUDE_CODE_ENABLE_AUTO_MODE`](/es/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry). Si Claude Code informa que el modo automático no está disponible para su cuenta, consulte los [requisitos completos](/es/permission-modes#eliminate-prompts-with-auto-mode), que también cubren los modelos compatibles y la habilitación de administrador en los planes Team y Enterprise.12 El modo automático está disponible para todos los usuarios en la API de Anthropic. En Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry y sesiones de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada, primero debe [establecer `CLAUDE_CODE_ENABLE_AUTO_MODE`](/es/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry). Si Claude Code informa que el modo automático no está disponible para su cuenta, consulte los [requisitos completos](/es/permission-modes#eliminate-prompts-with-auto-mode), que también cubren los modelos compatibles y la habilitación de propietario en los planes Team y Enterprise.

13</Note>13</Note>

14 14 

15De forma predeterminada, el clasificador solo confía en el directorio de trabajo y en los remotos configurados del repositorio actual. Las acciones como enviar a la organización de control de código fuente de su empresa o escribir en un bucket de nube del equipo se bloquean hasta que las agregue a `autoMode.environment`.15De forma predeterminada, el clasificador solo confía en el directorio de trabajo y en los remotos configurados del repositorio actual. Las acciones como enviar a la organización de control de código fuente de su empresa o escribir en un bucket de nube del equipo se bloquean hasta que las agregue a `autoMode.environment`.


21* [Elegir dónde establecer reglas](#where-the-classifier-reads-configuration) en CLAUDE.md, configuración de usuario y configuración administrada21* [Elegir dónde establecer reglas](#where-the-classifier-reads-configuration) en CLAUDE.md, configuración de usuario y configuración administrada

22* [Definir infraestructura de confianza](#define-trusted-infrastructure) con `autoMode.environment`22* [Definir infraestructura de confianza](#define-trusted-infrastructure) con `autoMode.environment`

23* [Anular las reglas de bloqueo y permiso](#override-the-block-and-allow-rules) cuando los valores predeterminados no se ajustan a su canalización23* [Anular las reglas de bloqueo y permiso](#override-the-block-and-allow-rules) cuando los valores predeterminados no se ajustan a su canalización

24* [Enrutar todos los comandos de shell a través del clasificador](#route-all-shell-commands-through-the-classifier) con `autoMode.classifyAllShell`

24* [Inspeccionar su configuración efectiva](#inspect-the-defaults-and-your-effective-config) con los subcomandos `claude auto-mode`25* [Inspeccionar su configuración efectiva](#inspect-the-defaults-and-your-effective-config) con los subcomandos `claude auto-mode`

25* [Revisar denegaciones](#review-denials) para saber qué agregar a continuación26* [Revisar denegaciones](#review-denials) para saber qué agregar a continuación

26 27 


53 54 

54Para la mayoría de las organizaciones, `autoMode.environment` es el único campo que necesita establecer. Indica al clasificador qué repositorios, buckets y dominios son de confianza: el clasificador lo utiliza para decidir qué significa "externo", por lo que cualquier destino no listado es un objetivo potencial de exfiltración.55Para la mayoría de las organizaciones, `autoMode.environment` es el único campo que necesita establecer. Indica al clasificador qué repositorios, buckets y dominios son de confianza: el clasificador lo utiliza para decidir qué significa "externo", por lo que cualquier destino no listado es un objetivo potencial de exfiltración.

55 56 

56La lista de entorno predeterminada confía en el repositorio de trabajo y sus remotos configurados. Para agregar sus propias entradas junto con ese valor predeterminado, incluya la cadena literal `"$defaults"` en la matriz. Las entradas predeterminadas se insertan en esa posición, por lo que sus entradas personalizadas pueden ir antes o después de ellas.57A partir de Claude Code v2.1.195, `claude auto-mode defaults` imprime dos tipos de entrada de entorno.

58 

59* **Espacios de confianza**: nombran lo que el clasificador trata como dentro de su límite. Los espacios son Repositorio de confianza, Control de código fuente, Dominios internos de confianza, Buckets de nube de confianza, Servicios internos clave y Registro de paquetes interno. Las entradas de repositorio y control de código fuente se establecen de forma predeterminada en el repositorio de trabajo y sus remotos configurados. Todos los demás espacios de confianza se establecen de forma predeterminada en `None configured`, por lo que nada más es de confianza hasta que lo agregue.

60* **Espacios de sensibilidad**: nombran lo que las reglas de protección tratan como de alto riesgo. Los espacios son Ubicaciones de PII / datos regulados, Objetivos remotos sensibles y Ámbitos de IaC protegidos. Cada uno se establece de forma predeterminada en una heurística amplia, como tratar cualquier host o espacio de nombres cuyo nombre lleve `prod` o `production` como un objetivo remoto sensible, por lo que las reglas de protección están activas antes de que configure nada. Nombrar objetivos concretos en un espacio de sensibilidad hace que esas reglas se apliquen a los objetivos nombrados en lugar de la heurística.

61 

62Las versiones anteriores a v2.1.195 imprimen solo los primeros cinco espacios de confianza.

63 

64Para agregar sus propias entradas junto con los valores predeterminados, incluya la cadena literal `"$defaults"` en la matriz. Las entradas predeterminadas se insertan en esa posición, por lo que sus entradas personalizadas pueden ir antes o después de ellas.

65 

66El siguiente ejemplo mantiene las entradas predeterminadas y agrega repositorios, buckets, dominios y servicios de una organización.

57 67 

58```json theme={null}68```json theme={null}

59{69{


76* **Proveedores de nube y buckets de confianza**: nombres de buckets o prefijos que Claude debería poder leer y escribir86* **Proveedores de nube y buckets de confianza**: nombres de buckets o prefijos que Claude debería poder leer y escribir

77* **Dominios internos de confianza**: nombres de host para API, paneles y servicios dentro de su red, como `*.internal.example.com`87* **Dominios internos de confianza**: nombres de host para API, paneles y servicios dentro de su red, como `*.internal.example.com`

78* **Servicios internos clave**: CI, registros de artefactos, índices de paquetes internos, herramientas de incidentes88* **Servicios internos clave**: CI, registros de artefactos, índices de paquetes internos, herramientas de incidentes

89* **Registro de paquetes interno**: el registro npm, PyPI u otro privado a través del cual deben enrutarse las instalaciones, de modo que las instalaciones que lo omitan para un registro público se bloqueen

90* **Ubicaciones de PII / datos regulados**: los buckets, bases de datos o rutas que contienen datos personales o regulados, de modo que el clasificador proteja esas ubicaciones en lugar de adivinar por el contenido

91* **Objetivos remotos sensibles**: los espacios de nombres, hosts o contenedores que cuentan como producción, de modo que los shells remotos y los reenvíos de puertos hacia ellos necesiten su aprobación explícita

92* **Ámbitos de IaC protegidos**: los recursos de infraestructura cuya aplicación o destrucción siempre debe requerir que nombre el cambio

79* **Contexto adicional**: restricciones de industria regulada, infraestructura multiinquilino o requisitos de cumplimiento que afecten lo que el clasificador debe tratar como riesgoso93* **Contexto adicional**: restricciones de industria regulada, infraestructura multiinquilino o requisitos de cumplimiento que afecten lo que el clasificador debe tratar como riesgoso

80 94 

95Las entradas de Registro de paquetes interno, Ubicaciones de PII / datos regulados, Objetivos remotos sensibles y Ámbitos de IaC protegidos requieren Claude Code v2.1.195 o posterior. Las versiones anteriores aún las leen como contexto simple pero no tienen las reglas integradas que las dirigen.

96 

81Una plantilla de inicio útil: complete los campos entre corchetes y elimine las líneas que no se apliquen.97Una plantilla de inicio útil: complete los campos entre corchetes y elimine las líneas que no se apliquen.

82 98 

83```json theme={null}99```json theme={null}


105 Anular las reglas de bloqueo y permiso121 Anular las reglas de bloqueo y permiso

106</h2>122</h2>

107 123 

108Tres campos adicionales le permiten reemplazar las listas de reglas integradas del clasificador: `autoMode.hard_deny` para límites de seguridad incondicionales, `autoMode.soft_deny` para acciones destructivas que la intención del usuario puede anular, y `autoMode.allow` para excepciones. Cada uno es una matriz de descripciones en prosa, leídas como reglas en lenguaje natural. Para bloqueos basados en patrones de herramientas que se ejecutan antes del clasificador, utilice [`permissions.deny`](/es/permissions).124Tres campos adicionales le permiten reemplazar las listas de reglas integradas del clasificador:

125 

126* `autoMode.hard_deny`: límites de seguridad incondicionales

127* `autoMode.soft_deny`: acciones destructivas que la intención del usuario puede anular

128* `autoMode.allow`: excepciones a las reglas de bloqueo suave

129 

130Cada uno es una matriz de descripciones en prosa, leídas como reglas en lenguaje natural. Para bloqueos basados en patrones de herramientas que se ejecutan antes del clasificador, utilice [`permissions.deny`](/es/permissions).

109 131 

110Dentro del clasificador, la precedencia funciona en cuatro niveles:132Dentro del clasificador, la precedencia funciona en cuatro niveles:

111 133 


120 142 

121Para mantener las reglas integradas mientras agrega las suyas propias, incluya la cadena literal `"$defaults"` en la matriz. Las reglas predeterminadas se insertan en esa posición, por lo que sus reglas personalizadas pueden ir antes o después de ellas, y continúa heredando actualizaciones a medida que la lista integrada cambia en las versiones.143Para mantener las reglas integradas mientras agrega las suyas propias, incluya la cadena literal `"$defaults"` en la matriz. Las reglas predeterminadas se insertan en esa posición, por lo que sus reglas personalizadas pueden ir antes o después de ellas, y continúa heredando actualizaciones a medida que la lista integrada cambia en las versiones.

122 144 

145El siguiente ejemplo mantiene los valores predeterminados en las cuatro listas y agrega reglas específicas de la organización a cada una.

146 

123```json theme={null}147```json theme={null}

124{148{

125 "autoMode": {149 "autoMode": {


151 175 

152Cada sección se evalúa de forma independiente, por lo que establecer `environment` solo deja intactas las listas predeterminadas `allow`, `soft_deny` y `hard_deny`. Solo omita `"$defaults"` cuando tenga la intención de asumir la propiedad completa de la lista. Para hacerlo de forma segura, ejecute `claude auto-mode defaults` para imprimir las reglas integradas, cópielas en su archivo de configuración, luego revise cada regla contra su propia canalización y tolerancia al riesgo.176Cada sección se evalúa de forma independiente, por lo que establecer `environment` solo deja intactas las listas predeterminadas `allow`, `soft_deny` y `hard_deny`. Solo omita `"$defaults"` cuando tenga la intención de asumir la propiedad completa de la lista. Para hacerlo de forma segura, ejecute `claude auto-mode defaults` para imprimir las reglas integradas, cópielas en su archivo de configuración, luego revise cada regla contra su propia canalización y tolerancia al riesgo.

153 177 

178<h2 id="route-all-shell-commands-through-the-classifier">

179 Enrutar todos los comandos de shell a través del clasificador

180</h2>

181 

182De forma predeterminada, las reglas de permiso estrechas de Bash y PowerShell como `Bash(npm test)` se trasladan al modo automático y se resuelven antes de que se ejecute el clasificador. El modo automático suspende solo las reglas amplias que otorgan ejecución de código arbitrario, como `Bash(*)` o intérpretes con caracteres comodín. 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ó.

183 

184Establezca `autoMode.classifyAllShell` en `true` para suspender todas las reglas 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.

185 

186```json theme={null}

187{

188 "autoMode": {

189 "classifyAllShell": true

190 }

191}

192```

193 

194Esto intercambia latencia por cobertura: un comando que una regla de permiso habría aprobado instantáneamente ahora espera una decisión del clasificador, y cada comando de shell cuenta como una llamada del clasificador.

195 

196La configuración se aplica solo mientras el modo automático está activo, y sus reglas de permiso se comportan normalmente en otros modos de permiso.

197 

198<Note>

199 `autoMode.classifyAllShell` requiere Claude Code v2.1.193 o posterior. Las versiones anteriores ignoran la clave y continúan trasladando reglas de permiso de shell estrechas al modo automático.

200</Note>

201 

154<h2 id="inspect-the-defaults-and-your-effective-config">202<h2 id="inspect-the-defaults-and-your-effective-config">

155 Inspeccione los valores predeterminados y su configuración efectiva203 Inspeccione los valores predeterminados y su configuración efectiva

156</h2>204</h2>


175claude auto-mode critique223claude auto-mode critique

176```224```

177 225 

178Ejecute `claude auto-mode config` después de guardar su configuración para confirmar que las reglas efectivas son las que espera, con `"$defaults"` expandido en su lugar. Si ha escrito reglas personalizadas, `claude auto-mode critique` las revisa y marca entradas que son ambiguas, redundantes o probables que causen falsos positivos. Si necesita eliminar o reescribir una regla integrada en lugar de agregar una junto a ella, guarde la salida de `claude auto-mode defaults` en un archivo, edite las listas y pegue el resultado en su archivo de configuración en lugar de `"$defaults"`.226Ejecute `claude auto-mode config` después de guardar su configuración para confirmar que las reglas efectivas son las que espera, con `"$defaults"` expandido en su lugar. Si ha escrito reglas personalizadas, `claude auto-mode critique` las revisa y marca entradas que son ambiguas, redundantes o probables que causen falsos positivos.

227 

228Si necesita eliminar o reescribir una regla integrada en lugar de agregar una junto a ella, guarde la salida de `claude auto-mode defaults` en un archivo, edite las listas y pegue el resultado en su archivo de configuración en lugar de `"$defaults"`.

179 229 

180<h2 id="review-denials">230<h2 id="review-denials">

181 Review denials231 Revisar denegaciones

182</h2>232</h2>

183 233 

184Cuando el modo automático deniega una llamada de herramienta, la denegación se registra en `/permissions` bajo la pestaña Denegados recientemente. Presione `r` en una acción denegada para marcarla para reintentar: cuando salga del diálogo, Claude Code envía un mensaje indicando al modelo que puede reintentar esa llamada de herramienta y reanuda la conversación.234Cuando el modo automático deniega una llamada de herramienta, la denegación se registra en `/permissions` bajo la pestaña Denegados recientemente. Presione `r` en una acción denegada para marcarla para reintentar: cuando salga del diálogo, Claude Code envía un mensaje indicando al modelo que puede reintentar esa llamada de herramienta y reanuda la conversación.

185 235 

236En Claude Code v2.1.193 y posterior, la razón del clasificador para cada denegación aparece junto a la llamada de herramienta bloqueada en la transcripción, en la notificación de denegación y bajo cada entrada en la pestaña Denegados recientemente. Utilice la razón para decidir si la solución es una entrada `environment`, una excepción `allow` o reintentar con intención explícita en su próximo mensaje.

237 

186Las denegaciones repetidas para el mismo destino generalmente significan que el clasificador carece de contexto. Agregue ese destino a `autoMode.environment`, luego ejecute `claude auto-mode config` para confirmar que surtió efecto.238Las denegaciones repetidas para el mismo destino generalmente significan que el clasificador carece de contexto. Agregue ese destino a `autoMode.environment`, luego ejecute `claude auto-mode config` para confirmar que surtió efecto.

187 239 

188Para reaccionar a las denegaciones mediante programación, utilice el [hook `PermissionDenied`](/es/hooks#permissiondenied).240Para reaccionar a las denegaciones mediante programación, utilice el [hook `PermissionDenied`](/es/hooks#permissiondenied).

claude-apps-gateway-config.md +749 −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# Configuración de la puerta de enlace de aplicaciones Claude

6 

7> Referencia para cada opción de gateway.yaml: listener y TLS, OIDC, sesión, almacén Postgres, upstream de Bedrock/Agent Platform/Foundry, enrutamiento de modelos, políticas administradas y telemetría.

8 

9Una implementación de la puerta de enlace de aplicaciones Claude se configura mediante un archivo YAML, convencionalmente `gateway.yaml`. El archivo define todo lo que hace la puerta de enlace: dónde escucha, cómo inician sesión los desarrolladores, dónde va la inferencia y qué políticas y telemetría se aplican. Esta página es la referencia para cada opción en ese archivo. Para escribir el primero, comience desde el [inicio rápido](/es/claude-apps-gateway#quickstart), que construye una configuración mínima funcional y la ejecuta; una vez que tenga una configuración con la que esté satisfecho, la [guía de implementación](/es/claude-apps-gateway-deploy) cubre la containerización y el alojamiento en Kubernetes, Cloud Run o su propia plataforma.

10 

11La puerta de enlace lee el archivo una vez, al iniciar, con `claude gateway --config /path/to/gateway.yaml`. Cada opción se valida contra un esquema al arrancar, por lo que una configuración mal formada falla al iniciar con un error a nivel de campo en lugar de en el primer uso.

12 

13El [ejemplo completo](#complete-example) al final de esta página ejercita cada sección.

14 

15<h2 id="file-structure">

16 Estructura del archivo

17</h2>

18 

19Cinco secciones son [requeridas](#required-sections). Todas las demás secciones son [opcionales](#optional-sections), y una sección omitida toma sus valores predeterminados. Las claves desconocidas fallan al arrancar, por lo que un error tipográfico aparece como un error nombrado en lugar de una configuración silenciosamente ignorada.

20 

21**Secciones requeridas:**

22 

23* [`listen`](#listen): dirección de enlace, URL pública, terminación TLS

24* [`oidc`](#oidc): su proveedor de identidad (IdP), incluido emisor, cliente, mapeo de reclamaciones y quién puede iniciar sesión

25* [`session`](#session): los tokens portadores que emite la puerta de enlace, con secreto y duración

26* [`store`](#store): PostgreSQL, para concesiones de dispositivos y contadores de límite de velocidad

27* [`upstreams`](#upstreams): dónde va la inferencia, ya sea Anthropic, Bedrock, Agent Platform o Foundry

28 

29**Secciones opcionales:**

30 

31* [`admin`](#admin): autenticación de API de administración y retención de límites de gasto

32* [`enforcement`](#enforcement): comportamiento de límite de gasto de fallo abierto o fallo cerrado

33* [`models`](#models) y `auto_include_builtin_models`: lista de modelos curada por administrador e IDs por upstream

34* [`managed`](#managed): políticas de configuración administradas por grupo de IdP

35* [`telemetry`](#telemetry): reenvío OTLP a su pila de observabilidad

36* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning): permitir/denegar IP, límites de tamaño de solicitud, tiempo hasta el primer byte del upstream y límites de inicio de sesión por IP

37 

38<h2 id="secret-expansion">

39 Expansión de secretos

40</h2>

41 

42No escriba secretos como `client_secret`, `jwt_secret` o `postgres_url` directamente en `gateway.yaml`. Haga referencia a ellos con uno de los formularios a continuación, y la puerta de enlace resuelve el valor al arrancar desde una variable de entorno o un archivo:

43 

44| Formulario | Se resuelve a | Usar para |

45| --------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------- |

46| `${VAR}` | La variable de entorno `VAR`. El arranque falla si no está definida. | Variables de entorno de contenedor, AWS Secrets Manager mediante inyección de env |

47| `${file:/path}` | Contenido del archivo, recortado | Montajes de volumen de secreto de Kubernetes, Vault Agent, SOPS |

48 

49<h2 id="required-sections">

50 Secciones requeridas

51</h2>

52 

53<h3 id="listen">

54 `listen`

55</h3>

56 

57El bloque `listen` controla dónde sirve la puerta de enlace: la dirección de enlace y puerto, el origen visible externamente y la terminación TLS opcional.

58 

59| Campo | Requerido | Descripción |

60| ---------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

61| `host` | No | Dirección de enlace. Predeterminado `0.0.0.0`. |

62| `port` | No | Puerto de enlace. Predeterminado `8080`. |

63| `public_url` | Detrás de un proxy | El origen `https://` visible externamente, utilizado para construir el `redirect_uri` de IdP y metadatos de descubrimiento. Requerido detrás de cualquier proxy que termine TLS como ALB, Ingress o Cloud Run, porque la puerta de enlace no confía en los encabezados `X-Forwarded-*` al construir su propio origen; son suplantables por el cliente. `trusted_proxies` a continuación rige solo la resolución de IP del cliente. También es necesario para habilitar [telemetría](#telemetry), porque la puerta de enlace construye el punto final OTLP que envía a los clientes desde esta URL. |

64| `tls.cert` / `tls.key` | No | Rutas PEM si la puerta de enlace termina TLS por sí misma |

65| `trusted_proxies` | No | CIDR o IPs de equilibradores de carga frente a la puerta de enlace. Cuando se establece, la puerta de enlace confía en `X-Forwarded-For` solo desde estos pares y registra la IP del cliente real para límites de velocidad por IP y auditoría. Equivalente a nginx `set_real_ip_from`. |

66 

67<h3 id="oidc">

68 `oidc`

69</h3>

70 

71OpenID Connect (OIDC) es el protocolo SSO que la puerta de enlace utiliza con su proveedor de identidad; consulte [Configuración del proveedor de identidad](/es/claude-apps-gateway-deploy#identity-provider-setup) para saber qué registrar en el lado de IdP. El bloque `oidc` conecta la puerta de enlace a su proveedor de identidad y decide quién puede iniciar sesión. Nombra el emisor y cliente OAuth, mapea las reclamaciones que llevan correo electrónico y grupos, y restringe el inicio de sesión por dominio de correo electrónico o grupo.

72 

73| Campo | Requerido | Descripción |

74| ------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

75| `issuer` | Sí | Base de descubrimiento OIDC. Debe servir descubrimiento en `/.well-known/openid-configuration`. Use HTTPS en producción; la puerta de enlace acepta un emisor `http://`. Un emisor de bucle local como `http://localhost:8081` es rechazado por la [protección SSRF](/es/claude-apps-gateway-deploy#threat-model-summary) a menos que `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` esté establecido en el entorno de la puerta de enlace. |

76| `client_id` / `client_secret` | Sí | De su registro de cliente OAuth |

77| `allowed_email_domains` | No | Rechace id\_tokens cuya reclamación `email` no esté en uno de estos dominios, sin distinción de mayúsculas y minúsculas. Defensa en profundidad contra configuración errónea de IdP multiinquilino. Independientemente de esta configuración, un id\_token cuya reclamación `email_verified` es explícitamente `false` siempre se rechaza. |

78| `allowed_groups` | No | Restrinja el inicio de sesión a miembros de estos grupos de IdP, comparados contra `groups_claim`. Un usuario en un dominio de correo electrónico permitido pero en ninguno de estos grupos es rechazado. Requiere que IdP emita la reclamación de grupos. |

79| `groups_claim` | No | Qué reclamación de id\_token lleva la membresía del grupo. Predeterminado `groups`. Microsoft Entra emite roles de aplicación bajo `roles`. Acepta una clave plana o un puntero JSON RFC 6901 como `/resource_access/gateway/roles` para reclamaciones anidadas. |

80| `google_groups` | No | Busque los grupos del usuario que inició sesión a través de la API del Directorio del SDK de administración de Google Workspace, porque el id\_token de Google no lleva reclamación de grupos. Establezca `service_account_json_path` en un archivo de clave de cuenta de servicio con delegación en todo el dominio en el alcance `https://www.googleapis.com/auth/admin.directory.group.readonly`, y `admin_email` en un administrador de Workspace que la cuenta de servicio suplanta; la API del Directorio requiere un asunto administrador real. Las direcciones de correo electrónico del grupo de cada usuario se convierten en su reclamación de grupos, por lo que `allowed_groups` y `managed.policies.match.groups` coinciden en correos electrónicos de grupo. |

81| `email_claim` | No | Qué reclamación de id\_token lleva el correo electrónico del usuario. Predeterminado `email`. Algunos IdP, como ADFS y Entra B2C, emiten `upn` o `preferred_username` en su lugar. Acepta una clave plana, un puntero JSON o una lista de claves de respaldo donde se utiliza la primera clave presente. |

82| `scopes` | No | Anulación completa de los alcances OIDC que solicita la puerta de enlace. Predeterminado `[openid, profile, email, offline_access]`. Establezca cuando su IdP rechace alcances que no reconoce, o requiera un alcance personalizado para emitir grupos o correo electrónico. Debe incluir `openid`. Soltar `offline_access` desactiva los tokens de actualización, por lo que los desarrolladores vuelven a ejecutar el inicio de sesión del navegador cada `session.ttl_hours`. Consulte [Configuración del proveedor de identidad](/es/claude-apps-gateway-deploy#identity-provider-setup) para recetas de alcance por IdP como el flujo de token de actualización de Google. |

83| `extra_auth_params` | No | Parámetros de consulta adicionales añadidos a la solicitud de autorización de IdP, textualmente. Este es el mecanismo de anulación para comportamiento específico de IdP, como `access_type: offline` para tokens de actualización de Google, `domain_hint` para algunos inquilinos de Entra, o `acr_values` para flujos de escalada. No puede anular los parámetros de protocolo administrados por la puerta de enlace: `state`, `nonce`, `redirect_uri`, PKCE, `scope`, `response_type`, `response_mode` y `client_id`. |

84| `userinfo_fallback` | No | Cuando el id\_token omite correo electrónico o grupos, búsquelos en `/userinfo`. Necesario para tokens de acceso ligeros de Keycloak, el servidor org de Okta y tokens mínimos de ADFS. El id\_token sigue siendo autoritario; userinfo solo llena vacíos. Predeterminado `false`. |

85| `use_pkce` | No | Envíe un desafío PKCE (S256) en la solicitud de autorización. Predeterminado `true`. Establezca `false` solo si su IdP rechaza PKCE para este cliente confidencial. |

86| `clock_skew_seconds` | No | Tolere la desviación del reloj al validar reclamaciones de tiempo de id\_token. Predeterminado `0`, que es estricto. Aumente si ve errores "token expirado / aún no válido" justo después del inicio de sesión debido a desviación del reloj de host/IdP. |

87| `token_endpoint_auth_method` | No | Anule el método de autenticación del punto final del token. Acepta `client_secret_basic` o `client_secret_post`. Negociado automáticamente de forma predeterminada. |

88| `id_token_signed_response_alg` | No | Algoritmo de firma de id\_token esperado. Predeterminado `RS256`. Establezca para IdP que firman con ES256, PS256 o EdDSA. |

89| `additional_authorized_parties` | No | Valores `azp` adicionales para aceptar más allá de `client_id`, para flujos de intermediario de Keycloak e intercambio de tokens |

90| `discovery_url` | No | Busque el documento de descubrimiento desde esta URL en lugar de derivarlo de `issuer`, para IdP detrás de un proxy que reescribe el host del emisor. La ruta debe contener `/.well-known/`. |

91| `form_action_origins` | No | Orígenes adicionales para la directiva `Content-Security-Policy: form-action` de la página `/device`. La puerta de enlace ya permite `'self'` y el origen `authorization_endpoint` descubierto, pero Chrome aplica `form-action` contra toda la cadena de redirección. Si su IdP redirige a través de un segundo host, como Azure AD federado a ADFS, Okta de concentrador y radio, o un interceptor SSO corporativo, enumere cada origen por el que la solicitud de autorización puede redirigir. |

92| `ca_cert_pem` | No | Certificado CA PEM que reemplaza el almacén de confianza del sistema solo para solicitudes de IdP. Úselo para Keycloak o Dex detrás de PKI corporativa. |

93 

94<h3 id="session">

95 `session`

96</h3>

97 

98El bloque `session` forma los tokens portadores que emite la puerta de enlace después del inicio de sesión: el secreto que los firma y cuánto tiempo viven.

99 

100| Campo | Requerido | Descripción |

101| ------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| `jwt_secret` | Sí | Al menos 32 bytes de entropía, por ejemplo de `openssl rand -base64 32`. Firma los tokens portadores HS256 de la puerta de enlace. Acepta una cadena única o una matriz para rotación: el índice 0 firma y todas las entradas verifican. Para rotar, anteponga un nuevo secreto, espere `ttl_hours`, luego suelte el antiguo. |

103| `ttl_hours` | No | Duración del token portador de la puerta de enlace. Predeterminado `1`. El CLI se actualiza silenciosamente antes de la expiración cuando IdP emite tokens de actualización. Una duración más corta desactiva más rápido; una más larga hace menos viajes de IdP. Si su IdP no puede emitir tokens de actualización porque `offline_access` no está disponible, no hay actualización silenciosa, así que aumente esto a `8` o `12` para evitar enviar desarrolladores de vuelta al inicio de sesión del navegador cada hora. |

104 

105<h3 id="store">

106 `store`

107</h3>

108 

109El bloque `store` apunta la puerta de enlace a su base de datos PostgreSQL, que contiene concesiones de dispositivos y contadores de límite de velocidad.

110 

111| Campo | Requerido | Descripción |

112| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

113| `postgres_url` | Sí | URL `postgres://` o `postgresql://`. Requerido: el encuentro de concesión de dispositivo, donde la devolución del navegador escribe y el CLI de sondeo lee, necesita estado entre réplicas. La puerta de enlace ejecuta sus propias migraciones de esquema al arrancar, por lo que el rol necesita `CREATE TABLE` en el esquema de destino. Si su política de seguridad prohíbe DDL desde el rol de aplicación, ejecute las migraciones con un rol de administrador, inicialmente y nuevamente cada vez que una nueva versión envíe migraciones, y otorgue al rol de aplicación `SELECT, INSERT, UPDATE, DELETE` en las tablas de la puerta de enlace. Consulte [Actualizaciones](/es/claude-apps-gateway-deploy#upgrades) y [Postgres](/es/claude-apps-gateway-deploy#postgres). |

114| `username` | No | Anula el usuario en `postgres_url` |

115| `password` | No | Credencial de base de datos. Establézcalo aquí en lugar de en `postgres_url` para que la credencial se mantenga fuera de la URL. Acepta cualquier carácter y tiene prioridad sobre las credenciales de URL. |

116| `max_connections` | No | Tamaño del grupo de conexiones de Postgres por réplica. Predeterminado `5`, que es conservador y amigable con bases de datos compartidas. Con [límites de gasto](#admin) habilitados, la ruta activa realiza algunas operaciones por solicitud de inferencia, así que aumente para una base de datos dedicada bajo carga, y mantenga réplicas × esto por debajo de `max_connections` de la base de datos. |

117 

118Para desarrollo local, apunte `postgres_url` a un contenedor Postgres desechable, por ejemplo `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`.

119 

120<h3 id="upstreams">

121 `upstreams`

122</h3>

123 

124`upstreams` es una lista ordenada. La puerta de enlace reenvía la inferencia al primer upstream que resuelve el modelo solicitado. En `5xx`, `429` o tiempo de espera, falla al siguiente; otros `4xx` no, porque esos errores son atribuibles a la solicitud en lugar del upstream. Múltiples upstreams del mismo proveedor deben establecer un `name:` distinto.

125 

126Los clientes de Bedrock, Agent Platform y Foundry se construyen una vez al iniciar, y sus SDK actualizan credenciales internamente, por lo que rotar credenciales en la nube no requiere un reinicio. Las claves API estáticas de Anthropic y los portadores se leen al iniciar; consulte [API de Anthropic](#anthropic-api).

127 

128<h4 id="anthropic-api">

129 API de Anthropic

130</h4>

131 

132El upstream mínimo de Anthropic es una clave API de la [Consola Claude](https://platform.claude.com):

133 

134```yaml theme={null}

135upstreams:

136 - provider: anthropic

137 auth:

138 api_key: ${ANTHROPIC_API_KEY}

139 # O un portador OAuth (p. ej., un token intercambiado por Workload-Identity-Federation):

140 # oauth_token: ${file:/var/run/secrets/anthropic-oauth-token}

141 # base_url: https://api.anthropic.com # predeterminado; anule para un proxy directo

142```

143 

144Las dos formas de credencial difieren en el encabezado que envían:

145 

146* **`api_key`**: envía `x-api-key`. Rótelo en la Consola Claude y actualice la variable env.

147* **`oauth_token`**: envía `Authorization: Bearer`. Use la forma de portador cuando su organización emita tokens de corta duración en lugar de claves API de larga duración. El portador se lee una vez al iniciar, así que actualice remontando el secreto e reiniciando.

148 

149En lugar de una clave estática o portador, puede usar Workload Identity Federation. Cree una regla de federación siguiendo la [guía de Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation), luego monte el JWT de OIDC de su carga de trabajo como un archivo, como un token de cuenta de servicio proyectado de Kubernetes o un id-token de plataforma de CI. La puerta de enlace intercambia el JWT por un portador de corta duración y lo actualiza automáticamente. El archivo de token se relee en cada intercambio, por lo que los tokens proyectados rotados se recogen sin un reinicio.

150 

151```yaml theme={null}

152upstreams:

153 - provider: anthropic

154 auth:

155 federation_rule_id: ${ANTHROPIC_FEDERATION_RULE_ID}

156 organization_id: ${ANTHROPIC_ORGANIZATION_ID}

157 identity_token_file: /var/run/secrets/anthropic/id-token

158 # workspace_id: wrkspc_... # requerido si la regla cubre >1 espacio de trabajo

159 # service_account_id: svac_... # verificación de destino esperado opcional

160```

161 

162<h4 id="amazon-bedrock">

163 Amazon Bedrock

164</h4>

165 

166Para la implementación de Bedrock del lado del cliente que la puerta de enlace reemplaza o enfrenta, consulte [Claude Code en Amazon Bedrock](/es/amazon-bedrock). El upstream del lado de la puerta de enlace:

167 

168```yaml theme={null}

169upstreams:

170 - provider: bedrock

171 region: us-east-1

172 auth: {} # preferido: cadena de credenciales predeterminada de AWS

173 # O credenciales explícitas:

174 # auth:

175 # aws_access_key_id: ${AWS_AKID}

176 # aws_secret_access_key: ${AWS_SK}

177 # aws_session_token: ${AWS_ST}

178 # O un token portador de API de Bedrock:

179 # auth:

180 # aws_bearer_token: ${AWS_BEARER_TOKEN}

181 # Anule el punto final de bedrock-runtime para implementaciones FIPS o de punto final de VPC:

182 # base_url: https://bedrock-runtime-fips.us-east-1.amazonaws.com

183```

184 

185Un bloque `auth` vacío utiliza la cadena de credenciales predeterminada del SDK de AWS: variables env, `~/.aws/credentials`, rol de tarea de ECS, metadatos de instancia de EC2 o IRSA en EKS. En producción, otorgue a la vaina de la puerta de enlace un rol de IAM en lugar de incrustar claves estáticas en una imagen de contenedor.

186 

187| Configuración | Cómo |

188| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

189| Permisos de IAM | Otorgue al principal de la puerta de enlace `bedrock:InvokeModel` y `bedrock:InvokeModelWithResponseStream` tanto en los ARN de perfil de inferencia como en los ARN de modelo de fundación subyacentes. Para el catálogo integrado en regiones de EE.UU.: `arn:aws:bedrock:<region>:<account>:inference-profile/us.anthropic.*` y `arn:aws:bedrock:*::foundation-model/anthropic.*`. |

190| Acceso a modelos | En la consola de Bedrock, por región, solicite y habilite el acceso a modelos para los modelos Claude que desee. Los perfiles de inferencia entre regiones (`us.anthropic.*`) requieren acceso a modelos en cada región que abarca el perfil. |

191| EKS (IRSA) | Cree un rol de IAM con la política anterior y una política de confianza para el proveedor OIDC de su clúster limitado a la cuenta de servicio de la puerta de enlace. Anote la cuenta de servicio con `eks.amazonaws.com/role-arn: arn:aws:iam::<acct>:role/claude-gateway`. `auth: {}` la recoge. |

192| ECS / EC2 | Adjunte el rol de IAM a la definición de tarea o perfil de instancia. `auth: {}` la recoge. |

193| En cualquier otro lugar | Pase credenciales a través de las variables env `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN`, o establézcalas explícitamente en `auth:` con expansión `${VAR}` |

194| Región | `region:` es la región del punto final de API. Los perfiles de inferencia entre regiones enrutan a través de la geografía (EE.UU., UE, APAC) independientemente de cuál elija. Para regiones no estadounidenses o ARN de rendimiento aprovisionado, agregue un bloque [`models:`](#models) con los IDs correctos por upstream. |

195 

196<h4 id="google-cloud-agent-platform">

197 Plataforma de agentes de Google Cloud

198</h4>

199 

200Para la configuración equivalente del lado del cliente, consulte [Claude Code en Google Cloud](/es/google-vertex-ai). El upstream del lado de la puerta de enlace:

201 

202```yaml theme={null}

203upstreams:

204 - provider: vertex

205 region: us-east5

206 project_id: example-prod

207 auth: {} # preferido: Credenciales predeterminadas de aplicación

208 # O un archivo de clave de cuenta de servicio:

209 # auth: { service_account_json: /secrets/sa.json }

210 # Anule el punto final de aiplatform para Private Service Connect:

211 # base_url: https://us-east5-aiplatform.p.googleapis.com

212```

213 

214Un bloque `auth` vacío utiliza Credenciales predeterminadas de aplicación: `GOOGLE_APPLICATION_CREDENTIALS`, metadatos de GCE o Workload Identity de GKE. Los archivos de clave JSON de cuenta de servicio son compatibles pero desaconsejados; use Workload Identity o adjunte una cuenta de servicio a la instancia de GCE o Cloud Run.

215 

216Establezca `region: global` para usar el [punto final global de Agent Platform](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) en lugar de uno regional. Google luego enruta cada solicitud a una región disponible, por lo que no rastrea la disponibilidad de modelos por región. Establecer una región específica fija cada solicitud a ella.

217 

218| Configuración | Cómo |

219| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

220| Permisos de IAM | Otorgue a la cuenta de servicio de la puerta de enlace `roles/aiplatform.user` en el proyecto, o un rol personalizado con `aiplatform.endpoints.predict`. Habilite la API de Agent Platform (`aiplatform.googleapis.com`). |

221| Acceso a modelos | En Model Garden, habilite los modelos Claude para su proyecto. Se publican en regiones específicas; consulte la tarjeta del modelo para regiones compatibles. |

222| GKE (Workload Identity) | Vincule una cuenta de servicio de GCP a la cuenta de servicio de Kubernetes de la puerta de enlace y anote la KSA con `iam.gke.io/gcp-service-account: claude-gateway@<proj>.iam.gserviceaccount.com`. `auth: {}` la recoge. |

223| Cloud Run / GCE | Establezca la cuenta de servicio del servicio en una con `roles/aiplatform.user`. `auth: {}` la recoge. |

224| En cualquier otro lugar | `auth: { service_account_json: /secrets/sa.json }`, la ruta a un archivo de clave JSON montado como secreto. El campo toma una ruta de archivo, no el contenido de la clave, por lo que no hay expansión `${file:…}` involucrada. |

225 

226<h4 id="microsoft-foundry">

227 Microsoft Foundry

228</h4>

229 

230Para la implementación de Foundry del lado del cliente, consulte [Claude Code en Microsoft Foundry](/es/microsoft-foundry). El upstream del lado de la puerta de enlace:

231 

232```yaml theme={null}

233upstreams:

234 - provider: foundry

235 resource: example-foundry # https://example-foundry.services.ai.azure.com

236 auth: { use_azure_ad: true } # preferido: DefaultAzureCredential / Managed Identity

237 # O una clave API:

238 # auth:

239 # api_key: ${FOUNDRY_API_KEY}

240```

241 

242`use_azure_ad: true` se resuelve a través de `DefaultAzureCredential`: Managed Identity en AKS, ACI o App Service; la CLI de Azure; o credenciales de entorno. Las claves API funcionan pero son amplias del proyecto y no se rotan automáticamente. El punto final de Foundry se deriva de `resource:`; establezca el `base_url` opcional para anularlo para nubes soberanas como Azure Government.

243 

244| Configuración | Cómo |

245| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

246| RBAC | Otorgue a la identidad de la puerta de enlace `Azure AI User` o `Cognitive Services User` en el recurso de Foundry |

247| Implementaciones | Foundry utiliza nombres de implementación elegidos por administrador, no IDs de modelo canónicos. Agregue un bloque [`models:`](#models) que asigne cada ID canónico a su nombre de implementación. |

248| AKS (workload identity) | Federe una Managed Identity asignada por el usuario con el emisor OIDC del clúster y vincúlela a la cuenta de servicio de la puerta de enlace. `use_azure_ad: true` la recoge a través de `WorkloadIdentityCredential`. |

249| ACI / App Service | Habilite la identidad administrada asignada por el sistema o por el usuario en el recurso. `use_azure_ad: true` la recoge. |

250| En cualquier otro lugar | `auth: { api_key: "${FOUNDRY_API_KEY}" }`. Entrecomille `${…}` dentro de `{ }`. |

251 

252<h4 id="multiple-upstreams">

253 Múltiples upstreams

254</h4>

255 

256El mismo proveedor puede aparecer más de una vez con un `name:` distinto. Esto cubre diferentes regiones, diferentes cuentas a través de diferentes cadenas de credenciales, rendimiento aprovisionado versus bajo demanda, y conmutación por error entre proveedores.

257 

258La puerta de enlace intenta upstreams en orden. `5xx`, `429`, tiempos de espera y punto final faltante (`501`) conmutan por error; otros `4xx` no. `429` es capacidad por upstream, por lo que el agotamiento de rendimiento aprovisionado (PT) conmuta por error a bajo demanda. Un upstream que no puede resolver el modelo solicitado se omite sin un viaje de red.

259 

260Este ejemplo enruta una asignación de rendimiento aprovisionado de Bedrock primero, desborda a bajo demanda y una segunda cuenta, y vuelve a la API de Anthropic al final:

261 

262```yaml theme={null}

263upstreams:

264 # Primario: rendimiento aprovisionado en su región de inicio.

265 - name: bedrock-pt

266 provider: bedrock

267 region: us-east-1

268 auth: {}

269 # Desbordamiento: bajo demanda entre regiones.

270 - name: bedrock-od

271 provider: bedrock

272 region: us-west-2

273 auth: {}

274 # Cuenta diferente: una asignación de Bedrock separada a través de credenciales de rol asumido.

275 - name: bedrock-acct2

276 provider: bedrock

277 region: us-east-1

278 auth:

279 aws_access_key_id: ${ACCT2_AKID}

280 aws_secret_access_key: ${ACCT2_SK}

281 # Último recurso: API de Anthropic directo.

282 - name: anthropic-fallback

283 provider: anthropic

284 auth:

285 api_key: ${ANTHROPIC_API_KEY}

286 

287# Los IDs de modelo por upstream se clave en el `name:` del upstream; un upstream

288# sin un `name:` predeterminado a su cadena de proveedor (p. ej., `bedrock`). Cualquier

289# upstream no listado para un modelo se omite, que es cómo enruta un modelo

290# a rendimiento aprovisionado mientras todo lo demás permanece bajo demanda.

291models:

292 - id: claude-opus-4-8

293 label: Claude Opus 4.8

294 upstream_model:

295 bedrock-pt: arn:aws:bedrock:us-east-1:111111111111:provisioned-model/abcdef

296 bedrock-od: us.anthropic.claude-opus-4-8

297 bedrock-acct2: us.anthropic.claude-opus-4-8

298 anthropic-fallback: claude-opus-4-8

299```

300 

301| Palanca | Cómo |

302| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

303| Diferentes regiones | Un upstream de Bedrock por región, cada uno con su propio `region:`. Con [`auto_include_builtin_models: true`](#models) los perfiles de inferencia entre regiones enrutan automáticamente; para implementaciones fijas de región use un bloque `models:`. |

304| Diferentes cuentas | Un upstream de Bedrock por cuenta, cada uno con sus propias credenciales en `auth:`. La cadena predeterminada (`auth: {}`) utiliza la identidad de la vaina; para una segunda cuenta, establezca credenciales explícitas o un token portador. |

305| Rendimiento aprovisionado | Asigne el modelo al ARN de rendimiento aprovisionado en `models:` para el nombre de ese upstream. Otros upstreams mantienen el ID bajo demanda, por lo que la capacidad de PT se agota antes de conmutar por error. |

306| Puntos finales de VPC / FIPS | Establezca `base_url:` en el upstream a su URL de punto final de VPC o FIPS |

307| Enrutamiento limitado a modelo | Omita un upstream del mapa `upstream_model:` de un modelo y ese upstream se omite para ese modelo. Por ejemplo, enrute Opus a rendimiento aprovisionado y Sonnet y Haiku a bajo demanda. |

308 

309La conmutación por error entre proveedores en la nube, o a la API de Anthropic directo, cambia qué acuerdo, geografía y otros términos rigen la solicitud.

310 

311El CLI aplica el mismo control de características a puertas de enlace independientemente de cuál upstream sirva una solicitud dada, por lo que la conmutación por error no envía un campo de cuerpo que un upstream rechazaría.

312 

313<h2 id="optional-sections">

314 Secciones opcionales

315</h2>

316 

317<h3 id="admin">

318 `admin`

319</h3>

320 

321Opcional. Habilita `/v1/organizations/spend_limits`, que refleja la API de administración pública de Anthropic, y cumplimiento de gasto por desarrollador en `/v1/messages`. Consulte [Límites de gasto](/es/claude-apps-gateway-spend-limits) para saber cómo se establecen y aplican los límites; esta sección cubre las claves `gateway.yaml` que activan la función y la ajustan.

322 

323```yaml theme={null}

324admin:

325 # Claves API estáticas nombradas para los puntos finales de administración, enviadas como x-api-key.

326 # El id aparece en el registro de auditoría como admin-key:<id> para que cada clave sea

327 # atribuible. Matriz para rotación: agregue la nueva clave, despliegue clientes,

328 # elimine la antigua.

329 write_keys:

330 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

331 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }

332 read_keys:

333 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

334 # Grupos de IdP otorgados acceso de administrador completo a través del JWT de puerta de enlace normal (sin clave API).

335 admin_groups: [platform-finops]

336 blocked_message: request an increase at https://go.example.com/claude-limits

337```

338 

339| Campo | Requerido | Descripción |

340| ------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

341| `write_keys` | No | Matriz de `{id, key}`. Un `x-api-key` que coincida con uno de estos puede listar, establecer y eliminar límites de gasto. Los valores de clave deben tener al menos 32 caracteres; los `id`s deben ser únicos en `read_keys` y `write_keys`. |

342| `read_keys` | No | Matriz de `{id, key}`. Solo lectura: cada punto final `GET`, incluida la enumeración de límites, la obtención de uno por ID y la lectura de [`/effective`](/es/claude-apps-gateway-spend-limits#%2Feffective) y [`/audit`](/es/claude-apps-gateway-spend-limits#%2Faudit). |

343| `admin_groups` | No | Nombres de grupos de IdP. Un JWT de puerta de enlace cuya reclamación `groups` incluye uno de estos tiene acceso de administrador completo, lectura y escritura, y audita como `oidc:<sub>`. Úselo para administradores humanos; use claves API para máquinas. |

344| `blocked_message` | No | Añadido textualmente al `429 billing_error` que ve un desarrollador bloqueado. Escriba la instrucción completa, como una URL o un canal de Slack. Sin establecer, el error es `spend limit reached`. |

345| `audit_retention_days` | No | Predeterminado `365`. Las filas `admin_audit` más antiguas se barren. |

346| `spend_retention_months` | No | Predeterminado `13`. Las filas del contador `spend` más antiguas que esto se barren. El predeterminado mantiene un año completo más el mes parcial actual para informes año a año. |

347| `identity_retention_days` | No | Predeterminado `90`. TTL de última visualización para filas `principal_emails`, que contienen el correo electrónico, nombre para mostrar y grupos de cada desarrollador (PII). Deliberadamente más corto que la retención de gasto para que una identidad desaprovisionada envejecida mientras sus contadores de gasto anónimos permanecen. |

348| `group_limit_mode` | No | `min` (predeterminado) o `max`. Cuando un desarrollador está en varios grupos con límites, `min` aplica el más restrictivo y `max` el menos. Utilizado tanto por cumplimiento como por `/effective`. |

349 

350<h3 id="enforcement">

351 `enforcement`

352</h3>

353 

354El bloque `enforcement` controla cómo se comportan las verificaciones de límite de gasto cuando el almacén no está disponible.

355 

356| Campo | Requerido | Descripción |

357| ---------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

358| `fail_closed_on_error` | No | Predeterminado `false`. El cumplimiento de gasto falla abierto en una interrupción de Postgres, por lo que la inferencia permanece activa. Establezca `true` para fallar cerrado: los desarrolladores sobre el límite se bloquean, pero también todos si el almacén es inaccesible. No tiene efecto sin un bloque [`admin:`](#admin). |

359 

360<h3 id="models">

361 `models`

362</h3>

363 

364El bloque `models` es una lista de modelos curada por administrador opcional, servida en `/v1/models` y utilizada para traducir IDs de modelo por upstream. Es necesario para regiones de Bedrock no estadounidenses, ARN de rendimiento aprovisionado de Bedrock y nombres de implementación de Foundry.

365 

366```yaml theme={null}

367auto_include_builtin_models: true # false: exponga solo la lista a continuación

368models:

369 - id: claude-opus-4-8

370 label: Claude Opus 4.8

371 # description: texto opcional mostrado en clientes que lo muestren

372 upstream_model:

373 anthropic: claude-opus-4-8

374 bedrock: us.anthropic.claude-opus-4-8 # o un ARN de perfil de inferencia

375 foundry: your-opus-deployment-name

376```

377 

378<h3 id="managed">

379 `managed`

380</h3>

381 

382El bloque `managed` define políticas de acceso basadas en roles clave en grupos de IdP o dominio de correo electrónico. Las políticas se evalúan en orden; se selecciona la primera coincidencia, luego se fusiona en la base de captura `match: {}` descrita a continuación. Se sirven por usuario en `GET /managed/settings` con almacenamiento en caché de ETag/304.

383 

384```yaml theme={null}

385managed:

386 policies:

387 # Grupos específicos primero.

388 - match: { groups: [eng-contractors] }

389 cli:

390 availableModels: [claude-sonnet-4-6]

391 permissions: { deny: ["WebFetch", "WebSearch"] }

392 # Captura predeterminada al final: coincide con todos los que se autenticaron.

393 - match: {}

394 cli:

395 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

396```

397 

398Una captura `match: {}`, convencionalmente listada al final, se trata como una capa base. Cada otra política hereda cualquier clave que no establezca de la captura, por lo que las entradas por rol solo necesitan listar lo que difiere del predeterminado de la organización. Las reglas de fusión dependen del tipo de clave:

399 

400* **Listas de permitidos**: `availableModels` y `permissions.allow`. La lista de una política específica reemplaza completamente la de la base.

401* **Listas de denegación y matrices de hooks**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` y cada matriz de tipo de evento `hooks`. Estos toman la unión de base y política, por lo que un gancho de denegación o auditoría en toda la organización no puede ser accidentalmente eliminado por una anulación por rol.

402* **Claves de tipo registro**: `env`, `modelOverrides` y `skillOverrides`. Estos se fusionan superficialmente, por lo que un bloque `env` por rol anula las claves que establece y hereda el resto de la base.

403 

404`availableModels` también se aplica del lado del servidor en `/v1/messages`, por lo que un modelo denegado devuelve `400` independientemente de lo que envíe el cliente.

405 

406| Coincidencia | Comportamiento |

407| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

408| `match: {}` | Coincide con cada usuario autenticado. Comience con uno de estos y agregue políticas limitadas a grupo más tarde. |

409| `match: { groups: [a, b] }` | Coincide si la reclamación `groups` del JWT contiene cualquiera de los grupos listados. Sensible a mayúsculas y minúsculas: los grupos deben coincidir con el uso exacto de mayúsculas y minúsculas de IdP. |

410| `match: { email_domain: example.com }` | Coincide con la parte después de la última `@` en la reclamación `email` del JWT, sin distinción de mayúsculas y minúsculas. Acepta un dominio por política. |

411| `match: { groups: [a], email_domain: example.com }` | Ambas condiciones deben coincidir |

412 

413Un usuario autenticado que no coincida con ninguna política obtiene los valores predeterminados de la puerta de enlace, lo que significa cada modelo en el catálogo y sin configuración administrada. Agregue una captura `match: {}` al final si desea una política predeterminada garantizada.

414 

415<Note>

416 La puerta de enlace no mantiene su propio directorio de usuarios. Autoriza cada solicitud desde el token de IdP del usuario, leyendo la membresía del grupo de la reclamación `groups` del token y evaluando políticas contra ella. No hay un registro para enumerar y no hay cuentas para crear previamente, y por lo tanto no hay punto final SCIM, porque no hay nada para que SCIM sincronice.

417 

418 Ejecute la gestión del ciclo de vida del usuario y grupo en la fuente de verdad, que es el aprovisionamiento SCIM nativo de su IdP o una plataforma de gobernanza de identidad dedicada. La membresía y desaprovisionamiento gobernados allí fluyen a la puerta de enlace automáticamente a través del token. Si desea el aprovisionamiento SCIM de las propias cuentas de Claude, esa es una capacidad de [Claude para empresas](/es/admin-setup).

419 

420 Se aplican dos relojes de propagación:

421 

422 * **Contenido de política**: editar una política e implementar nuevamente llega a clientes conectados en su próxima encuesta de configuración administrada, dentro de una hora

423 * **Membresía de grupo**: cambiar la membresía de grupo de un usuario cambia qué política los coincide. Esto entra en vigor en la siguiente acuñación de sesión, lo que significa la siguiente actualización silenciosa, limitada por `session.ttl_hours`.

424</Note>

425 

426<h4 id="what-goes-in-cli">

427 Qué va en `cli`

428</h4>

429 

430Cada valor `cli` es un documento completo de `managed-settings.json` de Claude Code, el mismo esquema que implementaría a través de MDM o `/etc/claude-code/managed-settings.json`, expresado aquí como YAML. El CLI aplica el documento entregado en el nivel administrado, por encima de la configuración de usuario y proyecto.

431 

432La puerta de enlace valida cada documento contra el esquema de configuración del CLI al arrancar, por lo que una clave de nivel superior no reconocida o una clave reconocida con un valor mal formado falla al arrancar con un error que nombra cada clave ofensiva. Las partes deliberadamente abiertas del esquema aún aceptan valores arbitrarios, porque clientes más nuevos pueden reconocer entradas que el esquema de la puerta de enlace no. Estas claves abiertas son `env`, `pluginConfigs` y claves anidadas bajo `permissions`.

433 

434Debido a que la validación utiliza el esquema incluido con la versión instalada de la puerta de enlace, poner una clave de configuración de nivel superior introducida por una versión más nueva de Claude Code en la configuración administrada requiere actualizar primero la puerta de enlace. Pruebe una nueva política en un cliente antes de implementarla ampliamente.

435 

436La referencia de clave completa está en [Configuración de Claude Code](/es/settings#available-settings). Las claves que los operadores alcanzan primero:

437 

438```yaml theme={null}

439managed:

440 policies:

441 - match: {}

442 cli:

443 # Acceso a modelos (también aplicado del lado del servidor en /v1/messages)

444 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

445 

446 # Política de permisos

447 permissions:

448 deny:

449 - "WebFetch"

450 - "Read(./.env)"

451 - "Read(./secrets/**)"

452 disableBypassPermissionsMode: disable # bloquea --dangerously-skip-permissions

453 allowManagedPermissionRulesOnly: true # ignora reglas de permisos de usuario/proyecto

454 

455 # Entorno empujado al proceso CLI. DISABLE_UPDATES bloquea

456 # actualizaciones de fondo y manuales; DISABLE_AUTOUPDATER detiene solo

457 # actualizaciones de fondo.

458 env:

459 DISABLE_UPDATES: "1" # versiones de pin a través de su propia distribución

460 

461 # Hooks en toda la organización. Los comandos de gancho se ejecutan en máquinas de desarrollador, no en la

462 # puerta de enlace, por lo que la ruta debe existir en cada SO de cliente en la política.

463 hooks:

464 PostToolUse:

465 - matcher: "Edit|Write"

466 hooks:

467 - { type: command, command: /usr/local/bin/audit-edit.sh }

468```

469 

470| Clave | Aplicada por | Efecto |

471| ------------------------------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

472| `availableModels` | Puerta de enlace + CLI | Lista de permitidos de modelos. También se verifica en `/v1/messages`, por lo que un cliente parcheado no puede omitirlo. |

473| `permissions.allow` / `.deny` | CLI | Reglas de herramientas y comandos. Consulte [Permisos](/es/permissions). |

474| `permissions.disableBypassPermissionsMode` | CLI | Establezca en `disable` para bloquear [`bypassPermissions`](/es/permission-modes#skip-all-checks-with-bypasspermissions-mode), el modo que aprueba automáticamente cada llamada de herramienta, y la bandera `--dangerously-skip-permissions` |

475| `allowManagedPermissionRulesOnly` | CLI | Cuando es `true`, se ignoran las reglas de permisos de usuario y proyecto; solo se aplican las reglas de este documento |

476| `env` | CLI | Variables de entorno fusionadas en el proceso CLI. Úselo para telemetría, actualización automática y anulaciones de nombres de modelos. |

477| `hooks` | CLI | [Hooks](/es/hooks) en toda la organización |

478 

479Debido a que estas configuraciones llegan a través de la red, el CLI muestra a cada desarrollador un diálogo de aprobación de seguridad de una sola vez antes de aplicar cualquier cosa que pueda ejecutar un comando de shell o alterar dónde va el tráfico. El diálogo cubre:

480 

481* `hooks`

482* Variables `env` que no están en la lista segura integrada del CLI

483* Configuración de ejecución de shell como `apiKeyHelper` y `statusLine`

484* Contenido de CLAUDE.md administrado

485 

486La lista segura determina qué variables `env` se aplican sin aprobación:

487 

488* **En la lista segura**: variables de actualización automática y nombre de modelo

489* **No en la lista segura**: variables de proxy, variables de URL base y `OTEL_EXPORTER_OTLP_ENDPOINT`

490 

491La configuración de [telemetría](#telemetry) de la puerta de enlace empuja `OTEL_EXPORTER_OTLP_ENDPOINT`, por lo que establecer `telemetry.forward_to` desencadena el diálogo en cada cliente interactivo. Las ejecuciones no interactivas con la bandera `-p` omiten el diálogo y aplican configuración sin aprobación. El diálogo protege la máquina del desarrollador de una puerta de enlace comprometida u hostil, no la organización del desarrollador, por lo que el salto `-p` es intencional en lugar de una brecha.

492 

493Si un desarrollador rechaza, Claude Code sale en lugar de aplicar la política. Empujar un nuevo gancho o variable env no segura a una política amplia significa un mensaje de aprobación en el próximo inicio de cada desarrollador coincidente.

494 

495La clave `cli` se nombró `settings` en versiones anteriores. Ese deletreo aún se acepta como alias, pero las nuevas implementaciones deben usar `cli`.

496 

497<h4 id="precedence-with-other-managed-sources">

498 Precedencia con otras fuentes administradas

499</h4>

500 

501Si un dispositivo también tiene un `managed-settings.json` local o una política entregada por MDM, las fuentes administradas no se fusionan. La fuente de mayor prioridad proporciona toda la configuración de política, clasificada en este orden con mayor prioridad primero:

502 

5031. El [asistente de política](/es/settings#compute-managed-settings-with-a-policy-helper)

5042. Configuración entregada por puerta de enlace

5053. MDM, a través del registro HKLM en Windows o un plist en macOS

5064. El archivo `managed-settings.json`

5075. El registro HKCU, solo en Windows

508 

509Los hosts de incrustación pueden suministrar política a través de la opción `managedSettings` del SDK. Se ignora de forma predeterminada y se aplica solo cuando una fuente administrada se adhiere con [`parentSettingsBehavior: "merge"`](/es/settings#available-settings), filtrada para que pueda endurecer la política pero no aflojarla.

510 

511La excepción es un pequeño conjunto de claves entre fuentes, honradas cuando cualquier fuente de administrador las establece; el nivel HKCU escribible por el usuario se excluye:

512 

513* `sandbox.network.allowManagedDomainsOnly` y `sandbox.filesystem.allowManagedReadPathsOnly`: cuando se bloquean, las listas de permitidos correspondientes se unen en todas las fuentes

514* [`allowAllClaudeAiMcps`](/es/settings#available-settings): anulación de solo permitir para la lista de permitidos del servidor MCP de claude.ai

515* `sandbox.bwrapPath` y `sandbox.socatPath`: rutas del sistema de archivos a los binarios auxiliares de [sandbox](/es/sandboxing)

516 

517`allowManagedPermissionRulesOnly` y `disableBypassPermissionsMode` no son entre fuentes, por lo que solo se aplica el valor de la fuente ganadora.

518 

519Las políticas de puerta de enlace se aplican a cada invocación de Claude Code en la máquina, incluidas ejecuciones no interactivas `claude -p` y sesiones generadas por el SDK del agente. Si la puerta de enlace es inaccesible al iniciar, las sesiones firmadas salen con un error en lugar de ejecutarse sin su política.

520 

521<Warning>

522 `mcpServers` dentro de un bloque `cli` de política se rechaza al arrancar la puerta de enlace. La distribución de MCP por grupo no está disponible; implemente servidores MCP a través del `managed-mcp.json` basado en archivos en cada dispositivo o permita que los desarrolladores los agreguen localmente.

523</Warning>

524 

525<h3 id="telemetry">

526 `telemetry`

527</h3>

528 

529El CLI envía métricas, registros y, cuando está habilitado, trazas del Protocolo OpenTelemetry (OTLP) sobre HTTP a la puerta de enlace, que las retransmite textualmente a cada destino configurado. Consulte [Monitoreo de uso](/es/monitoring-usage) para las métricas y eventos que emite el CLI.

530 

531El CLI marca cada exportación con la identidad del usuario autenticado, leída del JWT emitido por la puerta de enlace: los atributos `user.id`, `user.email` y `user.groups`. La atribución de costo y uso por desarrollador funciona sin configuración del lado del desarrollador.

532 

533```yaml theme={null}

534telemetry:

535 forward_to:

536 - url: https://otel-collector.internal.example.com

537 headers:

538 Authorization: ${OTLP_TOKEN}

539 # Opt-in por señal. Predeterminado: solo métricas.

540 metrics: true

541 logs: false

542 traces: false

543 - url: https://api.datadoghq.com/api/v2/otlp

544 headers:

545 DD-API-KEY: ${DD_API_KEY}

546```

547 

548<Warning>

549 Cada destino se adhiere a `metrics`, `logs` y `traces` independientemente, y el predeterminado es solo métricas. Las señales difieren en sensibilidad:

550 

551 * **Métricas**: contadores agregados como conteos de tokens, conteos de solicitudes y latencia

552 * **Registros y trazas**: pueden llevar comandos bash completos, entradas de herramientas y rutas de archivos, cubriendo cualquier cosa que Claude Code haga en la máquina de un desarrollador

553 

554 Habilite registros y trazas solo en destinos con los controles de acceso y la política de retención que los datos justifiquen.

555</Warning>

556 

557La telemetría está desactivada en el CLI de forma predeterminada. Configurar `telemetry.forward_to` junto con `listen.public_url` la activa. La puerta de enlace empuja cinco variables env a cada cliente conectado a través de `/managed/settings`:

558 

559* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

560* `OTEL_METRICS_EXPORTER=otlp`

561* `OTEL_LOGS_EXPORTER=otlp`

562* `OTEL_TRACES_EXPORTER=otlp`

563* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

564 

565El punto final empujado se construye a partir de la URL pública, por lo que las métricas y registros no necesitan configuración OTEL de desarrolladores o políticas. La configuración empujada se aplica en el nivel administrado, anulando variables `OTEL_*` que un desarrollador establece localmente.

566 

567[Las trazas](/es/monitoring-usage#traces-beta) además requieren `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` en cada cliente. La puerta de enlace no empuja esa variable, así que establézcala a través del bloque `env` de una política administrada. No está en la lista segura del CLI, por lo que entregarla a través de una política está cubierta por el mismo [diálogo de aprobación de seguridad](#managed) que el punto final OTLP empujado ya desencadena.

568 

569Tanto las codificaciones OTLP de protobuf como JSON se retransmiten, y cualquier backend compatible con OpenTelemetry funciona como destino.

570 

571<h3 id="http-tuning">

572 Ajuste de HTTP

573</h3>

574 

575Cuatro bloques opcionales de nivel superior, `access_control`, `limits`, `timeouts` y `rate_limits`, ajustan la superficie HTTP. Los valores predeterminados se adaptan a la mayoría de implementaciones.

576 

577| Bloque | Clave | Predeterminado | Descripción |

578| ---------------- | ---------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

579| `access_control` | `allow_cidrs` / `deny_cidrs` | vacío | Permitir/denegar IP de entrada por dirección de cliente, después de la resolución de `trusted_proxies`. `deny_cidrs` se verifica primero; un cliente que coincida se rechaza incluso si `allow_cidrs` también coincide. Si `allow_cidrs` no está vacío, la puerta de enlace es predeterminada denegada. `/healthz` y `/readyz` están exentos de `allow_cidrs`. |

580| `limits` | `max_request_bytes` | 32 MiB | Cuerpo de solicitud de entrada máximo; las solicitudes de tamaño excesivo obtienen `413` antes de que el cuerpo se almacene en búfer. Aumente para solicitudes de archivo o imagen grandes. |

581| `limits` | `max_request_header_bytes` | sin establecer | Cuando se establece, los encabezados de tamaño excesivo devuelven `431` |

582| `limits` | `max_url_length` | sin establecer | Cuando se establece, una URL demasiado larga devuelve `414` |

583| `timeouts` | `upstream_ttfb_ms` | 120000 | Espera máxima para los encabezados de respuesta del upstream (tiempo hasta el primer byte). El cuerpo de respuesta luego se transmite sin límite de reloj de pared. Se aplica a la ruta de upstream de Anthropic directo; Bedrock, Agent Platform y Foundry están limitados por el tiempo de espera propio del SDK del proveedor. |

584| `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](/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

585| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Límite de velocidad por IP en envíos de `user_code` en `/device` |

586 

587<h2 id="complete-example">

588 Ejemplo completo

589</h2>

590 

591Esta configuración de referencia completa ejercita cada sección principal; los bloques [ajuste de HTTP](#http-tuning) mantienen sus valores predeterminados. Cópiela, elimine lo que no necesite y complete sus valores. La configuración en el [Inicio rápido](/es/claude-apps-gateway#quickstart) es una versión mínima de esta.

592 

593```yaml gateway.yaml theme={null}

594# Ejecutar con:

595# claude gateway --config gateway.yaml

596#

597# La verbosidad del registro operativo se controla mediante la variable de entorno

598# CLAUDE_GATEWAY_LOG_LEVEL (info | warn | error; predeterminado info). No

599# afecta eventos de auditoría, que siempre se emiten.

600 

601listen:

602 host: 0.0.0.0

603 port: 8080

604 public_url: https://claude-gateway.internal.example.com

605 # Omita el bloque tls cuando se ejecute detrás de una entrada que termine TLS.

606 # tls:

607 # cert: /certs/gateway.crt

608 # key: /certs/gateway.key

609 # trusted_proxies:

610 # - 10.0.0.0/8

611 

612oidc:

613 issuer: https://example.okta.com

614 client_id: 0oa1example2

615 client_secret: ${OIDC_CLIENT_SECRET}

616 allowed_email_domains:

617 - example.com

618 # Requerido cuando el emisor es el servidor org de Okta, cuyos id_tokens

619 # pueden omitir correo electrónico y grupos; la puerta de enlace los completa desde /userinfo.

620 userinfo_fallback: true

621 # allowed_groups: [claude-code-users]

622 # Okta emite grupos solo cuando se solicita el alcance `groups` y el

623 # filtro de reclamación de grupos de la aplicación los permite. La política de contratistas a continuación

624 # coincide en grupos, por lo que el alcance se solicita aquí.

625 scopes: [openid, profile, email, offline_access, groups]

626 # extra_auth_params: { access_type: offline, prompt: consent } # Google

627 # groups_claim: groups # Roles de aplicación de Entra: use `roles`

628 # email_claim: email

629 

630session:

631 jwt_secret: ${GATEWAY_JWT_SECRET} # openssl rand -base64 32

632 # ttl_hours: 1

633 

634store:

635 postgres_url: ${GATEWAY_POSTGRES_URL}

636 # max_connections: 5

637 

638# Habilita /v1/organizations/spend_limits (refleja la API de administración de Anthropic)

639# y cumplimiento de gasto por desarrollador en /v1/messages. Omita para desactivar.

640# Los límites en sí se establecen a través de la API de administración, no aquí.

641# admin:

642# write_keys:

643# - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

644# read_keys:

645# - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

646# admin_groups: [platform-finops]

647# blocked_message: request an increase at https://go.example.com/claude-limits

648# # audit_retention_days: 365

649# # spend_retention_months: 13

650# # identity_retention_days: 90

651# # group_limit_mode: min

652 

653# enforcement:

654# fail_closed_on_error: false

655 

656upstreams:

657 - provider: anthropic

658 auth:

659 api_key: ${ANTHROPIC_API_KEY}

660 

661 # - provider: bedrock

662 # region: us-east-1

663 # auth: {}

664 

665 # - provider: vertex

666 # region: us-east5

667 # project_id: example-prod

668 # auth: {}

669 

670 # - provider: foundry

671 # resource: example-foundry

672 # auth: { use_azure_ad: true }

673 

674auto_include_builtin_models: true

675models:

676 - id: claude-opus-4-8

677 label: Claude Opus 4.8

678 upstream_model:

679 anthropic: claude-opus-4-8

680 # bedrock: us.anthropic.claude-opus-4-8

681 # vertex: claude-opus-4-8

682 # foundry: <your-opus-deployment-name>

683 - id: claude-sonnet-4-6

684 label: Claude Sonnet 4.6

685 upstream_model:

686 anthropic: claude-sonnet-4-6

687 - id: claude-haiku-4-5

688 label: Claude Haiku 4.5

689 upstream_model:

690 anthropic: claude-haiku-4-5

691 

692managed:

693 policies:

694 - match: { groups: [contractors] }

695 cli:

696 availableModels: [claude-haiku-4-5]

697 # Restrinja la opción del selector predeterminado a availableModels en lugar de

698 # el predeterminado de nivel, para que los contratistas no obtengan un 400 en el predeterminado.

699 enforceAvailableModels: true

700 # allow aprueba automáticamente estas herramientas; no bloquea el resto.

701 # Agregue reglas de denegación para restringir herramientas.

702 permissions: { allow: [Read, Grep] }

703 - match: {}

704 cli:

705 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

706 permissions:

707 allow: [Read, Grep, Bash, Edit]

708 deny: ["WebFetch"]

709 env: { HTTP_PROXY: http://proxy.example.com:8080 }

710 

711telemetry:

712 forward_to:

713 - url: https://otel.internal.example.com:4318

714 headers:

715 Authorization: Bearer ${OTEL_TOKEN}

716```

717 

718<h2 id="client-side-managed-settings">

719 Configuración administrada del lado del cliente

720</h2>

721 

722Todo lo anterior configura el servidor de puerta de enlace. Apuntar máquinas de desarrollador a él se configura por separado, en cada dispositivo, a través de la [configuración administrada](/es/settings#settings-files) de Claude Code. La puerta de enlace no puede empujar estas claves por sí misma, porque son lo que le dice al cliente dónde está la puerta de enlace.

723 

724Para el CLI, establezca ambas claves en el `managed-settings.json` por SO:

725 

726```json theme={null}

727{

728 "forceLoginMethod": "gateway",

729 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

730}

731```

732 

733Implemente ese archivo en cada dispositivo, típicamente a través de su plataforma MDM. La ruta del archivo difiere por plataforma:

734 

735| Plataforma | Ruta |

736| ----------- | -------------------------------------------------------------------------------------------------------------------------------------- |

737| macOS | `/Library/Application Support/ClaudeCode/managed-settings.json`, o el dominio de preferencias administradas `com.anthropic.claudecode` |

738| Linux y WSL | `/etc/claude-code/managed-settings.json` |

739| Windows | `C:\Program Files\ClaudeCode\managed-settings.json`, o Política de grupo a través del registro HKLM |

740 

741`forceLoginGatewayUrl` y el valor `"gateway"` de `forceLoginMethod` se honran solo desde el nivel administrado controlado por administrador. Un desarrollador que los establezca en su propio `~/.claude/settings.json` no tiene efecto.

742 

743<h2 id="related">

744 Relacionado

745</h2>

746 

747* [Descripción general de la puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway): inicio rápido y conexión de desarrollador

748* [Guía de implementación](/es/claude-apps-gateway-deploy): configuración de IdP, imagen de contenedor, Kubernetes y Cloud Run, y operaciones

749* [Límites de gasto](/es/claude-apps-gateway-spend-limits): límites por desarrollador y la API de administración

claude-apps-gateway-deploy.md +301 −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# Implementación y operaciones de la puerta de enlace de aplicaciones Claude

6 

7> Registre la puerta de enlace con su IdP, construya el contenedor, implemente en Kubernetes o Cloud Run, y opérelo: verificaciones de salud, rotación de secretos, actualizaciones y seguridad.

8 

9Esta página cubre el lado operativo de ejecutar la [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway): registrar un cliente OAuth en su proveedor de identidad (IdP), implementar la puerta de enlace como un contenedor y ejecutarla día a día. Para cada opción en el archivo `gateway.yaml` que la puerta de enlace lee al iniciar, consulte la [referencia de configuración](/es/claude-apps-gateway-config).

10 

11Una implementación de producción sigue cuatro pasos en orden, y las secciones a continuación coinciden con ellos. Los dos primeros son donde usted toma decisiones; los dos segundos son material de referencia para consultar una vez que esté en funcionamiento.

12 

131. [Configurar su proveedor de identidad](#identity-provider-setup): registre el cliente OAuth y verifique las notas específicas de cada IdP para Okta, Entra y Google

142. [Implementar la puerta de enlace](#deployment): construya una imagen de contenedor fijada y ejecútela en Kubernetes, Cloud Run o su propia plataforma. Esta sección también cubre decisiones sobre costo, omisión, múltiples puertas de enlace y sin servidor

153. [Configurar operaciones](#operations): registros, sondeos de salud, comportamiento de interrupciones, rotación de secretos y actualizaciones. Referencia para cuando esté conectando monitoreo y runbooks

164. [Revisar la postura de seguridad](#security): qué datos fluyen hacia dónde, el modelo de amenaza y respuestas de cumplimiento. Referencia para una revisión de seguridad

17 

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 

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

22</Note>

23 

24<h2 id="identity-provider-setup">

25 Configuración del proveedor de identidad

26</h2>

27 

28Registre una aplicación web confidencial de OAuth/OpenID Connect (OIDC) con un único URI de redirección, `https://<gateway>/oauth/callback`, y asígnela a los usuarios o grupos que deben tener acceso a la puerta de enlace.

29 

30Cualquier IdP compatible con OIDC funciona: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate y otros. El IdP debe cumplir tres requisitos:

31 

32* Sirve `/.well-known/openid-configuration`, sobre HTTPS en producción; la puerta de enlace acepta un [emisor `http://`](/es/claude-apps-gateway-config#oidc), y un emisor de loopback además requiere `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`

33* Admite el flujo de código de autorización. PKCE (Proof Key for Code Exchange) está activado de forma predeterminada; desactívelo con `oidc.use_pkce: false` para IdPs que no lo admitan

34* Devuelve `email` y opcionalmente `groups` en el id\_token, o los sirve desde el punto final de userinfo con `oidc.userinfo_fallback: true`

35 

36Para PKI privada, establezca `oidc.ca_cert_pem`.

37 

38Algunos proveedores manejan las reclamaciones de correo electrónico y grupo de manera diferente:

39 

40* **Okta**: el servidor de autorización de la organización en `https://example.okta.com` devuelve un id\_token delgado que omite `email` y `groups`, así que establezca `oidc.userinfo_fallback: true` siempre que lo use como `issuer`. Un servidor de autorización personalizado como `https://example.okta.com/oauth2/default` que incluye `email` y opcionalmente `groups` en el id\_token los emite directamente y no necesita fallback. Okta emite `groups` solo cuando se solicita el alcance `groups` en `oidc.scopes` y el filtro de reclamación de grupos de la aplicación lo permite; `userinfo_fallback` no puede llenar una reclamación que el IdP no fue solicitado.

41* **Microsoft Entra ID**: `issuer` = `https://login.microsoftonline.com/<tenant-id>/v2.0`. Entra emite IDs de objeto de grupo en lugar de nombres, así que use los GUIDs en `managed.policies.match.groups`, o use App Roles para nombres legibles por humanos. Si su inquilino emite roles bajo `roles` en lugar de `groups`, establezca `oidc.groups_claim: roles`.

42* **Google Workspace**: `issuer` = `https://accounts.google.com`. El id\_token de Google no lleva grupos. Para usar `allowed_groups` basado en grupos o `managed.policies` con Google 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 directorio del SDK de administración usando una cuenta de servicio con delegación en todo el dominio. Sin él, use `oidc.allowed_email_domains` para control de membresía y `managed.policies.match.email_domain` para asignación de políticas. Google también ignora el alcance estándar `offline_access`. Para tokens de actualización, establezca `oidc.scopes: [openid, profile, email]` y `oidc.extra_auth_params: { access_type: offline, prompt: consent }`.

43 

44Para obtener soporte con un proveedor de identidad no cubierto anteriormente, consulte [Solución de problemas](#troubleshooting).

45 

46<Warning>

47 Los tokens de actualización permiten que la puerta de enlace renueve la sesión de un desarrollador silenciosamente, sin enviar al desarrollador de vuelta al navegador. También impulsan el desaprovisionamiento, porque cuando el IdP deshabilita un usuario, la siguiente actualización falla y la sesión termina dentro de `ttl_hours`. La puerta de enlace solicita `offline_access` de forma predeterminada para obtener un token de actualización. Si su IdP requiere consentimiento explícito para acceso sin conexión, configure el cliente OAuth para permitirlo.

48 

49 Si su IdP no puede emitir tokens de actualización en absoluto, la puerta de enlace aún funciona, pero no hay renovación silenciosa, así que los desarrolladores vuelven a ejecutar el inicio de sesión del navegador cuando su sesión expira. Para evitar que eso suceda cada hora, aumente [`session.ttl_hours`](/es/claude-apps-gateway-config#session) a `8` o `12`. El compromiso es la latencia de desaprovisionamiento, porque sin tokens de actualización un usuario deshabilitado mantiene acceso hasta que transcurra el TTL más largo.

50</Warning>

51 

52<h2 id="deployment">

53 Implementación

54</h2>

55 

56La puerta de enlace es un único binario de Linux. Se escala horizontalmente porque las réplicas son sin estado y Postgres es la capa de coordinación compartida. Ejecútela como ejecuta servicios sin estado en su entorno. El resto de esta sección establece lo que la imagen necesita, con notas breves para Kubernetes y Cloud Run.

57 

58La puerta de enlace está diseñada para ejecutarse dentro de su red, porque contiene su credencial ascendente y actúa como el único punto de salida para la inferencia. Puede ejecutarse en cualquier lugar donde sus desarrolladores y su IdP puedan alcanzar sobre HTTPS; trátela como cualquier otro servicio que contiene una credencial de producción.

59 

60Algunas decisiones dan forma a la implementación más allá de dónde se ejecuta:

61 

62* **Costo**: no hay licencia separada ni tarifa por asiento para la puerta de enlace; es parte del binario `claude`. Paga por inferencia a través de su compromiso existente en la nube o con Anthropic, más el cálculo para el contenedor y su recopilador de telemetría.

63* **Derivación**: la puerta de enlace no impone que la única ruta a un modelo pase por ella. Un desarrollador con su propia credencial aún puede llamar al proveedor directamente, así que cerrar ese camino es una decisión de política de red, por ejemplo bloqueando la salida a `api.anthropic.com` excepto desde la puerta de enlace. Bloquear esa salida también rompe la [verificación de seguridad de dominio de WebFetch](/es/data-usage#webfetch-domain-safety-check), que llama a `api.anthropic.com` desde la máquina de cada desarrollador; establezca `skipWebFetchPreflight: true` en la política administrada para deshabilitarlo.

64* **Múltiples puertas de enlace**: cada puerta de enlace es una implementación separada con su propia configuración. El CLI almacena su huella digital de confianza y credenciales por nombre de host de puerta de enlace, así que diferentes equipos pueden conectarse a diferentes puertas de enlace sin conflicto. Para servir múltiples emisores OIDC, ejecute instancias separadas.

65* **Sin servidor**: Cloud Run funciona; establezca `min-instances: 1` para evitar descubrimiento OIDC frío. Lambda y Cloud Functions no, porque la puerta de enlace es un servidor HTTP de larga duración.

66 

67Cada topología de producción aquí coloca un proxy L7, como un Ingress, el front-end de Cloud Run o un ALB, frente a réplicas HTTP simples. Establezca [`listen.trusted_proxies`](/es/claude-apps-gateway-config#listen) en los rangos de origen del proxy para que la puerta de enlace lea las IPs del cliente desde `X-Forwarded-For`. La puerta de enlace honra el encabezado solo cuando el par TCP es confiable; el [ejemplo trabajado de Google Cloud](/es/claude-apps-gateway-on-gcp) tiene valores concretos por topología. Sin proxies confiables, cada solicitud parece provenir de la IP del proxy, lo que colapsa los límites de velocidad por IP en un cubo compartido y registra la IP del proxy en eventos de auditoría.

68 

69<h3 id="container-image">

70 Imagen de contenedor

71</h3>

72 

73Construya su propia imagen alrededor del binario nativo `claude` de la versión estándar de Claude Code:

74 

751. Descargue la compilación de Linux para la arquitectura de su imagen desde una versión fija; consulte [Instalar una versión específica](/es/setup#install-a-specific-version) para la URL de descarga.

762. Verifíquelo contra el `manifest.json` firmado con GPG de la versión como se describe en [Integridad binaria y firma de código](/es/setup#binary-integrity-and-code-signing).

773. Cópielo en el contexto de compilación.

78 

79Refleje la versión en su registro interno si sus compilaciones no pueden alcanzar el host de versión, y fije la versión que ejecuta su flota.

80 

81Más allá del binario, la imagen necesita:

82 

83* **Una imagen basada en glibc**: las únicas dependencias dinámicas de la compilación de glibc son las bibliotecas de glibc. Las imágenes basadas en Musl necesitan la compilación `linux-x64-musl` o `linux-arm64-musl` más paquetes adicionales; consulte [Configuración de Alpine Linux](/es/setup#alpine-linux-and-musl-based-distributions).

84* **Un directorio de estado escribible**: la puerta de enlace se ejecuta como cualquier usuario, pero las imágenes mínimas no tienen inicio escribible. Establezca `CLAUDE_CONFIG_DIR` en una ruta escribible como `/tmp/.claude`.

85* **El comando del contenedor**: `claude gateway --config /etc/claude/gateway.yaml`, con el archivo de configuración montado de solo lectura y secretos suministrados como variables de entorno; la puerta de enlace escucha en `listen.port`, predeterminado `8080`.

86 

87<h3 id="kubernetes">

88 Kubernetes

89</h3>

90 

91Ejecute la puerta de enlace como una Deployment, como cualquier servicio sin estado:

92 

93* Monte la configuración desde un ConfigMap y secretos desde un Secret; haga referencia a secretos en el YAML a través de `${file:/path/to/secret}` o como variables de entorno

94* Termine TLS en el Ingress y establezca `listen.public_url` en el nombre de host de Ingress

95* Apunte la sonda de preparación a `GET /readyz` y la sonda de vivacidad a `GET /healthz`

96 

97<Note>

98 **Identidad de carga de trabajo**

99 

100 Prefiera la identidad de carga de trabajo de la plataforma sobre claves estáticas: IRSA en EKS para Bedrock, Workload Identity en GKE para Agent Platform, e identidad de carga de trabajo en AKS para Foundry. Establezca `auth: {}` en el bloque ascendente, o `use_azure_ad: true` para Foundry, y la puerta de enlace recoge la identidad del pod a través de la cadena de credenciales predeterminada de ese proveedor. Para un emparejamiento entre nubes, como un ascendente de Bedrock en GKE, establezca credenciales explícitas en el bloque `auth` del ascendente en su lugar. La [referencia de `upstreams`](/es/claude-apps-gateway-config#upstreams) tiene detalles de configuración por plataforma.

101</Note>

102 

103<h3 id="cloud-run">

104 Cloud Run

105</h3>

106 

107Configure el servicio de la siguiente manera:

108 

109* Deje `listen.port` en su predeterminado de `8080`, que coincide con el `PORT` predeterminado de Cloud Run, o establezca `port: ${PORT}`

110* Establezca `public_url` en el origen externamente alcanzable. Para producción esto es normalmente el nombre de host de un equilibrador de carga interno, porque `/login` [rechaza direcciones públicas](/es/claude-apps-gateway#prerequisites) y la URL `*.run.app` se resuelve a una, así que la URL de Cloud Run sola funciona solo para una prueba de humo `curl` o navegador. La excepción es una red donde `*.run.app` se resuelve privadamente a través de Private Service Connect y una zona privada de Cloud DNS; en esa topología la URL de Cloud Run es un `public_url` válido. El [ejemplo trabajado de Google Cloud](/es/claude-apps-gateway-on-gcp#deploy-the-gateway) cubre ambos.

111* Monte la configuración como un volumen secreto

112* Establezca `min-instances: 1` para evitar un descubrimiento OIDC frío en la primera solicitud

113 

114<Note>

115 Para un ejemplo completo trabajado en Google Cloud, cubriendo Cloud Run o GKE, Cloud SQL y Secret Manager, consulte [Implementar en Google Cloud](/es/claude-apps-gateway-on-gcp).

116</Note>

117 

118<h3 id="push-the-gateway-url-to-developer-machines">

119 Enviar la URL de la puerta de enlace a máquinas de desarrolladores

120</h3>

121 

122Una vez que la puerta de enlace está sirviendo, envíe `forceLoginMethod` y `forceLoginGatewayUrl` a la máquina de cada desarrollador a través de configuraciones administradas, a través de MDM o escribiendo directamente el `managed-settings.json` específico del sistema operativo. Sin esto, `/login` muestra el selector de cuenta estándar sin opción de puerta de enlace. Consulte [Configuraciones administradas del lado del cliente](/es/claude-apps-gateway-config#client-side-managed-settings) para las rutas de archivo.

123 

124<h2 id="operations">

125 Operaciones

126</h2>

127 

128Una vez que la puerta de enlace está sirviendo tráfico, la operación día a día es leer sus registros, sondear su salud y rotar sus secretos en su horario. Las subsecciones cubren cada una, más lo que Postgres contiene y cómo se comportan las actualizaciones y reversiones.

129 

130<h3 id="logs">

131 Registros

132</h3>

133 

134La puerta de enlace escribe dos flujos a stderr, ambos amigables con JSON:

135 

136* **Eventos de auditoría**: 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`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `spend.blocked` y `admin.denied`. Los campos varían según el evento:

137 * Los eventos de acuñación y actualización exitosos llevan `sub`, `email`, `client_ip` y el resultado

138 * Los eventos de denegación llevan la razón, ruta e IP del cliente, ya que no existe identidad en la denegación

139 * `inference` registra qué ascendente sirvió la solicitud y el estado de respuesta

140 * `admin.denied` registra un intento de autenticación de API de administrador rechazado con la razón (`invalid_key` o `no_credentials`), IP del cliente, método y ruta, sin el material de clave presentado

141* **Registros operacionales**: líneas legibles por humanos con prefijo `[gateway]` para arranque, advertencias y errores ascendentes. La variable de entorno `CLAUDE_GATEWAY_LOG_LEVEL` controla la verbosidad y acepta `info`, `warn` o `error`, con `info` como predeterminado. No afecta los eventos de auditoría, que siempre se emiten.

142 

143<h3 id="health">

144 Salud

145</h3>

146 

147La puerta de enlace sirve `GET /healthz` como una sonda de vivacidad y `GET /readyz` como una sonda de preparación; `/readyz` verifica que el almacén sea alcanzable. Ambas están exentas de `access_control.allow_cidrs`, así que los sondeos siguen funcionando en un oyente bloqueado.

148 

149El documento de descubrimiento de OAuth en `/.well-known/oauth-authorization-server` también devuelve `200` solo después de que se cargue la configuración, descubrimiento OIDC, construcción de cliente ascendente y migración de Postgres tengan éxito, así que funciona como una verificación de arranque de extremo a extremo.

150 

151Una puerta de enlace en ejecución también sirve una descripción de las rutas y formas de solicitud que acepta en `<public_url>/protocol`, coincidida con la versión que está ejecutando. El contenido no es estable entre versiones.

152 

153<h3 id="outage-behavior">

154 Comportamiento de interrupciones

155</h3>

156 

157Si Postgres se cae, la puerta de enlace en sí sigue sirviendo desarrolladores con sesión iniciada y los nuevos inicios de sesión fallan. Si los desarrolladores realmente siguen trabajando depende de cómo su orquestador maneja la preparación:

158 

159* **Sesiones existentes**: los tokens portadores se validan localmente con el secreto JWT, las actualizaciones de sesión no tocan el almacén, y el proceso de puerta de enlace aún puede servir inferencia

160* **Nuevos inicios de sesión**: fallan hasta que Postgres se recupere, porque el flujo de dispositivo y sus contadores de límite de velocidad viven en Postgres

161* **[Cumplimiento de límite de gasto](/es/claude-apps-gateway-spend-limits#postgres-availability)**: falla abierto de forma predeterminada durante la interrupción, así que la inferencia aún fluye; cámbielo a falla cerrada si preferiría bloquear que ejecutar sin medidor

162* **Preparación**: `/readyz` reporta no listo durante la interrupción, así que los orquestadores que cierren tráfico en preparación eliminan cada réplica de rotación a la vez. En esa topología todo el tráfico, incluida la inferencia que la puerta de enlace podría servir, falla en el equilibrador de carga hasta que Postgres se recupere. La sonda de vivacidad en `/healthz` sigue pasando, así que las réplicas no se reinician. Apunte la sonda de preparación a `/healthz` en su lugar si preferiría que los desarrolladores con sesión iniciada sigan trabajando a través de una interrupción de almacén; el costo es que los nuevos inicios de sesión fallan contra una réplica que aún reporta lista.

163 

164Si su IdP se cae, las sesiones existentes funcionan hasta `ttl_hours`, y los nuevos inicios de sesión y actualizaciones fallan. Establezca un `ttl_hours` más largo si su IdP tiene ventanas de mantenimiento frecuentes.

165 

166<h3 id="jwt-secret-rotation">

167 Rotación de secreto JWT

168</h3>

169 

170Rote el secreto de firma en tres pasos para que las sesiones existentes permanezcan válidas:

171 

1721. Genere un nuevo secreto. Antepóngalo a la matriz `session.jwt_secret`.

1732. Despliegue la implementación. Los nuevos tokens firman con el nuevo secreto; los tokens antiguos aún se verifican.

1743. Después de `ttl_hours` más un margen, elimine el secreto antiguo y despliegue nuevamente.

175 

176La rotación también es la única forma de forzar sesiones antes de que expiren: los tokens portadores se validan localmente contra el secreto JWT, así que no hay revocación por sesión. Reemplazar el secreto directamente, sin mantener el antiguo en la matriz, invalida cada sesión pendiente a la vez. Para desaprovisionamiento individual, desaprovision el usuario en su IdP; su sesión termina dentro de `ttl_hours`.

177 

178<h3 id="postgres">

179 Postgres

180</h3>

181 

182La puerta de enlace contiene cinco tablas, todas creadas por sus migraciones de tiempo de arranque:

183 

184| Tabla | Contenidos | Retención |

185| ------------------ | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |

186| `kv` | Concesiones de dispositivo (TTL de 10 minutos) y contadores de límite de velocidad | TTL por fila |

187| `spend` | Contadores de gasto de período a la fecha por principal, en centavos | `admin.spend_retention_months`, predeterminado 13 |

188| `spend_limits` | Límites de gasto configurados | Hasta eliminado a través de la API |

189| `admin_audit` | Rastro de mutación de API de administrador | `admin.audit_retention_days`, predeterminado 365 |

190| `principal_emails` | Correo electrónico de último visto de cada principal, nombre para mostrar y grupos de IdP. Contiene PII. | `admin.identity_retention_days` desde última actividad, predeterminado 90 |

191 

192Un bucle de 30 segundos expira filas `kv` pasadas su TTL, y un barrido cada hora impone las ventanas de retención en las tablas de gasto, así que nada crece sin límite. Sin [límites de gasto](/es/claude-apps-gateway-spend-limits) configurados, solo se escribe `kv`. Si su política de seguridad prohíbe DDL del rol de aplicación, pre-cree estas tablas y `_migrations` con un rol de administrador y otorgue al rol de aplicación `SELECT, INSERT, UPDATE, DELETE` en cada una.

193 

194Con límites de gasto en uso, una base de datos perdida significa pérdida de seguimiento de gasto y límites, no solo re-inicios de sesión de desarrolladores, así que ejecute copias de seguridad regulares. Para borrar un desarrollador que se fue inmediatamente en lugar de esperar en retención, ejecute `DELETE FROM principal_emails WHERE principal = '<sub>'` directamente; eso elimina la única tabla que contiene su correo electrónico, nombre y grupos. Las filas `spend` y `admin_audit` hacen referencia solo al `sub` OIDC seudónimo.

195 

196<h3 id="upgrades">

197 Actualizaciones

198</h3>

199 

200Las réplicas son sin estado, así que un reinicio rodante es seguro en cualquier momento. La puerta de enlace ejecuta migraciones de esquema al arrancar, lo que significa que implementar el nuevo binario auto-migra la base de datos. Si el rol de base de datos no puede ejecutar DDL, pre-cree el esquema, incluida la tabla `_migrations` sembrada a la versión actual; de lo contrario el arranque falla intentando `CREATE TABLE`.

201 

202Las migraciones son solo anexo, así que revertir a un binario anterior que conoce menos migraciones es seguro; ignora las filas adicionales. La reversión también re-valida el YAML contra el esquema del binario más antiguo, así que una configuración que adoptó una clave introducida por la versión más nueva falla al arrancar en la más antigua. Elimine la nueva clave antes de revertir.

203 

204Porque fija la versión de la puerta de enlace en su propia imagen, las correcciones en nuevas versiones de Claude Code, incluidas las correcciones de seguridad, llegan a su implementación solo cuando actualiza el pin y redeploy. Incluya la puerta de enlace en el mismo ciclo de parches que usa para otros servicios que contienen credenciales de producción.

205 

206<h2 id="security">

207 Seguridad

208</h2>

209 

210Esta sección responde las preguntas que una revisión de seguridad hace: qué datos fluyen a través de la puerta de enlace y hacia dónde van, qué ataques defiende el diseño, y qué respuestas pertenecen en un cuestionario de cumplimiento.

211 

212<h3 id="data-flow">

213 Flujo de datos

214</h3>

215 

216| Datos | Ruta | Enviado a Anthropic por la puerta de enlace |

217| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------- |

218| Inferencia (indicaciones, finalizaciones) | CLI → puerta de enlace → su ascendente | Solo si la API de Anthropic es un ascendente configurado |

219| Telemetría (métricas OTLP, más [registros y trazas opcionales](/es/claude-apps-gateway-config#telemetry)) | CLI → puerta de enlace → su recopilador | Nunca |

220| Identidad (correo electrónico, grupos, sub) | IdP → puerta de enlace → JWT → CLI; el CLI lo marca en exportaciones OTLP | Nunca |

221| Configuraciones administradas | Su YAML de puerta de enlace → CLI | Nunca |

222| Registro de auditoría | Stderr de puerta de enlace → su agregador | Nunca |

223 

224<h3 id="threat-model-summary">

225 Resumen del modelo de amenaza

226</h3>

227 

228La puerta de enlace se sienta dentro de su perímetro de red, pero las máquinas portátiles de desarrolladores individuales no se tratan como confiables. El diseño cuenta para esto de tres maneras:

229 

230* Los desarrolladores sostienen JWTs de corta duración en lugar de claves ascendentes sin procesar. La pierna CLI-a-puerta de enlace usa la concesión de dispositivo RFC 8628, y el intercambio de código de autorización de la puerta de enlace con el IdP ejecuta PKCE en la configuración predeterminada, así que un código de autorización de IdP interceptado es inútil.

231* La página de verificación de dispositivo impone POST del mismo origen y un límite de velocidad por IP por RFC 8628 §5.1. Consulte [Resistencia de fuerza bruta de código de usuario](#user-code-brute-force-resistance).

232* Las solicitudes salientes pasan por una protección de falsificación de solicitud del lado del servidor (SSRF) que resuelve DNS, bloquea direcciones de enlace local y metadatos en la nube más loopback de forma predeterminada, y fija la conexión a la IP resuelta, así que URLs influenciadas por el operador como el IdP y destinos OTLP no pueden ser redirigidas a puntos finales de metadatos en la nube. Los rangos privados RFC 1918 se permiten deliberadamente, porque los IdPs y recopiladores OTLP comúnmente viven en IPs privadas. Para desarrollo local contra un IdP de loopback o recopilador, establezca `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` en el entorno de la puerta de enlace; déjelo sin establecer en producción.

233 

234Si agrega sus propios controles de salida, la puerta de enlace debe alcanzar el servidor de metadatos siempre que use credenciales de metadatos de instancia como identidad de carga de trabajo.

235 

236Dos amenazas están fuera del alcance porque son su infraestructura para asegurar:

237 

238* **Un host de puerta de enlace comprometido**: el host tanto contiene la credencial ascendente como distribuye [configuraciones administradas](/es/claude-apps-gateway-config#managed) a cada desarrollador conectado, así que el control sobre la configuración de la puerta de enlace es comparable al control sobre su MDM. El diálogo de aprobación única del CLI para configuraciones capaces de shell limita cambios silenciosos pero no reemplaza la seguridad del host.

239* **Un proveedor OIDC malicioso**: el proveedor firma los id\_tokens que la puerta de enlace confía, así que puede afirmar cualquier identidad. Verificar y asegurar su IdP es su responsabilidad.

240 

241<h3 id="user-code-brute-force-resistance">

242 Resistencia de fuerza bruta de código de usuario

243</h3>

244 

245El `user_code` que un desarrollador escribe en la página de verificación `/device` son 8 caracteres extraídos de un alfabeto de 20 caracteres, que produce 20⁸ o aproximadamente 2.56×10¹⁰ combinaciones, y expira después de 10 minutos.

246 

247La puerta de enlace aplica límites de velocidad por IP en los puntos finales de concesión de dispositivo, configurables a través de [`rate_limits`](/es/claude-apps-gateway-config#http-tuning). Aumente los límites si muchos desarrolladores inician sesión desde una única dirección NAT corporativa compartida. Los límites se aplican solo al flujo de inicio de sesión, no a la inferencia.

248 

249<h3 id="compliance-posture">

250 Postura de cumplimiento

251</h3>

252 

253* **Residencia de datos**: el plano de datos propio de la puerta de enlace no envía nada a Anthropic a menos que la API de Anthropic sea un ascendente configurado; cuando lo es, su acuerdo de manejo de datos existente se aplica a la ruta de inferencia. Telemetría, auditoría, identidad y configuraciones van solo a los destinos que configura.

254* **Tráfico de proceso de host**: el proceso de host es el CLI de Claude Code, que puede enviar análisis de inicio y verificaciones de actualización a Anthropic. Para implementaciones de salida estricta, establezca `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` en el entorno del contenedor de la puerta de enlace.

255* **Análisis del cliente**: el CLI deshabilita su propio análisis de uso mientras está conectado a una puerta de enlace, y el informe de errores está desactivado de forma predeterminada en superficies de API de terceros.

256* **Máquinas cliente**: los CLIs de desarrolladores aún envían verificaciones de nombre de host de WebFetch y verificaciones de versión a Anthropic a menos que `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` y `skipWebFetchPreflight: true` estén establecidos. Consulte [uso de datos](/es/data-usage).

257* **Calificaciones de encuesta**: la credencial de puerta de enlace deshabilita el sumidero de calificación vinculado a Anthropic, así que las calificaciones no se envían a Anthropic.

258* **Compartir transcripción**: elegir Sí en el indicador de compartir transcripción de una encuesta escribe un archivo local bajo `~/.claude/feedback-bundles/` en lugar de cargar a Anthropic.

259* **Actualizaciones del cliente**: las verificaciones de actualización son separadas del tráfico de puerta de enlace. Fije versiones a través de su propia distribución y establezca `DISABLE_UPDATES` si las máquinas portátiles no deben obtener versiones. `DISABLE_AUTOUPDATER` detiene solo actualizaciones de fondo mientras `claude update` aún funciona.

260* **TLS**: sirva `public_url` sobre HTTPS en producción, ya sea desde el oyente propio de la puerta de enlace a través de `listen.tls` o desde un ingress que termina TLS frente a réplicas HTTP simples con `listen.public_url` establecido. La puerta de enlace no rechaza HTTP simple. El IdP debe servir HTTPS en producción, y Postgres admite `?sslmode=require`. Establezca `Strict-Transport-Security` en su ingress.

261* **Divulgación de vulnerabilidad**: siga [Reportar problemas de seguridad](/es/security#reporting-security-issues)

262 

263<h2 id="troubleshooting">

264 Solución de problemas

265</h2>

266 

267Para preguntas y comentarios, use [soporte de Claude Code](https://support.claude.com/en/collections/14445694-claude-code), o abra un problema en el [repositorio de GitHub de Claude Code](https://github.com/anthropics/claude-code/issues). Al reportar un problema, incluya:

268 

269* **Problema de puerta de enlace**: el stderr de la puerta de enlace para la ventana relevante, su `gateway.yaml` con secretos redactados, la versión de la puerta de enlace, mostrada en la página de inicio en `/` y en el encabezado de respuesta `x-cc-gateway-version` en `/managed/settings`, y qué cambió recientemente

270* **Problema de inicio de sesión**: el desarrollador ejecuta `claude --debug-file ./claude-debug.txt`, reproduce, y envía ese archivo más el registro de auditoría de la puerta de enlace para la misma ventana

271* **Problema de inferencia**: el modelo solicitado, los ascendentes configurados, y el registro de auditoría de la puerta de enlace para la solicitud, que registra qué ascendente la sirvió y el estado de respuesta

272 

273| Síntoma | Causa | Solución |

274| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

275| El `/login` de un desarrollador muestra el selector de cuenta estándar en lugar de la pantalla **Cloud gateway** | `forceLoginMethod` o `forceLoginGatewayUrl` no está establecido en configuraciones administradas en esa máquina | Implemente el [archivo de configuraciones administradas](/es/claude-apps-gateway#set-the-gateway-url) en el dispositivo; `/login` lee la URL de la puerta de enlace desde allí |

276| 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 |

277| 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](/es/claude-apps-gateway#prerequisites). |

278| CLI `/login`: `Gateway login requires a direct connection and does not support connecting through an HTTP proxy` | 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 |

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

280| 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`. |

281| El arranque sale: `requires the native binary` | Ejecutando bajo Node en lugar del binario nativo | Instale Claude Code con uno de los [métodos de instalación independiente](/es/setup) |

282| El arranque sale con un error de descubrimiento OIDC después de `config.load` | `oidc.issuer` no alcanzable, o cadena TLS no confiable | Verifique que el emisor sea alcanzable desde el pod y sirva `/.well-known/openid-configuration`. Establezca `ca_cert_pem` para PKI privada. |

283| El arranque sale con un error de permiso de Postgres | El rol de aplicación carece de `CREATE TABLE` | Pre-cree el esquema con un rol de administrador y otorgue DML al rol de aplicación, o otorgue DDL temporalmente para arranques que apliquen nuevas migraciones |

284| `/oauth/callback` muestra "Sign-in could not be completed" | Dominio de correo electrónico rechazado, validación de id\_token falló, o `email_verified` es explícitamente `false`, que la puerta de enlace siempre rechaza sin anulación | Verifique `allowed_email_domains` y que el IdP devuelva una reclamación `email` verificada. Para `email_verified: false`, corrija la verificación del lado del IdP. Si su IdP emite correo electrónico bajo un nombre de reclamación diferente, establezca `oidc.email_claim`. |

285| Registro: `token exchange failed: id_token missing email claim` | El IdP no está incluyendo `email` en el id\_token de forma predeterminada. Este rechazo se dispara solo cuando `allowed_email_domains` está establecido; sin él, un correo electrónico faltante acuña una sesión sin correo electrónico | Configure el IdP para emitir `email` en el id\_token. Okta: agregue `email` a las reclamaciones de token de ID de un servidor de autorización personalizado. Entra: agregue `email` como una reclamación opcional en el registro de aplicación. PingFederate: habilite una Política de OpenID Connect que emita `email`. Si el IdP sirve `email` desde el punto final de userinfo pero no lo incluirá en el id\_token, como el servidor de autorización de la organización de Okta, establezca `oidc.userinfo_fallback: true`. |

286| Cada solicitud de Bedrock devuelve 502; el registro muestra `Could not load credentials from any providers` | En EC2, el límite de salto predeterminado de IMDSv2 de 1 bloquea la solicitud de metadatos de instancia desde dentro del contenedor. El arranque y `/readyz` pasan de todas formas porque el SDK de AWS resuelve credenciales de instancia en la primera solicitud, no en la construcción del cliente | Aumente el límite de salto con `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, o establézcalo en la plantilla de lanzamiento. El cambio se aplica a cada contenedor en la instancia. Prefiera roles de tarea de ECS donde estén disponibles, que leen credenciales desde el punto final de credenciales del contenedor de ECS y evitan el cambio por completo, o aplique el cambio en una instancia de puerta de enlace dedicada para limitar la exposición. |

287| Error de IdP: unknown or unsupported scope | El IdP rechaza alcances que no reconoce | Establezca `oidc.scopes` exactamente a la lista que su IdP acepta; debe incluir `openid`. El predeterminado es `openid profile email offline_access`. |

288| Las sesiones no se renuevan silenciosamente después de establecer `oidc.scopes` | `offline_access` fue eliminado de la anulación | Agregue `offline_access` de vuelta si su IdP lo admite. Sin un token de actualización, los desarrolladores vuelven a ejecutar el inicio de sesión del navegador cada `session.ttl_hours`. |

289| El navegador muestra "This request came from another site and was blocked" | POST de formulario entre sitios, bloqueado como protección CSRF. Esperado para páginas incrustadas o proxied | Abra el enlace de verificación directamente |

290| Chrome bloquea el botón Aprobar con "Refused to send form data … violates … Content Security Policy directive: form-action", pero la misma página funciona en Safari o Firefox | Chrome impone `form-action` contra toda la cadena de redirección. Su IdP redirige hacia adelante a un segundo host que no está en la lista blanca. | Agregue cada origen adicional en la cadena de redirección a `oidc.form_action_origins`. Abra Chrome DevTools → Consola en la página Aprobar para ver qué origen fue bloqueado. |

291| El inicio de sesión se completa en el IdP pero la devolución de llamada falla, con un error de CSP en Chrome o "this sign-in link has expired" en Safari | El IdP devolvió el código a través de `response_mode=form_post`, que lo auto-envía entre orígenes a través de POST a `/oauth/callback`. Chrome bloquea eso bajo una CSP estricta; Safari permite el envío pero la devolución de llamada lee solo la cadena de consulta. | Asegúrese de que su IdP honre `response_mode=query`, que la puerta de enlace solicita explícitamente para que la devolución de llamada sea una redirección simple |

292| El inicio de sesión funciona localmente pero falla detrás de un ALB | `public_url` no establecido, así que el IdP obtiene el origen interno `http://` como `redirect_uri` | Establezca `listen.public_url` al origen externo `https://` |

293| El desarrollador ve el indicador de confianza repetidamente | El certificado TLS está rotando por réplica o por solicitud | Use un certificado estable en el ingress, o termine TLS una vez y ejecute réplicas sobre HTTP simple internamente |

294| CLI `/login`: "Could not verify the gateway's TLS certificate" o `SELF_SIGNED_CERT_IN_CHAIN` | La cadena TLS de la puerta de enlace está firmada por una CA privada no en el almacén de confianza del host CLI | Claude Code lee el almacén de confianza del SO de forma predeterminada en el binario nativo y en Node 22.15 o posterior; [`CLAUDE_CODE_CERT_STORE`](/es/network-config#ca-certificate-store) controla este comportamiento. Si la CA está instalada en el almacén de confianza del SO, asegúrese de que los desarrolladores estén en un tiempo de ejecución actual. De lo contrario, establezca `NODE_EXTRA_CA_CERTS` al PEM del certificado de CA antes de lanzar. El indicador de huella digital de primera conexión aún se aplica. |

295 

296<h2 id="related">

297 Relacionado

298</h2>

299 

300* [Descripción general de la puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway): inicio rápido y conexión de desarrolladores

301* [Referencia de configuración](/es/claude-apps-gateway-config): cada opción de `gateway.yaml`

claude-apps-gateway-on-gcp.md +330 −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# Implementar Claude apps gateway en Google Cloud

6 

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

8 

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

11</Note>

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.

14 

15<h2 id="what-you’ll-build">

16 Lo que construirá

17</h2>

18 

19<Frame>

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

21</Frame>

22 

23La configuración de referencia aprovisiona:

24 

25* 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 enlace

27* Instancia de **Cloud SQL para PostgreSQL**, solo IP privada, para el [store](/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 Postgres

29* **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 HTTPS

31 

32<h2 id="prerequisites">

33 Requisitos previos

34</h2>

35 

36* Un proyecto de GCP con facturación habilitada y permiso para crear los recursos anteriores

37* 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ón

39* 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)

41* Un nombre de host TLS para la puerta de enlace, típicamente un nombre DNS interno que apunta al equilibrador de carga

42 

43Establezca el proyecto y la región una vez:

44 

45```bash theme={null}

46export PROJECT_ID=<your-project>

47export REGION=us-east5 # a region where the Claude models you need are published in Model Garden

48gcloud config set project "$PROJECT_ID"

49```

50 

51<h2 id="deploy-the-gateway">

52 Implementar la puerta de enlace

53</h2>

54 

55Los pasos a continuación aprovisionan la implementación completa con comandos `gcloud`.

56 

57<Steps>

58 <Step title="Habilitar APIs">

59 Habilite las API de servicio que utiliza el tutorial:

60 

61 ```bash theme={null}

62 gcloud services enable \

63 aiplatform.googleapis.com \

64 artifactregistry.googleapis.com \

65 sqladmin.googleapis.com \

66 secretmanager.googleapis.com \

67 iamcredentials.googleapis.com \

68 iam.googleapis.com \

69 compute.googleapis.com \

70 servicenetworking.googleapis.com \

71 run.googleapis.com \

72 container.googleapis.com

73 ```

74 

75 Las API que necesita dependen de la ruta de implementación:

76 

77 * `compute` y `servicenetworking`: necesarias para la ruta de Cloud SQL de IP privada

78 * `run`: solo Cloud Run

79 * `container`: solo GKE

80 </Step>

81 

82 <Step title="Crear la cuenta de servicio y otorgar IAM">

83 La puerta de enlace se ejecuta como una cuenta de servicio dedicada con permiso para llamar a Agent Platform. Alcanza Cloud SQL sobre la VPC con un usuario de contraseña, por lo que no se requiere ningún rol de IAM de Cloud SQL:

84 

85 ```bash theme={null}

86 gcloud iam service-accounts create claude-gateway --display-name="Claude apps gateway"

87 SA="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com"

88 

89 gcloud projects add-iam-policy-binding "$PROJECT_ID" \

90 --member="serviceAccount:${SA}" --role="roles/aiplatform.user" --condition=None

91 ```

92 

93 Luego habilite los modelos de Claude para el proyecto en Model Garden; los modelos se publican en regiones específicas, así que verifique cada tarjeta de modelo.

94 </Step>

95 

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:

98 

99 ```bash theme={null}

100 gcloud artifacts repositories create claude-gateway \

101 --repository-format=docker --location="$REGION"

102 gcloud auth configure-docker "${REGION}-docker.pkg.dev" --quiet

103 

104 # Cloud Run requires linux/amd64. --provenance=false avoids a buildx OCI

105 # image index that Cloud Run rejects.

106 docker build --platform=linux/amd64 --provenance=false \

107 -t "${REGION}-docker.pkg.dev/${PROJECT_ID}/claude-gateway/gateway:<version>" .

108 docker push "${REGION}-docker.pkg.dev/${PROJECT_ID}/claude-gateway/gateway:<version>"

109 ```

110 </Step>

111 

112 <Step title="Aprovisionar Cloud SQL para PostgreSQL">

113 Cree la instancia en una VPC a través de Private Services Access para que no tenga IP pública; esto también satisface proyectos donde `constraints/sql.restrictPublicIp` se aplica:

114 

115 ```bash theme={null}

116 VPC=cc-gateway-vpc

117 gcloud compute networks create "$VPC" --subnet-mode=custom

118 gcloud compute networks subnets create cc-gateway-subnet \

119 --network="$VPC" --region="$REGION" --range=10.0.0.0/24

120 

121 # Private Services Access: one-time per VPC

122 gcloud compute addresses create "google-managed-services-${VPC}" \

123 --global --purpose=VPC_PEERING --prefix-length=16 --network="$VPC"

124 gcloud services vpc-peerings connect \

125 --service=servicenetworking.googleapis.com \

126 --ranges="google-managed-services-${VPC}" --network="$VPC"

127 

128 gcloud sql instances create claude-gateway-db \

129 --database-version=POSTGRES_16 --tier=db-g1-small --region="$REGION" \

130 --network="projects/${PROJECT_ID}/global/networks/${VPC}" --no-assign-ip

131 gcloud sql databases create claude_gateway --instance=claude-gateway-db

132 PGPASS="$(openssl rand -hex 24)"

133 gcloud sql users create gateway --instance=claude-gateway-db --password="$PGPASS"

134 

135 PRIVATE_IP="$(gcloud sql instances describe claude-gateway-db \

136 --format='value(ipAddresses[0].ipAddress)')"

137 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${PRIVATE_IP}:5432/claude_gateway?sslmode=require"

138 ```

139 

140 El tiempo de ejecución de Cloud Run o GKE debe estar en, o enrutado hacia, esta VPC.

141 </Step>

142 

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.

145 

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

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

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 

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.

152 

153 | Front end | `trusted_proxies` |

154 | ---------------------------------------------------------------- | ------------------------------------------------------- |

155 | Cloud Run alcanzado directamente, sin equilibrador de carga | `[169.254.0.0/16]` |

156 | Equilibrador de carga de aplicaciones interno frente a Cloud Run | `169.254.0.0/16` más el CIDR de su subred de solo proxy |

157 | GKE Ingress interno, clase `gce-internal` | El CIDR de su subred de solo proxy |

158 

159 El ejemplo a continuación utiliza los valores del equilibrador de carga interno frente a Cloud Run.

160 

161 ```yaml gateway.yaml theme={null}

162 listen:

163 host: 0.0.0.0

164 port: 8080

165 public_url: https://claude-gateway.internal.example.com

166 trusted_proxies: [169.254.0.0/16, <your-proxy-only-subnet-cidr>]

167 

168 oidc:

169 issuer: https://accounts.google.com

170 client_id: <your-oauth-client-id>

171 client_secret: ${OIDC_CLIENT_SECRET} # GKE: ${file:/secrets/oidc-client-secret}

172 allowed_email_domains: [example.com]

173 # Google ignores offline_access; these yield refresh tokens:

174 scopes: [openid, profile, email]

175 extra_auth_params: { access_type: offline, prompt: consent }

176 

177 session:

178 jwt_secret: ${GATEWAY_JWT_SECRET} # GKE: ${file:/secrets/jwt-secret}

179 

180 store:

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

182 

183 upstreams:

184 - provider: vertex

185 region: <your-region> # must match $REGION

186 project_id: <your-project>

187 auth: {} # ADC via the runtime service account

188 ```

189 

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.

192 </Note>

193 </Step>

194 

195 <Step title="Almacenar secretos en Secret Manager">

196 Cree cuatro secretos y otorgue `roles/secretmanager.secretAccessor` a la cuenta de servicio `claude-gateway`:

197 

198 | Secreto | Origen |

199 | ---------------------------- | --------------------------------------------- |

200 | `gateway-jwt-secret` | `openssl rand -base64 32` |

201 | `gateway-oidc-client-secret` | Google Cloud Console → Cliente OAuth |

202 | `gateway-postgres-url` | `$GATEWAY_POSTGRES_URL` del paso de Cloud SQL |

203 | `gateway-config` | el `gateway.yaml` completo del paso anterior |

204 

205 La forma en que los secretos llegan al contenedor difiere según la ruta:

206 

207 * En GKE se montan como archivos a través del controlador CSI de Secret Manager, y `gateway.yaml` hace referencia a `${file:/secrets/...}`.

208 * En Cloud Run, que no puede montar múltiples secretos en un directorio, `gateway.yaml` se monta como un archivo y los otros tres se inyectan como variables de entorno, por lo que `gateway.yaml` hace referencia a `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` y `${GATEWAY_POSTGRES_URL}` en su lugar.

209 </Step>

210 

211 <Step title="Implementar">

212 <Tabs>

213 <Tab title="Cloud Run">

214 El comando a continuación se implementa para producción detrás de un equilibrador de carga interno.

215 

216 ```bash theme={null}

217 gcloud run deploy claude-gateway \

218 --image="${REGION}-docker.pkg.dev/${PROJECT_ID}/claude-gateway/gateway:<version>" \

219 --region="$REGION" \

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

221 --min-instances=1 \

222 --timeout=3600 \

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

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

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

226 --no-invoker-iam-check

227 ```

228 

229 La salida directa de VPC, a través de `--network`, `--subnet` y `--vpc-egress=private-ranges-only`, permite que el servicio alcance la IP privada de Cloud SQL directamente. La salida pública a los puntos finales de Agent Platform y `accounts.google.com` va directamente a Internet en lugar de a través de la VPC, por lo que no se necesita Cloud NAT.

230 

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

232 

233 Dos indicadores admiten solicitudes no autenticadas:

234 

235 * `--no-invoker-iam-check`: deshabilita la verificación sin ningún enlace `allUsers` para administrar, y funciona bajo Domain Restricted Sharing

236 * `--allow-unauthenticated`: otorga al rol `run.invoker` a `allUsers`; úselo si su organización no permite `--no-invoker-iam-check`

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.

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:

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.

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.

244 

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

246 

247 Actualice el URI de redirección autorizado del cliente OAuth a `<public_url>/oauth/callback` antes del primer inicio de sesión. Reimplemente después de cambiar `public_url`, porque la puerta de enlace construye su origen público solo a partir de esa configuración e ignora `X-Forwarded-Host` y `X-Forwarded-Proto`. `X-Forwarded-For` se honra para las IP de cliente solo cuando `listen.trusted_proxies` está establecido.

248 </Tab>

249 

250 <Tab title="GKE">

251 El clúster debe estar en la `$VPC` creada en el paso de Cloud SQL para que los pods puedan alcanzar la IP privada de la base de datos; el emparejamiento de VPC solo no funciona, porque la IP privada de Cloud SQL es en sí misma una red emparejada y el emparejamiento no es transitivo. Para crear un nuevo clúster en esa VPC, pase `--network="$VPC" --subnetwork=cc-gateway-subnet` a `gcloud container clusters create`.

252 

253 Habilite Workload Identity en el clúster y sus grupos de nodos, luego vincule la cuenta de servicio de Google a la cuenta de servicio de Kubernetes para que los pods hereden sus credenciales:

254 

255 ```bash theme={null}

256 gcloud container clusters update <cluster> --region="$REGION" \

257 --workload-pool="${PROJECT_ID}.svc.id.goog"

258 # On a Standard cluster, existing node pools also need GKE_METADATA;

259 # Autopilot enables this by default.

260 gcloud container node-pools update <pool> --cluster=<cluster> \

261 --region="$REGION" --workload-metadata=GKE_METADATA

262 

263 kubectl create namespace claude-gateway

264 kubectl create serviceaccount gateway -n claude-gateway

265 

266 gcloud iam service-accounts add-iam-policy-binding \

267 "claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \

268 --role roles/iam.workloadIdentityUser \

269 --member "serviceAccount:${PROJECT_ID}.svc.id.goog[claude-gateway/gateway]"

270 

271 kubectl annotate serviceaccount gateway -n claude-gateway \

272 iam.gke.io/gcp-service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com"

273 ```

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:

276 

277 * `serviceAccountName: gateway`

278 * el controlador CSI de Secret Manager montando secretos en `/secrets`

279 * la sonda de disponibilidad apuntando a `GET /readyz`

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.

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

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.

286 </Tab>

287 </Tabs>

288 </Step>

289 

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.

292 </Step>

293</Steps>

294 

295<h2 id="terraform-reference">

296 Referencia de Terraform

297</h2>

298 

299Los [activos de implementación de referencia](https://github.com/anthropics/claude-code/tree/main/examples/gateway/gcp) automatizan la ruta de Cloud Run en esta página; los activos de configuración e imagen se aplican a ambas rutas:

300 

301* `setup.sh`: un aprovisionador `gcloud` idempotente que recorre la ruta completa de Cloud Run, desde habilitar API hasta la primera implementación

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

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

304 

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

306 

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

308 

309<h2 id="troubleshooting">

310 Solución de problemas

311</h2>

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.

314 

315| Síntoma | Causa | Solución |

316| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

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

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

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

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

323 

324<h2 id="next-steps">

325 Próximos pasos

326</h2>

327 

328* [Referencia de configuración](/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 seguridad

330* [Descripción general de Claude apps gateway](/es/claude-apps-gateway): inicio rápido y conexión de desarrolladores

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# Límites de gasto de la puerta de enlace de aplicaciones Claude

6 

7> Limite el gasto de cada desarrollador a través de la puerta de enlace de aplicaciones Claude por día, semana o mes. Establezca límites con una API de administrador y la puerta de enlace los aplica en vivo en cada solicitud.

8 

9Los límites de gasto limitan cuánto puede gastar cada desarrollador a través de su [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) en un día, semana o mes determinado. Cuando un desarrollador supera su límite, la puerta de enlace devuelve `429` en su siguiente solicitud y lo bloquea hasta que el período se reinicie o un administrador aumente el límite. Utilice límites de gasto para dar a cada desarrollador, grupo u organización completa un techo en una credencial que todos comparten.

10 

11Una puerta de enlace de aplicaciones Claude reenvía toda la inferencia a través de una credencial ascendente compartida, por lo que la factura de su proveedor atribuye todo a esa credencial, no a desarrolladores individuales. Sin límites por desarrollador, una flota de agentes descontrolada puede gastar todo el compromiso de la organización. Los límites de gasto son la vista por desarrollador de la puerta de enlace y el disyuntor en la parte superior de esa factura compartida.

12 

13<h2 id="set-a-cap">

14 Establecer un límite

15</h2>

16 

17Con el bloque [`admin:`](/es/claude-apps-gateway-config#admin) configurado en `gateway.yaml`, la puerta de enlace sirve una API de administrador en `/v1/organizations/spend_limits` y aplica límites en vivo en cada solicitud de inferencia. Los límites en sí se establecen a través de esa API, no en `gateway.yaml`; cada solicitud `POST /v1/organizations/spend_limits` crea o reemplaza un límite de `{scope, amount, period}`. La API refleja las formas de cable de los puntos finales de límites de gasto de la [API de administrador](https://platform.claude.com/docs/en/manage-claude/admin-api) pública de Anthropic, por lo que un cliente HTTP escrito contra ese contrato puede dirigirse a la puerta de enlace cambiando su URL base.

18 

19Esta solicitud establece un valor predeterminado de toda la organización de \$500 por mes para cada desarrollador:

20 

21```bash theme={null}

22curl -sS https://claude-gateway.internal.example.com/v1/organizations/spend_limits \

23 -H "x-api-key: $GATEWAY_ADMIN_WRITE_KEY" \

24 -H "Content-Type: application/json" \

25 -d '{"scope": {"type": "organization"}, "amount": "50000", "period": "monthly"}'

26```

27 

28Esta solicitud superpone un límite más estricto de \$100 por día en cada miembro del grupo `contractors`:

29 

30```bash theme={null}

31curl -sS https://claude-gateway.internal.example.com/v1/organizations/spend_limits \

32 -H "x-api-key: $GATEWAY_ADMIN_WRITE_KEY" \

33 -H "Content-Type: application/json" \

34 -d '{"scope": {"type": "rbac_group", "rbac_group_id": "contractors"}, "amount": "10000", "period": "daily"}'

35```

36 

37| Campo | Valores | Descripción |

38| ------------ | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

39| `scope.type` | `user`, `rbac_group`, `organization` | `user` se dirige a un desarrollador por su OpenID Connect (OIDC) `sub`, el ID de usuario estable que asigna su proveedor de identidad; páselo como `scope.user_id`. `rbac_group` se dirige a un [grupo de IdP](/es/claude-apps-gateway-config#managed) por nombre; páselo como `scope.rbac_group_id`. `organization` es el valor predeterminado de toda la organización. La puerta de enlace acepta los tres; el `POST` público de Anthropic es solo para usuarios hoy. |

40| `amount` | Cadena de número entero de centavos USD, o `null` | `null` es ilimitado. `"0"` es un límite cero, que bloquea cada solicitud. |

41| `period` | `daily`, `weekly`, `monthly` | Un ámbito puede contener un límite por período, y cada uno se aplica de forma independiente: un desarrollador se bloquea si supera cualquiera de ellos. |

42 

43Un límite de grupo u organización es un valor predeterminado por puesto que cada miembro hereda, no un grupo compartido. Por período, el límite efectivo de un desarrollador se resuelve en este orden: una anulación por usuario, luego la más restrictiva de sus límites de grupo, luego el valor predeterminado de la organización, luego ilimitado. [`admin.group_limit_mode: max`](/es/claude-apps-gateway-config#admin) invierte el desempate de múltiples grupos a menos restrictivo en su lugar.

44 

45<h3 id="authenticate-to-the-admin-api">

46 Autenticarse en la API de administrador

47</h3>

48 

49Envíe uno de:

50 

51* Un encabezado `x-api-key` que coincida con una clave en [`admin.write_keys`](/es/claude-apps-gateway-config#admin) para acceso completo, o `admin.read_keys` para acceso de solo `GET`. Cada clave lleva un `id` que aparece en el registro de auditoría como `admin-key:<id>`, así que dé a Terraform, CI y cada automatización la suya propia.

52* Un token de portador de puerta de enlace cuya reclamación `groups` incluya uno de [`admin.admin_groups`](/es/claude-apps-gateway-config#admin). Este es acceso completo y se audita como `oidc:<sub>`, así que prefieralo para administradores humanos.

53 

54<h2 id="how-enforcement-works">

55 Cómo funciona la aplicación

56</h2>

57 

58En cada solicitud `/v1/messages`, la puerta de enlace resuelve los límites del desarrollador y el gasto hasta la fecha del período en una consulta de Postgres. Si superan cualquier límite, la solicitud devuelve `429` con `error.type: billing_error` y el encabezado `x-should-retry: false`. El mensaje es `spend limit reached`, seguido de su [`admin.blocked_message`](/es/claude-apps-gateway-config#admin) si se establece.

59 

60`/v1/messages/count_tokens` está exento. El conteo de tokens es gratuito, por lo que se ejecuta independientemente del estado del límite.

61 

62Después de cada respuesta, un medidor de uso lee los conteos de tokens de la respuesta mientras se transmite al cliente, los precifica al precio de lista USD y incrementa los contadores de Postgres para los tres depósitos de período. El medidor es un lector único en la transmisión, por lo que los bytes del cliente no se tocan y una falla de medición no rompe la respuesta.

63 

64Los límites de gasto estiman el gasto a partir de conteos de tokens al precio de lista USD; son un disyuntor, no una factura. Para facturación autorizada, reconcilie contra el informe de uso de su propio proveedor, como la API de administrador de uso y costo de Anthropic, registros de invocación en Bedrock o monitoreo en la nube en Google Cloud.

65 

66La fijación de precios utiliza la misma tabla que la CLI de Claude Code utiliza para su propia visualización de costos, con la misma canonicalización de ID de modelo en formularios de Anthropic, Bedrock (`us.anthropic.…-v1:0`), Agent Platform (`claude-…@date`) y Foundry ID. Un ID de modelo que la tabla no puede colocar, como un nombre de implementación de Foundry o un ARN de perfil de inferencia, se precifica en el nivel predeterminado de modelo desconocido de \$5/\$25 por millón de tokens de entrada/salida en lugar de cero, por lo que un ID no reconocido no puede eludir un límite al no ser medido. La puerta de enlace advierte al arrancar y una vez por ID en tiempo de ejecución cuando un modelo se precifica a través de la alternativa.

67 

68Los abortos de cliente también se facturan. El ascendente informa tokens de salida solo en el marco terminal de la transmisión, por lo que una transmisión abortada no los lleva. El medidor mantiene una estimación de piso conservadora del tamaño del contenido transmitido, aproximadamente cuatro caracteres por token, y la factura cuando y solo cuando falta el marco de uso terminal. Una transmisión completa siempre factura el conteo informado por el ascendente. Sin esto, un desarrollador limitado podría transmitir salida y abortar cada solicitud inmediatamente antes del final, gastando sin nunca ser contado.

69 

70<h3 id="postgres-availability">

71 Disponibilidad de Postgres

72</h3>

73 

74La consulta previa consulta Postgres con un tiempo de espera de dos segundos. Si el almacén es inaccesible o agota el tiempo de espera, la aplicación falla abierta de forma predeterminada: la solicitud continúa y la puerta de enlace registra una advertencia. Establezca [`enforcement.fail_closed_on_error: true`](/es/claude-apps-gateway-config#enforcement) para fallar cerrado en su lugar, que devuelve el mismo `429 billing_error` con el mensaje `spend limit unavailable`. Fallar abierto evita que una interrupción del almacén se convierta en una interrupción de inferencia; fallar cerrado garantiza que no haya gasto sin medidor.

75 

76<h2 id="admin-api-reference">

77 Referencia de API de administrador

78</h2>

79 

80Los puntos finales a continuación se sirven bajo `/v1/organizations/spend_limits`.

81 

82| Método y ruta | Descripción |

83| ---------------------------------------------- | --------------------------------------------------------------------------------- |

84| `GET /v1/organizations/spend_limits` | Enumera los límites configurados. Consulta: `?limit=&after_id=&before_id=`. |

85| `POST /v1/organizations/spend_limits` | Crea o reemplaza un límite para `{scope, period}`. |

86| `GET /v1/organizations/spend_limits/{id}` | Obtiene un límite por su ID con prefijo `spl_`. |

87| `DELETE /v1/organizations/spend_limits/{id}` | Elimina un límite. Devuelve `{type: "spend_limit_deleted", id}`. |

88| `GET /v1/organizations/spend_limits/effective` | Límite resuelto y gasto hasta la fecha por principal por período. |

89| `GET /v1/organizations/spend_limits/audit` | Registro de mutación de administrador, más reciente primero. Consulta: `?limit=`. |

90 

91Las convenciones reflejan la API de administrador de Anthropic:

92 

93* Un `type` en cada objeto

94* IDs con prefijo `spl_`

95* Cantidades como cadenas de número entero de centavos USD; `POST` rechaza cualquier otro `currency` con `400`

96* El sobre de error `{type: "error", error: {type, message}, request_id}`

97* Un encabezado de respuesta `request-id` en cada respuesta de administrador, éxito o error, que coincida con el `request_id` del cuerpo

98 

99Cada mutación escribe una fila antes/después en `admin_audit` en la misma transacción, atribuida a `admin-key:<id>` u `oidc:<sub>`.

100 

101La puerta de enlace sirve solo los puntos finales de límites de gasto. Otras superficies de API de administrador, como la cola `spend_limit_increase_requests`, no son parte de la API de administrador de la puerta de enlace.

102 

103<h3 id="/effective">

104 `/effective`

105</h3>

106 

107`GET /v1/organizations/spend_limits/effective` devuelve el esquema `SpendSummary` de Anthropic: cada fila es un principal para un período, con el límite resuelto, gasto hasta la fecha del período y un objeto `actor`. Diferencias específicas de la puerta de enlace:

108 

109* `user_id` es el OIDC `sub`.

110* `actor.name` y `actor.email_address` son `null` hasta la primera solicitud de inferencia del principal a través de la puerta de enlace. La puerta de enlace no tiene directorio de usuarios; registra valores vistos por última vez desde el JWT de sesión de cada usuario.

111* Cada fila también lleva una matriz `groups`, los últimos grupos de IdP vistos del principal. Esta es una extensión de puerta de enlace para que una interfaz de usuario de administrador pueda mostrar cada nivel de límite que se aplica; los clientes con forma de Anthropic la ignoran.

112* Sin un filtro `user_ids[]`, enumera principales con gasto registrado, porque la puerta de enlace no puede enumerar todos los miembros de la organización.

113 

114Los límites originados en grupos se resuelven contra esos últimos grupos vistos con el mismo desempate `group_limit_mode` que usa la aplicación, por lo que el visor muestra el límite que realmente se aplica.

115 

116| Parámetro de consulta | Descripción |

117| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

118| `user_ids[]` | Repetible. Filtrar a principales específicos por OIDC `sub`. |

119| `period[]` | Repetible. Filtrar a filas `daily`, `weekly` o `monthly`. |

120| `sort` | `spend_desc` enumera los principales con mayor gasto primero. Requiere exactamente un `period[]`. |

121| `q` | Filtro de subcadena que no distingue mayúsculas de minúsculas sobre el OIDC `sub`, correo electrónico visto por última vez y nombre para mostrar visto por última vez. |

122| `limit` / `page` | Tamaño de página, 1–1000 con un predeterminado de 20, y el cursor opaco de la respuesta anterior `next_page`. |

123 

124<Warning>

125 `q=` y `user_ids[]=` montan cadenas de consulta GET, por lo que cualquier proxy frontal o equilibrador de carga los captura en sus registros de acceso. Si su política de registro de PII es estricta, depure estos parámetros allí.

126</Warning>

127 

128<h3 id="/audit">

129 `/audit`

130</h3>

131 

132Devuelve el registro de mutación de límite de gasto: quién cambió qué límite, instantáneas antes/después y la razón opcional, más reciente primero. `has_more` es exacto. Este punto final sigue las convenciones de API de administrador local en lugar de una forma de cable de primera parte.

133 

134<h3 id="pagination">

135 Paginación

136</h3>

137 

138La lista sin procesar pagina por `after_id` y `before_id`, que son IDs `spl_…` mutuamente excluyentes; los resultados se ordenan por creación y `has_more` refleja la dirección del recorrido. `/effective` pagina por el token opaco `next_page` pasado de vuelta como `?page=`, con principales ordenados ascendentemente para que las páginas se mantengan estables mientras se registra el gasto. `limit` es 1–1000, predeterminado 20, en ambos.

139 

140<h2 id="data-lifecycle">

141 Ciclo de vida de datos

142</h2>

143 

144La puerta de enlace contiene cuatro tablas relacionadas con el gasto; un barrido cada hora aplica las ventanas de retención:

145 

146| Tabla | Contenidos | Retención |

147| ------------------ | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |

148| `spend` | Contadores hasta la fecha del período por principal en centavos | [`admin.spend_retention_months`](/es/claude-apps-gateway-config#admin), predeterminado 13 |

149| `spend_limits` | Los límites configurados | Hasta eliminarse a través de la API |

150| `admin_audit` | El registro de mutación | [`admin.audit_retention_days`](/es/claude-apps-gateway-config#admin), predeterminado 365 |

151| `principal_emails` | Correo electrónico visto por última vez de cada principal, nombre para mostrar y grupos de IdP. Contiene PII. | [`admin.identity_retention_days`](/es/claude-apps-gateway-config#admin) desde la última actividad, predeterminado 90 |

152 

153`identity_retention_days` es deliberadamente más corto que `spend_retention_months`: una identidad desaprovisionada deja de actualizarse y envejece, mientras que sus contadores de gasto anónimos permanecen para informes año tras año.

154 

155Cuando un desarrollador se va, elimine cualquier límite por usuario a través de `DELETE /v1/organizations/spend_limits/{id}`; sus filas de gasto e identidad envejecen en las ventanas de retención anteriores. Para borrar una persona inmediatamente, para desincorporación o una solicitud de acceso de sujeto de datos (DSAR), ejecute `DELETE FROM principal_emails WHERE principal = '<sub>'` directamente contra la base de datos de la puerta de enlace. Eso elimina la única tabla que contiene su correo electrónico, nombre y grupos. Las filas `spend` y `admin_audit` hacen referencia solo al `sub` OIDC seudónimo y envejecen en sus propias ventanas.

156 

157<h2 id="related">

158 Relacionado

159</h2>

160 

161* [Configuración de `admin` y `enforcement`](/es/claude-apps-gateway-config#admin): habilitación de la API de administrador y ajuste de retención

162* [Guía de implementación](/es/claude-apps-gateway-deploy#postgres): esquema de Postgres y orientación de copia de seguridad

Details

63 Qué está disponible en sesiones en la nube63 Qué está disponible en sesiones en la nube

64</h3>64</h3>

65 65 

66Las sesiones en la nube comienzan desde un clon nuevo de su repositorio. Cualquier cosa comprometida con el repositorio está disponible. Cualquier cosa que haya instalado o configurado solo en su propia máquina no lo está; la política de su organización llega por separado a través de [configuración administrada por el servidor](/es/server-managed-settings).66Las sesiones en la nube comienzan desde un clon nuevo de su repositorio. Cualquier cosa comprometida con el repositorio está disponible. Cualquier cosa que haya instalado o configurado solo en su propia máquina no está disponible en la sesión. La política de su organización llega por separado a través de [configuración administrada por el servidor](/es/server-managed-settings).

67 67 

68| | Disponible en sesiones en la nube | Por qué |68| | Disponible en sesiones en la nube | Por qué |

69| :---------------------------------------------------------------------------------------------- | :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |69| :---------------------------------------------------------------------------------------------- | :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


81| Tokens de API estáticos y credenciales | No | Aún no existe un almacén de secretos dedicado. Vea a continuación |81| Tokens de API estáticos y credenciales | No | Aún no existe un almacén de secretos dedicado. Vea a continuación |

82| 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 |82| 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 |

83 83 

84Para que la configuración esté disponible en sesiones en la nube, comprométala en el repositorio; la política de la organización llega por separado a través de [configuración administrada por el servidor](/es/server-managed-settings). Un almacén de secretos dedicado aún no está disponible. Tanto las variables de entorno como los scripts de configuración se almacenan en la configuración del entorno, visible para cualquiera que pueda editar ese entorno. Si necesita secretos en una sesión en la nube, agréguelos como variables de entorno con esa visibilidad en mente.84Para que su configuración esté disponible en sesiones en la nube, comprométala en el repositorio; la política de su organización llega por separado a través de [configuración administrada por el servidor](/es/server-managed-settings).

85 

86Un almacén de secretos dedicado aún no está disponible. Tanto las variables de entorno como los scripts de configuración se almacenan en la configuración del entorno, visible para cualquiera que pueda editar ese entorno. Si necesita secretos en una sesión en la nube, agréguelos como variables de entorno con esa visibilidad en mente.

85 87 

86<h3 id="installed-tools">88<h3 id="installed-tools">

87 Herramientas instaladas89 Herramientas instaladas


143 Ejecute pruebas, inicie servicios y agregue paquetes145 Ejecute pruebas, inicie servicios y agregue paquetes

144</h3>146</h3>

145 147 

146Claude ejecuta pruebas como parte del trabajo en una tarea. Pídalo en su solicitud, como "corregir las pruebas fallidas en `tests/`" o "ejecutar pytest después de cada cambio". Los ejecutores de pruebas como pytest, jest y cargo test funcionan de inmediato ya que están preinstalados.148Claude ejecuta pruebas como parte del trabajo en una tarea. Pídalo en su solicitud, como "corregir las pruebas fallidas en `tests/`" o "ejecutar pytest después de cada cambio". Los ejecutores de pruebas como pytest, jest y cargo test están preinstalados y funcionan sin configuración adicional.

147 149 

148PostgreSQL y Redis están preinstalados pero no se ejecutan de forma predeterminada. Pida a Claude que inicie cada uno durante la sesión:150PostgreSQL y Redis están preinstalados pero no se ejecutan de forma predeterminada. Pida a Claude que inicie cada uno durante la sesión:

149 151 


186| Archivar un entorno | Abra el entorno para editar y seleccione **Archivar**. Los entornos archivados se ocultan del selector pero las sesiones existentes continúan ejecutándose. |188| Archivar un entorno | Abra el entorno para editar y seleccione **Archivar**. Los entornos archivados se ocultan del selector pero las sesiones existentes continúan ejecutándose. |

187| Establecer el predeterminado para `--remote` | Ejecute `/remote-env` en su terminal. Si tiene un único entorno, este comando muestra su configuración actual. `/remote-env` solo selecciona el predeterminado; agregue, edite y archive entornos desde la interfaz web. |189| Establecer el predeterminado para `--remote` | Ejecute `/remote-env` en su terminal. Si tiene un único entorno, este comando muestra su configuración actual. `/remote-env` solo selecciona el predeterminado; agregue, edite y archive entornos desde la interfaz web. |

188 190 

189Las variables de entorno usan formato `.env` con un par `KEY=value` por línea. No envuelva valores entre comillas, ya que las comillas se almacenan como parte del valor.191Las variables de entorno usan formato `.env` con un par `KEY=value` por línea. No envuelva valores entre comillas, ya que las comillas se almacenan como parte del valor. Este ejemplo define tres variables:

190 192 

191```text theme={null}193```text theme={null}

192NODE_ENV=development194NODE_ENV=development


593 * \*.sentry.io595 * \*.sentry.io

594 * downloads.sentry-cdn.com596 * downloads.sentry-cdn.com

595 * http-intake.logs.datadoghq.com597 * http-intake.logs.datadoghq.com

598 * browser-intake-us5-datadoghq.com

596 * \*.datadoghq.com599 * \*.datadoghq.com

597 * \*.datadoghq.eu600 * \*.datadoghq.eu

598 * api.honeycomb.io601 * api.honeycomb.io


641 644 

642Esto crea una nueva sesión en la nube en claude.ai. La sesión clona el remoto de GitHub de su directorio actual en su rama actual, por lo que inserte primero si tiene confirmaciones locales, ya que la VM clona desde GitHub en lugar de su máquina. `--remote` funciona con un único repositorio a la vez. La tarea se ejecuta en la nube mientras continúa trabajando localmente.645Esto crea una nueva sesión en la nube en claude.ai. La sesión clona el remoto de GitHub de su directorio actual en su rama actual, por lo que inserte primero si tiene confirmaciones locales, ya que la VM clona desde GitHub en lugar de su máquina. `--remote` funciona con un único repositorio a la vez. La tarea se ejecuta en la nube mientras continúa trabajando localmente.

643 646 

647{/* min-version: 2.1.195 */}A partir de v2.1.195, 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](#setup-scripts), mientras se inicia el contenedor en la nube. Los mensajes que escribe mientras se aprovisiona el contenedor se ponen en cola y se envían una vez que la sesión está lista.

648 

644<Note>649<Note>

645 `--remote` 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](/es/remote-control).650 `--remote` 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](/es/remote-control).

646</Note>651</Note>


703Extraiga una sesión en la nube en su terminal usando cualquiera de estos:708Extraiga una sesión en la nube en su terminal usando cualquiera de estos:

704 709 

705* **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.710* **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.

706* **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.711* **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.

707* **Desde `/tasks`**: ejecute `/tasks` para ver sus sesiones de fondo, luego presione `t` para teleportarse a una712* **Desde `/tasks`**: ejecute `/tasks` para ver sus sesiones de fondo, luego presione `t` para teleportarse a una.

708* **Desde la interfaz web**: seleccione **Abrir en CLI** para copiar un comando que puede pegar en su terminal713* **Desde la interfaz web**: seleccione **Abrir en CLI** para copiar un comando que puede pegar en su terminal.

709 714 

710Cuando 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.715Cuando 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.

711 716 


770 Compartir desde una cuenta Enterprise o Team775 Compartir desde una cuenta Enterprise o Team

771</h4>776</h4>

772 777 

773Para cuentas Enterprise y Team, las dos opciones de visibilidad son **Privada** y **Team**. La visibilidad de Team hace que la sesión sea visible para otros miembros de su organización de claude.ai. La verificación de acceso al repositorio está habilitada de forma predeterminada, según la cuenta de GitHub conectada a la cuenta del destinatario. El nombre para mostrar de su cuenta es visible para todos los destinatarios con acceso. Las sesiones de [Claude en Slack](/es/slack) se comparten automáticamente con visibilidad de Team.778Para cuentas Enterprise y Team, las dos opciones de visibilidad son **Privada** y **Team**. La visibilidad de Team hace que la sesión sea visible para otros miembros de su organización de claude.ai. Las sesiones de [Claude en Slack](/es/slack) se comparten automáticamente con visibilidad de Team.

779 

780La verificación de acceso al repositorio está habilitada de forma predeterminada, según la cuenta de GitHub conectada a la cuenta del destinatario. El nombre para mostrar de su cuenta es visible para todos los destinatarios con acceso.

774 781 

775<h4 id="share-from-a-max-or-pro-account">782<h4 id="share-from-a-max-or-pro-account">

776 Compartir desde una cuenta Max o Pro783 Compartir desde una cuenta Max o Pro


863 870 

864* Verifique [status.claude.com](https://status.claude.com) para incidentes de sesión en la nube871* Verifique [status.claude.com](https://status.claude.com) para incidentes de sesión en la nube

865* Reintente después de un minuto, ya que la capacidad se aprovisiona bajo demanda872* Reintente después de un minuto, ya que la capacidad se aprovisiona bajo demanda

866* Confirme que su repositorio es accesible. La cuenta de GitHub que se conecta debe tener acceso al repositorio en GitHub, ya sea a través de la autorización de la aplicación Claude GitHub o un token `gh` sincronizado a través de `/web-setup` no es necesario instalar la aplicación en el repositorio. Consulte [Opciones de autenticación de GitHub](#github-authentication-options).873* Confirme que su repositorio es accesible. La cuenta de GitHub que se conecta debe tener acceso al repositorio en GitHub, ya sea a través de la autorización de la aplicación Claude GitHub o un token `gh` sincronizado a través de `/web-setup`. No es necesario instalar la aplicación en el repositorio. Consulte [Opciones de autenticación de GitHub](#github-authentication-options).

867 874 

868<h3 id="remote-control-session-expired-or-access-denied">875<h3 id="remote-control-session-expired-or-access-denied">

869 Sesión de Control Remoto expirada o acceso denegado876 Sesión de Control Remoto expirada o acceso denegado

Details

283```bash theme={null}283```bash theme={null}

284export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5284export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5

285export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7285export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7

286export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6286export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5

287export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5287export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

288```288```

289 289 

Details

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

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

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

25| `claude gateway` | Iniciar el servidor de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) autohospedado, para administradores que implementan SSO y política frente a Claude Code en Bedrock, Vertex AI o Foundry. Requiere `--config` apuntando a un [`gateway.yaml`](/es/claude-apps-gateway-config). Disponible en Claude Code v2.1.195 y posterior. | `claude gateway --config gateway.yaml` |

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

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

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


93| `--max-budget-usd` | Cantidad máxima en dólares a gastar en llamadas API antes de detener (solo modo impresión) | `claude -p --max-budget-usd 5.00 "query"` |94| `--max-budget-usd` | Cantidad máxima en dólares a gastar en llamadas API antes de detener (solo modo impresión) | `claude -p --max-budget-usd 5.00 "query"` |

94| `--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 | `claude -p --max-turns 3 "query"` |95| `--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 | `claude -p --max-turns 3 "query"` |

95| `--mcp-config` | Cargar servidores MCP desde archivos JSON o cadenas (separados por espacios) | `claude --mcp-config ./mcp.json` |96| `--mcp-config` | Cargar servidores MCP desde archivos JSON o cadenas (separados por espacios) | `claude --mcp-config ./mcp.json` |

96| `--model` | Establece el modelo para la sesión actual con un alias para el modelo más reciente (`sonnet`, `opus`, `haiku` o `fable`) o el nombre completo de un modelo. Anula la configuración [`model`](/es/settings#available-settings) y [`ANTHROPIC_MODEL`](/es/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |97| `--model` | Establece el modelo para la sesión actual con un alias para el modelo más reciente (`sonnet`, `opus`, `haiku` o `fable`) o el nombre completo de un modelo. Anula la configuración [`model`](/es/settings#available-settings) y [`ANTHROPIC_MODEL`](/es/model-config#environment-variables) | `claude --model claude-sonnet-5` |

97| `--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>`. <br /><br />[`/rename`](/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"` |98| `--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>`. <br /><br />[`/rename`](/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"` |

98| `--no-chrome` | Deshabilitar [integración del navegador Chrome](/es/chrome) para esta sesión | `claude --no-chrome` |99| `--no-chrome` | Deshabilitar [integración del navegador Chrome](/es/chrome) para esta sesión | `claude --no-chrome` |

99| `--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`](/es/env-vars) hace lo mismo en cualquier modo | `claude -p --no-session-persistence "query"` |100| `--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`](/es/env-vars) hace lo mismo en cualquier modo | `claude -p --no-session-persistence "query"` |

commands.md +2 −0

Details

70| `/cost` | Alias para `/usage` |70| `/cost` | Alias para `/usage` |

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

72| `/deep-research <question>` | **[Workflow](/es/workflows#bundled-workflows).** Expandir búsquedas web en una pregunta, obtener y verificar cruzadamente fuentes, y sintetizar un informe citado |72| `/deep-research <question>` | **[Workflow](/es/workflows#bundled-workflows).** Expandir búsquedas web en una pregunta, obtener y verificar cruzadamente fuentes, y sintetizar un informe citado |

73| `/design-login` | Autorizar acceso al sistema de diseño para `/design-sync` con su cuenta claude.ai |

74| `/design-sync [hint]` | **[Skill](/es/skills#bundled-skills).** Convertir el sistema de diseño React de su repositorio y cargarlo en [Claude Design](https://claude.ai/design), para que los diseños que produce utilicen sus componentes reales. Opcionalmente nombre 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, la plataforma de agentes de Google Cloud y Microsoft Foundry, la herramienta subyacente no puede alcanzar claude.ai, por lo que el comando no está disponible |

73| `/desktop` | Continuar la sesión actual en la aplicación Claude Code Desktop. Requiere macOS o Windows y una suscripción de Claude. Alias: `/app` |75| `/desktop` | Continuar la sesión actual en la aplicación Claude Code Desktop. Requiere macOS o Windows y una suscripción de Claude. Alias: `/app` |

74| `/diff` | Abrir un visor de diferencias interactivo que muestre cambios sin confirmar y diferencias por turno. Use las flechas izquierda/derecha para cambiar entre el diff de git actual y los turnos individuales de Claude, y arriba/abajo para examinar archivos |76| `/diff` | Abrir un visor de diferencias interactivo que muestre cambios sin confirmar y diferencias por turno. Use las flechas izquierda/derecha para cambiar entre el diff de git actual y los turnos individuales de Claude, y arriba/abajo para examinar archivos |

75| `/doctor` | Diagnosticar y verificar su instalación y configuración de Claude Code. Los resultados se muestran con iconos de estado. Presione `f` para que Claude corrija cualquier problema reportado |77| `/doctor` | Diagnosticar y verificar su instalación y configuración de Claude Code. Los resultados se muestran con iconos de estado. Presione `f` para que Claude corrija cualquier problema reportado |

computer-use.md +3 −3

Details

112 Una sesión a la vez112 Una sesión a la vez

113</h3>113</h3>

114 114 

115Computer use mantiene un bloqueo en toda la máquina mientras está activo. Si otra sesión de Claude Code ya está usando su computadora, los nuevos intentos fallan con un mensaje que le dice qué sesión mantiene el bloqueo. Termine o salga de esa sesión primero.115Computer use mantiene un bloqueo en toda la máquina desde la primera acción de computer use hasta que la sesión que lo adquirió sale. {/* min-version: 2.1.195 */}A partir de v2.1.195, terminar la tarea no libera el bloqueo; solo salir de la sesión lo hace. Si otra sesión de Claude Code ya está usando su computadora, los nuevos intentos fallan con un mensaje que le dice qué sesión mantiene el bloqueo. Salga de esa sesión primero.

116 116 

117<h3 id="apps-are-hidden-while-claude-works">117<h3 id="apps-are-hidden-while-claude-works">

118 Las aplicaciones se ocultan mientras Claude trabaja118 Las aplicaciones se ocultan mientras Claude trabaja


134 Detener en cualquier momento134 Detener en cualquier momento

135</h3>135</h3>

136 136 

137Cuando Claude adquiere el bloqueo, aparece una notificación de macOS: "Claude is using your computer · press Esc to stop". Presione `Esc` en cualquier lugar para abortar la acción actual inmediatamente, o presione `Ctrl+C` en la terminal. De cualquier manera, Claude libera el bloqueo, muestra sus aplicaciones y le devuelve el control.137Cuando Claude adquiere el bloqueo, aparece una notificación de macOS: "Claude is using your computer · press Esc to stop". Presione `Esc` en cualquier lugar para abortar la acción actual inmediatamente, o presione `Ctrl+C` en la terminal. De cualquier manera, Claude se detiene, muestra sus aplicaciones y le devuelve el control. La sesión mantiene el [bloqueo de computer use](#one-session-at-a-time) hasta que sale.

138 138 

139Una segunda notificación aparece cuando Claude termina.139Una segunda notificación aparece cuando Claude termina.

140 140 


223 "Computer use is in use by another Claude session"223 "Computer use is in use by another Claude session"

224</h3>224</h3>

225 225 

226Otra sesión de Claude Code mantiene el bloqueo. Termine la tarea en esa sesión o salga de ella. Si la otra sesión se bloqueó, el bloqueo se libera automáticamente cuando Claude detecta que el proceso ya no se está ejecutando.226Otra sesión de Claude Code mantiene el bloqueo, que conserva hasta que sale. Salga de esa sesión. Si la otra sesión se bloqueó, el bloqueo se libera automáticamente cuando Claude detecta que el proceso ya no se está ejecutando.

227 227 

228<h3 id="macos-permissions-prompt-keeps-reappearing">228<h3 id="macos-permissions-prompt-keeps-reappearing">

229 El mensaje de permisos de macOS sigue reapareciendo229 El mensaje de permisos de macOS sigue reapareciendo

Details

1615* **Limpiar entre tareas**: ejecute `/clear` cuando cambie a trabajo no relacionado. La conversación antigua desplaza los archivos que necesita a continuación y cuesta tokens en cada mensaje.1615* **Limpiar entre tareas**: ejecute `/clear` cuando cambie a trabajo no relacionado. La conversación antigua desplaza los archivos que necesita a continuación y cuesta tokens en cada mensaje.

1616* **Delegar lecturas grandes**: envíe investigación a un [subagent](/es/sub-agents) para que el contenido del archivo permanezca en su ventana de contexto, no en la suya.1616* **Delegar lecturas grandes**: envíe investigación a un [subagent](/es/sub-agents) para que el contenido del archivo permanezca en su ventana de contexto, no en la suya.

1617 1617 

1618Si necesita una ventana más grande en lugar de una conversación más pequeña, Fable 5, Opus 4.6 y posteriores, y Sonnet 4.6 admiten una ventana de contexto de 1 millón de tokens. Vea [Contexto extendido](/es/model-config#extended-context) para disponibilidad por plan y cómo seleccionar una variante de modelo `[1m]`. La compactación funciona de la misma manera en el límite más grande.1618Si necesita una ventana más grande en lugar de una conversación más pequeña, Fable 5, Sonnet 5, Opus 4.6 y posteriores, y Sonnet 4.6 admiten una ventana de contexto de 1 millón de tokens. Vea [Contexto extendido](/es/model-config#extended-context) para disponibilidad por plan y cómo seleccionar una variante de modelo `[1m]`. Sonnet 5 se ejecuta a 1M sin variante `[1m]` para seleccionar; vea [Ventana de contexto de Sonnet 5](/es/model-config#sonnet-5-context-window) para sus umbrales de compactación automática y la excepción de la puerta de enlace LLM. La compactación funciona de la misma manera en el límite más grande.

1619 1619 

1620<h2 id="check-your-own-session">1620<h2 id="check-your-own-session">

1621 Verifique su propia sesión1621 Verifique su propia sesión

costs.md +1 −1

Details

51 Para organizaciones con límites de velocidad personalizados, el tráfico de Claude Code en este espacio de trabajo cuenta hacia los límites de velocidad de API generales de su organización. Puede establecer un [límite de velocidad del espacio de trabajo](https://platform.claude.com/docs/es/api/rate-limits#setting-lower-limits-for-workspaces) en la página Limits de este espacio de trabajo en la Consola de Claude para limitar la parte de Claude Code y proteger otras cargas de trabajo de producción.51 Para organizaciones con límites de velocidad personalizados, el tráfico de Claude Code en este espacio de trabajo cuenta hacia los límites de velocidad de API generales de su organización. Puede establecer un [límite de velocidad del espacio de trabajo](https://platform.claude.com/docs/es/api/rate-limits#setting-lower-limits-for-workspaces) en la página Limits de este espacio de trabajo en la Consola de Claude para limitar la parte de Claude Code y proteger otras cargas de trabajo de producción.

52</Note>52</Note>

53 53 

54En Bedrock, Vertex y Foundry, Claude Code no envía métricas desde su nube. Las organizaciones que ya enrutan Claude Code a través de una [puerta de enlace LLM](/es/llm-gateway) pueden realizar un seguimiento del gasto allí, ya que la puerta de enlace ve cada solicitud.54En Bedrock, Vertex y Foundry, Claude Code no envía métricas desde su nube. Una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) autohospedada proporciona atribución de uso por usuario, métricas OTLP con conteos de tokens, y [límites de gasto por usuario](/es/claude-apps-gateway-spend-limits) en estos proveedores. Las organizaciones que enrutan Claude Code a través de una [puerta de enlace LLM](/es/llm-gateway) diferente pueden realizar un seguimiento del gasto en la puerta de enlace en su lugar, ya que ve cada solicitud.

55 55 

56<h3 id="rate-limit-recommendations">56<h3 id="rate-limit-recommendations">

57 Recomendaciones de límite de velocidad57 Recomendaciones de límite de velocidad

data-usage.md +2 −2

Details

39 39 

40Después de la solicitud de calificación, puede ver una pregunta de seguimiento separada que pregunta "¿Puede Anthropic ver su transcripción de sesión para ayudarnos a mejorar Claude Code?". Este es un segundo paso opcional distinto de la calificación:40Después de la solicitud de calificación, puede ver una pregunta de seguimiento separada que pregunta "¿Puede Anthropic ver su transcripción de sesión para ayudarnos a mejorar Claude Code?". Este es un segundo paso opcional distinto de la calificación:

41 41 

42* **Sí**: carga su transcripción de conversación, cualquier transcripción de subagente y el archivo de registro de sesión sin procesar del disco a Anthropic. Los patrones de clave API y token conocidos se redactan antes de la carga. El código fuente, el contenido del archivo y otro contenido de conversación se cargan tal cual. Las transcripciones compartidas se retienen hasta 6 meses.42* **Sí**: carga su transcripción de conversación, cualquier transcripción de subagente y el archivo de registro de sesión sin procesar del disco a Anthropic. Los patrones de clave API y token conocidos se redactan antes de la carga. El código fuente, el contenido del archivo y otro contenido de conversación se cargan tal cual. Las transcripciones compartidas se retienen hasta 6 meses. En sesiones de Bedrock, Vertex AI, Foundry y [Claude apps gateway](/es/claude-apps-gateway) con sesión iniciada, Sí escribe la misma carga en un archivo local bajo `~/.claude/feedback-bundles/` en lugar de cargar; nada sale de su máquina hasta que reenvíe ese archivo.

43* **No**: rechaza sin enviar nada43* **No**: rechaza sin enviar nada

44* **No preguntar de nuevo**: rechaza y evita que este seguimiento aparezca en futuras sesiones44* **No preguntar de nuevo**: rechaza y evita que este seguimiento aparezca en futuras sesiones

45 45 


127 Comportamientos predeterminados por proveedor de API127 Comportamientos predeterminados por proveedor de API

128</h2>128</h2>

129 129 

130De forma predeterminada, los informes de errores, la telemetría y los informes de errores se desactivan cuando se utiliza Bedrock, Vertex, Foundry o Claude Platform en AWS. Las encuestas de calidad de sesión y la verificación de seguridad del dominio WebFetch son excepciones y se ejecutan independientemente del proveedor. Puede optar por no participar en todo el tráfico no esencial, incluyendo encuestas, a la vez estableciendo `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Esta variable no afecta la verificación de WebFetch, que tiene su propio opt-out. Aquí están los comportamientos predeterminados completos:130De forma predeterminada, los informes de errores, la telemetría y los informes de errores se desactivan cuando se utiliza Bedrock, Vertex, Foundry o Claude Platform en AWS. Las encuestas de calidad de sesión y la verificación de seguridad del dominio WebFetch son excepciones y se ejecutan independientemente del proveedor. En una sesión de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada, los análisis de uso, los informes de errores y las calificaciones de encuestas a Anthropic se desactivan mediante la credencial de la puerta de enlace en sí, sin ninguna configuración para volver a habilitarlos. Puede optar por no participar en todo el tráfico no esencial, incluyendo encuestas, a la vez estableciendo `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Esta variable no afecta la verificación de WebFetch, que tiene su propio opt-out. Aquí están los comportamientos predeterminados completos:

131 131 

132| Servicio | Claude API | Vertex API | Bedrock API | Foundry API | Claude Platform en AWS |132| Servicio | Claude API | Vertex API | Bedrock API | Foundry API | Claude Platform en AWS |

133| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |133| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |

Details

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

20 20 

21| Comando | Muestra |21| Comando | Muestra |

22| :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |22| :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

23| `/memory` | Qué archivos `CLAUDE.md` y rules se cargaron, más entradas de memoria automática |23| `/memory` | Qué archivos `CLAUDE.md` y rules se cargaron, más entradas de memoria automática |

24| `/skills` | Skills disponibles de fuentes de proyecto, usuario y plugin |24| `/skills` | Skills disponibles de fuentes de proyecto, usuario y plugin |

25| `/agents` | Subagentes configurados y sus configuraciones |25| `/agents` | Subagentes configurados y sus configuraciones |

26| `/hooks` | Configuraciones de hook activas |26| `/hooks` | Configuraciones de hook activas |

27| `/mcp` | Servidores MCP conectados y su estado |27| `/mcp` | Servidores MCP conectados y su estado |

28| `/permissions` | Reglas de permitir y denegar resueltas actualmente en vigor |28| `/permissions` | Reglas de permitir y denegar resueltas actualmente en vigor |

29| `/doctor` | Diagnósticos de configuración: claves inválidas, errores de esquema, salud de instalación |29| `/doctor` | Diagnósticos de configuración: claves inválidas, errores de esquema, salud de instalación. {/* min-version: 2.1.196 */}A partir de v2.1.196, también informa nombres de [subagentes](/es/sub-agents) duplicados definidos en el mismo ámbito y marca cuál está activo |

30| `/debug [issue]` | Habilita el registro de depuración para la sesión e indica a Claude que diagnostique usando la salida del registro y las rutas de configuración |30| `/debug [issue]` | Habilita el registro de depuración para la sesión e indica a Claude que diagnostique usando la salida del registro y las rutas de configuración |

31| `/status` | Fuentes de configuración activas, incluido si la configuración administrada está en vigor |31| `/status` | Fuentes de configuración activas, incluido si la configuración administrada está en vigor |

32 32 

desktop.md +12 −8

Details

8 8 

9La aplicación Claude Desktop tiene tres pestañas: **Chat** para conversaciones, **Cowork** para [Dispatch y trabajo agentico más largo](https://claude.com/product/cowork), y **Code** para desarrollo de software. Esta página es la referencia para la pestaña Code.9La aplicación Claude Desktop tiene tres pestañas: **Chat** para conversaciones, **Cowork** para [Dispatch y trabajo agentico más largo](https://claude.com/product/cowork), y **Code** para desarrollo de software. Esta página es la referencia para la pestaña Code.

10 10 

11<CardGroup cols={2}>11<CardGroup cols={3}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon13 Universal build for Intel and Apple Silicon

14 </Card>14 </Card>


16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 For x64 processors

18 </Card>18 </Card>

19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/en/desktop-linux">

21 apt or .deb for Ubuntu and Debian

22 </Card>

19</CardGroup>23</CardGroup>

20 24 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/en/desktop-linux).

22 26 

23Después de instalar, inicie Claude, inicie sesión y haga clic en la pestaña **Code**. La primera vez que la abra en Windows, necesita tener [Git for Windows](https://git-scm.com/downloads/win) instalado; reinicie la aplicación después de instalarlo. Para un recorrido de su primera sesión, consulte la [guía de introducción](/es/desktop-quickstart).27Después de instalar, inicie Claude, inicie sesión y haga clic en la pestaña **Code**. La primera vez que la abra en Windows, necesita tener [Git for Windows](https://git-scm.com/downloads/win) instalado; reinicie la aplicación después de instalarlo. Para un recorrido de su primera sesión, consulte la [guía de introducción](/es/desktop-quickstart).

24 28 


67 71 

68El cuadro de solicitud admite dos formas de traer contexto externo:72El cuadro de solicitud admite dos formas de traer contexto externo:

69 73 

70* **Archivos @mention**: escriba `@` seguido de un nombre de archivo para agregar un archivo al contexto de la conversación. Claude puede entonces leer y hacer referencia a ese archivo. @mention no está disponible en sesiones remotas.74* **Archivos @mention**: escriba `@` seguido de un nombre de archivo para agregar un archivo al contexto de la conversación. Claude puede entonces leer y hacer referencia a ese archivo. @mention no está disponible en sesiones en la nube.

71* **Adjuntar archivos**: adjunte imágenes, PDF y otros archivos a su solicitud usando el botón de adjuntos, o arrastre y suelte archivos directamente en la solicitud. Esto es útil para compartir capturas de pantalla de errores, maquetas de diseño o documentos de referencia.75* **Adjuntar archivos**: adjunte imágenes, PDF y otros archivos a su solicitud usando el botón de adjuntos, o arrastre y suelte archivos directamente en la solicitud. Esto es útil para compartir capturas de pantalla de errores, maquetas de diseño o documentos de referencia.

72 76 

73<h3 id="choose-a-permission-mode">77<h3 id="choose-a-permission-mode">


88 92 

89<span id="auto-mode-availability" />93<span id="auto-mode-availability" />

90 94 

91Auto mode es una vista previa de investigación disponible para todos los usuarios en la API de Anthropic y requiere Claude Opus 4.6 o posterior, u Sonnet 4.6. En implementaciones empresariales que enrutan Desktop a Google Cloud Vertex AI, auto mode está desactivado hasta que [establezca `CLAUDE_CODE_ENABLE_AUTO_MODE`](/es/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry), y solo Claude Opus 4.7 y Opus 4.8 son compatibles allí.95Auto mode es una vista previa de investigación disponible para todos los usuarios en la API de Anthropic y requiere Claude Opus 4.6 o posterior, u Sonnet 4.6 o posterior. En implementaciones empresariales que enrutan Desktop a Google Cloud Vertex AI, auto mode está desactivado hasta que [establezca `CLAUDE_CODE_ENABLE_AUTO_MODE`](/es/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry), y solo Claude Sonnet 5, Opus 4.7 y Opus 4.8 son compatibles allí.

92 96 

93<Tip title="Mejor práctica">97<Tip title="Mejor práctica">

94 Comience tareas complejas en Plan mode para que Claude mapee un enfoque antes de realizar cambios. Una vez que apruebe el plan, cambie a Auto accept edits o Ask permissions para ejecutarlo. Consulte [explorar primero, luego planificar, luego codificar](/es/best-practices#explore-first-then-plan-then-code) para obtener más información sobre este flujo de trabajo.98 Comience tareas complejas en Plan mode para que Claude mapee un enfoque antes de realizar cambios. Una vez que apruebe el plan, cambie a Auto accept edits o Ask permissions para ejecutarlo. Consulte [explorar primero, luego planificar, luego codificar](/es/best-practices#explore-first-then-plan-then-code) para obtener más información sobre este flujo de trabajo.

95</Tip>99</Tip>

96 100 

97Las sesiones remotas admiten Auto accept edits, Plan mode y Auto mode. Auto accept edits corresponde al modo `default`: las sesiones remotas aceptan automáticamente ediciones de archivos, por lo que el selector muestra Auto accept edits en lugar de Ask permissions. Bypass permissions no está disponible porque el entorno remoto ya está sandboxed.101Las sesiones en la nube admiten Accept edits, Plan mode y Auto mode. Accept edits corresponde al modo `default`: las sesiones en la nube aceptan automáticamente ediciones de archivos, por lo que el selector muestra Accept edits en lugar de Ask permissions. Bypass permissions no está disponible porque el entorno en la nube ya está sandboxed.

98 102 

99Los administradores empresariales pueden restringir qué modos de permisos están disponibles. Consulte [configuración empresarial](#enterprise-configuration) para obtener detalles.103Los administradores empresariales pueden restringir qué modos de permisos están disponibles. Consulte [configuración empresarial](#enterprise-configuration) para obtener detalles.

100 104 


600 604 

601Para establecer variables de entorno para sesiones locales y servidores de desarrollo en cualquier plataforma, abra el menú desplegable de entorno en el cuadro de solicitud, pase el cursor sobre **Local** y haga clic en el icono de engranaje para abrir el editor de entorno local. Las variables que guarda aquí se almacenan cifradas en su máquina y se aplican a cada sesión local y servidor de vista previa que inicia. También puede agregar variables a la clave `env` en su archivo `~/.claude/settings.json`, aunque estas llegan solo a sesiones de Claude y no a servidores de desarrollo. Consulte [variables de entorno](/es/env-vars) para la lista completa de variables compatibles.605Para establecer variables de entorno para sesiones locales y servidores de desarrollo en cualquier plataforma, abra el menú desplegable de entorno en el cuadro de solicitud, pase el cursor sobre **Local** y haga clic en el icono de engranaje para abrir el editor de entorno local. Las variables que guarda aquí se almacenan cifradas en su máquina y se aplican a cada sesión local y servidor de vista previa que inicia. También puede agregar variables a la clave `env` en su archivo `~/.claude/settings.json`, aunque estas llegan solo a sesiones de Claude y no a servidores de desarrollo. Consulte [variables de entorno](/es/env-vars) para la lista completa de variables compatibles.

602 606 

603[Extended thinking](/es/model-config#extended-thinking) está habilitado de forma predeterminada, lo que mejora el rendimiento en tareas de razonamiento complejo pero usa tokens adicionales. Para deshabilitar el pensamiento, establezca `MAX_THINKING_TOKENS` en `0` en el editor de entorno local; esto no tiene efecto en Fable 5, que siempre usa extended thinking. En [proveedores de terceros](/es/third-party-integrations), `0` omite el parámetro `thinking` en su lugar, y los modelos de razonamiento adaptativo aún pueden pensar. En modelos con [razonamiento adaptativo](/es/model-config#adjust-effort-level), cualquier otro valor de `MAX_THINKING_TOKENS` se ignora porque el razonamiento adaptativo controla la profundidad del pensamiento en su lugar. En Opus 4.6 y Sonnet 4.6, establezca `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` en `1` para usar un presupuesto de pensamiento fijo; Opus 4.7 y posteriores siempre usan razonamiento adaptativo y no tienen modo de presupuesto fijo.607[Extended thinking](/es/model-config#extended-thinking) está habilitado de forma predeterminada, lo que mejora el rendimiento en tareas de razonamiento complejo pero usa tokens adicionales. Para deshabilitar el pensamiento, establezca `MAX_THINKING_TOKENS` en `0` en el editor de entorno local; esto no tiene efecto en Fable 5, que siempre usa extended thinking. En [proveedores de terceros](/es/third-party-integrations), `0` omite el parámetro `thinking` en su lugar, y los modelos de razonamiento adaptativo aún pueden pensar. En modelos con [razonamiento adaptativo](/es/model-config#adjust-effort-level), cualquier otro valor de `MAX_THINKING_TOKENS` se ignora porque el razonamiento adaptativo controla la profundidad del pensamiento en su lugar. En Opus 4.6 y Sonnet 4.6, establezca `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` en `1` para usar un presupuesto de pensamiento fijo; Fable 5, Sonnet 5 y Opus 4.7 y posteriores siempre usan razonamiento adaptativo y no tienen modo de presupuesto fijo.

604 608 

605<h3 id="cloud-sessions">609<h3 id="cloud-sessions">

606 Sesiones remotas610 Sesiones remotas


822Las siguientes características están disponibles solo en la CLI o extensión de VS Code, excepto donde se indique:826Las siguientes características están disponibles solo en la CLI o extensión de VS Code, excepto donde se indique:

823 827 

824* **Proveedores de terceros**: Desktop se conecta a la API de Anthropic de forma predeterminada. Las implementaciones empresariales pueden configurar Vertex AI y proveedores de puerta de enlace a través de [configuración administrada](https://support.claude.com/en/articles/12622667-enterprise-configuration). Para Bedrock o Foundry en la CLI, consulte el [inicio rápido](/es/quickstart). Como excepción a la sección anterior, la [vista previa de investigación de Cowork en 3P](https://claude.com/docs/cowork/3p/overview) ejecuta la pestaña Code en Bedrock, Vertex AI, Foundry o una puerta de enlace LLM autohospedada.828* **Proveedores de terceros**: Desktop se conecta a la API de Anthropic de forma predeterminada. Las implementaciones empresariales pueden configurar Vertex AI y proveedores de puerta de enlace a través de [configuración administrada](https://support.claude.com/en/articles/12622667-enterprise-configuration). Para Bedrock o Foundry en la CLI, consulte el [inicio rápido](/es/quickstart). Como excepción a la sección anterior, la [vista previa de investigación de Cowork en 3P](https://claude.com/docs/cowork/3p/overview) ejecuta la pestaña Code en Bedrock, Vertex AI, Foundry o una puerta de enlace LLM autohospedada.

825* **Linux**: la aplicación de escritorio está disponible solo en macOS y Windows. En Linux, use la [CLI](/es/quickstart).829* **Linux (beta)**: Computer Use aún no está disponible en la aplicación de escritorio Linux. Consulte [Claude Desktop en Linux](/es/desktop-linux).

826* **Sugerencias de código en línea**: Desktop no proporciona sugerencias de estilo autocompletado. Funciona a través de solicitudes conversacionales y cambios de código explícitos.830* **Sugerencias de código en línea**: Desktop no proporciona sugerencias de estilo autocompletado. Funciona a través de solicitudes conversacionales y cambios de código explícitos.

827* **Equipos de agentes**: sesiones paralelas de Claude Code que se comunican entre sí están disponibles en la [CLI](/es/agent-teams), no en Desktop. Para trabajo multiagente dentro de una sesión, use [flujos de trabajo dinámicos](/es/workflows), que se ejecutan en Desktop.831* **Equipos de agentes**: sesiones paralelas de Claude Code que se comunican entre sí están disponibles en la [CLI](/es/agent-teams), no en Desktop. Para trabajo multiagente dentro de una sesión, use [flujos de trabajo dinámicos](/es/workflows), que se ejecutan en Desktop.

828* **Comandos de diálogo de terminal**: comandos integrados que abren un panel interactivo en la terminal, como `/permissions`, `/config`, `/agents` y `/doctor`, no están disponibles en la pestaña Code y responden con `isn't available in this environment`. Edite [archivos de configuración](/es/settings) directamente para gestionar reglas de permisos y configuración, o ejecute el comando desde la CLI independiente.832* **Comandos de diálogo de terminal**: comandos integrados que abren un panel interactivo en la terminal, como `/permissions`, `/config`, `/agents` y `/doctor`, no están disponibles en la pestaña Code y responden con `isn't available in this environment`. Edite [archivos de configuración](/es/settings) directamente para gestionar reglas de permisos y configuración, o ejecute el comando desde la CLI independiente.


862Si la aplicación se abre pero muestra una pantalla en blanco o sin respuesta:866Si la aplicación se abre pero muestra una pantalla en blanco o sin respuesta:

863 867 

8641. Reinicie la aplicación.8681. Reinicie la aplicación.

8652. Verifique si hay actualizaciones pendientes. La aplicación se actualiza automáticamente al iniciar.8692. Verifique si hay actualizaciones pendientes. En macOS y Windows la aplicación se actualiza automáticamente al iniciar; en Linux, actualice a través de apt como se describe en [Claude Desktop en Linux](/es/desktop-linux).

8663. En Windows, verifique Event Viewer para registros de bloqueo bajo **Windows Logs → Application**.8703. En Windows, verifique Event Viewer para registros de bloqueo bajo **Windows Logs → Application**.

867 871 

868<h3 id="failed-to-load-session">872<h3 id="failed-to-load-session">

desktop-linux.md +113 −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# Claude Desktop en Linux (beta)

6 

7> Instala y actualiza la aplicación de escritorio Claude en Ubuntu y Debian

8 

9<Note>

10 La compatibilidad con Linux para la aplicación de escritorio Claude está en beta. Las pestañas Chat, Cowork y Code están todas disponibles.

11</Note>

12 

13La aplicación de escritorio en Linux te proporciona la misma experiencia de Chat, Cowork y Claude Code que en macOS y Windows: sesiones paralelas, revisión de diferencias visuales, un terminal y editor integrados, y vista previa de la aplicación en vivo. Consulta [Usar Claude Code Desktop](/es/desktop) para la referencia completa de características.

14 

15<h2 id="requirements">

16 Requisitos

17</h2>

18 

19* Ubuntu 22.04 o posterior, o Debian 12 o posterior

20* x86\_64 o arm64

21 

22Otras distribuciones basadas en Debian que cumplan con estos requisitos pueden funcionar pero no se han probado oficialmente.

23 

24<h2 id="install">

25 Instalar

26</h2>

27 

28Instala desde el repositorio apt de Anthropic para que las actualizaciones lleguen a través de las actualizaciones regulares de paquetes de tu sistema.

29 

30<Steps>

31 <Step title="Agregar el repositorio apt de Anthropic">

32 Descarga la clave de firma de Anthropic:

33 

34 ```bash theme={null}

35 sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc https://downloads.claude.ai/claude-desktop/key.asc

36 ```

37 

38 Registra el repositorio:

39 

40 ```bash theme={null}

41 echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/claude-desktop-archive-keyring.asc] https://downloads.claude.ai/claude-desktop/apt/stable stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list

42 ```

43 </Step>

44 

45 <Step title="Instalar el paquete">

46 ```bash theme={null}

47 sudo apt update && sudo apt install claude-desktop

48 ```

49 </Step>

50 

51 <Step title="Lanzar e iniciar sesión">

52 Lanza **Claude** desde tu lanzador de aplicaciones, o ejecuta `claude-desktop` desde una terminal, e inicia sesión con tu cuenta de Anthropic.

53 </Step>

54</Steps>

55 

56<Accordion title="Verificar la clave de firma">

57 Puedes confirmar que la clave de firma descargada pertenece a Anthropic:

58 

59 ```bash theme={null}

60 gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc

61 ```

62 

63 La huella digital debe ser `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

64</Accordion>

65 

66<h3 id="install-from-a-downloaded-file">

67 Instalar desde un archivo descargado

68</h3>

69 

70Si no puedes usar el repositorio apt, descarga el paquete `.deb` para tu arquitectura (x64 o arm64) desde [claude.com/download](https://claude.com/download), luego abre con tu instalador de software o ejecuta desde tu directorio de descargas:

71 

72```bash theme={null}

73sudo apt install ./claude-desktop_*.deb

74```

75 

76Un `.deb` instalado de esta manera no recibe actualizaciones. Para obtener actualizaciones a través de apt, agrega el repositorio como se muestra arriba, o descomenta la línea `deb` en la entrada de marcador de posición que el paquete escribe en `/etc/apt/sources.list.d/claude-desktop.list`.

77 

78<h2 id="update">

79 Actualizar

80</h2>

81 

82La aplicación de escritorio no se actualiza a sí misma en Linux. Las actualizaciones llegan con las actualizaciones regulares de paquetes de tu sistema:

83 

84```bash theme={null}

85sudo apt update && sudo apt upgrade

86```

87 

88El actualizador de software gráfico de tu distribución también detectará nuevas versiones.

89 

90<h2 id="uninstall">

91 Desinstalar

92</h2>

93 

94```bash theme={null}

95sudo apt remove claude-desktop

96```

97 

98Esto elimina la clave de firma junto con la aplicación, así que si agregaste la entrada del repositorio durante la instalación, elimínala también:

99 

100```bash theme={null}

101sudo rm /etc/apt/sources.list.d/claude-desktop.list

102```

103 

104<h2 id="what’s-not-in-the-linux-beta-yet">

105 Lo que aún no está en la beta de Linux

106</h2>

107 

108* **Computer Use**: [el control de aplicaciones y pantalla](/es/desktop#let-claude-use-your-computer) no está disponible en Linux.

109* **Dictation**: la entrada de voz no está disponible en la aplicación de escritorio Linux. Usa [dictación de voz](/es/voice-dictation) en la CLI en su lugar.

110* **Quick Entry global hotkey**: funciona en X11. En Wayland nativo requiere el portal GlobalShortcuts de tu entorno de escritorio.

111* **Fedora y RHEL**: solo se admiten distribuciones basadas en Debian hoy en día. La compatibilidad con distribuciones adicionales llegará en el futuro.

112 

113Para cualquier cosa que aún no esté disponible en la aplicación de escritorio, la [CLI](/es/quickstart) ejecuta el mismo motor de Claude Code y admite un rango más amplio de distribuciones de Linux; consulta los [requisitos del sistema](/es/setup#system-requirements).

Details

8 8 

9La aplicación de escritorio le proporciona Claude Code con una interfaz gráfica diseñada para ejecutar múltiples sesiones lado a lado: una barra lateral para gestionar trabajo paralelo, un diseño de arrastrar y soltar con terminal integrada y editor de archivos, revisión visual de diferencias, vista previa de aplicaciones en vivo, monitoreo de PR de GitHub con fusión automática, y tareas programadas. No se requiere terminal.9La aplicación de escritorio le proporciona Claude Code con una interfaz gráfica diseñada para ejecutar múltiples sesiones lado a lado: una barra lateral para gestionar trabajo paralelo, un diseño de arrastrar y soltar con terminal integrada y editor de archivos, revisión visual de diferencias, vista previa de aplicaciones en vivo, monitoreo de PR de GitHub con fusión automática, y tareas programadas. No se requiere terminal.

10 10 

11<CardGroup cols={2}>11<CardGroup cols={3}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon13 Universal build for Intel and Apple Silicon

14 </Card>14 </Card>


16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 For x64 processors

18 </Card>18 </Card>

19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/en/desktop-linux">

21 apt or .deb for Ubuntu and Debian

22 </Card>

19</CardGroup>23</CardGroup>

20 24 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/en/desktop-linux).

22 26 

23<Note>27<Note>

24 Claude Code requiere una [suscripción Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).28 Claude Code requiere una [suscripción Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).


40 44 

41<Steps>45<Steps>

42 <Step title="Instalar e iniciar sesión">46 <Step title="Instalar e iniciar sesión">

43 Descargue el instalador para su plataforma desde los enlaces anteriores y ejecútelo. Inicie Claude desde su carpeta Aplicaciones en macOS o el menú Inicio en Windows, luego inicie sesión con su cuenta de Anthropic.47 En macOS y Windows, descargue el instalador desde los enlaces anteriores y ejecútelo. En Linux, siga los pasos de instalación en [Claude Desktop en Linux](/es/desktop-linux). Inicie Claude desde su carpeta Aplicaciones en macOS, el menú Inicio en Windows, o su lanzador de aplicaciones en Linux, luego inicie sesión con su cuenta de Anthropic.

44 </Step>48 </Step>

45 49 

46 <Step title="Abrir la pestaña Code">50 <Step title="Abrir la pestaña Code">

Details

162 </Step>162 </Step>

163 163 

164 <Step title="Explorar plugins disponibles">164 <Step title="Explorar plugins disponibles">

165 Ejecute `/plugin` para abrir el administrador de plugins. Esto abre una interfaz con pestañas con cuatro pestañas por las que puede ciclar usando **Tab** (o **Shift+Tab** para ir hacia atrás):165 Ejecute `/plugin` para abrir el administrador de plugins. Esto abre una interfaz con pestañas con cuatro pestañas por las que puede ciclar usando **Tab**, o **Shift+Tab** para ir hacia atrás:

166 166 

167 * **Discover**: explore plugins disponibles de todos sus mercados167 * **Discover**: explore plugins disponibles de todos sus mercados

168 * **Installed**: vea y administre sus plugins instalados168 * **Installed**: vea y administre sus plugins instalados


185 * **Project scope**: instale para todos los colaboradores en este repositorio185 * **Project scope**: instale para todos los colaboradores en este repositorio

186 * **Local scope**: instale para usted en este repositorio solamente186 * **Local scope**: instale para usted en este repositorio solamente

187 187 

188 Por ejemplo, seleccione **commit-commands** (un plugin que agrega skills de flujo de trabajo de git) e instálelo en su alcance de usuario.188 Por ejemplo, seleccione **commit-commands**, un plugin que agrega skills de flujo de trabajo de git, e instálelo en su alcance de usuario.

189 189 

190 También puede instalar directamente desde la línea de comandos:190 También puede instalar directamente desde la línea de comandos:

191 191 


224</Tip>224</Tip>

225 225 

226* **Repositorios de GitHub**: formato `owner/repo` (por ejemplo, `anthropics/claude-code`)226* **Repositorios de GitHub**: formato `owner/repo` (por ejemplo, `anthropics/claude-code`)

227* **URLs de Git**: cualquier URL de repositorio de git (GitLab, Bitbucket, auto-hospedado)227* **URLs de Git**: cualquier URL de repositorio de git, incluyendo GitLab, Bitbucket y servidores auto-hospedados

228* **Rutas locales**: directorios o rutas directas a archivos `marketplace.json`228* **Rutas locales**: directorios o rutas directas a archivos `marketplace.json`

229* **URLs remotas**: URLs directas a archivos `marketplace.json` hospedados229* **URLs remotas**: URLs directas a archivos `marketplace.json` hospedados

230 230 


232 Agregar desde GitHub232 Agregar desde GitHub

233</h3>233</h3>

234 234 

235Agregue un repositorio de GitHub que contenga un archivo `.claude-plugin/marketplace.json` usando el formato `owner/repo`donde `owner` es el nombre de usuario o la organización de GitHub y `repo` es el nombre del repositorio.235Agregue un repositorio de GitHub que contenga un archivo `.claude-plugin/marketplace.json` usando el formato `owner/repo`, donde `owner` es el nombre de usuario o la organización de GitHub y `repo` es el nombre del repositorio.

236 236 

237Por ejemplo, `anthropics/claude-code` se refiere al repositorio `claude-code` propiedad de `anthropics`:237Por ejemplo, `anthropics/claude-code` se refiere al repositorio `claude-code` propiedad de `anthropics`:

238 238 


246 246 

247Agregue cualquier repositorio de git proporcionando la URL completa. Esto funciona con cualquier host de Git, incluyendo GitLab, Bitbucket y servidores auto-hospedados. Incluya el sufijo `.git` para que Claude Code clone el repositorio en lugar de tratar la URL como un enlace directo a un archivo `marketplace.json` hospedado.247Agregue cualquier repositorio de git proporcionando la URL completa. Esto funciona con cualquier host de Git, incluyendo GitLab, Bitbucket y servidores auto-hospedados. Incluya el sufijo `.git` para que Claude Code clone el repositorio en lugar de tratar la URL como un enlace directo a un archivo `marketplace.json` hospedado.

248 248 

249Incluya el prefijo `https://` también. Claude Code v2.1.196 y versiones posteriores rechazan un host escrito sin él, como `gitlab.com/company/plugins.git`, como un atajo `owner/repo` de GitHub inválido, y el error le indica que agregue el prefijo. Las versiones anteriores lo malinterpretaron como una ruta de repositorio de GitHub y fallan en el momento de la clonación.

250 

249Usando HTTPS:251Usando HTTPS:

250 252 

251```shell theme={null}253```shell theme={null}


298 Instalar plugins300 Instalar plugins

299</h2>301</h2>

300 302 

301Una vez que haya agregado mercados, puede instalar plugins directamente (se instala en alcance de usuario por defecto):303Una vez que haya agregado mercados, puede instalar plugins directamente:

302 304 

303```shell theme={null}305```shell theme={null}

304/plugin install plugin-name@marketplace-name306/plugin install plugin-name@marketplace-name

305```307```

306 308 

307Para elegir un [alcance de instalación](/es/settings#configuration-scopes) diferente, use la interfaz interactiva: ejecute `/plugin`, vaya a la pestaña **Discover** y presione **Enter** en un plugin. Verá opciones para:309El comando abre los detalles de ese plugin, donde elige un [alcance de instalación](/es/settings#configuration-scopes). Verá las mismas opciones cuando ejecute `/plugin`, vaya a la pestaña **Discover** y presione **Enter** en un plugin:

308 310 

309* **User scope** (predeterminado): instale para usted en todos los proyectos311* **User scope** (predeterminado): instale para usted en todos los proyectos

310* **Project scope**: instale para todos los colaboradores en este repositorio (agrega a `.claude/settings.json`)312* **Project scope**: instale para todos los colaboradores en este repositorio, lo que agrega el plugin a `.claude/settings.json`

311* **Local scope**: instale para usted en este repositorio solamente (no compartido con colaboradores)313* **Local scope**: instale para usted en este repositorio solamente, no compartido con colaboradores

314 

315Para instalar sin un paso interactivo, use el comando shell [`claude plugin install`](/es/plugins-reference#plugin-install), que instala en alcance de usuario a menos que pase `--scope`.

312 316 

313También puede ver plugins con alcance **managed**—estos son instalados por administradores a través de [managed settings](/es/settings#settings-files) y no pueden ser modificados.317También puede ver plugins con alcance **managed**. Estos se instalan por administradores a través de [managed settings](/es/settings#settings-files) y no pueden ser modificados.

314 318 

315<Warning>319<Warning>

316 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.320 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.


330 334 

331La 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`.335La 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`.

332 336 

333En Claude Code v2.1.187 y posteriores, la pestaña Installed añade un grupo **Not used recently** para plugins del marketplace que instaló usted mismo pero que no ha invocado en al menos dos semanas y en al menos 10 sesiones, y la vista de detalles muestra una línea **Last used** para cada plugin. Utilice estos para encontrar plugins que ya no usa pero que siguen añadiendo costo de inicio y contexto, luego deshabilítelos o desinstálelos.337En Claude Code v2.1.187 y posteriores, la pestaña Installed añade un grupo **Not used recently** para plugins del marketplace que instaló usted mismo pero que no ha invocado en al menos dos semanas, en un período de al menos 10 sesiones, y la vista de detalles muestra una línea **Last used** para cada plugin. Utilice estos para encontrar plugins que ya no usa pero que siguen añadiendo costo de inicio y contexto, luego deshabilítelos o desinstálelos.

334 338 

335Los plugins que su organización administra o que carga con `--plugin-dir` nunca se enumeran como no utilizados, y los plugins que contribuyen un servidor LSP, tema, estilo de salida, monitor o flujo de trabajo tampoco se enumeran nunca, ya que proporcionan valor sin una invocación para rastrear. El grupo y la línea **Last used** se ocultan cuando su organización restringe los marketplaces con [`strictKnownMarketplaces`](/es/settings#strictknownmarketplaces).339Los plugins que su organización administra o que carga con `--plugin-dir` nunca se enumeran como no utilizados, y los plugins que contribuyen un servidor LSP, tema, estilo de salida, monitor o flujo de trabajo tampoco se enumeran nunca, ya que proporcionan valor sin una invocación para rastrear. El grupo y la línea **Last used** se ocultan cuando su organización restringe los marketplaces con [`strictKnownMarketplaces`](/es/settings#strictknownmarketplaces).

336 340 


358/plugin enable plugin-name@marketplace-name362/plugin enable plugin-name@marketplace-name

359```363```

360 364 

365En estos identificadores, `plugin-name` es el `name` del plugin en la [entrada del marketplace](/es/plugin-marketplaces#plugin-entries), que puede diferir del `name` en el `plugin.json` del plugin.

366 

367A partir de Claude Code v2.1.195, **Enable** y **Disable** en la interfaz `/plugin` funcionan para plugins cuyos dos nombres difieren, y `/plugin enable` y `/plugin disable` aceptan cualquiera de los nombres. Cuando deshabilita tal plugin en una versión anterior, Claude Code reporta `already disabled` y lo deja habilitado.

368 

361Elimine completamente un plugin:369Elimine completamente un plugin:

362 370 

363```shell theme={null}371```shell theme={null}


464 472 

465Los administradores de equipo pueden configurar la instalación automática de mercados para proyectos agregando configuración de mercado a `.claude/settings.json`. Cuando los miembros del equipo confían en la carpeta del repositorio, Claude Code les solicita que instalen estos mercados y plugins.473Los administradores de equipo pueden configurar la instalación automática de mercados para proyectos agregando configuración de mercado a `.claude/settings.json`. Cuando los miembros del equipo confían en la carpeta del repositorio, Claude Code les solicita que instalen estos mercados y plugins.

466 474 

475A partir de Claude Code v2.1.195, este paso de instalación se aplica en cada ruta que carga plugins. Un plugin que solo el `.claude/settings.json` del proyecto habilita, y que proviene de una fuente externa como un repositorio de GitHub o un paquete npm, no se carga hasta que el miembro del equipo lo instale. Hasta entonces, Claude Code reporta el plugin como no instalado y muestra el comando `claude plugin install` para ejecutar.

476 

467Agregue `extraKnownMarketplaces` a su `.claude/settings.json` del proyecto:477Agregue `extraKnownMarketplaces` a su `.claude/settings.json` del proyecto:

468 478 

469```json theme={null}479```json theme={null}


499 509 

5001. **Verifique su versión**: Ejecute `claude --version` para ver qué está instalado.5101. **Verifique su versión**: Ejecute `claude --version` para ver qué está instalado.

5012. **Actualice Claude Code**:5112. **Actualice Claude Code**:

502 * **Homebrew**: `brew upgrade claude-code` (o `brew upgrade claude-code@latest` si instaló ese cask)512 * **Homebrew**: `brew upgrade claude-code`, o `brew upgrade claude-code@latest` si instaló ese cask

503 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`513 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`

504 * **Native installer**: Vuelva a ejecutar el comando de instalación desde [Setup](/es/setup)514 * **Native installer**: Vuelva a ejecutar el comando de instalación desde [Setup](/es/setup)

5053. **Reinicie Claude Code**: Después de actualizar, reinicie su terminal y ejecute `claude` nuevamente.5153. **Reinicie Claude Code**: Después de actualizar, reinicie su terminal y ejecute `claude` nuevamente.


509</h3>519</h3>

510 520 

511* **Marketplace not loading**: Verifique que la URL sea accesible y que `.claude-plugin/marketplace.json` exista en la ruta521* **Marketplace not loading**: Verifique que la URL sea accesible y que `.claude-plugin/marketplace.json` exista en la ruta

512* **Plugin installation failures**: Verifique que las URLs de fuente de plugins sean accesibles y que los repositorios sean públicos (o tenga acceso)522* **Plugin installation failures**: Verifique que las URLs de fuente de plugins sean accesibles y que los repositorios sean públicos, o que tenga acceso a ellos

513* **Files not found after installation**: Los plugins se copian a un caché, por lo que las rutas que hacen referencia a archivos fuera del directorio del plugin no funcionarán523* **Files not found after installation**: Los plugins se copian a un caché, por lo que las rutas que hacen referencia a archivos fuera del directorio del plugin no funcionarán

514* **Plugin skills not appearing**: Limpie el caché con `rm -rf ~/.claude/plugins/cache`, reinicie Claude Code y reinstale el plugin.524* **Plugin skills not appearing**: Limpie el caché con `rm -rf ~/.claude/plugins/cache`, reinicie Claude Code e reinstale el plugin.

515 525 

516Para solución de problemas detallada con soluciones, consulte [Troubleshooting](/es/plugin-marketplaces#troubleshooting) en la guía de mercados. Para herramientas de depuración, consulte [Debugging and development tools](/es/plugins-reference#debugging-and-development-tools).526Para solución de problemas detallada con soluciones, consulte [Troubleshooting](/es/plugin-marketplaces#troubleshooting) en la guía de mercados. Para herramientas de depuración, consulte [Debugging and development tools](/es/plugins-reference#debugging-and-development-tools).

517 527 


519 Code intelligence issues529 Code intelligence issues

520</h3>530</h3>

521 531 

522* **Language server not starting**: verifique que el binario esté instalado y disponible en su `$PATH`. Consulte la pestaña Errors de `/plugin` para obtener detalles.532* **Language server not starting**: Verifique que el binario esté instalado y disponible en su `$PATH`. Consulte la pestaña Errors de `/plugin` para obtener detalles.

523* **High memory usage**: los servidores de lenguaje como `rust-analyzer` y `pyright` pueden consumir memoria significativa en proyectos grandes. Si experimenta problemas de memoria, deshabilite el plugin con `/plugin disable <plugin-name>` y confíe en las herramientas de búsqueda integradas de Claude en su lugar.533* **High memory usage**: Los servidores de lenguaje como `rust-analyzer` y `pyright` pueden consumir memoria significativa en proyectos grandes. Si experimenta problemas de memoria, deshabilite el plugin con `/plugin disable <plugin-name>` y confíe en las herramientas de búsqueda integradas de Claude en su lugar.

524* **False positive diagnostics in monorepos**: los servidores de lenguaje pueden reportar errores de importación no resuelta para paquetes internos si el espacio de trabajo no está configurado correctamente. Estos no afectan la capacidad de Claude para editar código.534* **False positive diagnostics in monorepos**: Los servidores de lenguaje pueden reportar errores de importación no resuelta para paquetes internos si el espacio de trabajo no está configurado correctamente. Estos no afectan la capacidad de Claude para editar código.

525 535 

526<h2 id="next-steps">536<h2 id="next-steps">

527 Próximos pasos537 Próximos pasos

env-vars.md +22 −16

Details

96</h2>96</h2>

97 97 

98| Variable | Propósito |98| Variable | Propósito |

99| :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |99| :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

100| `ANTHROPIC_API_KEY` | Clave de API enviada como encabezado `X-Api-Key`. Cuando se establece, esta clave se utiliza en lugar de su suscripción de Claude Pro, Max, Team o Enterprise incluso si ha iniciado sesión. En modo no interactivo (`-p`), la clave siempre se utiliza cuando está presente. En modo interactivo, se le solicita que apruebe la clave una vez antes de que anule su suscripción. Para utilizar su suscripción en su lugar, ejecute `unset ANTHROPIC_API_KEY` |100| `ANTHROPIC_API_KEY` | Clave de API enviada como encabezado `X-Api-Key`. Cuando se establece, esta clave se utiliza en lugar de su suscripción de Claude Pro, Max, Team o Enterprise incluso si ha iniciado sesión. En modo no interactivo (`-p`), la clave siempre se utiliza cuando está presente. En modo interactivo, se le solicita que apruebe la clave una vez antes de que anule su suscripción. Para utilizar su suscripción en su lugar, ejecute `unset ANTHROPIC_API_KEY` |

101| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para el encabezado `Authorization` (el valor que establezca aquí tendrá el prefijo `Bearer `) |101| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para el encabezado `Authorization` (el valor que establezca aquí tendrá el prefijo `Bearer `) |

102| `ANTHROPIC_AWS_API_KEY` | Clave de API del espacio de trabajo para [Claude Platform on AWS](/es/claude-platform-on-aws), generada en la Consola de AWS. Se envía como `x-api-key` y tiene precedencia sobre AWS SigV4 |102| `ANTHROPIC_AWS_API_KEY` | Clave de API del espacio de trabajo para [Claude Platform on AWS](/es/claude-platform-on-aws), generada en la Consola de AWS. Se envía como `x-api-key` y tiene precedencia sobre AWS SigV4 |

103| `ANTHROPIC_AWS_BASE_URL` | Anule la URL del endpoint de [Claude Platform on AWS](/es/claude-platform-on-aws). Utilice para regiones personalizadas o cuando enrute a través de una [puerta de enlace LLM](/es/llm-gateway). El valor predeterminado es `https://aws-external-anthropic.{AWS_REGION}.api.aws` |103| `ANTHROPIC_AWS_BASE_URL` | Anule la URL del endpoint de [Claude Platform on AWS](/es/claude-platform-on-aws). Utilice para regiones personalizadas o cuando enrute a través de una [puerta de enlace LLM](/es/llm-gateway). El valor predeterminado es `https://aws-external-anthropic.{AWS_REGION}.api.aws` |

104| `ANTHROPIC_AWS_WORKSPACE_ID` | Requerido para [Claude Platform on AWS](/es/claude-platform-on-aws). Se envía en cada solicitud como encabezado `anthropic-workspace-id` |104| `ANTHROPIC_AWS_WORKSPACE_ID` | Requerido para [Claude Platform on AWS](/es/claude-platform-on-aws). Se envía en cada solicitud como encabezado `anthropic-workspace-id` |

105| `ANTHROPIC_BASE_URL` | Anule el endpoint de 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, [búsqueda de herramientas MCP](/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` |105| `ANTHROPIC_BASE_URL` | Anule el endpoint de 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, [búsqueda de herramientas MCP](/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`. {/* min-version: 2.1.196 */}A partir de v2.1.196, [Control Remoto](/es/remote-control#requirements) está deshabilitado cuando esto apunta a un host distinto de `api.anthropic.com`, coincidiendo con su comportamiento en Bedrock, Vertex AI y Foundry |

106| `ANTHROPIC_BEDROCK_BASE_URL` | Anule la URL del endpoint de Bedrock. Utilice para endpoints de Bedrock personalizados o cuando enrute a través de una [puerta de enlace LLM](/es/llm-gateway). Consulte [Amazon Bedrock](/es/amazon-bedrock) |106| `ANTHROPIC_BEDROCK_BASE_URL` | Anule la URL del endpoint de Bedrock. Utilice para endpoints de Bedrock personalizados o cuando enrute a través de una [puerta de enlace LLM](/es/llm-gateway). Consulte [Amazon Bedrock](/es/amazon-bedrock) |

107| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Anule la URL del endpoint de Bedrock Mantle. Consulte [Endpoint Mantle](/es/amazon-bedrock#use-the-mantle-endpoint) |107| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Anule la URL del endpoint de Bedrock Mantle. Consulte [Endpoint Mantle](/es/amazon-bedrock#use-the-mantle-endpoint) |

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


148| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establezca en `1` para deshabilitar todos los tipos de [subagentes](/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 |148| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establezca en `1` para deshabilitar todos los tipos de [subagentes](/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 |

149| `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 utilizan sus nombres originales. Solo uso de SDK |149| `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 utilizan sus nombres originales. Solo uso de SDK |

150| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Tiempo de espera de estancamiento en milisegundos para subagentes en segundo plano. Predeterminado `600000` (10 minutos). El temporizador se reinicia en cada evento de progreso de transmisión; si no llega progreso dentro de la ventana, el subagente se aborta y la tarea se marca como fallida, mostrando cualquier resultado parcial al padre |150| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Tiempo de espera de estancamiento en milisegundos para subagentes en segundo plano. Predeterminado `600000` (10 minutos). El temporizador se reinicia en cada evento de progreso de transmisión; si no llega progreso dentro de la ventana, el subagente se aborta y la tarea se marca como fallida, mostrando cualquier resultado parcial al padre |

151| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Establezca el porcentaje (1-100) de la ventana de compactación automática en el que se activa la compactación automática. Utilice valores más bajos como `50` para compactar antes. Esta variable solo causa compactación anterior cuando Claude Code compacta de forma proactiva: cuando se establece `CLAUDE_CODE_AUTO_COMPACT_WINDOW`, en [sesiones en la nube](/es/claude-code-on-the-web) y en Sonnet 4.6 y Opus 4.6 sin [contexto extendido](/es/model-config#extended-context), que compactan en el límite de 200K de forma predeterminada. En otros casos, como una sesión local en Opus 4.8 o cualquier modelo con contexto extendido, la compactación automática se activa cuando la conversación alcanza el límite de contexto del modelo. La anulación solo puede bajar el umbral, por lo que los valores por encima del predeterminado no tienen efecto. Se aplica tanto a conversaciones principales como a subagentes |151| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Establezca el porcentaje (1-100) de la ventana de compactación automática en el que se activa la compactación automática. Utilice valores más bajos como `50` para compactar antes. Esta variable solo causa compactación anterior cuando Claude Code compacta de forma proactiva: cuando se establece `CLAUDE_CODE_AUTO_COMPACT_WINDOW`, en [sesiones en la nube](/es/claude-code-on-the-web) y en Sonnet 4.6 y Opus 4.6 sin [contexto extendido](/es/model-config#extended-context), que compactan en el límite de 200K de forma predeterminada. En Sonnet 5, la compactación proactiva se aplica en el [umbral predeterminado](/es/model-config#sonnet-5-context-window) del modelo. En otros casos, como una sesión local en Opus 4.8, la compactación automática se activa cuando la conversación alcanza el límite de contexto del modelo. La anulación solo puede bajar el umbral, por lo que los valores por encima del predeterminado no tienen efecto. Se aplica tanto a conversaciones principales como a subagentes |

152| `CLAUDE_AUTO_BACKGROUND_TASKS` | Establezca en `1` para forzar la habilitación del envío automático a segundo plano de tareas de agentes de larga duración. Cuando se habilita, los subagentes se mueven al segundo plano después de ejecutarse durante aproximadamente dos minutos |152| `CLAUDE_AUTO_BACKGROUND_TASKS` | Establezca en `1` para forzar la habilitación del envío automático a segundo plano de tareas de agentes de larga duración. Cuando se habilita, los subagentes se mueven al segundo plano después de ejecutarse durante aproximadamente dos minutos |

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

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


160| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo en milisegundos en el que se deben actualizar las credenciales (al usar [`apiKeyHelper`](/es/settings#available-settings)) |160| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo en milisegundos en el que se deben actualizar las credenciales (al usar [`apiKeyHelper`](/es/settings#available-settings)) |

161| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Establezca en `0` para evitar que Claude Code abra el navegador automáticamente cuando se publica un nuevo [artefacto](/es/artifacts). Volver a publicar un artefacto existente no abre el navegador independientemente de esta configuración |161| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Establezca en `0` para evitar que Claude Code abra el navegador automáticamente cuando se publica un nuevo [artefacto](/es/artifacts). Volver a publicar un artefacto existente no abre el navegador independientemente de esta configuración |

162| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Establezca en `0` para omitir el bloque de atribución (versión del cliente e huella digital del indicador) desde el inicio del indicador del sistema. Deshabilitarlo mejora las tasas de acierto de caché de indicadores cuando se enruta a través de una [puerta de enlace LLM](/es/llm-gateway). El almacenamiento en caché de API de Anthropic no se ve afectado |162| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Establezca en `0` para omitir el bloque de atribución (versión del cliente e huella digital del indicador) desde el inicio del indicador del sistema. Deshabilitarlo mejora las tasas de acierto de caché de indicadores cuando se enruta a través de una [puerta de enlace LLM](/es/llm-gateway). El almacenamiento en caché de API de Anthropic no se ve afectado |

163| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la capacidad de contexto en tokens utilizada para cálculos de compactación automática. El valor predeterminado es la ventana de contexto del modelo: 200K para modelos estándar o 1M para modelos de [contexto extendido](/es/model-config#extended-context). Utilice un valor más bajo como `500000` en un modelo de 1M para tratar la ventana como 500K para propósitos de compactación. El valor se limita a la ventana de contexto real del modelo. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` se aplica como porcentaje de este valor. Establecer esta variable desvincula el umbral de compactación del `used_percentage` de la línea de estado, que siempre utiliza la ventana de contexto completa del modelo |163| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la capacidad de contexto en tokens utilizada para cálculos de compactación automática. El valor predeterminado es la ventana de contexto del modelo: 200K para modelos estándar o 1M para modelos de [contexto extendido](/es/model-config#extended-context), excepto en Sonnet 5, que tiene su propio [umbral predeterminado](/es/model-config#sonnet-5-context-window). Utilice un valor más bajo como `500000` en un modelo de 1M para tratar la ventana como 500K para propósitos de compactación. El valor se limita a la ventana de contexto real del modelo. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` se aplica como porcentaje de este valor. Establecer esta variable desvincula el umbral de compactación del `used_percentage` de la línea de estado, que siempre utiliza la ventana de contexto completa del modelo |

164| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión automática de IDE](/es/vs-code). De forma predeterminada, Claude Code se conecta automáticamente cuando se lanza dentro del terminal integrado 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 el terminal principal. Tiene precedencia sobre la configuración global [`autoConnectIde`](/es/settings#global-config-settings) |164| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión automática de IDE](/es/vs-code). De forma predeterminada, Claude Code se conecta automáticamente cuando se lanza dentro del terminal integrado 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 el terminal principal. Tiene precedencia sobre la configuración global [`autoConnectIde`](/es/settings#global-config-settings) |

165| `CLAUDE_CODE_CERT_STORE` | Lista separada por comas de fuentes de certificados CA para conexiones TLS. `bundled` es el conjunto de CA de Mozilla incluido con Claude Code. `system` es el almacén de confianza del sistema operativo. El valor predeterminado es `bundled,system` |165| `CLAUDE_CODE_CERT_STORE` | Lista separada por comas de fuentes de certificados CA para conexiones TLS. `bundled` es el conjunto de CA de Mozilla incluido con Claude Code. `system` es el almacén de confianza del sistema operativo, de solo lectura en tiempos de ejecución con `tls.getCACertificates`: el binario nativo, o Node 22.15 o posterior para instalaciones npm. Consulte [Almacén de certificados CA](/es/network-config#ca-certificate-store). El valor predeterminado es `bundled,system` |

166| `CLAUDE_CODE_CHILD_SESSION` | {/* min-version: 2.1.172 */}Establezca en `1` en subprocesos que Claude Code genera a través de las herramientas Bash, PowerShell y Monitor, comandos [hook](/es/hooks) y comandos de [línea de estado](/es/statusline). No se establece para subprocesos de [servidor MCP](/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 lanza un subproceso y no por extensiones de 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 |166| `CLAUDE_CODE_CHILD_SESSION` | {/* min-version: 2.1.172 */}Establezca en `1` en subprocesos que Claude Code genera a través de las herramientas Bash, PowerShell y Monitor, comandos [hook](/es/hooks) y comandos de [línea de estado](/es/statusline). No se establece para subprocesos de [servidor MCP](/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 lanza un subproceso y no por extensiones de 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 |

167| `CLAUDE_CODE_CLIENT_CERT` | Ruta al archivo de certificado de cliente para autenticación mTLS |167| `CLAUDE_CODE_CLIENT_CERT` | Ruta al archivo de certificado de cliente para autenticación mTLS |

168| `CLAUDE_CODE_CLIENT_KEY` | Ruta al archivo de clave privada de cliente para autenticación mTLS |168| `CLAUDE_CODE_CLIENT_KEY` | Ruta al archivo de clave privada de cliente para autenticación mTLS |


170| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | {/* max-version: 2.1.185 */}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 transmitida. Use `API_TIMEOUT_MS` para el tiempo de espera por solicitud |170| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | {/* max-version: 2.1.185 */}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 transmitida. Use `API_TIMEOUT_MS` para el tiempo de espera por solicitud |

171| `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 esta variable sola no habilita el registro. La bandera [`--debug-file`](/es/cli-reference#cli-flags) hace ambas cosas a la vez. El valor predeterminado es `~/.claude/debug/<session-id>.txt` |171| `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 esta variable sola no habilita el registro. La bandera [`--debug-file`](/es/cli-reference#cli-flags) hace ambas cosas a la vez. El valor predeterminado es `~/.claude/debug/<session-id>.txt` |

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

173| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Establezca en `1` para deshabilitar el soporte de [ventana de contexto de 1M](/es/model-config#extended-context). Cuando se establece, las variantes de modelo de 1M no están disponibles en el selector de modelo. Útil para entornos empresariales con requisitos de cumplimiento |173| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Establezca en `1` para deshabilitar el soporte de [ventana de contexto de 1M](/es/model-config#extended-context). Cuando se establece, las variantes de modelo de 1M no están disponibles en el selector de modelo, y las sesiones de [Sonnet 5](/es/model-config#sonnet-5-context-window) se tratan como si tuvieran una ventana de 200K. Útil para entornos empresariales con requisitos de cumplimiento |

174| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Establezca en `1` para deshabilitar [razonamiento adaptativo](/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`. {/* min-version: 2.1.111 */}A partir de v2.1.111, no tiene efecto en Fable 5, ni en Opus 4.7 y posterior, que siempre utilizan razonamiento adaptativo |174| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Establezca en `1` para deshabilitar [razonamiento adaptativo](/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`. {/* min-version: 2.1.111 */}A partir de v2.1.111, no tiene efecto en Fable 5, Sonnet 5 u Opus 4.7 y posterior, que siempre utilizan razonamiento adaptativo |

175| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | {/* min-version: 2.1.98 */}Establezca en `1` para deshabilitar la [herramienta asesor](/es/advisor). El comando `/advisor` y la bandera `--advisor` no estarán disponibles y cualquier `advisorModel` configurado se ignora. Requiere Claude Code v2.1.98 o posterior |175| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | {/* min-version: 2.1.98 */}Establezca en `1` para deshabilitar la [herramienta asesor](/es/advisor). El comando `/advisor` y la bandera `--advisor` no estarán disponibles y cualquier `advisorModel` configurado se ignora. Requiere Claude Code v2.1.98 o posterior |

176| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Establezca en `1` para desactivar [agentes en segundo plano y vista de agentes](/es/agent-view): `claude agents`, `--bg`, `/background` y el supervisor bajo demanda. Equivalente a la configuración [`disableAgentView`](/es/settings#available-settings) |176| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Establezca en `1` para desactivar [agentes en segundo plano y vista de agentes](/es/agent-view): `claude agents`, `--bg`, `/background` y el supervisor bajo demanda. Equivalente a la configuración [`disableAgentView`](/es/settings#available-settings) |

177| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Establezca en `1` para deshabilitar [renderizado a pantalla completa](/es/fullscreen) y utilizar 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`](/es/settings#available-settings). También puede cambiar con `/tui default`. No se aplica a sesiones en segundo plano abiertas desde [vista de agentes](/es/agent-view), que siempre utilizan renderizado a pantalla completa |177| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Establezca en `1` para deshabilitar [renderizado a pantalla completa](/es/fullscreen) y utilizar 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`](/es/settings#available-settings). También puede cambiar con `/tui default`. No se aplica a sesiones en segundo plano abiertas desde [vista de agentes](/es/agent-view), que siempre utilizan renderizado a pantalla completa |


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

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

181| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Establezca en `1` para deshabilitar toda la funcionalidad de tareas en segundo plano, incluido el parámetro `run_in_background` en herramientas Bash y subagentes, auto-backgrounding y el atajo Ctrl+B |181| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Establezca en `1` para deshabilitar toda la funcionalidad de tareas en segundo plano, incluido el parámetro `run_in_background` en herramientas Bash y subagentes, auto-backgrounding y el atajo Ctrl+B |

182| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | {/* min-version: 2.1.196 */}Establezca en `1` para detener los comandos de shell en segundo plano en ejecución de una [sesión en segundo plano](/es/agent-view) y los flujos de trabajo dinámicos cuando el [supervisor](/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 a esa entrega: poner una sesión en segundo plano con `←` o [`/background`](/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 |

183| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | {/* min-version: 2.1.193 */}Establezca en `1` para detener que Claude Code termine [comandos de shell en segundo plano](/es/interactive-mode#background-bash-commands) cuando el sistema operativo reporta presión de memoria. De forma predeterminada, en macOS y Linux, Claude Code termina un shell en segundo plano 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 no hay turno o subagente en ejecución. 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 |

182| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establezca en `1` para deshabilitar las [skills](/es/skills) y flujos de trabajo que se incluyen con Claude Code: las skills agrupadas y los flujos de trabajo integrados se eliminan completamente, mientras que los comandos slash integrados como `/init` permanecen escribibles pero se ocultan del modelo. Las skills de plugins, `.claude/skills/` y `.claude/commands/` no se ven afectadas. Equivalente a la configuración [`disableBundledSkills`](/es/settings#available-settings); `0` no la anula |184| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establezca en `1` para deshabilitar las [skills](/es/skills) y flujos de trabajo que se incluyen con Claude Code: las skills agrupadas y los flujos de trabajo integrados se eliminan completamente, mientras que los comandos slash integrados como `/init` permanecen escribibles pero se ocultan del modelo. Las skills de plugins, `.claude/skills/` y `.claude/commands/` no se ven afectadas. Equivalente a la configuración [`disableBundledSkills`](/es/settings#available-settings); `0` no la anula |

183| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Establezca en `1` para evitar cargar cualquier archivo de memoria CLAUDE.md en contexto, incluidos archivos de usuario, proyecto y memoria automática |185| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Establezca en `1` para evitar cargar cualquier archivo de memoria CLAUDE.md en contexto, incluidos archivos de usuario, proyecto y memoria automática |

184| `CLAUDE_CODE_DISABLE_CRON` | Establezca en `1` para deshabilitar [tareas programadas](/es/scheduled-tasks). La skill `/loop` y las herramientas cron no estarán disponibles y cualquier tarea ya programada dejará de ejecutarse, incluidas las tareas que ya se están ejecutando en mitad de sesión |186| `CLAUDE_CODE_DISABLE_CRON` | Establezca en `1` para deshabilitar [tareas programadas](/es/scheduled-tasks). La skill `/loop` y las herramientas cron no estarán disponibles y cualquier tarea ya programada dejará de ejecutarse, incluidas las tareas que ya se están ejecutando en mitad de sesión |

185| `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. Utilice 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. |187| `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. Utilice 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 |

186| `CLAUDE_CODE_DISABLE_FAST_MODE` | Establezca en `1` para deshabilitar [modo rápido](/es/fast-mode) |188| `CLAUDE_CODE_DISABLE_FAST_MODE` | Establezca en `1` para deshabilitar [modo rápido](/es/fast-mode) |

187| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Establezca en `1` para deshabilitar las encuestas de calidad de sesión "¿Cómo está funcionando Claude?". Las encuestas también se deshabilitan cuando se establece `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, a menos que `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` opte por participar nuevamente. Para establecer una tasa de muestreo en lugar de deshabilitar completamente, utilice la configuración [`feedbackSurveyRate`](/es/settings#available-settings). Consulte [Encuestas de calidad de sesión](/es/data-usage#session-quality-surveys) |189| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Establezca en `1` para deshabilitar las encuestas de calidad de sesión "¿Cómo está funcionando Claude?". Las encuestas también se deshabilitan cuando se establece `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, a menos que `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` opte por participar nuevamente. Para establecer una tasa de muestreo en lugar de deshabilitar completamente, utilice la configuración [`feedbackSurveyRate`](/es/settings#available-settings). Consulte [Encuestas de calidad de sesión](/es/data-usage#session-quality-surveys) |

188| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Establezca en `1` para deshabilitar el [checkpointing](/es/checkpointing) de archivos. El comando `/rewind` no podrá restaurar cambios de código |190| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Establezca en `1` para deshabilitar el [checkpointing](/es/checkpointing) de archivos. El comando `/rewind` no podrá restaurar cambios de código |

189| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Establezca en `1` para eliminar las instrucciones de flujo de trabajo de confirmación y PR integradas y la instantánea de estado de git del indicador del sistema de Claude. Útil cuando se utilizan sus propias skills de flujo de trabajo de git. Tiene precedencia sobre la configuración [`includeGitInstructions`](/es/settings#available-settings) cuando se establece |191| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Establezca en `1` para eliminar las instrucciones de flujo de trabajo de confirmación y PR integradas y la instantánea de estado de git del indicador del sistema de Claude. Útil cuando se utilizan sus propias skills de flujo de trabajo de git. Tiene precedencia sobre la configuración [`includeGitInstructions`](/es/settings#available-settings) cuando se establece |

190| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Establezca en `1` para evitar el remapeo automático de Opus 4.0 y 4.1 a la versión actual de Opus en la API de Anthropic. Utilice cuando desee fijar intencionalmente un modelo anterior. El remapeo no se ejecuta en Bedrock, Vertex o Foundry |192| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Establezca en `1` para evitar el remapeo automático de Opus 4.0 y 4.1 a la versión actual de Opus en la API de Anthropic. Utilice cuando desee fijar intencionalmente un modelo anterior. El remapeo no se ejecuta en Bedrock, Vertex o Foundry |

191| `CLAUDE_CODE_DISABLE_MOUSE` | Establezca en `1` para deshabilitar el seguimiento del ratón en [renderizado a pantalla completa](/es/fullscreen). El desplazamiento por teclado con `PgUp` y `PgDn` sigue funcionando. Utilice esto para mantener el comportamiento nativo de copiar al seleccionar de su terminal |193| `CLAUDE_CODE_DISABLE_MOUSE` | Establezca en `1` para deshabilitar el seguimiento del ratón en [renderizado a pantalla completa](/es/fullscreen). El desplazamiento por teclado con `PgUp` y `PgDn` sigue funcionando. Utilice esto para mantener el comportamiento nativo de copiar al seleccionar de su terminal |

194| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | {/* min-version: 2.1.195 */}Establezca en `1` para deshabilitar el manejo de clics, arrastres y desplazamientos en [renderizado a pantalla completa](/es/fullscreen) mientras se mantiene el desplazamiento de la rueda del ratón. Utilice esto cuando desee que el desplazamiento de la 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 |

192| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Equivalente a establecer `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` y `DISABLE_TELEMETRY` |195| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Equivalente a establecer `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` y `DISABLE_TELEMETRY` |

193| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Establezca en `1` para deshabilitar el respaldo no transmitido cuando una solicitud transmitida 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 duplicadas |196| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Establezca en `1` para deshabilitar el respaldo no transmitido cuando una solicitud transmitida 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 duplicadas |

197| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | {/* min-version: 2.1.193 */}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](/es/remote-control#mobile-push-notifications) cuando detecta actividad de teclado reciente o enfoque de terminal. Esta variable deshabilita 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 |

194| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Establezca en `1` para omitir la adición automática del marketplace oficial de plugins en la primera ejecución |198| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Establezca en `1` para omitir la adición automática del marketplace oficial de plugins en la primera ejecución |

195| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Establezca en `1` para omitir la carga de skills desde el directorio de skills administradas en todo el sistema. Útil para sesiones de contenedor o CI que no deben cargar skills aprovisionadas por operadores |199| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Establezca en `1` para omitir la carga de skills desde el directorio de skills administradas en todo el sistema. Útil para sesiones de contenedor o CI que no deben cargar skills aprovisionadas por operadores |

196| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Establezca en `1` para deshabilitar las actualizaciones automáticas del título del terminal basadas en el contexto de la conversación. En sesiones de Agent SDK y `claude -p`, esto también omite la solicitud de Haiku en segundo plano que genera el título de la sesión |200| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Establezca en `1` para deshabilitar las actualizaciones automáticas del título del terminal basadas en el contexto de la conversación. En sesiones de Agent SDK y `claude -p`, esto también omite la solicitud de Haiku en segundo plano que genera el título de la sesión |


198| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Establezca en `1` para deshabilitar el desplazamiento virtual en [renderizado a pantalla completa](/es/fullscreen) y renderizar cada mensaje en la transcripción. Utilice esto si el desplazamiento en modo pantalla completa muestra regiones en blanco donde deberían aparecer mensajes |202| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Establezca en `1` para deshabilitar el desplazamiento virtual en [renderizado a pantalla completa](/es/fullscreen) y renderizar cada mensaje en la transcripción. Utilice esto si el desplazamiento en modo pantalla completa muestra regiones en blanco donde deberían aparecer mensajes |

199| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Establezca en `1` para deshabilitar [flujos de trabajo](/es/workflows#turn-workflows-off). Equivalente a la configuración [`disableWorkflows`](/es/settings#available-settings) |203| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Establezca en `1` para deshabilitar [flujos de trabajo](/es/workflows#turn-workflows-off). Equivalente a la configuración [`disableWorkflows`](/es/settings#available-settings) |

200| `CLAUDE_CODE_EFFORT_LEVEL` | Establezca el nivel de esfuerzo para modelos compatibles. Valores: `low`, `medium`, `high`, `xhigh`, `max` o `auto` para usar el valor predeterminado del modelo. Los niveles disponibles dependen del modelo. Tiene precedencia sobre `/effort` y la configuración `effortLevel`. Consulte [Ajustar nivel de esfuerzo](/es/model-config#adjust-effort-level) |204| `CLAUDE_CODE_EFFORT_LEVEL` | Establezca el nivel de esfuerzo para modelos compatibles. Valores: `low`, `medium`, `high`, `xhigh`, `max` o `auto` para usar el valor predeterminado del modelo. Los niveles disponibles dependen del modelo. Tiene precedencia sobre `/effort` y la configuración `effortLevel`. Consulte [Ajustar nivel de esfuerzo](/es/model-config#adjust-effort-level) |

201| `CLAUDE_CODE_ENABLE_AUTO_MODE` | {/* min-version: 2.1.158 */}Establezca en `1` para hacer que [modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode) esté disponible en Amazon Bedrock, Google Cloud Vertex AI y Microsoft Foundry. Requiere Claude Code v2.1.158 o posterior. No tiene efecto en la API de Anthropic, donde el modo automático está disponible de forma predeterminada. Consulte [Habilitar modo automático en Bedrock, Vertex AI o Foundry](/es/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry) |205| `CLAUDE_CODE_ENABLE_AUTO_MODE` | {/* min-version: 2.1.158 */}Establezca en `1` para hacer que [modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode) esté disponible en Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry y sesiones de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada. Requiere Claude Code v2.1.158 o posterior. No tiene efecto en la API de Anthropic, donde el modo automático está disponible de forma predeterminada. Consulte [Habilitar modo automático en Bedrock, Vertex AI o Foundry](/es/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry) |

202| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Anule la disponibilidad de [resumen de sesión](/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`](/es/settings#available-settings) es `false`. Tiene precedencia sobre la configuración y el toggle `/config` |206| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Anule la disponibilidad de [resumen de sesión](/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`](/es/settings#available-settings) es `false`. Tiene precedencia sobre la configuración y el toggle `/config` |

203| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Establezca en `1` para actualizar el estado del plugin en los límites de turno en [modo no interactivo](/es/headless) después de que se complete una instalación en segundo plano. Desactivado de forma predeterminada porque la actualización cambia el indicador del sistema a mitad de sesión, lo que invalida el [almacenamiento en caché de indicadores](/es/prompt-caching) para ese turno |207| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Establezca en `1` para actualizar el estado del plugin en los límites de turno en [modo no interactivo](/es/headless) después de que se complete una instalación en segundo plano. Desactivado de forma predeterminada porque la actualización cambia el indicador del sistema a mitad de sesión, lo que invalida el [almacenamiento en caché de indicadores](/es/prompt-caching) para ese turno |

204| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Establezca en `1` para enrutar la encuesta de calidad de sesión "¿Cómo está funcionando Claude?" a su propio [recopilador de OpenTelemetry](/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. No se envían datos de encuesta a Anthropic en este modo. Se aplica cuando se establece `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` o `DO_NOT_TRACK`, y no tiene efecto de otra manera. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` y la política de comentarios del producto de la organización tienen precedencia |208| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Establezca en `1` para enrutar la encuesta de calidad de sesión "¿Cómo está funcionando Claude?" a su propio [recopilador de OpenTelemetry](/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. No se envían datos de encuesta a Anthropic en este modo. Se aplica cuando se establece `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` o `DO_NOT_TRACK`, y no tiene efecto de otra manera. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` y la política de comentarios del producto de la organización tienen precedencia |


224| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Anule la dirección de host utilizada para conectarse a la extensión de IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |228| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Anule la dirección de host utilizada para conectarse a la extensión de IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |

225| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Omita la instalación automática de extensiones de IDE. Equivalente a establecer [`autoInstallIdeExtension`](/es/settings#global-config-settings) en `false` |229| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Omita la instalación automática de extensiones de IDE. Equivalente a establecer [`autoInstallIdeExtension`](/es/settings#global-config-settings) en `false` |

226| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establezca en `1` para omitir la validación de entradas de archivo de bloqueo de IDE durante la conexión. Utilice cuando la conexión automática no encuentra su IDE a pesar de que se está ejecutando |230| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establezca en `1` para omitir la validación de entradas de archivo de bloqueo de IDE durante la conexión. Utilice cuando la conexión automática no encuentra su IDE a pesar de que se está ejecutando |

227| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Anule el tamaño de la ventana de contexto que Claude Code asume para el modelo activo. Solo tiene efecto cuando `DISABLE_COMPACT` también está establecido. Utilice esto cuando enrute a un modelo a través de `ANTHROPIC_BASE_URL` cuya ventana de contexto no coincide con el tamaño integrado para su nombre |231| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Anule el tamaño de la ventana de contexto que Claude Code asume para el modelo activo. {/* min-version: 2.1.193 */}A partir de v2.1.193, se aplica directamente para nombres de modelo que Claude Code no reconoce como un modelo Claude; para modelos Claude reconocidos solo tiene efecto cuando `DISABLE_COMPACT` también está establecido. Utilice esto cuando enrute a un modelo a través de `ANTHROPIC_BASE_URL` cuya ventana de contexto no coincide con el tamaño integrado para su nombre |

228| `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 máximos varían según el modelo; consulte [tokens de salida máximos](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Aumentar este valor reduce la ventana de contexto efectiva disponible antes de que se active la [compactación automática](/es/costs#reduce-token-usage). |232| `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 máximos varían según el modelo; consulte [tokens de salida máximos](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Aumentar este valor reduce la ventana de contexto efectiva disponible antes de que se active la [compactación automática](/es/costs#reduce-token-usage) |

229| `CLAUDE_CODE_MAX_RETRIES` | Anule el número de veces para reintentar solicitudes de API fallidas (predeterminado: 10). {/* min-version: 2.1.186 */}Limitado a 15 a partir de v2.1.186. Para sesiones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG` en su lugar |233| `CLAUDE_CODE_MAX_RETRIES` | Anule el número de veces para reintentar solicitudes de API fallidas (predeterminado: 10). {/* min-version: 2.1.186 */}Limitado a 15 a partir de v2.1.186. Para sesiones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG` en su lugar |

230| `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 |234| `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 |

231| `CLAUDE_CODE_MAX_TURNS` | Limite el número de turnos agentivos cuando no se pasa un límite explícito. Equivalente a pasar [`--max-turns`](/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 |235| `CLAUDE_CODE_MAX_TURNS` | Limite el número de turnos agentivos cuando no se pasa un límite explícito. Equivalente a pasar [`--max-turns`](/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 |

232| `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 |236| `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 |

233| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | {/* min-version: 2.1.187 */}Tiempo de espera de inactividad en milisegundos para llamadas de herramientas MCP remotas (predeterminado: 300000, o 5 minutos). Cuando un servidor MCP HTTP, SSE, WebSocket o [conector de claude.ai](/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` de reloj de pared. Establezca en `0` para deshabilitar la verificación de inactividad. Los valores por debajo de 1000 se elevan a un segundo, y el valor se limita al `MCP_TOOL_TIMEOUT` efectivo. No se aplica a servidores stdio o IDE. Requiere Claude Code v2.1.187 o posterior |237| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | {/* min-version: 2.1.187 */}Tiempo de espera de inactividad en milisegundos para llamadas de herramientas MCP remotas (predeterminado: 300000, o 5 minutos). Cuando un servidor MCP HTTP, SSE, WebSocket o [conector de claude.ai](/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` de reloj de pared. Establezca en `0` para deshabilitar la verificación de inactividad. Los valores por debajo de 1000 se elevan a un segundo, y el valor se limita al `MCP_TOOL_TIMEOUT` efectivo. No se aplica a servidores stdio o IDE. Requiere Claude Code v2.1.187 o posterior |

234| `CLAUDE_CODE_NATIVE_CURSOR` | Establezca en `1` para mostrar el cursor propio del terminal en el símbolo de inserción en lugar de un bloque dibujado. El cursor respeta la configuración de parpadeo, forma y enfoque del terminal |238| `CLAUDE_CODE_NATIVE_CURSOR` | Establezca en `1` para mostrar el cursor propio del terminal en el símbolo de inserción en lugar de un bloque dibujado. El cursor respeta la configuración de parpadeo, forma y enfoque del terminal |

235| `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 solicitar. |239| `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 solicitar |

236| `CLAUDE_CODE_NO_FLICKER` | Establezca en `1` para habilitar [renderizado a pantalla completa](/es/fullscreen), una vista previa de investigación que reduce el parpadeo y mantiene la memoria plana en conversaciones largas. Equivalente a la configuración [`tui`](/es/settings#available-settings); también puede cambiar con `/tui fullscreen` |240| `CLAUDE_CODE_NO_FLICKER` | Establezca en `1` para habilitar [renderizado a pantalla completa](/es/fullscreen), una vista previa de investigación que reduce el parpadeo y mantiene la memoria plana en conversaciones largas. Equivalente a la configuración [`tui`](/es/settings#available-settings); también puede cambiar con `/tui fullscreen` |

237| `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 |241| `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 |

238| `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 se establece `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` |242| `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 se establece `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` |

239| `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`](/es/authentication#generate-a-long-lived-token) |243| `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`](/es/authentication#generate-a-long-lived-token) |

240| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | {/* max-version: 2.1.159 */}Eliminado en v2.1.160 y ahora es un no-op. Anteriormente fijaba [modo rápido](/es/fast-mode) a Claude Opus 4.6 en lugar del predeterminado actual |244| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | {/* max-version: 2.1.159 */}Eliminado en v2.1.160 y ahora es un no-op. Anteriormente fijaba [modo rápido](/es/fast-mode) a Claude Opus 4.6 en lugar del predeterminado actual. Opus 4.6 ya no admite modo rápido |

241| `CLAUDE_CODE_OTEL_DIAG_STDERR` | {/* min-version: 2.1.179 */}Establezca en `1` para escribir errores de diagnóstico del exportador de 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 de Prometheus falla silenciosamente de otra manera. Requiere Claude Code v2.1.179 o posterior. Consulte [Monitoreo](/es/monitoring-usage) |245| `CLAUDE_CODE_OTEL_DIAG_STDERR` | {/* min-version: 2.1.179 */}Establezca en `1` para escribir errores de diagnóstico del exportador de 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 de Prometheus falla silenciosamente de otra manera. Requiere Claude Code v2.1.179 o posterior. Consulte [Monitoreo](/es/monitoring-usage) |

242| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tiempo de espera en milisegundos para vaciar spans de OpenTelemetry pendientes (predeterminado: 5000). Consulte [Monitoreo](/es/monitoring-usage) |246| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tiempo de espera en milisegundos para vaciar spans de OpenTelemetry pendientes (predeterminado: 5000). Consulte [Monitoreo](/es/monitoring-usage) |

243| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para actualizar encabezados dinámicos de OpenTelemetry en milisegundos (predeterminado: 1740000 / 29 minutos). Consulte [Encabezados dinámicos](/es/monitoring-usage#dynamic-headers) |247| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para actualizar encabezados dinámicos de OpenTelemetry en milisegundos (predeterminado: 1740000 / 29 minutos). Consulte [Encabezados dinámicos](/es/monitoring-usage#dynamic-headers) |


275| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Establezca en `1` para omitir escribir historial de indicadores y transcripciones de sesiones en disco. Las sesiones iniciadas con esta variable establecida no aparecen en `--resume`, `--continue` o historial de flecha hacia arriba. Útil para sesiones con scripts efímeros |279| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Establezca en `1` para omitir escribir historial de indicadores y transcripciones de sesiones en disco. Las sesiones iniciadas con esta variable establecida no aparecen en `--resume`, `--continue` o historial de flecha hacia arriba. Útil para sesiones con scripts efímeros |

276| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Omita la autenticación de Google para Vertex (por ejemplo, cuando se utiliza una puerta de enlace LLM) |280| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Omita la autenticación de Google para Vertex (por ejemplo, cuando se utiliza una puerta de enlace LLM) |

277| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Número máximo de veces consecutivas que un hook [Stop](/es/hooks#stop) o [SubagentStop](/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 deshabilitar el límite. Aumente esto si su hook legítimamente necesita más iteraciones para resolver |281| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Número máximo de veces consecutivas que un hook [Stop](/es/hooks#stop) o [SubagentStop](/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 deshabilitar el límite. Aumente esto si su hook legítimamente necesita más iteraciones para resolver |

278| `CLAUDE_CODE_SUBAGENT_MODEL` | Consulte [Configuración de modelo](/es/model-config) |282| `CLAUDE_CODE_SUBAGENT_MODEL` | Consulte [Configuración de modelo](/es/model-config). {/* min-version: 2.1.196 */}A partir de v2.1.196, establecerlo en `inherit` es lo mismo que dejarlo sin establecer; las versiones anteriores trataban `inherit` como una anulación que forzaba cada subagente al modelo de la conversación principal |

279| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Establezca en `1` para eliminar credenciales de Anthropic y proveedores de nube de entornos de subprocesos (herramienta Bash, hooks, servidores MCP stdio). El proceso Claude principal mantiene estas credenciales para llamadas de API, pero los procesos secundarios no pueden leerlas, reduciendo la exposición a ataques de inyección de indicadores 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 de host a través de `/proc`; como efecto secundario, `ps`, `pgrep` y `kill` no pueden ver ni señalar procesos de host. `claude-code-action` establece esto automáticamente cuando se configura `allowed_non_write_users` |283| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Establezca en `1` para eliminar credenciales de Anthropic y proveedores de nube de entornos de subprocesos (herramienta Bash, hooks, servidores MCP stdio). El proceso Claude principal mantiene estas credenciales para llamadas de API, pero los procesos secundarios no pueden leerlas, reduciendo la exposición a ataques de inyección de indicadores 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 de host a través de `/proc`; como efecto secundario, `ps`, `pgrep` y `kill` no pueden ver ni señalar procesos de host. `claude-code-action` establece esto automáticamente cuando se configura `allowed_non_write_users` |

280| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Establezca en `1` en modo no interactivo (la bandera `-p`) para esperar a que se complete la instalación de plugins antes de la primera consulta. Sin esto, los plugins se instalan en segundo plano y pueden no estar disponibles en el primer turno. Combine con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar la espera |284| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Establezca en `1` en modo no interactivo (la bandera `-p`) para esperar a que se complete la instalación de plugins antes de la primera consulta. Sin esto, los plugins se instalan en segundo plano y pueden no estar disponibles en el primer turno. Combine con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar la espera |

281| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la instalación sincrónica de plugins. Cuando se excede, Claude Code continúa sin plugins y registra un error. Sin predeterminado: sin esta variable, la instalación sincrónica espera hasta completarse |285| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la instalación sincrónica de plugins. Cuando se excede, Claude Code continúa sin plugins y registra un error. Sin predeterminado: sin esta variable, la instalación sincrónica espera hasta completarse |


295| `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 se está implementando progresivamente: establezca en `1` para optar por participar o `0` para optar por no participar. En Linux, macOS y WSL, establezca en `1` para habilitarla, lo que requiere `pwsh` en su `PATH`. Cuando se habilita en Windows, Claude puede ejecutar comandos de PowerShell de forma nativa en lugar de enrutarlos a través de Git Bash. Consulte [Herramienta PowerShell](/es/tools-reference#powershell-tool) |299| `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 se está implementando progresivamente: establezca en `1` para optar por participar o `0` para optar por no participar. En Linux, macOS y WSL, establezca en `1` para habilitarla, lo que requiere `pwsh` en su `PATH`. Cuando se habilita en Windows, Claude puede ejecutar comandos de PowerShell de forma nativa en lugar de enrutarlos a través de Git Bash. Consulte [Herramienta PowerShell](/es/tools-reference#powershell-tool) |

296| `CLAUDE_CODE_USE_VERTEX` | Use [Vertex](/es/google-vertex-ai) |300| `CLAUDE_CODE_USE_VERTEX` | Use [Vertex](/es/google-vertex-ai) |

297| `CLAUDE_CONFIG_DIR` | Anule el directorio de configuración (predeterminado: `~/.claude`). Todos los ajustes, credenciales, historial de sesiones y plugins se almacenan bajo esta ruta. Útil para ejecutar múltiples cuentas lado a lado: por ejemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |301| `CLAUDE_CONFIG_DIR` | Anule el directorio de configuración (predeterminado: `~/.claude`). Todos los ajustes, credenciales, historial de sesiones y plugins se almacenan bajo esta ruta. Útil para ejecutar múltiples cuentas lado a lado: por ejemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

302| `CLAUDE_DISABLE_ADOPT` | {/* min-version: 2.1.195 */}Establezca en `1` para detener el trabajo en segundo plano en vuelo en lugar de llevarlo cuando pone una sesión en segundo plano presionando `←` o con [`/background`](/es/agent-view#from-inside-a-session). Claude Code le pide que confirme antes de poner en segundo plano, luego detiene las tareas que de otra manera se llevarían. Requiere Claude Code v2.1.195 o posterior |

298| `CLAUDE_EFFORT` | Se establece automáticamente en subprocesos de herramientas Bash y comandos hook en el [nivel de esfuerzo](/es/model-config#adjust-effort-level) activo para el turno: `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](/es/hooks). Solo se establece cuando el modelo actual admite el parámetro de esfuerzo |303| `CLAUDE_EFFORT` | Se establece automáticamente en subprocesos de herramientas Bash y comandos hook en el [nivel de esfuerzo](/es/model-config#adjust-effort-level) activo para el turno: `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](/es/hooks). Solo se establece cuando el modelo actual admite el parámetro de esfuerzo |

299| `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. Cuando no se establece, el perro guardián se habilita de forma predeterminada para conexiones de API de Anthropic directas y [Claude Platform on AWS](/es/claude-platform-on-aws). El perro guardián de byte aborta una conexión cuando no llegan bytes en el cable durante 180 segundos de forma predeterminada en conexiones de API de Anthropic directas, 300 segundos en Claude Platform on AWS y cuando se habilita en Bedrock, o para el valor de `CLAUDE_STREAM_IDLE_TIMEOUT_MS` cuando se establece, que se fija a un mínimo de 5 minutos, independientemente del perro guardián a nivel de evento |304| `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. Cuando no se establece, el perro guardián se habilita de forma predeterminada para conexiones de API de Anthropic directas y [Claude Platform on AWS](/es/claude-platform-on-aws). El perro guardián de byte aborta una conexión cuando no llegan bytes en el cable durante 180 segundos de forma predeterminada en conexiones de API de Anthropic directas, 300 segundos en Claude Platform on AWS y cuando se habilita en Bedrock, o para el valor de `CLAUDE_STREAM_IDLE_TIMEOUT_MS` cuando se establece, que se fija a un mínimo de 5 minutos, independientemente del perro guardián a nivel de evento |

300| `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 `vnd.amazon.eventstream` de Amazon Bedrock. Desactivado de forma predeterminada. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |305| `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 `vnd.amazon.eventstream` de Amazon Bedrock. Desactivado de forma predeterminada. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

301| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Establezca en `1` para forzar la habilitación del perro guardián de inactividad de transmisión a nivel de evento, o establezca en `0` para forzar su deshabilitación. Cuando no se establece, el predeterminado es controlado por servidor en la API de Anthropic directa y desactivado en otros proveedores. {/* min-version: 2.1.169 */}A partir de v2.1.169, los proveedores distintos de la API de Anthropic directa y Claude Platform on AWS también tienen un tiempo de espera de inactividad de cuerpo de 5 minutos predeterminado independiente de esta variable; consulte `API_FORCE_IDLE_TIMEOUT`. En Bedrock, también puede habilitar el perro guardián independiente a nivel de byte con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`; los dos se ejecutan juntos cuando ambos se establecen. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |306| `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. {/* min-version: 2.1.196 */}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. {/* min-version: 2.1.169 */}A partir de v2.1.169, los proveedores distintos de la API de Anthropic directa y Claude Platform on AWS también tienen un tiempo de espera de inactividad de cuerpo de 5 minutos predeterminado independiente de esta variable; consulte `API_FORCE_IDLE_TIMEOUT`. En Bedrock, también puede habilitar el perro guardián independiente a nivel de byte con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`; los dos se ejecutan juntos cuando ambos se establecen. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

302| `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. Utilice para persistir la activación de virtualenv o conda entre comandos. También se completa dinámicamente por hooks [SessionStart](/es/hooks#persist-environment-variables), [Setup](/es/hooks#setup), [CwdChanged](/es/hooks#cwdchanged) y [FileChanged](/es/hooks#filechanged) |307| `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. Utilice para persistir la activación de virtualenv o conda entre comandos. También se completa dinámicamente por hooks [SessionStart](/es/hooks#persist-environment-variables), [Setup](/es/hooks#setup), [CwdChanged](/es/hooks#cwdchanged) y [FileChanged](/es/hooks#filechanged) |

303| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefijo para nombres de sesión de [Control Remoto](/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 |308| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefijo para nombres de sesión de [Control Remoto](/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 |

304| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos antes de que el perro guardián de inactividad de transmisión cierre 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. Cuando no se establece, el perro guardián a nivel de evento predeterminado es 300 segundos y el perro guardián a nivel de byte predeterminado es 180 segundos en conexiones de API de Anthropic directas (300 segundos en Claude Platform on AWS y otros proveedores). El predeterminado de 180 segundos del perro guardián de byte sin establecer es un valor separado y no está sujeto a la fijación de 5 minutos. Para el perro guardián a nivel de evento en proveedores de terceros, requiere `CLAUDE_ENABLE_STREAM_WATCHDOG=1`; el tiempo de espera de inactividad de cuerpo descrito bajo `API_FORCE_IDLE_TIMEOUT` se aplica independientemente. En Bedrock, también se aplica cuando `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` |309| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos antes de que el perro guardián de inactividad de transmisión cierre 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. Cuando no se establece, el perro guardián a nivel de evento predeterminado es 300 segundos y el perro guardián a nivel de byte predeterminado es 180 segundos en conexiones de API de Anthropic directas (300 segundos en Claude Platform on AWS y otros proveedores). El predeterminado de 180 segundos del perro guardián de byte sin establecer es un valor separado y no está sujeto a la fijación de 5 minutos. El tiempo de espera de inactividad de cuerpo descrito bajo `API_FORCE_IDLE_TIMEOUT` se aplica independientemente. En Bedrock, también se aplica cuando `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` |

305| `DEBUG` | Establezca en `1` para habilitar el modo de depuración, equivalente a lanzar con [`--debug`](/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 |310| `DEBUG` | Establezca en `1` para habilitar el modo de depuración, equivalente a lanzar con [`--debug`](/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 |

306| `DISABLE_AUTOUPDATER` | Establezca en `1` para deshabilitar actualizaciones automáticas en segundo plano. El comando manual `claude update` sigue funcionando. Use `DISABLE_UPDATES` para bloquear ambos |311| `DISABLE_AUTOUPDATER` | Establezca en `1` para deshabilitar actualizaciones automáticas en segundo plano. El comando manual `claude update` sigue funcionando. Use `DISABLE_UPDATES` para bloquear ambos |

307| `DISABLE_AUTO_COMPACT` | Establezca en `1` para deshabilitar la compactación automática cuando se aproxime al límite de contexto. El comando manual `/compact` sigue estando disponible. Utilice cuando desee control explícito sobre cuándo ocurre la compactación |312| `DISABLE_AUTO_COMPACT` | Establezca en `1` para deshabilitar la compactación automática cuando se aproxime al límite de contexto. El comando manual `/compact` sigue estando disponible. Utilice cuando desee control explícito sobre cuándo ocurre la compactación |


348| `MCP_TIMEOUT` | Tiempo de espera en milisegundos para el inicio del servidor MCP (predeterminado: 30000, o 30 segundos) |353| `MCP_TIMEOUT` | Tiempo de espera en milisegundos para el inicio del servidor MCP (predeterminado: 30000, o 30 segundos) |

349| `MCP_TOOL_TIMEOUT` | Tiempo de espera en milisegundos para la ejecución de herramientas MCP (predeterminado: 100000000, aproximadamente 28 horas). Un campo `timeout` por servidor en `.mcp.json` anula esto para ese servidor. Para la variable env, los valores por debajo de 1000 se redondean a un segundo; para el campo por servidor, los valores por debajo de 1000 se ignoran |354| `MCP_TOOL_TIMEOUT` | Tiempo de espera en milisegundos para la ejecución de herramientas MCP (predeterminado: 100000000, aproximadamente 28 horas). Un campo `timeout` por servidor en `.mcp.json` anula esto para ese servidor. Para la variable env, los valores por debajo de 1000 se redondean a un segundo; para el campo por servidor, los valores por debajo de 1000 se ignoran |

350| `NO_PROXY` | Lista de dominios e IPs a los que se emitirán solicitudes directamente, omitiendo el proxy |355| `NO_PROXY` | Lista de dominios e IPs a los que se emitirán solicitudes directamente, omitiendo el proxy |

356| `OTEL_LOG_ASSISTANT_RESPONSES` | {/* min-version: 2.1.193 */}Establezca en `1` para incluir el texto de respuesta del modelo en eventos de registro de OpenTelemetry `assistant_response`. Cuando no se establece, se utiliza el valor de `OTEL_LOG_USER_PROMPTS` en su lugar. Establezca en `0` para mantener las respuestas redactadas incluso cuando se establece `OTEL_LOG_USER_PROMPTS`. Requiere Claude Code v2.1.193 o posterior. Consulte [Monitoreo](/es/monitoring-usage#assistant-response-event) |

351| `OTEL_LOG_RAW_API_BODIES` | Emita el JSON completo de solicitud y respuesta 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 60 KB, o `file:<dir>` para escribir cuerpos sin truncar en disco y emitir una ruta `body_ref` en su lugar. Deshabilitado de forma predeterminada; los cuerpos incluyen todo el historial de conversación. Consulte [Monitoreo](/es/monitoring-usage#api-request-body-event) |357| `OTEL_LOG_RAW_API_BODIES` | Emita el JSON completo de solicitud y respuesta 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 60 KB, o `file:<dir>` para escribir cuerpos sin truncar en disco y emitir una ruta `body_ref` en su lugar. Deshabilitado de forma predeterminada; los cuerpos incluyen todo el historial de conversación. Consulte [Monitoreo](/es/monitoring-usage#api-request-body-event) |

352| `OTEL_LOG_TOOL_CONTENT` | Establezca en `1` para incluir contenido de entrada y salida de herramientas en eventos de span de OpenTelemetry. Deshabilitado de forma predeterminada para proteger datos sensibles. Consulte [Monitoreo](/es/monitoring-usage) |358| `OTEL_LOG_TOOL_CONTENT` | Establezca en `1` para incluir contenido de entrada y salida de herramientas en eventos de span de OpenTelemetry. Deshabilitado de forma predeterminada para proteger datos sensibles. Consulte [Monitoreo](/es/monitoring-usage) |

353| `OTEL_LOG_TOOL_DETAILS` | Establezca en `1` para incluir argumentos de entrada de herramientas, nombres de servidores MCP, cadenas de error sin procesar en fallos de herramientas, la categoría de rechazo en eventos `api_refusal` y otros detalles de herramientas en trazas y registros de OpenTelemetry. Deshabilitado de forma predeterminada para proteger PII. Consulte [Monitoreo](/es/monitoring-usage) |359| `OTEL_LOG_TOOL_DETAILS` | Establezca en `1` para incluir argumentos de entrada de herramientas, nombres de servidores MCP, cadenas de error sin procesar en fallos de herramientas, la categoría de rechazo en eventos `api_refusal` y otros detalles de herramientas en trazas y registros de OpenTelemetry. Deshabilitado de forma predeterminada para proteger PII. Consulte [Monitoreo](/es/monitoring-usage) |

errors.md +24 −6

Details

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 significa cada uno 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 incorrectas sin un error. Para errores de instalación como `command not found` o fallos de TLS durante la configuración, consulte [Troubleshooting installation and login](/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 incorrectas 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](/es/troubleshoot-install).

10 10 

11Estos errores y comandos de recuperación se aplican en la CLI, la [aplicación de escritorio](/es/desktop) y [Claude Code en la web](/es/claude-code-on-the-web), ya que los tres envuelven la misma CLI de Claude Code. Para problemas específicos de la superficie, consulte la sección de solución de problemas en la página de esa superficie.11Estos errores y comandos de recuperación se aplican en la CLI, la [aplicación de escritorio](/es/desktop) y [Claude Code en la web](/es/claude-code-on-the-web), ya que los tres envuelven la misma CLI de Claude Code. Para problemas específicos de la superficie, consulte la sección de solución de problemas en la página de esa superficie.

12 12 


40| `Your organization has disabled API key authentication` | [Autenticación](#your-organization-has-disabled-api-key-authentication) |40| `Your organization has disabled API key authentication` | [Autenticación](#your-organization-has-disabled-api-key-authentication) |

41| `Your organization has disabled Claude subscription access` | [Autenticación](#your-organization-has-disabled-claude-subscription-access) |41| `Your organization has disabled Claude subscription access` | [Autenticación](#your-organization-has-disabled-claude-subscription-access) |

42| `Routines are disabled by your organization's policy` | [Autenticación](#routines-are-disabled-by-your-organization%E2%80%99s-policy) |42| `Routines are disabled by your organization's policy` | [Autenticación](#routines-are-disabled-by-your-organization%E2%80%99s-policy) |

43| `Remote Control is only available when using Claude via api.anthropic.com` | [Autenticación](#remote-control-requires-the-anthropic-api) |

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

44| `does not meet scope requirement user:profile` | [Autenticación](#oauth-scope-requirement) |45| `does not meet scope requirement user:profile` | [Autenticación](#oauth-scope-requirement) |

45| `Unable to connect to API` | [Red](#unable-to-connect-to-api) |46| `Unable to connect to API` | [Red](#unable-to-connect-to-api) |


60| `max_tokens must be greater than thinking.budget_tokens` | [Errores de solicitud](#thinking-budget-exceeds-output-limit) |61| `max_tokens must be greater than thinking.budget_tokens` | [Errores de solicitud](#thinking-budget-exceeds-output-limit) |

61| `API Error: 400 due to tool use concurrency issues` | [Errores de solicitud](#tool-use-or-thinking-block-mismatch) |62| `API Error: 400 due to tool use concurrency issues` | [Errores de solicitud](#tool-use-or-thinking-block-mismatch) |

62| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Errores de solicitud](#usage-policy-refusal) |63| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Errores de solicitud](#usage-policy-refusal) |

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

64 65 

65<h2 id="automatic-retries">66<h2 id="automatic-retries">

66 Reintentos automáticos67 Reintentos automáticos


438* Pida a un propietario en su organización que habilite el botón **Routines** en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)439* Pida a un propietario en su organización que habilite el botón **Routines** en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

439* Para trabajo programado único que no requiere rutinas a nivel de organización, consulte [tareas programadas](/es/scheduled-tasks)440* Para trabajo programado único que no requiere rutinas a nivel de organización, consulte [tareas programadas](/es/scheduled-tasks)

440 441 

442<h3 id="remote-control-requires-the-anthropic-api">

443 Remote Control requires the Anthropic API

444</h3>

445 

446La sesión no está hablando directamente con la API de Anthropic, por lo que no hay un backend de claude.ai para que [Remote Control](/es/remote-control) se empareje.

447 

448```text theme={null}

449Remote Control is only available when using Claude via api.anthropic.com.

450```

451 

452Esto aparece en Amazon Bedrock, Google Vertex AI y Microsoft Foundry. {/* min-version: 2.1.196 */}A partir de v2.1.196, también aparece cuando [`ANTHROPIC_BASE_URL`](/es/env-vars) apunta a un host diferente de `api.anthropic.com`, como una [puerta de enlace LLM](/es/llm-gateway) o proxy, incluso cuando inicia sesión con claude.ai.

453 

454**Qué hacer:**

455 

456* Desactive `ANTHROPIC_BASE_URL` y reinicie la sesión, o inicie Remote Control desde una sesión que hable directamente con la API de Anthropic

457* Para este y los otros mensajes de inicio de Remote Control, consulte [Solucionar problemas de Remote Control](/es/remote-control#troubleshooting)

458 

441<h3 id="oauth-token-revoked-or-expired">459<h3 id="oauth-token-revoked-or-expired">

442 OAuth token revoked or expired460 OAuth token revoked or expired

443</h3>461</h3>


739 thinking.type.enabled is not supported for this model757 thinking.type.enabled is not supported for this model

740</h3>758</h3>

741 759 

742Su versión de Claude Code es anterior a la mínima para Opus 4.7 u Opus 4.8. La CLI envió una configuración de pensamiento que el modelo ya no acepta.760Su versión de Claude Code es anterior a la mínima para Sonnet 5, Opus 4.8 u Opus 4.7. La CLI envió una configuración de pensamiento que el modelo ya no acepta.

743 761 

744```text theme={null}762```text theme={null}

745API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.763API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.


747 765 

748**Qué hacer:**766**Qué hacer:**

749 767 

750* Ejecute `claude update` y reinicie Claude Code. Opus 4.7 necesita v2.1.111 o posterior. Opus 4.8 necesita v2.1.154 o posterior768* Ejecute `claude update` y reinicie Claude Code. Opus 4.7 necesita v2.1.111 o posterior. Opus 4.8 necesita v2.1.154 o posterior. Sonnet 5 necesita v2.1.197 o posterior

751* Si no puede actualizar, ejecute `/model` y seleccione Opus 4.6 o Sonnet en su lugar769* Si no puede actualizar, ejecute `/model` y seleccione Opus 4.6 o Sonnet 4.6 en su lugar

752* Si lo encuentra en el Agent SDK, consulte [SDK troubleshooting](/es/agent-sdk/quickstart#troubleshooting)770* {/* min-version: agent-sdk@0.3.197 */}Si lo encuentra en el [Agent SDK](/es/agent-sdk/overview), actualice el paquete SDK en su lugar. Opus 4.8 necesita TypeScript SDK v0.3.154 o posterior y Python SDK v0.2.88 o posterior. Sonnet 5 necesita TypeScript SDK v0.3.197 o posterior

753 771 

754<h3 id="thinking-budget-exceeds-output-limit">772<h3 id="thinking-budget-exceeds-output-limit">

755 Thinking budget exceeds output limit773 Thinking budget exceeds output limit

fullscreen.md +10 −2

Details

107 107 

108Un valor de `3` coincide con el predeterminado en `vim` y aplicaciones similares. La configuración acepta valores de 1 a 20, y valores fraccionarios por debajo de 1 como `0.5` para ralentizar el desplazamiento acelerado del trackpad y la rueda en terminales que ya amplifican eventos de rueda.108Un valor de `3` coincide con el predeterminado en `vim` y aplicaciones similares. La configuración acepta valores de 1 a 20, y valores fraccionarios por debajo de 1 como `0.5` para ralentizar el desplazamiento acelerado del trackpad y la rueda en terminales que ya amplifican eventos de rueda.

109 109 

110Para ajustar la velocidad de desplazamiento de forma interactiva, ejecute `/scroll-speed`. El diálogo muestra una regla que puede desplazar mientras está abierto para que pueda sentir el cambio inmediatamente. Presione `←` y `→` para ajustar, `r` para restablecer al valor predeterminado detectado automáticamente, e `Intro` para guardar. El comando escribe el mismo valor que establece la variable de entorno `CLAUDE_CODE_SCROLL_SPEED`, persistido en `~/.claude/settings.json`. El comando no está disponible en la terminal del IDE de JetBrains.110Para ajustar la velocidad de desplazamiento de forma interactiva, ejecute `/scroll-speed`. El diálogo muestra una regla que puede desplazar mientras está abierto para que pueda sentir el cambio inmediatamente. Presione `←` y `→` para ajustar, `r` para restablecer al valor predeterminado detectado automáticamente, e `Intro` para guardar.

111 

112El comando escribe el mismo valor que establece la variable de entorno `CLAUDE_CODE_SCROLL_SPEED`, persistido en `~/.claude/settings.json`. El comando no está disponible en la terminal del IDE de JetBrains.

111 113 

112Independientemente de la velocidad base, Claude Code acelera la velocidad de desplazamiento cuando gira la rueda rápidamente, por lo que un giro rápido cubre más distancia que el mismo número de muescas lentas. Para desactivar la aceleración y mantener una velocidad constante por muesca, establezca `wheelScrollAccelerationEnabled` en `false` en [`settings.json`](/es/settings#available-settings). Esta configuración requiere Claude Code v2.1.174 o posterior.114Independientemente de la velocidad base, Claude Code acelera la velocidad de desplazamiento cuando gira la rueda rápidamente, por lo que un giro rápido cubre más distancia que el mismo número de muescas lentas. Para desactivar la aceleración y mantener una velocidad constante por muesca, establezca `wheelScrollAccelerationEnabled` en `false` en [`settings.json`](/es/settings#available-settings). Esta configuración requiere Claude Code v2.1.174 o posterior.

113 115 


123 Buscar y revisar la conversación125 Buscar y revisar la conversación

124</h2>126</h2>

125 127 

126`Ctrl+o` alterna entre el indicador normal y el modo de transcripción. Para una vista más tranquila que muestre solo su último indicador, un resumen de una línea de llamadas de herramientas con estadísticas de diferencias de edición y la respuesta final, ejecute `/focus`. La configuración persiste entre sesiones. Ejecute `/focus` nuevamente para desactivarla.128`Ctrl+o` alterna entre el indicador normal y el modo de transcripción.

129 

130Para una vista más tranquila que muestre solo su último indicador, un resumen de una línea de llamadas de herramientas con estadísticas de diferencias de edición y la respuesta final, ejecute `/focus`. La configuración persiste entre sesiones. Ejecute `/focus` nuevamente para desactivarla.

127 131 

128El modo de transcripción gana navegación y búsqueda de estilo `less`:132El modo de transcripción gana navegación y búsqueda de estilo `less`:

129 133 


203 207 

204Con la captura de ratón desactivada, el desplazamiento de teclado con `PgUp`, `PgDn`, `Ctrl+Home` y `Ctrl+End` aún funciona, y su terminal maneja la selección de forma nativa. Pierde clic para posicionar el cursor, clic para expandir la salida de herramientas, clic en URL y desplazamiento de rueda dentro de Claude Code.208Con la captura de ratón desactivada, el desplazamiento de teclado con `PgUp`, `PgDn`, `Ctrl+Home` y `Ctrl+End` aún funciona, y su terminal maneja la selección de forma nativa. Pierde clic para posicionar el cursor, clic para expandir la salida de herramientas, clic en URL y desplazamiento de rueda dentro de Claude Code.

205 209 

210Para mantener el desplazamiento de rueda pero desactivar el manejo de clic, arrastre y desplazamiento, establezca `CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1` en su lugar. Requiere Claude Code v2.1.195 o posterior. `CLAUDE_CODE_DISABLE_MOUSE` tiene prioridad cuando ambas variables están establecidas.

211 

212Con los clics desactivados, Claude Code aún captura el ratón, por lo que la rueda y el panel táctil desplazan la conversación pero los clics izquierdos no hacen nada dentro de Claude Code. Aún necesita mantener presionada la tecla de su terminal para la selección nativa de clic y arrastre. El clic derecho y el pegado con botón central continúan funcionando en terminales que los admiten.

213 

206<h2 id="research-preview">214<h2 id="research-preview">

207 Vista previa de investigación215 Vista previa de investigación

208</h2>216</h2>

gateways.md +87 −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# Ejecutar Claude Code a través de una puerta de enlace

6 

7> Enrute Claude Code a través de una puerta de enlace autohospedada para credenciales centralizadas, seguimiento de uso y controles de costos. Cubre la arquitectura, la puerta de enlace de aplicaciones Claude de Anthropic y el uso de otros productos de puerta de enlace.

8 

9Una puerta de enlace es un proxy que su organización ejecuta entre Claude Code y un proveedor de modelos. Claude Code envía tráfico de API a la puerta de enlace en lugar de directamente al proveedor, y la puerta de enlace lo reenvía usando una credencial que su organización posee. Los desarrolladores se autentican en la puerta de enlace en lugar de poseer credenciales del proveedor, por lo que la autenticación, el seguimiento de uso, los presupuestos y el registro de auditoría ocurren en un único lugar que usted controla.

10 

11Claude Code incluye una puerta de enlace autohospedada, [Claude apps gateway](/es/claude-apps-gateway), en el binario `claude`, por lo que no tiene que adoptar un producto de puerta de enlace separado para ejecutar uno. Si su organización ya ejecuta una [puerta de enlace LLM](/es/llm-gateway), Claude Code también funciona con esa.

12 

13Esta página cubre:

14 

15* [Cómo una puerta de enlace se sitúa entre Claude Code y su proveedor](#how-a-gateway-works)

16* [Elegir entre la puerta de enlace de aplicaciones Claude y una puerta de enlace que ya ejecuta](#choose-a-gateway)

17* [Cómo las puertas de enlace interactúan con las suscripciones de claude.ai](#subscriptions-and-gateways)

18* [Qué se configura por separado de la puerta de enlace](#configure-separately-from-the-gateway)

19 

20<h2 id="how-a-gateway-works">

21 Cómo funciona una puerta de enlace

22</h2>

23 

24Cada Claude Code del desarrollador se apunta a la dirección de la puerta de enlace y se autentica con una credencial emitida por la puerta de enlace.

25 

26La puerta de enlace autentica al desarrollador, aplica las reglas de acceso y presupuesto que configure, y reenvía la solicitud a su proveedor con la credencial de la organización. El proveedor puede ser la API de Anthropic o un [proveedor de nube](/es/third-party-integrations) como Amazon Bedrock, Agent Platform de Google Cloud o Microsoft Foundry; la configuración de la puerta de enlace lo decide. Con la puerta de enlace de aplicaciones Claude, u otra puerta de enlace que exponga un único punto de conexión en formato Anthropic, cambiar de proveedor no requiere tocar máquinas de desarrolladores.

27 

28<Frame>

29 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/llm-gateway-flow.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=1c1a8dcc0cfcc3a58652cc8e28cd3e20" alt="Diagrama que muestra Claude Code enrutado a través de una puerta de enlace. En una zona de máquinas de desarrolladores, la CLI de Claude Code y la extensión de VS Code envían solicitudes a la dirección de la puerta de enlace con una credencial por desarrollador. En una zona etiquetada como su infraestructura, la puerta de enlace maneja la autenticación, el seguimiento de uso, los presupuestos y el enrutamiento, y reenvía solicitudes con la credencial de su organización. En una zona de proveedores de modelos, una flecha sólida conduce al proveedor que configura, mostrado como la API de Anthropic, y flechas punteadas conducen a otras opciones de proveedor, ilustradas con Amazon Bedrock, Google Cloud y Microsoft Foundry como ejemplos." width="780" height="322" data-path="images/llm-gateway-flow.svg" />

30</Frame>

31 

32Hay dos tipos de credencial involucrados:

33 

34* **Credencial del desarrollador**: cada desarrollador posee la suya propia, emitida por la puerta de enlace. Los autentica en la puerta de enlace e los identifica en el seguimiento de uso

35* **Credencial del proveedor**: la puerta de enlace posee una credencial para su cuenta de proveedor, compartida por todo el tráfico reenviado

36 

37<h2 id="choose-a-gateway">

38 Elegir una puerta de enlace

39</h2>

40 

41Claude Code funciona con la puerta de enlace propia de Anthropic o con una puerta de enlace que su organización ya ejecuta.

42 

43<h3 id="claude-apps-gateway">

44 Puerta de enlace de aplicaciones Claude

45</h3>

46 

47La puerta de enlace de aplicaciones Claude es la puerta de enlace autohospedada propia de Anthropic, incluida en el binario `claude`. Enruta a Amazon Bedrock, Google Cloud, Microsoft Foundry o la API de Anthropic como el proveedor ascendente. Los desarrolladores inician sesión con su proveedor de identidad corporativa a través de `/login`, la puerta de enlace aplica el acceso a modelos y [configuración administrada](/es/permissions#managed-settings) por grupo de IdP, y emite métricas de uso del [Protocolo OpenTelemetry (OTLP)](/es/monitoring-usage) a su propia pila de observabilidad.

48 

49Debido a que se construye y prueba junto con cada versión de Claude Code, reenvía los encabezados y campos de solicitud que Claude Code envía. Una puerta de enlace mantenida por separado necesita que sus [reglas de reenvío se actualicen](/es/llm-gateway-protocol#forward-as-open-lists) a medida que esos encabezados y campos cambian con cada versión; la puerta de enlace de aplicaciones Claude se lanza con la CLI, por lo que no hay lista que mantener actualizada. Consulte [Disponibilidad y limitaciones](/es/claude-apps-gateway#availability-and-limitations) para el pequeño conjunto de características que se comportan de manera diferente en una sesión de puerta de enlace.

50 

51El inicio de sesión de la puerta de enlace es un paso de SSO del navegador, y no hay flujo de token de servicio, por lo que una canalización de CI sin un desarrollador para aprobar el inicio de sesión no puede autenticarse a través de ella; configure esos contra su proveedor directamente. Las sesiones del SDK de Agent y las ejecuciones de `claude -p` en una máquina donde un desarrollador ha iniciado sesión usan la sesión de puerta de enlace de esa máquina y se rigen por sus políticas. Consulte [Canalizaciones de CI y máquinas remotas](/es/claude-apps-gateway#ci-pipelines-and-remote-machines).

52 

53Consulte [Puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) para implementarla.

54 

55<h3 id="other-gateways">

56 Otras puertas de enlace

57</h3>

58 

59Si su organización ya ejecuta una puerta de enlace LLM o puerta de enlace de API, puede usarla en su lugar. Anthropic no respalda, mantiene ni audita otros productos de puerta de enlace, y no admite enrutar Claude Code a modelos que no sean de Claude a través de ninguna puerta de enlace. Consulte [Otras puertas de enlace LLM](/es/llm-gateway) para la lista de verificación de implementación del administrador, lo que una puerta de enlace debe implementar y cómo apuntar Claude Code a ella.

60 

61<h2 id="subscriptions-and-gateways">

62 Suscripciones y puertas de enlace

63</h2>

64 

65Cuando los desarrolladores se conectan a través de una puerta de enlace con una credencial de puerta de enlace, el uso se factura a la cuenta de proveedor de su organización a tasas de API, y sus suscripciones de claude.ai no se usan ni se cobran. Configurar [`ANTHROPIC_AUTH_TOKEN`](/es/env-vars) para una puerta de enlace que ejecuta, o iniciar sesión en una puerta de enlace de aplicaciones Claude con `/login`, desactiva el inicio de sesión de suscripción para esa sesión. Cada solicitud reenviada bajo esa credencial se cobra a la cuenta detrás de la credencial del proveedor de la puerta de enlace.

66 

67La excepción es configurar solo `ANTHROPIC_BASE_URL`, sin credencial de puerta de enlace. Las solicitudes aún se enrutan a través de la puerta de enlace, pero un inicio de sesión de claude.ai guardado permanece como la credencial activa, por lo que los límites de uso y la facturación de la suscripción se aplican. [Otras puertas de enlace LLM](/es/llm-gateway#subscriptions-and-gateways) cubre esa configuración y lo que la puerta de enlace tiene que reenviar para que funcione.

68 

69<h2 id="configure-separately-from-the-gateway">

70 Configurar por separado de la puerta de enlace

71</h2>

72 

73Una puerta de enlace enruta solicitudes de API de modelos. Algunas cosas que podría esperar que maneje se configuran en otro lugar:

74 

75* **Qué modelo responde**: seleccione el modelo con el comando `/model` o [variables de entorno de modelo](/es/model-config#setting-your-model). La puerta de enlace decide dónde van las solicitudes, no qué modelo selecciona el desarrollador. La puerta de enlace de aplicaciones Claude puede limitar la opción con una lista de permitidos `availableModels` por grupo, pero el desarrollador aún elige dentro de ella.

76* **Otro tráfico de red**: Claude Code en sí envía comprobaciones de versión y descargas directamente a Anthropic, separado de la ruta de la puerta de enlace. Si la secuencia de telemetría del cliente opcional también está activada depende de su proveedor; la [tabla de valores predeterminados de telemetría](/es/data-usage#telemetry-services) cubre cada caso. En una sesión de puerta de enlace de aplicaciones Claude con sesión iniciada, la credencial de la puerta de enlace desactiva el análisis vinculado a Anthropic y, cuando se configura el [reenvío de telemetría](/es/claude-apps-gateway-config#telemetry), fija la exportación de OTLP a la puerta de enlace. Su red aún necesita salida a los [dominios requeridos](/es/network-config), o configure [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/es/env-vars) para desactivar las secuencias opcionales.

77* **Proxies HTTP corporativos**: un `HTTPS_PROXY` se sitúa entre Claude Code y cada servidor con el que habla, incluida la puerta de enlace. Si su red requiere uno, [configure el proxy](/es/network-config) además de la puerta de enlace. Para la puerta de enlace de aplicaciones Claude específicamente, [el inicio de sesión verifica que el host del proxy también esté en una red privada](/es/claude-apps-gateway#prerequisites); si no es así, agregue el host de la puerta de enlace a `NO_PROXY` para que la CLI se conecte a él directamente.

78 

79<h2 id="next-steps">

80 Próximos pasos

81</h2>

82 

83La siguiente página depende de quién ejecute la puerta de enlace. La puerta de enlace de Anthropic se ejecuta desde el binario `claude` y tiene su propia guía de configuración; una puerta de enlace que su organización ya ejecuta tiene un protocolo que implementar y una lista de verificación de implementación del administrador.

84 

85* [Puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) para implementar la puerta de enlace autohospedada propia de Anthropic con inicio de sesión SSO y telemetría OTLP

86* [Otras puertas de enlace LLM](/es/llm-gateway) para lo que una puerta de enlace que su organización ya ejecuta debe implementar, y cómo apuntar Claude Code a ella

87* [Configurar Claude Code para su organización](/es/admin-setup) para las decisiones de implementación más amplias de las que una puerta de enlace es una parte

Details

127 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}127 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

128 custom_instructions: "Follow our coding standards"128 custom_instructions: "Follow our coding standards"

129 max_turns: "10"129 max_turns: "10"

130 model: "claude-sonnet-4-6"130 model: "claude-sonnet-5"

131```131```

132 132 

133**Versión GA (v1.0):**133**Versión GA (v1.0):**


140 claude_args: |140 claude_args: |

141 --append-system-prompt "Follow our coding standards"141 --append-system-prompt "Follow our coding standards"

142 --max-turns 10142 --max-turns 10

143 --model claude-sonnet-4-6143 --model claude-sonnet-5

144```144```

145 145 

146<Tip>146<Tip>


228 228 

229En comentarios de problema o PR:229En comentarios de problema o PR:

230 230 

231```text theme={null}231```text wrap theme={null}

232@claude implement this feature based on the issue description232@claude implement this feature based on the issue description

233@claude how should I implement user authentication for this endpoint?233@claude how should I implement user authentication for this endpoint?

234@claude fix the TypeError in the user dashboard component234@claude fix the TypeError in the user dashboard component


709El parámetro `claude_args` acepta cualquier argumento de CLI de Claude Code:709El parámetro `claude_args` acepta cualquier argumento de CLI de Claude Code:

710 710 

711```yaml theme={null}711```yaml theme={null}

712claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"712claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"

713```713```

714 714 

715Argumentos comunes:715Argumentos comunes:

716 716 

717* `--max-turns`: Máximo de turnos de conversación (predeterminado: 10)717* `--max-turns`: Máximo de turnos de conversación (predeterminado: 10)

718* `--model`: Modelo a usar (por ejemplo, `claude-sonnet-4-6`)718* `--model`: Modelo a usar (por ejemplo, `claude-sonnet-5`)

719* `--mcp-config`: Ruta a la configuración de MCP719* `--mcp-config`: Ruta a la configuración de MCP

720* `--allowedTools`: Lista separada por comas de herramientas permitidas. El alias `--allowed-tools` también funciona.720* `--allowedTools`: Lista separada por comas de herramientas permitidas. El alias `--allowed-tools` también funciona.

721* `--debug`: Habilitar salida de depuración721* `--debug`: Habilitar salida de depuración

glossary.md +1 −1

Details

170 Effort level170 Effort level

171</h3>171</h3>

172 172 

173Una configuración que controla cuánto del presupuesto de pensamiento de razonamiento adaptativo usa Claude en cada turno. Mayor esfuerzo significa más tokens de pensamiento y razonamiento más profundo; menor esfuerzo es más rápido y económico. El esfuerzo es compatible con Fable 5, en Opus 4.6 y posterior, y en Sonnet 4.6.173Una configuración que controla cuánto del presupuesto de pensamiento de razonamiento adaptativo usa Claude en cada turno. Mayor esfuerzo significa más tokens de pensamiento y razonamiento más profundo; menor esfuerzo es más rápido y económico. El esfuerzo es compatible con Fable 5, en Opus 4.6 y posterior, y en Sonnet 4.6 y posterior.

174 174 

175Más información: [Adjust effort level](/es/model-config#adjust-effort-level)175Más información: [Adjust effort level](/es/model-config#adjust-effort-level)

176 176 

Details

236 236 

237```bash theme={null}237```bash theme={null}

238export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'238export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'

239export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'239export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-5'

240export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'240export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

241```241```

242 242 


290 Ventana de contexto de 1M de tokens290 Ventana de contexto de 1M de tokens

291</h2>291</h2>

292 292 

293Claude Opus 4.6 y posteriores, y Sonnet 4.6, admiten la [ventana de contexto de 1M de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) en Vertex AI. Claude Code habilita automáticamente la ventana de contexto extendida cuando selecciona una variante de modelo de 1M.293Claude Sonnet 5, Opus 4.6 y posteriores, y Sonnet 4.6 admiten la [ventana de contexto de 1M de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) en Vertex AI. Sonnet 5 siempre se ejecuta con la ventana de 1M, sin ninguna variante `[1m]` para seleccionar. Para los otros modelos, Claude Code habilita automáticamente la ventana de contexto extendida cuando selecciona una variante de modelo de 1M.

294 294 

295El [asistente de configuración](#sign-in-with-vertex-ai) ofrece una opción de contexto de 1M cuando fija modelos. Para habilitarlo para un modelo fijado manualmente en su lugar, agregue `[1m]` al ID del modelo. Consulte [Fijar modelos para implementaciones de terceros](/es/model-config#pin-models-for-third-party-deployments) para obtener detalles.295El [asistente de configuración](#sign-in-with-vertex-ai) ofrece una opción de contexto de 1M cuando fija modelos. Para habilitarlo para un modelo fijado manualmente en su lugar, agregue `[1m]` al ID del modelo. Consulte [Fijar modelos para implementaciones de terceros](/es/model-config#pin-models-for-third-party-deployments) para obtener detalles.

296 296 

hooks.md +56 −23

Details

191El campo `matcher` filtra cuándo se activan los hooks. Cómo se evalúa un matcher depende de los caracteres que contenga:191El campo `matcher` filtra cuándo se activan los hooks. Cómo se evalúa un matcher depende de los caracteres que contenga:

192 192 

193| Valor del matcher | Evaluado como | Ejemplo |193| Valor del matcher | Evaluado como | Ejemplo |

194| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |194| :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

195| `"*"`, `""` u omitido | Coincidir todo | se activa en cada ocurrencia del evento |195| `"*"`, `""` u omitido | Coincidir todo | se activa en cada ocurrencia del evento |

196| 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 |196| 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 |

197| Contiene cualquier otro carácter | Expresión regular de JavaScript | `^Notebook` coincide con cualquier herramienta que comience con Notebook; `mcp__memory__.*` coincide con cada herramienta del servidor `memory` |197| 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` |

198 198 

199Los separadores de coma y la tolerancia de espacios en blanco circundantes requieren Claude Code v2.1.191 o posterior. Los eventos `FileChanged` y `StopFailure` aceptan solo `|` como separador de lista y tratan `,` como un carácter literal; todos los demás eventos enumerados en la tabla siguiente aceptan `|` o `,`.199Un 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.

200 

201Los separadores de coma y la tolerancia de espacios en blanco circundantes requieren Claude Code v2.1.191 o posterior.

202 

203Los 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.

204 

205`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 `,`.

200 206 

201El evento `FileChanged` no sigue estas reglas al construir su lista de vigilancia. Consulte [FileChanged](#filechanged).207El evento `FileChanged` no sigue estas reglas al construir su lista de vigilancia. Consulte [FileChanged](#filechanged).

202 208 


209| `Setup` | qué bandera CLI desencadenó la configuración | `init`, `maintenance` |215| `Setup` | qué bandera CLI desencadenó la configuración | `init`, `maintenance` |

210| `SessionEnd` | por qué terminó la sesión | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |216| `SessionEnd` | por qué terminó la sesión | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

211| `Notification` | tipo de notificación | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |217| `Notification` | tipo de notificación | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

212| `SubagentStart` | tipo de agente | `general-purpose`, `Explore`, `Plan` o nombres de agentes personalizados |218| `SubagentStart` | tipo de agente | `general-purpose`, `Explore`, `Plan`, nombres de agentes personalizados, o nombres con alcance de plugin como `^my-plugin:reviewer$` |

213| `PreCompact`, `PostCompact` | qué desencadenó la compactación | `manual`, `auto` |219| `PreCompact`, `PostCompact` | qué desencadenó la compactación | `manual`, `auto` |

214| `SubagentStop` | tipo de agente | los mismos valores que `SubagentStart` |220| `SubagentStop` | tipo de agente | los mismos valores que `SubagentStart` |

215| `ConfigChange` | fuente de configuración | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |221| `ConfigChange` | fuente de configuración | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |


244}250}

245```251```

246 252 

247`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` y `MessageDisplay` no admiten matchers y siempre se activan en cada ocurrencia. Si agrega un campo `matcher` a estos eventos, se ignora silenciosamente.253`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.

248 254 

249Para 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](/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.255Para 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](/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.

250 256 


260* `mcp__filesystem__read_file`: herramienta leer archivo del servidor Filesystem266* `mcp__filesystem__read_file`: herramienta leer archivo del servidor Filesystem

261* `mcp__github__search_repositories`: herramienta de búsqueda del servidor GitHub267* `mcp__github__search_repositories`: herramienta de búsqueda del servidor GitHub

262 268 

263Para coincidir con cada herramienta de un servidor, agregue `.*` al prefijo del servidor. El `.*` es requerido: un matcher como `mcp__memory` contiene solo letras y guiones bajos, por lo que se compara como una cadena exacta y no coincide con ninguna herramienta.269Para 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.

264 270 

265* `mcp__memory__.*` coincide con todas las herramientas del servidor `memory`271* `mcp__memory__.*` coincide con todas las herramientas del servidor `memory`

272* `mcp__brave-search__.*` coincide con todas las herramientas de un servidor cuyo nombre contiene un guión

266* `mcp__.*__write.*` coincide con cualquier herramienta cuyo nombre comience con `write` de cualquier servidor273* `mcp__.*__write.*` coincide con cualquier herramienta cuyo nombre comience con `write` de cualquier servidor

267 274 

275Los 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.

276 

268Este ejemplo registra todas las operaciones del servidor de memoria y valida operaciones de escritura de cualquier servidor MCP:277Este ejemplo registra todas las operaciones del servidor de memoria y valida operaciones de escritura de cualquier servidor MCP:

269 278 

270```json theme={null}279```json theme={null}


306* **[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).315* **[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).

307* **[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).316* **[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).

308 317 

318Todos 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.

319 

320Los 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.

321 

309<h4 id="common-fields">322<h4 id="common-fields">

310 Campos comunes323 Campos comunes

311</h4>324</h4>


313Estos campos se aplican a todos los tipos de hooks:326Estos campos se aplican a todos los tipos de hooks:

314 327 

315| Campo | Requerido | Descripción |328| Campo | Requerido | Descripción |

316| :-------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |329| :-------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

317| `type` | sí | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |330| `type` | sí | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |

318| `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. 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](/es/permissions) |331| `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](/es/permissions) |

319| `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 |332| `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 |

320| `statusMessage` | no | Mensaje de spinner personalizado mostrado mientras se ejecuta el hook |333| `statusMessage` | no | Mensaje de spinner personalizado mostrado mientras se ejecuta el hook |

321| `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 |334| `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 |


341Además de los [campos comunes](#common-fields), los hooks de comando aceptan estos campos:354Además de los [campos comunes](#common-fields), los hooks de comando aceptan estos campos:

342 355 

343| Campo | Requerido | Descripción |356| Campo | Requerido | Descripción |

344| :------------ | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |357| :------------ | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

345| `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) |358| `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) |

346| `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) |359| `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) |

347| `async` | no | Si es `true`, se ejecuta en segundo plano sin bloquear. Consulte [Run hooks in the background](#run-hooks-in-the-background) |360| `async` | no | Si es `true`, se ejecuta en segundo plano sin bloquear. Consulte [Run hooks in the background](#run-hooks-in-the-background) |

348| `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 |361| `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 |

349| `shell` | no | Shell a usar para este hook. Acepta `"bash"` (predeterminado) o `"powershell"`. 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 |362| `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 |

350 363 

351<a id="exec-form-and-shell-form" />364<a id="exec-form-and-shell-form" />

352 365 


479| `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` |492| `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` |

480| `model` | no | Modelo a usar para evaluación. Por defecto es un modelo rápido |493| `model` | no | Modelo a usar para evaluación. Por defecto es un modelo rápido |

481 494 

482Todos 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. Los 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.

483 

484<h3 id="reference-scripts-by-path">495<h3 id="reference-scripts-by-path">

485 Referenciar scripts por ruta496 Referenciar scripts por ruta

486</h3>497</h3>


620| Campo | Descripción |631| Campo | Descripción |

621| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |632| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

622| `session_id` | Identificador de sesión actual |633| `session_id` | Identificador de sesión actual |

634| `prompt_id` | UUID que identifica el prompt del usuario que se está procesando actualmente. Coincide con el [atributo `prompt.id` en eventos de OpenTelemetry](/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. {/* min-version: 2.1.196 */}Requiere Claude Code v2.1.196 o posterior |

623| `transcript_path` | Ruta al JSON de conversación |635| `transcript_path` | Ruta al JSON de conversación |

624| `cwd` | Directorio de trabajo actual cuando se invoca el hook |636| `cwd` | Directorio de trabajo actual cuando se invoca el hook |

625| `permission_mode` | [Modo de permiso](/es/permissions#permission-modes) actual: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. No todos los eventos reciben este campo: consulte cada ejemplo JSON de evento a continuación para verificar |637| `permission_mode` | [Modo de permiso](/es/permissions#permission-modes) actual: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. No todos los eventos reciben este campo: consulte cada ejemplo JSON de evento a continuación para verificar |


629Cuando se ejecuta con `--agent` o dentro de un subagente, se incluyen dos campos adicionales:641Cuando se ejecuta con `--agent` o dentro de un subagente, se incluyen dos campos adicionales:

630 642 

631| Campo | Descripción |643| Campo | Descripción |

632| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |644| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

633| `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. |645| `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. |

634| `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](/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo. |646| `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](/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo. Para subagentes enviados por un [plugin](/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. |

635 647 

636Solo 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.648Solo 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.

637 649 


640```json theme={null}652```json theme={null}

641{653{

642 "session_id": "abc123",654 "session_id": "abc123",

655 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",

643 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",656 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

644 "cwd": "/home/user/my-project",657 "cwd": "/home/user/my-project",

645 "permission_mode": "default",658 "permission_mode": "default",


796# Hook de notificación: ping al escritorio cuando Claude Code necesita atención.809# Hook de notificación: ping al escritorio cuando Claude Code necesita atención.

797input=$(cat)810input=$(cat)

798title="Claude Code'811title="Claude Code'

799body=$(jq -r '.message // 'Needs your attention'' <<<'$input")812body=$(jq -r '.message // 'Needs your attention"' <<<"$input")

800seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")813seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

801jq -nc --arg seq "$seq" '{terminalSequence: $seq}'814jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

802```815```


867 880 

868Algunos eventos también pueden reescribir contenido en lugar de solo permitir o bloquearlo:881Algunos eventos también pueden reescribir contenido en lugar de solo permitir o bloquearlo:

869 882 

870* `PreToolUse` `updatedInput` directamente bajo `hookSpecificOutput` reemplaza los argumentos de una herramienta antes de que se ejecute ([detalles](#pretooluse-decision-control))883* `PreToolUse`: `updatedInput` directamente bajo `hookSpecificOutput` reemplaza los argumentos de una herramienta antes de que se ejecute. Consulte [PreToolUse decision control](#pretooluse-decision-control)

871* `PermissionRequest` `updatedInput` dentro del objeto `decision` ([detalles](#permissionrequest-decision-control))884* `PermissionRequest`: `updatedInput` dentro del objeto `decision`. Consulte [PermissionRequest decision control](#permissionrequest-decision-control)

872* `PostToolUse` `updatedToolOutput` reemplaza el resultado de la herramienta ([detalles](#posttooluse-decision-control))885* `PostToolUse`: `updatedToolOutput` reemplaza el resultado de la herramienta. Consulte [PostToolUse decision control](#posttooluse-decision-control)

873* `UserPromptSubmit` no puede reemplazar el prompt; solo inyecta `additionalContext` junto a él886* `UserPromptSubmit`: no puede reemplazar el prompt; solo inyecta `additionalContext` junto a él

874 887 

875Para casos de uso de redacción o transformación, intercepte en `PreToolUse` para entradas de herramientas salientes y `PostToolUse` para resultados de herramientas entrantes.888Para casos de uso de redacción o transformación, intercepte en `PreToolUse` para entradas de herramientas salientes y `PostToolUse` para resultados de herramientas entrantes.

876 889 


959 "cwd": "/Users/...",972 "cwd": "/Users/...",

960 "hook_event_name": "SessionStart",973 "hook_event_name": "SessionStart",

961 "source": "startup",974 "source": "startup",

962 "model": "claude-sonnet-4-6"975 "model": "claude-sonnet-5"

963}976}

964```977```

965 978 


1148 1161 

1149Los 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.1162Los 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.

1150 1163 

1164Un hook `UserPromptSubmit` 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.

1165 

1151<h4 id="userpromptsubmit-input">1166<h4 id="userpromptsubmit-input">

1152 Entrada de UserPromptSubmit1167 Entrada de UserPromptSubmit

1153</h4>1168</h4>


1404 1419 

1405Se 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).1420Se 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).

1406 1421 

1422<Warning>

1423 PreToolUse se ejecuta solo cuando Claude llama a una herramienta. Los archivos que [referencia con `@` en su prompt](/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`](/es/permissions#read-and-edit) en su lugar.

1424</Warning>

1425 

1407Use [PreToolUse decision control](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada a herramienta.1426Use [PreToolUse decision control](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada a herramienta.

1408 1427 

1409<h4 id="pretooluse-input">1428<h4 id="pretooluse-input">


1538 1557 

1539Para llamadas `run_in_background: true`, la herramienta regresa inmediatamente después de lanzar el subagente, por lo que `tool_response` no lleva campos de uso. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` y `resolvedModel`.1558Para llamadas `run_in_background: true`, la herramienta regresa inmediatamente después de lanzar el subagente, por lo que `tool_response` no lleva campos de uso. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` y `resolvedModel`.

1540 1559 

1541El campo `resolvedModel` nombra el modelo en el que se ejecuta realmente el subagente, que puede diferir del valor `model` en `tool_input`. Requiere Claude Code v2.1.174 o posterior.1560El 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.

1542 1561 

1543<a id="askuserquestion" />1562<a id="askuserquestion" />

1544 1563 


2054 2073 

2055Se 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](/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo.2074Se 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](/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo.

2056 2075 

2076Para subagentes enviados por un [plugin](/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$`.

2077 

2057<h4 id="subagentstart-input">2078<h4 id="subagentstart-input">

2058 Entrada de SubagentStart2079 Entrada de SubagentStart

2059</h4>2080</h4>


3039* `PostToolUseFailure`, `TaskCreated` y `TaskCompleted`: la razón se devuelve a Claude como un error de herramienta, similar a `PreToolUse`3060* `PostToolUseFailure`, `TaskCreated` y `TaskCompleted`: la razón se devuelve a Claude como un error de herramienta, similar a `PreToolUse`

3040* `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 lugar3061* `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

3041* `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"`3062* `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"`

3042* `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`3063* `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`

3043 3064 

3044Si necesita un control más fino en cualquier evento, use un [hook de comando](#command-hook-fields) con los campos por evento descritos en [Control de decisión](#decision-control).3065Si necesita un control más fino en cualquier evento, use un [hook de comando](#command-hook-fields) con los campos por evento descritos en [Control de decisión](#decision-control).

3045 3066 


3287}3308}

3288```3309```

3289 3310 

3311Para hacer referencia al directorio raíz del proyecto desde un comando de forma shell de PowerShell, léalo como una variable de entorno con `$env:CLAUDE_PROJECT_DIR`. PowerShell trata la forma desnuda `${CLAUDE_PROJECT_DIR}` como una variable local, no como una búsqueda de entorno, y Claude Code sustituye ese marcador de posición en forma shell solo para [hooks de plugins](#reference-scripts-by-path). Para un hook definido en `settings.json`, use la forma `$env:` o cambie a [forma exec](#exec-form-and-shell-form), donde `${CLAUDE_PROJECT_DIR}` se sustituye en cada elemento `args` independientemente de dónde se defina el hook.

3312 

3313El ejemplo a continuación muestra un hook de `settings.json` que ejecuta un script del proyecto con la forma `$env:`:

3314 

3315```json theme={null}

3316{

3317 "type": "command",

3318 "shell": "powershell",

3319 "command": "& \"$env:CLAUDE_PROJECT_DIR\\.claude\\hooks\\check.ps1\""

3320}

3321```

3322 

3290<h2 id="debug-hooks">3323<h2 id="debug-hooks">

3291 Depurar hooks3324 Depurar hooks

3292</h2>3325</h2>

Details

36| `Ctrl+O` | Alternar visor de transcripción | Muestra el uso y la ejecución detallada de herramientas. También expande las llamadas de MCP, que se contraen a una sola línea como "Llamó a slack 3 veces" de forma predeterminada |36| `Ctrl+O` | Alternar visor de transcripción | Muestra el uso y la ejecución detallada de herramientas. También expande las llamadas de MCP, que se contraen a una sola línea como "Llamó a slack 3 veces" de forma predeterminada |

37| `Ctrl+R` | Búsqueda inversa del historial de comandos | Buscar a través de comandos anteriores de forma interactiva |37| `Ctrl+R` | Búsqueda inversa del historial de comandos | Buscar a través de comandos anteriores de forma interactiva |

38| `Ctrl+V` o `Cmd+V` (iTerm2) o `Alt+V` (Windows y WSL) | Pegar imagen desde el portapapeles | Inserta un chip `[Image #N]` en el cursor para que pueda hacer referencia a él posicionalmente en su indicación. En WSL, tanto `Ctrl+V` como `Alt+V` están vinculados; use `Alt+V` si su terminal intercepta `Ctrl+V` |38| `Ctrl+V` o `Cmd+V` (iTerm2) o `Alt+V` (Windows y WSL) | Pegar imagen desde el portapapeles | Inserta un chip `[Image #N]` en el cursor para que pueda hacer referencia a él posicionalmente en su indicación. En WSL, tanto `Ctrl+V` como `Alt+V` están vinculados; use `Alt+V` si su terminal intercepta `Ctrl+V` |

39| `Ctrl+B` | Tareas en ejecución de fondo | Coloca comandos bash y agentes en segundo plano. Los usuarios de Tmux presionan dos veces |39| `Ctrl+B` | Tareas en ejecución de fondo | Coloca comandos Bash y agentes en segundo plano. Los usuarios de Tmux presionan dos veces |

40| `Ctrl+T` | Alternar lista de tareas | Mostrar u ocultar la [lista de tareas](#task-list) en el área de estado de la terminal |40| `Ctrl+T` | Alternar lista de tareas | Mostrar u ocultar la [lista de tareas](#task-list) en el área de estado de la terminal |

41| `Flechas izquierda/derecha` | Ciclar a través de pestañas de diálogo | Navegar entre pestañas en diálogos de permisos y menús |41| `Flechas izquierda/derecha` | Ciclar a través de pestañas de diálogo | Navegar entre pestañas en diálogos de permisos y menús |

42| `Flechas arriba/abajo` o `Ctrl+P`/`Ctrl+N` | Mover cursor o navegar por el historial de comandos | Cuando la entrada abarca más de una fila visual, ya sea envuelta o multilínea, primero mueve el cursor dentro de la indicación. Una vez que el cursor está en la primera o última fila visual, presionar nuevamente navega por el historial de comandos. {/* min-version: 2.1.169 */}A partir de v2.1.169, la entrada de una sola línea envuelta se comporta igual que la multilínea |42| `Flechas arriba/abajo` o `Ctrl+P`/`Ctrl+N` | Mover cursor o navegar por el historial de comandos | Cuando la entrada abarca más de una fila visual, ya sea envuelta o multilínea, primero mueve el cursor dentro de la indicación. Una vez que el cursor está en la primera o última fila visual, presionar nuevamente navega por el historial de comandos. {/* min-version: 2.1.169 */}A partir de v2.1.169, la entrada de una sola línea envuelta se comporta igual que la multilínea |


249* El historial de entrada se reinicia cuando ejecuta `/clear` para iniciar una nueva sesión. La conversación de la sesión anterior se conserva y se puede reanudar.249* El historial de entrada se reinicia cuando ejecuta `/clear` para iniciar una nueva sesión. La conversación de la sesión anterior se conserva y se puede reanudar.

250* Enviar el mismo indicador dos veces seguidas registra una entrada de historial, por lo que presionar Arriba va al indicador anterior distinto250* Enviar el mismo indicador dos veces seguidas registra una entrada de historial, por lo que presionar Arriba va al indicador anterior distinto

251* Use las flechas Arriba/Abajo para navegar (consulte los atajos de teclado anteriores)251* Use las flechas Arriba/Abajo para navegar (consulte los atajos de teclado anteriores)

252* **Nota**: la expansión del historial (`!`) está deshabilitada de forma predeterminada252* La expansión del historial con `!` está deshabilitada de forma predeterminada

253 253 

254<h3 id="reverse-search-with-ctrl-r">254<h3 id="reverse-search-with-ctrl-r">

255 Búsqueda inversa con Ctrl+R255 Búsqueda inversa con Ctrl+R


285Para ejecutar comandos en segundo plano, puede:285Para ejecutar comandos en segundo plano, puede:

286 286 

287* Indicar a Claude Code que ejecute un comando en segundo plano287* Indicar a Claude Code que ejecute un comando en segundo plano

288* Presione Ctrl+B para mover una invocación regular de herramienta Bash al segundo plano. (Los usuarios de Tmux deben presionar Ctrl+B dos veces debido a la tecla de prefijo de tmux).288* Presione `Ctrl+B` para mover una invocación regular de herramienta Bash al segundo plano. Los usuarios de Tmux deben presionar `Ctrl+B` dos veces debido a la tecla de prefijo de tmux.

289 289 

290**Características clave:**290**Características clave:**

291 291 

292* La salida se escribe en un archivo y Claude puede recuperarla usando la herramienta Read292* La salida se escribe en un archivo y Claude puede recuperarla usando la herramienta Read

293* Las tareas de fondo tienen ID únicos para el seguimiento y la recuperación de salida293* Las tareas de fondo tienen ID únicos para el seguimiento y la recuperación de salida

294* Las tareas de fondo se limpian automáticamente cuando Claude Code sale294* Las tareas de fondo se limpian automáticamente cuando Claude Code sale. Enviar la sesión a segundo plano en lugar de salir las entrega a la sesión de fondo, donde continúan ejecutándose. Consulte [enviar una sesión en ejecución a segundo plano](/es/agent-view#from-inside-a-session)

295* Las tareas de fondo se terminan automáticamente si la salida excede 5GB, con una nota en stderr explicando por qué295* Las tareas de fondo se terminan automáticamente si la salida excede 5GB, con una nota en stderr explicando por qué

296* {/* min-version: 2.1.193 */}A partir de v2.1.193, en macOS y Linux, las tareas de fondo en ejecución se terminan cuando el sistema operativo señala presión de memoria, siempre que la sesión haya estado inactiva durante al menos 30 minutos sin ningún turno o subagenteejecutándose. Establezca [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/es/env-vars) en `1` para desactivar esto

296 297 

297Para deshabilitar toda la funcionalidad de tareas de fondo, establezca la variable de entorno `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` en `1`. Consulte [Variables de entorno](/es/env-vars) para obtener más detalles.298Para deshabilitar toda la funcionalidad de tareas de fondo, establezca la variable de entorno `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` en `1`. Consulte [Variables de entorno](/es/env-vars) para obtener más detalles.

298 299 


322* Muestra el progreso y la salida en tiempo real323* Muestra el progreso y la salida en tiempo real

323* Admite el mismo envío a segundo plano `Ctrl+B` para comandos de larga duración324* Admite el mismo envío a segundo plano `Ctrl+B` para comandos de larga duración

324* No requiere que Claude interprete o apruebe el comando325* No requiere que Claude interprete o apruebe el comando

325* Admite autocompletado basado en historial: escriba un comando parcial y presione **Tab** para completar desde comandos `!` anteriores en el proyecto actual326* Admite autocompletado basado en historial: escriba un comando parcial y presione `Tab` para completar desde comandos `!` anteriores en el proyecto actual

327* {/* min-version: 2.1.193 */}Admite autocompletado de ruta de archivo en vivo a partir de v2.1.193 en todas las plataformas: escriba un token que contenga una barra diagonal, como `./src/` o `~/`, para ver una lista desplegable de archivos y directorios coincidentes, luego presione `Tab` para aceptar. Use barras diagonales en Windows también; la lista desplegable se activa con `/`, no con `\`

326* Salir con `Escape`, `Backspace` o `Ctrl+U` en un indicador vacío328* Salir con `Escape`, `Backspace` o `Ctrl+U` en un indicador vacío

327* Pegar texto que comienza con `!` en un indicador vacío entra automáticamente en modo shell, coincidiendo con el comportamiento de `!` escrito329* Pegar texto que comienza con `!` en un indicador vacío entra automáticamente en modo shell, coincidiendo con el comportamiento de `!` escrito

328 330 


338 340 

339Después de que Claude responde, las sugerencias continúan apareciendo según su historial de conversación, como un paso de seguimiento de una solicitud de varias partes o una continuación natural de su flujo de trabajo.341Después de que Claude responde, las sugerencias continúan apareciendo según su historial de conversación, como un paso de seguimiento de una solicitud de varias partes o una continuación natural de su flujo de trabajo.

340 342 

341* Presione **Tab** o **Flecha derecha** para colocar la sugerencia en la entrada de indicación, luego **Intro** para enviar343* Presione `Tab` o `Flecha derecha` para colocar la sugerencia en la entrada de indicación, luego `Intro` para enviar

342* Comience a escribir para descartarla344* Comience a escribir para descartarla

343 345 

344La sugerencia se ejecuta como una solicitud de fondo que reutiliza el caché de indicación de la conversación principal, por lo que el costo adicional es mínimo. Claude Code omite la generación de sugerencias cuando el caché está frío para evitar costos innecesarios.346La sugerencia se ejecuta como una solicitud de fondo que reutiliza el caché de indicación de la conversación principal, por lo que el costo adicional es mínimo. Claude Code omite la generación de sugerencias cuando el caché está frío para evitar costos innecesarios.


368* **Respuesta única**: no hay turnos de seguimiento en la superposición. Para continuar el hilo, divídalo en su propia sesión con `f`.370* **Respuesta única**: no hay turnos de seguimiento en la superposición. Para continuar el hilo, divídalo en su propia sesión con `f`.

369* **Bajo costo**: la pregunta lateral reutiliza el caché de indicación de la conversación principal, por lo que el costo adicional es mínimo.371* **Bajo costo**: la pregunta lateral reutiliza el caché de indicación de la conversación principal, por lo que el costo adicional es mínimo.

370 372 

371Una vez que aparece la respuesta, la superposición acepta estas teclas. Las preguntas laterales anteriores de la misma sesión aparecen como una lista atenuada encima de la respuesta actual; se mantienen fuera del historial de conversación pero permanecen visibles en la superposición hasta que las borre.373Las preguntas laterales anteriores de la misma sesión aparecen como una lista atenuada encima de la respuesta actual. Se mantienen fuera del historial de conversación pero permanecen visibles en la superposición hasta que las borre.

374 

375Una vez que aparece la respuesta, la superposición acepta estas teclas.

372 376 

373| Tecla | Acción |377| Tecla | Acción |

374| :------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |378| :------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


413* Rojo: cambios solicitados417* Rojo: cambios solicitados

414* Gris: borrador418* Gris: borrador

415 419 

416El distintivo desaparece una vez que la solicitud de extracción se fusiona o se cierra. `Cmd+clic` (Mac) o `Ctrl+clic` (Windows/Linux) en el enlace para abrir la solicitud de extracción en su navegador. El estado se actualiza cada 60 segundos, e inmediatamente después de que se ejecute un comando `gh pr` o `git push` en la sesión.420El distintivo desaparece una vez que la solicitud de extracción se fusiona o se cierra. `Cmd+clic` (macOS) o `Ctrl+clic` (Windows/Linux) en el enlace para abrir la solicitud de extracción en su navegador. El estado se actualiza cada 60 segundos, e inmediatamente después de que se ejecute un comando `gh pr` o `git push` en la sesión.

417 421 

418<Note>422<Note>

419 El estado de PR requiere que la CLI `gh` esté instalada y autenticada (`gh auth login`).423 El estado de PR requiere que la CLI `gh` esté instalada y autenticada (`gh auth login`).

jetbrains.md +1 −1

Details

233 Consideraciones de seguridad233 Consideraciones de seguridad

234</h2>234</h2>

235 235 

236Cuando Claude Code se ejecuta en un JetBrains IDE con permisos de edición automática habilitados, 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 de edición automática y permitir eludir los indicadores de permiso de Claude Code para la ejecución de bash.236Cuando Claude Code se ejecuta en un JetBrains IDE en modo de permiso [`acceptEdits`](/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.

237 237 

238Cuando se ejecuta en JetBrains IDEs, considere:238Cuando se ejecuta en JetBrains IDEs, considere:

239 239 

llm-gateway.md +0 −96 deleted

File Deleted View Diff

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# Puertas de enlace LLM

6 

7> Enruta Claude Code a través de una puerta de enlace LLM para autenticación centralizada, seguimiento de uso y controles de costos. Cubre la conexión de Claude Code a una puerta de enlace, el despliegue de una para su organización, qué envía Claude Code a una puerta de enlace e interacciones de puertas de enlace con suscripciones de claude.ai.

8 

9Una puerta de enlace LLM es un proxy que su organización ejecuta entre Claude Code y un proveedor de modelos. Claude Code envía tráfico de API a la puerta de enlace, y la puerta de enlace lo reenvía al proveedor usando una credencial que su organización controla.

10 

11<Note>

12 * Si es un desarrollador que se conecta a una puerta de enlace existente: [conecte Claude Code a su puerta de enlace](/es/llm-gateway-connect)

13 * Si es un administrador que despliega una puerta de enlace para su organización: [despliegue y distribuya una puerta de enlace](/es/llm-gateway-rollout)

14 * Si está configurando un producto de puerta de enlace: la [referencia del protocolo de puerta de enlace](/es/llm-gateway-protocol)

15</Note>

16 

17<h2 id="what-a-gateway-provides">

18 Qué proporciona una puerta de enlace

19</h2>

20 

21Una puerta de enlace le da a su organización un lugar para gestionar:

22 

23* **Credenciales**: la clave del proveedor permanece del lado del servidor; los desarrolladores tienen credenciales de puerta de enlace en su lugar

24* **Seguimiento de uso**: atribuya el uso por desarrollador o equipo, independientemente de qué proveedor sirva la solicitud

25* **Controles de costos**: aplique presupuestos y límites de velocidad en un solo lugar

26* **Registro de auditoría**: registre cada solicitud de modelo para cumplimiento normativo

27* **Cambio de proveedor**: cambie el proveedor en la configuración de la puerta de enlace, sin tocar máquinas de desarrolladores

28 

29Todos estos excepto el cambio de proveedor se aplican si el upstream es la API de Anthropic o un [proveedor en la nube](/es/third-party-integrations).

30 

31El 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 [referencia del protocolo de puerta de enlace](/es/llm-gateway-protocol) cubre qué reenviar.

32 

33<h2 id="how-a-gateway-works">

34 Cómo funciona una puerta de enlace

35</h2>

36 

37Por defecto, Claude Code envía solicitudes directamente a la API de Anthropic en `api.anthropic.com`. Para enrutar a través de una puerta de enlace, establezca `ANTHROPIC_BASE_URL` en la dirección de la puerta de enlace; Claude Code envía las mismas solicitudes allí en su lugar. La puerta de enlace autentica al desarrollador, adjunta la credencial del proveedor de su organización, y reenvía cada solicitud al proveedor para el cual está configurada.

38 

39`ANTHROPIC_BASE_URL` es la variable de dirección para la mayoría de puertas de enlace. Una puerta de enlace que frontal un proveedor en la nube específico, como Bedrock, Vertex, Foundry, o la Plataforma Claude en AWS, usa la variable de URL base de ese proveedor en su lugar; [Formatos de API](/es/llm-gateway-protocol#api-formats) lista qué variable va con cada configuración.

40 

41<Frame>

42 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/llm-gateway-flow.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=1c1a8dcc0cfcc3a58652cc8e28cd3e20" alt="Diagrama que muestra Claude Code enrutado a través de una puerta de enlace LLM. En una zona de máquinas de desarrolladores, la CLI de Claude Code, la extensión de VS Code, y los clientes de SDK de CI o Agent envían solicitudes a la puerta de enlace, con la variable de URL base del formato de API de la puerta de enlace apuntando a ella y cada desarrollador teniendo una credencial por desarrollador, y la aplicación de escritorio llega a la misma puerta de enlace a través de configuración distribuida por la organización. En una zona etiquetada como su infraestructura, la puerta de enlace LLM maneja autenticación, seguimiento de uso, presupuestos y enrutamiento, y reenvía solicitudes con la credencial de su organización. En una zona de proveedores de modelos, una flecha sólida lleva al proveedor que configura, mostrado como la API de Anthropic, y flechas punteadas llevan a otras opciones de proveedor, ilustradas con Amazon Bedrock, Google Vertex AI y Microsoft Foundry como ejemplos." width="780" height="322" data-path="images/llm-gateway-flow.svg" />

43</Frame>

44 

45Dos tipos de credencial están involucrados:

46 

47* **Credenciales de desarrollador**: cada desarrollador tiene la suya propia, emitida por la puerta de enlace. Autentica al desarrollador en la puerta de enlace e lo identifica en el seguimiento de uso

48* **Credencial del proveedor**: la puerta de enlace tiene una credencial para su cuenta de proveedor, compartida por todo el tráfico reenviado. No aprovisiona claves de proveedor por desarrollador

49 

50La puerta de enlace reenvía cada solicitud al proveedor que configura, como la API de Anthropic, [Amazon Bedrock](/es/amazon-bedrock), [Google Vertex AI](/es/google-vertex-ai), [Microsoft Foundry](/es/microsoft-foundry), o la [Plataforma Claude en AWS](/es/claude-platform-on-aws). Debido a que Claude Code solo habla con la puerta de enlace, la opción de proveedor es la configuración de la puerta de enlace, no la del cliente.

51 

52<h2 id="roll-out-a-gateway">

53 Desplegar una puerta de enlace

54</h2>

55 

56Cuando esté listo para desplegar una puerta de enlace LLM a su organización, la secuencia es la misma sin importar qué producto de puerta de enlace elija:

57 

581. Despliegue la puerta de enlace y déle su credencial de proveedor, para que pueda autenticar las solicitudes que reenvía.

592. Emita a cada desarrollador una credencial de puerta de enlace, para que el uso se atribuya al desarrollador y la desvinculación revoque una credencial.

603. Distribuya la configuración a través de un [archivo de configuración administrada](/es/settings#settings-files) y su herramienta de secretos, para que cada máquina reciba la URL base y una credencial. Cuando ambas se distribuyen, los desarrolladores no configuran nada. Si no tiene distribución de configuración en su lugar, los desarrolladores siguen la [página de conexión](/es/llm-gateway-connect) para establecer las variables ellos mismos.

614. Haga que cada desarrollador [verifique la configuración en Claude Code](/es/llm-gateway-connect#check-for-an-existing-configuration), para que los problemas de distribución salgan a la superficie antes de que dependan de la puerta de enlace.

62 

63[Despliegue una puerta de enlace LLM para su organización](/es/llm-gateway-rollout) camina cada paso y muestra los archivos de configuración a distribuir en cada uno. La puerta de enlace es una parte de la configuración de la organización; para aplicación de políticas, visibilidad de uso y decisiones de manejo de datos, vea [Configure Claude Code para su organización](/es/admin-setup).

64 

65<h2 id="third-party-gateways">

66 Puertas de enlace de terceros

67</h2>

68 

69Cualquier puerta de enlace que exponga un [formato de API compatible](/es/llm-gateway-protocol#api-formats) funciona. Anthropic no respalda, mantiene ni audita productos de puerta de enlace de terceros. Despliegue siguiendo su propia documentación, luego complete el lado de Claude Code del despliegue con los [pasos de despliegue](/es/llm-gateway-rollout).

70 

71<h2 id="subscriptions-and-gateways">

72 Suscripciones y puertas de enlace

73</h2>

74 

75Mientras una [variable de credencial de puerta de enlace](/es/llm-gateway-connect#set-the-credential-variable) o `apiKeyHelper` está activa, la suscripción de claude.ai de un desarrollador no se usa: la credencial reemplaza el inicio de sesión de suscripción para esa sesión, y los límites de uso de la suscripción no se aplican. Ese tráfico se factura por token a quien sea propietario de la credencial que la puerta de enlace reenvía, como la cuenta de Consola de Anthropic de su organización, o su cuenta de Bedrock, Vertex o Foundry cuando la puerta de enlace enruta allí.

76 

77Establecer solo `ANTHROPIC_BASE_URL`, sin una credencial de puerta de enlace, no reemplaza la suscripción. Las solicitudes aún se enrutan a través de la puerta de enlace, pero un inicio de sesión de claude.ai guardado permanece como la credencial activa, por lo que sus límites de uso y facturación se aplican. Las puertas de enlace que pasan este tráfico a Anthropic deben reenviar la capacidad OAuth en `anthropic-beta`; vea la [referencia de encabezados de solicitud](/es/llm-gateway-protocol#request-headers).

78 

79<h2 id="configure-separately-from-the-gateway">

80 Configurar por separado de la puerta de enlace

81</h2>

82 

83Una puerta de enlace determina dónde se envían las solicitudes de API del modelo. La selección de modelo, el resto del tráfico de red de Claude Code y los proxies corporativos se configuran por separado:

84 

85* **Selección de modelo**: la URL base decide dónde van las solicitudes, no qué modelo las responde. Elija el modelo con el comando `/model` o las variables de entorno del modelo; vea [cómo establecer su modelo](/es/model-config#setting-your-model)

86* **Tráfico del lado del cliente**: comprobaciones de versión y telemetría de cliente opcional, ambas deshabilitadas con [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/es/env-vars), y tráfico de inicio de sesión cuando se está usando un inicio de sesión de claude.ai o Consola, van a los puntos finales de actualización y autenticación de Anthropic en lugar de la puerta de enlace. Vea [requisitos de acceso a la red](/es/network-config#network-access-requirements) para los dominios

87* **Proxies corporativos**: un proxy establecido con `HTTPS_PROXY` se sienta entre Claude Code y cada servidor con el que habla, incluyendo la puerta de enlace. Si su red requiere un proxy, configure ambos; vea [configuración de proxy](/es/network-config#proxy-configuration)

88 

89<h2 id="related-pages">

90 Páginas relacionadas

91</h2>

92 

93* [Conecte Claude Code a una puerta de enlace LLM](/es/llm-gateway-connect): establezca la URL base y la credencial en su propia máquina, con configuración por superficie y una tabla de solución de problemas

94* [Despliegue una puerta de enlace LLM para su organización](/es/llm-gateway-rollout): la lista de verificación del administrador para desplegar una puerta de enlace, emitir credenciales de desarrollador y distribuir configuración administrada

95* [Referencia del protocolo de puerta de enlace](/es/llm-gateway-protocol): qué envía Claude Code a una puerta de enlace, para operadores que configuran una, cubriendo puntos finales, encabezados a reenviar y paso a través de características

96* [Configure Claude Code para su organización](/es/admin-setup): las decisiones de despliegue más amplias de las que una puerta de enlace es una parte, incluyendo aplicación de políticas y visibilidad de uso

Details

231 anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}231 anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}

232```232```

233 233 

234Para una puerta de enlace de token portador, pase el mismo secreto como entrada `anthropic_api_key` y `ANTHROPIC_AUTH_TOKEN` en el bloque `env` del flujo de trabajo. La acción requiere `anthropic_api_key`, `CLAUDE_CODE_OAUTH_TOKEN`, o federación de identidad de carga de trabajo antes de lanzar Claude Code, y no lee `ANTHROPIC_AUTH_TOKEN`, por lo que la entrada satisface esa comprobación de lanzamiento mientras la variable de entorno pone la clave en el encabezado `Authorization` que la puerta de enlace lee. La copia en `x-api-key` se ignora:234Para una puerta de enlace de token portador, pase el mismo secreto dos veces: como la entrada `anthropic_api_key` y como `ANTHROPIC_AUTH_TOKEN` en el bloque `env` del flujo de trabajo. La acción requiere `anthropic_api_key`, `CLAUDE_CODE_OAUTH_TOKEN`, o federación de identidad de carga de trabajo antes de lanzar Claude Code, y no lee `ANTHROPIC_AUTH_TOKEN`, por lo que la entrada está ahí solo para satisfacer esa comprobación de lanzamiento. La variable de entorno es lo que pone la clave en el encabezado `Authorization` que la puerta de enlace lee; la copia en `x-api-key` se ignora:

235 235 

236```yaml theme={null}236```yaml theme={null}

237env:237env:


285 285 

286[Claude Code en Slack](/es/slack) y [Claude Code en la web](/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.286[Claude Code en Slack](/es/slack) y [Claude Code en la web](/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.

287 287 

288[Control Remoto](/es/remote-control) y [dictado de voz](/es/voice-dictation) ambos se basan en una identidad de claude.ai: Control Remoto para emparejar una sesión en vivo con su cuenta, y dictado de voz 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. Para usar cualquiera de ellos, desestablezca la credencial de puerta de enlace e inicie sesión con claude.ai en su lugar; `/doctor` nombra la variable a desestablecer.288[Control Remoto](/es/remote-control) y [dictado de voz](/es/voice-dictation) ambos se basan en una identidad de claude.ai: Control Remoto para emparejar una sesión en vivo con su cuenta, y dictado de voz 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. {/* min-version: 2.1.196 */}A partir de v2.1.196, Control Remoto 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 solo.

289 

290Para restaurar cualquiera de estas características, inicie sesión con claude.ai y desestablezca las variables de puerta de enlace que comprueba. `/doctor` nombra la variable de credencial a desestablecer.

291 

292* Dictado de voz: desestablezca la credencial de puerta de enlace

293* Control Remoto: desestablezca la credencial de puerta de enlace y `ANTHROPIC_BASE_URL`

289 294 

290<h2 id="additional-configuration">295<h2 id="additional-configuration">

291 Configuración adicional296 Configuración adicional


318```json theme={null}323```json theme={null}

319{324{

320 "env": {325 "env": {

321 "ANTHROPIC_CUSTOM_HEADERS": "X-Org-Route: prod\nX-Tenant: acme"326 "ANTHROPIC_CUSTOM_HEADERS": "X-Org-Route: prod\nX-Tenant: example"

322 }327 }

323}328}

324```329```


388 Enrutar a un proveedor en la nube a través de una puerta de enlace393 Enrutar a un proveedor en la nube a través de una puerta de enlace

389</h3>394</h3>

390 395 

391Estas configuraciones apuntan Claude Code a una puerta de enlace a través de una variable de URL base específica del proveedor en lugar de `ANTHROPIC_BASE_URL`. Las puertas de enlace de Bedrock y Vertex aceptan los formatos de solicitud nativos de esos proveedores; las puertas de enlace de Foundry y Claude Platform en AWS aceptan el formato de Mensajes de Anthropic y difieren solo en qué variable de URL base las alcanza.396Estas configuraciones apuntan Claude Code a una puerta de enlace a través de una variable de URL base específica del proveedor en lugar de `ANTHROPIC_BASE_URL`. Las puertas de enlace de Bedrock y Agent Platform aceptan los formatos de solicitud nativos de esos proveedores; las puertas de enlace de Foundry y Claude Platform en AWS aceptan el formato de Mensajes de Anthropic y difieren solo en qué variable de URL base las alcanza.

392 397 

393Use una solo si su equipo de puerta de enlace nombró específicamente Bedrock, Vertex, Foundry, o Claude Platform en AWS. Si la [solicitud de verificación](#verify-the-connection) anterior devolvió JSON, puede omitir esta sección.398Use una solo si su equipo de puerta de enlace nombró específicamente Bedrock, Agent Platform, Foundry, o Claude Platform en AWS. Si la [solicitud de verificación](#verify-the-connection) anterior devolvió JSON, puede omitir esta sección.

394 399 

395Establezca el bloque para el proveedor que su equipo de puerta de enlace nombró. Las variables de omitir autenticación le dicen a Claude Code que no firme solicitudes con credenciales de proveedor, ya que la puerta de enlace tiene esas. Si la puerta de enlace necesita su propio token, agregue `ANTHROPIC_AUTH_TOKEN` después del bloque, excepto para Foundry, que usa `ANTHROPIC_FOUNDRY_API_KEY` como se muestra.400Establezca el bloque para el proveedor que su equipo de puerta de enlace nombró. Las variables de omitir autenticación le dicen a Claude Code que no firme solicitudes con credenciales de proveedor, ya que la puerta de enlace tiene esas. Si la puerta de enlace necesita su propio token, agregue `ANTHROPIC_AUTH_TOKEN` después del bloque, excepto para Foundry, que usa `ANTHROPIC_FOUNDRY_API_KEY` como se muestra.

396 401 


416 </Tab>421 </Tab>

417</Tabs>422</Tabs>

418 423 

419<h4 id="google-vertex-ai">424<h4 id="google-cloud’s-agent-platform">

420 Google Vertex AI425 Google Cloud's Agent Platform

421</h4>426</h4>

422 427 

423<Tabs>428<Tabs>

Details

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

10 10 

11Una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) en ejecución sirve una versión legible por máquina de este contrato en `GET /protocol`, cubriendo los mismos requisitos de reenvío más los puntos finales específicos de la puerta de enlace de aplicaciones Claude para inicio de sesión SSO, entrega de configuración administrada y telemetría. La puerta de enlace de aplicaciones Claude se ejecuta desde el mismo binario `claude` que la CLI, por lo que el [inicio rápido de la puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway#quickstart) es el camino más corto hacia una instancia en ejecución desde la que puede obtener la especificación.

12 

11<Note>13<Note>

12 * Para implementar una puerta de enlace existente o de terceros para su organización, consulte [Implementar una puerta de enlace LLM](/es/llm-gateway-rollout)14 * Para implementar una puerta de enlace existente o de terceros para su organización, consulte [Implementar una puerta de enlace LLM](/es/llm-gateway-rollout)

13 * 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](/es/llm-gateway-connect)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](/es/llm-gateway-connect)


32 Formatos de API34 Formatos de API

33</h2>35</h2>

34 36 

35Una puerta de enlace debe exponer al menos uno de los siguientes formatos de API a los clientes de Claude Code. Qué formato habla Claude Code está determinado por la configuración del cliente: la variable en la columna Seleccionado por de la tabla a continuación apunta Claude Code a su puerta de enlace en ese formato.37Una puerta de enlace debe exponer al menos uno de los siguientes formatos de API a los clientes de Claude Code. Qué formato habla Claude Code está determinado por la configuración del cliente: la variable en la columna Seleccionado por de la tabla a continuación apunta Claude Code a su puerta de enlace en ese formato. 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`.

36 38 

37| Formato | Seleccionado por | Puntos finales | Reenviar sin cambios |39| Formato | Seleccionado por | Puntos finales | Reenviar sin cambios |

38| :------------------ | :----------------------------------------------------------- | :----------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |40| :------------------------ | :----------------------------------------------------------- | :----------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |

39| Anthropic Messages | `ANTHROPIC_BASE_URL` | `/v1/messages`, `/v1/messages/count_tokens` (opcional) | encabezados de solicitud `anthropic-beta` y `anthropic-version` |41| Anthropic Messages | `ANTHROPIC_BASE_URL` | `/v1/messages`, `/v1/messages/count_tokens` (opcional) | encabezados de solicitud `anthropic-beta` y `anthropic-version` |

40| Bedrock InvokeModel | `ANTHROPIC_BEDROCK_BASE_URL` con `CLAUDE_CODE_USE_BEDROCK=1` | `/model/{model}/invoke`, `/model/{model}/invoke-with-response-stream` | campos de cuerpo de solicitud `anthropic_beta` y `anthropic_version` |42| Bedrock InvokeModel | `ANTHROPIC_BEDROCK_BASE_URL` con `CLAUDE_CODE_USE_BEDROCK=1` | `/model/{model}/invoke`, `/model/{model}/invoke-with-response-stream` | campos de cuerpo de solicitud `anthropic_beta` y `anthropic_version` |

41| Vertex rawPredict | `ANTHROPIC_VERTEX_BASE_URL` con `CLAUDE_CODE_USE_VERTEX=1` | `:rawPredict`, `:streamRawPredict`, `count-tokens:rawPredict` (opcional) | encabezados de solicitud `anthropic-beta` y `anthropic-version`, y el campo de cuerpo de solicitud `anthropic_version` |43| Agent Platform rawPredict | `ANTHROPIC_VERTEX_BASE_URL` con `CLAUDE_CODE_USE_VERTEX=1` | `:rawPredict`, `:streamRawPredict`, `count-tokens:rawPredict` (opcional) | encabezados de solicitud `anthropic-beta` y `anthropic-version`, y el campo de cuerpo de solicitud `anthropic_version` |

42 44 

43<h3 id="foundry-and-claude-platform-on-aws">45<h3 id="foundry-and-claude-platform-on-aws">

44 Foundry y Claude Platform en AWS46 Foundry y Claude Platform en AWS


50 Puntos finales opcionales y tráfico de inicio52 Puntos finales opcionales y tráfico de inicio

51</h3>53</h3>

52 54 

53Los puntos finales de conteo de tokens son los únicos opcionales: cuando están ausentes, Claude Code estima el uso de contexto localmente. Las solicitudes de inferencia se publican en `/v1/messages?beta=true`, así que coincida con la ruta, no con la URL completa. El método Vertex adjunta sufijos al camino del modelo del editor, como en `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`.55Los puntos finales de conteo de tokens son los únicos opcionales: cuando están ausentes, Claude Code estima el uso de contexto localmente. Las solicitudes de inferencia se publican en `/v1/messages?beta=true`, así que coincida con la ruta, no con la URL completa. Los sufijos del método Agent Platform se adjuntan a la ruta del modelo del editor, como en `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`.

54 56 

55Una puerta de enlace también ve tráfico de inicio de mejor esfuerzo que puede rechazar sin romper nada: una sonda de conectividad `HEAD /`, y en puertas de enlace con formato Bedrock una solicitud `GET /inference-profiles?type=SYSTEM_DEFINED`.57Una puerta de enlace también ve tráfico de inicio de mejor esfuerzo que puede rechazar sin romper nada: una sonda de conectividad `HEAD /`, y en puertas de enlace con formato Bedrock una solicitud `GET /inference-profiles?type=SYSTEM_DEFINED`.

56 58 


66 68 

67Qué 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.69Qué 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.

68 70 

69* Cuando el cliente habla el formato Bedrock o Vertex, Claude Code envía solo el subconjunto de su conjunto de capacidades completo que esos proveedores aceptan71* Cuando el cliente habla el formato Bedrock o Agent Platform, Claude Code envía solo el subconjunto de su conjunto de capacidades completo que esos proveedores aceptan

70* 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 Bedrock o Vertex72* 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 Bedrock o Agent Platform

71 73 

72Cerrar 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.74Cerrar 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.

73 75 


80| Encabezado | Descripción |82| Encabezado | Descripción |

81| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |83| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

82| `Authorization`, `x-api-key` | La credencial de puerta de enlace del desarrollador, en uno o ambos encabezados dependiendo de cuál [variable de credencial](/es/llm-gateway-connect#set-the-credential-variable) establezcan |84| `Authorization`, `x-api-key` | La credencial de puerta de enlace del desarrollador, en uno o ambos encabezados dependiendo de cuál [variable de credencial](/es/llm-gateway-connect#set-the-credential-variable) establezcan |

83| `anthropic-version` | Versión de API, actualmente `2023-06-01`. Las solicitudes con formato Bedrock y Vertex también llevan el campo de cuerpo `anthropic_version`, cuyo valor es la cadena de dialecto del proveedor, no el valor de este encabezado |85| `anthropic-version` | Versión de API, actualmente `2023-06-01`. Las solicitudes con formato Bedrock y Agent Platform también llevan el campo de cuerpo `anthropic_version`, cuyo valor es la cadena de dialecto del proveedor, no el valor de este encabezado |

84| `anthropic-beta` | Valores de capacidad separados por comas para la solicitud. Reenvíe el encabezado textualmente; no permita valores individuales, porque el conjunto cambia con las versiones de Claude Code. Cuando el desarrollador se autentica con un inicio de sesión de claude.ai, que es posible cuando `ANTHROPIC_BASE_URL` se establece sin una variable de credencial de puerta de enlace, este encabezado también lleva una capacidad OAuth que el proveedor ascendente requiere, y eliminarlo falla esas solicitudes con `401` |86| `anthropic-beta` | Valores de capacidad separados por comas para la solicitud. Reenvíe el encabezado textualmente; no permita valores individuales, porque el conjunto cambia con las versiones de Claude Code. Cuando el desarrollador se autentica con un inicio de sesión de claude.ai, que es posible cuando `ANTHROPIC_BASE_URL` se establece sin una variable de credencial de puerta de enlace, este encabezado también lleva una capacidad OAuth que el proveedor ascendente requiere, y eliminarlo falla esas solicitudes con `401` |

85| `x-claude-code-session-id` | Un identificador único para la sesión actual de Claude Code. Úselo para agregar todas las solicitudes de una sesión sin analizar cuerpos de solicitud |87| `x-claude-code-session-id` | Un identificador único para la sesión actual de Claude Code. Úselo para agregar todas las solicitudes de una sesión sin analizar cuerpos de solicitud |

86| `x-claude-code-agent-id` | Identificador del [subagente](/es/sub-agents) que emitió la solicitud, presente solo en solicitudes de un agente que Claude Code generó dentro de la sesión. Úselo con el ID de sesión para atribuir costo a agentes paralelos |88| `x-claude-code-agent-id` | Identificador del [subagente](/es/sub-agents) que emitió la solicitud, presente solo en solicitudes de un agente que Claude Code generó dentro de la sesión. Úselo con el ID de sesión para atribuir costo a agentes paralelos |


98 100 

99Al reenviar a un proveedor ascendente con formato Anthropic, pase encabezados de solicitud `anthropic-*` y campos de cuerpo de solicitud sin cambios en lugar de permitir los que ve hoy. Una puerta de enlace fijada a una lista observada elimina el encabezado o campo de la siguiente capacidad y lo rompe en la versión que la introduce.101Al reenviar a un proveedor ascendente con formato Anthropic, pase encabezados de solicitud `anthropic-*` y campos de cuerpo de solicitud sin cambios en lugar de permitir los que ve hoy. Una puerta de enlace fijada a una lista observada elimina el encabezado o campo de la siguiente capacidad y lo rompe en la versión que la introduce.

100 102 

101La excepción es un proveedor ascendente que no es Anthropic, como Bedrock o Vertex, donde cerrar la diferencia de esquema es el trabajo de la puerta de enlace; consulte [paso de características](#feature-pass-through).103La excepción es un proveedor ascendente que no es Anthropic, como Bedrock o Agent Platform, donde cerrar la diferencia de esquema es el trabajo de la puerta de enlace; consulte [paso de características](#feature-pass-through).

102 104 

103<h2 id="system-prompt-attribution-block">105<h2 id="system-prompt-attribution-block">

104 Bloque de atribución del mensaje del sistema106 Bloque de atribución del mensaje del sistema


112 Paso de características114 Paso de características

113</h2>115</h2>

114 116 

115Claude Code trata una puerta de enlace `ANTHROPIC_BASE_URL` como un punto final con formato Anthropic y le envía los encabezados beta y campos de cuerpo de solicitud que envía a `api.anthropic.com`, excepto un pequeño conjunto de diagnósticos y valores predeterminados reservados para conexiones directas.117Claude Code trata una puerta de enlace `ANTHROPIC_BASE_URL` como un punto final con formato Anthropic y le envía los encabezados beta y campos de cuerpo de solicitud que envía a `api.anthropic.com`, excepto un pequeño conjunto de diagnósticos y valores predeterminados reservados para conexiones directas, como el valor predeterminado de transmisión de herramientas de grano fino cubierto a continuación. Ese conjunto varía según la versión, así que no dependa de su contenido.

116 118 

117Las capacidades que agregan campos de cuerpo los emparejan con un encabezado beta, y el par viaja junto. Una puerta de enlace que elimina el encabezado mientras pasa el cuerpo, o reenvía un cuerpo con formato Anthropic a un proveedor ascendente con un esquema diferente, produce errores `400` duros; solo cuando ambas mitades están ausentes juntas la característica se apaga silenciosamente. Una puerta de enlace que reescribe o redacta cuerpos de solicitud para inspección de contenido rompe el emparejamiento de la misma manera que la eliminación, así que inspeccione sin modificar. La tabla señala dónde una característica se desvía del emparejamiento.119Las capacidades que agregan campos de cuerpo los emparejan con un encabezado beta, y el par viaja junto. Una puerta de enlace que elimina el encabezado mientras pasa el cuerpo, o reenvía un cuerpo con formato Anthropic a un proveedor ascendente con un esquema diferente, produce errores `400` duros; solo cuando ambas mitades están ausentes juntas la característica se apaga silenciosamente. Una puerta de enlace que reescribe o redacta cuerpos de solicitud para inspección de contenido rompe el emparejamiento de la misma manera que la eliminación, así que inspeccione sin modificar. La tabla señala dónde una característica se desvía del emparejamiento.

118 120 


124| [Gestión de contexto](https://platform.claude.com/docs/en/build-with-claude/context-management) | El encabezado beta de gestión de contexto se empareja con el campo de cuerpo `context_management` | `400` con `Extra inputs are not permitted`. Común cuando una puerta de enlace acepta solicitudes con formato Anthropic pero las reenvía a Bedrock | Reenvíe ambos, o [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/es/env-vars) |126| [Gestión de contexto](https://platform.claude.com/docs/en/build-with-claude/context-management) | El encabezado beta de gestión de contexto se empareja con el campo de cuerpo `context_management` | `400` con `Extra inputs are not permitted`. Común cuando una puerta de enlace acepta solicitudes con formato Anthropic pero las reenvía a Bedrock | Reenvíe ambos, o [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/es/env-vars) |

125| [Contexto extendido](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) y [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Solo encabezados beta, sin campo de cuerpo | Silenciosamente no disponible cuando se elimina el encabezado; el proveedor ascendente nunca ve la solicitud de capacidad | Reenvíe `anthropic-beta` textualmente |127| [Contexto extendido](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) y [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Solo encabezados beta, sin campo de cuerpo | Silenciosamente no disponible cuando se elimina el encabezado; el proveedor ascendente nunca ve la solicitud de capacidad | Reenvíe `anthropic-beta` textualmente |

126| Campos de [herramienta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) beta | Los encabezados beta relacionados con herramientas se emparejan con campos de esquema de herramienta como `strict` y `defer_loading` | `400` nombrando el campo de esquema de herramienta no reconocido cuando el cuerpo pasa sin su encabezado | Reenvíe ambos, o `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` |128| Campos de [herramienta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) beta | Los encabezados beta relacionados con herramientas se emparejan con campos de esquema de herramienta como `strict` y `defer_loading` | `400` nombrando el campo de esquema de herramienta no reconocido cuando el cuerpo pasa sin su encabezado | Reenvíe ambos, o `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` |

127| [Esfuerzo](https://platform.claude.com/docs/en/build-with-claude/effort) y [salidas estructuradas](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | El campo de cuerpo `output_config` lleva esfuerzo, formato de salida estructurada y configuración de presupuesto de tarea; cada uno se empareja con su propio encabezado beta | `400` nombrando `output_config`, a menudo `Extra inputs are not permitted`, en proveedores ascendentes Bedrock y Vertex | Reenvíe el campo y sus encabezados juntos |129| [Esfuerzo](https://platform.claude.com/docs/en/build-with-claude/effort) y [salidas estructuradas](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | El campo de cuerpo `output_config` lleva esfuerzo, formato de salida estructurada y configuración de presupuesto de tarea; cada uno se empareja con su propio encabezado beta | `400` nombrando `output_config`, a menudo `Extra inputs are not permitted`, en proveedores ascendentes Bedrock y Agent Platform | Reenvíe el campo y sus encabezados juntos |

128| [Conteo de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Sin emparejamiento beta; utiliza el punto final `count_tokens` | Claude Code vuelve a estimar el uso de contexto localmente | Exponga el punto final si desea conteos exactos |130| [Conteo de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Sin emparejamiento beta; utiliza el punto final `count_tokens` | Claude Code vuelve a estimar el uso de contexto localmente | Exponga el punto final si desea conteos exactos |

129 131 

130Las [variables](/es/model-config) `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` declaran capacidades de modelo solo en las configuraciones del proveedor: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, y [`CLAUDE_CODE_USE_MANTLE`](/es/amazon-bedrock#use-the-mantle-endpoint). No tienen efecto detrás de una puerta de enlace `ANTHROPIC_BASE_URL`.132Las [variables](/es/model-config) `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` declaran capacidades de modelo solo en las configuraciones del proveedor: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, y [`CLAUDE_CODE_USE_MANTLE`](/es/amazon-bedrock#use-the-mantle-endpoint). No tienen efecto detrás de una puerta de enlace `ANTHROPIC_BASE_URL`.


182{184{

183 "data": [185 "data": [

184 { "id": "claude-sonnet-4-6", "display_name": "Claude Sonnet 4.6" },186 { "id": "claude-sonnet-4-6", "display_name": "Claude Sonnet 4.6" },

185 { "id": "claude-opus-4-7" }187 { "id": "claude-opus-4-8" }

186 ]188 ]

187}189}

188```190```


191 Entradas del selector y almacenamiento en caché193 Entradas del selector y almacenamiento en caché

192</h3>194</h3>

193 195 

194El selector es la lista de modelos interactiva que se abre cuando un desarrollador ejecuta `/model` en Claude Code. Cada entrada descubierta está etiquetada como "Desde puerta de enlace" y utiliza `display_name` cuando se proporciona. Una ID descubierta se omite solo cuando coincide exactamente con una fila ya en el selector, o cuando tanto la ID descubierta como la existente se resuelven en [Fable](/es/model-config#work-with-fable-5). Las filas integradas se clave en alias como `sonnet`, por lo que una ID descubierta como `claude-sonnet-4-6` agrega su propia fila "Desde puerta de enlace" junto a la entrada integrada. La [configuración administrada `availableModels`](/es/settings#available-settings) limita lo que el descubrimiento puede agregar.196El selector es la lista de modelos interactiva que se abre cuando un desarrollador ejecuta `/model` en Claude Code. Cada entrada descubierta está etiquetada como "Desde puerta de enlace" y utiliza `display_name` cuando se proporciona. La [configuración administrada `availableModels`](/es/settings#available-settings) limita lo que el descubrimiento puede agregar.

197 

198Una ID descubierta se omite solo cuando coincide exactamente con una fila ya en el selector, o cuando tanto la ID descubierta como la existente se resuelven en [Fable](/es/model-config#work-with-fable-5). Las filas integradas se clave en alias como `sonnet`, por lo que una ID descubierta como `claude-sonnet-4-6` agrega su propia fila "Desde puerta de enlace" junto a la entrada integrada en lugar de reemplazarla.

195 199 

196Los resultados se almacenan en caché en `~/.claude/cache/gateway-models.json`, o `%USERPROFILE%\.claude\cache\gateway-models.json` en Windows, y se actualizan en cada inicio. Si la solicitud falla o la puerta de enlace no implementa `/v1/models`, el selector vuelve a la lista en caché del inicio anterior o a la lista de modelos integrada. Si su puerta de enlace sirve modelos de Claude bajo alias que no coinciden con el filtro de descubrimiento, los desarrolladores pueden agregar esos alias manualmente con las [variables de configuración de modelo](/es/model-config).200Los resultados se almacenan en caché en `~/.claude/cache/gateway-models.json`, o `%USERPROFILE%\.claude\cache\gateway-models.json` en Windows, y se actualizan en cada inicio. Si la solicitud falla o la puerta de enlace no implementa `/v1/models`, el selector vuelve a la lista en caché del inicio anterior o a la lista de modelos integrada. Si su puerta de enlace sirve modelos de Claude bajo alias que no coinciden con el filtro de descubrimiento, los desarrolladores pueden agregar esos alias manualmente con las [variables de configuración de modelo](/es/model-config).

197 201 


201 205 

202Para el resto del conjunto de documentación de puerta de enlace y las referencias de API subyacentes:206Para el resto del conjunto de documentación de puerta de enlace y las referencias de API subyacentes:

203 207 

204* [Descripción general de puertas de enlace LLM](/es/llm-gateway): qué es una puerta de enlace y cómo interactúa con suscripciones de claude.ai208* [Descripción general de puertas de enlace](/es/gateways): qué es una puerta de enlace y cómo elegir entre la puerta de enlace de aplicaciones Claude y otro producto

209* [Otras puertas de enlace LLM](/es/llm-gateway): cómo implementar una puerta de enlace que su organización ejecuta y cómo interactúa con suscripciones de claude.ai

205* [Implementar una puerta de enlace LLM para su organización](/es/llm-gateway-rollout): la lista de verificación de administrador que utiliza este contrato210* [Implementar una puerta de enlace LLM para su organización](/es/llm-gateway-rollout): la lista de verificación de administrador que utiliza este contrato

206* [Conectar Claude Code a una puerta de enlace LLM](/es/llm-gateway-connect): configuración por desarrollador y la tabla de solución de problemas211* [Conectar Claude Code a una puerta de enlace LLM](/es/llm-gateway-connect): configuración por desarrollador y la tabla de solución de problemas

207* [Referencia de encabezados beta](https://platform.claude.com/docs/en/api/beta-headers): el conjunto actual de valores `anthropic-beta`212* [Referencia de encabezados beta](https://platform.claude.com/docs/en/api/beta-headers): el conjunto actual de valores `anthropic-beta`

Details

22* Una puerta de enlace implementada en su infraestructura, sirviendo HTTPS en la dirección exacta que distribuirá a los desarrolladores, no una dirección que redirija a ella, y configurada para enrutar nombres de modelos Claude a su proveedor22* Una puerta de enlace implementada en su infraestructura, sirviendo HTTPS en la dirección exacta que distribuirá a los desarrolladores, no una dirección que redirija a ella, y configurada para enrutar nombres de modelos Claude a su proveedor

23* Una credencial de proveedor para que la puerta de enlace reenvíe con:23* Una credencial de proveedor para que la puerta de enlace reenvíe con:

24 * Para la API de Anthropic: una clave API de la [Consola Claude](https://platform.claude.com/settings/keys)24 * Para la API de Anthropic: una clave API de la [Consola Claude](https://platform.claude.com/settings/keys)

25 * Para un proveedor en la nube: credenciales en la nube con acceso a modelos. Consulte los requisitos previos en la página [Amazon Bedrock](/es/amazon-bedrock#prerequisites), [Google Vertex AI](/es/google-vertex-ai#prerequisites) o [Microsoft Foundry](/es/microsoft-foundry#prerequisites)25 * Para un proveedor en la nube: credenciales en la nube con acceso a modelos. Consulte los requisitos previos en la página [Amazon Bedrock](/es/amazon-bedrock#prerequisites), [Google Cloud's Agent Platform](/es/google-vertex-ai#prerequisites) o [Microsoft Foundry](/es/microsoft-foundry#prerequisites)

26* Una forma de entregar archivos de configuración a máquinas de desarrolladores, como MDM o gestión de configuración26* Una forma de entregar archivos de configuración a máquinas de desarrolladores, como MDM o gestión de configuración

27 * Si aún no tiene una, [cómo llegan las configuraciones a los dispositivos](/es/admin-setup#decide-how-settings-reach-devices) compara las opciones27 * Si aún no tiene una, [cómo llegan las configuraciones a los dispositivos](/es/admin-setup#decide-how-settings-reach-devices) compara las opciones

28 28 


180El mismo conjunto de variables se aplica cualquiera que sea el camino que elija. La mayoría de implementaciones solo necesitan `ANTHROPIC_BASE_URL` y una credencial; incluya las filas condicionales cuando su configuración de puerta de enlace lo requiera.180El mismo conjunto de variables se aplica cualquiera que sea el camino que elija. La mayoría de implementaciones solo necesitan `ANTHROPIC_BASE_URL` y una credencial; incluya las filas condicionales cuando su configuración de puerta de enlace lo requiera.

181 181 

182| Variable o configuración | Qué hace | Incluir cuando |182| Variable o configuración | Qué hace | Incluir cuando |

183| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |183| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

184| `ANTHROPIC_BASE_URL` | Envía las solicitudes de API de Claude Code a la puerta de enlace en lugar de `api.anthropic.com` | Siempre |184| `ANTHROPIC_BASE_URL` | Envía las solicitudes de API de Claude Code a la puerta de enlace en lugar de `api.anthropic.com` | Siempre |

185| `apiKeyHelper`, o una credencial en `ANTHROPIC_AUTH_TOKEN` o `ANTHROPIC_API_KEY` | Autentica cada solicitud a la puerta de enlace. El ayudante ejecuta un comando para obtener la clave; las variables contienen una clave estática, enviada como `Authorization: Bearer` y `x-api-key` respectivamente | Siempre; uno de los tres |185| `apiKeyHelper`, o una credencial en `ANTHROPIC_AUTH_TOKEN` o `ANTHROPIC_API_KEY` | Autentica cada solicitud a la puerta de enlace. El ayudante ejecuta un comando para obtener la clave; las variables contienen una clave estática, enviada como `Authorization: Bearer` y `x-api-key` respectivamente | Siempre; uno de los tres |

186| `ANTHROPIC_CUSTOM_HEADERS` | Añade encabezados HTTP adicionales a cada solicitud de API | Su puerta de enlace requiere un encabezado de inquilino o enrutamiento en cada solicitud |186| `ANTHROPIC_CUSTOM_HEADERS` | Añade encabezados HTTP adicionales a cada solicitud de API | Su puerta de enlace requiere un encabezado de inquilino o enrutamiento en cada solicitud |

187| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Consulta `/v1/models` de la puerta de enlace al inicio y añade los nombres devueltos al selector `/model` | Su puerta de enlace sirve `/v1/models` y desea que los selectores de los desarrolladores se rellenen desde ella |187| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Consulta `/v1/models` de la puerta de enlace al inicio y añade los nombres devueltos al selector `/model` | Su puerta de enlace sirve `/v1/models` y desea que los selectores de los desarrolladores se rellenen desde ella |

188| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Detiene el envío de Claude Code de encabezados de capacidad de pre-lanzamiento y campos de cuerpo | Su puerta de enlace reenvía a un ascendente Bedrock o Vertex que rechaza campos beta; consulte [Requisitos de la puerta de enlace](#gateway-requirements) |188| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Detiene el envío de Claude Code de encabezados de capacidad de pre-lanzamiento y campos de cuerpo | Su puerta de enlace reenvía a un ascendente Bedrock o Vertex que rechaza campos beta; consulte [Requisitos de la puerta de enlace](#gateway-requirements) |

189| `ANTHROPIC_MODEL` o [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/es/model-config) | Establece qué nombre de modelo Claude Code solicita para la sesión principal y para el tráfico de fondo | Su puerta de enlace enruta nombres de modelos que no coinciden con los valores predeterminados de Claude Code, o enruta [funcionalidad de fondo](/es/costs#background-token-usage) a un modelo diferente. Enrute tanto los nombres de anulación como los nombres predeterminados de Claude Code en la puerta de enlace, ya que algunas sub-llamadas pueden solicitar el nombre predeterminado independientemente de la anulación |189| `ANTHROPIC_MODEL` o [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/es/model-config) | Establece qué nombre de modelo Claude Code solicita para la sesión principal y para el tráfico de fondo | Su puerta de enlace enruta nombres de modelos que no coinciden con los valores predeterminados de Claude Code, o enruta [funcionalidad de fondo](/es/costs#background-token-usage) a un modelo diferente. Enrute tanto los nombres de anulación como los nombres predeterminados de Claude Code en la puerta de enlace, ya que algunas sub-llamadas pueden solicitar el nombre predeterminado independientemente de la anulación; la [configuración de modelos](/es/model-config) cubre qué modelo usa cada parte de una sesión |

190| `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, `ANTHROPIC_FOUNDRY_BASE_URL`, o `ANTHROPIC_AWS_BASE_URL` con las [variables para ese proveedor](/es/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway) | Apunte Claude Code a la puerta de enlace a través de una URL base específica del proveedor. Bedrock y Vertex también cambian al formato de solicitud nativo de esos proveedores | Su puerta de enlace está frente a Bedrock, Vertex, Foundry o la Plataforma Claude en AWS; consulte [Formatos de API](/es/llm-gateway-protocol#api-formats) |190| `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, `ANTHROPIC_FOUNDRY_BASE_URL`, o `ANTHROPIC_AWS_BASE_URL` con las [variables para ese proveedor](/es/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway) | Apunte Claude Code a la puerta de enlace a través de una URL base específica del proveedor. Bedrock y Vertex también cambian al formato de solicitud nativo de esos proveedores | Su puerta de enlace está frente a Bedrock, Vertex, Foundry o la Plataforma Claude en AWS; consulte [Formatos de API](/es/llm-gateway-protocol#api-formats) |

191 191 

192<h4 id="distribute-through-managed-settings">192<h4 id="distribute-through-managed-settings">

mcp.md +50 −20

Details

111 111 

112Los servidores stdio se ejecutan como procesos locales en su máquina. Son ideales para herramientas que necesitan acceso directo al sistema o scripts personalizados.112Los servidores stdio se ejecutan como procesos locales en su máquina. Son ideales para herramientas que necesitan acceso directo al sistema o scripts personalizados.

113 113 

114Claude 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. Su servidor también puede llamar a la solicitud MCP `roots/list`, que devuelve el directorio desde el cual se lanzó Claude Code.114Claude 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.

115 

116Su servidor también puede llamar a la solicitud MCP `roots/list`, que devuelve el directorio desde el cual se lanzó Claude Code.

115 117 

116Esta 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.118Esta 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.

117 119 


176 178 

177Los servidores con alcance de proyecto desde `.mcp.json` que están esperando su aprobación aparecen en `claude mcp list` como `⏸ Pending approval`. Ejecute `claude` de forma interactiva para revisar y aprobar. `claude mcp get <name>` muestra servidores pendientes como `⏸ Pending approval` y servidores rechazados como `✗ Rejected`.179Los servidores con alcance de proyecto desde `.mcp.json` que están esperando su aprobación aparecen en `claude mcp list` como `⏸ Pending approval`. Ejecute `claude` de forma interactiva para revisar y aprobar. `claude mcp get <name>` muestra servidores pendientes como `⏸ Pending approval` y servidores rechazados como `✗ Rejected`.

178 180 

181A 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` o `enabledMcpjsonServers`](/es/settings#available-settings) 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.

182 

183Las aprobaciones de estas fuentes aún se aplican en una carpeta no confiable:

184 

185* su archivo `~/.claude/settings.json` del usuario

186* configuración gestionada

187* configuración pasada con `--settings`

188* `.claude/settings.local.json`, siempre que git no lo rastree

189 

190Una entrada `disabledMcpjsonServers` en cualquier archivo de configuración aún rechaza el servidor.

191 

179El 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.192El 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.

180 193 

181Si su solicitud necesita herramientas de un servidor que aún se está conectando en segundo plano, Claude espera a que ese servidor continúe. Con [búsqueda de herramientas](#scale-with-mcp-tool-search) habilitada, que es la predeterminada, la espera ocurre dentro de la llamada `ToolSearch`. En configuraciones sin búsqueda de herramientas, como Vertex AI, un `ANTHROPIC_BASE_URL` personalizado, o `ENABLE_TOOL_SEARCH=false`, Claude utiliza la herramienta `WaitForMcpServers` en su lugar.194Si su solicitud necesita herramientas de un servidor que aún se está conectando en segundo plano, Claude espera a que ese servidor continúe. Con [búsqueda de herramientas](#scale-with-mcp-tool-search) habilitada, que es la predeterminada, la espera ocurre dentro de la llamada `ToolSearch`. En configuraciones sin búsqueda de herramientas, como Vertex AI, un `ANTHROPIC_BASE_URL` personalizado, o `ENABLE_TOOL_SEARCH=false`, Claude utiliza la herramienta `WaitForMcpServers` en su lugar.


208 Consejos:221 Consejos:

209 222 

210 * Use la bandera `--scope` para especificar dónde se almacena la configuración:223 * Use la bandera `--scope` para especificar dónde se almacena la configuración:

211 * `local` (predeterminado): Disponible solo para usted en el proyecto actual (se llamaba `project` en versiones anteriores)224 * `local` (predeterminado): Disponible solo para usted en el proyecto actual. Las versiones anteriores llamaban a este alcance `project`

212 * `project`: Compartido con todos en el proyecto a través del archivo `.mcp.json`225 * `project`: Compartido con todos en el proyecto a través del archivo `.mcp.json`

213 * `user`: Disponible para usted en todos los proyectos (se llamaba `global` en versiones anteriores)226 * `user`: Disponible para usted en todos los proyectos. Las versiones anteriores llamaban a este alcance `global`

214 * Establezca variables de entorno con banderas `--env` (por ejemplo, `--env KEY=value`)227 * Establezca variables de entorno con banderas `--env` (por ejemplo, `--env KEY=value`)

215 * 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)228 * 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)

216 * 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 servidor229 * 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 servidor

217 * Claude Code mostrará una advertencia cuando la salida de la herramienta MCP exceda 10,000 tokens. Para aumentar este límite, establezca la variable de entorno `MAX_MCP_OUTPUT_TOKENS` (por ejemplo, `MAX_MCP_OUTPUT_TOKENS=50000`)230 * Claude Code mostrará una advertencia cuando la salida de la herramienta MCP exceda 10,000 tokens. Para aumentar este límite, establezca la variable de entorno `MAX_MCP_OUTPUT_TOKENS` (por ejemplo, `MAX_MCP_OUTPUT_TOKENS=50000`)

218 * Use `/mcp` para autenticarse con servidores remotos que requieren autenticación OAuth 2.0231 * Use `/mcp` para autenticarse con servidores remotos que requieren autenticación OAuth 2.0

219</Tip>232</Tip>

220 233 

221El `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. {/* min-version: 2.1.162 */}Antes de v2.1.162, los valores por debajo de 1000 se redondeaban hacia abajo a un segundo en su lugar. Para servidores HTTP y SSE, el presupuesto de primer byte por solicitud de obtención tiene un mínimo de 60 segundos.234El `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. {/* min-version: 2.1.162 */}Antes de v2.1.162, los valores por debajo de 1000 se redondeaban hacia abajo a un segundo en su lugar.

235 

236Para servidores HTTP y SSE, el presupuesto de primer byte por solicitud de obtención tiene un mínimo de 60 segundos.

222 237 

223A partir de v2.1.187, una llamada de herramienta a un servidor HTTP remoto, SSE, WebSocket, o [conector de claude.ai](#use-mcp-servers-from-claude-ai) que no envía respuesta ni notificación de progreso durante 5 minutos se cancela con un error en lugar de esperar el límite de reloj de pared. Establezca la variable de entorno [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/es/env-vars) en milisegundos para cambiar la ventana de inactividad, o establézcala en `0` para desactivar la verificación. Los servidores stdio son procesos locales y no están sujetos al tiempo de espera de inactividad.238A partir de v2.1.187, una llamada de herramienta a un servidor HTTP remoto, SSE, WebSocket, o [conector de claude.ai](#use-mcp-servers-from-claude-ai) que no envía respuesta ni notificación de progreso durante 5 minutos se cancela con un error en lugar de esperar el límite de reloj de pared. Establezca la variable de entorno [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/es/env-vars) en milisegundos para cambiar la ventana de inactividad, o establézcala en `0` para desactivar la verificación. Los servidores stdio son procesos locales y no están sujetos al tiempo de espera de inactividad.

224 239 


233* Los plugins definen servidores MCP en `.mcp.json` en la raíz del plugin o en línea en `plugin.json`248* Los plugins definen servidores MCP en `.mcp.json` en la raíz del plugin o en línea en `plugin.json`

234* Cuando un plugin está habilitado, sus servidores MCP se inician automáticamente249* Cuando un plugin está habilitado, sus servidores MCP se inician automáticamente

235* Las herramientas MCP del plugin aparecen junto a las herramientas MCP configuradas manualmente250* Las herramientas MCP del plugin aparecen junto a las herramientas MCP configuradas manualmente

236* Los servidores de plugins se gestionan a través de la instalación de plugins (no mediante comandos `/mcp`)251* Los servidores de plugins se gestionan a través de la instalación de plugins, no mediante comandos `/mcp`

237 252 

238**Ejemplo de configuración MCP de plugin**:253**Ejemplo de configuración MCP de plugin**:

239 254 


272* **Ciclo de vida automático**: Al iniciar la sesión, los servidores de los plugins habilitados se conectan automáticamente. Si habilita o deshabilita un plugin durante una sesión, ejecute `/reload-plugins` para conectar o desconectar sus servidores MCP287* **Ciclo de vida automático**: Al iniciar la sesión, los servidores de los plugins habilitados se conectan automáticamente. Si habilita o deshabilita un plugin durante una sesión, ejecute `/reload-plugins` para conectar o desconectar sus servidores MCP

273* **Variables de entorno**: Use `${CLAUDE_PLUGIN_ROOT}` para archivos agrupados en el plugin, `${CLAUDE_PLUGIN_DATA}` para [estado persistente](/es/plugins-reference#persistent-data-directory) que sobrevive a las actualizaciones de plugins, y `${CLAUDE_PROJECT_DIR}` para la raíz del proyecto estable288* **Variables de entorno**: Use `${CLAUDE_PLUGIN_ROOT}` para archivos agrupados en el plugin, `${CLAUDE_PLUGIN_DATA}` para [estado persistente](/es/plugins-reference#persistent-data-directory) que sobrevive a las actualizaciones de plugins, y `${CLAUDE_PROJECT_DIR}` para la raíz del proyecto estable

274* **Acceso a variables de entorno del usuario**: Acceso a las mismas variables de entorno que los servidores configurados manualmente289* **Acceso a variables de entorno del usuario**: Acceso a las mismas variables de entorno que los servidores configurados manualmente

275* **Múltiples tipos de transporte**: Soporte para transportes stdio, SSE, HTTP y WebSocket (el soporte de transporte puede variar según el servidor)290* **Múltiples tipos de transporte**: Soporte para transportes stdio, SSE, HTTP y WebSocket, aunque el soporte de transporte puede variar según el servidor

276 291 

277**Visualización de servidores MCP de plugins**:292**Visualización de servidores MCP de plugins**:

278 293 


408 423 

409**Sintaxis soportada:**424**Sintaxis soportada:**

410 425 

411* `${VAR}` - Se expande al valor de la variable de entorno `VAR`426* `${VAR}`: se expande al valor de la variable de entorno `VAR`

412* `${VAR:-default}` - Se expande a `VAR` si está establecida, de lo contrario usa `default`427* `${VAR:-default}`: se expande a `VAR` si está establecida, de lo contrario usa `default`

413 428 

414**Ubicaciones de expansión:**429**Ubicaciones de expansión:**

415Las variables de entorno se pueden expandir en:430Las variables de entorno se pueden expandir en:

416 431 

417* `command` - La ruta del ejecutable del servidor432* `command`: la ruta del ejecutable del servidor

418* `args` - Argumentos de línea de comandos433* `args`: argumentos de línea de comandos

419* `env` - Variables de entorno pasadas al servidor434* `env`: variables de entorno pasadas al servidor

420* `url` - Para tipos de servidor HTTP435* `url`: para tipos de servidor HTTP

421* `headers` - Para autenticación de servidor HTTP436* `headers`: para autenticación de servidor HTTP

422 437 

423**Ejemplo con expansión de variables:**438**Ejemplo con expansión de variables:**

424 439 


524 539 

525Muchos servidores MCP basados en la nube requieren autenticación. Claude Code admite OAuth 2.0 para conexiones seguras.540Muchos servidores MCP basados en la nube requieren autenticación. Claude Code admite OAuth 2.0 para conexiones seguras.

526 541 

527Claude Code marca un servidor remoto como que requiere autenticación cuando el servidor responde con `401 Unauthorized` o `403 Forbidden`. Cualquiera de estos códigos de estado marca el servidor en `/mcp` para que pueda completar el flujo de OAuth. Un servidor personalizado que devuelve un encabezado `WWW-Authenticate` que apunta a su servidor de autorización obtiene el mismo descubrimiento automático que cualquier otro servidor remoto.542Claude Code marca un servidor remoto como que requiere autenticación cuando el servidor responde con `401 Unauthorized` o `403 Forbidden`. Cualquiera de estos códigos de estado marca el servidor en `/mcp` para que pueda completar el flujo de OAuth.

543 

544A partir de v2.1.195, cuando una actualización de token falla porque el servidor rechaza el token de actualización almacenado, Claude Code muestra inmediatamente un aviso que apunta a `/mcp`. El menú del servidor conectado allí ofrece Re-authenticate, para que pueda iniciar sesión nuevamente antes de que la siguiente llamada de herramienta falle.

545 

546Un servidor personalizado que devuelve un encabezado `WWW-Authenticate` que apunta a su servidor de autorización obtiene el mismo descubrimiento automático que cualquier otro servidor remoto.

547 

548A partir de v2.1.193, Claude 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.

549 

550En 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>`.

528 551 

529Si 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.552Si 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.

530 553 


710 733 

711`oauth.scopes` tiene precedencia sobre tanto `authServerMetadataUrl` como los alcances que el servidor descubre en `/.well-known`. Déjelo sin establecer para permitir que el servidor MCP determine el conjunto de alcances solicitados.734`oauth.scopes` tiene precedencia sobre tanto `authServerMetadataUrl` como los alcances que el servidor descubre en `/.well-known`. Déjelo sin establecer para permitir que el servidor MCP determine el conjunto de alcances solicitados.

712 735 

736A partir de v2.1.196, cuando `oauth.scopes` no está establecido, Claude Code solicita el alcance proporcionado por el encabezado `WWW-Authenticate` del servidor o sus metadatos de recursos protegidos, y no envía ningún parámetro `scope` cuando ninguno proporciona uno. Ya no solicita el catálogo completo de `scopes_supported` de los metadatos del servidor de autorización descubiertos automáticamente. Solicitar ese catálogo hizo que los proveedores de identidad que anuncian alcances solo para administrador o de plantilla rechazaran la solicitud de autorización con un error `invalid_scope`. Los metadatos obtenidos de un `authServerMetadataUrl` configurado aún proporcionan su `scopes_supported` como los alcances solicitados.

737 

713Si 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.738Si 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.

714 739 

715Si 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.740Si 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.


718 Usar encabezados dinámicos para autenticación personalizada743 Usar encabezados dinámicos para autenticación personalizada

719</h3>744</h3>

720 745 

721Si su servidor MCP usa un esquema de autenticación diferente a OAuth (como Kerberos, tokens de corta duración o un SSO interno), use `headersHelper` para generar encabezados de solicitud en el momento de la conexión. Claude Code ejecuta el comando y fusiona su salida en los encabezados de conexión.746Si su servidor MCP usa un esquema de autenticación diferente a OAuth, como Kerberos, tokens de corta duración o un SSO interno, use `headersHelper` para generar encabezados de solicitud en el momento de la conexión. Claude Code ejecuta el comando y fusiona su salida en los encabezados de conexión.

722 747 

723```json theme={null}748```json theme={null}

724{749{


752* El comando se ejecuta en un shell con un tiempo de espera de 10 segundos777* El comando se ejecuta en un shell con un tiempo de espera de 10 segundos

753* Los encabezados dinámicos anulan cualquier `headers` estático con el mismo nombre778* Los encabezados dinámicos anulan cualquier `headers` estático con el mismo nombre

754 779 

755El ayudante se ejecuta nuevamente en cada conexión (al iniciar la sesión y al reconectar). No hay almacenamiento en caché, por lo que su script es responsable de cualquier reutilización de tokens.780El ayudante se ejecuta nuevamente en cada conexión, al iniciar la sesión y al reconectar. No hay almacenamiento en caché, por lo que su script es responsable de cualquier reutilización de tokens.

781 

782A partir de v2.1.193, si una llamada de herramienta devuelve `401 Unauthorized` o `403 Forbidden`, Claude Code automáticamente vuelve a ejecutar el ayudante, se reconecta con los encabezados frescos, e intenta la llamada una vez más. Claude Code marca el servidor como que necesita autenticación en `/mcp` solo si ese reintento también falla.

756 783 

757Claude Code establece estas variables de entorno al ejecutar el ayudante:784Claude Code establece estas variables de entorno al ejecutar el ayudante:

758 785 

759| Variable | Valor |786| Variable | Valor |

760| :---------------------------- | :------------------------- |787| :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------- |

761| `CLAUDE_CODE_MCP_SERVER_NAME` | el nombre del servidor MCP |788| `CLAUDE_CODE_MCP_SERVER_NAME` | el nombre del servidor MCP |

762| `CLAUDE_CODE_MCP_SERVER_URL` | la URL del servidor MCP |789| `CLAUDE_CODE_MCP_SERVER_URL` | la URL del servidor MCP |

790| `CLAUDE_PLUGIN_ROOT` | el directorio raíz del plugin. Se establece solo cuando un [plugin](/es/plugins-reference#mcp-servers) proporciona el servidor |

763 791 

764Use estas para escribir un único script de ayudante que sirva múltiples servidores MCP.792Use estas para escribir un único script de ayudante que sirva múltiples servidores MCP.

765 793 

794Para un servidor proporcionado por un plugin, el ayudante también se ejecuta con su directorio de trabajo establecido en la raíz del plugin, por lo que una ruta `headersHelper` relativa se resuelve dentro del directorio del plugin en lugar de contra el directorio de trabajo de la sesión. Requiere Claude Code v2.1.195 o posterior.

795 

766<Note>796<Note>

767 `headersHelper` ejecuta comandos de shell arbitrarios. Cuando se define en alcance de proyecto o local, solo se ejecuta después de que acepte el diálogo de confianza del espacio de trabajo.797 `headersHelper` ejecuta comandos de shell arbitrarios. Cuando se define en alcance de proyecto o local, solo se ejecuta después de que acepte el diálogo de confianza del espacio de trabajo.

768</Note>798</Note>


958 988 

959 * El servidor proporciona acceso a las herramientas de Claude como View, Edit, LS, etc.989 * El servidor proporciona acceso a las herramientas de Claude como View, Edit, LS, etc.

960 * En Claude Desktop, intente pedirle a Claude que lea archivos en un directorio, haga ediciones y más.990 * En Claude Desktop, intente pedirle a Claude que lea archivos en un directorio, haga ediciones y más.

961 * Tenga en cuenta que este servidor MCP solo expone las herramientas de Claude Code a su cliente MCP, por lo que su propio cliente es responsable de implementar la confirmación del usuario para llamadas de herramientas individuales.991 * Este servidor MCP solo expone las herramientas de Claude Code a su cliente MCP, por lo que su propio cliente es responsable de implementar la confirmación del usuario para llamadas de herramientas individuales.

962</Tip>992</Tip>

963 993 

964<h2 id="mcp-output-limits-and-warnings">994<h2 id="mcp-output-limits-and-warnings">


1199 * Las indicaciones MCP se descubren dinámicamente desde servidores conectados1229 * Las indicaciones MCP se descubren dinámicamente desde servidores conectados

1200 * Los argumentos se analizan basándose en los parámetros definidos de la indicación1230 * Los argumentos se analizan basándose en los parámetros definidos de la indicación

1201 * Los resultados de la indicación se inyectan directamente en la conversación1231 * Los resultados de la indicación se inyectan directamente en la conversación

1202 * Los nombres de servidor e indicación se normalizan (los espacios se convierten en guiones bajos)1232 * Los nombres de servidor e indicación se normalizan, con espacios convertidos en guiones bajos

1203</Tip>1233</Tip>

1204 1234 

1205<h2 id="managed-mcp-configuration">1235<h2 id="managed-mcp-configuration">

Details

171 171 

172```bash theme={null}172```bash theme={null}

173export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'173export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'

174export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'174export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-5'

175export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'175export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

176```176```

177 177 

model-config.md +47 −34

Details

30Los alias de modelo proporcionan una forma conveniente de seleccionar configuraciones de modelo sin necesidad de recordar números de versión exactos:30Los alias de modelo proporcionan una forma conveniente de seleccionar configuraciones de modelo sin necesidad de recordar números de versión exactos:

31 31 

32| Alias de modelo | Comportamiento |32| Alias de modelo | Comportamiento |

33| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |33| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

34| **`default`** | Valor especial que borra cualquier anulación de modelo y revierte al modelo recomendado para su tipo de cuenta. No es en sí mismo un alias de modelo |34| **`default`** | Valor especial que borra cualquier anulación de modelo y revierte al modelo recomendado para su tipo de cuenta. No es en sí mismo un alias de modelo |

35| **`best`** | Utiliza Fable 5 donde su organización tiene acceso a él, de lo contrario el último modelo Opus |35| **`best`** | Utiliza Fable 5 donde su organización tiene acceso a él, de lo contrario el último modelo Opus |

36| **`fable`** | Utiliza Claude Fable 5 para sus tareas más difíciles y de mayor duración |36| **`fable`** | Utiliza Claude Fable 5 para sus tareas más difíciles y de mayor duración |

37| **`sonnet`** | Utiliza el último modelo Sonnet para tareas de codificación diaria |37| **`sonnet`** | Utiliza el último modelo Sonnet para tareas de codificación diaria |

38| **`opus`** | Utiliza el último modelo Opus para tareas de razonamiento complejo |38| **`opus`** | Utiliza el último modelo Opus para tareas de razonamiento complejo |

39| **`haiku`** | Utiliza el modelo Haiku rápido y eficiente para tareas simples |39| **`haiku`** | Utiliza el modelo Haiku rápido y eficiente para tareas simples |

40| **`sonnet[1m]`** | Utiliza Sonnet con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows#1m-token-context-window) para sesiones largas |40| **`sonnet[1m]`** | Utiliza Sonnet con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows#1m-token-context-window) para sesiones largas. Sin efecto cuando `sonnet` ya se resuelve a Sonnet 5 con su ventana nativa de 1M; detrás de una [puerta de enlace LLM](/es/llm-gateway), selecciona la ventana de 1M para Sonnet 5 |

41| **`opus[1m]`** | Utiliza Opus con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows#1m-token-context-window) para sesiones largas |41| **`opus[1m]`** | Utiliza Opus con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows#1m-token-context-window) para sesiones largas |

42| **`opusplan`** | Modo especial que utiliza `opus` durante Plan Mode, luego cambia a `sonnet` para la ejecución |42| **`opusplan`** | Modo especial que utiliza `opus` durante Plan Mode, luego cambia a `sonnet` para la ejecución |

43 43 

44En la API de Anthropic, `opus` se resuelve a Opus 4.8 y `sonnet` se resuelve a Sonnet 4.6. En [Claude Platform on AWS](/es/claude-platform-on-aws), `opus` se resuelve a Opus 4.7 y `sonnet` se resuelve a Sonnet 4.6. En Bedrock, Vertex y Foundry, `opus` se resuelve a Opus 4.6 y `sonnet` se resuelve a Sonnet 4.5; hay modelos más nuevos disponibles en esos proveedores seleccionando el nombre de modelo completo explícitamente o estableciendo `ANTHROPIC_DEFAULT_OPUS_MODEL` o `ANTHROPIC_DEFAULT_SONNET_MODEL`.44En la API de Anthropic, `opus` se resuelve a Opus 4.8 y `sonnet` se resuelve a Sonnet 5. En [Claude Platform on AWS](/es/claude-platform-on-aws), `opus` se resuelve a Opus 4.7 y `sonnet` se resuelve a Sonnet 4.6. En Bedrock, Vertex y Foundry, `opus` se resuelve a Opus 4.6 y `sonnet` se resuelve a Sonnet 4.5; hay modelos más nuevos disponibles en esos proveedores seleccionando el nombre de modelo completo explícitamente o estableciendo `ANTHROPIC_DEFAULT_OPUS_MODEL` o `ANTHROPIC_DEFAULT_SONNET_MODEL`.

45 45 

46Los alias apuntan a la versión recomendada para su proveedor y se actualizan con el tiempo. Para fijar una versión específica, utilice el nombre de modelo completo (por ejemplo, `claude-opus-4-8`) o establezca la variable de entorno correspondiente como `ANTHROPIC_DEFAULT_OPUS_MODEL`.46Los alias apuntan a la versión recomendada para su proveedor y se actualizan con el tiempo. Para fijar una versión específica, utilice el nombre de modelo completo, por ejemplo `claude-opus-4-8`, o establezca la variable de entorno correspondiente como `ANTHROPIC_DEFAULT_OPUS_MODEL`.

47 47 

48<Note>48<Note>

49 Opus 4.8 requiere Claude Code v2.1.154 o posterior. Ejecute `claude update` para actualizar.49 Sonnet 5 requiere Claude Code v2.1.197 o posterior. Opus 4.8 requiere v2.1.154 o posterior. Ejecute `claude update` para actualizar.

50</Note>50</Note>

51 51 

52<h3 id="work-with-fable-5">52<h3 id="work-with-fable-5">


74 74 

75Puede configurar su modelo de varias formas, enumeradas en orden de prioridad:75Puede configurar su modelo de varias formas, enumeradas en orden de prioridad:

76 76 

771. **Durante la sesión** - Utilice `/model <alias|name>` para cambiar inmediatamente, o ejecute `/model` sin argumentos para abrir el selector. El selector solicita confirmación cuando la conversación tiene salida anterior, ya que la siguiente respuesta relee el historial completo sin contexto en caché771. **Durante la sesión**: utilice `/model <alias|name>` para cambiar inmediatamente, o ejecute `/model` sin argumentos para abrir el selector. El selector solicita confirmación cuando la conversación tiene salida anterior, ya que la siguiente respuesta relee el historial completo sin contexto en caché

782. **Al inicio** - Inicie con `claude --model <alias|name>`782. **Al inicio**: inicie con `claude --model <alias|name>`

793. **Variable de entorno** - Establezca `ANTHROPIC_MODEL=<alias|name>`793. **Variable de entorno**: establezca `ANTHROPIC_MODEL=<alias|name>`

804. **Configuración** - Configure permanentemente en su archivo de configuración utilizando el campo `model`.804. **Configuración**: configure permanentemente en su archivo de configuración utilizando el campo `model`

81 81 

82A partir de v2.1.153, `/model` guarda su selección como predeterminada para nuevas sesiones escribiendo el campo `model` en su configuración de usuario. En el selector:82A partir de v2.1.153, `/model` guarda su selección como predeterminada para nuevas sesiones escribiendo el campo `model` en su configuración de usuario. En el selector:

83 83 


92 92 

93Las sesiones reanudadas iniciadas con `claude --resume`, `--continue`, o el selector `/resume` mantienen el modelo que estaban usando cuando se guardó la transcripción, independientemente de la configuración actual de `model`. Si ese modelo ha sido retirado o es excluido por [`availableModels`](#restrict-model-selection), la sesión cae en el orden de precedencia normal. Esto evita que la selección de `/model` de otra sesión cambie el modelo al reanudar.93Las sesiones reanudadas iniciadas con `claude --resume`, `--continue`, o el selector `/resume` mantienen el modelo que estaban usando cuando se guardó la transcripción, independientemente de la configuración actual de `model`. Si ese modelo ha sido retirado o es excluido por [`availableModels`](#restrict-model-selection), la sesión cae en el orden de precedencia normal. Esto evita que la selección de `/model` de otra sesión cambie el modelo al reanudar.

94 94 

95Un modelo que elige para el nuevo lanzamiento con `--model` o `ANTHROPIC_MODEL` aún tiene prioridad sobre el modelo restaurado. {/* min-version: 2.1.195 */}A partir de v2.1.195, también lo hace una variable de familia [`ANTHROPIC_DEFAULT_OPUS_MODEL`](#environment-variables).

96 

95Cuando el modelo activo al inicio proviene de la configuración del proyecto o administrada en lugar de su propia selección, el encabezado de inicio muestra qué archivo de configuración lo estableció. Ejecute `/model` para anular; la configuración del proyecto o administrada se reaplicará en el siguiente lanzamiento.97Cuando el modelo activo al inicio proviene de la configuración del proyecto o administrada en lugar de su propia selección, el encabezado de inicio muestra qué archivo de configuración lo estableció. Ejecute `/model` para anular; la configuración del proyecto o administrada se reaplicará en el siguiente lanzamiento.

96 98 

97Cuando el modelo solicitado tiene una fecha de retiro programada o se remapea automáticamente a una versión más nueva, Claude Code muestra una advertencia que nombra el modelo solicitado. Las sesiones interactivas la muestran como un aviso de inicio. A partir de v2.1.182, la misma advertencia se escribe en stderr en [modo no interactivo](/es/headless) cuando se utiliza el formato de salida de texto predeterminado. La verificación también cubre un `model` establecido en [frontmatter de subagentos](/es/sub-agents). La advertencia de stderr se suprime para `--output-format json` y `stream-json`; lea el modelo real desde el campo `modelUsage` del [mensaje de resultado](/es/headless#get-structured-output) en su lugar.99Cuando el modelo solicitado tiene una fecha de retiro programada o se remapea automáticamente a una versión más nueva, Claude Code muestra una advertencia que nombra el modelo solicitado. Las sesiones interactivas la muestran como un aviso de inicio. A partir de v2.1.182, la misma advertencia se escribe en stderr en [modo no interactivo](/es/headless) cuando se utiliza el formato de salida de texto predeterminado. La verificación también cubre un `model` establecido en [frontmatter de subagentos](/es/sub-agents). La advertencia de stderr se suprime para `--output-format json` y `stream-json`; lea el modelo real desde el campo `modelUsage` del [mensaje de resultado](/es/headless#get-structured-output) en su lugar.


165 Comportamiento del modelo predeterminado167 Comportamiento del modelo predeterminado

166</h3>168</h3>

167 169 

168La opción Predeterminado en el selector de modelo no se ve afectada por `availableModels` a menos que [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) también esté establecido. Por sí solo, `availableModels` deja Predeterminado disponible, resolviéndose al valor predeterminado de tiempo de ejecución del sistema [basado en el nivel de suscripción del usuario](#default-model-setting). Si el valor predeterminado del nivel es un modelo que tiene la intención de restringir, establezca `enforceAvailableModels` también.170La opción Predeterminado en el selector de modelo no se ve afectada por `availableModels` a menos que [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) también esté establecido. Por sí solo, `availableModels` deja Predeterminado disponible, resolviéndose al [valor predeterminado de tiempo de ejecución del sistema](#default-model-setting) para la cuenta. Si ese valor predeterminado es un modelo que tiene la intención de restringir, establezca `enforceAvailableModels` también.

169 171 

170Un array `availableModels` vacío nunca activa la aplicación del modelo Predeterminado: con `availableModels: []`, las selecciones de modelo nombrado se bloquean pero el modelo Predeterminado para el tipo de cuenta permanece utilizable independientemente de `enforceAvailableModels`.172Un array `availableModels` vacío nunca activa la aplicación del modelo Predeterminado: con `availableModels: []`, las selecciones de modelo nombrado se bloquean pero el modelo Predeterminado para el tipo de cuenta permanece utilizable independientemente de `enforceAvailableModels`.

171 173 


192 Controlar el modelo en el que se ejecutan los usuarios194 Controlar el modelo en el que se ejecutan los usuarios

193</h3>195</h3>

194 196 

195La configuración `model` es una selección inicial, no una aplicación. Establece qué modelo está activo cuando comienza una sesión, pero los usuarios aún pueden abrir `/model` y elegir Predeterminado, que se resuelve al valor predeterminado del sistema para su nivel independientemente de lo que esté configurado en `model`, a menos que [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) lo redirija.197La configuración `model` es una selección inicial, no una aplicación. Establece qué modelo está activo cuando comienza una sesión, pero los usuarios aún pueden abrir `/model` y elegir Predeterminado, que se resuelve al [valor predeterminado de tiempo de ejecución del sistema](#default-model-setting) independientemente de lo que esté configurado en `model`, a menos que [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) lo redirija.

196 198 

197Para controlar completamente la experiencia del modelo, combine estas configuraciones:199Para controlar completamente la experiencia del modelo, combine estas configuraciones:

198 200 


234 Restricciones de modelo de organización236 Restricciones de modelo de organización

235</h3>237</h3>

236 238 

237Utilice el botón de la consola en lugar de `availableModels` cuando sus miembros se autentiquen a través de la API de Anthropic y desee un único cambio en toda la organización sin implementar archivos de configuración. Los administradores de la organización restringen qué modelos pueden ejecutar los miembros deshabilitando modelos individuales en la consola de Claude. Esta restricción se entrega con los derechos de la cuenta cuando Claude Code se autentica, separada de cualquier lista `availableModels` en configuración, y el servidor aplica la misma restricción de forma independiente cuando se crea una sesión. Requiere Claude Code v2.1.187 o posterior.239Los administradores de la organización restringen qué modelos pueden ejecutar los miembros deshabilitando modelos individuales en la consola de Claude. Use este botón de la consola en lugar de `availableModels` cuando sus miembros se autentiquen a través de la API de Anthropic y desee un único cambio en toda la organización sin implementar archivos de configuración. Esta restricción se entrega con los derechos de la cuenta cuando Claude Code se autentica, separada de cualquier lista `availableModels` en configuración, y el servidor aplica la misma restricción de forma independiente cuando se crea una sesión. Requiere Claude Code v2.1.187 o posterior.

238 240 

239Un 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.241Un 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.

240 242 

241Los dos mecanismos se componen: un modelo es seleccionable solo cuando está permitido por `availableModels` y no está restringido por la organización. Las restricciones de la organización se entregan a sesiones en la API de Anthropic y implementaciones de [puerta de enlace LLM](/es/llm-gateway). Las sesiones en Bedrock, Vertex AI, Foundry, y Claude Platform en AWS no las reciben, por lo que use `availableModels` en esos proveedores en su lugar.243Los dos mecanismos se componen: un modelo es seleccionable solo cuando está permitido por `availableModels` y no está restringido por la organización. Las restricciones de la organización se entregan a sesiones en la API de Anthropic e implementaciones de [puerta de enlace LLM](/es/llm-gateway). Las sesiones en Bedrock, Vertex AI, Foundry, y Claude Platform en AWS no las reciben, por lo que use `availableModels` en esos proveedores en su lugar.

242 244 

243<h2 id="special-model-behavior">245<h2 id="special-model-behavior">

244 Comportamiento especial del modelo246 Comportamiento especial del modelo


252 254 

253* **Max, Team Premium, Enterprise de pago por uso y API de Anthropic**: por defecto Opus 4.8255* **Max, Team Premium, Enterprise de pago por uso y API de Anthropic**: por defecto Opus 4.8

254* **Claude Platform en AWS**: por defecto Opus 4.7256* **Claude Platform en AWS**: por defecto Opus 4.7

255* **Pro, Team Standard y asientos de suscripción Enterprise**: por defecto Sonnet 4.6257* **Pro, Team Standard y asientos de suscripción Enterprise**: por defecto Sonnet 5

256* **Bedrock, Vertex y Foundry**: por defecto Sonnet 4.5258* **Bedrock, Vertex y Foundry**: por defecto Sonnet 4.5

257 259 

258Enterprise de pago por uso significa una organización Enterprise facturada por uso en lugar de por asiento de suscripción.260Enterprise de pago por uso significa una organización Enterprise facturada por uso en lugar de por asiento de suscripción.


267 269 

268El alias de modelo `opusplan` proporciona un enfoque híbrido automatizado:270El alias de modelo `opusplan` proporciona un enfoque híbrido automatizado:

269 271 

270* **En Plan Mode** - Utiliza `opus` para razonamiento complejo y decisiones de arquitectura272* **En Plan Mode**: utiliza `opus` para razonamiento complejo y decisiones de arquitectura

271* **En Execution Mode** - Cambia automáticamente a `sonnet` para generación de código e implementación273* **En Execution Mode**: cambia automáticamente a `sonnet` para generación de código e implementación

272 274 

273Esto le da lo mejor de ambos mundos: el razonamiento superior de Opus para la planificación y la eficiencia de Sonnet para la ejecución.275Esto empareja el razonamiento de Opus para la planificación con la eficiencia de Sonnet para la ejecución.

274 276 

275La fase Opus en Plan Mode utiliza la misma ventana de contexto que la configuración del modelo `opus`. En los niveles de suscripción donde Opus se [actualiza automáticamente a contexto de 1M](#extended-context), `opusplan` recibe la actualización en Plan Mode también. Para forzar contexto de 1M para ambas fases cuando no está en un nivel de actualización automática, establezca el modelo en `opusplan[1m]`.277La fase Opus en Plan Mode utiliza la misma ventana de contexto que la configuración del modelo `opus`. En los niveles de suscripción donde Opus se [actualiza automáticamente a contexto de 1M](#extended-context), `opusplan` recibe la actualización en Plan Mode también. Para forzar contexto de 1M para ambas fases cuando no está en un nivel de actualización automática, establezca el modelo en `opusplan[1m]`.

276 278 


296 298 

297```json theme={null}299```json theme={null}

298{300{

299 "fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]301 "fallbackModel": ["claude-sonnet-5", "claude-haiku-4-5"]

300}302}

301```303```

302 304 


368Los niveles de esfuerzo disponibles dependen del modelo. Los modelos no listados aquí no admiten esfuerzo:370Los niveles de esfuerzo disponibles dependen del modelo. Los modelos no listados aquí no admiten esfuerzo:

369 371 

370| Modelo | Niveles |372| Modelo | Niveles |

371| :-------------------- | :-------------------------------------- |373| :---------------------------- | :-------------------------------------- |

372| Fable 5 | `low`, `medium`, `high`, `xhigh`, `max` |374| Fable 5 | `low`, `medium`, `high`, `xhigh`, `max` |

373| Opus 4.8 y Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |375| Sonnet 5, Opus 4.8 y Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

374| Opus 4.6 y Sonnet 4.6 | `low`, `medium`, `high`, `max` |376| Opus 4.6 y Sonnet 4.6 | `low`, `medium`, `high`, `max` |

375 377 

376Si establece un nivel que el modelo activo no admite, Claude Code retrocede al nivel más alto admitido en o por debajo del que estableció. Por ejemplo, `xhigh` se ejecuta como `high` en Opus 4.6.378Si establece un nivel que el modelo activo no admite, Claude Code retrocede al nivel más alto admitido en o por debajo del que estableció. Por ejemplo, `xhigh` se ejecuta como `high` en Opus 4.6.

377 379 

378El esfuerzo predeterminado es `high` en Fable 5, Opus 4.8, Opus 4.6 y Sonnet 4.6, y `xhigh` en Opus 4.7.380El esfuerzo predeterminado es `high` en Fable 5, Sonnet 5, Opus 4.8, Opus 4.6 y Sonnet 4.6, y `xhigh` en Opus 4.7.

379 381 

380Cuando ejecuta Fable 5, Opus 4.8 u Opus 4.7 por primera vez, Claude Code aplica el esfuerzo predeterminado de ese modelo incluso si estableció anteriormente un nivel diferente para otro modelo: `high` en Fable 5 y Opus 4.8, y `xhigh` en Opus 4.7. Ejecute `/effort` nuevamente para elegir un nivel diferente después de cambiar.382Cuando ejecuta Fable 5, Opus 4.8 u Opus 4.7 por primera vez, Claude Code aplica el esfuerzo predeterminado de ese modelo incluso si estableció anteriormente un nivel diferente para otro modelo: `high` en Fable 5 y Opus 4.8, y `xhigh` en Opus 4.7. Ejecute `/effort` nuevamente para elegir un nivel diferente después de cambiar.

381 383 


393| :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |395| :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

394| `low` | Reserve para tareas cortas, limitadas y sensibles a la latencia que no son sensibles a la inteligencia |396| `low` | Reserve para tareas cortas, limitadas y sensibles a la latencia que no son sensibles a la inteligencia |

395| `medium` | Reduce el uso de tokens para trabajo sensible a costos que puede intercambiar algo de inteligencia |397| `medium` | Reduce el uso de tokens para trabajo sensible a costos que puede intercambiar algo de inteligencia |

396| `high` | Equilibra el uso de tokens e inteligencia. Predeterminado en Fable 5, Opus 4.8, Opus 4.6 y Sonnet 4.6 |398| `high` | Equilibra el uso de tokens e inteligencia. Predeterminado en Fable 5, Sonnet 5, Opus 4.8, Opus 4.6 y Sonnet 4.6 |

397| `xhigh` | Razonamiento más profundo con gasto de tokens más alto. Predeterminado en Opus 4.7 |399| `xhigh` | Razonamiento más profundo con gasto de tokens más alto. Predeterminado en Opus 4.7 |

398| `max` | Puede mejorar el rendimiento en tareas exigentes pero puede mostrar rendimientos decrecientes y es propenso a pensar demasiado. Pruebe antes de adoptar ampliamente |400| `max` | Puede mejorar el rendimiento en tareas exigentes pero puede mostrar rendimientos decrecientes y es propenso a pensar demasiado. Pruebe antes de adoptar ampliamente |

399| `ultracode` | Una configuración de Claude Code que planifica un [flujo de trabajo dinámico](/es/workflows) para cada tarea sustancial con razonamiento `xhigh` por mensaje. Solo de sesión |401| `ultracode` | Una configuración de Claude Code que planifica un [flujo de trabajo dinámico](/es/workflows) para cada tarea sustancial con razonamiento `xhigh` por mensaje. Solo de sesión |


429 431 

430El razonamiento adaptativo hace que el pensamiento sea opcional en cada paso, por lo que Claude puede responder más rápido a indicaciones rutinarias y reservar un pensamiento más profundo para pasos que se benefician de él. Si desea que Claude piense más o menos a menudo de lo que produce el nivel actual, puede decirlo directamente en su indicación o en `CLAUDE.md`; el modelo responde a esa orientación dentro de su configuración de esfuerzo.432El razonamiento adaptativo hace que el pensamiento sea opcional en cada paso, por lo que Claude puede responder más rápido a indicaciones rutinarias y reservar un pensamiento más profundo para pasos que se benefician de él. Si desea que Claude piense más o menos a menudo de lo que produce el nivel actual, puede decirlo directamente en su indicación o en `CLAUDE.md`; el modelo responde a esa orientación dentro de su configuración de esfuerzo.

431 433 

432Opus 4.7 y posterior siempre utilizan razonamiento adaptativo, al igual que Fable 5. El modo de presupuesto de pensamiento fijo y `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` no se aplican a ellos.434Fable 5, Sonnet 5 y Opus 4.7 y posterior siempre utilizan razonamiento adaptativo. El modo de presupuesto de pensamiento fijo y `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` no se aplican a ellos.

433 435 

434En Opus 4.6 y Sonnet 4.6, puede establecer `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` para revertir al presupuesto de pensamiento fijo anterior controlado por `MAX_THINKING_TOKENS`. Consulte [variables de entorno](/es/env-vars).436En Opus 4.6 y Sonnet 4.6, puede establecer `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` para revertir al presupuesto de pensamiento fijo anterior controlado por `MAX_THINKING_TOKENS`. Consulte [variables de entorno](/es/env-vars).

435 437 


453 Contexto extendido455 Contexto extendido

454</h3>456</h3>

455 457 

456Fable 5, Opus 4.6 y posterior, y Sonnet 4.6 admiten una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows#1m-token-context-window) para sesiones largas con bases de código grandes.458Fable 5, Sonnet 5, Opus 4.6 y posterior, y Sonnet 4.6 admiten una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/es/build-with-claude/context-windows#1m-token-context-window) para sesiones largas con bases de código grandes.

457 459 

458La disponibilidad varía según el modelo y el plan. En los planes Max, Team y Enterprise, Opus se actualiza automáticamente a contexto de 1M sin configuración adicional. Esto se aplica tanto a los asientos de Team Standard como de Team Premium. En la API de Anthropic, Fable 5, Opus 4.8 y Opus 4.7 siempre se ejecutan con la ventana de 1M. Sonnet con contexto de 1M no es parte de la actualización automática y requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) en todos los planes de suscripción, incluido Max.460La disponibilidad varía según el modelo y el plan. En la API de Anthropic, Fable 5, Sonnet 5, Opus 4.8 y Opus 4.7 siempre se ejecutan con la ventana de 1M. En los planes Max, Team y Enterprise, Opus se actualiza automáticamente a contexto de 1M sin configuración adicional. Esto se aplica tanto a los asientos de Team Standard como de Team Premium. Sonnet 4.6 con contexto de 1M no es parte de la actualización automática y requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) en todos los planes de suscripción, incluido Max.

459 461 

460| Plan | Opus con contexto de 1M | Sonnet con contexto de 1M |462| Plan | Opus con contexto de 1M | Sonnet 4.6 con contexto de 1M |

461| ---------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |463| ---------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |

462| Max, Team y Enterprise | Incluido en la suscripción | Requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |464| Max, Team y Enterprise | Incluido en la suscripción | Requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |

463| Pro | Requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) | Requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |465| Pro | Requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) | Requiere [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |


480/model claude-opus-4-8[1m]482/model claude-opus-4-8[1m]

481```483```

482 484 

485<h4 id="sonnet-5-context-window">

486 Ventana de contexto de Sonnet 5

487</h4>

488 

489En la API de Anthropic, Sonnet 5 siempre se ejecuta con la ventana de contexto de 1M. No hay variante de 200K, no hay sufijo `[1m]` que seleccionar y no se requieren créditos de uso en ningún plan. Las sesiones se compactan automáticamente antes de que la ventana se llene, aproximadamente a 967K tokens de forma predeterminada; establezca [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/es/env-vars) para elegir un umbral diferente.

490 

491Dos configuraciones presupuestan la ventana en 200K en su lugar y se compactan automáticamente en ese límite:

492 

493* **Puerta de enlace LLM**: cuando `ANTHROPIC_BASE_URL` apunta a una [puerta de enlace](/es/llm-gateway), Claude Code no puede verificar la compatibilidad con 1M. Para utilizar la ventana completa, seleccione Sonnet 5 (1M context) en el selector de modelo, que se asigna a `sonnet[1m]`.

494* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: trata las sesiones de Sonnet 5 como si tuvieran una ventana de 200K, para implementaciones que necesitan limitar el contexto.

495 

483<h2 id="checking-your-current-model">496<h2 id="checking-your-current-model">

484 Verificar su modelo actual497 Verificar su modelo actual

485</h2>498</h2>

486 499 

487Puede ver qué modelo está utilizando actualmente de varias formas:500Puede ver qué modelo está utilizando actualmente en dos lugares:

488 501 

4891. En [línea de estado](/es/statusline) (si está configurada)502* En la [línea de estado](/es/statusline), si tiene una configurada

4902. En `/status`, que también muestra la información de su cuenta.503* En `/status`, que también muestra la información de su cuenta

491 504 

492<h2 id="add-a-custom-model-option">505<h2 id="add-a-custom-model-option">

493 Agregar una opción de modelo personalizado506 Agregar una opción de modelo personalizado


498Este ejemplo establece las tres variables para hacer que una implementación de Opus enrutada por puerta de enlace sea seleccionable:511Este ejemplo establece las tres variables para hacer que una implementación de Opus enrutada por puerta de enlace sea seleccionable:

499 512 

500```bash theme={null}513```bash theme={null}

501export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"514export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-8"

502export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"515export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

503export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"516export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

504```517```

505 518 

506La entrada personalizada aparece en la parte inferior del selector `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` y `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` son opcionales. Si se omiten, el ID de modelo se utiliza como nombre y la descripción tiene como valor predeterminado `Custom model (<model-id>)`.519La entrada personalizada aparece en la parte inferior del selector `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` y `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` son opcionales. Si se omiten, el ID de modelo se utiliza como nombre y la descripción tiene como valor predeterminado `Custom model (<model-id>)`.

507 520 

508Claude Code omite la validación para el ID de modelo establecido en `ANTHROPIC_CUSTOM_MODEL_OPTION`, por lo que puede utilizar cualquier cadena que su punto final de API acepte. Cuando [`availableModels`](#restrict-model-selection) está establecido, incluya también el ID de modelo personalizado en la lista de permitidos: la entrada personalizada se filtra del selector y una selección de `--model` de la misma se rechaza como cualquier otro modelo excluido. Un ID personalizado que incrusta un nombre de familia, como `my-gateway/claude-opus-4-7`, cuenta como una entrada específica para esa familia y deshabilita su comodín, por lo que también debe enumerar las versiones que desea mantener seleccionables. Consulte [Comportamiento de fusión](#merge-behavior).521Claude Code omite la validación para el ID de modelo establecido en `ANTHROPIC_CUSTOM_MODEL_OPTION`, por lo que puede utilizar cualquier cadena que su punto final de API acepte. Cuando [`availableModels`](#restrict-model-selection) está establecido, incluya también el ID de modelo personalizado en la lista de permitidos: la entrada personalizada se filtra del selector y una selección de `--model` de la misma se rechaza como cualquier otro modelo excluido. Un ID personalizado que incrusta un nombre de familia, como `my-gateway/claude-opus-4-8`, cuenta como una entrada específica para esa familia y deshabilita su comodín, por lo que también debe enumerar las versiones que desea mantener seleccionables. Consulte [Comportamiento de fusión](#merge-behavior).

509 522 

510<h2 id="environment-variables">523<h2 id="environment-variables">

511 Variables de entorno524 Variables de entorno

512</h2>525</h2>

513 526 

514Puede utilizar las siguientes variables de entorno, que deben ser **nombres de modelo** completos (o equivalentes para su proveedor de API), para controlar los nombres de modelo a los que se asignan los alias.527Puede utilizar las siguientes variables de entorno para controlar los nombres de modelo a los que se asignan los alias. Cada valor debe ser un nombre de modelo completo, o el identificador equivalente para su proveedor de API.

515 528 

516| Variable de entorno | Descripción |529| Variable de entorno | Descripción |

517| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |530| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |


527 Fijar modelos para implementaciones de terceros540 Fijar modelos para implementaciones de terceros

528</h3>541</h3>

529 542 

530Al implementar Claude Code a través de [Bedrock](/es/amazon-bedrock), [Vertex AI](/es/google-vertex-ai), [Foundry](/es/microsoft-foundry), o [Claude Platform on AWS](/es/claude-platform-on-aws), fije versiones de modelo antes de implementar para usuarios.543Cuando implemente Claude Code a través de [Bedrock](/es/amazon-bedrock), [Vertex AI](/es/google-vertex-ai), [Foundry](/es/microsoft-foundry), o [Claude Platform on AWS](/es/claude-platform-on-aws), fije versiones de modelo antes de implementar para usuarios.

531 544 

532Sin fijar, Claude Code utiliza alias de modelo como `fable`, `opus`, `sonnet` y `haiku` que se resuelven a un ID de modelo predeterminado integrado para cada proveedor. Ese predeterminado puede rezagarse con respecto a la versión más reciente de Anthropic, y el modelo al que apunta puede que aún no esté habilitado en la cuenta de un usuario. Cuando el predeterminado no está disponible, los usuarios de Bedrock y Vertex AI ven un aviso y retroceden a la versión anterior para esa sesión, mientras que los usuarios de Foundry ven errores porque Foundry no tiene ninguna verificación de inicio equivalente.545Sin fijar, Claude Code utiliza alias de modelo como `fable`, `opus`, `sonnet` y `haiku` que se resuelven a un ID de modelo predeterminado integrado para cada proveedor. Ese predeterminado puede rezagarse con respecto a la versión más reciente de Anthropic, y el modelo al que apunta puede que aún no esté habilitado en la cuenta de un usuario. Cuando el predeterminado no está disponible, los usuarios de Bedrock y Vertex AI ven un aviso y retroceden a la versión anterior para esa sesión, mientras que los usuarios de Foundry ven errores porque Foundry no tiene ninguna verificación de inicio equivalente.

533 546 


555 568 

556* Claude Code elimina el sufijo antes de enviar el ID de modelo a su proveedor.569* Claude Code elimina el sufijo antes de enviar el ID de modelo a su proveedor.

557* Solo añada `[1m]` cuando el modelo subyacente [admita contexto de 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window).570* Solo añada `[1m]` cuando el modelo subyacente [admita contexto de 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window).

558* El sufijo se lee por variable, no por modelo. En Bedrock, Vertex y Foundry, un ID de modelo sin `[1m]` en una variable utiliza contexto de 200K incluso si otra variable establece el mismo modelo con el sufijo.571* El sufijo se lee por variable, no por modelo. En Bedrock, Vertex y Foundry, un ID de modelo sin `[1m]` en una variable utiliza contexto de 200K incluso si otra variable establece el mismo modelo con el sufijo. Sonnet 5 siempre se ejecuta con la ventana de 1M en estos proveedores y nunca necesita el sufijo.

559 572 

560<Note>573<Note>

561 Una lista de permitidos `availableModels` entregada a través de [MDM o un archivo de configuración administrado](/es/settings#settings-files) aún se aplica cuando se utilizan proveedores de terceros; [la configuración administrada por servidor no se entrega allí](/es/server-managed-settings#platform-availability). El filtrado coincide con un alias de modelo como `opus`, un prefijo de versión como `claude-opus-4-8`, o el ID de modelo completo en forma de proveedor. Los prefijos específicos del proveedor como `us.anthropic.` no se eliminan, por lo que para permitir un modelo específico, enumere el mismo ID en forma de proveedor que muestra el selector, o asígnelo a través de [`modelOverrides`](#override-model-ids-per-version). Cualquier sufijo `[1m]` se elimina tanto de la entrada de la lista de permitidos como del modelo solicitado antes de coincidir.574 Una lista de permitidos `availableModels` entregada a través de [MDM o un archivo de configuración administrado](/es/settings#settings-files) aún se aplica cuando se utilizan proveedores de terceros; [la configuración administrada por servidor no se entrega allí](/es/server-managed-settings#platform-availability). El filtrado coincide con un alias de modelo como `opus`, un prefijo de versión como `claude-opus-4-8`, o el ID de modelo completo en forma de proveedor. Los prefijos específicos del proveedor como `us.anthropic.` no se eliminan, por lo que para permitir un modelo específico, enumere el mismo ID en forma de proveedor que muestra el selector, o asígnelo a través de [`modelOverrides`](#override-model-ids-per-version). Cualquier sufijo `[1m]` se elimina tanto de la entrada de la lista de permitidos como del modelo solicitado antes de coincidir.

Details

93| `OTEL_METRIC_EXPORT_INTERVAL` | Intervalo de exportación en milisegundos (predeterminado: 60000) | `5000`, `60000` |93| `OTEL_METRIC_EXPORT_INTERVAL` | Intervalo de exportación en milisegundos (predeterminado: 60000) | `5000`, `60000` |

94| `OTEL_LOGS_EXPORT_INTERVAL` | Intervalo de exportación de registros en milisegundos (predeterminado: 5000) | `1000`, `10000` |94| `OTEL_LOGS_EXPORT_INTERVAL` | Intervalo de exportación de registros en milisegundos (predeterminado: 5000) | `1000`, `10000` |

95| `OTEL_LOG_USER_PROMPTS` | Habilitar registro del contenido del mensaje del usuario (predeterminado: deshabilitado) | `1` para habilitar |95| `OTEL_LOG_USER_PROMPTS` | Habilitar registro del contenido del mensaje del usuario (predeterminado: deshabilitado) | `1` para habilitar |

96| `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`. {/* min-version: 2.1.193 */}Requiere Claude Code v2.1.193 o posterior | `1` para habilitar, `0` para mantener redactado |

96| `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, e entrada de herramienta. También habilita nombres de comandos personalizados, de plugin y MCP en eventos `user_prompt` (predeterminado: deshabilitado) | `1` para habilitar |97| `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, e entrada de herramienta. También habilita nombres de comandos personalizados, de plugin y MCP en eventos `user_prompt` (predeterminado: deshabilitado) | `1` para habilitar |

97| `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 60 KB | `1` para habilitar |98| `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 60 KB | `1` para habilitar |

98| `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 60 KB, o `file:<dir>` para cuerpos sin truncar en disco con un puntero `body_ref` en el evento |99| `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 60 KB, o `file:<dir>` para cuerpos sin truncar en disco con un puntero `body_ref` en el evento |


341Cada clave personalizada se convierte en una etiqueta en cada serie de métricas, por lo que los valores de alta cardinalidad aumentan el costo de almacenamiento en tu backend de métricas. Para enviar atributos personalizados solo en el bloque de recursos y omitirlos de las etiquetas de punto de datos, establece `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Consulta [Control de cardinalidad de métricas](#metrics-cardinality-control).342Cada clave personalizada se convierte en una etiqueta en cada serie de métricas, por lo que los valores de alta cardinalidad aumentan el costo de almacenamiento en tu backend de métricas. Para enviar atributos personalizados solo en el bloque de recursos y omitirlos de las etiquetas de punto de datos, establece `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Consulta [Control de cardinalidad de métricas](#metrics-cardinality-control).

342 343 

343<Warning>344<Warning>

344 **Requisitos de formato importantes para OTEL\_RESOURCE\_ATTRIBUTES:**

345 

346 La variable de entorno `OTEL_RESOURCE_ATTRIBUTES` utiliza pares clave=valor separados por comas con requisitos de formato estrictos:345 La variable de entorno `OTEL_RESOURCE_ATTRIBUTES` utiliza pares clave=valor separados por comas con requisitos de formato estrictos:

347 346 

348 * **No se permiten espacios**: Los valores no pueden contener espacios. Por ejemplo, `user.organizationName=My Company` es inválido347 * **No se permiten espacios**: Los valores no pueden contener espacios. Por ejemplo, `user.organizationName=My Company` es inválido


350 * **Caracteres permitidos**: Solo caracteres US-ASCII excluyendo caracteres de control, espacios en blanco, comillas dobles, comas, puntos y comas, y barras invertidas349 * **Caracteres permitidos**: Solo caracteres US-ASCII excluyendo caracteres de control, espacios en blanco, comillas dobles, comas, puntos y comas, y barras invertidas

351 * **Caracteres especiales**: Los caracteres fuera del rango permitido deben estar codificados en porcentaje350 * **Caracteres especiales**: Los caracteres fuera del rango permitido deben estar codificados en porcentaje

352 351 

353 **Ejemplos:**352 Para un valor que necesitaría un espacio, usa guiones bajos o camelCase en su lugar. Los siguientes ejemplos establecen `org.name` con cada forma:

354 353 

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

356 # ❌ Inválido - contiene espacios

357 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

358 

359 # ✅ Válido - usar guiones bajos o camelCase en su lugar

360 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"355 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

361 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"356 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

357 ```

362 358 

363 # ✅ Válido - codificar en porcentaje caracteres especiales si es necesario359 Puedes codificar en porcentaje cualquier carácter, no solo los excluidos. Este ejemplo codifica tanto el espacio como el apóstrofo:

360 

361 ```bash theme={null}

364 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"362 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

365 ```363 ```

366 364 

367 Nota: envolver valores entre comillas no escapa espacios. Por ejemplo, `org.name="My Company"` resulta en el valor literal `"My Company"` (con comillas incluidas), no `My Company`.365 Envolver valores entre comillas no escapa espacios. Por ejemplo, `org.name="My Company"` resulta en el valor literal `"My Company"` con las comillas incluidas, no `My Company`.

368</Warning>366</Warning>

369 367 

370<h3 id="example-configurations">368<h3 id="example-configurations">


439| `terminal.type` | Tipo de terminal, como `iTerm.app`, `vscode`, `cursor`, o `tmux` | Siempre incluido cuando se detecta |437| `terminal.type` | Tipo de terminal, como `iTerm.app`, `vscode`, `cursor`, o `tmux` | Siempre incluido cuando se detecta |

440| Claves de `OTEL_RESOURCE_ATTRIBUTES` | Atributos personalizados que establece, como `department` o `team.id`. Consulte [Soporte de organización multiequipo](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (predeterminado: true) |438| Claves de `OTEL_RESOURCE_ATTRIBUTES` | Atributos personalizados que establece, como `department` o `team.id`. Consulte [Soporte de organización multiequipo](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (predeterminado: true) |

441 439 

440Cuando Claude Code inicia sesión en una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway), la CLI marca las exportaciones con la identidad autenticada de la sesión de la puerta de enlace: `user.id` es el asunto del IdP en lugar de un identificador de instalación anónimo, `user.email` es el correo electrónico con sesión iniciada, y `user.groups` lleva la pertenencia al grupo del IdP como una cadena separada por comas. Cada exportación también lleva `identity.source: gateway-oidc`. La identidad de la puerta de enlace se aplica al final, por lo que las claves `user.*` e `identity.*` establecidas a través de `OTEL_RESOURCE_ATTRIBUTES` se ignoran en sesiones de puerta de enlace.

441 

442Los eventos incluyen adicionalmente los siguientes atributos. Estos nunca se adjuntan a las métricas porque causarían cardinalidad ilimitada:442Los eventos incluyen adicionalmente los siguientes atributos. Estos nunca se adjuntan a las métricas porque causarían cardinalidad ilimitada:

443 443 

444* `prompt.id`: UUID correlacionando un mensaje del usuario con todos los eventos posteriores hasta el siguiente mensaje. Consulte [Atributos de correlación de eventos](#event-correlation-attributes).444* `prompt.id`: UUID correlacionando un mensaje del usuario con todos los eventos posteriores hasta el siguiente mensaje. Consulte [Atributos de correlación de eventos](#event-correlation-attributes).


488 488 

489* Todos los [atributos estándar](#standard-attributes)489* Todos los [atributos estándar](#standard-attributes)

490* `type`: (`"added"`, `"removed"`)490* `type`: (`"added"`, `"removed"`)

491* `model`: Identificador de modelo para el modelo que realizó el cambio (por ejemplo, "claude-sonnet-4-6"). Requiere Claude Code v2.1.172 o posterior491* `model`: Identificador de modelo para el modelo que realizó el cambio (por ejemplo, "claude-sonnet-5")

492 492 

493<h4 id="pull-request-counter">493<h4 id="pull-request-counter">

494 Contador de solicitud de extracción494 Contador de solicitud de extracción


519**Atributos**:519**Atributos**:

520 520 

521* Todos los [atributos estándar](#standard-attributes)521* Todos los [atributos estándar](#standard-attributes)

522* `model`: Identificador de modelo (por ejemplo, "claude-sonnet-4-6")522* `model`: Identificador de modelo (por ejemplo, "claude-sonnet-5")

523* `query_source`: Categoría del subsistema que emitió la solicitud. Uno de `"main"`, `"subagent"`, o `"auxiliary"`523* `query_source`: Categoría del subsistema que emitió la solicitud. Uno de `"main"`, `"subagent"`, o `"auxiliary"`

524* `speed`: `"fast"` cuando la solicitud utilizó modo rápido. Ausente de otra manera524* `speed`: `"fast"` cuando la solicitud utilizó modo rápido. Ausente de otra manera

525* `effort`: [Nivel de esfuerzo](/es/model-config#adjust-effort-level) aplicado a la solicitud: `"low"`, `"medium"`, `"high"`, `"xhigh"`, o `"max"`. Ausente cuando el modelo no admite esfuerzo.525* `effort`: [Nivel de esfuerzo](/es/model-config#adjust-effort-level) aplicado a la solicitud: `"low"`, `"medium"`, `"high"`, `"xhigh"`, o `"max"`. Ausente cuando el modelo no admite esfuerzo.


540 540 

541* Todos los [atributos estándar](#standard-attributes)541* Todos los [atributos estándar](#standard-attributes)

542* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)542* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

543* `model`: Identificador de modelo (por ejemplo, "claude-sonnet-4-6")543* `model`: Identificador de modelo (por ejemplo, "claude-sonnet-5")

544* `query_source`: Categoría del subsistema que emitió la solicitud. Uno de `"main"`, `"subagent"`, o `"auxiliary"`544* `query_source`: Categoría del subsistema que emitió la solicitud. Uno de `"main"`, `"subagent"`, o `"auxiliary"`

545* `speed`: `"fast"` cuando la solicitud utilizó modo rápido. Ausente de otra manera545* `speed`: `"fast"` cuando la solicitud utilizó modo rápido. Ausente de otra manera

546* `effort`: [Nivel de esfuerzo](/es/model-config#adjust-effort-level) aplicado a la solicitud. Consulte [Contador de costo](#cost-counter) para detalles.546* `effort`: [Nivel de esfuerzo](/es/model-config#adjust-effort-level) aplicado a la solicitud. Consulte [Contador de costo](#cost-counter) para detalles.


608* `event.timestamp`: Marca de tiempo ISO 8601608* `event.timestamp`: Marca de tiempo ISO 8601

609* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión609* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión

610* `prompt_length`: Longitud del mensaje610* `prompt_length`: Longitud del mensaje

611* `prompt`: Contenido del mensaje (redactado por defecto, habilitar con `OTEL_LOG_USER_PROMPTS=1`)611* `prompt`: Contenido del mensaje. Redactado por defecto. Establezca `OTEL_LOG_USER_PROMPTS=1` para incluirlo

612* `command_name`: Nombre del comando cuando el mensaje invoca uno. Los nombres de comandos integrados y agrupados como `compact` o `debug` se emiten tal cual; los alias como `reset` se emiten como se escribieron en lugar del nombre canónico. Los nombres de comandos personalizados, de plugin y MCP se contraen a `custom` o `mcp` a menos que `OTEL_LOG_TOOL_DETAILS=1` esté establecido612* `command_name`: Nombre del comando cuando el mensaje invoca uno. Los nombres de comandos integrados y agrupados como `compact` o `debug` se emiten tal cual; los alias como `reset` se emiten como se escribieron en lugar del nombre canónico. Los nombres de comandos personalizados, de plugin y MCP se contraen a `custom` o `mcp` a menos que `OTEL_LOG_TOOL_DETAILS=1` esté establecido

613* `command_source`: Origen del comando cuando está presente: `builtin`, `custom`, o `mcp`. Los comandos proporcionados por plugins reportan como `custom`613* `command_source`: Origen del comando cuando está presente: `builtin`, `custom`, o `mcp`. Los comandos proporcionados por plugins reportan como `custom`

614 614 

615<h4 id="assistant-response-event">

616 Evento de respuesta del asistente

617</h4>

618 

619Se registra después de cada solicitud de API que devuelve contenido de texto del modelo. Solo se incluyen los bloques de texto de la respuesta; los bloques de pensamiento y los bloques de uso de herramientas se excluyen. Requiere Claude Code v2.1.193 o posterior.

620 

621**Nombre del Evento**: `claude_code.assistant_response`

622 

623**Atributos**:

624 

625* Todos los [atributos estándar](#standard-attributes)

626* `event.name`: `"assistant_response"`

627* `event.timestamp`: Marca de tiempo ISO 8601

628* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión

629* `response_length`: Longitud del texto de respuesta en caracteres

630* `response`: Texto de respuesta, truncado en 60 KB. Redactado a `<REDACTED>` por defecto. Establezca `OTEL_LOG_ASSISTANT_RESPONSES=1` para incluirlo. Cuando `OTEL_LOG_ASSISTANT_RESPONSES` no está establecido, `OTEL_LOG_USER_PROMPTS` lo controla en su lugar, así que establezca `OTEL_LOG_ASSISTANT_RESPONSES=0` para mantener las respuestas redactadas mientras el registro de mensajes está activado

631* `model`: Identificador de modelo (por ejemplo, "claude-sonnet-4-6")

632* `request_id`: ID de solicitud de API de Anthropic del encabezado `request-id` de la respuesta. Presente solo cuando la API devuelve uno

633* `query_source`: Subsistema que emitió la solicitud, como `"repl_main_thread"`, `"compact"`, o un nombre de subagente

634 

615<h4 id="tool-result-event">635<h4 id="tool-result-event">

616 Evento de resultado de herramienta636 Evento de resultado de herramienta

617</h4>637</h4>


632* `duration_ms`: Tiempo de ejecución en milisegundos652* `duration_ms`: Tiempo de ejecución en milisegundos

633* `error_type`: Cadena de categoría de error cuando la herramienta falló, como `"Error:ENOENT"` o `"ShellError"`653* `error_type`: Cadena de categoría de error cuando la herramienta falló, como `"Error:ENOENT"` o `"ShellError"`

634* `error` (cuando `OTEL_LOG_TOOL_DETAILS=1`): Mensaje de error completo cuando la herramienta falló654* `error` (cuando `OTEL_LOG_TOOL_DETAILS=1`): Mensaje de error completo cuando la herramienta falló

635* `decision_type`: Siempre `"accept"`, ya que este evento se emite solo después de que se ejecuta la herramienta (las llamadas rechazadas no producen un resultado de herramienta)655* `decision_type`: Siempre `"accept"`, ya que este evento se emite solo después de que se ejecuta la herramienta. Las llamadas rechazadas no producen un resultado de herramienta

636* `decision_source`: Fuente de decisión de permiso. Uno de `"config"`, `"hook"`, `"user_permanent"`, o `"user_temporary"`. Consulte el [Evento de decisión de herramienta](#tool-decision-event) para saber qué significa cada valor. Las fuentes solo de rechazo `"user_abort"` y `"user_reject"` nunca aparecen en este evento.656* `decision_source`: Fuente de decisión de permiso. Uno de `"config"`, `"hook"`, `"user_permanent"`, o `"user_temporary"`. Consulte el [Evento de decisión de herramienta](#tool-decision-event) para saber qué significa cada valor. Las fuentes solo de rechazo `"user_abort"` y `"user_reject"` nunca aparecen en este evento.

637* `tool_input_size_bytes`: Tamaño de la entrada de herramienta serializada en JSON en bytes657* `tool_input_size_bytes`: Tamaño de la entrada de herramienta serializada en JSON en bytes

638* `tool_result_size_bytes`: Tamaño del resultado de la herramienta en bytes658* `tool_result_size_bytes`: Tamaño del resultado de la herramienta en bytes


659* `event.name`: `"api_request"`679* `event.name`: `"api_request"`

660* `event.timestamp`: Marca de tiempo ISO 8601680* `event.timestamp`: Marca de tiempo ISO 8601

661* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión681* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión

662* `model`: Modelo utilizado (por ejemplo, "claude-sonnet-4-6")682* `model`: Modelo utilizado (por ejemplo, "claude-sonnet-5")

663* `cost_usd`: Costo estimado en USD683* `cost_usd`: Costo estimado en USD

664* `duration_ms`: Duración de la solicitud en milisegundos684* `duration_ms`: Duración de la solicitud en milisegundos

665* `input_tokens`: Número de tokens de entrada685* `input_tokens`: Número de tokens de entrada


686* `event.name`: `"api_error"`706* `event.name`: `"api_error"`

687* `event.timestamp`: Marca de tiempo ISO 8601707* `event.timestamp`: Marca de tiempo ISO 8601

688* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión708* `event.sequence`: Contador monotónicamente creciente para ordenar eventos dentro de una sesión

689* `model`: Modelo utilizado (por ejemplo, "claude-sonnet-4-6")709* `model`: Modelo utilizado (por ejemplo, "claude-sonnet-5")

690* `error`: Mensaje de error710* `error`: Mensaje de error

691* `status_code`: Código de estado HTTP como número. Ausente para errores no HTTP como fallos de conexión.711* `status_code`: Código de estado HTTP como número. Ausente para errores no HTTP como fallos de conexión.

692* `duration_ms`: Duración de la solicitud en milisegundos712* `duration_ms`: Duración de la solicitud en milisegundos


1156* Consumo inusual de tokens1176* Consumo inusual de tokens

1157* Alto volumen de sesiones de usuarios específicos1177* Alto volumen de sesiones de usuarios específicos

1158 1178 

1159Todas las métricas pueden segmentarse por los [atributos estándar](#standard-attributes). El atributo `model` está disponible en `claude_code.token.usage`, `claude_code.cost.usage`, y {/* min-version: 2.1.172 */}a partir de v2.1.172, `claude_code.lines_of_code.count`. Los desgloses por modelo de confirmaciones solo pueden aproximarse uniéndose contra las métricas de token o costo en `session.id`, ya que una sesión puede abarcar múltiples modelos. Filtre el lado de token o costo a filas donde `query_source` es `"main"` para que las solicitudes auxiliares y de subagente no atribuyan los compromisos de la sesión a un modelo que no los realizó.1179Todas las métricas pueden segmentarse por los [atributos estándar](#standard-attributes). El atributo `model` está disponible en `claude_code.token.usage`, `claude_code.cost.usage`, y {/* min-version: 2.1.172 */}a partir de v2.1.172, `claude_code.lines_of_code.count`.

1180 

1181Los desgloses por modelo de confirmaciones solo pueden aproximarse uniéndose contra las métricas de token o costo en `session.id`, ya que una sesión puede abarcar múltiples modelos. Filtre el lado de token o costo a filas donde `query_source` es `"main"` para que las solicitudes auxiliares y de subagente no atribuyan los compromisos de la sesión a un modelo que no los realizó.

1160 1182 

1161<h3 id="detect-retry-exhaustion">1183<h3 id="detect-retry-exhaustion">

1162 Detectar agotamiento de reintentos1184 Detectar agotamiento de reintentos


1187 Auditar eventos de seguridad1209 Auditar eventos de seguridad

1188</h2>1210</h2>

1189 1211 

1190Los eventos de OpenTelemetry son la fuente de datos de auditoría para la actividad de Claude Code. Cada evento lleva atributos de identidad que vinculan llamadas de herramientas, actividad MCP y decisiones de permisos al usuario que las desencadenó, y el exportador de registros OTLP puede entregar estos eventos a cualquier plataforma de Gestión de Información y Eventos de Seguridad (SIEM) con un receptor OTLP o a un Recopilador de OpenTelemetry que reenvíe a su SIEM.1212Los eventos de OpenTelemetry son la fuente de datos de auditoría para la actividad de Claude Code. Cada evento lleva atributos de identidad que vinculan llamadas de herramientas, actividad MCP y decisiones de permisos al usuario que las desencadenó. El exportador de registros OTLP puede entregar estos eventos a cualquier plataforma de Gestión de Información y Eventos de Seguridad (SIEM) con un receptor OTLP, o a un Recopilador de OpenTelemetry que reenvíe a su SIEM.

1191 1213 

1192<h3 id="attribute-actions-to-users">1214<h3 id="attribute-actions-to-users">

1193 Atribuir acciones a usuarios1215 Atribuir acciones a usuarios

1194</h3>1216</h3>

1195 1217 

1196Los [atributos estándar](#standard-attributes) en cada evento incluyen la identidad del usuario autenticado: `user.email`, `user.account_uuid`, `user.account_id`, y `organization.id` cuando se inicia sesión con una cuenta de Claude, más el `user.id` con alcance de instalación y el `session.id` por sesión.1218Los [atributos estándar](#standard-attributes) en cada evento incluyen la identidad del usuario autenticado: `user.email`, `user.account_uuid`, `user.account_id`, y `organization.id` cuando se inicia sesión con una cuenta de Claude, más `user.id` y el `session.id` por sesión. `user.id` es un identificador con alcance de instalación, excepto en sesiones de [Claude apps gateway](/es/claude-apps-gateway), donde es el asunto del IdP del token emitido por la puerta de enlace.

1197 1219 

1198Las llamadas de herramientas MCP, comandos Bash y ediciones de archivos se atribuyen por lo tanto al desarrollador que inició la sesión. Claude Code no actúa bajo una cuenta de servicio separada; la identidad registrada en cada evento es la propia cuenta de Claude del desarrollador.1220Las llamadas de herramientas MCP, comandos Bash y ediciones de archivos se atribuyen por lo tanto al desarrollador que inició la sesión. Claude Code no actúa bajo una cuenta de servicio separada; la identidad registrada en cada evento es la propia cuenta de Claude del desarrollador, o la identidad del IdP del desarrollador en una sesión de [Claude apps gateway](/es/claude-apps-gateway).

1199 1221 

1200Cuando Claude Code se autentica con una clave de API directa, o contra Bedrock, Vertex AI, o Microsoft Foundry, no hay cuenta de Claude en la sesión y solo `user.id` y `session.id` se rellenan. En estas implementaciones, adjunte la identidad del usuario usted mismo con `OTEL_RESOURCE_ATTRIBUTES`, establecido por usuario a través del archivo de [configuración administrada](#administrator-configuration) o un contenedor de lanzamiento:1222Cuando Claude Code se autentica con una clave de API directa, o contra Bedrock, Vertex AI, o Microsoft Foundry, no hay cuenta de Claude en la sesión y solo `user.id` y `session.id` se rellenan. En estas implementaciones, adjunte la identidad del usuario usted mismo con `OTEL_RESOURCE_ATTRIBUTES`, establecido por usuario a través del archivo de [configuración administrada](#administrator-configuration) o un contenedor de lanzamiento. Las sesiones de Claude apps gateway no necesitan nada de esto: la CLI marca la identidad del IdP automáticamente, como se describe en [Atributos estándar](#standard-attributes).

1201 1223 

1202```bash theme={null}1224```bash theme={null}

1203export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."1225export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."


1319* 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ón1341* 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

1320* Cuando está autenticado a través de OAuth, `user.email` se incluye en atributos de telemetría. Si esto es una preocupación para tu organización, trabaja con tu backend de telemetría para filtrar o redactar este campo1342* Cuando está autenticado a través de OAuth, `user.email` se incluye en atributos de telemetría. Si esto es una preocupación para tu organización, trabaja con tu backend de telemetría para filtrar o redactar este campo

1321* 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`1343* 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`

1344* 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

1322* Los argumentos de entrada de herramientas y parámetros no se registran por defecto. Para incluirlos, establece `OTEL_LOG_TOOL_DETAILS=1`. 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:1345* Los argumentos de entrada de herramientas y parámetros no se registran por defecto. Para incluirlos, establece `OTEL_LOG_TOOL_DETAILS=1`. 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:

1323 * Los eventos `tool_result` y `tool_decision` incluyen un atributo `tool_parameters` con comandos Bash, nombres de servidor MCP y herramienta, y nombres de habilidades. Los campos como `full_command` se emiten sin truncar1346 * 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

1324 * 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 caracteres1347 * 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

1325 * Los eventos `user_prompt` incluyen el `command_name` verbatim para comandos personalizados, de plugin y MCP1348 * Los eventos `user_prompt` incluyen el `command_name` verbatim para comandos personalizados, de plugin y MCP

1326 * 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`1349 * 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`

Details

63 Almacén de certificados CA63 Almacén de certificados CA

64</h2>64</h2>

65 65 

66De forma predeterminada, Claude Code confía tanto en sus certificados CA de Mozilla incluidos como en el almacén de certificados de su sistema operativo. Los proxies de inspección TLS empresariales como CrowdStrike Falcon y Zscaler funcionan sin configuración adicional cuando su certificado raíz se instala en el almacén de confianza del sistema operativo.66De forma predeterminada, Claude Code confía tanto en sus certificados CA de Mozilla incluidos como en el almacén de certificados de su sistema operativo. La lectura del almacén del sistema operativo requiere un tiempo de ejecución con `tls.getCACertificates`: el instalador nativo siempre lo tiene, y las instalaciones de npm necesitan Node 22.15 o posterior. En versiones anteriores de Node, solo se aplican el conjunto incluido y `NODE_EXTRA_CA_CERTS`. Los proxies de inspección TLS empresariales como CrowdStrike Falcon y Zscaler funcionan sin configuración adicional cuando su certificado raíz se instala en el almacén de confianza del sistema operativo y el tiempo de ejecución puede leerlo.

67 67 

68`CLAUDE_CODE_CERT_STORE` acepta una lista separada por comas de fuentes. Los valores reconocidos son `bundled` para el conjunto de CA de Mozilla incluido con Claude Code y `system` para el almacén de certificados del sistema operativo. El valor predeterminado es `bundled,system`.68`CLAUDE_CODE_CERT_STORE` acepta una lista separada por comas de fuentes. Los valores reconocidos son `bundled` para el conjunto de CA de Mozilla incluido con Claude Code y `system` para el almacén de certificados del sistema operativo. El valor predeterminado es `bundled,system`.

69 69 


131 131 

132Claude Code también envía telemetría operativa opcional de forma predeterminada, que puede desactivar con variables de entorno. Consulte [Servicios de telemetría](/es/data-usage#telemetry-services) para saber cómo desactivarla antes de finalizar su lista blanca.132Claude Code también envía telemetría operativa opcional de forma predeterminada, que puede desactivar con variables de entorno. Consulte [Servicios de telemetría](/es/data-usage#telemetry-services) para saber cómo desactivarla antes de finalizar su lista blanca.

133 133 

134Cuando utiliza [Amazon Bedrock](/es/amazon-bedrock), [Google Vertex AI](/es/google-vertex-ai) o [Microsoft Foundry](/es/microsoft-foundry), el tráfico del modelo y la autenticación van a su proveedor en lugar de `api.anthropic.com`, `claude.ai` o `platform.claude.com`. La herramienta WebFetch aún llama a `api.anthropic.com` para su [verificación de seguridad de dominio](/es/data-usage#webfetch-domain-safety-check) a menos que establezca `skipWebFetchPreflight: true` en [configuración](/es/settings).134Cuando utiliza [Amazon Bedrock](/es/amazon-bedrock), [Google Vertex AI](/es/google-vertex-ai), [Microsoft Foundry](/es/microsoft-foundry) o una sesión de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada, el tráfico del modelo y la autenticación van a su proveedor o puerta de enlace en lugar de `api.anthropic.com`, `claude.ai` o `platform.claude.com`. La herramienta WebFetch aún llama a `api.anthropic.com` para su [verificación de seguridad de dominio](/es/data-usage#webfetch-domain-safety-check) a menos que establezca `skipWebFetchPreflight: true` en [configuración](/es/settings).

135 135 

136[Claude Code en la web](/es/claude-code-on-the-web) y [Code Review](/es/code-review) se conectan a sus repositorios desde infraestructura administrada por Anthropic. Si su organización de GitHub Enterprise Cloud restringe el acceso por dirección IP, habilite [herencia de lista de permitidos de IP para aplicaciones de GitHub instaladas](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). La aplicación de GitHub de Claude registra sus rangos de IP, por lo que habilitar esta configuración permite el acceso sin configuración manual. Para [agregar los rangos a su lista de permitidos manualmente](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) en su lugar, o para configurar otros firewalls, consulte [direcciones IP de la API de Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).136[Claude Code en la web](/es/claude-code-on-the-web) y [Code Review](/es/code-review) se conectan a sus repositorios desde infraestructura administrada por Anthropic. Si su organización de GitHub Enterprise Cloud restringe el acceso por dirección IP, habilite [herencia de lista de permitidos de IP para aplicaciones de GitHub instaladas](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). La aplicación de GitHub de Claude registra sus rangos de IP, por lo que habilitar esta configuración permite el acceso sin configuración manual. Para [agregar los rangos a su lista de permitidos manualmente](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) en su lugar, o para configurar otros firewalls, consulte [direcciones IP de la API de Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).

137 137 

Details

37 <Tab title="CLI">37 <Tab title="CLI">

38 **Durante una sesión**: presiona `Shift+Tab` para ciclar `default` → `acceptEdits` → `plan`. El modo actual aparece en la barra de estado. No todos los modos están en el ciclo predeterminado:38 **Durante una sesión**: presiona `Shift+Tab` para ciclar `default` → `acceptEdits` → `plan`. El modo actual aparece en la barra de estado. No todos los modos están en el ciclo predeterminado:

39 39 

40 * `auto`: aparece cuando tu cuenta cumple los [requisitos del modo auto](#eliminate-prompts-with-auto-mode); ciclar hacia auto muestra un aviso de aceptación hasta que lo aceptes, o selecciona **No, no vuelvas a preguntar** para eliminar auto del ciclo40 * `auto`: aparece cuando tu cuenta cumple los [requisitos del modo auto](#eliminate-prompts-with-auto-mode); ciclar hacia él cambia modos sin un aviso de confirmación

41 * `bypassPermissions`: aparece después de que inicies con `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, o `--allow-dangerously-skip-permissions`; la variante `--allow-` añade el modo al ciclo sin activarlo41 * `bypassPermissions`: aparece después de que inicies con `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, o `--allow-dangerously-skip-permissions`; la variante `--allow-` añade el modo al ciclo sin activarlo

42 * `dontAsk`: nunca aparece en el ciclo; establécelo con `--permission-mode dontAsk`42 * `dontAsk`: nunca aparece en el ciclo; establécelo con `--permission-mode dontAsk`

43 43 


188 188 

189* **Plan**: Todos los planes.189* **Plan**: Todos los planes.

190* **Propietario**: en Team y Enterprise, un Propietario debe habilitarlo en [configuración de administrador de Claude Code](https://claude.ai/admin-settings/claude-code) antes de que los usuarios puedan activarlo. Los administradores también pueden bloquearlo estableciendo `permissions.disableAutoMode` a `"disable"` en [configuración administrada](/es/permissions#managed-settings).190* **Propietario**: en Team y Enterprise, un Propietario debe habilitarlo en [configuración de administrador de Claude Code](https://claude.ai/admin-settings/claude-code) antes de que los usuarios puedan activarlo. Los administradores también pueden bloquearlo estableciendo `permissions.disableAutoMode` a `"disable"` en [configuración administrada](/es/permissions#managed-settings).

191* **Modelo**: en la API de Anthropic, Claude Opus 4.6 o posterior, o Sonnet 4.6. En Amazon Bedrock, Google Cloud Vertex AI, y Microsoft Foundry, solo Claude Opus 4.7 y Opus 4.8. Los modelos más antiguos, incluyendo Sonnet 4.5, Opus 4.5, Haiku, y modelos claude-3, no son compatibles en ningún proveedor.191* **Modelo**: en la API de Anthropic, Claude Opus 4.6 o posterior, o Sonnet 4.6 o posterior. En Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry, y sesiones de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada, solo Claude Sonnet 5, Opus 4.7 y Opus 4.8. Los modelos más antiguos, incluyendo Sonnet 4.5, Opus 4.5, Haiku, y modelos claude-3, no son compatibles en ningún proveedor.

192* **Proveedor**: disponible por defecto en la API de Anthropic. En Amazon Bedrock, Google Cloud Vertex AI, y Microsoft Foundry, el modo automático está desactivado hasta que [establezca `CLAUDE_CODE_ENABLE_AUTO_MODE`](#enable-auto-mode-on-bedrock-vertex-ai-or-foundry).192* **Proveedor**: disponible por defecto en la API de Anthropic. En Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry, y sesiones de puerta de enlace de aplicaciones Claude con sesión iniciada, el modo automático está desactivado hasta que [establezca `CLAUDE_CODE_ENABLE_AUTO_MODE`](#enable-auto-mode-on-bedrock-vertex-ai-or-foundry).

193 193 

194Si Claude Code reporta el modo automático como no disponible, uno de estos requisitos no se cumple; esto no es una interrupción transitoria. Un mensaje separado que nombra un modelo y dice que el modo automático "no puede determinar la seguridad" de una acción es una interrupción transitoria del clasificador; consulte la [referencia de errores](/es/errors#auto-mode-cannot-determine-the-safety-of-an-action).194Si Claude Code reporta el modo automático como no disponible, uno de estos requisitos no se cumple; esto no es una interrupción transitoria. Un mensaje separado que nombra un modelo y dice que el modo automático "no puede determinar la seguridad" de una acción es una interrupción transitoria del clasificador; consulte la [referencia de errores](/es/errors#auto-mode-cannot-determine-the-safety-of-an-action).

195 195 


199 Habilitar modo automático en Bedrock, Vertex AI, o Foundry199 Habilitar modo automático en Bedrock, Vertex AI, o Foundry

200</h3>200</h3>

201 201 

202En [Amazon Bedrock](/es/amazon-bedrock), [Google Cloud Vertex AI](/es/google-vertex-ai), y [Microsoft Foundry](/es/microsoft-foundry), el modo automático no aparece en el ciclo `Shift+Tab` hasta que `CLAUDE_CODE_ENABLE_AUTO_MODE` se establezca en `1`. La variable funciona en Claude Code v2.1.158 y posterior. Solo Claude Opus 4.7 y Opus 4.8 son compatibles en estos proveedores.202En [Amazon Bedrock](/es/amazon-bedrock), [Google Cloud Vertex AI](/es/google-vertex-ai), [Microsoft Foundry](/es/microsoft-foundry), y sesiones de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada, el modo automático no aparece en el ciclo `Shift+Tab` hasta que `CLAUDE_CODE_ENABLE_AUTO_MODE` se establezca en `1`. La variable funciona en Claude Code v2.1.158 y posterior. Solo Claude Sonnet 5, Opus 4.7 y Opus 4.8 son compatibles en estos proveedores.

203 203 

204Para habilitarlo para un desarrollador, añada la variable al bloque `env` en `~/.claude/settings.json`:204Para habilitarlo para un desarrollador, añada la variable al bloque `env` en `~/.claude/settings.json`:

205 205 


217 217 

218Para evitar que los desarrolladores habiliten el modo automático, establezca `disableAutoMode` a `"disable"` en configuración administrada. Esto anula la variable de habilitación.218Para evitar que los desarrolladores habiliten el modo automático, establezca `disableAutoMode` a `"disable"` en configuración administrada. Esto anula la variable de habilitación.

219 219 

220Si se conecta a través de una [puerta de enlace LLM](/es/llm-gateway) configurada con `ANTHROPIC_BASE_URL`, el modo automático puede ya ser alcanzable sin la variable de habilitación, porque la puerta de enlace enruta solicitudes a través de la API de Anthropic. La configuración `disableAutoMode` se aplica de la misma manera en esa configuración.220Si se conecta a través de una [puerta de enlace LLM](/es/llm-gateway) configurada con `ANTHROPIC_BASE_URL`, el modo automático puede ya ser alcanzable sin la variable de habilitación, porque la puerta de enlace enruta solicitudes a través de la API de Anthropic. Esto no se aplica a una sesión de [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) con sesión iniciada, que es su propia clase de proveedor y requiere la variable de habilitación. La configuración `disableAutoMode` se aplica de la misma manera en cualquiera de las dos configuraciones.

221 221 

222<h3 id="what-the-classifier-blocks-by-default">222<h3 id="what-the-classifier-blocks-by-default">

223 Qué bloquea el clasificador por defecto223 Qué bloquea el clasificador por defecto


239* `git commit --amend` cuando la confirmación en HEAD no fue creada en esta sesión239* `git commit --amend` cuando la confirmación en HEAD no fue creada en esta sesión

240* `terraform destroy`, `pulumi destroy`, `cdk destroy`, o `terragrunt destroy`, y aplicar un plan que destruye recursos240* `terraform destroy`, `pulumi destroy`, `cdk destroy`, o `terragrunt destroy`, y aplicar un plan que destruye recursos

241 241 

242Claude Code v2.1.195 y posterior bloquean más categorías por defecto. Varias dependen de entradas de [entorno](/es/auto-mode-config#define-trusted-infrastructure), como objetivos remotos sensibles y alcances de IaC protegidos, que puede reducir a nombres concretos.

243 

244* Escribir en un gestor de secretos, o cambiar registros DNS o certificados TLS

245* Fusionar una solicitud de extracción que ningún humano ha aprobado, aprobar la propia solicitud de extracción de Claude, o deshabilitar verificaciones de CI

246* Publicar un comentario que es en sí mismo un comando para automatización, como `atlantis apply` o `/deploy` o `/merge` de un bot

247* Alternar, ramificar, o eliminar una bandera de característica de producción

248* Aplicar cambios de infraestructura a un alcance de IaC protegido, o drenar y eliminar nodos de clúster

249* Escrituras en un clúster de cómputo compartido que van más allá del recurso que nombró, como un selector de etiqueta o `--all` que captura trabajos de otros usuarios

250* Crear recursos de Kubernetes que se ejecutan en cada nodo o interceptan tráfico de clúster, como DaemonSets y webhooks de admisión

251* Shells interactivos o port-forwards en un objetivo remoto sensible

252* Abrir un túnel o shell inverso que hace que un servicio local sea alcanzable desde internet pública

253* Imprimir una credencial o token en vivo en la transcripción o un archivo

254* Acceder a una ubicación de PII o datos regulados, o copiar datos fuera de una

255* Enrutar una instalación de paquete alrededor de su registro de paquetes interno a un registro público

256* Ejecutar un comando con una bandera que desactiva una protección de seguridad, como `--insecure`

257* Acciones del navegador de [Claude en Chrome](/es/chrome) que podrían enviar contenido de página, cookies, o credenciales fuera de origen

258 

242**Permitido por defecto**:259**Permitido por defecto**:

243 260 

244* Operaciones de archivos locales en su directorio de trabajo261* Operaciones de archivos locales en su directorio de trabajo


247* Solicitudes HTTP de solo lectura264* Solicitudes HTTP de solo lectura

248* Empujar a la rama en la que comenzó o una que Claude creó265* Empujar a la rama en la que comenzó o una que Claude creó

249 266 

267Claude Code v2.1.195 y posterior también permiten estos por defecto:

268 

269* Eliminar los trabajos exactos que Claude creó anteriormente en la misma sesión

270* Leer, revisar, o escribir código relacionado con seguridad, configuraciones, y modelos de amenaza como parte de su tarea

271* Mensajes entre agentes trabajando juntos en la misma sesión multiagente

272* Enviar datos a los dominios confiables, depósitos, y servicios que lista en [`environment`](/es/auto-mode-config#define-trusted-infrastructure). Esto cubre solo el flujo de datos, no operaciones destructivas o de credenciales en la misma infraestructura

273* Navegación de [Claude en Chrome](/es/chrome) a un dominio interno confiable, localhost, o una URL que nombró

274 

250Las solicitudes de acceso de red de sandbox se enrutan a través del clasificador en lugar de permitirse por defecto. Ejecute `claude auto-mode defaults` para ver las listas de reglas completas. Si las acciones rutinarias se bloquean, un administrador puede añadir repositorios confiables, depósitos y servicios a través de la configuración `autoMode.environment`: consulte [Configurar modo automático](/es/auto-mode-config).275Las solicitudes de acceso de red de sandbox se enrutan a través del clasificador en lugar de permitirse por defecto. Ejecute `claude auto-mode defaults` para ver las listas de reglas completas. Si las acciones rutinarias se bloquean, un administrador puede añadir repositorios confiables, depósitos y servicios a través de la configuración `autoMode.environment`: consulte [Configurar modo automático](/es/auto-mode-config).

251 276 

252<h3 id="boundaries-you-state-in-conversation">277<h3 id="boundaries-you-state-in-conversation">

permissions.md +35 −24

Details

24 Administrar permisos24 Administrar permisos

25</h2>25</h2>

26 26 

27Puede ver y administrar los permisos de herramientas de Claude Code con `/permissions`. Esta interfaz de usuario enumera todas las reglas de permisos y el archivo settings.json del que se obtienen.27Puede ver y administrar los permisos de herramientas de Claude Code con `/permissions`. Esta interfaz de usuario enumera todas las reglas de permisos y el archivo `settings.json` del que se obtienen.

28 28 

29* Las reglas **Allow** permiten que Claude Code use la herramienta especificada sin aprobación manual.29* Las reglas **Allow** permiten que Claude Code use la herramienta especificada sin aprobación manual.

30* Las reglas **Ask** solicitan confirmación cada vez que Claude Code intenta usar la herramienta especificada.30* Las reglas **Ask** solicitan confirmación cada vez que Claude Code intenta usar la herramienta especificada.

31* Las reglas **Deny** impiden que Claude Code use la herramienta especificada.31* Las reglas **Deny** impiden que Claude Code use la herramienta especificada.

32 32 

33Las 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. Una 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.33Las 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.

34 

35Una 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.

34 36 

35Las 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. Una regla delimitada como `Bash(rm *)` deja la herramienta disponible y bloquea las llamadas coincidentes cuando Claude intenta usarlas.37Las 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. Una regla delimitada como `Bash(rm *)` deja la herramienta disponible y bloquea las llamadas coincidentes cuando Claude intenta usarlas.

36 38 


42 Modos de permisos44 Modos de permisos

43</h2>45</h2>

44 46 

45Claude Code admite varios modos de permisos que controlan cómo se aprueban las herramientas. Consulte [Modos de permisos](/es/permission-modes) para saber cuándo usar cada uno. Establezca `defaultMode` en sus [archivos de configuración](/es/settings#settings-files):47Claude Code admite varios modos de permisos que controlan cómo se aprueban las llamadas de herramientas. Consulte [Modos de permisos](/es/permission-modes) para saber cuándo usar cada uno. Establezca `defaultMode` en sus [archivos de configuración](/es/settings#settings-files):

46 48 

47| Modo | Descripción |49| Modo | Descripción |

48| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |50| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `default` | Comportamiento estándar: solicita permiso en el primer uso de cada herramienta |51| `default` | Comportamiento estándar: solicita permiso en el primer uso de cada herramienta |

50| `acceptEdits` | Acepta automáticamente ediciones de archivos y comandos comunes del sistema de archivos (`mkdir`, `touch`, `mv`, `cp`, etc.) para rutas en el directorio de trabajo o `additionalDirectories` |52| `acceptEdits` | Acepta automáticamente ediciones de archivos y comandos comunes del sistema de archivos como `mkdir`, `touch`, `mv` y `cp` para rutas en el directorio de trabajo o `additionalDirectories` |

51| `plan` | Plan Mode: Claude lee archivos y ejecuta comandos de shell de solo lectura para explorar pero no edita sus archivos de origen |53| `plan` | Plan Mode: Claude lee archivos y ejecuta comandos de shell de solo lectura para explorar pero no edita sus archivos de origen |

52| `auto` | Auto-aprueba llamadas de herramientas con comprobaciones de seguridad en segundo plano que verifican que las acciones se alineen con su solicitud. Actualmente una vista previa de investigación |54| `auto` | Auto-aprueba llamadas de herramientas con comprobaciones de seguridad en segundo plano que verifican que las acciones se alineen con su solicitud. Actualmente una vista previa de investigación |

53| `dontAsk` | Deniega automáticamente las herramientas a menos que estén preaprobadas a través de `/permissions` o reglas `permissions.allow` |55| `dontAsk` | Deniega automáticamente las herramientas a menos que estén preaprobadas a través de `/permissions` o reglas `permissions.allow` |

54| `bypassPermissions` | Omite avisos de permisos, excepto aquellos forzados por reglas `ask` explícitas. Las eliminaciones de directorio raíz y directorio de inicio como `rm -rf /` y `rm -rf ~` aún solicitan como un disyuntor de circuito |56| `bypassPermissions` | Omite avisos de permisos, excepto aquellos forzados por reglas `ask` explícitas. Las eliminaciones de directorio raíz y directorio de inicio como `rm -rf /` también aún solicitan como un disyuntor de circuito |

55 57 

56<Warning>58<Warning>

57 El modo `bypassPermissions` omite avisos de permisos, incluyendo escrituras en `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, y `.mvn`. Las reglas `ask` explícitas aún fuerzan un aviso, y las eliminaciones dirigidas al directorio raíz del sistema de archivos o al directorio de inicio, como `rm -rf /` y `rm -rf ~`, aún solicitan como un disyuntor de circuito contra errores del modelo. Use este modo solo en entornos aislados como contenedores o máquinas virtuales donde Claude Code no pueda causar daño. Los administradores pueden evitar este modo estableciendo `permissions.disableBypassPermissionsMode` en `"disable"` en [configuración administrada](#managed-settings).59 El modo `bypassPermissions` omite avisos de permisos, incluyendo escrituras en `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn` y `.mvn`. Las reglas `ask` explícitas aún fuerzan un aviso, y las eliminaciones dirigidas al directorio raíz del sistema de archivos o al directorio de inicio, como `rm -rf /` y `rm -rf ~`, aún solicitan como un disyuntor de circuito contra errores del modelo. Use este modo solo en entornos aislados como contenedores o máquinas virtuales donde Claude Code no pueda causar daño.

58</Warning>60</Warning>

59 61 

60Para evitar que se use el modo `bypassPermissions` o `auto`, establezca `permissions.disableBypassPermissionsMode` o `permissions.disableAutoMode` en `"disable"` en cualquier [archivo de configuración](/es/settings#settings-files). Estos son más útiles en [configuración administrada](#managed-settings) donde no pueden ser anulados.62Para evitar que se use el modo `bypassPermissions` o `auto`, establezca `permissions.disableBypassPermissionsMode` o `permissions.disableAutoMode` en `"disable"` en cualquier [archivo de configuración](/es/settings#settings-files). Estos son más útiles en [configuración administrada](#managed-settings) donde no pueden ser anulados.


95 Coincidir por parámetro de entrada97 Coincidir por parámetro de entrada

96</h3>98</h3>

97 99 

98Las reglas de denegación y solicitud pueden coincidir con un parámetro de entrada de nivel superior en cualquier herramienta con `Tool(param:value)`. La regla coincide cuando Claude llama a la herramienta con ese parámetro establecido en ese valor exacto. Esta sintaxis es para reglas de denegación y solicitud; una regla de permiso para un valor de parámetro no establecería que la llamada sea segura en general, por lo que las reglas de permiso continúan usando la sintaxis de especificador propia de cada herramienta. Esto funciona para cualquier parámetro escalar que acepte la herramienta:100Las reglas de denegación y solicitud pueden coincidir con un parámetro de entrada de nivel superior en cualquier herramienta con `Tool(param:value)`. La regla coincide cuando Claude llama a la herramienta con ese parámetro establecido en ese valor exacto. Una regla de permiso para un valor de parámetro no establecería que la llamada sea segura en general, por lo que las reglas de permiso continúan usando la sintaxis de especificador propia de cada herramienta. Esto funciona para cualquier parámetro escalar que acepte la herramienta:

99 101 

100| Regla | Coincide |102| Regla | Coincide |

101| :----------------------------- | :------------------------------------------------------ |103| :----------------------------- | :------------------------------------------------------ |


220 222 

221 * Opciones antes de URL: `curl -X GET http://github.com/...`223 * Opciones antes de URL: `curl -X GET http://github.com/...`

222 * Protocolo diferente: `curl https://github.com/...`224 * Protocolo diferente: `curl https://github.com/...`

223 * Redirecciones: `curl -L http://bit.ly/xyz` (redirige a github)225 * Redirecciones: `curl -L http://bit.ly/xyz`, que redirige a GitHub

224 * Variables: `URL=http://github.com && curl $URL`226 * Variables: `URL=http://github.com && curl $URL`

225 * Espacios adicionales: `curl http://github.com`227 * Espacios adicionales: `curl http://github.com`

226 228 


270Las reglas Read y Edit siguen la especificación [gitignore](https://git-scm.com/docs/gitignore) con cuatro tipos de patrones distintos:272Las reglas Read y Edit siguen la especificación [gitignore](https://git-scm.com/docs/gitignore) con cuatro tipos de patrones distintos:

271 273 

272| Patrón | Significado | Ejemplo | Coincide |274| Patrón | Significado | Ejemplo | Coincide |

273| ----------------- | ------------------------------------------------------- | -------------------------------- | ------------------------------ |275| ----------------- | --------------------------------------------------- | -------------------------------- | ------------------------------ |

274| `//path` | Ruta **absoluta** desde la raíz del sistema de archivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |276| `//path` | Ruta absoluta desde la raíz del sistema de archivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

275| `~/path` | Ruta desde el directorio **home** | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |277| `~/path` | Ruta desde el directorio home | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

276| `/path` | Ruta **relativa a la raíz del proyecto** | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |278| `/path` | Ruta relativa a la raíz del proyecto | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |

277| `path` o `./path` | Ruta **relativa al directorio actual** | `Read(*.env)` | `<cwd>/*.env` |279| `path` o `./path` | Ruta relativa al directorio actual | `Read(*.env)` | `<cwd>/*.env` |

278 280 

279<Warning>281<Warning>

280 Un patrón como `/Users/alice/file` NO es una ruta absoluta. Es relativa a la raíz del proyecto. Use `//Users/alice/file` para rutas absolutas.282 Un patrón como `/Users/alice/file` NO es una ruta absoluta. Es relativa a la raíz del proyecto. Use `//Users/alice/file` para rutas absolutas.


284 286 

285Ejemplos:287Ejemplos:

286 288 

287* `Edit(/docs/**)`: edita en `<project>/docs/` (NO `/docs/` y NO `<project>/.claude/docs/`)289* `Edit(/docs/**)`: edita en `<project>/docs/`, no `/docs/` o `<project>/.claude/docs/`

288* `Read(~/.zshrc)`: lee el `.zshrc` de su directorio home290* `Read(~/.zshrc)`: lee el `.zshrc` de su directorio home

289* `Edit(//tmp/scratch.txt)`: edita la ruta absoluta `/tmp/scratch.txt`291* `Edit(//tmp/scratch.txt)`: edita la ruta absoluta `/tmp/scratch.txt`

290* `Read(src/**)`: lee desde `<current-directory>/src/`292* `Read(src/**)`: lee desde `<current-directory>/src/`


323 MCP325 MCP

324</h3>326</h3>

325 327 

326* `mcp__puppeteer` coincide con cualquier herramienta proporcionada por el servidor `puppeteer` (nombre configurado en Claude Code)328Las reglas MCP usan el nombre del servidor tal como se configura en Claude Code, opcionalmente seguido del nombre de una herramienta de ese servidor.

327* `mcp__puppeteer__*` sintaxis de comodín que también coincide con todas las herramientas del servidor `puppeteer`329 

330* `mcp__puppeteer` coincide con cualquier herramienta proporcionada por el servidor `puppeteer`

331* `mcp__puppeteer__*` usa sintaxis de comodín y también coincide con todas las herramientas del servidor `puppeteer`

328* `mcp__puppeteer__puppeteer_navigate` coincide con la herramienta `puppeteer_navigate` proporcionada por el servidor `puppeteer`332* `mcp__puppeteer__puppeteer_navigate` coincide con la herramienta `puppeteer_navigate` proporcionada por el servidor `puppeteer`

329 333 

330<h3 id="agent-subagents">334<h3 id="agent-subagents">


418 422 

419Los permisos y el [sandboxing](/es/sandboxing) son capas de seguridad complementarias:423Los permisos y el [sandboxing](/es/sandboxing) son capas de seguridad complementarias:

420 424 

421* **Permisos** controlan qué herramientas puede usar Claude Code y qué archivos o dominios puede acceder. Se aplican a todas las herramientas (Bash, Read, Edit, WebFetch, MCP y otras).425* **Permisos** controlan qué herramientas puede usar Claude Code y qué archivos o dominios puede acceder. Se aplican a todas las herramientas, incluyendo Bash, Read, Edit, WebFetch, y MCP.

422* **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.426* **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.

423 427 

424Use ambos para defensa en profundidad:428Use ambos para defensa en profundidad:


428* Las restricciones del sistema de archivos en el sandbox combinan la configuración [`sandbox.filesystem`](/es/sandboxing) con reglas de negación Read y Edit; ambas se fusionan en el límite final del sandbox432* Las restricciones del sistema de archivos en el sandbox combinan la configuración [`sandbox.filesystem`](/es/sandboxing) con reglas de negación Read y Edit; ambas se fusionan en el límite final del sandbox

429* Las restricciones de red combinan reglas de permisos WebFetch con las listas `allowedDomains` y `deniedDomains` del sandbox433* Las restricciones de red combinan reglas de permisos WebFetch con las listas `allowedDomains` y `deniedDomains` del sandbox

430 434 

431Cuando el sandboxing está habilitado con `autoAllowBashIfSandboxed: true`, que es el valor predeterminado, los comandos Bash en sandbox se ejecutan sin solicitar incluso si sus permisos incluyen una regla ask `Bash` simple, o la [forma equivalente `Bash(*)`](#match-all-uses-of-a-tool): el límite del sandbox sustituye ese aviso de herramienta completa. Las reglas ask con alcance de contenido como `Bash(git push *)` aún fuerzan un aviso, las reglas de negación explícitas aún se aplican, y los comandos `rm` o `rmdir` que apunten a `/`, su directorio de inicio u otras rutas críticas del sistema aún desencadenan un aviso. Los comandos que no se ejecutarán en sandbox, como comandos excluidos, respetan la regla ask `Bash` simple como es habitual. Consulte [modos de sandbox](/es/sandboxing#sandbox-modes) para cambiar este comportamiento.435Cuando el sandboxing está habilitado con `autoAllowBashIfSandboxed: true`, que es el valor predeterminado, los comandos Bash en sandbox se ejecutan sin solicitar incluso si sus permisos incluyen una regla ask `Bash` simple, o la [forma equivalente `Bash(*)`](#match-all-uses-of-a-tool): el límite del sandbox sustituye ese aviso de herramienta completa. Estas comprobaciones aún se aplican:

436 

437* Las reglas ask con alcance de contenido como `Bash(git push *)` aún fuerzan un aviso

438* Las reglas de negación explícitas aún se aplican

439* Los comandos `rm` o `rmdir` que apunten a `/`, su directorio de inicio u otras rutas críticas del sistema aún desencadenan un aviso

440 

441Los comandos que no se ejecutarán en sandbox, como comandos excluidos, respetan la regla ask `Bash` simple como es habitual. Consulte [modos de sandbox](/es/sandboxing#sandbox-modes) para cambiar este comportamiento.

432 442 

433<h2 id="managed-settings">443<h2 id="managed-settings">

434 Configuración administrada444 Configuración administrada

435</h2>445</h2>

436 446 

437Para organizaciones que necesitan control centralizado sobre la configuración de Claude Code, los administradores pueden implementar configuración administrada que no puede ser anulada por configuración de usuario o proyecto. Estas configuraciones de política siguen el mismo formato que archivos de configuración regulares y se pueden entregar a través de políticas MDM/a nivel del SO, archivos de configuración administrada o [configuración administrada por servidor](/es/server-managed-settings). Consulte [archivos de configuración](/es/settings#settings-files) para mecanismos de entrega y ubicaciones de archivos.447Para organizaciones que necesitan control centralizado sobre la configuración de Claude Code, los administradores pueden implementar configuración administrada que no puede ser anulada por configuración de usuario o proyecto. Estas configuraciones de política siguen el mismo formato que archivos de configuración regulares y se pueden entregar a través de políticas MDM/a nivel del SO, archivos de configuración administrada, [configuración administrada por servidor](/es/server-managed-settings), o una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) autohospedada. Consulte [archivos de configuración](/es/settings#settings-files) para mecanismos de entrega y ubicaciones de archivos.

438 448 

439<h3 id="managed-only-settings">449<h3 id="managed-only-settings">

440 Configuración solo administrada450 Configuración solo administrada


443Las siguientes configuraciones solo se leen desde configuración administrada. Colocarlas en archivos de configuración de usuario o proyecto no tiene efecto.453Las siguientes configuraciones solo se leen desde configuración administrada. Colocarlas en archivos de configuración de usuario o proyecto no tiene efecto.

444 454 

445| Configuración | Descripción |455| Configuración | Descripción |

446| :--------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |456| :--------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

447| `allowAllClaudeAiMcps` | Cuando es `true`, los conectores de claude.ai se cargan junto con un `managed-mcp.json` implementado en lugar de ser suprimidos por su control exclusivo. Consulte [Configuración MCP administrada](/es/managed-mcp) |457| `allowAllClaudeAiMcps` | Cuando es `true`, los conectores de claude.ai se cargan junto con un `managed-mcp.json` implementado en lugar de ser suprimidos por su control exclusivo. Consulte [Configuración MCP administrada](/es/managed-mcp) |

448| `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](/es/channels#restrict-which-channel-plugins-can-run) |458| `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](/es/channels#restrict-which-channel-plugins-can-run) |

449| `allowManagedHooksOnly` | Cuando es `true`, solo se cargan hooks administrados, hooks SDK y hooks de plugins forzados habilitados en la configuración administrada `enabledPlugins`. Los hooks de usuario, proyecto y todos los demás plugins están bloqueados |459| `allowManagedHooksOnly` | Cuando es `true`, solo se cargan hooks administrados, hooks SDK y hooks de plugins forzados habilitados en la configuración administrada `enabledPlugins`. Los hooks de usuario, proyecto y todos los demás plugins están bloqueados |


451| `allowManagedPermissionRulesOnly` | Cuando es `true`, evita que la configuración de usuario y proyecto defina reglas de permisos `allow`, `ask` o `deny`. Solo se aplican las reglas en configuración administrada. No afecta la lista de permitidos del servidor MCP; para eso, establezca `allowManagedMcpServersOnly` |461| `allowManagedPermissionRulesOnly` | Cuando es `true`, evita que la configuración de usuario y proyecto defina reglas de permisos `allow`, `ask` o `deny`. Solo se aplican las reglas en configuración administrada. No afecta la lista de permitidos del servidor MCP; para eso, establezca `allowManagedMcpServersOnly` |

452| `blockedMarketplaces` | Lista de bloqueo de fuentes de marketplace. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de marketplace administradas](/es/plugin-marketplaces#managed-marketplace-restrictions) |462| `blockedMarketplaces` | Lista de bloqueo de fuentes de marketplace. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de marketplace administradas](/es/plugin-marketplaces#managed-marketplace-restrictions) |

453| `channelsEnabled` | Permitir [channels](/es/channels) para la organización. Consulte [controles empresariales](/es/channels#enterprise-controls) para el valor predeterminado en cada plan |463| `channelsEnabled` | Permitir [channels](/es/channels) para la organización. Consulte [controles empresariales](/es/channels#enterprise-controls) para el valor predeterminado en cada plan |

464| `disableSideloadFlags` | {/* min-version: 2.1.193 */}Rechazar los indicadores CLI `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al inicio. Sin esto, los usuarios pueden eludir `strictKnownMarketplaces` para una única ejecución pasando estos indicadores. Consulte [`disableSideloadFlags`](/es/settings#available-settings). Requiere Claude Code v2.1.193 o posterior |

454| `forceRemoteSettingsRefresh` | Cuando es `true`, bloquea el inicio de CLI hasta que la configuración administrada remota se obtenga recientemente y sale si la obtención falla. Consulte [aplicación de cierre de falla](/es/server-managed-settings#enforce-fail-closed-startup) |465| `forceRemoteSettingsRefresh` | Cuando es `true`, bloquea el inicio de CLI hasta que la configuración administrada remota se obtenga recientemente y sale si la obtención falla. Consulte [aplicación de cierre de falla](/es/server-managed-settings#enforce-fail-closed-startup) |

455| `pluginTrustMessage` | Mensaje personalizado agregado a la advertencia de confianza de plugin mostrada antes de la instalación |466| `pluginTrustMessage` | Mensaje personalizado agregado a la advertencia de confianza de plugin mostrada antes de la instalación |

456| `sandbox.filesystem.allowManagedReadPathsOnly` | Cuando es `true`, solo se respetan rutas `filesystem.allowRead` de configuración administrada. `denyRead` aún se fusiona de todas las fuentes |467| `sandbox.filesystem.allowManagedReadPathsOnly` | Cuando es `true`, solo se respetan rutas `filesystem.allowRead` de configuración administrada. `denyRead` aún se fusiona de todas las fuentes |


462`disableBypassPermissionsMode` generalmente se coloca en configuración administrada para aplicar la política organizacional, pero funciona desde cualquier alcance. Un usuario puede establecerlo en su propia configuración para bloquearse a sí mismo del modo de bypass.473`disableBypassPermissionsMode` generalmente se coloca en configuración administrada para aplicar la política organizacional, pero funciona desde cualquier alcance. Un usuario puede establecerlo en su propia configuración para bloquearse a sí mismo del modo de bypass.

463 474 

464<Note>475<Note>

465 En planes Team y Enterprise, un administrador habilita o deshabilita [Remote Control](/es/remote-control) y [sesiones web](/es/claude-code-on-the-web) en toda la organización en [configuración de administrador de Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control puede deshabilitarse adicionalmente por dispositivo con la configuración administrada [`disableRemoteControl`](/es/settings#available-settings). Las sesiones web no tienen clave de configuración administrada por dispositivo.476 En planes Team y Enterprise, un propietario habilita o deshabilita [Remote Control](/es/remote-control) y [sesiones web](/es/claude-code-on-the-web) en toda la organización en [configuración de administrador de Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control puede deshabilitarse adicionalmente por dispositivo con la configuración [`disableRemoteControl`](/es/settings#available-settings). Las sesiones web no tienen clave de configuración administrada por dispositivo.

466</Note>477</Note>

467 478 

468<h2 id="settings-precedence">479<h2 id="settings-precedence">


479 490 

480Si una herramienta se deniega en cualquier nivel, ningún otro nivel puede permitirla. Por ejemplo, una negación de configuración administrada no puede ser anulada por `--allowedTools`, y `--disallowedTools` puede agregar restricciones más allá de lo que define la configuración administrada.491Si una herramienta se deniega en cualquier nivel, ningún otro nivel puede permitirla. Por ejemplo, una negación de configuración administrada no puede ser anulada por `--allowedTools`, y `--disallowedTools` puede agregar restricciones más allá de lo que define la configuración administrada.

481 492 

482Los hosts de inserción pueden proporcionar política administrada adicional a través de la opción `managedSettings` del SDK cuando [`parentSettingsBehavior`](/es/settings#settings-precedence) se establece en `"merge"`; los valores del integrador pueden restringir la política pero no flexibilizarla.493Lo mismo se aplica en todos los ámbitos de configuración: si la configuración de usuario permite un permiso y la configuración de proyecto lo deniega, la regla de negación lo bloquea. Lo contrario también es cierto: una negación a nivel de usuario bloquea un permiso a nivel de proyecto, porque las reglas de negación de cualquier ámbito se evalúan antes que las reglas de permiso.

483 494 

484Por ejemplo, si la configuración de usuario permite un permiso y la configuración de proyecto lo deniega, la regla de negación lo bloquea. Lo contrario también es cierto: una negación a nivel de usuario bloquea un permiso a nivel de proyecto, porque las reglas de negación de cualquier ámbito se evalúan antes que las reglas de permiso.495Los hosts de inserción pueden proporcionar política administrada adicional a través de la opción `managedSettings` del SDK cuando [`parentSettingsBehavior`](/es/settings#settings-precedence) se establece en `"merge"`; los valores del integrador pueden restringir la política pero no flexibilizarla.

485 496 

486<h2 id="example-configurations">497<h2 id="example-configurations">

487 Configuraciones de ejemplo498 Configuraciones de ejemplo

Details

102 102 

103Cuando instala un plugin que declara `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code lista las etiquetas del marketplace, filtra las que comienzan con `secrets-vault--v`, y obtiene la versión más alta que satisface `~2.1.0`. Si no existe una etiqueta coincidente, el plugin dependiente se deshabilita con un error que lista las versiones disponibles.103Cuando instala un plugin que declara `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code lista las etiquetas del marketplace, filtra las que comienzan con `secrets-vault--v`, y obtiene la versión más alta que satisface `~2.1.0`. Si no existe una etiqueta coincidente, el plugin dependiente se deshabilita con un error que lista las versiones disponibles.

104 104 

105Un marketplace agregado como una ruta de carpeta local resuelve etiquetas de la misma manera cuando la carpeta es un repositorio de git. Esto requiere Claude Code v2.1.196 o posterior. En dos casos Claude Code instala la dependencia desde el contenido actual de la carpeta en su lugar:

106 

107* Las versiones anteriores no leen etiquetas de un marketplace de carpeta local, por lo que una dependencia restringida se carga solo si esa copia satisface el rango.

108* Una carpeta local que no es un repositorio de git no tiene etiquetas, independientemente de la versión.

109 

105La versión semver de la etiqueta resuelta se registra por separado del `version` de `plugin.json`, por lo que las verificaciones de restricción utilizan la etiqueta que se obtuvo realmente incluso si el `plugin.json` en ese commit tiene un valor obsoleto. El nombre del directorio de caché para una instalación resuelta por etiqueta incluye un sufijo SHA de commit de 12 caracteres, por lo que si un mantenedor mueve forzadamente una etiqueta a un commit diferente, la siguiente instalación obtiene un directorio de caché nuevo en lugar de reutilizar contenido obsoleto.110La versión semver de la etiqueta resuelta se registra por separado del `version` de `plugin.json`, por lo que las verificaciones de restricción utilizan la etiqueta que se obtuvo realmente incluso si el `plugin.json` en ese commit tiene un valor obsoleto. El nombre del directorio de caché para una instalación resuelta por etiqueta incluye un sufijo SHA de commit de 12 caracteres, por lo que si un mantenedor mueve forzadamente una etiqueta a un commit diferente, la siguiente instalación obtiene un directorio de caché nuevo en lugar de reutilizar contenido obsoleto.

106 111 

107<Note>112<Note>

Details

6 6 

7> Cree y aloje marketplaces de plugins para distribuir extensiones de Claude Code en equipos y comunidades.7> Cree y aloje marketplaces de plugins para distribuir extensiones de Claude Code en equipos y comunidades.

8 8 

9Un **marketplace de plugins** es un catálogo que le permite distribuir plugins a otros. Los marketplaces proporcionan descubrimiento centralizado, seguimiento de versiones, actualizaciones automáticas y soporte para múltiples tipos de fuentes (repositorios git, rutas locales y más). Esta guía le muestra cómo crear su propio marketplace para compartir plugins con su equipo o comunidad.9Un **marketplace de plugins** es un catálogo que le permite distribuir plugins a otros. Los marketplaces proporcionan descubrimiento centralizado, seguimiento de versiones, actualizaciones automáticas y soporte para múltiples tipos de fuentes, incluyendo repositorios git y rutas locales. Esta guía le muestra cómo crear su propio marketplace para compartir plugins con su equipo o comunidad.

10 10 

11¿Busca instalar plugins desde un marketplace existente? Consulte [Descubrir e instalar plugins precompilados](/es/discover-plugins).11¿Busca instalar plugins desde un marketplace existente? Consulte [Descubrir e instalar plugins precompilados](/es/discover-plugins).

12 12 


17Crear y distribuir un marketplace implica:17Crear y distribuir un marketplace implica:

18 18 

191. **Crear plugins**: construya uno o más plugins con skills, agentes, hooks, servidores MCP o servidores LSP. Esta guía asume que ya tiene plugins para distribuir; consulte [Crear plugins](/es/plugins) para obtener detalles sobre cómo crearlos.191. **Crear plugins**: construya uno o más plugins con skills, agentes, hooks, servidores MCP o servidores LSP. Esta guía asume que ya tiene plugins para distribuir; consulte [Crear plugins](/es/plugins) para obtener detalles sobre cómo crearlos.

202. **Crear un archivo de marketplace**: defina un `marketplace.json` que enumere sus plugins y dónde encontrarlos (consulte [Crear el archivo de marketplace](#create-the-marketplace-file)).202. **Crear el archivo de marketplace**: defina un `marketplace.json` que enumere sus plugins y dónde encontrarlos. Consulte [Crear el archivo de marketplace](#create-the-marketplace-file).

213. **Alojar el marketplace**: envíe a GitHub, GitLab u otro host git (consulte [Alojar y distribuir marketplaces](#host-and-distribute-marketplaces)).213. **Alojar el marketplace**: envíe a GitHub, GitLab u otro host git. Consulte [Alojar y distribuir marketplaces](#host-and-distribute-marketplaces).

224. **Compartir con usuarios**: los usuarios agregan su marketplace con `/plugin marketplace add` e instalan plugins individuales (consulte [Descubrir e instalar plugins](/es/discover-plugins)).224. **Compartir con usuarios**: los usuarios agregan su marketplace con `/plugin marketplace add` e instalan plugins individuales. Consulte [Descubrir e instalar plugins](/es/discover-plugins).

23 23 

24Una vez que su marketplace esté activo, puede actualizarlo enviando cambios a su repositorio. Los usuarios actualizan su copia local con `/plugin marketplace update`.24Una vez que su marketplace esté activo, puede actualizarlo enviando cambios a su repositorio. Los usuarios actualizan su copia local con `/plugin marketplace update`.

25 25 


44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

45 ---45 ---

46 description: Review code for bugs, security, and performance46 description: Review code for bugs, security, and performance

47 disable-model-invocation: true

48 ---47 ---

49 48 

50 Review the code I've selected or the recent changes for:49 Review the code I've selected or the recent changes for:


125 124 

126Cree `.claude-plugin/marketplace.json` en la raíz de su repositorio. Este archivo define el nombre de su marketplace, información del propietario y una lista de plugins con sus fuentes.125Cree `.claude-plugin/marketplace.json` en la raíz de su repositorio. Este archivo define el nombre de su marketplace, información del propietario y una lista de plugins con sus fuentes.

127 126 

128Cada entrada de plugin necesita como mínimo un `name` y `source` (dónde obtenerlo). Consulte el [esquema completo](#marketplace-schema) a continuación para todos los campos disponibles.127Cada entrada de plugin necesita como mínimo un `name` y un `source` que le indique a Claude Code dónde obtenerlo. Consulte el [esquema completo](#marketplace-schema) a continuación para todos los campos disponibles.

129 128 

130```json theme={null}129```json theme={null}

131{130{


188</h3>187</h3>

189 188 

190| Campo | Tipo | Descripción |189| Campo | Tipo | Descripción |

191| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |190| :------------------------------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

192| `$schema` | string | URL del esquema JSON para autocompletado y validación del editor. Claude Code ignora este campo al cargar. |191| `$schema` | string | URL del esquema JSON para autocompletado y validación del editor. Claude Code ignora este campo al cargar. |

193| `description` | string | Descripción breve del marketplace |192| `description` | string | Descripción breve del marketplace |

194| `version` | string | Versión del manifiesto del marketplace |193| `version` | string | Versión del manifiesto del marketplace |

195| `metadata.pluginRoot` | string | Directorio base antepuesto a rutas de fuente de plugin relativas (por ejemplo, `"./plugins"` le permite escribir `"source": "formatter"` en lugar de `"source": "./plugins/formatter"`) |194| `metadata.pluginRoot` | string | Directorio base antepuesto a rutas de fuente de plugin relativas (por ejemplo, `"./plugins"` le permite escribir `"source": "formatter"` en lugar de `"source": "./plugins/formatter"`) |

196| `allowCrossMarketplaceDependenciesOn` | array | Otros marketplaces en los que los plugins en este marketplace pueden depender. Las dependencias de un marketplace no listado aquí se bloquean en la instalación. Consulte [Depender de un plugin de otro marketplace](/es/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |195| `allowCrossMarketplaceDependenciesOn` | array | Otros marketplaces en los que los plugins en este marketplace pueden depender. Las dependencias de un marketplace no listado aquí se bloquean en la instalación. Consulte [Depender de un plugin de otro marketplace](/es/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

196| `renames` | object | {/* min-version: 2.1.193 */}Mapa del anterior `name` de un plugin a su nombre actual, o a `null` si el plugin fue eliminado. Permite que los usuarios existentes migren automáticamente cuando cambia el nombre o elimina una entrada en `plugins`. Consulte [Renombrar o eliminar un plugin](#rename-or-remove-a-plugin). Requiere Claude Code v2.1.193 o posterior. |

197 197 

198`description` y `version` también se aceptan bajo `metadata` para compatibilidad con versiones anteriores.198`description` y `version` también se aceptan bajo `metadata` para compatibilidad con versiones anteriores.

199 199 


201 Entradas de plugins201 Entradas de plugins

202</h2>202</h2>

203 203 

204Cada entrada de plugin en el array `plugins` describe un plugin y dónde encontrarlo. Puede incluir cualquier campo del [esquema de manifiesto de plugin](/es/plugins-reference#plugin-manifest-schema) (como `description`, `version`, `author`, `commands`, `hooks`, etc.), más estos campos específicos del marketplace: `source`, `category`, `tags`, `strict` y `relevance`.204Cada entrada de plugin en el array `plugins` describe un plugin y dónde encontrarlo. Puede incluir cualquier campo del [esquema de manifiesto de plugin](/es/plugins-reference#plugin-manifest-schema), como `description`, `version`, `author`, `commands` y `hooks`, más estos campos específicos del marketplace: `source`, `category`, `tags`, `strict` y `relevance`.

205 205 

206<h3 id="required-fields-1">206<h3 id="required-fields-1">

207 Campos requeridos207 Campos requeridos


251 251 

252Las 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`.252Las 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`.

253 253 

254Una vez que un plugin se clona o copia en la máquina local, se copia en el caché de plugins versionado local en `~/.claude/plugins/cache`.254Después de que Claude Code clona o descarga un plugin en la máquina local, lo copia en el caché de plugins versionado local en `~/.claude/plugins/cache`.

255 255 

256| Fuente | Tipo | Campos | Notas |256| Fuente | Tipo | Campos | Notas |

257| ------------- | --------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |257| ------------- | --------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |


264<Note>264<Note>

265 **Fuentes de marketplace vs fuentes de plugins**: Estos son conceptos diferentes que controlan cosas diferentes.265 **Fuentes de marketplace vs fuentes de plugins**: Estos son conceptos diferentes que controlan cosas diferentes.

266 266 

267 * **Fuente de marketplace** dónde obtener el catálogo `marketplace.json` en sí. Se establece cuando los usuarios ejecutan `/plugin marketplace add` o en la configuración `extraKnownMarketplaces`. Soporta `ref` (rama/etiqueta) pero no `sha`.267 * **Fuente de marketplace**: dónde obtener el catálogo `marketplace.json` en sí. Se establece cuando los usuarios ejecutan `/plugin marketplace add` o en la configuración `extraKnownMarketplaces`. Soporta `ref` (rama/etiqueta) pero no `sha`.

268 * **Fuente de plugin** dónde obtener un plugin individual listado en el marketplace. Se establece en el campo `source` de cada entrada de plugin dentro de `marketplace.json`. Soporta tanto `ref` (rama/etiqueta) como `sha` (commit exacto).268 * **Fuente de plugin**: dónde obtener un plugin individual listado en el marketplace. Se establece en el campo `source` de cada entrada de plugin dentro de `marketplace.json`. Soporta tanto `ref` (rama/etiqueta) como `sha` (commit exacto).

269 269 

270 Por ejemplo, un marketplace alojado en `acme-corp/plugin-catalog` (fuente de marketplace) puede listar un plugin obtenido de `acme-corp/code-formatter` (fuente de plugin). La fuente de marketplace y la fuente de plugin apuntan a diferentes repositorios y se fijan independientemente.270 Por ejemplo, un marketplace alojado en `acme-corp/plugin-catalog` (fuente de marketplace) puede listar un plugin obtenido de `acme-corp/code-formatter` (fuente de plugin). La fuente de marketplace y la fuente de plugin apuntan a diferentes repositorios y se fijan independientemente.

271</Note>271</Note>

272 272 

273Los tipos de fuente basados en git que se muestran a continuación son `github`, `url` y `git-subdir`. Cuando tanto `ref` como `sha` se establecen en cualquiera de ellos, `sha` es el pin efectivo. Claude Code obtiene y verifica el commit fijado directamente. En la mayoría de los hosts de git, incluidos GitHub, GitLab y Bitbucket, esto significa que la instalación tiene éxito incluso si la rama o etiqueta nombrada por `ref` ha sido eliminada posteriormente, siempre que el commit aún sea alcanzable desde el repositorio. Algunos servidores, como AWS CodeCommit, no soportan la obtención de commits por SHA. En esos servidores, `ref` aún debe existir y el commit fijado debe ser alcanzable desde él.273Los tipos de fuente basados en git que se muestran a continuación son `github`, `url` y `git-subdir`. Cuando tanto `ref` como `sha` se establecen en cualquiera de ellos, `sha` es el pin efectivo. Claude Code obtiene y verifica el commit fijado directamente.

274 

275En la mayoría de los hosts de git, incluidos GitHub, GitLab y Bitbucket, esto significa que la instalación tiene éxito incluso si la rama o etiqueta nombrada por `ref` ha sido eliminada posteriormente, siempre que el commit aún sea alcanzable desde el repositorio. Algunos servidores, como AWS CodeCommit, no soportan la obtención de commits por SHA. En esos servidores, `ref` aún debe existir y el commit fijado debe ser alcanzable desde él.

274 276 

275<h3 id="relative-paths">277<h3 id="relative-paths">

276 Rutas relativas278 Rutas relativas


288Las 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.290Las 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.

289 291 

290<Note>292<Note>

291 Las rutas relativas solo funcionan cuando los usuarios agregan su marketplace a través de Git (GitHub, GitLab o URL de git). Si los usuarios agregan su marketplace a través de una URL directa al archivo `marketplace.json`, las rutas relativas no se resolverán correctamente. Para distribución basada en URL, use fuentes de GitHub, npm o URL de git en su lugar. Consulte [Solución de problemas](#plugins-with-relative-paths-fail-in-url-based-marketplaces) para obtener detalles.293 Las rutas relativas se resuelven contra una copia local del marketplace, por lo que funcionan cuando los usuarios agregan su marketplace desde una fuente de git o un directorio local. Si los usuarios agregan su marketplace a través de una URL directa al archivo `marketplace.json`, las rutas relativas no se resolverán, porque solo se descarga ese archivo. Para distribución basada en URL, use fuentes de GitHub, npm o URL de git en su lugar. Consulte [Solución de problemas](#plugins-with-relative-paths-fail-in-url-based-marketplaces) para obtener detalles.

292</Note>294</Note>

293 295 

294<h3 id="github-repositories">296<h3 id="github-repositories">


504 506 

505Cosas clave a notar:507Cosas clave a notar:

506 508 

507* **`commands` y `agents`**: Puede especificar múltiples directorios o archivos individuales. Las rutas son relativas a la raíz del plugin.509* **`commands` y `agents`**: puede especificar múltiples directorios o archivos individuales. Las rutas son relativas a la raíz del plugin.

508* **`${CLAUDE_PLUGIN_ROOT}`**: Use esta variable en hooks y configuraciones de MCP server para hacer referencia a archivos dentro del directorio de instalación del plugin. Esto es necesario porque los plugins se copian a una ubicación de caché cuando se instalan. Para dependencias o estado que deben sobrevivir a las actualizaciones de plugins, use [`${CLAUDE_PLUGIN_DATA}`](/es/plugins-reference#persistent-data-directory) en su lugar.510* **`${CLAUDE_PLUGIN_ROOT}`**: Use esta variable en hooks y configuraciones de MCP server para hacer referencia a archivos dentro del directorio de instalación del plugin. Esto es necesario porque los plugins se copian a una ubicación de caché cuando se instalan. Para dependencias o estado que deben sobrevivir a las actualizaciones de plugins, use [`${CLAUDE_PLUGIN_DATA}`](/es/plugins-reference#persistent-data-directory) en su lugar.

509* **`strict: false`**: Dado que esto se establece en false, el plugin no necesita su propio `plugin.json`. La entrada del marketplace define todo. Consulte [Modo estricto](#strict-mode) a continuación.511* **`strict: false`**: dado que esto se establece en false, el plugin no necesita su propio `plugin.json`. La entrada del marketplace define todo. Consulte [Modo estricto](#strict-mode) a continuación.

510 512 

511Por defecto, las skills de un plugin se cargan desde el directorio `skills/` bajo su `source`. Las rutas listadas en el campo `skills` se agregan a ese escaneo:513Por defecto, las skills de un plugin se cargan desde el directorio `skills/` bajo su `source`. Las rutas listadas en el campo `skills` se agregan a ese escaneo:

512 514 


547 Alojar en GitHub (recomendado)549 Alojar en GitHub (recomendado)

548</h3>550</h3>

549 551 

550GitHub proporciona el método de distribución más fácil:552GitHub es la forma recomendada para alojar y distribuir un marketplace:

551 553 

5521. **Crear un repositorio**: Configure un nuevo repositorio para su marketplace5541. **Crear un repositorio**: configure un nuevo repositorio para su marketplace

5532. **Agregar archivo de marketplace**: Cree `.claude-plugin/marketplace.json` con sus definiciones de plugins5552. **Agregar archivo de marketplace**: cree `.claude-plugin/marketplace.json` con sus definiciones de plugins

5543. **Compartir con equipos**: Los usuarios agregan su marketplace con `/plugin marketplace add owner/repo`5563. **Compartir con equipos**: los usuarios agregan su marketplace con `/plugin marketplace add owner/repo`

555 557 

556**Beneficios**: Control de versiones integrado, seguimiento de problemas y características de colaboración en equipo.558**Beneficios**: control de versiones integrado, seguimiento de problemas y características de colaboración en equipo.

557 559 

558<h3 id="host-on-other-git-services">560<h3 id="host-on-other-git-services">

559 Alojar en otros servicios de git561 Alojar en otros servicios de git


596Pruebe su marketplace localmente antes de compartirlo:598Pruebe su marketplace localmente antes de compartirlo:

597 599 

598```shell theme={null}600```shell theme={null}

599/plugin marketplace add ./my-local-marketplace601/plugin marketplace add ./my-marketplace

600/plugin install test-plugin@my-local-marketplace602/plugin install quality-review-plugin@my-plugins

601```603```

602 604 

603Para el rango completo de comandos add (GitHub, URLs de Git, rutas locales, URLs remotas), consulte [Agregar marketplaces](/es/discover-plugins#add-marketplaces).605Para el rango completo de comandos add (GitHub, URLs de Git, rutas locales, URLs remotas), consulte [Agregar marketplaces](/es/discover-plugins#add-marketplaces).


644 646 

645Para imágenes de contenedor y entornos de CI, puede precargar un directorio de plugins en tiempo de compilación para que Claude Code comience con marketplaces y plugins ya disponibles, sin clonar nada en tiempo de ejecución. Establezca la variable de entorno `CLAUDE_CODE_PLUGIN_SEED_DIR` para apuntar a este directorio.647Para imágenes de contenedor y entornos de CI, puede precargar un directorio de plugins en tiempo de compilación para que Claude Code comience con marketplaces y plugins ya disponibles, sin clonar nada en tiempo de ejecución. Establezca la variable de entorno `CLAUDE_CODE_PLUGIN_SEED_DIR` para apuntar a este directorio.

646 648 

647Para superponer múltiples directorios seed, separe las rutas con `:` en Unix o `;` en Windows. Claude Code busca cada directorio en orden, y el primer seed que contiene un marketplace o caché de plugin dado gana.649Para superponer múltiples directorios seed, separe las rutas con `:` en Unix o `;` en Windows. Claude Code busca cada directorio en orden y usa el primer seed que contiene un marketplace o caché de plugin dado.

648 650 

649El directorio seed refleja la estructura de `~/.claude/plugins`:651El directorio seed refleja la estructura de `~/.claude/plugins`:

650 652 


680 Restricciones de marketplace administrado682 Restricciones de marketplace administrado

681</h3>683</h3>

682 684 

683Para organizaciones que requieren control estricto sobre las fuentes de plugins, los administradores pueden restringir qué marketplaces de plugins se permite a los usuarios agregar usando la configuración [`strictKnownMarketplaces`](/es/settings#strictknownmarketplaces) en configuración administrada.685Para organizaciones que requieren control estricto sobre las fuentes de plugins, los administradores pueden restringir qué marketplaces de plugins se permite a los usuarios agregar usando la configuración [`strictKnownMarketplaces`](/es/settings#strictknownmarketplaces) en configuración administrada. Para también rechazar las banderas de CLI que cargan plugins, agentes y servidores MCP para una única ejecución, emparéjelo con [`disableSideloadFlags`](/es/settings#available-settings).

684 686 

685Cuando `strictKnownMarketplaces` se configura en configuración administrada, el comportamiento de restricción depende del valor:687Cuando `strictKnownMarketplaces` se configura en configuración administrada, el comportamiento de restricción depende del valor:

686 688 


881 883 

882Un plugin puede restringir sus dependencias a un rango semver para que las actualizaciones de una dependencia no rompan el plugin dependiente. Consulte [Restringir versiones de dependencias de plugins](/es/plugin-dependencies) para la convención de etiqueta de git `{plugin-name}--v{version}`, sintaxis de rango y cómo se combinan múltiples restricciones en la misma dependencia.884Un plugin puede restringir sus dependencias a un rango semver para que las actualizaciones de una dependencia no rompan el plugin dependiente. Consulte [Restringir versiones de dependencias de plugins](/es/plugin-dependencies) para la convención de etiqueta de git `{plugin-name}--v{version}`, sintaxis de rango y cómo se combinan múltiples restricciones en la misma dependencia.

883 885 

886<h3 id="rename-or-remove-a-plugin">

887 Renombrar o eliminar un plugin

888</h3>

889 

890El `name` de un plugin es su identificador estable. Los usuarios lo referencian en `enabledPlugins`, `pluginConfigs` y comandos `/plugin install`, por lo que cambiarlo rompe cada instalación existente. Para cambiar la etiqueta mostrada en la interfaz de usuario sin romper instalaciones, establezca [`displayName`](#optional-plugin-fields) y mantenga `name` sin cambios.

891 

892Si debe cambiar el `name` de un plugin, o elimina un plugin del array `plugins`, agregue una entrada de nivel superior `renames` para que los usuarios existentes migren en lugar de ver un error `plugin-not-found`. La migración automática requiere Claude Code v2.1.193 o posterior. Asigne cada nombre anterior a su nombre actual, o a `null` si el plugin ya no existe. El siguiente ejemplo renombra `formatter` a `code-formatter` y registra que `legacy-linter` fue eliminado:

893 

894```json theme={null}

895{

896 "name": "acme-tools",

897 "owner": { "name": "Acme" },

898 "plugins": [

899 { "name": "code-formatter", "source": "./plugins/code-formatter" }

900 ],

901 "renames": {

902 "formatter": "code-formatter",

903 "legacy-linter": null

904 }

905}

906```

907 

908Cuando un usuario inicia Claude Code con el nombre anterior aún en su configuración, Claude Code sigue el mapa `renames`:

909 

910* Si la entrada apunta a un nuevo nombre, Claude Code carga el plugin bajo su nuevo nombre y muestra un aviso de una línea como `Renamed to "code-formatter" in the "acme-tools" marketplace`. Luego reescribe la clave anterior a la nueva clave en los ámbitos de configuración del usuario, proyecto y local para `enabledPlugins` y `pluginConfigs`, por lo que el aviso aparece una vez.

911* Para una entrada `null`, Claude Code elimina la clave anterior y el aviso reporta que el plugin fue eliminado del marketplace.

912* Si el plugin renombrado usa una fuente remota como `github` o `npm`, Claude Code reporta `plugin-cache-miss` después del renombramiento y el usuario debe ejecutar `/plugin install` una vez para obtenerlo bajo el nuevo nombre.

913 

914Trate `renames` como historial de solo anexión: mantenga las entradas antiguas en su lugar incluso después de que espere que cada usuario haya migrado. Claude Code sigue cadenas, por lo que si más tarde renombra `code-formatter` a `formatter-pro`, agregue una segunda entrada en lugar de editar la primera. Un usuario que aún tiene el `formatter` original habilitado luego se resuelve a través de ambas entradas a `formatter-pro`.

915 

916Ejecute `claude plugin validate .` después de editar el mapa; rechaza cualquier entrada cuya cadena forme un ciclo o no termine en `null` o un nombre listado en `plugins`.

917 

918<Note>

919 La configuración administrada y de política es de solo lectura para Claude Code, por lo que los plugins habilitados allí no pueden ser reescritos automáticamente. El plugin renombrado aún se carga cada sesión, pero el aviso de renombramiento recurrirá hasta que un administrador actualice `enabledPlugins` en el archivo de configuración administrada para usar el nuevo nombre. Lo mismo se aplica a los plugins habilitados a través de otras fuentes de solo lectura como `--add-dir`.

920</Note>

921 

922Las versiones anteriores de Claude Code ignoran el campo `renames` y reportan `plugin-not-found` para el nombre anterior.

923 

884<h2 id="validation-and-testing">924<h2 id="validation-and-testing">

885 Validación y pruebas925 Validación y pruebas

886</h2>926</h2>


933 973 

934* `<source>`: Abreviatura de GitHub `owner/repo`, URL de git, URL remota a un archivo `marketplace.json` o ruta de directorio local. Para fijar a una rama o etiqueta, agregue `@ref` a la abreviatura de GitHub o `#ref` a una URL de git974* `<source>`: Abreviatura de GitHub `owner/repo`, URL de git, URL remota a un archivo `marketplace.json` o ruta de directorio local. Para fijar a una rama o etiqueta, agregue `@ref` a la abreviatura de GitHub o `#ref` a una URL de git

935 975 

976Una URL debe incluir su esquema. A partir de Claude Code v2.1.196, un host escrito sin uno, como `gitlab.example.com/team/plugins`, se rechaza como una abreviatura `owner/repo` inválida y el error le indica que agregue `https://` o use `./` para una ruta local. Las versiones anteriores lo malinterpretaban como una ruta de repositorio de GitHub y fallan en el momento del clon con un error de no encontrado de GitHub.

977 

936**Opciones:**978**Opciones:**

937 979 

938| Opción | Descripción | Predeterminado |980| Opción | Descripción | Predeterminado |


1061 Errores de validación de marketplace1103 Errores de validación de marketplace

1062</h3>1104</h3>

1063 1105 

1064Ejecute `claude plugin validate .` o `/plugin validate .` desde su directorio de marketplace para verificar problemas. Cuando se apunta a un directorio de marketplace, el validador verifica solo `marketplace.json`: esquema, nombres de plugins duplicados, traversal de ruta de fuente y desajustes de versión contra cada `plugin.json` referenciado.1106Ejecute `claude plugin validate .` o `/plugin validate .` desde su directorio de marketplace para verificar problemas. Cuando se apunta a un directorio de marketplace, el validador verifica `marketplace.json` para errores de esquema, nombres de plugins duplicados y traversal de ruta de fuente. Para cada entrada cuya `source` es una ruta local, también valida el `plugin.json` de ese plugin y advierte cuando la `version` de la entrada no coincide con la de `plugin.json`. Los problemas encontrados en el `plugin.json` de un plugin tienen el prefijo del índice de entrada, en la forma `plugins[2] plugin.json →`.

1107 

1108A partir de Claude Code v2.1.196, el pase por entrada también:

1109 

1110* incluye plugins cuya `source` es `.`

1111* se ejecuta cuando `marketplace.json` está fuera de un directorio `.claude-plugin`, resolviendo fuentes contra el directorio del archivo en sí

1112* reporta los problemas de cada entrada incluso cuando otra parte del archivo tiene errores de esquema

1113 

1114Las versiones anteriores omiten plugins en la raíz del marketplace y solo descienden desde un `.claude-plugin/marketplace.json`.

1065 1115 

1066Para validar el `plugin.json` de un plugin individual y sus archivos de skill, agente, comando y hook, ejecute el comando contra el directorio del plugin en sí, por ejemplo `claude plugin validate ./plugins/my-plugin`. Errores comunes:1116Para validar el `plugin.json` de un plugin individual y sus archivos de skill, agente, comando y hook, ejecute el comando contra el directorio del plugin en sí, por ejemplo `claude plugin validate ./plugins/my-plugin`. Errores comunes:

1067 1117 


1078 1128 

1079* `Marketplace has no plugins defined`: agregue al menos un plugin al array `plugins`1129* `Marketplace has no plugins defined`: agregue al menos un plugin al array `plugins`

1080* `No marketplace description provided`: agregue una `description` de nivel superior para ayudar a los usuarios a entender su marketplace1130* `No marketplace description provided`: agregue una `description` de nivel superior para ayudar a los usuarios a entender su marketplace

1081* `Plugin name "x" is not kebab-case`: el nombre del plugin contiene letras mayúsculas, espacios o caracteres especiales. Renombre a letras minúsculas, dígitos y guiones solamente (por ejemplo, `my-plugin`). Claude Code acepta otras formas, pero la sincronización del marketplace de Claude.ai las rechaza.1131* `Plugin name "x" is not kebab-case`: el nombre del plugin contiene letras mayúsculas, espacios o caracteres especiales. Renombre a letras minúsculas, dígitos y guiones solamente (por ejemplo, `my-plugin`). Claude Code acepta otras formas, pero la sincronización del marketplace de claude.ai las rechaza.

1082 1132 

1083<h3 id="plugin-installation-failures">1133<h3 id="plugin-installation-failures">

1084 Fallos de instalación de plugins1134 Fallos de instalación de plugins

Details

477Si incluye un manifiesto, `name` es el único campo requerido.477Si incluye un manifiesto, `name` es el único campo requerido.

478 478 

479| Campo | Tipo | Descripción | Ejemplo |479| Campo | Tipo | Descripción | Ejemplo |

480| :----- | :----- | :--------------------------------------------- | :------------------- |480| :----- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

481| `name` | string | Identificador único (kebab-case, sin espacios) | `"deployment-tools"` |481| `name` | string | Identificador único (kebab-case, sin espacios). Cuando una [entrada del marketplace](/es/plugin-marketplaces#plugin-entries) lista el plugin bajo un nombre diferente, el nombre de la entrada del marketplace es lo que usan las claves `enabledPlugins` y `/plugin` | `"deployment-tools"` |

482 482 

483Este nombre se utiliza para espacios de nombres de componentes. Por ejemplo, en la interfaz de usuario, el agent `agent-creator` para el plugin con nombre `plugin-dev` aparecerá como `plugin-dev:agent-creator`.483Este nombre se utiliza para espacios de nombres de componentes. Por ejemplo, en la interfaz de usuario, el agent `agent-creator` para el plugin con nombre `plugin-dev` aparecerá como `plugin-dev:agent-creator`.

484 484 

quickstart.md +1 −0

Details

106* [Claude Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (recomendado)106* [Claude Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (recomendado)

107* [Claude Console](https://console.anthropic.com/) (acceso a API con créditos prepagados). En el primer inicio de sesión, se crea automáticamente un espacio de trabajo "Claude Code" en la Console para el seguimiento centralizado de costos.107* [Claude Console](https://console.anthropic.com/) (acceso a API con créditos prepagados). En el primer inicio de sesión, se crea automáticamente un espacio de trabajo "Claude Code" en la Console para el seguimiento centralizado de costos.

108* [Amazon Bedrock, Google Vertex AI o Microsoft Foundry](/es/third-party-integrations) (proveedores de nube empresariales)108* [Amazon Bedrock, Google Vertex AI o Microsoft Foundry](/es/third-party-integrations) (proveedores de nube empresariales)

109* Una puerta de enlace [Claude apps gateway](/es/claude-apps-gateway) autohospedada, si su organización ejecuta una: su administrador preconfiguración la URL de la puerta de enlace, y `/login` abre directamente en la pantalla **Cloud gateway** para que inicie sesión con SSO corporativo

109 110 

110Una vez que haya iniciado sesión, sus credenciales se almacenan y no necesitará iniciar sesión nuevamente.111Una vez que haya iniciado sesión, sus credenciales se almacenan y no necesitará iniciar sesión nuevamente.

111 112 

Details

34 34 

35* **Suscripción**: disponible en planes Pro, Max, Team y Enterprise. Las claves API no son compatibles. En Team y Enterprise, un propietario debe habilitar primero el botón de alternancia de Remote Control en [configuración de administración de Claude Code](https://claude.ai/admin-settings/claude-code).35* **Suscripción**: disponible en planes Pro, Max, Team y Enterprise. Las claves API no son compatibles. En Team y Enterprise, un propietario debe habilitar primero el botón de alternancia de Remote Control en [configuración de administración de Claude Code](https://claude.ai/admin-settings/claude-code).

36* **Autenticación**: ejecute `claude` y use `/login` para iniciar sesión a través de claude.ai si aún no lo ha hecho.36* **Autenticación**: ejecute `claude` y use `/login` para iniciar sesión a través de claude.ai si aún no lo ha hecho.

37* **Punto final de API**: no disponible en Amazon Bedrock, Google Vertex AI o Microsoft Foundry. {/* min-version: 2.1.196 */}A partir de v2.1.196, Remote Control también se deshabilita cuando [`ANTHROPIC_BASE_URL`](/es/env-vars) apunta a un host distinto de `api.anthropic.com`, como una [puerta de enlace LLM](/es/llm-gateway) o proxy. Desactive la variable para usar Remote Control.

37* **Confianza del espacio de trabajo**: ejecute `claude` en su directorio de proyecto al menos una vez para aceptar el diálogo de confianza del espacio de trabajo.38* **Confianza del espacio de trabajo**: ejecute `claude` en su directorio de proyecto al menos una vez para aceptar el diálogo de confianza del espacio de trabajo.

38 39 

39<h2 id="start-a-remote-control-session">40<h2 id="start-a-remote-control-session">


148 Habilite Remote Control para todas las sesiones149 Habilite Remote Control para todas las sesiones

149</h3>150</h3>

150 151 

151De forma predeterminada, Remote Control solo se activa cuando ejecuta explícitamente `claude remote-control`, `claude --remote-control`, o `/remote-control`. Para habilitarlo automáticamente para cada sesión interactiva, ejecute `/config` dentro de Claude Code y establezca **Enable Remote Control for all sessions** en `true`. Establézcalo de nuevo en `false` para deshabilitar. En la aplicación de escritorio, también puede alternar esto desde **Settings → Claude Code → Enable remote control by default**.152Remote Control solo se activa cuando ejecuta explícitamente `claude remote-control`, `claude --remote-control`, o `/remote-control`, a menos que la conexión automática esté activada. Para habilitarlo automáticamente para cada sesión interactiva, ejecute `/config` dentro de Claude Code y establezca **Enable Remote Control for all sessions** en `true`. Establézcalo en `false` para nunca conectarse automáticamente, o déjelo sin establecer para seguir el valor predeterminado de su organización. En la aplicación de escritorio, también puede alternar esto desde **Settings → Claude Code → Enable remote control by default**.

152 153 

153Con esta configuración activada, cada proceso interactivo de Claude Code registra una sesión remota. Si ejecuta varias instancias, cada una obtiene su propio entorno y sesión. Para ejecutar varias sesiones concurrentes desde un único proceso, use el [modo servidor](#start-a-remote-control-session) en su lugar.154Con esta configuración activada, cada proceso interactivo de Claude Code registra una sesión remota. Si ejecuta varias instancias, cada una obtiene su propio entorno y sesión. Para ejecutar varias sesiones concurrentes desde un único proceso, use el [modo servidor](#start-a-remote-control-session) en su lugar.

154 155 


318 319 

319Claude 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.320Claude 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.

320 321 

322<h3 id="remote-control-is-only-available-when-using-claude-via-api-anthropic-com">

323 "Remote Control is only available when using Claude via api.anthropic.com"

324</h3>

325 

326La sesión no está hablando directamente con la API de Anthropic, por lo que no hay un backend de claude.ai para emparejar. Esto ocurre en Amazon Bedrock, Google Vertex AI y Microsoft Foundry. {/* min-version: 2.1.196 */}A partir de v2.1.196 también ocurre cuando [`ANTHROPIC_BASE_URL`](/es/env-vars) apunta a un host distinto de `api.anthropic.com`, como una [puerta de enlace LLM](/es/llm-gateway) o proxy, incluso si inicia sesión con claude.ai. Desactive `ANTHROPIC_BASE_URL` y reinicie la sesión para usar Remote Control.

327 

321<h3 id="remote-control-is-disabled-by-your-organization’s-policy">328<h3 id="remote-control-is-disabled-by-your-organization’s-policy">

322 "Remote Control is disabled by your organization's policy"329 "Remote Control is disabled by your organization's policy"

323</h3>330</h3>

Details

48| Solo prompt | `/loop check the deploy` | Su prompt se ejecuta en un [intervalo que Claude elige](#let-claude-choose-the-interval) en cada iteración |48| Solo prompt | `/loop check the deploy` | Su prompt se ejecuta en un [intervalo que Claude elige](#let-claude-choose-the-interval) en cada iteración |

49| Solo intervalo, o nada | `/loop` | El [prompt de mantenimiento integrado](#run-the-built-in-maintenance-prompt) se ejecuta, o su `loop.md` si existe uno |49| Solo intervalo, o nada | `/loop` | El [prompt de mantenimiento integrado](#run-the-built-in-maintenance-prompt) se ejecuta, o su `loop.md` si existe uno |

50 50 

51También puede pasar otro comando como el prompt, por ejemplo `/loop 20m /review-pr 1234`, para volver a ejecutar un bundled skill o comando en cada iteración.51También puede pasar un skill como el prompt, por ejemplo `/loop 20m /review-pr 1234`, para volver a ejecutar ese skill en cada iteración. {/* min-version: 2.1.196 */}A partir de v2.1.196, un disparo programado solo ejecuta skills que Claude [está autorizado a invocar por su cuenta](/es/skills#control-who-invokes-a-skill). Lo siguiente llega a Claude como texto sin formato en lugar de ejecutarse:

52 

53* comandos integrados como `/permissions`, `/model`, o `/clear`

54* skills marcados [`disable-model-invocation: true`](/es/skills#frontmatter-reference)

55* skills retenidos de Claude por una configuración [`skillOverrides`](/es/skills#override-skill-visibility-from-settings) o una regla de [denegación](/es/skills#restrict-claude’s-skill-access) de `Skill`

56* [prompts MCP](/es/mcp#use-mcp-prompts-as-commands) como `/mcp__github__list_prs`; los skills que expone un servidor MCP aún se ejecutan

52 57 

53<h3 id="run-on-a-fixed-interval">58<h3 id="run-on-a-fixed-interval">

54 Ejecutar en un intervalo fijo59 Ejecutar en un intervalo fijo


238 243 

239La programación con alcance de sesión tiene limitaciones inherentes:244La programación con alcance de sesión tiene limitaciones inherentes:

240 245 

241* 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.246* 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](/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.

242* 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.247* 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.

243* Iniciar una conversación nueva borra todas las tareas con alcance de sesión. Reanudar con `claude --resume` o `claude --continue` restaura tareas que no han expirado: tareas recurrentes dentro de siete días de creación, y tareas únicas cuyo tiempo programado aún no ha pasado. Las tareas de Bash de fondo y monitor nunca se restauran al reanudar.248* Iniciar una conversación nueva borra todas las tareas con alcance de sesión. Reanudar con `claude --resume` o `claude --continue` restaura tareas que no han expirado: tareas recurrentes dentro de siete días de creación, y tareas únicas cuyo tiempo programado aún no ha pasado. Las tareas de Bash de fondo y monitor nunca se restauran al reanudar.

244 249 

Details

153 153 

154La configuración administrada por servidor y la [configuración administrada por endpoint](/es/settings#settings-files) ocupan el nivel más alto en la [jerarquía de configuración](/es/settings#settings-precedence) de Claude Code. Ningún otro nivel de configuración puede anularlas, incluidos los argumentos de línea de comandos.154La configuración administrada por servidor y la [configuración administrada por endpoint](/es/settings#settings-files) ocupan el nivel más alto en la [jerarquía de configuración](/es/settings#settings-precedence) de Claude Code. Ningún otro nivel de configuración puede anularlas, incluidos los argumentos de línea de comandos.

155 155 

156Dentro del nivel administrado, la primera fuente que entrega una configuración no vacía gana. La configuración administrada por servidor se verifica primero, luego la configuración administrada por endpoint. Las fuentes no se fusionan: si la configuración administrada por servidor entrega alguna clave, la configuración administrada por endpoint se ignora completamente. Si la configuración administrada por servidor no entrega nada, se aplica la configuración administrada por endpoint.156Dentro del nivel administrado, una [policyHelper](/es/settings#compute-managed-settings-with-a-policy-helper) configurada tiene prioridad sobre todas las demás fuentes administradas, incluida la configuración administrada por servidor: su salida se convierte en la única configuración administrada para la ejecución. De lo contrario, la primera fuente que entrega una configuración no vacía gana. La configuración administrada por servidor se verifica primero, luego la configuración administrada por endpoint. Las fuentes no se fusionan: si la configuración administrada por servidor entrega alguna clave, la configuración administrada por endpoint se ignora completamente. Se aplica una excepción: un pequeño conjunto de [claves de bloqueo entre fuentes](/es/settings#settings-precedence), como los bloqueos de lista de permitidos de sandbox, se respeta cuando cualquier fuente administrada controlada por administrador los establece; el nivel de registro HKCU escribible por el usuario se excluye. Si la configuración administrada por servidor no entrega nada, se aplica la configuración administrada por endpoint.

157 157 

158Si 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. Ejecute `/status` para ver qué fuente administrada está activa.158Si 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. Ejecute `/status` para ver qué fuente administrada está activa.

159 159 


222* **Configuraciones de comandos de shell**: configuraciones que ejecutan comandos de shell222* **Configuraciones de comandos de shell**: configuraciones que ejecutan comandos de shell

223* **Variables de entorno personalizadas**: variables que no están en la lista de permitidos conocida y segura223* **Variables de entorno personalizadas**: variables que no están en la lista de permitidos conocida y segura

224* **Configuraciones de hooks**: cualquier definición de hook224* **Configuraciones de hooks**: cualquier definición de hook

225* **Contenido CLAUDE.md administrado**: un valor `claudeMd` entregado a través de configuración administrada

225 226 

226Cuando 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.227Cuando 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.

227 228 


239* Google Vertex AI240* Google Vertex AI

240* Microsoft Foundry241* Microsoft Foundry

241* [Claude Platform on AWS](/es/claude-platform-on-aws)242* [Claude Platform on AWS](/es/claude-platform-on-aws)

242* Endpoints de API personalizados a través de `ANTHROPIC_BASE_URL` o [puertas de enlace LLM](/es/llm-gateway)243* Endpoints de API personalizados a través de `ANTHROPIC_BASE_URL` o [puertas de enlace LLM](/es/llm-gateway) de terceros

244 

245Para implementaciones de Bedrock, Vertex AI y Foundry, una [puerta de enlace de aplicaciones Claude](/es/claude-apps-gateway) autohospedada proporciona la entrega equivalente de configuración administrada remota: los clientes con sesión iniciada en la puerta de enlace obtienen la configuración administrada de la puerta de enlace en lugar de `api.anthropic.com`. La semántica de fallos difiere al inicio: un cliente de puerta de enlace que no puede alcanzar la puerta de enlace sale con un error en lugar de recurrir a la configuración en caché, mientras que la actualización en segundo plano cada hora es de fallo abierto en ambos canales.

243 246 

244<h2 id="audit-logging">247<h2 id="audit-logging">

245 Registro de auditoría248 Registro de auditoría


253 Consideraciones de seguridad256 Consideraciones de seguridad

254</h2>257</h2>

255 258 

256La configuración administrada por servidor proporciona aplicación de políticas centralizada, pero funciona como un control del lado del cliente. En dispositivos no administrados, los usuarios con acceso de administrador o sudo pueden modificar el binario de Claude Code, el sistema de archivos o la configuración de red.259La 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.

257 260 

258| Escenario | Comportamiento |261| Escenario | Comportamiento |

259| :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |262| :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

260| El usuario edita el archivo de configuración en caché | El archivo manipulado se aplica al inicio, pero la configuración correcta se restaura en la siguiente obtención del servidor |263| El usuario edita el archivo de configuración en caché | El archivo manipulado se aplica al inicio, pero la configuración correcta se restaura en la siguiente obtención del servidor |

261| El usuario elimina el archivo de configuración en caché | Ocurre el comportamiento del primer lanzamiento: la configuración se obtiene de forma asincrónica con una breve ventana no aplicada |264| El usuario elimina el archivo de configuración en caché | Ocurre el comportamiento del primer lanzamiento: la configuración se obtiene de forma asincrónica con una breve ventana no aplicada |

265| 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 |

266| 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 |

262| La API no está disponible | La configuración en caché se aplica si está disponible, de lo contrario, la configuración administrada no se aplica hasta la siguiente obtención exitosa. Con `forceRemoteSettingsRefresh: true`, la CLI se cierra en lugar de continuar, excepto para [subcomandos `claude auth`](#enforce-fail-closed-startup) |267| La API no está disponible | La configuración en caché se aplica si está disponible, de lo contrario, la configuración administrada no se aplica hasta la siguiente obtención exitosa. Con `forceRemoteSettingsRefresh: true`, la CLI se cierra en lugar de continuar, excepto para [subcomandos `claude auth`](#enforce-fail-closed-startup) |

263| El usuario se autentica con una organización diferente | La configuración no se entrega para cuentas fuera de la organización administrada |268| El usuario se autentica con una organización diferente | La configuración no se entrega para cuentas fuera de la organización administrada |

264| 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 |269| 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 |

270| 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 |

265 271 

266Para detectar cambios de configuración en tiempo de ejecución, use [hooks `ConfigChange`](/es/hooks#configchange) para registrar modificaciones o bloquear cambios no autorizados antes de que surtan efecto.272Para detectar cambios de configuración en tiempo de ejecución, use [hooks `ConfigChange`](/es/hooks#configchange) para registrar modificaciones o bloquear cambios no autorizados antes de que surtan efecto.

267 273 

268Para garantías de aplicación más sólidas, use la [configuración administrada por endpoint](/es/settings#settings-files) en dispositivos inscritos en una solución MDM.274Para restringir a qué organizaciones pueden acceder los usuarios con las credenciales que proporciona el cliente, consulte [Enforce network-level access control with Tenant Restrictions](https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions) en el Centro de ayuda de Claude. Para garantías de aplicación más sólidas, use la [configuración administrada por endpoint](/es/settings#settings-files) en dispositivos inscritos en una solución MDM.

269 275 

270<h2 id="see-also">276<h2 id="see-also">

271 Ver también277 Ver también

sessions.md +8 −2

Details

30 Dónde busca el selector de sesiones30 Dónde busca el selector de sesiones

31</h3>31</h3>

32 32 

33Las sesiones se almacenan por directorio de proyecto. De forma predeterminada, el selector de sesiones muestra sesiones interactivas del worktree actual, más sesiones iniciadas en otro lugar que agregaron el directorio actual con `/add-dir`. {/* min-version: 2.1.169 */}A partir de v2.1.169, mover una sesión con [`/cd`](/es/commands) la traslada al almacenamiento del proyecto del nuevo directorio, por lo que aparece en el selector de ese directorio después. Use `Ctrl+W` para ampliar a todos los worktrees del repositorio o `Ctrl+A` para ampliar a cada proyecto en esta máquina.33Las sesiones se almacenan por directorio de proyecto. De forma predeterminada, el selector de sesiones muestra sesiones interactivas del worktree actual, más sesiones iniciadas en otro lugar que agregaron el directorio actual con `/add-dir`. Use `Ctrl+W` para ampliar a todos los worktrees del repositorio o `Ctrl+A` para ampliar a cada proyecto en esta máquina.

34 

35{/* min-version: 2.1.169 */}A partir de v2.1.169, mover una sesión con [`/cd`](/es/commands) la traslada al almacenamiento del proyecto del nuevo directorio, por lo que aparece en el selector de ese directorio después. {/* min-version: 2.1.196 */}A partir de v2.1.196, una sesión movida se mantiene fuera del selector del directorio anterior incluso después de un bloqueo o salida forzada. En versiones anteriores, también podría reaparecer en la lista del directorio anterior después de una salida que no fue limpia cuando la ruta anterior contenía caracteres especiales como guiones bajos.

34 36 

35Seleccionar una sesión de otro worktree del mismo repositorio la reanuda en su lugar. Seleccionar una sesión de un proyecto no relacionado copia un comando `cd` y reanuda a su portapapeles en su lugar.37Seleccionar una sesión de otro worktree del mismo repositorio la reanuda en su lugar. Seleccionar una sesión de un proyecto no relacionado copia un comando `cd` y reanuda a su portapapeles en su lugar.

36 38 


56 58 

57Una vez que una sesión está nombrada, vuelva a ella con `claude --resume <name>` o `/resume <name>`. Vea [Reanude una sesión](#resume-a-session) para saber cómo se comporta la resolución de nombres en worktrees.59Una vez que una sesión está nombrada, vuelva a ella con `claude --resume <name>` o `/resume <name>`. Vea [Reanude una sesión](#resume-a-session) para saber cómo se comporta la resolución de nombres en worktrees.

58 60 

61{/* min-version: 2.1.196 */}Las sesiones interactivas que nunca nombra aún obtienen un nombre de visualización predeterminado cuando se inician. Requiere Claude Code v2.1.196 o posterior. El valor predeterminado combina el nombre del directorio de trabajo con un sufijo de dos caracteres, por ejemplo `my-app-3f`, e identifica la sesión en listados de sesiones en ejecución, como [vista de agente](/es/agent-view) y salida de `claude agents --json`.

62 

63El valor predeterminado no es un identificador de reanudación: `claude --resume <name>`, `/resume <name>` y el selector de sesiones coinciden solo con nombres que usted establece. Nombrar la sesión reemplaza el valor predeterminado.

64 

59<h2 id="use-the-session-picker">65<h2 id="use-the-session-picker">

60 Usar el selector de sesiones66 Usar el selector de sesiones

61</h2>67</h2>


117 Exporte y localice datos de sesión123 Exporte y localice datos de sesión

118</h2>124</h2>

119 125 

120Ejecute `/export` para copiar la conversación actual a su portapapeles o guardarla como un archivo de texto sin formato, con mensajes y salidas de herramientas renderizadas como texto legible. Pase un nombre de archivo para escribir directamente en ese archivo.126Ejecute `/export` para abrir un menú que le permita copiar la conversación actual a su portapapeles o guardarla como un archivo de texto sin formato, con mensajes y salidas de herramientas renderizadas como texto legible. Pase un nombre de archivo para omitir el menú y escribir directamente en ese archivo.

121 127 

122<h3 id="access-conversations-from-scripts">128<h3 id="access-conversations-from-scripts">

123 Acceda a conversaciones desde scripts129 Acceda a conversaciones desde scripts

settings.md +41 −35

Details

12 Ámbitos de configuración12 Ámbitos de configuración

13</h2>13</h2>

14 14 

15Claude Code utiliza un **sistema de ámbitos** para determinar dónde se aplican las configuraciones y quién las comparte. Comprender los ámbitos le ayuda a decidir cómo configurar Claude Code para uso personal, colaboración en equipo o implementación empresarial.15Claude Code utiliza un sistema de ámbitos para determinar dónde se aplican las configuraciones y quién las comparte. Comprender los ámbitos le ayuda a decidir cómo configurar Claude Code para uso personal, colaboración en equipo o implementación empresarial.

16 16 

17<h3 id="available-scopes">17<h3 id="available-scopes">

18 Ámbitos disponibles18 Ámbitos disponibles


59 59 

60Cuando la misma configuración aparece en múltiples ámbitos, Claude Code las aplica en orden de prioridad:60Cuando la misma configuración aparece en múltiples ámbitos, Claude Code las aplica en orden de prioridad:

61 61 

621. **Managed** (más alto) - no puede ser anulado por nada621. **Managed** (más alto): no puede ser anulado por nada

632. **Argumentos de línea de comandos** - anulaciones de sesión temporal632. **Argumentos de línea de comandos**: anulaciones de sesión temporal

643. **Local** - anula configuraciones de proyecto y usuario643. **Local**: anula configuraciones de proyecto y usuario

654. **Project** - anula configuraciones de usuario654. **Project**: anula configuraciones de usuario

665. **User** (más bajo) - se aplica cuando nada más especifica la configuración665. **User** (más bajo): se aplica cuando nada más especifica la configuración

67 67 

68Por ejemplo, si la configuración de usuario establece `spinnerTipsEnabled` en `true` y la configuración de proyecto lo establece en `false`, se aplica el valor del proyecto. Las reglas de permisos se comportan de manera diferente porque se fusionan en todos los ámbitos en lugar de anular. Consulte [Precedencia de configuración](#settings-precedence).68Por ejemplo, si la configuración de usuario establece `spinnerTipsEnabled` en `true` y la configuración de proyecto lo establece en `false`, se aplica el valor del proyecto. Las reglas de permisos se comportan de manera diferente porque se fusionan en todos los ámbitos en lugar de anular. Consulte [Precedencia de configuración](#settings-precedence).

69 69 


97 * `.claude/settings.local.json` para configuraciones que no se verifican, útil para preferencias personales y experimentación. Cuando Claude Code crea `.claude/settings.local.json`, configura git para ignorar el archivo. Si crea el archivo usted mismo, agréguelo a su gitignore manualmente.97 * `.claude/settings.local.json` para configuraciones que no se verifican, útil para preferencias personales y experimentación. Cuando Claude Code crea `.claude/settings.local.json`, configura git para ignorar el archivo. Si crea el archivo usted mismo, agréguelo a su gitignore manualmente.

98* **Configuraciones administradas**: Para organizaciones que necesitan control centralizado, Claude Code admite múltiples mecanismos de entrega para configuraciones administradas. Todos utilizan el mismo formato JSON y no pueden ser anulados por configuraciones de usuario o proyecto:98* **Configuraciones administradas**: Para organizaciones que necesitan control centralizado, Claude Code admite múltiples mecanismos de entrega para configuraciones administradas. Todos utilizan el mismo formato JSON y no pueden ser anulados por configuraciones de usuario o proyecto:

99 99 

100 * **Configuraciones administradas por servidor**: entregadas desde los servidores de Anthropic a través de la consola de administración de Claude.ai. Consulte [configuraciones administradas por servidor](/es/server-managed-settings).100 * **Configuraciones administradas por servidor**: entregadas remotamente al iniciar sesión, ya sea desde los servidores de Anthropic a través de la consola de administración de claude.ai o desde una [puerta de aplicaciones Claude](/es/claude-apps-gateway) autohospedada. Consulte [configuraciones administradas por servidor](/es/server-managed-settings).

101 * **Políticas de MDM/nivel de SO**: entregadas a través de administración de dispositivos nativa en macOS y Windows:101 * **Políticas de MDM/nivel de SO**: entregadas a través de administración de dispositivos nativa en macOS y Windows:

102 * macOS: dominio de preferencias administradas `com.anthropic.claudecode`. Las claves de nivel superior del plist reflejan `managed-settings.json`, con configuraciones anidadas como diccionarios y matrices como matrices de plist. Implemente a través de perfiles de configuración en Jamf, Iru (Kandji) u herramientas MDM similares.102 * macOS: dominio de preferencias administradas `com.anthropic.claudecode`. Las claves de nivel superior del plist reflejan `managed-settings.json`, con configuraciones anidadas como diccionarios y matrices como matrices de plist. Implemente a través de perfiles de configuración en Jamf, Iru (Kandji) u herramientas MDM similares.

103 * Windows: clave de registro `HKLM\SOFTWARE\Policies\ClaudeCode` con un valor `Settings` (REG\_SZ o REG\_EXPAND\_SZ) que contiene JSON (implementado a través de Política de grupo o Intune)103 * Windows: clave de registro `HKLM\SOFTWARE\Policies\ClaudeCode` con un valor `Settings` (REG\_SZ o REG\_EXPAND\_SZ) que contiene JSON (implementado a través de Política de grupo o Intune)


229| `autoMemoryDirectory` | Directorio personalizado para almacenamiento de [memoria automática](/es/memory#storage-location). Acepta una ruta absoluta o una ruta con prefijo `~/`. Se honra desde configuraciones de proyecto o local solo después de aceptar el diálogo de confianza del espacio de trabajo, ya que un repositorio clonado puede proporcionar este archivo | `"~/my-memory-dir"` |229| `autoMemoryDirectory` | Directorio personalizado para almacenamiento de [memoria automática](/es/memory#storage-location). Acepta una ruta absoluta o una ruta con prefijo `~/`. Se honra desde configuraciones de proyecto o local solo después de aceptar el diálogo de confianza del espacio de trabajo, ya que un repositorio clonado puede proporcionar este archivo | `"~/my-memory-dir"` |

230| `autoMemoryEnabled` | **Predeterminado**: `true`. Habilitar [memoria automática](/es/memory#enable-or-disable-auto-memory). Cuando es `false`, Claude no lee ni escribe en el directorio de memoria automática. También puede alternar esto con `/memory` durante una sesión. Para deshabilitar a través de variable de entorno, establezca [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/es/env-vars) en `env` | `false` |230| `autoMemoryEnabled` | **Predeterminado**: `true`. Habilitar [memoria automática](/es/memory#enable-or-disable-auto-memory). Cuando es `false`, Claude no lee ni escribe en el directorio de memoria automática. También puede alternar esto con `/memory` durante una sesión. Para deshabilitar a través de variable de entorno, establezca [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/es/env-vars) en `env` | `false` |

231| `autoMode` | Personalizar qué bloquea y permite el clasificador de [modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode). Contiene matrices `environment`, `allow`, `soft_deny` y `hard_deny` de reglas en prosa. Incluya la cadena literal `"$defaults"` en una matriz para heredar las reglas integradas en esa posición. Consulte [Configurar modo automático](/es/auto-mode-config). No se lee desde configuraciones de proyecto compartidas | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |231| `autoMode` | Personalizar qué bloquea y permite el clasificador de [modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode). Contiene matrices `environment`, `allow`, `soft_deny` y `hard_deny` de reglas en prosa. Incluya la cadena literal `"$defaults"` en una matriz para heredar las reglas integradas en esa posición. Consulte [Configurar modo automático](/es/auto-mode-config). No se lee desde configuraciones de proyecto compartidas | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

232| `autoMode.classifyAllShell` | {/* min-version: 2.1.193 */}**Predeterminado**: `false`. Cuando es `true`, suspende cada regla de permiso de Bash y PowerShell mientras el modo automático está activo para que todos los comandos de shell se enruten a través del clasificador, no solo reglas que coincidan con patrones de ejecución de código arbitrario. Consulte [Enrutar todos los comandos de shell a través del clasificador](/es/auto-mode-config#route-all-shell-commands-through-the-classifier). Requiere Claude Code v2.1.193 o posterior | `true` |

232| `autoScrollEnabled` | **Predeterminado**: `true`. En [renderizado de pantalla completa](/es/fullscreen), seguir la nueva salida hasta el final de la conversación. Aparece en `/config` como **Auto-scroll**. Los avisos de permiso aún se desplazan a la vista cuando esto está desactivado | `false` |233| `autoScrollEnabled` | **Predeterminado**: `true`. En [renderizado de pantalla completa](/es/fullscreen), seguir la nueva salida hasta el final de la conversación. Aparece en `/config` como **Auto-scroll**. Los avisos de permiso aún se desplazan a la vista cuando esto está desactivado | `false` |

233| `autoUpdatesChannel` | **Predeterminado**: `"latest"`. Canal de lanzamiento a seguir para actualizaciones. Use `"stable"` para una versión que típicamente tiene aproximadamente una semana de antigüedad y omite versiones con regresiones importantes, o `"latest"` para el lanzamiento más reciente. Para deshabilitar completamente las actualizaciones automáticas, establezca [`DISABLE_AUTOUPDATER`](/es/setup#disable-auto-updates) en `env` | `"stable"` |234| `autoUpdatesChannel` | **Predeterminado**: `"latest"`. Canal de lanzamiento a seguir para actualizaciones. Use `"stable"` para una versión que típicamente tiene aproximadamente una semana de antigüedad y omite versiones con regresiones importantes, o `"latest"` para el lanzamiento más reciente. Para deshabilitar completamente las actualizaciones automáticas, establezca [`DISABLE_AUTOUPDATER`](/es/setup#disable-auto-updates) en `env` | `"stable"` |

234| `availableModels` | Restringir qué modelos pueden seleccionar los usuarios para la sesión principal, [subagents](/es/sub-agents), [skills](/es/skills) y el [advisor](/es/advisor). No afecta la opción Predeterminado a menos que `enforceAvailableModels` también esté establecido. Consulte [Restringir selección de modelo](/es/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |235| `availableModels` | Restringir qué modelos pueden seleccionar los usuarios para la sesión principal, [subagents](/es/sub-agents), [skills](/es/skills) y el [advisor](/es/advisor). No afecta la opción Predeterminado a menos que `enforceAvailableModels` también esté establecido. Consulte [Restringir selección de modelo](/es/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |


253| `disableDeepLinkRegistration` | Establecer en `"disable"` para evitar que Claude Code registre el controlador de protocolo `claude-cli://` con el sistema operativo al inicio. Los [enlaces profundos](/es/deep-links) permiten que herramientas externas abran una sesión de Claude Code con un indicador rellenado previamente. Útil en entornos donde el registro del controlador de protocolo está restringido o se gestiona por separado | `"disable"` |254| `disableDeepLinkRegistration` | Establecer en `"disable"` para evitar que Claude Code registre el controlador de protocolo `claude-cli://` con el sistema operativo al inicio. Los [enlaces profundos](/es/deep-links) permiten que herramientas externas abran una sesión de Claude Code con un indicador rellenado previamente. Útil en entornos donde el registro del controlador de protocolo está restringido o se gestiona por separado | `"disable"` |

254| `disabledMcpjsonServers` | Lista de MCP servers específicos de archivos `.mcp.json` para rechazar | `["filesystem"]` |255| `disabledMcpjsonServers` | Lista de MCP servers específicos de archivos `.mcp.json` para rechazar | `["filesystem"]` |

255| `disableRemoteControl` | {/* min-version: 2.1.128 */}Deshabilitar [Control Remoto](/es/remote-control): bloquea `claude remote-control`, la bandera `--remote-control`, auto-inicio y el toggle en sesión. Típicamente colocado en [configuraciones administradas](/es/permissions#managed-settings) para aplicación de MDM por dispositivo, pero funciona desde cualquier ámbito. Requiere Claude Code v2.1.128 o posterior | `true` |256| `disableRemoteControl` | {/* min-version: 2.1.128 */}Deshabilitar [Control Remoto](/es/remote-control): bloquea `claude remote-control`, la bandera `--remote-control`, auto-inicio y el toggle en sesión. Típicamente colocado en [configuraciones administradas](/es/permissions#managed-settings) para aplicación de MDM por dispositivo, pero funciona desde cualquier ámbito. Requiere Claude Code v2.1.128 o posterior | `true` |

257| `disableSideloadFlags` | {/* min-version: 2.1.193 */}(Solo configuraciones administradas) Rechazar las banderas CLI `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al inicio, que los usuarios podrían pasar de otra manera para eludir [`strictKnownMarketplaces`](#strictknownmarketplaces) para una única ejecución. También rechaza estas banderas desde cualquier superficie que genere la CLI con ellas internamente, actualmente sesiones locales de [Cowork](/es/desktop) en la aplicación de escritorio. Un `--mcp-config` cuyos servidores son todas entradas `type: "sdk"` en proceso aún se acepta, por lo que el Agent SDK y la extensión de VS Code siguen funcionando. No bloquea `claude mcp add`, `.mcp.json`, o SDK `setMcpServers()`; empareje con [`allowedMcpServers`](/es/managed-mcp) para control de MCP por servidor. Requiere Claude Code v2.1.193 o posterior | `true` |

256| `disableSkillShellExecution` | Deshabilitar la ejecución de shell en línea para bloques `` !`...` `` y ` ```! ` en [skills](/es/skills) y comandos personalizados de fuentes de usuario, proyecto, plugin o directorio adicional. Los comandos se reemplazan con `[shell command execution disabled by policy]` en lugar de ejecutarse. Los skills agrupados y administrados no se ven afectados. Más útil en [configuraciones administradas](/es/permissions#managed-settings) donde los usuarios no pueden anularlo | `true` |258| `disableSkillShellExecution` | Deshabilitar la ejecución de shell en línea para bloques `` !`...` `` y ` ```! ` en [skills](/es/skills) y comandos personalizados de fuentes de usuario, proyecto, plugin o directorio adicional. Los comandos se reemplazan con `[shell command execution disabled by policy]` en lugar de ejecutarse. Los skills agrupados y administrados no se ven afectados. Más útil en [configuraciones administradas](/es/permissions#managed-settings) donde los usuarios no pueden anularlo | `true` |

257| `disableWorkflows` | **Predeterminado**: `false`. Deshabilitar [flujos de trabajo dinámicos](/es/workflows#turn-workflows-off) y los comandos de flujo de trabajo agrupados. Equivalente a establecer `CLAUDE_CODE_DISABLE_WORKFLOWS` en `1` | `true` |259| `disableWorkflows` | **Predeterminado**: `false`. Deshabilitar [flujos de trabajo dinámicos](/es/workflows#turn-workflows-off) y los comandos de flujo de trabajo agrupados. Equivalente a establecer `CLAUDE_CODE_DISABLE_WORKFLOWS` en `1` | `true` |

258| `editorMode` | **Predeterminado**: `"normal"`. Modo de atajos de teclado para el indicador de entrada: `"normal"` o `"vim"`. Aparece en `/config` como **Editor mode** | `"vim"` |260| `editorMode` | **Predeterminado**: `"normal"`. Modo de atajos de teclado para el indicador de entrada: `"normal"` o `"vim"`. Aparece en `/config` como **Editor mode** | `"vim"` |

259| `effortLevel` | Persistir el [nivel de esfuerzo](/es/model-config#adjust-effort-level) entre sesiones. Acepta `"low"`, `"medium"`, `"high"`, o `"xhigh"`. Se escribe automáticamente cuando ejecuta `/effort` con uno de esos valores. `--effort` y [`CLAUDE_CODE_EFFORT_LEVEL`](/es/env-vars) anulan esto para una sesión. Consulte [Ajustar nivel de esfuerzo](/es/model-config#adjust-effort-level) para modelos compatibles | `"xhigh"` |261| `effortLevel` | Persistir el [nivel de esfuerzo](/es/model-config#adjust-effort-level) entre sesiones. Acepta `"low"`, `"medium"`, `"high"`, o `"xhigh"`. Se escribe automáticamente cuando ejecuta `/effort` con uno de esos valores. `--effort` y [`CLAUDE_CODE_EFFORT_LEVEL`](/es/env-vars) anulan esto para una sesión. Consulte [Ajustar nivel de esfuerzo](/es/model-config#adjust-effort-level) para modelos compatibles | `"xhigh"` |

260| `enableAllProjectMcpServers` | Aprobar automáticamente todos los MCP servers definidos en archivos `.mcp.json` de proyecto | `true` |262| `enableAllProjectMcpServers` | Aprobar automáticamente todos los MCP servers definidos en archivos `.mcp.json` de proyecto. {/* min-version: 2.1.196 */}A partir de v2.1.196, `claude mcp list` y `claude mcp get` honran esta clave en una carpeta no confiable solo desde [archivos de configuración que no se verifican en el repositorio](/es/mcp#managing-your-servers) | `true` |

261| `enabledMcpjsonServers` | Lista de MCP servers específicos de archivos `.mcp.json` para aprobar | `["memory", "github"]` |263| `enableArtifact` | {/* min-version: 2.1.196 */}Habilitar o deshabilitar la herramienta [Artifact](/es/artifacts) para este usuario. Cuando no está definido, el predeterminado sigue la [disponibilidad](/es/artifacts#availability) de la característica para su cuenta. La fila **Artifacts** en `/config` escribe esta clave. Una `disableArtifact` administrada y la [configuración de administrador](/es/artifacts#manage-artifacts-for-your-organization) de su organización tienen precedencia, y la clave se ignora en configuraciones de proyecto y local (`.claude/settings.json`, `.claude/settings.local.json`), que un repositorio podría verificar de otra manera. Requiere Claude Code v2.1.196 o posterior | `true` |

262| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Extender la lista blanca `availableModels` al modelo Predeterminado. Cuando es `true` en configuraciones administradas y `availableModels` es una matriz no vacía, la opción Predeterminado recurre a la primera entrada en lista blanca que está disponible. No tiene efecto cuando `availableModels` no está definido o está vacío. Consulte [Aplicar la lista blanca al modelo Predeterminado](/es/model-config#enforce-the-allowlist-for-the-default-model). Requiere Claude Code v2.1.175 o posterior | `true` |264| `enabledMcpjsonServers` | Lista de MCP servers específicos de archivos `.mcp.json` para aprobar. {/* min-version: 2.1.196 */}A partir de v2.1.196, `claude mcp list` y `claude mcp get` honran esta clave en una carpeta no confiable solo desde [archivos de configuración que no se verifican en el repositorio](/es/mcp#managing-your-servers) | `["memory", "github"]` |

263| `env` | Variables de entorno aplicadas a cada sesión y a subprocesos que Claude Code genera desde ella. {/* min-version: 2.1.143 */}A partir de v2.1.143, `NO_COLOR` y `FORCE_COLOR` establecidos aquí se pasan a subprocesos pero no cambian los colores de la interfaz propia de Claude Code. Establezca esos en su shell antes de lanzar `claude` para cambiar los colores de la interfaz | `{"FOO": "bar"}` |265| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Extender la lista blanca `availableModels` al modelo Predeterminado. Cuando es `true` en configuraciones administradas y `availableModels` es una matriz no vacía, la opción Predeterminado recurre a la primera entrada en lista blanca que está disponible, pero solo cuando el modelo predeterminado para el tipo de cuenta del usuario no está en la lista blanca; un predeterminado en lista blanca se mantiene tal cual. No tiene efecto cuando `availableModels` no está definido o está vacío. Consulte [Aplicar la lista blanca al modelo Predeterminado](/es/model-config#enforce-the-allowlist-for-the-default-model). Requiere Claude Code v2.1.175 o posterior | `true` |

264| `fallbackModel` | Modelo(s) de respaldo a intentar en orden cuando el modelo principal está sobrecargado o no disponible. Claude Code cambia al siguiente modelo disponible en la cadena para el resto del turno y muestra un aviso. `"default"` se expande al modelo predeterminado. Las cadenas se limitan a tres modelos; las entradas adicionales se ignoran. A diferencia de la mayoría de configuraciones de matriz, esta clave no se fusiona entre archivos de configuración: el archivo de mayor precedencia que la define suministra toda la cadena. La bandera [`--fallback-model`](/es/cli-reference#cli-flags) anula esto para una sesión. Consulte [Cadenas de modelo de respaldo](/es/model-config#fallback-model-chains) | `["claude-sonnet-4-6", "claude-haiku-4-5"]` |266| `env` | Variables de entorno aplicadas a cada sesión y a subprocesos que Claude Code genera desde ella. {/* min-version: 2.1.143 */}A partir de v2.1.143, `NO_COLOR` y `FORCE_COLOR` establecidos aquí se pasan a subprocesos pero no cambian los colores de la interfaz propia de Claude Code. Establezca esos en su shell antes de lanzar `claude` para cambiar los colores de la interfaz. {/* min-version: 2.1.195 */}A partir de v2.1.195, variables de identidad que los entornos de alojamiento de Claude Code establecen, por ejemplo `CLAUDE_CODE_REMOTE` y `CLAUDE_CODE_ACCOUNT_UUID`, se ignoran cuando se establecen aquí | `{"FOO": "bar"}` |

267| `fallbackModel` | Modelo(s) de respaldo a intentar en orden cuando el modelo principal está sobrecargado o no disponible. Claude Code cambia al siguiente modelo disponible en la cadena para el resto del turno y muestra un aviso. `"default"` se expande al modelo predeterminado. Las cadenas se limitan a tres modelos; las entradas adicionales se ignoran. A diferencia de la mayoría de configuraciones de matriz, esta clave no se fusiona entre archivos de configuración: el archivo de mayor precedencia que la define suministra toda la cadena. La bandera [`--fallback-model`](/es/cli-reference#cli-flags) anula esto para una sesión. Consulte [Cadenas de modelo de respaldo](/es/model-config#fallback-model-chains) | `["claude-sonnet-5", "claude-haiku-4-5"]` |

265| `fastModePerSessionOptIn` | Cuando es `true`, el modo rápido no persiste entre sesiones. Cada sesión comienza con el modo rápido desactivado, requiriendo que los usuarios lo habiliten con `/fast`. La preferencia de modo rápido del usuario aún se guarda. Consulte [Requerir opt-in por sesión](/es/fast-mode#require-per-session-opt-in) | `true` |268| `fastModePerSessionOptIn` | Cuando es `true`, el modo rápido no persiste entre sesiones. Cada sesión comienza con el modo rápido desactivado, requiriendo que los usuarios lo habiliten con `/fast`. La preferencia de modo rápido del usuario aún se guarda. Consulte [Requerir opt-in por sesión](/es/fast-mode#require-per-session-opt-in) | `true` |

266| `feedbackSurveyRate` | Probabilidad (0–1) de que la [encuesta de calidad de sesión](/es/data-usage#session-quality-surveys) aparezca cuando sea elegible. Establecer en `0` para suprimir completamente, o establezca [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/es/env-vars) en `env`. Útil cuando se usa Bedrock, Vertex, o Foundry donde la tasa de muestreo predeterminada no se aplica | `0.05` |269| `feedbackSurveyRate` | Probabilidad (0–1) de que la [encuesta de calidad de sesión](/es/data-usage#session-quality-surveys) aparezca cuando sea elegible. Establecer en `0` para suprimir completamente, o establezca [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/es/env-vars) en `env`. Útil cuando se usa Bedrock, Vertex, o Foundry donde la tasa de muestreo predeterminada no se aplica | `0.05` |

267| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}**Predeterminado**: `true`. Capturar archivos antes de cada edición para que [`/rewind`](/es/checkpointing) pueda restaurarlos. Aparece en `/config` como **Rewind code (checkpoints)**. Para deshabilitar a través de variable de entorno, establezca [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/es/env-vars) en `env` | `false` |270| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}**Predeterminado**: `true`. Capturar archivos antes de cada edición para que [`/rewind`](/es/checkpointing) pueda restaurarlos. Aparece en `/config` como **Rewind code (checkpoints)**. Para deshabilitar a través de variable de entorno, establezca [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/es/env-vars) en `env` | `false` |

268| `fileSuggestion` | Configurar un script personalizado para autocompletado de archivo `@`. Consulte [Configuración de sugerencia de archivo](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |271| `fileSuggestion` | Configurar un script personalizado para autocompletado de archivo `@`. Consulte [Configuración de sugerencia de archivo](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

269| `footerLinksRegexes` | {/* min-version: 2.1.176 */}Renderizar insignias clickeables adicionales en el pie de página cuando una regex coincide con la salida del turno. Cada entrada tiene un `pattern`, una plantilla de URL `url` con placeholders `{name}` rellenados desde grupos de captura nombrados, y una `label` opcional. Se lee desde configuraciones de usuario, bandera `--settings` y configuraciones administradas solamente. Consulte [Insignias de enlace de pie de página](#footer-link-badges) para restricciones de URL, lista blanca de esquemas y límites. Requiere Claude Code v2.1.176 o posterior | `[{"type": "regex", "pattern": "\\b(?<key>PROJ-\\d+)\\b", "url": "https://issues.example.com/browse/{key}", "label": "{key}"}]` |272| `footerLinksRegexes` | {/* min-version: 2.1.176 */}Renderizar insignias clickeables adicionales en el pie de página cuando una regex coincide con la salida del turno. Cada entrada tiene un `pattern`, una plantilla de URL `url` con placeholders `{name}` rellenados desde grupos de captura nombrados, y una `label` opcional. Se lee desde configuraciones de usuario, bandera `--settings` y configuraciones administradas solamente. Consulte [Insignias de enlace de pie de página](#footer-link-badges) para restricciones de URL, lista blanca de esquemas y límites. Requiere Claude Code v2.1.176 o posterior | `[{"type": "regex", "pattern": "\\b(?<key>PROJ-\\d+)\\b", "url": "https://issues.example.com/browse/{key}", "label": "{key}"}]` |

270| `forceLoginMethod` | Use `claudeai` para restringir el inicio de sesión a cuentas de Claude.ai, `console` para restringir el inicio de sesión a cuentas de Claude Console. Cuando se establece en configuraciones administradas, se bloquean sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper` al inicio, ya que ninguno de los valores puede satisfacerse sin OAuth de primera parte. Las sesiones de proveedores de terceros como Bedrock, Vertex y Foundry no se bloquean: se autentican contra su proveedor de nube en lugar de Anthropic | `claudeai` |273| `forceLoginMethod` | Use `claudeai` para restringir el inicio de sesión a cuentas de Claude.ai, `console` para restringir el inicio de sesión a cuentas de Claude Console, o `gateway` para restringir el inicio de sesión a una puerta de enlace en la nube; consulte [puerta de aplicaciones Claude](/es/claude-apps-gateway). Cuando se establece en cualquier valor en configuraciones administradas, se bloquean sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper` al inicio, ya que una credencial de entorno no puede satisfacer el método de inicio de sesión requerido. Las sesiones de proveedores de terceros como Bedrock, Vertex y Foundry no se bloquean: se autentican contra su proveedor de nube en lugar de Anthropic | `claudeai` |

274| `forceLoginGatewayUrl` | Rellena previamente y bloquea la URL de la puerta de enlace en la pantalla `/login` de puerta de enlace en la nube. Ya sea esta clave o `forceLoginMethod: "gateway"` muestra esa pantalla; establezca ambas para que la URL se rellene. Solo se honra en el nivel de política administrada; se ignora en configuraciones de usuario y proyecto. Consulte [puerta de aplicaciones Claude](/es/claude-apps-gateway#set-the-gateway-url) | `"https://claude-gateway.example.com"` |

271| `forceLoginOrgUUID` | Requerir que el inicio de sesión pertenezca a una organización específica de Anthropic. Acepta una cadena UUID única, que también preselecciona esa organización durante el inicio de sesión, o una matriz de UUID donde se acepta cualquier organización listada sin preselección. Cuando se establece en configuraciones administradas, el inicio de sesión falla si la cuenta autenticada no pertenece a una organización listada, y sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper` se bloquean al inicio ya que la pertenencia a la organización no puede verificarse para ellas. Las sesiones de proveedores de terceros como Bedrock, Vertex y Foundry no se bloquean: use su IAM de nube para restringir qué cuentas de nube pueden usarse. Una matriz vacía falla cerrada y bloquea el inicio de sesión con un mensaje de configuración incorrecta | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` o `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |275| `forceLoginOrgUUID` | Requerir que el inicio de sesión pertenezca a una organización específica de Anthropic. Acepta una cadena UUID única, que también preselecciona esa organización durante el inicio de sesión, o una matriz de UUID donde se acepta cualquier organización listada sin preselección. Cuando se establece en configuraciones administradas, el inicio de sesión falla si la cuenta autenticada no pertenece a una organización listada, y sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper` se bloquean al inicio ya que la pertenencia a la organización no puede verificarse para ellas. Las sesiones de proveedores de terceros como Bedrock, Vertex y Foundry no se bloquean: use su IAM de nube para restringir qué cuentas de nube pueden usarse. Una matriz vacía falla cerrada y bloquea el inicio de sesión con un mensaje de configuración incorrecta | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` o `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

272| `forceRemoteSettingsRefresh` | (Solo configuraciones administradas) Bloquear el inicio de CLI hasta que se obtengan configuraciones administradas remotas recientemente del servidor. Si la obtención falla, la CLI se cierra en lugar de continuar con configuraciones en caché o sin configuraciones. Cuando no se establece, el inicio continúa sin esperar configuraciones remotas. Consulte [aplicación de cierre de falla](/es/server-managed-settings#enforce-fail-closed-startup) | `true` |276| `forceRemoteSettingsRefresh` | (Solo configuraciones administradas) Bloquear el inicio de CLI hasta que se obtengan configuraciones administradas remotas recientemente del servidor. Si la obtención falla, la CLI se cierra en lugar de continuar con configuraciones en caché o sin configuraciones. Cuando no se establece, el inicio continúa sin esperar configuraciones remotas. Consulte [aplicación de cierre de falla](/es/server-managed-settings#enforce-fail-closed-startup) | `true` |

273| `gcpAuthRefresh` | Script personalizado que actualiza las Credenciales Predeterminadas de Aplicación de GCP cuando expiran o no se pueden cargar. Consulte [configuración avanzada de credenciales](/es/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |277| `gcpAuthRefresh` | Script personalizado que actualiza las Credenciales Predeterminadas de Aplicación de GCP cuando expiran o no se pueden cargar. Consulte [configuración avanzada de credenciales](/es/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |


276| `includeGitInstructions` | **Predeterminado**: `true`. Incluir instrucciones de flujo de trabajo de commit y PR integradas y la instantánea de estado de git en el indicador del sistema de Claude. Establecer en `false` para eliminar ambas, por ejemplo cuando se usan skills de flujo de trabajo de git personalizados. La variable de entorno `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` tiene precedencia sobre esta configuración cuando se establece | `false` |280| `includeGitInstructions` | **Predeterminado**: `true`. Incluir instrucciones de flujo de trabajo de commit y PR integradas y la instantánea de estado de git en el indicador del sistema de Claude. Establecer en `false` para eliminar ambas, por ejemplo cuando se usan skills de flujo de trabajo de git personalizados. La variable de entorno `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` tiene precedencia sobre esta configuración cuando se establece | `false` |

277| `inputNeededNotifEnabled` | {/* min-version: 2.1.119 */}**Predeterminado**: `false`. Cuando [Remote Control](/es/remote-control) está conectado, enviar una notificación push a su teléfono cuando un aviso de permiso o pregunta está esperando su entrada. Aparece en `/config` como **Push when actions required**. Consulte [Notificaciones push móviles](/es/remote-control#mobile-push-notifications). Requiere Claude Code v2.1.119 o posterior | `true` |281| `inputNeededNotifEnabled` | {/* min-version: 2.1.119 */}**Predeterminado**: `false`. Cuando [Remote Control](/es/remote-control) está conectado, enviar una notificación push a su teléfono cuando un aviso de permiso o pregunta está esperando su entrada. Aparece en `/config` como **Push when actions required**. Consulte [Notificaciones push móviles](/es/remote-control#mobile-push-notifications). Requiere Claude Code v2.1.119 o posterior | `true` |

278| `language` | Configurar el idioma de respuesta preferido de Claude (por ejemplo, `"japanese"`, `"spanish"`, `"french"`). Claude responderá en este idioma de forma predeterminada. También establece el idioma de [dictado de voz](/es/voice-dictation#change-the-dictation-language) y títulos de sesión generados automáticamente. {/* min-version: 2.1.176 */}A partir de v2.1.176, cuando no está definido, los títulos de sesión coinciden con el idioma de su conversación | `"japanese"` |282| `language` | Configurar el idioma de respuesta preferido de Claude (por ejemplo, `"japanese"`, `"spanish"`, `"french"`). Claude responderá en este idioma de forma predeterminada. También establece el idioma de [dictado de voz](/es/voice-dictation#change-the-dictation-language) y títulos de sesión generados automáticamente. {/* min-version: 2.1.176 */}A partir de v2.1.176, cuando no está definido, los títulos de sesión coinciden con el idioma de su conversación | `"japanese"` |

279| `maxSkillDescriptionChars` | {/* min-version: 2.1.105 */}**Predeterminado**: `1536`. Límite de caracteres por skill en el texto combinado de `description` y `when_to_use` en el [listado de skills](/es/skills#skill-descriptions-are-cut-short) que Claude ve cada turno. El texto más largo que esto se trunca. Aumente para mantener descripciones largas intactas al costo de más contexto por turno; disminuya para ajustar más skills bajo [`skillListingBudgetFraction`](#available-settings). Requiere Claude Code v2.1.105 o posterior | `2048` |

280| `minimumVersion` | Piso que evita que las actualizaciones automáticas en segundo plano e `claude update` instalen una versión por debajo de esta. Cambiar del canal `"latest"` a `"stable"` a través de `/config` le solicita que permanezca en la versión actual o permita la degradación. Elegir permanecer establece este valor. También útil en [configuraciones administradas](/es/permissions#managed-settings) para fijar un mínimo en toda la organización. Para un piso duro que bloquea el inicio completamente, consulte `requiredMinimumVersion` | `"2.1.100"` |283| `minimumVersion` | Piso que evita que las actualizaciones automáticas en segundo plano e `claude update` instalen una versión por debajo de esta. Cambiar del canal `"latest"` a `"stable"` a través de `/config` le solicita que permanezca en la versión actual o permita la degradación. Elegir permanecer establece este valor. También útil en [configuraciones administradas](/es/permissions#managed-settings) para fijar un mínimo en toda la organización. Para un piso duro que bloquea el inicio completamente, consulte `requiredMinimumVersion` | `"2.1.100"` |

281| `model` | Anular el modelo predeterminado a usar para Claude Code. `--model` y [`ANTHROPIC_MODEL`](/es/model-config#environment-variables) anulan esto para una sesión | `"claude-sonnet-4-6"` |284| `model` | Anular el modelo predeterminado a usar para Claude Code. `--model` y [`ANTHROPIC_MODEL`](/es/model-config#environment-variables) anulan esto para una sesión | `"claude-sonnet-5"` |

282| `modelOverrides` | Asignar IDs de modelo de Anthropic a IDs de modelo específicos del proveedor como ARNs de perfil de inferencia de Bedrock. Cada entrada del selector de modelo usa su valor asignado al llamar a la API del proveedor. Consulte [Anular IDs de modelo por versión](/es/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |285| `modelOverrides` | Asignar IDs de modelo de Anthropic a IDs de modelo específicos del proveedor como ARNs de perfil de inferencia de Bedrock. Cada entrada del selector de modelo usa su valor asignado al llamar a la API del proveedor. Consulte [Anular IDs de modelo por versión](/es/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

283| `otelHeadersHelper` | Script para generar encabezados dinámicos de OpenTelemetry. Se ejecuta al inicio y periódicamente. Establezca el intervalo de actualización con [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/es/env-vars). Consulte [Encabezados dinámicos](/es/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |286| `otelHeadersHelper` | Script para generar encabezados dinámicos de OpenTelemetry. Se ejecuta al inicio y periódicamente. Establezca el intervalo de actualización con [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/es/env-vars). Consulte [Encabezados dinámicos](/es/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |

284| `outputStyle` | Configurar un estilo de salida para ajustar el indicador del sistema. Consulte [documentación de estilos de salida](/es/output-styles) | `"Explanatory"` |287| `outputStyle` | Configurar un estilo de salida para ajustar el indicador del sistema. Consulte [documentación de estilos de salida](/es/output-styles) | `"Explanatory"` |


300| `showThinkingSummaries` | **Predeterminado**: `false`. Mostrar resúmenes de [pensamiento extendido](/es/model-config#extended-thinking) en sesiones interactivas. Cuando no está definido o es `false`, los bloques de pensamiento se redactan por la API y se muestran como un stub contraído. La redacción solo cambia lo que ve, no lo que genera el modelo: para reducir el gasto de pensamiento, [baje el presupuesto o deshabilite el pensamiento](/es/model-config#extended-thinking) en su lugar. Esta configuración no tiene efecto en modo no interactivo (`-p`), el Agent SDK, o extensiones IDE como VS Code | `true` |303| `showThinkingSummaries` | **Predeterminado**: `false`. Mostrar resúmenes de [pensamiento extendido](/es/model-config#extended-thinking) en sesiones interactivas. Cuando no está definido o es `false`, los bloques de pensamiento se redactan por la API y se muestran como un stub contraído. La redacción solo cambia lo que ve, no lo que genera el modelo: para reducir el gasto de pensamiento, [baje el presupuesto o deshabilite el pensamiento](/es/model-config#extended-thinking) en su lugar. Esta configuración no tiene efecto en modo no interactivo (`-p`), el Agent SDK, o extensiones IDE como VS Code | `true` |

301| `showTurnDuration` | **Predeterminado**: `true`. Mostrar mensajes de duración de turno después de respuestas, por ejemplo "Cooked for 1m 6s". Aparece en `/config` como **Show turn duration** | `false` |304| `showTurnDuration` | **Predeterminado**: `true`. Mostrar mensajes de duración de turno después de respuestas, por ejemplo "Cooked for 1m 6s". Aparece en `/config` como **Show turn duration** | `false` |

302| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}**Predeterminado**: `0.01` (1%). Fracción del contexto del modelo reservada para el [listado de skills](/es/skills#skill-descriptions-are-cut-short) que Claude ve cada turno. Cuando el listado excede el presupuesto, las descripciones de los skills menos utilizados se contraen a nombres desnudos para que Claude aún pueda invocarlos pero no verá por qué. Aumente para mantener más descripciones visibles al costo de más contexto por turno. `/doctor` muestra el recuento de truncamiento actual y qué skills se ven afectados. Requiere Claude Code v2.1.105 o posterior | `0.02` |305| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}**Predeterminado**: `0.01` (1%). Fracción del contexto del modelo reservada para el [listado de skills](/es/skills#skill-descriptions-are-cut-short) que Claude ve cada turno. Cuando el listado excede el presupuesto, las descripciones de los skills menos utilizados se contraen a nombres desnudos para que Claude aún pueda invocarlos pero no verá por qué. Aumente para mantener más descripciones visibles al costo de más contexto por turno. `/doctor` muestra el recuento de truncamiento actual y qué skills se ven afectados. Requiere Claude Code v2.1.105 o posterior | `0.02` |

303| `skillOverrides` | {{/* min-version: 2.1.129 */}}Anulaciones de visibilidad por skill con clave de nombre de skill. El valor es `"on"`, `"name-only"`, `"user-invocable-only"`, o `"off"`. Permite ocultar o contraer un skill sin editar su SKILL.md. No se aplica a skills de plugin, que se gestionan a través de `/plugin`. El menú `/skills` escribe estos en `.claude/settings.local.json`. Consulte [Anular visibilidad de skill desde configuraciones](/es/skills#override-skill-visibility-from-settings). Requiere Claude Code v2.1.129 o posterior | `{"legacy-context": "name-only", "deploy": "off"}` |306| `skillListingMaxDescChars` | {/* min-version: 2.1.105 */}**Predeterminado**: `1536`. Límite de caracteres por skill en el texto combinado de `description` y `when_to_use` en el [listado de skills](/es/skills#skill-descriptions-are-cut-short) que Claude ve cada turno. El texto más largo que esto se trunca. Aumente para mantener descripciones largas intactas al costo de más contexto por turno; disminuya para ajustar más skills bajo [`skillListingBudgetFraction`](#available-settings). Requiere Claude Code v2.1.105 o posterior | `2048` |

307| `skillOverrides` | {/* min-version: 2.1.129 */}Anulaciones de visibilidad por skill con clave de nombre de skill. El valor es `"on"`, `"name-only"`, `"user-invocable-only"`, o `"off"`. Permite ocultar o contraer un skill sin editar su SKILL.md. No se aplica a skills de plugin, que se gestionan a través de `/plugin`. El menú `/skills` escribe estos en `.claude/settings.local.json`. Consulte [Anular visibilidad de skill desde configuraciones](/es/skills#override-skill-visibility-from-settings). Requiere Claude Code v2.1.129 o posterior | `{"legacy-context": "name-only", "deploy": "off"}` |

304| `skipWebFetchPreflight` | Omitir la [verificación de seguridad de dominio de WebFetch](/es/data-usage#webfetch-domain-safety-check) que envía cada nombre de host solicitado a `api.anthropic.com` antes de obtener. Establecer en `true` en entornos que bloquean tráfico a Anthropic, como implementaciones de Bedrock, Vertex AI, o Foundry con salida restrictiva. Cuando se omite, WebFetch intenta cualquier URL sin consultar la lista de bloqueos | `true` |308| `skipWebFetchPreflight` | Omitir la [verificación de seguridad de dominio de WebFetch](/es/data-usage#webfetch-domain-safety-check) que envía cada nombre de host solicitado a `api.anthropic.com` antes de obtener. Establecer en `true` en entornos que bloquean tráfico a Anthropic, como implementaciones de Bedrock, Vertex AI, o Foundry con salida restrictiva. Cuando se omite, WebFetch intenta cualquier URL sin consultar la lista de bloqueos | `true` |

305| `spinnerTipsEnabled` | **Predeterminado**: `true`. Mostrar consejos en el spinner mientras Claude está trabajando. Establecer en `false` para deshabilitar consejos | `false` |309| `spinnerTipsEnabled` | **Predeterminado**: `true`. Mostrar consejos en el spinner mientras Claude está trabajando. Establecer en `false` para deshabilitar consejos | `false` |

306| `spinnerTipsOverride` | Anular consejos del spinner con cadenas personalizadas. `tips`: matriz de cadenas de consejo. `excludeDefault`: si es `true`, mostrar solo consejos personalizados; si es `false` o está ausente, los consejos personalizados se fusionan con consejos integrados | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |310| `spinnerTipsOverride` | Anular consejos del spinner con cadenas personalizadas. `tips`: matriz de cadenas de consejo. `excludeDefault`: si es `true`, mostrar solo consejos personalizados; si es `false` o está ausente, los consejos personalizados se fusionan con consejos integrados | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

307| `spinnerVerbs` | Personalizar los verbos de acción mostrados mientras un turno está en progreso. Establezca `mode` en `"replace"` para usar solo sus verbos, o `"append"` para agregarlos a los predeterminados | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |311| `spinnerVerbs` | Personalizar los verbos de acción mostrados mientras un turno está en progreso. Establezca `mode` en `"replace"` para usar solo sus verbos, o `"append"` para agregarlos a los predeterminados | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

308| `sshConfigs` | Conexiones SSH a mostrar en el menú desplegable de entorno de [Desktop](/es/desktop#pre-configure-ssh-connections-for-your-team). Cada entrada requiere `id`, `name` y `sshHost`; `sshPort`, `sshIdentityFile` y `startDirectory` son opcionales. Cuando se establece en configuraciones administradas, las conexiones son de solo lectura para los usuarios. Se lee desde configuraciones administradas y de usuario solamente | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |312| `sshConfigs` | Conexiones SSH a mostrar en el menú desplegable de entorno de [Desktop](/es/desktop#pre-configure-ssh-connections-for-your-team). Cada entrada requiere `id`, `name` y `sshHost`; `sshPort`, `sshIdentityFile` y `startDirectory` son opcionales. Cuando se establece en configuraciones administradas, las conexiones son de solo lectura para los usuarios. Se lee desde configuraciones administradas y de usuario solamente | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

309| `statusLine` | Configurar una línea de estado personalizada para mostrar contexto. Consulte [documentación de `statusLine`](/es/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |313| `statusLine` | Configurar una línea de estado personalizada para mostrar contexto. Los campos opcionales del objeto `padding`, `refreshInterval` y `hideVimModeIndicator` controlan espaciado, re-ejecuciones periódicas y si el indicador de modo vim integrado debajo del indicador está oculto. Consulte [documentación de `statusLine`](/es/statusline#manually-configure-a-status-line) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

310| `strictKnownMarketplaces` | (Solo configuraciones administradas) Lista blanca de fuentes de marketplace de plugins. Sin definir = sin restricciones, matriz vacía = bloqueo. Aplicada en adición de marketplace y en instalación, actualización, actualización y auto-actualización de plugins, por lo que un marketplace agregado antes de que se estableciera la política no puede usarse para obtener plugins. Consulte [Restricciones de marketplace administradas](/es/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |314| `strictKnownMarketplaces` | (Solo configuraciones administradas) Lista blanca de fuentes de marketplace de plugins. Sin definir = sin restricciones, matriz vacía = bloqueo. Aplicada en adición de marketplace y en instalación, actualización, actualización y auto-actualización de plugins, por lo que un marketplace agregado antes de que se estableciera la política no puede usarse para obtener plugins. Consulte [Restricciones de marketplace administradas](/es/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

311| `strictPluginOnlyCustomization` | (Solo configuraciones administradas) Bloquear skills, agents, hooks y MCP servers de fuentes de usuario y proyecto, para que solo puedan provenir de plugins o configuraciones administradas. `true` bloquea las cuatro superficies; una matriz bloquea solo las nombradas. Consulte [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |315| `strictPluginOnlyCustomization` | (Solo configuraciones administradas) Bloquear skills, agents, hooks y MCP servers de fuentes de usuario y proyecto, para que solo puedan provenir de plugins o configuraciones administradas. `true` bloquea las cuatro superficies; una matriz bloquea solo las nombradas. Consulte [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |

312| `syntaxHighlightingDisabled` | Deshabilitar resaltado de sintaxis en diffs, bloques de código y vistas previas de archivos | `true` |316| `syntaxHighlightingDisabled` | Deshabilitar resaltado de sintaxis en diffs, bloques de código y vistas previas de archivos | `true` |


352| `worktree.baseRef` | Qué ref ramifican los nuevos worktrees. `"fresh"` (predeterminado) ramifica desde `origin/<default-branch>` para un árbol limpio que coincida con el remoto. `"head"` ramifica desde su `HEAD` local actual, por lo que los commits no enviados y el estado de rama de características están presentes en el worktree. Se aplica a `--worktree`, la herramienta `EnterWorktree` y el aislamiento de subagent | `"head"` |356| `worktree.baseRef` | Qué ref ramifican los nuevos worktrees. `"fresh"` (predeterminado) ramifica desde `origin/<default-branch>` para un árbol limpio que coincida con el remoto. `"head"` ramifica desde su `HEAD` local actual, por lo que los commits no enviados y el estado de rama de características están presentes en el worktree. Se aplica a `--worktree`, la herramienta `EnterWorktree` y el aislamiento de subagent | `"head"` |

353| `worktree.symlinkDirectories` | Directorios a enlazar simbólicamente desde el repositorio principal en cada worktree para evitar duplicar directorios grandes en disco. No se enlazan directorios de forma predeterminada | `["node_modules", ".cache"]` |357| `worktree.symlinkDirectories` | Directorios a enlazar simbólicamente desde el repositorio principal en cada worktree para evitar duplicar directorios grandes en disco. No se enlazan directorios de forma predeterminada | `["node_modules", ".cache"]` |

354| `worktree.sparsePaths` | Directorios a verificar en cada worktree a través de git sparse-checkout. Solo las rutas listadas más archivos de nivel raíz se escriben en disco, lo que es más rápido en monorepos grandes | `["packages/my-app", "shared/utils"]` |358| `worktree.sparsePaths` | Directorios a verificar en cada worktree a través de git sparse-checkout. Solo las rutas listadas más archivos de nivel raíz se escriben en disco, lo que es más rápido en monorepos grandes | `["packages/my-app", "shared/utils"]` |

355| `worktree.bgIsolation` | {{/* min-version: 2.1.143 */}}Modo de aislamiento para [sesiones de fondo](/es/agent-view#how-file-edits-are-isolated). `"worktree"` (predeterminado) bloquea `Edit`/`Write` en el checkout principal hasta que se llame a `EnterWorktree`. `"none"` permite que los trabajos de fondo editen la copia de trabajo directamente. Requiere Claude Code v2.1.143 o posterior | `"none"` |359| `worktree.bgIsolation` | {/* min-version: 2.1.143 */}Modo de aislamiento para [sesiones de fondo](/es/agent-view#how-file-edits-are-isolated). `"worktree"` (predeterminado) bloquea `Edit`/`Write` en el checkout principal hasta que se llame a `EnterWorktree`. `"none"` permite que los trabajos de fondo editen la copia de trabajo directamente. Requiere Claude Code v2.1.143 o posterior | `"none"` |

356 360 

357Para copiar archivos ignorados por git como `.env` en nuevos worktrees, use un [archivo `.worktreeinclude`](/es/worktrees#copy-gitignored-files-into-worktrees) en la raíz de su proyecto en lugar de una configuración.361Para copiar archivos ignorados por git como `.env` en nuevos worktrees, use un [archivo `.worktreeinclude`](/es/worktrees#copy-gitignored-files-into-worktrees) en la raíz de su proyecto en lugar de una configuración.

358 362 


361</h3>365</h3>

362 366 

363| Claves | Descripción | Ejemplo |367| Claves | Descripción | Ejemplo |

364| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |368| :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

365| `allow` | Matriz de reglas de permiso para permitir el uso de herramientas. Los globs de nombre de herramienta se admiten solo en la posición de herramienta después de un prefijo literal `mcp__<server>__`, como `mcp__github__get_*`; el segmento de servidor debe estar libre de glob. Consulte [Sintaxis de regla de permiso](#permission-rule-syntax) a continuación para detalles de coincidencia de patrones | `[ "Bash(git diff *)" ]` |369| `allow` | Matriz de reglas de permiso para permitir el uso de herramientas. Los globs de nombre de herramienta se admiten solo en la posición de herramienta después de un prefijo literal `mcp__<server>__`, como `mcp__github__get_*`; el segmento de servidor debe estar libre de glob. Consulte [Sintaxis de regla de permiso](#permission-rule-syntax) a continuación para detalles de coincidencia de patrones | `[ "Bash(git diff *)" ]` |

366| `ask` | Matriz de reglas de permiso para pedir confirmación al usar herramientas. Consulte [Sintaxis de regla de permiso](#permission-rule-syntax) a continuación | `[ "Bash(git push *)" ]` |370| `ask` | Matriz de reglas de permiso para pedir confirmación al usar herramientas. Consulte [Sintaxis de regla de permiso](#permission-rule-syntax) a continuación | `[ "Bash(git push *)" ]` |

367| `deny` | Matriz de reglas de permiso para denegar el uso de herramientas. Use esto para excluir archivos sensibles del acceso de Claude Code. Los nombres de herramientas aceptan patrones glob: `"*"` deniega cada herramienta y `"mcp__*"` deniega todas las herramientas MCP. Consulte [Sintaxis de regla de permiso](#permission-rule-syntax) y [Limitaciones de permiso de Bash](/es/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |371| `deny` | Matriz de reglas de permiso para denegar el uso de herramientas. Use esto para excluir archivos sensibles del acceso de Claude Code. Los nombres de herramientas aceptan patrones glob: `"*"` deniega cada herramienta y `"mcp__*"` deniega todas las herramientas MCP. Consulte [Sintaxis de regla de permiso](#permission-rule-syntax) y [Limitaciones de permiso de Bash](/es/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

368| `additionalDirectories` | [Directorios de trabajo](/es/permissions#working-directories) adicionales para acceso a archivos. La mayoría de la configuración de `.claude/` [no se descubre](/es/permissions#additional-directories-grant-file-access-not-configuration) desde estos directorios | `[ "../docs/" ]` |372| `additionalDirectories` | [Directorios de trabajo](/es/permissions#working-directories) adicionales para acceso a archivos. La mayoría de la configuración de `.claude/` [no se descubre](/es/permissions#additional-directories-grant-file-access-not-configuration) desde estos directorios | `[ "../docs/" ]` |

369| `defaultMode` | [Modo de permiso](/es/permission-modes) predeterminado al abrir Claude Code. Valores válidos: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. {{/* min-version: 2.1.142 */}}A partir de Claude Code v2.1.142, `auto` se ignora cuando se establece en configuraciones de proyecto o local (`.claude/settings.json`, `.claude/settings.local.json`) para que un repositorio no pueda otorgarse a sí mismo modo automático. Establézcalo en `~/.claude/settings.json` en su lugar. La bandera CLI `--permission-mode` anula esta configuración para una única sesión | `"acceptEdits"` |373| `defaultMode` | [Modo de permiso](/es/permission-modes) predeterminado al abrir Claude Code. Valores válidos: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. {/* min-version: 2.1.142 */}A partir de Claude Code v2.1.142, `auto` se ignora cuando se establece en configuraciones de proyecto o local (`.claude/settings.json`, `.claude/settings.local.json`) para que un repositorio no pueda otorgarse a sí mismo modo automático. Establézcalo en `~/.claude/settings.json` en su lugar. La bandera CLI `--permission-mode` anula esta configuración para una única sesión | `"acceptEdits"` |

370| `disableBypassPermissionsMode` | Establecer en `"disable"` para evitar que se active el modo `bypassPermissions`. Esto deshabilita la bandera de línea de comandos `--dangerously-skip-permissions`. Típicamente colocado en [configuraciones administradas](/es/permissions#managed-settings) para aplicar política organizacional, pero funciona desde cualquier ámbito | `"disable"` |374| `disableBypassPermissionsMode` | Establecer en `"disable"` para evitar que se active el modo `bypassPermissions`. Esto deshabilita la bandera de línea de comandos `--dangerously-skip-permissions`. Típicamente colocado en [configuraciones administradas](/es/permissions#managed-settings) para aplicar política organizacional, pero funciona desde cualquier ámbito | `"disable"` |

371| `skipDangerousModePermissionPrompt` | Omitir el aviso de confirmación mostrado antes de entrar en modo de permisos de derivación a través de `--dangerously-skip-permissions` o `defaultMode: "bypassPermissions"`. Se ignora cuando se establece en configuraciones de proyecto (`.claude/settings.json`) para evitar que repositorios no confiables omitan automáticamente el aviso | `true` |375| `skipDangerousModePermissionPrompt` | Omitir el aviso de confirmación mostrado antes de entrar en modo de permisos de derivación a través de `--dangerously-skip-permissions` o `defaultMode: "bypassPermissions"`. Se ignora cuando se establece en configuraciones de proyecto (`.claude/settings.json`) para evitar que repositorios no confiables omitan automáticamente el aviso | `true` |

372 376 


483**Atribución de commit predeterminada:**487**Atribución de commit predeterminada:**

484 488 

485```text theme={null}489```text theme={null}

486Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>490Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

487```491```

488 492 

489El nombre del modelo en el trailer refleja el modelo activo para la sesión.493El nombre del modelo en el trailer refleja el modelo activo para la sesión.


645}649}

646```650```

647 651 

648Cuando el asistente emite `managedSettings`, ese objeto reemplaza las configuraciones administradas basadas en archivos para la ejecución. Cuando el asistente sale con código no cero al inicio, Claude Code imprime el error y se niega a iniciar, por lo que un asistente que necesita resiliencia de interrupción debe servir desde su propio caché y salir con `0`.652Cuando el asistente emite `managedSettings`, ese objeto se convierte en la única fuente de configuraciones administradas para la ejecución, tomando precedencia sobre fuentes remotas, MDM y basadas en archivos. Cuando el asistente sale con código no cero al inicio, Claude Code imprime el error y se niega a iniciar, por lo que un asistente que necesita resiliencia de interrupción debe servir desde su propio caché y salir con `0`.

649 653 

650<h3 id="settings-precedence">654<h3 id="settings-precedence">

651 Precedencia de configuración655 Precedencia de configuración


6561. **Configuraciones administradas** ([administradas por servidor](/es/server-managed-settings), [políticas de MDM/nivel de SO](#configuration-scopes), o [configuraciones administradas](/es/settings#settings-files))6601. **Configuraciones administradas** ([administradas por servidor](/es/server-managed-settings), [políticas de MDM/nivel de SO](#configuration-scopes), o [configuraciones administradas](/es/settings#settings-files))

657 * Políticas implementadas por TI a través de entrega de servidor, perfiles de configuración MDM, políticas de registro o archivos de configuración administrados661 * Políticas implementadas por TI a través de entrega de servidor, perfiles de configuración MDM, políticas de registro o archivos de configuración administrados

658 * No pueden ser anuladas por ningún otro nivel, incluyendo argumentos de línea de comandos662 * No pueden ser anuladas por ningún otro nivel, incluyendo argumentos de línea de comandos

659 * Dentro del nivel administrado, la precedencia es: administrado por servidor > políticas de MDM/nivel de SO > archivo basado (`managed-settings.d/*.json` + `managed-settings.json`) > registro HKCU (solo Windows). Solo se usa una fuente administrada; las fuentes no se fusionan entre niveles. Dentro del nivel basado en archivos, los archivos de entrega y el archivo base se fusionan juntos.663 * Dentro del nivel administrado, la precedencia es: salida de [`policyHelper`](#compute-managed-settings-with-a-policy-helper), que cuando se configura es la única fuente administrada utilizada > remota (configuraciones administradas por servidor de claude.ai o políticas entregadas por [puerta de aplicaciones Claude](/es/claude-apps-gateway)) > políticas de MDM/nivel de SO > basada en archivos (`managed-settings.d/*.json` + `managed-settings.json`) > registro HKCU (solo Windows). Solo se usa una fuente administrada; las fuentes no se fusionan entre niveles, con una excepción: las claves de bloqueo de sandbox `sandbox.network.allowManagedDomainsOnly` y `sandbox.filesystem.allowManagedReadPathsOnly`, con sus listas blancas asociadas, `allowAllClaudeAiMcps`, y las rutas binarias de sandbox `sandbox.bwrapPath` y `sandbox.socatPath` se honran cuando cualquier fuente administrada controlada por administrador las establece; el nivel HKCU escribible por el usuario se excluye. Dentro del nivel basado en archivos, los archivos de entrega y el archivo base se fusionan juntos.

660 * Los hosts de incrustación como Claude Desktop pueden suministrar política a través de la opción SDK `managedSettings`. De forma predeterminada, esto se ignora cuando está presente cualquier nivel administrado. Los administradores pueden optar por establecer [`parentSettingsBehavior`](#available-settings) en `"merge"`. Los valores del incrustador se filtran para que puedan restringir la política administrada pero no flexibilizarla.664 * Los hosts de incrustación como Claude Desktop pueden suministrar política a través de la opción SDK `managedSettings`. De forma predeterminada, esto se ignora cuando está presente cualquier fuente administrada implementada por administrador: configuraciones administradas por servidor, una política de MDM o nivel de SO, o un archivo de configuración administrado. El fallback de registro HKCU escribible por el usuario no cuenta como una fuente administrada implementada por administrador. Los administradores pueden optar por establecer [`parentSettingsBehavior`](#available-settings) en `"merge"`. Los valores del incrustador se filtran para que puedan restringir la política administrada pero no flexibilizarla.

661 665 

6622. **Argumentos de línea de comandos**6662. **Argumentos de línea de comandos**

663 * Anulaciones temporales para una sesión específica. JSON pasado a través de `--settings <file-or-json>` se fusiona con configuraciones basadas en archivos usando las mismas reglas que las otras capas: una clave establecida aquí anula la misma clave en configuraciones locales, de proyecto o de usuario, y omitir una clave deja el valor de capa inferior en su lugar667 * Anulaciones temporales para una sesión específica. JSON pasado a través de `--settings <file-or-json>` se fusiona con configuraciones basadas en archivos usando las mismas reglas que las otras capas: una clave establecida aquí anula la misma clave en configuraciones locales, de proyecto o de usuario, y omitir una clave deja el valor de capa inferior en su lugar


688 Verificar configuraciones activas692 Verificar configuraciones activas

689</h3>693</h3>

690 694 

691Ejecute `/status` dentro de Claude Code para ver qué fuentes de configuración están activas. Dentro del menú, la pestaña **Status** incluye una línea `Setting sources` que enumera cada capa que Claude Code cargó para la sesión actual, como `User settings` o `Project local settings`. Cuando [configuraciones administradas](/es/admin-setup#decide-how-settings-reach-devices) están en efecto, la entrada muestra el canal de entrega entre paréntesis, por ejemplo `Enterprise managed settings (remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, o `(file)`. Una capa aparece en la lista solo cuando esa fuente se carga con al menos una clave, por lo que una lista vacía significa que no se encontraron fuentes de configuración.695Ejecute `/status` dentro de Claude Code para ver qué fuentes de configuración están activas. Dentro del menú, la pestaña **Status** incluye una línea `Setting sources` que enumera cada capa que Claude Code cargó para la sesión actual, como `User settings` o `Project local settings`. Cuando [configuraciones administradas](/es/admin-setup#decide-how-settings-reach-devices) están en efecto, la entrada muestra el canal de entrega entre paréntesis, por ejemplo `Enterprise managed settings (remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, o `(file)`. El canal `remote` cubre tanto configuraciones administradas por servidor de claude.ai como políticas entregadas por [puerta de aplicaciones Claude](/es/claude-apps-gateway). Una capa aparece en la lista solo cuando esa fuente se carga con al menos una clave, por lo que una lista vacía significa que no se encontraron fuentes de configuración.

692 696 

693La línea `Setting sources` confirma qué fuentes se están leyendo. No muestra qué capa suministró cada clave individual. La pestaña **Config** en el mismo diálogo es un editor para un conjunto fijo de toggles como tema y salida detallada, no una vista de sus contenidos de `settings.json`.697La línea `Setting sources` confirma qué fuentes se están leyendo. No muestra qué capa suministró cada clave individual. La pestaña **Config** en el mismo diálogo es un editor para un conjunto fijo de toggles como tema y salida detallada, no una vista de sus contenidos de `settings.json`.

694 698 

695Si un archivo de configuración contiene errores, como JSON inválido o un valor que falla la validación, Claude Code muestra un aviso de problemas de configuración al inicio y `/status` enumera los archivos afectados. Ejecute `/doctor` para ver los detalles de cada error.699Si un archivo de configuración contiene errores, como JSON inválido o un valor que falla la validación, `/status` enumera los archivos afectados. Ejecute `/doctor` para ver los detalles de cada error.

696 700 

697<h3 id="key-points-about-the-configuration-system">701<h3 id="key-points-about-the-configuration-system">

698 Puntos clave sobre el sistema de configuración702 Puntos clave sobre el sistema de configuración


711 715 

712El indicador del sistema interno de Claude Code no se publica. Para agregar instrucciones personalizadas, use archivos `CLAUDE.md` o la bandera `--append-system-prompt`.716El indicador del sistema interno de Claude Code no se publica. Para agregar instrucciones personalizadas, use archivos `CLAUDE.md` o la bandera `--append-system-prompt`.

713 717 

714<h3 id="excluding-sensitive-files">718<h3 id="exclude-sensitive-files">

715 Excluyendo archivos sensibles719 Excluyendo archivos sensibles

716</h3>720</h3>

717 721 


739 743 

740Claude Code admite subagents de IA personalizados que se pueden configurar en niveles de usuario y proyecto. Estos subagents se almacenan como archivos Markdown con frontmatter YAML:744Claude Code admite subagents de IA personalizados que se pueden configurar en niveles de usuario y proyecto. Estos subagents se almacenan como archivos Markdown con frontmatter YAML:

741 745 

742* **Subagents de usuario**: `~/.claude/agents/` - Disponibles en todos sus proyectos746* **Subagents de usuario**: `~/.claude/agents/`, disponibles en todos sus proyectos

743* **Subagents de proyecto**: `.claude/agents/` - Específicos de su proyecto y se pueden compartir con su equipo747* **Subagents de proyecto**: `.claude/agents/`, específicos de su proyecto y compartibles con su equipo

744 748 

745Los archivos de subagent definen asistentes de IA especializados con indicaciones personalizadas y permisos de herramientas. Obtenga más información sobre cómo crear y usar subagents en la [documentación de subagents](/es/sub-agents).749Los archivos de subagent definen asistentes de IA especializados con indicaciones personalizadas y permisos de herramientas. Obtenga más información sobre cómo crear y usar subagents en la [documentación de subagents](/es/sub-agents).

746 750 


791 Las configuraciones de proyecto tienen precedencia sobre las configuraciones de usuario, por lo que establecer un plugin en `false` en `~/.claude/settings.json` no deshabilita un plugin que la `.claude/settings.json` del proyecto habilita. Para optar por no participar en un plugin habilitado por el proyecto en su máquina, establézcalo en `false` en `.claude/settings.local.json` en su lugar.795 Las configuraciones de proyecto tienen precedencia sobre las configuraciones de usuario, por lo que establecer un plugin en `false` en `~/.claude/settings.json` no deshabilita un plugin que la `.claude/settings.json` del proyecto habilita. Para optar por no participar en un plugin habilitado por el proyecto en su máquina, establézcalo en `false` en `.claude/settings.local.json` en su lugar.

792 796 

793 Los plugins forzados a estar habilitados por configuraciones administradas no pueden deshabilitarse de esta manera, ya que las configuraciones administradas anulan las configuraciones locales.797 Los plugins forzados a estar habilitados por configuraciones administradas no pueden deshabilitarse de esta manera, ya que las configuraciones administradas anulan las configuraciones locales.

798 

799 Habilitar un plugin desde una fuente externa como un repositorio de GitHub o paquete npm en la `.claude/settings.json` de un proyecto no lo instala para otras personas. A partir de Claude Code v2.1.195, cada ruta que carga plugins solicita a cada usuario que [instale y confíe en el plugin](/es/discover-plugins#configure-team-marketplaces) antes de que se ejecute.

794</Note>800</Note>

795 801 

796**Ejemplo**:802**Ejemplo**:


914{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }920{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

915```921```

916 922 

917Campos: `repo` (requerido), `ref` (opcional: rama/etiqueta/SHA), `path` (opcional: subdirectorio)923Campos: `repo` (requerido), `ref` (opcional: rama o etiqueta), `path` (opcional: subdirectorio)

918 924 

9192. **Repositorios de Git**:9252. **Repositorios de Git**:

920 926 


924{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }930{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

925```931```

926 932 

927Campos: `url` (requerido), `ref` (opcional: rama/etiqueta/SHA), `path` (opcional: subdirectorio)933Campos: `url` (requerido), `ref` (opcional: rama o etiqueta), `path` (opcional: subdirectorio)

928 934 

9293. **Marketplaces basados en URL**:9353. **Marketplaces basados en URL**:

930 936 


1023}1029}

1024```1030```

1025 1031 

1026Ejemplo - Deshabilitar todas las adiciones de marketplace:1032Ejemplo: deshabilitar todas las adiciones de marketplace:

1027 1033 

1028```json theme={null}1034```json theme={null}

1029{1035{


1046 1052 

1047**Requisitos de coincidencia exacta**:1053**Requisitos de coincidencia exacta**:

1048 1054 

1049Las fuentes de marketplace deben coincidir **exactamente** para que se permita la adición de un usuario. Para fuentes basadas en git (`github` y `git`), esto incluye todos los campos opcionales:1055Las fuentes de marketplace deben coincidir exactamente para que se permita la adición de un usuario. Para fuentes basadas en git (`github` y `git`), esto incluye todos los campos opcionales:

1050 1056 

1051* El `repo` o `url` debe coincidir exactamente1057* El `repo` o `url` debe coincidir exactamente

1052* El campo `ref` debe coincidir exactamente (o ambos estar sin definir)1058* El campo `ref` debe coincidir exactamente (o ambos estar sin definir)

1053* El campo `path` debe coincidir exactamente (o ambos estar sin definir)1059* El campo `path` debe coincidir exactamente (o ambos estar sin definir)

1054 1060 

1055Ejemplos de fuentes que **NO coinciden**:1061Ejemplos de fuentes que no coinciden:

1056 1062 

1057```json theme={null}1063```json theme={null}

1058// Estas son fuentes DIFERENTES:1064// Estas son fuentes DIFERENTES:


1157 1163 

1158Los nombres de superficie que una versión de Claude Code no reconoce se ignoran en lugar de fallar en el archivo de configuración, por lo que puede agregar nuevos nombres de superficie antes de que todos los clientes se hayan actualizado.1164Los nombres de superficie que una versión de Claude Code no reconoce se ignoran en lugar de fallar en el archivo de configuración, por lo que puede agregar nuevos nombres de superficie antes de que todos los clientes se hayan actualizado.

1159 1165 

1160<h3 id="managing-plugins">1166<h3 id="manage-plugins">

1161 Gestionar plugins1167 Gestionar plugins

1162</h3>1168</h3>

1163 1169 

setup.md +1 −1

Details

36</h2>36</h2>

37 37 

38<Tip>38<Tip>

39 ¿Prefiere una interfaz gráfica? La [aplicación de escritorio](/es/desktop-quickstart) le permite usar Claude Code sin la terminal. Descárguela para [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) o [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).39 ¿Prefiere una interfaz gráfica? La [aplicación de escritorio](/es/desktop-quickstart) le permite usar Claude Code sin la terminal. Descárguela para [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs), [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) o [Linux](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).

40 40 

41 ¿Nuevo en la terminal? Consulte la [guía de terminal](/es/terminal-guide) para obtener instrucciones paso a paso.41 ¿Nuevo en la terminal? Consulte la [guía de terminal](/es/terminal-guide) para obtener instrucciones paso a paso.

42</Tip>42</Tip>

skills.md +8 −3

Details

251| `when_to_use` | No | Contexto adicional para cuándo Claude debe invocar el skill, como frases desencadenantes o solicitudes de ejemplo. Se añade a `description` en el listado de skills y cuenta hacia el límite de 1.536 caracteres. |251| `when_to_use` | No | Contexto adicional para cuándo Claude debe invocar el skill, como frases desencadenantes o solicitudes de ejemplo. Se añade a `description` en el listado de skills y cuenta hacia el límite de 1.536 caracteres. |

252| `argument-hint` | No | Sugerencia mostrada durante el autocompletado para indicar argumentos esperados. Ejemplo: `[issue-number]` o `[filename] [format]`. |252| `argument-hint` | No | Sugerencia mostrada durante el autocompletado para indicar argumentos esperados. Ejemplo: `[issue-number]` o `[filename] [format]`. |

253| `arguments` | No | Argumentos posicionales nombrados para [sustitución de `$name`](#available-string-substitutions) en el contenido del skill. Acepta una cadena separada por espacios o una lista YAML. Los nombres se asignan a posiciones de argumentos en orden. |253| `arguments` | No | Argumentos posicionales nombrados para [sustitución de `$name`](#available-string-substitutions) en el contenido del skill. Acepta una cadena separada por espacios o una lista YAML. Los nombres se asignan a posiciones de argumentos en orden. |

254| `disable-model-invocation` | No | Establezca en `true` para evitar que Claude cargue automáticamente este skill. Utilice para flujos de trabajo que desea activar manualmente con `/name`. También evita que el skill sea [precargado en subagents](/es/sub-agents#preload-skills-into-subagents). Predeterminado: `false`. |254| `disable-model-invocation` | No | Establezca en `true` para evitar que Claude cargue automáticamente este skill. Utilice para flujos de trabajo que desea activar manualmente con `/name`. También evita que el skill sea [precargado en subagents](/es/sub-agents#preload-skills-into-subagents). A partir de v2.1.196, también evita que el skill se ejecute cuando una [tarea programada](/es/scheduled-tasks) se dispara con el skill como su prompt. Predeterminado: `false`. |

255| `user-invocable` | No | Establezca en `false` para ocultar del menú `/`. Utilice para conocimiento de fondo que los usuarios no deberían invocar directamente. Predeterminado: `true`. |255| `user-invocable` | No | Establezca en `false` para ocultar del menú `/`. Utilice para conocimiento de fondo que los usuarios no deberían invocar directamente. Predeterminado: `true`. |

256| `allowed-tools` | No | Herramientas que Claude puede usar sin pedir permiso cuando este skill está activo. Acepta una cadena separada por espacios o comas, o una lista YAML. |256| `allowed-tools` | No | Herramientas que Claude puede usar sin pedir permiso cuando este skill está activo. Acepta una cadena separada por espacios o comas, o una lista YAML. |

257| `disallowed-tools` | No | Herramientas eliminadas del grupo disponible de Claude mientras este skill está activo. Utilice para skills autónomos que nunca deben llamar a ciertas herramientas, como `AskUserQuestion` para un bucle de fondo. Acepta una cadena separada por espacios o comas, o una lista YAML. La restricción se borra cuando envía su siguiente mensaje. |257| `disallowed-tools` | No | Herramientas eliminadas del grupo disponible de Claude mientras este skill está activo. Utilice para skills autónomos que nunca deben llamar a ciertas herramientas, como `AskUserQuestion` para un bucle de fondo. Acepta una cadena separada por espacios o comas, o una lista YAML. La restricción se borra cuando envía su siguiente mensaje. |


288Los skills admiten sustitución de cadena para valores dinámicos en el contenido del skill:288Los skills admiten sustitución de cadena para valores dinámicos en el contenido del skill:

289 289 

290| Variable | Descripción |290| Variable | Descripción |

291| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |291| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

292| `$ARGUMENTS` | Todos los argumentos pasados al invocar el skill. Si `$ARGUMENTS` no está presente en el contenido, los argumentos se añaden como `ARGUMENTS: <value>`. |292| `$ARGUMENTS` | Todos los argumentos pasados al invocar el skill. Si `$ARGUMENTS` no está presente en el contenido, los argumentos se añaden como `ARGUMENTS: <value>`. |

293| `$ARGUMENTS[N]` | Acceda a un argumento específico por índice basado en 0, como `$ARGUMENTS[0]` para el primer argumento. |293| `$ARGUMENTS[N]` | Acceda a un argumento específico por índice basado en 0, como `$ARGUMENTS[0]` para el primer argumento. |

294| `$N` | Abreviatura para `$ARGUMENTS[N]`, como `$0` para el primer argumento o `$1` para el segundo. |294| `$N` | Abreviatura para `$ARGUMENTS[N]`, como `$0` para el primer argumento o `$1` para el segundo. |


296| `${CLAUDE_SESSION_ID}` | El ID de sesión actual. Útil para registro, creación de archivos específicos de sesión o correlación de salida de skill con sesiones. |296| `${CLAUDE_SESSION_ID}` | El ID de sesión actual. Útil para registro, creación de archivos específicos de sesión o correlación de salida de skill con sesiones. |

297| `${CLAUDE_EFFORT}` | El nivel de esfuerzo actual: `low`, `medium`, `high`, `xhigh`, o `max`. Ultracode no es un nivel distinto e informa como `xhigh`. Utilice esto para adaptar instrucciones de skill a la configuración de esfuerzo activa. |297| `${CLAUDE_EFFORT}` | El nivel de esfuerzo actual: `low`, `medium`, `high`, `xhigh`, o `max`. Ultracode no es un nivel distinto e informa como `xhigh`. Utilice esto para adaptar instrucciones de skill a la configuración de esfuerzo activa. |

298| `${CLAUDE_SKILL_DIR}` | El directorio que contiene el archivo `SKILL.md` del skill. Para skills de plugin, este es el subdirectorio del skill dentro del plugin, no la raíz del plugin. Utilice esto en comandos de inyección bash para hacer referencia a scripts o archivos incluidos con el skill, independientemente del directorio de trabajo actual. |298| `${CLAUDE_SKILL_DIR}` | El directorio que contiene el archivo `SKILL.md` del skill. Para skills de plugin, este es el subdirectorio del skill dentro del plugin, no la raíz del plugin. Utilice esto en comandos de inyección bash para hacer referencia a scripts o archivos incluidos con el skill, independientemente del directorio de trabajo actual. |

299| `${CLAUDE_PROJECT_DIR}` | El directorio raíz del proyecto. Esta es la misma ruta que [hooks](/es/hooks#reference-scripts-by-path) y servidores MCP reciben como `CLAUDE_PROJECT_DIR`. Utilice esto para hacer referencia a scripts o archivos locales del proyecto, como `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, independientemente de dónde esté instalado el skill. |

300 

301La sustitución `${CLAUDE_PROJECT_DIR}` requiere Claude Code v2.1.196 o posterior. Se aplica tanto al cuerpo del skill como al frontmatter [`allowed-tools`](#frontmatter-reference), por lo que una regla de permiso como `Bash(${CLAUDE_PROJECT_DIR}/scripts/lint.sh *)` se resuelve a la misma ruta que usa el cuerpo del skill.

299 302 

300Los argumentos indexados utilizan entrecomillado de estilo shell, por lo que envuelva valores de varias palabras entre comillas para pasarlos como un único argumento. Por ejemplo, `/my-skill "hello world" second` hace que `$0` se expanda a `hello world` y `$1` a `second`. El marcador de posición `$ARGUMENTS` siempre se expande a la cadena de argumento completa tal como se escribió.303Los argumentos indexados utilizan entrecomillado de estilo shell, por lo que envuelva valores de varias palabras entre comillas para pasarlos como un único argumento. Por ejemplo, `/my-skill "hello world" second` hace que `$0` se expanda a `hello world` y `$1` a `second`. El marcador de posición `$ARGUMENTS` siempre se expande a la cadena de argumento completa tal como se escribió.

301 304 


898 901 

899Las descripciones de skills se cargan en contexto para que Claude sepa qué está disponible. Todos los nombres de skills siempre se incluyen, pero si tiene muchos skills, las descripciones se acortan para ajustarse al presupuesto de caracteres, lo que puede eliminar las palabras clave que Claude necesita para coincidir con su solicitud. El presupuesto se escala al 1% de la ventana de contexto del modelo. Cuando se desborda, las descripciones de los skills que invoca menos se eliminan primero, por lo que los skills que realmente usa mantienen su texto completo. Ejecute `/doctor` para ver cuántas descripciones de skills se están acortando o eliminando y qué skills se ven afectados.902Las descripciones de skills se cargan en contexto para que Claude sepa qué está disponible. Todos los nombres de skills siempre se incluyen, pero si tiene muchos skills, las descripciones se acortan para ajustarse al presupuesto de caracteres, lo que puede eliminar las palabras clave que Claude necesita para coincidir con su solicitud. El presupuesto se escala al 1% de la ventana de contexto del modelo. Cuando se desborda, las descripciones de los skills que invoca menos se eliminan primero, por lo que los skills que realmente usa mantienen su texto completo. Ejecute `/doctor` para ver cuántas descripciones de skills se están acortando o eliminando y qué skills se ven afectados.

900 903 

901Para aumentar el presupuesto, establezca la configuración [`skillListingBudgetFraction`](/es/settings#available-settings) (por ejemplo, `0.02` = 2%) o la variable de entorno `SLASH_COMMAND_TOOL_CHAR_BUDGET` a un recuento de caracteres fijo. Para liberar presupuesto para otros skills, establezca las entradas de baja prioridad en `"name-only"` en [`skillOverrides`](#override-skill-visibility-from-settings) para que se enumeren sin descripción. También puede recortar el texto de `description` y `when_to_use` en la fuente: coloque el caso de uso clave primero, ya que el texto combinado de cada entrada está limitado a 1.536 caracteres independientemente del presupuesto. El límite es configurable con [`maxSkillDescriptionChars`](/es/settings#available-settings).904A partir de v2.1.196, la fila Skills en `/context` reporta el tamaño del listado después de que se aplica el presupuesto, por lo que coincide con lo que recibe el modelo. Las versiones anteriores contaban el texto completo de cada descripción, por lo que la fila podría mostrar un valor varias veces mayor que el presupuesto que `/doctor` reporta.

905 

906Para aumentar el presupuesto, establezca la configuración [`skillListingBudgetFraction`](/es/settings#available-settings) (por ejemplo, `0.02` = 2%) o la variable de entorno `SLASH_COMMAND_TOOL_CHAR_BUDGET` a un recuento de caracteres fijo. Para liberar presupuesto para otros skills, establezca las entradas de baja prioridad en `"name-only"` en [`skillOverrides`](#override-skill-visibility-from-settings) para que se enumeren sin descripción. También puede recortar el texto de `description` y `when_to_use` en la fuente: coloque el caso de uso clave primero, ya que el texto combinado de cada entrada está limitado a 1.536 caracteres independientemente del presupuesto. El límite es configurable con [`skillListingMaxDescChars`](/es/settings#available-settings).

902 907 

903<h2 id="related-resources">908<h2 id="related-resources">

904 Recursos relacionados909 Recursos relacionados

statusline.md +3 −0

Details

194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Segundos de época Unix cuando se reinicia la ventana de límite de velocidad de 5 horas o 7 días |194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Segundos de época Unix cuando se reinicia la ventana de límite de velocidad de 5 horas o 7 días |

195| `session_id` | Identificador único de sesión |195| `session_id` | Identificador único de sesión |

196| `session_name` | Nombre de sesión personalizado establecido con la bandera `--name` o `/rename`. Ausente si no se ha establecido un nombre personalizado |196| `session_name` | Nombre de sesión personalizado establecido con la bandera `--name` o `/rename`. Ausente si no se ha establecido un nombre personalizado |

197| `prompt_id` | UUID que identifica el prompt del usuario que se está procesando actualmente. Coincide con el atributo [`prompt.id` en eventos de OpenTelemetry](/es/monitoring-usage#event-correlation-attributes). Ausente hasta la primera entrada del usuario. Requiere Claude Code v2.1.196 o posterior |

197| `transcript_path` | Ruta al archivo de transcripción de conversación |198| `transcript_path` | Ruta al archivo de transcripción de conversación |

198| `version` | Versión de Claude Code |199| `version` | Versión de Claude Code |

199| `output_style.name` | Nombre del estilo de salida actual |200| `output_style.name` | Nombre del estilo de salida actual |


215 "cwd": "/current/working/directory",216 "cwd": "/current/working/directory",

216 "session_id": "abc123...",217 "session_id": "abc123...",

217 "session_name": "my-session",218 "session_name": "my-session",

219 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",

218 "transcript_path": "/path/to/transcript.jsonl",220 "transcript_path": "/path/to/transcript.jsonl",

219 "model": {221 "model": {

220 "id": "claude-opus-4-8",222 "id": "claude-opus-4-8",


296 **Campos que pueden estar ausentes** (no presentes en JSON):298 **Campos que pueden estar ausentes** (no presentes en JSON):

297 299 

298 * `session_name`: aparece solo cuando se ha establecido un nombre personalizado con `--name` o `/rename`300 * `session_name`: aparece solo cuando se ha establecido un nombre personalizado con `--name` o `/rename`

301 * `prompt_id`: aparece solo después de la primera entrada del usuario

299 * `workspace.git_worktree`: aparece solo cuando el directorio actual está dentro de un git worktree vinculado302 * `workspace.git_worktree`: aparece solo cuando el directorio actual está dentro de un git worktree vinculado

300 * `workspace.repo`: aparece solo dentro de un repositorio git con un remoto `origin` configurado303 * `workspace.repo`: aparece solo dentro de un repositorio git con un remoto `origin` configurado

301 * `effort`: aparece solo cuando el modelo actual admite el parámetro de esfuerzo de razonamiento304 * `effort`: aparece solo cuando el modelo actual admite el parámetro de esfuerzo de razonamiento

sub-agents.md +50 −34

Details

38 <Tab title="Explore">38 <Tab title="Explore">

39 Un agente rápido y de solo lectura optimizado para buscar y analizar bases de código.39 Un agente rápido y de solo lectura optimizado para buscar y analizar bases de código.

40 40 

41 * **Modelo**: Haiku (rápido, baja latencia)41 * **Modelo**: Haiku, que es rápido y de baja latencia

42 * **Herramientas**: Herramientas de solo lectura (acceso denegado a herramientas Write y Edit)42 * **Herramientas**: herramientas de solo lectura; Write y Edit están denegados

43 * **Propósito**: Descubrimiento de archivos, búsqueda de código, exploración de base de código43 * **Propósito**: descubrimiento de archivos, búsqueda de código, exploración de base de código

44 44 

45 Claude delega en Explore cuando necesita buscar o entender una base de código sin hacer cambios. Esto mantiene los resultados de exploración fuera del contexto de su conversación principal.45 Claude delega en Explore cuando necesita buscar o entender una base de código sin hacer cambios. Esto mantiene los resultados de exploración fuera del contexto de su conversación principal.

46 46 


50 <Tab title="Plan">50 <Tab title="Plan">

51 Un agente de investigación utilizado durante [plan mode](/es/permission-modes#analyze-before-you-edit-with-plan-mode) para recopilar contexto antes de presentar un plan.51 Un agente de investigación utilizado durante [plan mode](/es/permission-modes#analyze-before-you-edit-with-plan-mode) para recopilar contexto antes de presentar un plan.

52 52 

53 * **Modelo**: Hereda de la conversación principal53 * **Modelo**: hereda de la conversación principal

54 * **Herramientas**: Herramientas de solo lectura (acceso denegado a herramientas Write y Edit)54 * **Herramientas**: herramientas de solo lectura; Write y Edit están denegados

55 * **Propósito**: Investigación de base de código para planificación55 * **Propósito**: investigación de base de código para planificación

56 56 

57 Cuando está en plan mode y Claude necesita entender su base de código, delega la investigación al subagente Plan para que la salida de exploración permanezca en una ventana de contexto separada mientras la conversación principal sigue siendo de solo lectura.57 Cuando está en plan mode y Claude necesita entender su base de código, delega la investigación al subagente Plan para que la salida de exploración permanezca en una ventana de contexto separada mientras la conversación principal sigue siendo de solo lectura.

58 </Tab>58 </Tab>


60 <Tab title="General-purpose">60 <Tab title="General-purpose">

61 Un agente capaz para tareas complejas de múltiples pasos que requieren tanto exploración como acción.61 Un agente capaz para tareas complejas de múltiples pasos que requieren tanto exploración como acción.

62 62 

63 * **Modelo**: Hereda de la conversación principal63 * **Modelo**: hereda de la conversación principal

64 * **Herramientas**: Todas las herramientas64 * **Herramientas**: todas las herramientas

65 * **Propósito**: Investigación compleja, operaciones de múltiples pasos, modificaciones de código65 * **Propósito**: investigación compleja, operaciones de múltiples pasos, modificaciones de código

66 66 

67 Claude delega en general-purpose cuando la tarea requiere tanto exploración como modificación, razonamiento complejo para interpretar resultados, o múltiples pasos dependientes.67 Claude delega en general-purpose cuando la tarea requiere tanto exploración como modificación, razonamiento complejo para interpretar resultados, o múltiples pasos dependientes.

68 </Tab>68 </Tab>


77 </Tab>77 </Tab>

78</Tabs>78</Tabs>

79 79 

80Los subagentes integrados siempre se registran en sesiones interactivas. Para bloquear un tipo integrado específico, agréguelo a `permissions.deny` como se muestra en [Deshabilitar subagentes específicos](#disable-specific-subagents). Para evitar que Claude delegue a cualquier subagente, deniegue la herramienta `Agent` en sí con [`permissions.deny`](/es/permissions#tool-specific-permission-rules). En [modo no interactivo](/es/headless) y el [Agent SDK](/es/agent-sdk/overview), establezca [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/es/env-vars) para eliminar todos los tipos integrados y proporcionar solo los suyos.80Los subagentes integrados siempre se registran en sesiones interactivas. Para restringirlos:

81 

82* Para bloquear un tipo integrado específico, agréguelo a `permissions.deny` como se muestra en [Deshabilitar subagentes específicos](#disable-specific-subagents).

83* Para evitar que Claude delegue a cualquier subagente, deniegue la herramienta `Agent` en sí con [`permissions.deny`](/es/permissions#tool-specific-permission-rules).

84* En [modo no interactivo](/es/headless) y el [Agent SDK](/es/agent-sdk/overview), establezca [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/es/env-vars) para eliminar todos los tipos integrados y proporcionar solo los suyos.

81 85 

82Más allá de estos subagentes integrados, puede crear los suyos propios con mensajes personalizados, restricciones de herramientas, modos de permisos, hooks y skills. Las siguientes secciones muestran cómo comenzar y personalizar subagentes.86Más allá de estos subagentes integrados, puede crear los suyos propios con mensajes personalizados, restricciones de herramientas, modos de permisos, hooks y skills. Las siguientes secciones muestran cómo comenzar y personalizar subagentes.

83 87 


93 <Step title="Abrir la interfaz de subagentes">97 <Step title="Abrir la interfaz de subagentes">

94 En Claude Code, ejecute:98 En Claude Code, ejecute:

95 99 

96 ```text theme={null}100 ```text wrap theme={null}

97 /agents101 /agents

98 ```102 ```

99 </Step>103 </Step>


105 <Step title="Generar con Claude">109 <Step title="Generar con Claude">

106 Seleccione **Generate with Claude**. Cuando se le solicite, describa el subagente:110 Seleccione **Generate with Claude**. Cuando se le solicite, describa el subagente:

107 111 

108 ```text theme={null}112 ```text wrap theme={null}

109 A code improvement agent that scans files and suggests improvements113 A code improvement agent that scans files and suggests improvements

110 for readability, performance, and best practices. It should explain114 for readability, performance, and best practices. It should explain

111 each issue, show the current code, and provide an improved version.115 each issue, show the current code, and provide an improved version.


133 <Step title="Guardar e intentarlo">137 <Step title="Guardar e intentarlo">

134 Revise el resumen de configuración. Presione `s` o `Enter` para guardar, o presione `e` para guardar y editar el archivo en su editor. El subagente está disponible inmediatamente. Intente:138 Revise el resumen de configuración. Presione `s` o `Enter` para guardar, o presione `e` para guardar y editar el archivo en su editor. El subagente está disponible inmediatamente. Intente:

135 139 

136 ```text theme={null}140 ```text wrap theme={null}

137 Use the code-improver agent to suggest improvements in this project141 Use the code-improver agent to suggest improvements in this project

138 ```142 ```

139 143 


167 Elegir el alcance del subagente171 Elegir el alcance del subagente

168</h3>172</h3>

169 173 

170Los subagentes son archivos Markdown con frontmatter YAML. Guárdelos en diferentes ubicaciones según el alcance. Cuando múltiples subagentes comparten el mismo nombre, la ubicación de mayor prioridad gana.174Los subagentes son archivos Markdown con frontmatter YAML. Guárdelos en diferentes ubicaciones según el alcance. Cuando múltiples subagentes comparten el mismo nombre, Claude Code usa el de la ubicación de mayor prioridad.

171 175 

172| Ubicación | Alcance | Prioridad | Cómo crear |176| Ubicación | Alcance | Prioridad | Cómo crear |

173| :------------------------------ | :------------------------------ | :----------- | :------------------------------------------------------------------ |177| :------------------------------ | :------------------------------ | :----------- | :------------------------------------------------------------------ |


185 189 

186**Los subagentes de usuario** (`~/.claude/agents/`) son subagentes personales disponibles en todos sus proyectos.190**Los subagentes de usuario** (`~/.claude/agents/`) son subagentes personales disponibles en todos sus proyectos.

187 191 

188Claude Code escanea `.claude/agents/` y `~/.claude/agents/` recursivamente, por lo que puede organizar definiciones en subcarpetas como `agents/review/` o `agents/research/`. La ruta del subdirectorio no afecta cómo se identifica o invoca un subagente, porque la identidad proviene solo del campo `name` del frontmatter. Mantenga los valores de `name` únicos en todo el árbol: si dos archivos dentro de un alcance declaran el mismo nombre, Claude Code mantiene uno y descarta el otro sin advertencia.192Claude Code escanea `.claude/agents/` y `~/.claude/agents/` recursivamente, por lo que puede organizar definiciones en subcarpetas como `agents/review/` o `agents/research/`. La ruta del subdirectorio no afecta cómo se identifica o invoca un subagente, porque la identidad proviene solo del campo `name` del frontmatter.

193 

194Mantenga los valores de `name` únicos en todo el árbol: si dos archivos dentro de un alcance declaran el mismo nombre, Claude Code carga solo uno de ellos. {/* min-version: 2.1.196 */}A partir de v2.1.196, ejecutar `/doctor` reporta nombres de agentes duplicados en el mismo alcance y muestra qué definición está activa.

189 195 

190Los directorios `agents/` de plugins también se escanean recursivamente. A diferencia de los alcances de proyecto y usuario, una subcarpeta dentro del directorio `agents/` de un plugin se convierte en parte del [identificador con alcance](#invoke-subagents-explicitly): un archivo en `agents/review/security.md` en el plugin `my-plugin` se registra como `my-plugin:review:security`.196Los directorios `agents/` de plugins también se escanean recursivamente. A diferencia de los alcances de proyecto y usuario, una subcarpeta dentro del directorio `agents/` de un plugin se convierte en parte del [identificador con alcance](#invoke-subagents-explicitly): un archivo en `agents/review/security.md` en el plugin `my-plugin` se registra como `my-plugin:review:security`.

191 197 


263specific, actionable feedback on quality, security, and best practices.269specific, actionable feedback on quality, security, and best practices.

264```270```

265 271 

266El frontmatter define los metadatos y la configuración del subagente. El cuerpo se convierte en el mensaje del sistema que guía el comportamiento del subagente. Los subagentes reciben solo este mensaje del sistema (más detalles básicos del entorno como el directorio de trabajo), no el mensaje del sistema completo de Claude Code.272El frontmatter define los metadatos y la configuración del subagente. El cuerpo se convierte en el mensaje del sistema que guía el comportamiento del subagente. Los subagentes reciben solo este mensaje del sistema más detalles básicos del entorno como el directorio de trabajo, no el mensaje del sistema completo de Claude Code.

267 273 

268Un subagente comienza en el directorio de trabajo actual de la conversación principal. Dentro de un subagente, los comandos `cd` no persisten entre llamadas de herramientas Bash o PowerShell y no afectan el directorio de trabajo de la conversación principal. Para dar al subagente una copia aislada del repositorio en su lugar, establezca [`isolation: worktree`](#supported-frontmatter-fields).274Un subagente comienza en el directorio de trabajo actual de la conversación principal. Dentro de un subagente, los comandos `cd` no persisten entre llamadas de herramientas Bash o PowerShell y no afectan el directorio de trabajo de la conversación principal. Para dar al subagente una copia aislada del repositorio en su lugar, establezca [`isolation: worktree`](#supported-frontmatter-fields).

269 275 


299El campo `model` controla qué [modelo de IA](/es/model-config) usa el subagente:305El campo `model` controla qué [modelo de IA](/es/model-config) usa el subagente:

300 306 

301* **Alias de modelo**: Use uno de los alias disponibles: `sonnet`, `opus`, `haiku`, o `fable`307* **Alias de modelo**: Use uno de los alias disponibles: `sonnet`, `opus`, `haiku`, o `fable`

302* **ID de modelo completo**: Use un ID de modelo completo como `claude-opus-4-8` o `claude-sonnet-4-6`. Acepta los mismos valores que la bandera `--model`308* **ID de modelo completo**: Use un ID de modelo completo como `claude-opus-4-8` o `claude-sonnet-5`. Acepta los mismos valores que la bandera `--model`

303* **inherit**: Use el mismo modelo que la conversación principal309* **inherit**: Use el mismo modelo que la conversación principal

304* **Omitido**: Si no se especifica, por defecto es `inherit` (usa el mismo modelo que la conversación principal)310* **Omitido**: Si no se especifica, por defecto es `inherit` (usa el mismo modelo que la conversación principal)

305 311 

306Cuando Claude invoca un subagente, también puede pasar un parámetro `model` para esa invocación específica. Claude Code resuelve el modelo del subagente en este orden:312Cuando Claude invoca un subagente, también puede pasar un parámetro `model` para esa invocación específica. Claude Code resuelve el modelo del subagente en este orden:

307 313 

3081. La variable de entorno [`CLAUDE_CODE_SUBAGENT_MODEL`](/es/model-config#environment-variables), si está establecida3141. La variable de entorno [`CLAUDE_CODE_SUBAGENT_MODEL`](/es/model-config#environment-variables), cuando está establecida en un alias de modelo o ID de modelo

3092. El parámetro `model` por invocación3152. El parámetro `model` por invocación

3103. El frontmatter `model` de la definición del subagente3163. El frontmatter `model` de la definición del subagente

3114. El modelo de la conversación principal3174. El modelo de la conversación principal

312 318 

319{/* min-version: 2.1.196 */}A partir de v2.1.196, establecer `CLAUDE_CODE_SUBAGENT_MODEL` en `inherit` es lo mismo que dejarlo sin establecer: la resolución continúa con el parámetro `model` por invocación, luego el frontmatter. En versiones anteriores, `inherit` forzaba subagentes al modelo de la conversación principal e ignoraba ambas fuentes.

320 

313La variable de entorno, el parámetro por invocación y los valores de frontmatter se verifican contra la lista de permitidos [`availableModels`](/es/model-config#restrict-model-selection) de su organización. Un valor que se resuelve a un modelo excluido no se usa y el subagente se ejecuta en el modelo heredado en su lugar.321La variable de entorno, el parámetro por invocación y los valores de frontmatter se verifican contra la lista de permitidos [`availableModels`](/es/model-config#restrict-model-selection) de su organización. Un valor que se resuelve a un modelo excluido no se usa y el subagente se ejecuta en el modelo heredado en su lugar.

314 322 

315<h3 id="control-subagent-capabilities">323<h3 id="control-subagent-capabilities">


602 610 

603Los subagentes pueden definir [hooks](/es/hooks) que se ejecutan durante el ciclo de vida del subagente. Hay dos formas de configurar hooks:611Los subagentes pueden definir [hooks](/es/hooks) que se ejecutan durante el ciclo de vida del subagente. Hay dos formas de configurar hooks:

604 612 

6051. **En el frontmatter del subagente**: Defina hooks que se ejecuten solo mientras ese subagente está activo613* **En el frontmatter del subagente**: defina hooks que se ejecuten solo mientras ese subagente está activo

6062. **En `settings.json`**: Defina hooks que se ejecuten en la sesión principal cuando los subagentes comienzan o se detienen614* **En `settings.json`**: defina hooks que se ejecuten en la sesión principal cuando los subagentes comienzan o se detienen

607 615 

608<h4 id="hooks-in-subagent-frontmatter">616<h4 id="hooks-in-subagent-frontmatter">

609 Hooks en frontmatter de subagentes617 Hooks en frontmatter de subagentes


656| `SubagentStart` | Nombre de tipo de agente | Cuando un subagente comienza la ejecución |664| `SubagentStart` | Nombre de tipo de agente | Cuando un subagente comienza la ejecución |

657| `SubagentStop` | Nombre de tipo de agente | Cuando un subagente se completa |665| `SubagentStop` | Nombre de tipo de agente | Cuando un subagente se completa |

658 666 

659Ambos eventos soportan matchers para dirigirse a tipos de agentes específicos por nombre. Este ejemplo ejecuta un script de configuración solo cuando el subagente `db-agent` comienza, y un script de limpieza cuando cualquier subagente se detiene:667Ambos eventos soportan matchers para dirigirse a tipos de agentes específicos por nombre. El valor del matcher es el `name` del frontmatter del agente para subagentes a nivel de proyecto y usuario, o el identificador con alcance de plugin como `my-plugin:db-agent` para [subagentes de plugin](/es/plugins). Un nombre con alcance contiene dos puntos, por lo que se evalúa como una [expresión regular sin anclar](/es/hooks#matcher-patterns); anclarlo con `^` y `$`, como en `^my-plugin:db-agent$`, para coincidir solo con ese agente.

668 

669Este ejemplo ejecuta un script de configuración solo cuando el subagente `db-agent` comienza, y un script de limpieza cuando cualquier subagente se detiene:

660 670 

661```json theme={null}671```json theme={null}

662{672{


680}690}

681```691```

682 692 

693Un matcher con guiones como `db-agent` coincide exactamente en Claude Code v2.1.195 o posterior. En versiones anteriores se evalúa como una expresión regular sin anclar y también se dispara para cualquier tipo de agente que lo contenga, como `prod-db-agent`; anclarlo como `^db-agent$` en esas versiones.

694 

683Consulte [Hooks](/es/hooks) para el formato de configuración de hook completo.695Consulte [Hooks](/es/hooks) para el formato de configuración de hook completo.

684 696 

685<h2 id="work-with-subagents">697<h2 id="work-with-subagents">


704 716 

705Para lenguaje natural, no hay sintaxis especial. Nombre el subagente y Claude típicamente delega:717Para lenguaje natural, no hay sintaxis especial. Nombre el subagente y Claude típicamente delega:

706 718 

707```text theme={null}719```text wrap theme={null}

708Use the test-runner subagent to fix failing tests720Use the test-runner subagent to fix failing tests

709Have the code-reviewer subagent look at my recent changes721Have the code-reviewer subagent look at my recent changes

710```722```

711 723 

712**@-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:724**@-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:

713 725 

714```text theme={null}726```text wrap theme={null}

715@"code-reviewer (agent)" look at the auth changes727@"code-reviewer (agent)" look at the auth changes

716```728```

717 729 

718Su 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.730Su 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.

719 731 

720Los subagentes proporcionados por un [plugin](/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. Tambié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`.732Los subagentes proporcionados por un [plugin](/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.

733 

734Puede también 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`.

721 735 

722**Ejecute toda la sesión como un subagente.** Pase [`--agent <name>`](/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:736**Ejecute toda la sesión como un subagente.** Pase [`--agent <name>`](/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:

723 737 


757 Ejecutar subagentes en primer plano o fondo771 Ejecutar subagentes en primer plano o fondo

758</h3>772</h3>

759 773 

760Los subagentes pueden ejecutarse en primer plano (bloqueante) o fondo (concurrente):774Los subagentes pueden ejecutarse en primer plano o en fondo:

761 775 

762* **Subagentes en primer plano** bloquean la conversación principal hasta completarse. Las solicitudes de permiso se le pasan a usted a medida que surgen.776* **Subagentes en primer plano** bloquean la conversación principal hasta completarse. Las solicitudes de permiso se le pasan a usted a medida que surgen.

763* **Subagentes en fondo** se ejecutan concurrentemente mientras continúa trabajando. {/* min-version: 2.1.186 */}A partir de v2.1.186, cuando un subagente en fondo alcanza una llamada de herramienta que necesita permiso, la solicitud aparece 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.777* **Subagentes en fondo** se ejecutan concurrentemente mientras continúa trabajando. {/* min-version: 2.1.186 */}A partir de v2.1.186, cuando un subagente en fondo alcanza una llamada de herramienta que necesita permiso, la solicitud aparece 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.


781 795 

782Uno 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.796Uno 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.

783 797 

784```text theme={null}798```text wrap theme={null}

785Use a subagent to run the test suite and report only the failing tests with their error messages799Use a subagent to run the test suite and report only the failing tests with their error messages

786```800```

787 801 


791 805 

792Para investigaciones independientes, genere múltiples subagentes para trabajar simultáneamente:806Para investigaciones independientes, genere múltiples subagentes para trabajar simultáneamente:

793 807 

794```text theme={null}808```text wrap theme={null}

795Research the authentication, database, and API modules in parallel using separate subagents809Research the authentication, database, and API modules in parallel using separate subagents

796```810```

797 811 


809 823 

810Para 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.824Para 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.

811 825 

812```text theme={null}826```text wrap theme={null}

813Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them827Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

814```828```

815 829 


820Use la **conversación principal** cuando:834Use la **conversación principal** cuando:

821 835 

822* La tarea necesita ida y vuelta frecuente o refinamiento iterativo836* La tarea necesita ida y vuelta frecuente o refinamiento iterativo

823* Múltiples fases comparten contexto significativo (planificación implementación prueba)837* Múltiples fases comparten contexto significativo, como planificación, implementación y prueba

824* Está haciendo un cambio rápido y dirigido838* Está haciendo un cambio rápido y dirigido

825* La latencia importa. Los subagentes comienzan frescos y pueden necesitar tiempo para recopilar contexto839* La latencia importa. Los subagentes comienzan frescos y pueden necesitar tiempo para recopilar contexto

826 840 


840 854 

841{/* min-version: 2.1.172 */}A partir de Claude Code v2.1.172, un subagente puede generar sus propios subagentes. Use esto cuando una tarea delegada se divide en subtareas paralelas, como un subagente revisor que distribuye un verificador por hallazgo, de modo que la salida intermedia nunca llegue a su conversación principal. Solo el resumen del subagente de nivel superior regresa a usted.855{/* min-version: 2.1.172 */}A partir de Claude Code v2.1.172, un subagente puede generar sus propios subagentes. Use esto cuando una tarea delegada se divide en subtareas paralelas, como un subagente revisor que distribuye un verificador por hallazgo, de modo que la salida intermedia nunca llegue a su conversación principal. Solo el resumen del subagente de nivel superior regresa a usted.

842 856 

843Un subagente anidado se configura de la misma manera que uno de nivel superior y se resuelve desde los mismos [alcances](#choose-the-subagent-scope). El panel de subagentes debajo de la entrada de solicitud muestra el árbol completo: cada fila muestra un recuento `(+N)` de descendientes, y abrir una fila muestra los hijos directos de ese subagente con una ruta de regreso a `main`. La pestaña Running en [`/agents`](#use-the-%2Fagents-command) lista los subagentes en ejecución como una lista plana.857Un subagente anidado se configura de la misma manera que uno de nivel superior y se resuelve desde los mismos [alcances](#choose-the-subagent-scope). El panel de subagentes debajo de la entrada de solicitud muestra el árbol completo: cada fila muestra un recuento `(+N)` de descendientes, y {/* min-version: 2.1.193 */}a partir de v2.1.193, abrir una fila muestra los hermanos de ese subagente e hijos directos con una ruta de regreso a `main`. La pestaña Running en [`/agents`](#use-the-%2Fagents-command) lista los subagentes en ejecución como una lista plana.

844 858 

845La profundidad se cuenta como el número de niveles de subagentes debajo de la conversación principal, independientemente de si cada nivel se ejecuta en [primer plano o fondo](#run-subagents-in-foreground-or-background). Un subagente a profundidad cinco no recibe la herramienta Agent y no puede generar más. El límite es fijo y no configurable.859La profundidad se cuenta como el número de niveles de subagentes debajo de la conversación principal, independientemente de si cada nivel se ejecuta en [primer plano o fondo](#run-subagents-in-foreground-or-background). Un subagente a profundidad cinco no recibe la herramienta Agent y no puede generar más. El límite es fijo y no configurable.

846 860 


880 894 

881Los subagentes reanudados retienen su historial de conversación completo, incluyendo todas las llamadas de herramientas anteriores, resultados y razonamiento. El subagente continúa exactamente donde se detuvo en lugar de comenzar de nuevo.895Los subagentes reanudados retienen su historial de conversación completo, incluyendo todas las llamadas de herramientas anteriores, resultados y razonamiento. El subagente continúa exactamente donde se detuvo en lugar de comenzar de nuevo.

882 896 

883Cuando un subagente se completa, Claude recibe su ID de agente. Los agentes integrados Explore y Plan son de una sola ejecución y no devuelven ID de agente, por lo que no pueden reanudarse; use `general-purpose` o un subagente personalizado cuando necesite continuar el trabajo. Claude usa la herramienta `SendMessage` con el ID del agente como campo `to` para reanudarlo. La herramienta `SendMessage` siempre está disponible para reanudar subagentes por ID de agente o nombre. Los mensajes de protocolo de equipo estructurados como `shutdown_request` y `plan_approval_response` requieren que [equipos de agentes](/es/agent-teams) estén habilitados.897Cuando un subagente se completa, Claude recibe su ID de agente. Los agentes integrados Explore y Plan son de una sola ejecución y no devuelven ID de agente, por lo que no pueden reanudarse; use `general-purpose` o un subagente personalizado cuando necesite continuar el trabajo.

898 

899Claude usa la herramienta `SendMessage` con el ID del agente como campo `to` para reanudarlo. La herramienta `SendMessage` siempre está disponible para reanudar subagentes por ID de agente o nombre. Los mensajes de protocolo de equipo estructurados como `shutdown_request` y `plan_approval_response` requieren que [equipos de agentes](/es/agent-teams) estén habilitados.

884 900 

885Para reanudar un subagente, pida a Claude que continúe el trabajo anterior:901Para reanudar un subagente, pida a Claude que continúe el trabajo anterior:

886 902 

887```text theme={null}903```text wrap theme={null}

888Use the code-reviewer subagent to review the authentication module904Use the code-reviewer subagent to review the authentication module

889[Agent completes]905[Agent completes]

890 906 


900 916 

901* **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.917* **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.

902* **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.918* **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.

903* **Limpieza automática**: Las transcripciones se limpian basadas en la configuración `cleanupPeriodDays` (por defecto: 30 días).919* **Limpieza automática**: Las transcripciones se limpian basadas en la configuración `cleanupPeriodDays`, que por defecto es 30 días.

904 920 

905<h4 id="auto-compaction">921<h4 id="auto-compaction">

906 Auto-compactación922 Auto-compactación


942 958 

943Puede iniciar un fork usted mismo con `/fork` seguido de una directiva, con o sin la variable establecida. Claude Code nombra el fork a partir de las primeras palabras de la directiva. El siguiente ejemplo bifurca la conversación para redactar casos de prueba mientras continúa con la implementación en la sesión principal:959Puede iniciar un fork usted mismo con `/fork` seguido de una directiva, con o sin la variable establecida. Claude Code nombra el fork a partir de las primeras palabras de la directiva. El siguiente ejemplo bifurca la conversación para redactar casos de prueba mientras continúa con la implementación en la sesión principal:

944 960 

945```text theme={null}961```text wrap theme={null}

946/fork draft unit tests for the parser changes so far962/fork draft unit tests for the parser changes so far

947```963```

948 964 

Details

196 196 

197* [Claude for Teams o Enterprise](/es/authentication#claude-for-teams-or-enterprise)197* [Claude for Teams o Enterprise](/es/authentication#claude-for-teams-or-enterprise)

198* [Anthropic Console](/es/authentication#claude-console-authentication)198* [Anthropic Console](/es/authentication#claude-console-authentication)

199* [Claude apps gateway](/es/claude-apps-gateway), una puerta de enlace autohospedada que añade inicio de sesión de IdP frente a Amazon Bedrock, Google Vertex AI, Microsoft Foundry o la API de Anthropic

199* [Amazon Bedrock](/es/amazon-bedrock)200* [Amazon Bedrock](/es/amazon-bedrock)

200* [Claude Platform on AWS](/es/claude-platform-on-aws)201* [Claude Platform on AWS](/es/claude-platform-on-aws)

201* [Google Vertex AI](/es/google-vertex-ai)202* [Google Vertex AI](/es/google-vertex-ai)

Details

11Para agregar herramientas personalizadas, conecte un [servidor MCP](/es/mcp). Para extender Claude con flujos de trabajo basados en prompts reutilizables, escriba una [skill](/es/skills), que se ejecuta a través de la herramienta `Skill` existente en lugar de agregar una nueva entrada de herramienta.11Para agregar herramientas personalizadas, conecte un [servidor MCP](/es/mcp). Para extender Claude con flujos de trabajo basados en prompts reutilizables, escriba una [skill](/es/skills), que se ejecuta a través de la herramienta `Skill` existente en lugar de agregar una nueva entrada de herramienta.

12 12 

13| Herramienta | Descripción | Permiso requerido |13| Herramienta | Descripción | Permiso requerido |

14| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------- |14| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------- |

15| `Agent` | Genera un [subagent](/es/sub-agents) con su propia ventana de contexto para manejar una tarea. Consulte [comportamiento de la herramienta Agent](#agent-tool-behavior) | No |15| `Agent` | Genera un [subagent](/es/sub-agents) con su propia ventana de contexto para manejar una tarea. Consulte [comportamiento de la herramienta Agent](#agent-tool-behavior) | No |

16| `Artifact` | Publica un archivo HTML o Markdown como un [artifact](/es/artifacts): una página privada e interactiva en claude.ai que puede compartir dentro de su organización. {/* plan-availability: feature=artifacts plans=team,enterprise providers=anthropic */}Requiere un plan Team o Enterprise y autenticación `/login`; consulte [Disponibilidad](/es/artifacts#availability) | Sí |16| `Artifact` | Publica un archivo HTML o Markdown como un [artifact](/es/artifacts): una página privada e interactiva en claude.ai que puede compartir dentro de su organización. {/* plan-availability: feature=artifacts plans=team,enterprise providers=anthropic */}Requiere un plan Team o Enterprise y autenticación `/login`; consulte [Disponibilidad](/es/artifacts#availability) | Sí |

17| `AskUserQuestion` | Hace preguntas de opción múltiple para recopilar requisitos o aclarar ambigüedades | No |17| `AskUserQuestion` | Hace preguntas de opción múltiple para recopilar requisitos o aclarar ambigüedades | No |


28| `Grep` | Busca patrones en el contenido de archivos. Consulte [comportamiento de la herramienta Grep](#grep-tool-behavior) | No |28| `Grep` | Busca patrones en el contenido de archivos. Consulte [comportamiento de la herramienta Grep](#grep-tool-behavior) | No |

29| `ListMcpResourcesTool` | Lista recursos expuestos por [servidores MCP](/es/mcp) conectados | No |29| `ListMcpResourcesTool` | Lista recursos expuestos por [servidores MCP](/es/mcp) conectados | No |

30| `LSP` | Inteligencia de código a través de servidores de lenguaje: saltar a definiciones, encontrar referencias, reportar errores de tipo y advertencias. Consulte [comportamiento de la herramienta LSP](#lsp-tool-behavior) | No |30| `LSP` | Inteligencia de código a través de servidores de lenguaje: saltar a definiciones, encontrar referencias, reportar errores de tipo y advertencias. Consulte [comportamiento de la herramienta LSP](#lsp-tool-behavior) | No |

31| `Monitor` | Ejecuta un comando en segundo plano y devuelve cada línea de salida a Claude, para que pueda reaccionar a entradas de registro, cambios de archivos, o estado sondeado a mitad de la conversación. Consulte [herramienta Monitor](#monitor-tool) | Sí |31| `Monitor` | Ejecuta un comando en segundo plano y devuelve cada línea de salida a Claude, para que pueda reaccionar a entradas de registro, cambios de archivos, o estado sondeado a mitad de la conversación. También puede abrir un WebSocket y tratar cada mensaje entrante como un evento. Consulte [herramienta Monitor](#monitor-tool) | Sí |

32| `NotebookEdit` | Modifica celdas de cuadernos Jupyter. Consulte [comportamiento de la herramienta NotebookEdit](#notebookedit-tool-behavior) | Sí |32| `NotebookEdit` | Modifica celdas de cuadernos Jupyter. Consulte [comportamiento de la herramienta NotebookEdit](#notebookedit-tool-behavior) | Sí |

33| `PowerShell` | Ejecuta comandos de PowerShell de forma nativa. Consulte [herramienta PowerShell](#powershell-tool) para disponibilidad | Sí |33| `PowerShell` | Ejecuta comandos de PowerShell de forma nativa. Consulte [herramienta PowerShell](#powershell-tool) para disponibilidad | Sí |

34| `PushNotification` | Envía una notificación de escritorio, y una notificación push en el teléfono cuando [Remote Control](/es/remote-control) está conectado, para que una tarea de larga duración o [tarea programada](/es/scheduled-tasks) pueda alcanzarlo cuando se aleje. {/* plan-availability: feature=push-notifications providers=anthropic */}La entrega push se ejecuta a través de infraestructura alojada por Anthropic, que no es accesible desde Amazon Bedrock, Google Vertex AI, o Microsoft Foundry | No |34| `PushNotification` | Envía una notificación de escritorio, y una notificación push en el teléfono cuando [Remote Control](/es/remote-control) está conectado, para que una tarea de larga duración o [tarea programada](/es/scheduled-tasks) pueda alcanzarlo cuando se aleje. {/* plan-availability: feature=push-notifications providers=anthropic */}La entrega push se ejecuta a través de infraestructura alojada por Anthropic, que no es accesible desde Amazon Bedrock, Google Vertex AI, o Microsoft Foundry | No |

35| `Read` | Lee el contenido de archivos. Consulte [comportamiento de la herramienta Read](#read-tool-behavior) | No |35| `Read` | Lee el contenido de archivos. Consulte [comportamiento de la herramienta Read](#read-tool-behavior) | No |

36| `ReadMcpResourceTool` | Lee un recurso MCP específico por URI | No |36| `ReadMcpResourceTool` | Lee un recurso MCP específico por URI | No |

37| `RemoteTrigger` | Crea, actualiza, ejecuta y lista [Routines](/es/routines) en claude.ai. Respalda el comando `/schedule`. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Las Routines viven en claude.ai y requieren un plan Pro, Max, Team o Enterprise, por lo que esta herramienta no es accesible desde Amazon Bedrock, Google Vertex AI, o Microsoft Foundry | No |37| `RemoteTrigger` | Crea, actualiza, ejecuta y lista [Routines](/es/routines) en claude.ai. Respalda el comando `/schedule`. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Las Routines viven en claude.ai y requieren un plan Pro, Max, Team o Enterprise, por lo que esta herramienta no es accesible desde Amazon Bedrock, Google Vertex AI, o Microsoft Foundry | No |

38| `ReportFindings` | Reporta hallazgos de revisión de código como una lista estructurada, con un archivo, resumen y escenario de fallo por hallazgo, para que Claude Code pueda renderizarlos en lugar de imprimirlos como texto. Claude lo llama cuando las instrucciones de revisión de código activas le indican que lo haga. {/* min-version: 2.1.196 */}Requiere Claude Code v2.1.196 o posterior | No |

38| `ScheduleWakeup` | Reprograma la siguiente iteración de un [`/loop` autónomo](/es/scheduled-tasks#let-claude-choose-the-interval). Claude llama a esto al final de cada iteración para elegir cuándo se ejecuta la siguiente, entre un minuto y una hora; usted no lo llama directamente. El wakeup pendiente aparece en `session_crons` en [entrada de Stop hook](/es/hooks#stop-input). {/* plan-availability: feature=loop-dynamic providers=anthropic */}No disponible en Amazon Bedrock, Google Vertex AI, o Microsoft Foundry, donde un prompt `/loop` sin intervalo se ejecuta en un horario fijo en su lugar | No |39| `ScheduleWakeup` | Reprograma la siguiente iteración de un [`/loop` autónomo](/es/scheduled-tasks#let-claude-choose-the-interval). Claude llama a esto al final de cada iteración para elegir cuándo se ejecuta la siguiente, entre un minuto y una hora; usted no lo llama directamente. El wakeup pendiente aparece en `session_crons` en [entrada de Stop hook](/es/hooks#stop-input). {/* plan-availability: feature=loop-dynamic providers=anthropic */}No disponible en Amazon Bedrock, Google Vertex AI, o Microsoft Foundry, donde un prompt `/loop` sin intervalo se ejecuta en un horario fijo en su lugar | No |

39| `SendMessage` | Envía un mensaje a un miembro del [equipo de agentes](/es/agent-teams), o [reanuda un subagent](/es/sub-agents#resume-subagents) por su ID de agente. Los subagents detenidos se reanudan automáticamente en segundo plano. Los mensajes de protocolo de equipo estructurados requieren equipos de agentes | No |40| `SendMessage` | Envía un mensaje a un miembro del [equipo de agentes](/es/agent-teams), o [reanuda un subagent](/es/sub-agents#resume-subagents) por su ID de agente. Los subagents detenidos se reanudan automáticamente en segundo plano. Los mensajes de protocolo de equipo estructurados requieren equipos de agentes | No |

41| `SendUserFile` | Envía archivos de la sesión a usted con un título opcional, para que un informe generado, diagrama, captura de pantalla, o artefacto construido llegue a su dispositivo en lugar de solo ser mencionado en la transcripción. {/* min-version: 2.1.196 */}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](/es/remote-control) está conectado o la sesión se ejecuta en un entorno en la nube administrado como [Claude Code en la web](/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, Google Vertex AI, o Microsoft Foundry | No |

40| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}Carga `ONBOARDING.md` y devuelve un enlace de compartición que los compañeros de equipo pueden abrir en Claude Code. Se llama desde `/team-onboarding` después de que se escribe la guía. Disponible para suscriptores de claude.ai en planes Pro, Max, Team y Enterprise | Sí |42| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}Carga `ONBOARDING.md` y devuelve un enlace de compartición que los compañeros de equipo pueden abrir en Claude Code. Se llama desde `/team-onboarding` después de que se escribe la guía. Disponible para suscriptores de claude.ai en planes Pro, Max, Team y Enterprise | Sí |

41| `Skill` | Ejecuta una [skill](/es/skills#control-who-invokes-a-skill) dentro de la conversación principal | Sí |43| `Skill` | Ejecuta una [skill](/es/skills#control-who-invokes-a-skill) dentro de la conversación principal | Sí |

42| `TaskCreate` | Crea una nueva tarea en la lista de tareas | No |44| `TaskCreate` | Crea una nueva tarea en la lista de tareas | No |


206* Sondee una PR o trabajo de CI y reporte cuando su estado cambia208* Sondee una PR o trabajo de CI y reporte cuando su estado cambia

207* Observe un directorio para cambios de archivos209* Observe un directorio para cambios de archivos

208* Rastrear la salida de cualquier script de larga duración que señale210* Rastrear la salida de cualquier script de larga duración que señale

211* Conectarse a una fuente de WebSocket e informar cada mensaje a medida que llega

209 212 

210Claude escribe un pequeño script para la observación, lo ejecuta en segundo plano, y recibe cada línea de salida a medida que llega. Continúa trabajando en la misma sesión y Claude interviene cuando llega un evento. Detenga un monitor pidiendo a Claude que lo cancele o terminando la sesión.213Para la mayoría de las observaciones, Claude escribe un pequeño script, lo ejecuta en segundo plano, y recibe cada línea de salida a medida que llega. Para un servidor que ya envía eventos, Claude puede abrir una [fuente de WebSocket](#websocket-source) en lugar de ejecutar un script.

211 214 

212Monitor utiliza las mismas [reglas de permisos que Bash](/es/permissions#tool-specific-permission-rules), por lo que los patrones `allow` y `deny` que tiene establecidos para Bash se aplican aquí también. No está disponible en Amazon Bedrock, Google Vertex AI, o Microsoft Foundry. Tampoco está disponible cuando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecido.215Continúa trabajando en la misma sesión y Claude interviene cuando llega un evento. Detenga un monitor pidiendo a Claude que lo cancele o terminando la sesión.

216 

217Cuando Monitor ejecuta un comando, utiliza las mismas [reglas de permisos que Bash](/es/permissions#tool-specific-permission-rules), por lo que los patrones `allow` y `deny` que tiene establecidos para Bash se aplican aquí también. La [fuente de WebSocket](#websocket-source) tiene su propio mensaje de aprobación.

218 

219La herramienta no está disponible en Amazon Bedrock, Google Vertex AI, o Microsoft Foundry. Tampoco está disponible cuando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecido.

213 220 

214Los plugins pueden declarar monitores que se inician automáticamente cuando el plugin está activo, en lugar de pedirle a Claude que los inicie. Consulte [monitores de plugins](/es/plugins-reference#monitors).221Los plugins pueden declarar monitores que se inician automáticamente cuando el plugin está activo, en lugar de pedirle a Claude que los inicie. Consulte [monitores de plugins](/es/plugins-reference#monitors).

215 222 

223<h3 id="websocket-source">

224 Fuente de WebSocket

225</h3>

226 

227<Note>

228 La fuente de WebSocket requiere Claude Code v2.1.195 o posterior.

229</Note>

230 

231Cuando un servidor ya envía eventos a través de un WebSocket, Claude puede conectarse directamente en lugar de escribir un script de sondeo. Cada tipo de actividad de socket se convierte en un evento o termina la observación:

232 

233* **Mensajes de texto**: cada uno se convierte en un evento, incluso cuando el mensaje abarca múltiples líneas.

234* **Mensajes binarios**: no se transmiten. Claude recibe una línea de marcador de posición como `[binary frame, 512 bytes]` en su lugar.

235* **Mensajes mayores de 1 MiB**: la observación termina, por lo que suscríbase a una fuente filtrada donde exista una.

236* **Cierre de socket**: la observación termina y Claude recibe el código de cierre.

237 

238Una observación de WebSocket toma una entrada `ws` en lugar de `command`, y una única llamada de Monitor no puede combinar los dos. La entrada `ws` tiene dos campos:

239 

240| Campo | Requerido | Descripción |

241| :---------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

244 

245Las 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.

246 

247Abrir un WebSocket solicita aprobación, y el mensaje no ofrece una opción para omitir futuros mensajes para el mismo host.

248 

249Claude Code rechaza las URL que apuntan a una dirección privada, link-local o de metadatos en la nube, incluidos los nombres de host que se resuelven en una. También rechaza los hosts en `sandbox.network.deniedDomains`, y cuando [`allowManagedDomainsOnly`](/es/settings#sandbox-settings) está establecido en la configuración administrada, cualquier host fuera de la lista de permitidos administrada.

250 

216<h2 id="notebookedit-tool-behavior">251<h2 id="notebookedit-tool-behavior">

217 Comportamiento de la herramienta NotebookEdit252 Comportamiento de la herramienta NotebookEdit

218</h2>253</h2>


265 300 

266El mismo comportamiento de reinicio del directorio de trabajo de la sesión principal descrito en la sección de la herramienta Bash se aplica a los comandos de PowerShell, incluida la variable de entorno `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.301El mismo comportamiento de reinicio del directorio de trabajo de la sesión principal descrito en la sección de la herramienta Bash se aplica a los comandos de PowerShell, incluida la variable de entorno `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

267 302 

303{/* min-version: 2.1.196 */}A partir de v2.1.196, la herramienta PowerShell coincide con el manejo de códigos de salida de búsqueda y diff de la herramienta Bash. El código de salida 1 de `grep`, `egrep`, `fgrep` y `git grep` significa que no hay coincidencias, y el código de salida 1 de `git diff` significa que existen diferencias, por lo que estos resultados no se reportan a Claude como fallos de comando.

304 

268<h3 id="preview-limitations">305<h3 id="preview-limitations">

269 Limitaciones de vista previa306 Limitaciones de vista previa

270</h3>307</h3>


284 321 

285Read maneja varios tipos de archivo más allá del texto simple:322Read maneja varios tipos de archivo más allá del texto simple:

286 323 

287* **Imágenes**: PNG, JPG y otros formatos de imagen se devuelven como contenido visual que Claude puede ver, no como bytes sin procesar. Claude Code redimensiona y recomprime imágenes grandes para ajustarse a los límites de tamaño de imagen del modelo antes de enviarlas, por lo que Claude puede ver una versión reducida de una captura de pantalla grande. Si Claude pierde detalle a nivel de píxel fino en una imagen grande, pídale que primero recorte la región de interés, por ejemplo con ImageMagick a través de Bash.324* **Imágenes**: PNG, JPG y otros formatos de imagen se devuelven como contenido visual que Claude puede ver, no como bytes sin procesar. Claude Code redimensiona y recomprime imágenes grandes para ajustarse a los límites de tamaño de imagen del modelo antes de enviarlas, por lo que Claude puede ver una versión reducida de una captura de pantalla grande. A partir de v2.1.196, una imagen que sigue siendo más grande que 500KB después de ese redimensionamiento se recodifica como JPEG con calidad reducida manteniendo sus dimensiones de píxeles sin cambios. Si Claude pierde detalle a nivel de píxel fino en una imagen grande, pídale que primero recorte la región de interés, por ejemplo con ImageMagick a través de Bash.

288* **PDFs**: Claude lee archivos `.pdf` cortos completos. Para PDFs más largos que 10 páginas, lee en rangos con un parámetro `pages`, como `"1-5"`, hasta 20 páginas a la vez.325* **PDFs**: Claude lee archivos `.pdf` cortos completos. Para PDFs más largos que 10 páginas, lee en rangos con un parámetro `pages`, como `"1-5"`, hasta 20 páginas a la vez.

289* **Cuadernos Jupyter**: los archivos `.ipynb` devuelven todas las celdas con sus salidas, incluyendo código, markdown y visualizaciones.326* **Cuadernos Jupyter**: los archivos `.ipynb` devuelven todas las celdas con sus salidas, incluyendo código, markdown y visualizaciones.

290 327 

Details

45Si su problema no está listado, trabaje a través de las verificaciones de diagnóstico a continuación para reducir la causa.45Si su problema no está listado, trabaje a través de las verificaciones de diagnóstico a continuación para reducir la causa.

46 46 

47<Tip>47<Tip>

48 Si prefiere omitir la terminal por completo, la [aplicación de escritorio Claude Code](/es/desktop-quickstart) le permite instalar y usar Claude Code a través de una interfaz gráfica. Descárguela para [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) o [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) y comience a codificar sin ninguna configuración de línea de comandos.48 Si prefiere omitir la terminal por completo, la [aplicación de escritorio Claude Code](/es/desktop-quickstart) le permite instalar y usar Claude Code a través de una interfaz gráfica. Descárguela para [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs), [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs), o [Linux](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) y comience a codificar sin ninguna configuración de línea de comandos.

49</Tip>49</Tip>

50 50 

51<h2 id="run-diagnostic-checks">51<h2 id="run-diagnostic-checks">

Details

18 Requisitos18 Requisitos

19</h2>19</h2>

20 20 

21El dictado de voz transmite su audio grabado a los servidores de Anthropic para su transcripción. El audio no se procesa localmente. El servicio de voz a texto solo está disponible cuando se autentica con una cuenta de Claude.ai, y no está disponible cuando Claude Code está configurado para usar una clave de API de Anthropic directamente, Amazon Bedrock, Google Vertex AI o Microsoft Foundry. El dictado de voz tampoco está disponible cuando su organización tiene habilitado el cumplimiento de HIPAA. La transcripción no consume mensajes de Claude ni tokens y no cuenta hacia los límites mostrados en `/usage`. Consulte [uso de datos](/es/data-usage) para ver cómo Anthropic maneja sus datos.21El 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:

22 22 

23El dictado de voz también necesita acceso local al micrófono, por lo que no funciona en entornos remotos como [Claude Code en la web](/es/claude-code-on-the-web) o sesiones SSH. En WSL, el dictado de voz requiere WSLg para acceso de audio. 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.23* **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 Vertex AI o Microsoft Foundry.

24* **Una organización sin cumplimiento de HIPAA habilitado**: `/voice` muestra `Voice mode is disabled by your organization's policy` cuando se aplica esta restricción.

25* **Un micrófono local**: el dictado de voz no funciona en entornos remotos como [Claude Code en la web](/es/claude-code-on-the-web) o sesiones SSH.

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

27 

28La transcripción no consume mensajes de Claude ni tokens y no cuenta hacia los límites mostrados en `/usage`. Consulte [uso de datos](/es/data-usage) para ver cómo Anthropic maneja sus datos.

24 29 

25La grabación de audio utiliza un módulo nativo integrado en macOS, Linux y Windows. En Linux, si el módulo nativo no puede cargarse, Claude Code vuelve a `arecord` de ALSA utils o `rec` de SoX. Si ninguno está disponible, `/voice` imprime un comando de instalación para su gestor de paquetes.30La grabación de audio utiliza un módulo nativo integrado en macOS, Linux y Windows. En Linux, si el módulo nativo no puede cargarse, Claude Code vuelve a `arecord` de ALSA utils o `rec` de SoX. Si ninguno está disponible, `/voice` imprime un comando de instalación para su gestor de paquetes.

26 31 


91 96 

92El modo de toque alterna la grabación con una sola pulsación de tecla: toque una vez para comenzar, hable, luego toque nuevamente para enviar la indicación. No hay calentamiento y no necesita mantener la tecla presionada.97El modo de toque alterna la grabación con una sola pulsación de tecla: toque una vez para comenzar, hable, luego toque nuevamente para enviar la indicación. No hay calentamiento y no necesita mantener la tecla presionada.

93 98 

94Habilite el modo de toque con `/voice tap`. Con la entrada de indicación vacía, toque la `Barra espaciadora` para comenzar a grabar. El pie de página muestra una forma de onda en vivo mientras se graba. Toque la `Barra espaciadora` nuevamente para detener. Claude Code inserta la transcripción y envía la indicación automáticamente cuando la transcripción tiene al menos tres palabras. Las transcripciones más cortas se insertan pero no se envían, por lo que un toque accidental no envía una palabra extraviada.99Habilite el modo de toque con `/voice tap`. Con la entrada de indicación vacía, toque la `Barra espaciadora` para comenzar a grabar. El pie de página muestra una forma de onda en vivo mientras se graba. Toque la `Barra espaciadora` nuevamente para detener.

100 

101Claude Code inserta la transcripción y envía la indicación automáticamente cuando la transcripción tiene al menos tres palabras. Las transcripciones más cortas se insertan pero no se envían, por lo que un toque accidental no envía una palabra extraviada.

102 

103El umbral de tres palabras cuenta palabras para idiomas escritos sin espacios. A partir de v2.1.195, las transcripciones en japonés, chino y tailandés cuentan palabras individuales, por lo que se envían automáticamente en modo de toque y en modo de retención con `autoSubmit`. Las versiones anteriores contaban una transcripción sin espacios como una palabra y nunca la enviaban automáticamente.

95 104 

96El primer toque solo comienza a grabar cuando la entrada de indicación está vacía, por lo que aún puede escribir espacios normalmente mientras compone un mensaje. El segundo toque detiene la grabación independientemente del contenido de entrada. La grabación también se detiene automáticamente después de 15 segundos de silencio o dos minutos en total.105El primer toque solo comienza a grabar cuando la entrada de indicación está vacía, por lo que aún puede escribir espacios normalmente mientras compone un mensaje. El segundo toque detiene la grabación independientemente del contenido de entrada. La grabación también se detiene automáticamente después de 15 segundos de silencio o dos minutos en total.

97 106 


169Problemas comunes cuando el dictado de voz no se activa o no graba:178Problemas comunes cuando el dictado de voz no se activa o no graba:

170 179 

171* **`Voice mode requires a Claude.ai account`**: está autenticado con una clave de API o un proveedor de terceros. Ejecute `/login` para iniciar sesión con una cuenta de Claude.ai.180* **`Voice mode requires a Claude.ai account`**: está autenticado con una clave de API o un proveedor de terceros. Ejecute `/login` para iniciar sesión con una cuenta de Claude.ai.

181* **`Voice mode is disabled by your organization's policy`**: la configuración de cumplimiento de su organización desactiva el dictado de voz, como se describe en [Requisitos](#requirements). Póngase en contacto con el administrador de su organización para confirmar si el dictado de voz está disponible para su organización.

172* **`Microphone access is denied`**: otorgue permiso de micrófono a su terminal en la configuración del sistema. En macOS, vaya a Configuración del Sistema → Privacidad y Seguridad → Micrófono y habilite su aplicación de terminal, luego ejecute `/voice` nuevamente. En Windows, vaya a Configuración → Privacidad y seguridad → Micrófono y active el acceso al micrófono para aplicaciones de escritorio, luego ejecute `/voice` nuevamente. Si su terminal no aparece en la configuración de macOS, consulte [Terminal no aparece en la configuración de micrófono de macOS](#terminal-not-listed-in-macos-microphone-settings).182* **`Microphone access is denied`**: otorgue permiso de micrófono a su terminal en la configuración del sistema. En macOS, vaya a Configuración del Sistema → Privacidad y Seguridad → Micrófono y habilite su aplicación de terminal, luego ejecute `/voice` nuevamente. En Windows, vaya a Configuración → Privacidad y seguridad → Micrófono y active el acceso al micrófono para aplicaciones de escritorio, luego ejecute `/voice` nuevamente. Si su terminal no aparece en la configuración de macOS, consulte [Terminal no aparece en la configuración de micrófono de macOS](#terminal-not-listed-in-macos-microphone-settings).

173* **`No audio recording tool found` en Linux**: el módulo de audio nativo no pudo cargarse y no hay alternativa instalada. Instale SoX con el comando que se muestra en el mensaje de error, por ejemplo `sudo apt-get install sox`.183* **`No audio recording tool found` en Linux**: el módulo de audio nativo no pudo cargarse y no hay alternativa instalada. Instale SoX con el comando que se muestra en el mensaje de error, por ejemplo `sudo apt-get install sox`.

184* **`Voice mode requires a microphone, but SoX could not open an audio capture device`**: SoX está instalado, pero el host no tiene un dispositivo de captura de audio, por ejemplo un servidor sin interfaz gráfica o un contenedor. Ejecute Claude Code en una máquina con micrófono. {/* min-version: 2.1.195 */}A partir de v2.1.195, Claude Code en Linux reporta este mensaje en esa situación; las versiones anteriores le pedían que instalara SoX incluso cuando ya estaba instalado.

174* **`Voice mode could not find a working audio recorder in WSL`**: WSLg enruta el audio a través de PulseAudio en lugar de un dispositivo ALSA, por lo que SoX necesita que su backend de PulseAudio esté instalado explícitamente. Ejecute `sudo apt install sox libsox-fmt-pulse`. Instalar `sox` solo extrae el backend de ALSA, que no puede grabar en WSL porque no hay un dispositivo `/dev/snd`.185* **`Voice mode could not find a working audio recorder in WSL`**: WSLg enruta el audio a través de PulseAudio en lugar de un dispositivo ALSA, por lo que SoX necesita que su backend de PulseAudio esté instalado explícitamente. Ejecute `sudo apt install sox libsox-fmt-pulse`. Instalar `sox` solo extrae el backend de ALSA, que no puede grabar en WSL porque no hay un dispositivo `/dev/snd`.

175* **`Voice input is failing repeatedly and has been paused`**: el dictado de voz encontró varios fallos de inicio seguidos y dejó de intentar nuevas sesiones hasta que una tenga éxito. Esto generalmente significa que el micrófono o la pila de audio en este host no puede capturar audio, por ejemplo un servidor sin interfaz gráfica, un shell remoto sin paso de audio, o un permiso de micrófono denegado. Confirme un dispositivo de entrada que funcione, corrija la causa subyacente de las entradas anteriores, luego active la voz nuevamente.186* **`Voice input is failing repeatedly and has been paused`**: el dictado de voz encontró varios fallos de inicio seguidos y dejó de intentar nuevas sesiones hasta que una tenga éxito. Esto generalmente significa que el micrófono o la pila de audio en este host no puede capturar audio, por ejemplo un servidor sin interfaz gráfica, un shell remoto sin paso de audio, o un permiso de micrófono denegado. Confirme un dispositivo de entrada que funcione, corrija la causa subyacente de las entradas anteriores, luego active la voz nuevamente.

176* **Nada sucede al mantener presionada la `Barra espaciadora` en modo de mantener**: observe la entrada de indicación mientras mantiene presionada. Si los espacios siguen acumulándose, el dictado de voz probablemente esté desactivado; ejecute `/voice hold` para habilitarlo. Si solo aparecen uno o dos espacios y luego nada, el dictado de voz está activado pero la detección de mantener no se activa. La detección de mantener requiere que su terminal envíe eventos de repetición de teclas, por lo que no puede detectar una tecla mantenida si la repetición de teclas está deshabilitada a nivel del sistema operativo. Cambie al modo de toque con `/voice tap` para evitar el requisito de repetición de teclas.187* **Nada sucede al mantener presionada la `Barra espaciadora` en modo de mantener**: observe la entrada de indicación mientras mantiene presionada. Si los espacios siguen acumulándose, el dictado de voz probablemente esté desactivado; ejecute `/voice hold` para habilitarlo. Si solo aparecen uno o dos espacios y luego nada, el dictado de voz está activado pero la detección de mantener no se activa. La detección de mantener requiere que su terminal envíe eventos de repetición de teclas, por lo que no puede detectar una tecla mantenida si la repetición de teclas está deshabilitada a nivel del sistema operativo. Cambie al modo de toque con `/voice tap` para evitar el requisito de repetición de teclas.

whats-new.md +16 −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](/es/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](/es/changelog).

10 10 

11<Update label="Week 26" description="June 22–26, 2026" tags={["v2.1.185–v2.1.193"]}>

12 **`claude mcp login`**: autentique un servidor MCP configurado desde su shell en lugar del menú interactivo `/mcp`, y borre sus credenciales almacenadas más tarde con `claude mcp logout`.

13 

14 También esta semana: **el modo shell responde a la salida de comandos** (`! npm test` obtiene una explicación sin un segundo mensaje); **`/rewind`** puede reanudar una conversación desde antes de que se ejecutara `/clear`; y **los subagentes de fondo** ahora muestran solicitudes de permiso en la sesión principal en lugar de denegarlas automáticamente.

15 

16 [Lea el resumen de la Week 26 →](/es/whats-new/2026-w26)

17</Update>

18 

19<Update label="Week 25" description="June 15–19, 2026" tags={["v2.1.178–v2.1.183"]}>

20 **Artifacts**: convierta la salida de una sesión en una página en vivo y compartible en claude.ai que se actualiza en su lugar mientras la sesión funciona, ahora en beta en planes Team y Enterprise.

21 

22 También esta semana: **las reglas de negación y solicitud coinciden con parámetros de herramientas** con `Tool(param:value)`, por ejemplo `Agent(model:opus)`; **`/config key=value`** establece cualquier configuración desde el mensaje, en modo `-p`, y desde Remote Control; y **el modo automático bloquea comandos git destructivos** cuando no pidió descartar trabajo local.

23 

24 [Lea el resumen de la Week 25 →](/es/whats-new/2026-w25)

25</Update>

26 

11<Update label="Week 24" description="June 8–12, 2026" tags={["v2.1.166–v2.1.176"]}>27<Update label="Week 24" description="June 8–12, 2026" tags={["v2.1.166–v2.1.176"]}>

12 **`/cd`**: mueva la sesión actual a un nuevo directorio de trabajo a mitad de la conversación sin reconstruir la caché de solicitud.28 **`/cd`**: mueva la sesión actual a un nuevo directorio de trabajo a mitad de la conversación sin reconstruir la caché de solicitud.

13 29 

Details

73 <p className="digest-feature-try">Agregue un piso a su configuración administrada para que los clientes antiguos se nieguen a iniciarse:</p>73 <p className="digest-feature-try">Agregue un piso a su configuración administrada para que los clientes antiguos se nieguen a iniciarse:</p>

74 74 

75 ```json managed-settings.json theme={null}75 ```json managed-settings.json theme={null}

76 {

76 "requiredMinimumVersion": "2.1.163"77 "requiredMinimumVersion": "2.1.163"

78 }

77 ```79 ```

78 80 

79 <a className="digest-feature-link" href="/docs/es/admin-setup#decide-what-to-enforce">Decidir qué aplicar</a>81 <a className="digest-feature-link" href="/docs/es/admin-setup#decide-what-to-enforce">Decidir qué aplicar</a>

whats-new/2026-w25.md +90 −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 25 · 15–19 de junio de 2026

6 

7> Publique una página en vivo y compartible desde su sesión con Artifacts, haga coincidir parámetros de herramientas en reglas de denegación y solicitud, y configure cualquier ajuste desde el prompt con /config.

8 

9<div className="digest-meta">

10 <span>Versiones <a href="/docs/es/changelog#2-1-178">v2.1.178 → v2.1.183</a></span>

11 <span>3 características · 15–19 de junio</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Artifacts</span>

17 </div>

18 

19 <p className="digest-feature-lede">Un artifact es una página en vivo e interactiva que Claude Code publica desde su sesión en una URL privada en claude.ai, y se actualiza en su lugar a medida que la sesión continúa trabajando. Solicite uno cuando el texto de terminal no sea el medio adecuado, como un recorrido de PR con el diff anotado en línea o un panel de control construido a partir de datos de sesión. Los Artifacts están en beta en planes Team y Enterprise.</p>

20 

21 <Frame>

22 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/1ylKDoQynT1UgfEK/images/whats-new/artifacts.mp4?fit=max&auto=format&n=1ylKDoQynT1UgfEK&q=85&s=7f5391559d2bc69989621b36322fcff1" data-path="images/whats-new/artifacts.mp4" />

23 </Frame>

24 

25 <p className="digest-feature-try">Solicite a Claude una página y luego apruebe el prompt de publicación:</p>

26 

27 ```text Claude Code theme={null}

28 > Make an artifact that walks through this PR with the diff annotated inline.

29 ```

30 

31 <a className="digest-feature-link" href="/docs/es/artifacts#create-an-artifact">Crear un artifact</a>

32</div>

33 

34<div className="digest-feature">

35 <div className="digest-feature-header">

36 <span className="digest-feature-title">Coincidir por parámetro de entrada</span>

37 <span className="digest-feature-pill">v2.1.178</span>

38 </div>

39 

40 <p className="digest-feature-lede">Las reglas de denegación y solicitud de permiso ahora pueden coincidir con los parámetros de entrada de una herramienta con la sintaxis <code>Tool(param:value)</code>. Por ejemplo, <code>Agent(model:opus)</code> coincide con generaciones de subagentes que solicitan el nivel de modelo Opus. El valor acepta `*` como comodín, por lo que `Agent(isolation:*)` coincide con cualquier valor de aislamiento explícito.</p>

41 

42 <p className="digest-feature-try">Agregue una regla de parámetro a la lista de denegación en <code>settings.json</code>:</p>

43 

44 ```json .claude/settings.json {3} theme={null}

45 {

46 "permissions": {

47 "deny": ["Agent(model:opus)"]

48 }

49 }

50 ```

51 

52 <a className="digest-feature-link" href="/docs/es/permissions#match-by-input-parameter">Coincidir por parámetro de entrada</a>

53</div>

54 

55<div className="digest-feature">

56 <div className="digest-feature-header">

57 <span className="digest-feature-title">Configurar cualquier ajuste desde el prompt</span>

58 <span className="digest-feature-pill">v2.1.181</span>

59 </div>

60 

61 <p className="digest-feature-lede">Pase <code>key=value</code> a <code>/config</code> para cambiar un ajuste directamente sin abrir la interfaz de Configuración. La sintaxis también funciona en modo no interactivo con la bandera <code>-p</code> y desde Remote Control.</p>

62 

63 <p className="digest-feature-try">Configure el ajuste <code>thinking</code> desde el prompt:</p>

64 

65 ```text Claude Code theme={null}

66 > /config thinking=false

67 ```

68 

69 <a className="digest-feature-link" href="/docs/es/commands#all-commands">Referencia de comandos</a>

70</div>

71 

72<div className="digest-wins">

73 <p className="digest-wins-title">Otros logros</p>

74 

75 <div className="digest-wins-grid">

76 <div>El modo Auto ahora bloquea comandos git destructivos (`git reset --hard`, `git clean -fd`, `git stash drop`) cuando usted no pidió descartar trabajo local, y bloquea <code>terraform destroy</code> a menos que haya solicitado el stack específico</div>

77 <div>Configure el nuevo ajuste <code>attribution.sessionUrl</code> en <code>false</code> para omitir el enlace de sesión de claude.ai de commits y PRs en sesiones web y Remote Control</div>

78 <div>En la interfaz <code>/config</code>, Enter y Space ambos cambian el ajuste seleccionado, y Esc ahora guarda y cierra en lugar de revertir</div>

79 <div>El nuevo ajuste de inclusión <code>sandbox.allowAppleEvents</code> permite que comandos en sandbox envíen Apple Events en macOS</div>

80 <div>Apunte <code>CLAUDE\_CLIENT\_PRESENCE\_FILE</code> a un archivo marcador para suprimir notificaciones push móviles mientras está en la máquina</div>

81 <div>Los párrafos largos ahora se transmiten línea por línea en lugar de esperar el primer salto de línea</div>

82 <div>Las desconexiones de conexión API a mitad del pensamiento ahora se reintentan automáticamente en lugar de mostrar "Connection closed while thinking"</div>

83 <div>Con <code>CLAUDE\_CODE\_EXPERIMENTAL\_AGENT\_TEAMS=1</code> configurado, cada sesión tiene un equipo implícito, por lo que puede generar compañeros de equipo directamente con el parámetro <code>name</code> de la herramienta Agent</div>

84 <div>Las skills en directorios anidados <code>.claude/skills</code> se cargan cuando se trabaja en archivos allí; en un choque de nombres la skill anidada aparece como `<dir>:<name>` para que ambas permanezcan disponibles</div>

85 <div>Se corrigió que prompt caching no leyera en una <code>ANTHROPIC\_BASE\_URL</code> personalizada y en Foundry</div>

86 <div>Se corrigió que Write y Edit produjeran archivos de cero bytes o truncados en unidades de red y carpetas sincronizadas en la nube</div>

87 </div>

88</div>

89 

90[Registro de cambios completo para v2.1.178–v2.1.183 →](/es/changelog#2-1-178)

whats-new/2026-w26.md +66 −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 26 · 22–26 de junio de 2026

6 

7> Autentique servidores MCP desde su shell con claude mcp login, obtenga una respuesta a la salida del comando del modo shell con el prefijo !, y reanude una conversación anterior a /clear con /rewind.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/es/changelog#2-1-185">v2.1.185 → v2.1.193</a></span>

11 <span>2 características · 22–26 de junio</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Autentique servidores MCP desde la CLI</span>

17 <span className="digest-feature-pill">v2.1.186</span>

18 </div>

19 

20 <p className="digest-feature-lede">Los nuevos comandos `claude mcp login <name>` y `claude mcp logout <name>` autentican un servidor MCP configurado desde su shell en lugar del menú interactivo <code>/mcp</code>. `claude mcp login` ejecuta el flujo OAuth del servidor directamente, y `claude mcp logout` borra las credenciales almacenadas.</p>

21 

22 <p className="digest-feature-try">Ejecute el flujo OAuth para un servidor configurado sin abrir una sesión:</p>

23 

24 ```bash terminal theme={null}

25 claude mcp login sentry

26 ```

27 

28 <a className="digest-feature-link" href="/docs/es/mcp#authenticate-from-the-command-line">Autentique desde la línea de comandos</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">El modo shell responde a la salida del comando</span>

34 <span className="digest-feature-pill">v2.1.186</span>

35 </div>

36 

37 <p className="digest-feature-lede">Los comandos que ejecuta con el prefijo <code>!</code> ahora obtienen una respuesta de Claude una vez que la salida llega a la transcripción, por lo que puede ejecutar <code>! npm test</code> y obtener una explicación de los fallos sin un segundo aviso. La respuesta cuesta lo mismo que enviar un aviso normal. Para mantener el comportamiento anterior, donde la salida se agrega al contexto sin una respuesta, establezca <code>respondToBashCommands</code> en <code>false</code> en <code>settings.json</code>.</p>

38 

39 <p className="digest-feature-try">Ejecute un comando y obtenga una respuesta a su salida:</p>

40 

41 ```text Claude Code theme={null}

42 > ! npm test

43 ```

44 

45 <a className="digest-feature-link" href="/docs/es/interactive-mode#shell-mode-with-prefix">Modo shell con el prefijo !</a>

46</div>

47 

48<div className="digest-wins">

49 <p className="digest-wins-title">Otros logros</p>

50 

51 <div className="digest-wins-grid">

52 <div><code>/rewind</code> ahora puede reanudar una conversación anterior a cuando se ejecutó <code>/clear</code></div>

53 <div>La nueva configuración <code>sandbox.credentials</code> impide que los comandos en sandbox lean archivos de credenciales y variables de entorno secretas</div>

54 <div>Las restricciones de modelo configuradas por la organización ahora se aplican al selector de modelo, `--model`, <code>/model</code>, y <code>ANTHROPIC\_MODEL</code>, con un mensaje "restringido por la configuración de su organización" cuando se selecciona un modelo restringido</div>

55 <div>La nueva configuración <code>autoMode.classifyAllShell</code> enruta todos los comandos Bash y PowerShell a través del clasificador de modo automático, y las razones de denegación ahora se muestran en la transcripción, el aviso de denegación y <code>/permissions</code></div>

56 <div>El nuevo evento de registro OpenTelemetry <code>claude\_code.assistant\_response</code> lleva el texto de respuesta del modelo; las implementaciones que ya registran contenido de aviso comienzan a recibirlo en la actualización, por lo que establezca <code>OTEL\_LOG\_ASSISTANT\_RESPONSES=0</code> para mantener solo los avisos</div>

57 <div>Los subagentos de fondo ahora muestran avisos de permisos en la sesión principal en lugar de denegarlos automáticamente; el diálogo muestra qué agente está solicitando, y Esc deniega solo esa herramienta</div>

58 <div><code>/install-github-app</code> ahora puede instalar solo la aplicación GitHub y omitir los pasos del flujo de trabajo de Actions y secretos</div>

59 <div>Los hosts que permite en el diálogo de permisos de red del sandbox se recuerdan durante el resto de la sesión en lugar de volver a preguntar en cada conexión</div>

60 <div>Las respuestas de transmisión utilizan aproximadamente un 37% menos de CPU, y el crecimiento de memoria de sesión larga desde el caché de salida de terminal se reduce</div>

61 <div>`/review <pr>` ahora utiliza el mismo motor de revisión que <code>/code-review medium</code></div>

62 <div>Los comandos <code>!</code> del modo Bash obtienen autocompletado de ruta de archivo en vivo</div>

63 </div>

64</div>

65 

66[Registro de cambios completo para v2.1.185–v2.1.193 →](/es/changelog#2-1-185)

workflows.md +2 −0

Details

68 68 

69 <Step title="Leer el informe">69 <Step title="Leer el informe">

70 Cuando se completa la ejecución, el informe llega a su sesión. Cita las fuentes de las que proviene cada afirmación, con afirmaciones que no sobrevivieron la verificación cruzada ya filtradas.70 Cuando se completa la ejecución, el informe llega a su sesión. Cita las fuentes de las que proviene cada afirmación, con afirmaciones que no sobrevivieron la verificación cruzada ya filtradas.

71 

72 {/* min-version: 2.1.196 */}A partir de v2.1.196, cuando los agentes verificadores no pueden verificar una afirmación, como después de un límite de velocidad o error de API, el informe enumera esa afirmación como no verificada en lugar de contarla como refutada.

71 </Step>73 </Step>

72</Steps>74</Steps>

73 75