SpyBara
Go Premium

Documentation 2026-09-29 23:58 UTC to 2026-09-30 18:00 UTC

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

agent-view.md +28 −2

Details

64 </Step>64 </Step>

65</Steps>65</Steps>

66 66 

67Puede usar `claude agents` como su punto de entrada principal en lugar de `claude`: distribuya cada tarea desde la vista de agentes, conéctese cuando desee la conversación completa, y presione `←` para volver a la tabla.

68 

69Dentro de una sesión regular de `claude`, la pista `←` del pie de página del mensaje cuenta los agentes en segundo plano que están esperando su entrada, como `← 2 agents`, y vuelve a `← for agents` cuando ninguno necesita entrada. Los conteos superiores a 99 se muestran como `99+`. El conteo se actualiza aproximadamente cada diez segundos mientras la terminal está enfocada e inmediatamente cuando el enfoque regresa. Cambia brevemente de color cuando se mueve y cuando un agente se completa, y cuando una sesión en segundo plano se completa mientras ninguno necesita su entrada, muestra brevemente el número completado, como `← 2 done`. Ambos destellos se desactivan cuando la configuración [`prefersReducedMotion`](/docs/es/settings-reference#prefersreducedmotion) está activada, y la pista se oculta en [modo de lector de pantalla](/docs/es/accessibility).67Dentro de una sesión regular de `claude`, la pista `←` del pie de página del mensaje cuenta los agentes en segundo plano que están esperando su entrada, como `← 2 agents`, y vuelve a `← for agents` cuando ninguno necesita entrada. Los conteos superiores a 99 se muestran como `99+`. El conteo se actualiza aproximadamente cada diez segundos mientras la terminal está enfocada e inmediatamente cuando el enfoque regresa. Cambia brevemente de color cuando se mueve y cuando un agente se completa, y cuando una sesión en segundo plano se completa mientras ninguno necesita su entrada, muestra brevemente el número completado, como `← 2 done`. Ambos destellos se desactivan cuando la configuración [`prefersReducedMotion`](/docs/es/settings-reference#prefersreducedmotion) está activada, y la pista se oculta en [modo de lector de pantalla](/docs/es/accessibility).

70 68 

69<h3 id="open-agent-view-by-default">

70 Abrir la vista de agentes de forma predeterminada

71</h3>

72 

73Para que `claude` sin argumentos abra la vista de agentes en lugar de una nueva conversación, active una configuración `/config`.

74 

75<Steps>

76 <Step title="Activar la configuración">

77 En una sesión regular de `claude`, ejecute `/config` y active **Abrir vista de agentes de forma predeterminada**. Para omitir el menú, establezca la clave [`defaultToAgentsView`](/docs/es/settings-reference#defaulttoagentsview) directamente:

78 

79 ```text theme={null}

80 /config defaultToAgentsView=true

81 ```

82 </Step>

83 

84 <Step title="Iniciar Claude Code">

85 Salga de la sesión y luego ejecute `claude` sin argumentos:

86 

87 ```bash theme={null}

88 claude

89 ```

90 

91 La vista de agentes se abre en lugar de una nueva conversación.

92 </Step>

93</Steps>

94 

95Para iniciar una sesión regular mientras la configuración está activada, pase un mensaje: `claude "fix the login test"`. Para desactivar la configuración, ejecute `/config defaultToAgentsView=false` en una sesión regular o en una a la que se conecte desde la vista de agentes.

96 

71<h2 id="monitor-sessions-with-agent-view">97<h2 id="monitor-sessions-with-agent-view">

72 Monitorear sesiones con vista de agentes98 Monitorear sesiones con vista de agentes

73</h2>99</h2>

Details

482 482 

483Claude 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/es/build-with-claude/context-windows#context-window-sizes-by-model) en Amazon Bedrock. Sonnet 5 siempre se ejecuta con la ventana de 1M tanto en la API Invoke como en el [punto de conexión Mantle](#use-the-mantle-endpoint), sin variante `[1m]` para seleccionar. Para los otros modelos en la API Invoke, Claude Code habilita automáticamente la ventana de contexto extendida cuando selecciona una variante de modelo de 1M.483Claude 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/es/build-with-claude/context-windows#context-window-sizes-by-model) en Amazon Bedrock. Sonnet 5 siempre se ejecuta con la ventana de 1M tanto en la API Invoke como en el [punto de conexión Mantle](#use-the-mantle-endpoint), sin variante `[1m]` para seleccionar. Para los otros modelos en la API Invoke, Claude Code habilita automáticamente la ventana de contexto extendida cuando selecciona una variante de modelo de 1M.

484 484 

485El [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](/docs/es/model-config#pin-models-for-third-party-deployments) para detalles.485El [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](/docs/es/model-config#pin-models-for-third-party-deployments) para detalles, incluida la forma de usar la ventana de 1M sin cambiar la fijación.

486 486 

487<h2 id="service-tiers">487<h2 id="service-tiers">

488 Niveles de servicio488 Niveles de servicio

artifacts.md +11 −11

Details

100Con quién puede compartir depende de su plan:100Con quién puede compartir depende de su plan:

101 101 

102* **Dentro de su organización**: en los planes Team y Enterprise, otorgue acceso a personas específicas en su organización, o a todos en ella. Los espectadores inician sesión en claude.ai como miembros de su organización para ver la página.102* **Dentro de su organización**: en los planes Team y Enterprise, otorgue acceso a personas específicas en su organización, o a todos en ella. Los espectadores inician sesión en claude.ai como miembros de su organización para ver la página.

103* **Públicamente**: comparta un enlace que cualquiera en internet pueda abrir, sin necesidad de iniciar sesión en claude.ai. En los planes Pro y Max, un enlace público es la única forma de compartir un artefacto. En los planes Team y Enterprise, el uso compartido público está desactivado hasta que un propietario [lo habilite para la organización](#control-public-sharing).103* **Públicamente**: comparta un enlace que cualquiera en internet pueda abrir, sin necesidad de iniciar sesión en claude.ai. En los planes Team y Enterprise, el uso compartido público está desactivado hasta que un propietario [lo habilite para la organización](#control-public-sharing).

104 104 

105<h3 id="let-someone-edit-with-you">105<h3 id="let-someone-edit-with-you">

106 Permitir que alguien edite con usted106 Permitir que alguien edite con usted


122 Recopilar comentarios en un artefacto122 Recopilar comentarios en un artefacto

123</h2>123</h2>

124 124 

125Cuando comparte un artefacto dentro de su organización, las personas con las que lo comparte pueden dejar comentarios en la página, y usted puede hacer que Claude lea esos comentarios y responda a ellos. Necesita Claude Code v2.1.221 o posterior y un plan de Team o Enterprise, porque solo un artefacto que [comparte dentro de su organización](#share-an-artifact) recibe comentarios. Claude lee los comentarios en dos casos:125Cuando comparte un artefacto dentro de su organización, las personas con las que lo comparte pueden dejar comentarios en la página, y usted puede hacer que Claude lea esos comentarios y responda a ellos. Necesita Claude Code v2.1.221 o posterior. Claude lee los comentarios en dos casos:

126 126 

127* **Usted le pide a Claude que los lea**: proporcione a Claude la URL del artefacto y pida los comentarios. Claude enumera cada hilo y marca los comentarios que alguien que puede editar el artefacto le envió.127* **Usted le pide a Claude que los lea**: proporcione a Claude la URL del artefacto y pida los comentarios. Claude enumera cada hilo y marca los comentarios que alguien que puede editar el artefacto le envió.

128* **Alguien que puede editar el artefacto envía un comentario a Claude**: en un hilo en la página, envía un comentario con **Send to Claude**, o menciona `@claude` en uno. De cualquier manera, activan el hilo.128* **Alguien que puede editar el artefacto envía un comentario a Claude**: en un hilo en la página, envía un comentario con **Send to Claude**, o menciona `@claude` en uno. De cualquier manera, activan el hilo.

129 129 

130Claude puede responder o resolver solo un hilo activado. Otros hilos permanecen abiertos hasta que una persona los resuelve en la página. Los espectadores ven cada respuesta atribuida a Claude, a través de usted.130Claude puede responder o resolver solo un hilo activado. Otros hilos permanecen abiertos hasta que una persona los resuelve en la página. Los espectadores ven cada respuesta atribuida a Claude, a través de usted.

131 131 

132Si comparte un artefacto públicamente, los espectadores no pueden comentar en él: la página dice `Comments aren't available while this Artifact is shared publicly.` Para cambiar un artefacto que ya tiene hilos de comentarios a un enlace público, elimine los hilos primero.132Si comparte un artefacto públicamente, las personas cuyo único acceso es el enlace público no ven sus comentarios y no pueden agregar ninguno. Los hilos de comentarios existentes permanecen en el artefacto, y usted y sus editores aún pueden leerlos y responder a ellos.

133 133 

134Para pedir los comentarios usted mismo, proporcione a Claude la URL:134Para pedir los comentarios usted mismo, proporcione a Claude la URL:

135 135 


195 195 

196Cuando planee compartir una página respaldada por un conector, pida a Claude que incluya un mensaje de respaldo en cada sección en vivo que nombre el conector que necesita. Un visualizador que no tenga la conexión entonces ve qué conectar en lugar de una sección vacía.196Cuando planee compartir una página respaldada por un conector, pida a Claude que incluya un mensaje de respaldo en cada sección en vivo que nombre el conector que necesita. Un visualizador que no tenga la conexión entonces ve qué conectar en lugar de una sección vacía.

197 197 

198Un artefacto que llama a conectores no se puede compartir a un enlace público en ningún plan. En los planes Team y Enterprise, puede mantenerlo privado o [compartirlo dentro de su organización](#share-an-artifact). En los planes Pro y Max, donde un enlace público es la única forma de compartir, un artefacto respaldado por un conector permanece privado para usted.198Puede [compartir una página respaldada por un conector](#share-an-artifact) dentro de su organización o públicamente, según lo permitan su plan y la configuración de su organización. Las llamadas de conectores no se ejecutan para un visualizador que abre el enlace público sin iniciar sesión en claude.ai, o desde fuera de su organización. Ese visualizador ve la página sin sus secciones en vivo.

199 199 

200<h3 id="the-page-shows-no-live-data-for-a-viewer">200<h3 id="the-page-shows-no-live-data-for-a-viewer">

201 La página no muestra datos en vivo para un visualizador201 La página no muestra datos en vivo para un visualizador

202</h3>202</h3>

203 203 

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

205 205 

206* **El visualizador no ha conectado el conector**: los conectores son por cuenta, de modo que cada visualizador necesita su propia conexión a cada conector que la página llama. Pueden agregar uno en **Configuración > Conectores** en claude.ai, luego recargar la página.206* **El visualizador no ha conectado el conector**: los conectores son por cuenta, de modo que cada visualizador necesita su propia conexión a cada conector que la página llama. Pueden agregar uno en **Configuración > Conectores** en claude.ai, luego recargar la página.

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


375 375 

376| Requisito | Disponible cuando |376| Requisito | Disponible cuando |

377| :- | :- |377| :- | :- |

378| Plan | Pro, Max, Team o Enterprise. En planes Pro y Max, los artefactos son privados para usted hasta que los comparta, y no se aplica ninguna gestión de administrador. En planes de Team, los artefactos están habilitados de forma predeterminada. En planes de Enterprise, un propietario [los habilita](#manage-artifacts-for-your-organization) en la configuración de administrador de claude.ai. |378| Plan | Pro, Max, Team o Enterprise. En planes Pro y Max, los artefactos son privados para usted hasta que los comparta, y no se aplica ninguna gestión de administrador. En planes Team y Enterprise, los artefactos están habilitados de forma predeterminada, y un propietario puede [desactivarlos para la organización](#manage-artifacts-for-your-organization) en la configuración de administrador de claude.ai. |

379| Autenticación | La sesión está respaldada por una cuenta de claude.ai: inicie sesión con `/login` en la CLI o la aplicación de escritorio. Las sesiones de Claude Tag están autenticadas a través de la identidad del agente, por lo que no se requiere ningún paso. Las sesiones que usan una clave API, [token de puerta de enlace](/docs/es/llm-gateway) o credencial de proveedor de nube no pueden publicar. |379| Autenticación | La sesión está respaldada por una cuenta de claude.ai: inicie sesión con `/login` en la CLI o la aplicación de escritorio. Las sesiones de Claude Tag están autenticadas a través de la identidad del agente, por lo que no se requiere ningún paso. Las sesiones que usan una clave API, [token de puerta de enlace](/docs/es/llm-gateway) o credencial de proveedor de nube no pueden publicar. |

380| Proveedor de modelo | API de Anthropic. No disponible en [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry). |380| Proveedor de modelo | API de Anthropic. No disponible en [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry). |

381| Política de organización | Las claves de cifrado administradas por el cliente (CMEK), HIPAA y [Retención de datos cero](/docs/es/zero-data-retention) no están habilitadas para la organización. |381| Política de organización | Las claves de cifrado administradas por el cliente (CMEK), HIPAA y [Retención de datos cero](/docs/es/zero-data-retention) no están habilitadas para la organización. |


408 Gestionar artefactos para su organización408 Gestionar artefactos para su organización

409</h2>409</h2>

410 410 

411Los administradores en planes de Team y Enterprise controlan los artefactos desde [la configuración de administrador de claude.ai](https://claude.ai/admin-settings/claude-code). El contenido del artefacto se almacena en la infraestructura operada por Anthropic y es visible solo para miembros autenticados de la organización publicadora, a menos que el artefacto sea [compartido públicamente](#control-public-sharing).411Los propietarios en planes de Team y Enterprise controlan los artefactos desde [la configuración de administrador de claude.ai](https://claude.ai/admin-settings/artifacts). El contenido del artefacto se almacena en la infraestructura operada por Anthropic y es visible solo para miembros autenticados de la organización publicadora y las personas con las que lo comparten, a menos que el artefacto sea [compartido públicamente](#control-public-sharing).

412 412 

413<h3 id="enable-or-disable-artifacts">413<h3 id="enable-or-disable-artifacts">

414 Habilitar o deshabilitar artefactos414 Habilitar o deshabilitar artefactos

415</h3>415</h3>

416 416 

417Para habilitar o deshabilitar artefactos para toda la organización, vaya a [**Configuración > Claude Code > Capacidades**](https://claude.ai/admin-settings/claude-code) y use el botón de alternancia **Artefactos**. En planes de Enterprise con control de acceso basado en roles, también puede limitar los artefactos a roles específicos: vaya a [**Configuración > Roles**](https://claude.ai/admin-settings/roles), edite un rol y establezca el permiso **Artefactos** bajo el grupo **Claude Code**.417Para habilitar o deshabilitar artefactos para toda la organización, vaya a [**Configuración de la organización > Artefactos**](https://claude.ai/admin-settings/artifacts) y use el botón de alternancia **Artefactos**. En planes de Enterprise con control de acceso basado en roles, también puede limitar los artefactos a roles específicos: vaya a [**Configuración de la organización > Roles**](https://claude.ai/admin-settings/roles), edite un rol y establezca el permiso **Artefactos**.

418 418 

419<h3 id="control-connector-calls-from-artifacts">419<h3 id="control-connector-calls-from-artifacts">

420 Controlar llamadas de conectores desde artefactos420 Controlar llamadas de conectores desde artefactos

421</h3>421</h3>

422 422 

423[Las llamadas de conectores desde artefactos](#pull-live-data-with-mcp-connectors) tienen su propio botón de alternancia, separado del botón de alternancia **Artefactos** que activa o desactiva los artefactos. Vaya a [**Configuración > Capacidades**](https://claude.ai/admin-settings/capabilities) y use el botón de alternancia **Habilitar conectores de artefactos**. El mismo botón de alternancia rige las llamadas de conectores desde artefactos creados en conversaciones de claude.ai, por lo que se encuentra bajo **Configuración > Capacidades** en lugar de **Configuración > Claude Code**.423[Las llamadas de conectores desde artefactos](#pull-live-data-with-mcp-connectors) tienen su propio botón de alternancia, separado del botón de alternancia **Artefactos** que activa o desactiva los artefactos. Vaya a [**Configuración de la organización > Capacidades**](https://claude.ai/admin-settings/capabilities) y use el botón de alternancia **Habilitar conectores de artefactos**. El mismo botón de alternancia rige las llamadas de conectores desde artefactos creados en conversaciones de claude.ai.

424 424 

425<h3 id="control-public-sharing">425<h3 id="control-public-sharing">

426 Controlar el compartir público426 Controlar el compartir público

427</h3>427</h3>

428 428 

429El compartir público está desactivado de forma predeterminada en planes de Team y Enterprise, por lo que los miembros pueden compartir artefactos solo dentro de la organización hasta que un administrador lo active. Para permitir que los miembros publiquen artefactos en enlaces públicos que cualquiera pueda ver sin iniciar sesión, vaya a **Configuración > Claude Code > Capacidades** y active **Compartir externo** bajo el botón de alternancia **Artefactos**. Desactivarlo bloquea el acceso a través de enlaces públicos existentes sin cambiar la audiencia de cada artefacto; el acceso se reanuda si lo vuelve a habilitar.429El compartir público está desactivado de forma predeterminada en planes de Team y Enterprise. Para permitir que los miembros publiquen artefactos en enlaces públicos que cualquiera pueda ver sin iniciar sesión, vaya a [**Configuración de la organización > Artefactos**](https://claude.ai/admin-settings/artifacts) y active **Compartir externo** bajo el botón de alternancia **Artefactos**. Desactivarlo bloquea el acceso a través de enlaces públicos existentes sin cambiar la audiencia de cada artefacto; el acceso se reanuda si lo vuelve a habilitar.

430 430 

431<h3 id="set-a-retention-policy">431<h3 id="set-a-retention-policy">

432 Establecer una política de retención432 Establecer una política de retención

433</h3>433</h3>

434 434 

435Para establecer cuánto tiempo se conservan los artefactos antes de la eliminación automática, vaya a [**Configuración > Controles de datos y privacidad**](https://claude.ai/admin-settings/data-privacy-controls). Puede establecer períodos de retención separados para artefactos que aún son privados para su autor y artefactos que han sido compartidos.435Para establecer cuánto tiempo se conservan los artefactos antes de la eliminación automática, vaya a [**Configuración de la organización > Datos y privacidad**](https://claude.ai/admin-settings/data-privacy-controls). Puede establecer períodos de retención separados para artefactos que aún son privados para su autor y artefactos que han sido compartidos.

436 436 

437<h3 id="review-the-audit-log">437<h3 id="review-the-audit-log">

438 Revisar el registro de auditoría438 Revisar el registro de auditoría

Details

32 32 

33Para cerrar sesión y volver a autenticarse, escriba `/logout` en el símbolo del sistema de Claude Code. Cerrar sesión también restablece su estado de configuración de primer lanzamiento, por lo que la próxima vez que ejecute `claude` le guiará a través del inicio de sesión y la configuración nuevamente.33Para cerrar sesión y volver a autenticarse, escriba `/logout` en el símbolo del sistema de Claude Code. Cerrar sesión también restablece su estado de configuración de primer lanzamiento, por lo que la próxima vez que ejecute `claude` le guiará a través del inicio de sesión y la configuración nuevamente.

34 34 

35Si tiene problemas para iniciar sesión, consulte [solución de problemas de autenticación](/docs/es/troubleshoot-install#login-and-authentication).

36 

37<h3 id="log-in-with-multiple-accounts">

38 Inicie sesión con varias cuentas

39</h3>

40 

35Para mantenerse conectado a varias cuentas a la vez, como cuentas de trabajo y personales, asigne a cada cuenta su propio directorio de configuración. Cuando inicie `claude`, establezca la variable de entorno [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars#variables) en el directorio de la cuenta que desea usar. Cada directorio tiene su propia configuración, historial de sesiones y inicio de sesión de claude.ai o clave de API. Por ejemplo, en Bash o Zsh, agregue este alias a `~/.bashrc` o `~/.zshrc` para que `claude-work` use su cuenta de trabajo mientras que `claude` mantiene la suya personal:41Para mantenerse conectado a varias cuentas a la vez, como cuentas de trabajo y personales, asigne a cada cuenta su propio directorio de configuración. Cuando inicie `claude`, establezca la variable de entorno [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars#variables) en el directorio de la cuenta que desea usar. Cada directorio tiene su propia configuración, historial de sesiones y inicio de sesión de claude.ai o clave de API. Por ejemplo, en Bash o Zsh, agregue este alias a `~/.bashrc` o `~/.zshrc` para que `claude-work` use su cuenta de trabajo mientras que `claude` mantiene la suya personal:

36 42 

37```bash theme={null}43```bash theme={null}


40 46 

41Después de abrir una nueva terminal y ejecutar `claude-work` por primera vez, Claude Code le guiará a través del inicio de sesión y la configuración para el nuevo directorio. Los directorios separados no mantienen dos inicios de sesión de Claude Console [sin una clave de API](#sign-in-without-an-api-key) separados, porque Claude Code almacena ese tipo de inicio de sesión fuera del directorio de configuración.47Después de abrir una nueva terminal y ejecutar `claude-work` por primera vez, Claude Code le guiará a través del inicio de sesión y la configuración para el nuevo directorio. Los directorios separados no mantienen dos inicios de sesión de Claude Console [sin una clave de API](#sign-in-without-an-api-key) separados, porque Claude Code almacena ese tipo de inicio de sesión fuera del directorio de configuración.

42 48 

43Si tiene problemas para iniciar sesión, consulte [solución de problemas de autenticación](/docs/es/troubleshoot-install#login-and-authentication).

44 

45<h2 id="set-up-team-authentication">49<h2 id="set-up-team-authentication">

46 Configurar la autenticación del equipo50 Configurar la autenticación del equipo

47</h2>51</h2>

Details

163 La carga útil llega al contexto de Claude como una etiqueta `<channel>`:163 La carga útil llega al contexto de Claude como una etiqueta `<channel>`:

164 164 

165 ```text theme={null}165 ```text theme={null}

166 <channel source="webhook" path="/" method="POST">build failed on main: https://ci.example.com/run/1234</channel>166 <channel source="webhook" path="/" method="POST">

167 build failed on main: https://ci.example.com/run/1234

168 </channel>

167 ```169 ```

168 170 

169 Tu terminal renderiza el evento como un resumen de una línea, `← webhook: build failed on main: https://ci.example.com/run/1234`, en lugar de la etiqueta sin procesar. Luego verás que Claude comienza a responder: leyendo archivos, ejecutando comandos, o lo que sea que el mensaje requiera. Este es un canal unidireccional, por lo que Claude actúa en tu sesión pero no envía nada de vuelta a través del webhook. Para agregar respuestas, consulta [Exponer una herramienta de respuesta](#expose-a-reply-tool).171 Tu terminal renderiza el evento como un resumen de una línea, `← webhook: build failed on main: https://ci.example.com/run/1234`, en lugar de la etiqueta sin procesar. Luego verás que Claude comienza a responder: leyendo archivos, ejecutando comandos, o lo que sea que el mensaje requiera. Este es un canal unidireccional, por lo que Claude actúa en tu sesión pero no envía nada de vuelta a través del webhook. Para agregar respuestas, consulta [Exponer una herramienta de respuesta](#expose-a-reply-tool).

chrome.md +8 −5

Details

84 84 

85Si más de un navegador está conectado, usted elige cuál usa Claude. Cuando una acción del navegador comienza antes de que haya elegido, Claude le solicita que elija uno. Para cambiar de navegador más tarde, ejecuta `/chrome` y selecciona **Select browser…**. Claude sigue usando su elección incluso cuando se conecta otro navegador.85Si más de un navegador está conectado, usted elige cuál usa Claude. Cuando una acción del navegador comienza antes de que haya elegido, Claude le solicita que elija uno. Para cambiar de navegador más tarde, ejecuta `/chrome` y selecciona **Select browser…**. Claude sigue usando su elección incluso cuando se conecta otro navegador.

86 86 

87Para VS Code, consulta [automatización del navegador en VS Code](/docs/es/vs-code#automate-browser-tasks-with-chrome).87Para VS Code, consulte [automatización del navegador en VS Code](/docs/es/vs-code#automate-browser-tasks-with-chrome).

88 88 

89<h3 id="install-the-extension-when-claude-asks">89<h3 id="install-the-extension-when-claude-asks">

90 Instalar la extensión cuando Claude lo solicita90 Instalar la extensión cuando Claude lo solicita


98* **Not now**: continúa la tarea sin herramientas del navegador. Claude Code puede preguntar nuevamente en una sesión posterior.98* **Not now**: continúa la tarea sin herramientas del navegador. Claude Code puede preguntar nuevamente en una sesión posterior.

99* **Don't ask again**: detiene el aviso en futuras sesiones. Aún puede configurar la integración en cualquier momento con `/chrome`.99* **Don't ask again**: detiene el aviso en futuras sesiones. Aún puede configurar la integración en cualquier momento con `/chrome`.

100 100 

101Si su organización bloquea el servidor MCP `claude-in-chrome` con la [configuración administrada `deniedMcpServers`](/docs/es/managed-mcp#policy-based-control-with-allowlists-and-denylists), Claude Code no muestra el aviso de instalación.101Dos políticas MCP administradas desactivan el aviso:

102 

103* Si su organización bloquea el servidor MCP `claude-in-chrome` con la [configuración administrada `deniedMcpServers`](/docs/es/managed-mcp#policy-based-control-with-allowlists-and-denylists), Claude Code no muestra el aviso de instalación.

104* Si su organización implementa un archivo [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) sin [permitir Claude in Chrome junto con el conjunto administrado](/docs/es/managed-mcp#allow-claude-in-chrome-alongside-the-managed-set), Claude Code no muestra el aviso de instalación.

102 105 

103<h3 id="enable-chrome-by-default">106<h3 id="enable-chrome-by-default">

104 Habilitar Chrome de forma predeterminada107 Habilitar Chrome de forma predeterminada


118 Administrar permisos del sitio121 Administrar permisos del sitio

119</h3>122</h3>

120 123 

121Los permisos a nivel de sitio se heredan de la extensión de Chrome. Administre los permisos en la configuración de la extensión de Chrome para controlar qué sitios puede examinar Claude, hacer clic e introducir texto.124Los permisos a nivel de sitio se heredan de la extensión de Chrome. Administre los permisos en la configuración de la extensión de Chrome para controlar qué sitios puede examinar Claude, hacer clic e introducir texto. En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), cuando el clasificador del modo automático aprueba una llamada del navegador a un sitio, la extensión omite su propia verificación por sitio para esa llamada, a menos que sus reglas de permisos denieguen cualquier sitio a Claude in Chrome.

122 125 

123<h3 id="browser-tools-in-plan-mode">126<h3 id="browser-tools-in-plan-mode">

124 Herramientas del navegador en plan mode127 Herramientas del navegador en Plan Mode

125</h3>128</h3>

126 129 

127En [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), aparece un aviso de permiso antes de que Claude grabe un GIF, abra una nueva pestaña o ejecute un atajo. Si [el modo bypass permissions está disponible](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) en su sesión y [la obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching) está desactivada, estas llamadas se ejecutan sin un aviso.130En [Plan Mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), aparece un aviso de permiso antes de que Claude grabe un GIF, abra una nueva pestaña o ejecute un atajo. Si [el modo bypass permissions está disponible](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) en su sesión y [la obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching) está desactivada, estas llamadas se ejecutan sin un aviso.

128 131 

129Una llamada `tabs_context_mcp` también solicita aprobación cuando establece `createIfEmpty`, y lo mismo ocurre con una llamada `browser_batch` que incluya cualquiera de estas acciones.132Una llamada `tabs_context_mcp` también solicita aprobación cuando establece `createIfEmpty`, y lo mismo ocurre con una llamada `browser_batch` que incluya cualquiera de estas acciones.

130 133 

Details

362 362 

363Las máquinas que solo ejecutan Claude Desktop la necesitan. Claude Desktop aplica la lista de modelos y la lista de herramientas deshabilitadas a sesiones incrustadas en sí mismo, pero la lista de permitidos de salida las alcanza solo como configuración principal, en forma de reglas de dominio `WebFetch` y reglas de red de sandbox. Sin la opción de participación, esas sesiones se ejecutan sin la restricción de salida, y nada le advierte. La puerta de enlace aún rechaza solicitudes de inferencia para modelos que la política no otorga.363Las máquinas que solo ejecutan Claude Desktop la necesitan. Claude Desktop aplica la lista de modelos y la lista de herramientas deshabilitadas a sesiones incrustadas en sí mismo, pero la lista de permitidos de salida las alcanza solo como configuración principal, en forma de reglas de dominio `WebFetch` y reglas de red de sandbox. Sin la opción de participación, esas sesiones se ejecutan sin la restricción de salida, y nada le advierte. La puerta de enlace aún rechaza solicitudes de inferencia para modelos que la política no otorga.

364 364 

365Una lista de permitidos de mercado de plugins también alcanza sesiones incrustadas solo como configuración principal. Cuando desactiva los mercados de plugins agregados por el usuario en la configuración administrada de Claude Desktop, Claude Desktop 2.16120.0 o posterior oculta los mercados que su organización no aprovisionó y rechaza instalaciones desde ellos. Para evitar que las sesiones incrustadas carguen plugins ya instalados desde esos mercados, envía una lista `strictKnownMarketplaces` como configuración principal. Sin la opción de participación, Claude Code ignora esa lista, y esos plugins siguen cargándose.

366 

365Las máquinas donde los desarrolladores inician sesión a través de `/login` no la necesitan; cada sesión de Claude Code obtiene su política de la puerta de enlace.367Las máquinas donde los desarrolladores inician sesión a través de `/login` no la necesitan; cada sesión de Claude Code obtiene su política de la puerta de enlace.

366 368 

367Las flotas cuyo [`policyHelper`](/docs/es/settings-reference#policyhelper) suministra configuración administrada no pueden usarla: Claude Code nunca fusiona configuración principal en esas flotas, porque lee configuración administrada solo de la salida del asistente.369Las flotas cuyo [`policyHelper`](/docs/es/settings-reference#policyhelper) suministra configuración administrada no pueden usarla: Claude Code nunca fusiona configuración principal en esas flotas, porque lee configuración administrada solo de la salida del asistente.


457* **`forceLoginOrgUUID`**: Claude Code honra un valor suministrado por el principal cuando la fuente de administrador de mayor prioridad no establece un UUID de organización. El inicio de sesión de la puerta de enlace no verifica esta clave. Un UUID de organización en la fuente de administrador de mayor prioridad bloquea el valor del principal y es el que Claude Code aplica.459* **`forceLoginOrgUUID`**: Claude Code honra un valor suministrado por el principal cuando la fuente de administrador de mayor prioridad no establece un UUID de organización. El inicio de sesión de la puerta de enlace no verifica esta clave. Un UUID de organización en la fuente de administrador de mayor prioridad bloquea el valor del principal y es el que Claude Code aplica.

458* **`allowedMcpServers`**: Claude Code honra una lista de permitidos suministrada por el principal cuando ninguna lista de administrador está en vigor. `allowManagedMcpServersOnly` no la bloquea, porque el bloqueo aplica cualquier lista que gane como el valor administrado, incluida una lista suministrada por el principal cuando ninguna fuente de administrador suministra una. Una lista en la fuente de administrador de mayor prioridad bloquea la del principal y es la lista que Claude Code aplica, por lo que establezca `allowedMcpServers` allí, junto al bloqueo. Antes de v2.1.223, un valor para cualquiera de las claves en cualquier fuente de administrador bloqueaba la del principal.460* **`allowedMcpServers`**: Claude Code honra una lista de permitidos suministrada por el principal cuando ninguna lista de administrador está en vigor. `allowManagedMcpServersOnly` no la bloquea, porque el bloqueo aplica cualquier lista que gane como el valor administrado, incluida una lista suministrada por el principal cuando ninguna fuente de administrador suministra una. Una lista en la fuente de administrador de mayor prioridad bloquea la del principal y es la lista que Claude Code aplica, por lo que establezca `allowedMcpServers` allí, junto al bloqueo. Antes de v2.1.223, un valor para cualquiera de las claves en cualquier fuente de administrador bloqueaba la del principal.

459* **`availableModels`**: Claude Code honra una lista de modelos suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe modelos, establezca `availableModels` en la fuente ganadora.461* **`availableModels`**: Claude Code honra una lista de modelos suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe modelos, establezca `availableModels` en la fuente ganadora.

460* **`strictKnownMarketplaces`**: Claude Code honra una lista de permitidos de mercado de plugins suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe mercados, establezca `strictKnownMarketplaces` en la fuente ganadora. Requiere Claude Code v2.1.282 o posterior.462* **`strictKnownMarketplaces`**: Claude Code honra una lista de permitidos de mercado de plugins suministrada por el principal cuando la fuente administrada ganadora no establece una. Claude Desktop 2.16120.0 o posterior envía una cuando su configuración administrada desactiva los mercados de plugins agregados por el usuario. Si su flota restringe mercados, establezca `strictKnownMarketplaces` en la fuente ganadora. Requiere Claude Code v2.1.282 o posterior.

461* **`blockedMarketplaces`**: una lista de bloqueo de mercado suministrada por el principal pasa y se suma a cualquier lista de bloqueo que una fuente administrada establece, ya que una lista de bloqueo solo puede restringir más. Requiere Claude Code v2.1.282 o posterior.463* **`blockedMarketplaces`**: una lista de bloqueo de mercado suministrada por el principal pasa y se suma a cualquier lista de bloqueo que una fuente administrada establece, ya que una lista de bloqueo solo puede restringir más. Requiere Claude Code v2.1.282 o posterior.

462* **`strictPluginOnlyCustomization`**: esta clave pasa el filtro independientemente de cualquier bloqueo, y hace que Claude Code ignore la personalización propia del desarrollador, incluidos hooks protectores. Ningún bloqueo la bloquea.464* **`strictPluginOnlyCustomization`**: esta clave pasa el filtro independientemente de cualquier bloqueo, y hace que Claude Code ignore la personalización propia del desarrollador, incluidos hooks protectores. Ningún bloqueo la bloquea.

463 465 

Details

314| 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}` |314| 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}` |

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

316 316 

317<h5 id="apply-an-amazon-bedrock-guardrail">

318 Aplicar una barrera de seguridad de Amazon Bedrock

319</h5>

320 

321Para aplicar una barrera de seguridad de Amazon Bedrock a cada solicitud de inferencia que la puerta de enlace envía a través de un upstream de Bedrock, agregue un bloque `guardrail` a ese upstream. Requiere Claude Code v2.1.281 o posterior en el servidor de la puerta de enlace.

322 

323```yaml theme={null}

324upstreams:

325 - provider: bedrock

326 region: us-east-1

327 auth: {}

328 guardrail:

329 id: gr-abc123 # ID de barrera de seguridad o ARN completo

330 version: "1" # un número de versión publicada, o DRAFT

331 # mantenga las comillas: un 1 desnudo falla al arrancar

332```

333 

334<Warning>

335 La puerta de enlace no admite etiquetas de entrada de barrera de seguridad. No agrega etiquetas de contenido de guardia a los avisos, por lo que un filtro de barrera de seguridad que Amazon Bedrock aplica solo a la entrada etiquetada no se ejecuta en el tráfico a través de la puerta de enlace. Para saber qué filtros dependen de etiquetas de entrada, consulte [etiquetas de entrada](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html) en la documentación de Amazon Bedrock.

336</Warning>

337 

338También otorgue al principal de AWS de la puerta de enlace `bedrock:ApplyGuardrail` en la barrera de seguridad.

339 

340Establezca `guardrail` en cada upstream `bedrock` o en ninguno. La puerta de enlace se niega a iniciar en una mezcla, porque [failover](#multiple-upstreams) de otro modo podría enviar una solicitud a un upstream de Bedrock que no tiene barrera de seguridad.

341 

342La barrera de seguridad cubre solo upstreams de Bedrock. Si enumera otro proveedor en `upstreams`, la puerta de enlace envía solicitudes a ese proveedor sin la barrera de seguridad.

343 

344Cuando una solicitud `/v1/messages` cuyo cuerpo lleva un campo `amazon-bedrock-*`, como `amazon-bedrock-guardrailConfig`, llega a un upstream de Bedrock que tiene `guardrail` establecido, la puerta de enlace responde 400 en lugar de reenviarlo.

345 

317<h4 id="claude-platform-on-aws">346<h4 id="claude-platform-on-aws">

318 Claude Platform en AWS347 Claude Platform en AWS

319</h4>348</h4>


530 `admin`559 `admin`

531</h3>560</h3>

532 561 

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

534 563 

535```yaml theme={null}564```yaml theme={null}

536admin:565admin:

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

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

539 # atribuible. Array para rotación: agregue la nueva clave, actualice los clientes,568 # atribuible. Array para rotación: agregue la clave nueva, actualice los clientes,

540 # elimine la antigua.569 # elimine la antigua.

541 write_keys:570 write_keys:

542 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }571 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

543 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }572 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }

544 read_keys:573 read_keys:

545 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }574 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

546 # Grupos de IdP con acceso administrativo completo a través del JWT de gateway normal (sin clave API).575 # Grupos de IdP con acceso de administrador completo a través del JWT de puerta de enlace normal (sin clave API).

547 admin_groups: [platform-finops]576 admin_groups: [platform-finops]

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

549```578```


551| Campo | Requerido | Descripción |580| Campo | Requerido | Descripción |

552| - | - | - |581| - | - | - |

553| `write_keys` | No | Array de `{id, key}`. Una `x-api-key` que coincida con una de estas puede listar, establecer y eliminar límites de gastos. Los valores de clave deben tener al menos 32 caracteres; los `id` deben ser únicos en `read_keys` y `write_keys`. |582| `write_keys` | No | Array de `{id, key}`. Una `x-api-key` que coincida con una de estas puede listar, establecer y eliminar límites de gastos. Los valores de clave deben tener al menos 32 caracteres; los `id` deben ser únicos en `read_keys` y `write_keys`. |

554| `read_keys` | No | Array 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`](/docs/es/claude-apps-gateway-spend-limits#%2Feffective) y [`/audit`](/docs/es/claude-apps-gateway-spend-limits#%2Faudit). |583| `read_keys` | No | Array de `{id, key}`. Solo lectura: todos los puntos finales `GET`, incluida la enumeración de límites, la obtención de uno por ID y la lectura de [`/effective`](/docs/es/claude-apps-gateway-spend-limits#%2Feffective) y [`/audit`](/docs/es/claude-apps-gateway-spend-limits#%2Faudit). |

555| `admin_groups` | No | Nombres de grupos de IdP. Un JWT de gateway cuya reclamación `groups` incluya uno de estos tiene acceso administrativo completo, lectura y escritura, y auditorías como `oidc:<sub>`. Utilice esto para administradores humanos; utilice claves API para máquinas. Una entrada vacía en esta lista detiene el gateway al iniciar. Consulte [Valores de coincidencia que detienen el gateway al iniciar](#matcher-values-that-stop-the-gateway-at-boot). |584| `admin_groups` | No | Nombres de grupos de IdP. Un JWT de puerta de enlace cuya reclamación `groups` incluya uno de estos tiene acceso de administrador completo, lectura y escritura, y auditorías como `oidc:<sub>`. Úselo para administradores humanos; use claves API para máquinas. Una entrada vacía en esta lista detiene la puerta de enlace al arrancar. Consulte [Valores de coincidencia que detienen la puerta de enlace al arrancar](#matcher-values-that-stop-the-gateway-at-boot). |

556| `blocked_message` | No | Se añade textualmente al `429 billing_error` que ve un desarrollador bloqueado. Escriba la instrucción completa, como una URL o un canal de Slack. Cuando no está establecido, el gateway envía solo el mensaje predeterminado. Consulte [Cómo funciona la aplicación](/docs/es/claude-apps-gateway-spend-limits#how-enforcement-works). |585| `blocked_message` | No | Se añade textualmente al `429 billing_error` que ve un desarrollador bloqueado. Escriba la instrucción completa, como una URL o un canal de Slack. Cuando no está establecido, la puerta de enlace envía solo el mensaje predeterminado. Consulte [Cómo funciona la aplicación](/docs/es/claude-apps-gateway-spend-limits#how-enforcement-works). |

557| `audit_retention_days` | No | Predeterminado `365`. Las filas `admin_audit` más antiguas se eliminan. |586| `audit_retention_days` | No | Predeterminado `365`. Las filas `admin_audit` más antiguas se eliminan. |

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

559| `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 gastos para que una identidad desaprovisionada caduque mientras sus contadores de gastos anónimos permanecen. |588| `identity_retention_days` | No | Predeterminado `90`. TTL de última visualización para filas `principal_emails`, que contienen el correo electrónico, el nombre para mostrar y los grupos de cada desarrollador (PII). Deliberadamente más corto que la retención de gastos para que una identidad desaprovisionada caduque mientras sus contadores de gastos anónimos permanecen. |

560| `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 restrictivo. Utilizado tanto por la aplicación como por `/effective`. |589| `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 restrictivo. Utilizado tanto por la aplicación como por `/effective`. |

561 590 

562<h3 id="enforcement">591<h3 id="enforcement">


567 596 

568| Campo | Requerido | Descripción |597| Campo | Requerido | Descripción |

569| - | - | - |598| - | - | - |

570| `fail_closed_on_error` | No | Predeterminado `false`. La aplicación de límites de gastos falla abierta en una interrupción de Postgres, por lo que la inferencia se mantiene activa. Establezca `true` para fallar cerrado: los desarrolladores que superan el límite se bloquean, pero también todos los demás si el almacén es inaccesible. Requiere un bloque [`admin:`](#admin): la aplicación de límites de gastos solo se ejecuta cuando `admin` está configurado, y el gateway se niega a iniciar si establece esto en `true` sin uno. |599| `fail_closed_on_error` | No | Predeterminado `false`. La aplicación de límites de gastos falla abierta en una interrupción de Postgres, por lo que la inferencia se mantiene activa. Establezca `true` para fallar cerrado: los desarrolladores que superan el límite se bloquean, pero también todos los demás si el almacén es inaccesible. Requiere un bloque [`admin:`](#admin): la aplicación de límites de gastos solo se ejecuta cuando `admin` está configurado, y la puerta de enlace se niega a iniciar si establece esto en `true` sin uno. |

571 600 

572<h3 id="pricing">601<h3 id="pricing">

573 `pricing`602 `pricing`


575 604 

576El bloque `pricing` le dice al medidor de gastos qué cobrar en lugar del precio de lista en USD, para que los límites y [`/effective`](/docs/es/claude-apps-gateway-spend-limits#%2Feffective) reflejen sus tasas contratadas. Los montos permanecen en USD y siguen siendo una estimación, no una factura. Dos requisitos previos:605El bloque `pricing` le dice al medidor de gastos qué cobrar en lugar del precio de lista en USD, para que los límites y [`/effective`](/docs/es/claude-apps-gateway-spend-limits#%2Feffective) reflejen sus tasas contratadas. Los montos permanecen en USD y siguen siendo una estimación, no una factura. Dos requisitos previos:

577 606 

578* Claude Code v2.1.227 o posterior en el servidor de gateway. Las versiones anteriores rechazan la clave desconocida al iniciar.607* Claude Code v2.1.227 o posterior en el servidor de puerta de enlace. Las versiones anteriores rechazan la clave desconocida al arrancar.

579* Un bloque [`admin:`](#admin) o, en v2.1.268 o posterior, un bloque [`managed:`](#managed) con al menos una política. El gateway se niega a iniciar con `pricing` establecido y ninguno de los dos bloques, porque nada lo leería.608* Un bloque [`admin:`](#admin) o, en v2.1.268 o posterior, un bloque [`managed:`](#managed) con al menos una política. La puerta de enlace se niega a iniciar con `pricing` establecido y ninguno de los dos bloques, porque nada lo leería.

580 609 

581```yaml theme={null}610```yaml theme={null}

582pricing:611pricing:


597 626 

598Cómo el medidor coincide con una fila de anulación:627Cómo el medidor coincide con una fila de anulación:

599 628 

600* Una fila reemplaza el precio de lista para solicitudes que `upstream`, un [`upstreams[].name`](#upstreams), sirve para `model`. Esto incluye la tasa más alta de [modo rápido](/docs/es/fast-mode#understand-the-cost-tradeoff), por lo que las solicitudes de modo rápido y estándar se miden con las mismas cuatro tasas.629* Una fila reemplaza el precio de lista para solicitudes que `upstream`, un [`upstreams[].name`](#upstreams), sirve para `model`. Esto incluye la tasa de [modo rápido](/docs/es/fast-mode#understand-the-cost-tradeoff) más alta, por lo que las solicitudes de modo rápido y estándar se miden con las mismas cuatro tasas.

601* Un ID integrado como `claude-sonnet-4-6`, coincidido como [`models[].id`](#models), cubre cada forma fechada, forma regional de Amazon Bedrock, o forma de Google Cloud's Agent Platform que el medidor precifica como ese modelo. Cualquier otra cadena, como un alias o un ARN de perfil de inferencia, coincide con el ID que el cliente envió o la cadena enviada al upstream, sin distinción de mayúsculas y minúsculas.630* Un ID integrado como `claude-sonnet-4-6`, coincidido como [`models[].id`](#models), cubre todas las formas fechadas, formas regionales de Amazon Bedrock, o formas de la Plataforma de Agentes de Google Cloud que el medidor valora como ese modelo. Cualquier otra cadena, como un alias o un ARN de perfil de inferencia, coincide con el ID que el cliente envió o la cadena enviada ascendente, sin distinción de mayúsculas y minúsculas.

602* Donde las filas se superponen, el medidor elige la fila más específica en lugar de la primera fila: una fila cuyo `model` es la cadena de modelo exacta enviada al upstream, luego una fila que coincide con el ID exacto que el cliente envió, luego una fila que nombra el modelo integrado.631* Donde las filas se superponen, el medidor elige la fila más específica en lugar de la primera fila: una fila cuyo `model` es la cadena de modelo exacta enviada ascendente, luego una fila que coincide con el ID exacto que el cliente envió, luego una fila que nombra el modelo integrado.

603* Un nombre de upstream desconocido falla al iniciar, al igual que dos filas para un upstream que nombran el mismo modelo, incluidas dos ortografías de un modelo integrado. El gateway advierte al iniciar sobre una fila que ningún modelo solicitable puede usar.632* Un nombre de upstream desconocido falla al arrancar, al igual que dos filas para un upstream que nombran el mismo modelo, incluidas dos ortografías de un modelo integrado. La puerta de enlace advierte al arrancar sobre una fila que ningún modelo solicitable puede usar.

604* Las solicitudes de búsqueda web permanecen al precio de lista de \$0.01; el multiplicador aún se aplica a ellas.633* Las solicitudes de búsqueda web permanecen en el precio de lista de \$0.01; el multiplicador aún se aplica a ellas.

605 634 

606Para tasas por región, asigne a cada región su propio upstream nombrado y una fila por upstream.635Para tasas por región, asigne a cada región su propio upstream nombrado y una fila por upstream.

607 636 


609 Marcar precios hacia arriba638 Marcar precios hacia arriba

610</h4>639</h4>

611 640 

612Con v2.1.271 o posterior en el servidor de gateway, puede establecer `multiplier` por encima de 1, hasta 10, para medir más de lo que cobra el proveedor, por ejemplo una tasa de reembolso interno. Este ejemplo mide cada solicitud al 120% del precio:641Con v2.1.271 o posterior en el servidor de puerta de enlace, puede establecer `multiplier` por encima de 1, hasta 10, para medir más de lo que cobra el proveedor, por ejemplo una tasa de reembolso interno. Este ejemplo mide cada solicitud al 120% del precio:

613 642 

614```yaml theme={null}643```yaml theme={null}

615pricing:644pricing:

616 multiplier: 1.2645 multiplier: 1.2

617```646```

618 647 

619Con un bloque [`admin:`](#admin), el marcado también se aplica a los límites de gastos. El medidor cuenta el 120% del precio, por lo que los desarrolladores alcanzan sus límites más rápido. El gateway registra una advertencia al iniciar que dice así.648Con un bloque [`admin:`](#admin), el marcado también se aplica a los límites de gastos. El medidor cuenta el 120% del precio, por lo que los desarrolladores alcanzan sus límites más rápido. La puerta de enlace registra una advertencia al arrancar que lo dice.

620 649 

621El multiplicador no cambia lo que cobra el proveedor upstream por las solicitudes.650El multiplicador no cambia lo que cobra el proveedor ascendente por las solicitudes.

622 651 

623Si el gateway también [envía las tasas a clientes conectados](#send-the-rates-to-signed-in-clients), los desarrolladores necesitan Claude Code v2.1.271 o posterior para ver el marcado. Los clientes anteriores ignoran un `multiplier` superior a 1 y muestran costos sin él.652Si la puerta de enlace también [envía las tasas a clientes conectados](#send-the-rates-to-signed-in-clients), los desarrolladores necesitan Claude Code v2.1.271 o posterior para ver el marcado. Los clientes anteriores ignoran un `multiplier` superior a 1 y muestran costos sin él.

624 653 

625Un servidor de gateway anterior a v2.1.271 se niega a iniciar si establece un `multiplier` superior a 1.654Un servidor de puerta de enlace anterior a v2.1.271 se niega a iniciar si establece un `multiplier` superior a 1.

626 655 

627<h4 id="send-the-rates-to-signed-in-clients">656<h4 id="send-the-rates-to-signed-in-clients">

628 Enviar las tasas a clientes conectados657 Enviar las tasas a clientes conectados

629</h4>658</h4>

630 659 

631Con v2.1.268 o posterior en el servidor de gateway, el gateway también coloca las tasas de `pricing` en las políticas [`managed`](#managed) que sirve, como la configuración administrada [`modelPricing`](/docs/es/settings-reference#modelpricing). Los desarrolladores coincididos por una política ven las tasas de `pricing` para el primer upstream que sirve cada ID de modelo en `/usage`, la línea de estado y OpenTelemetry. Un desarrollador que no coincide con ninguna política no recibe configuraciones administradas, por lo que sus cifras permanecen al precio de lista. Los clientes aplican la configuración en Claude Code v2.1.242 o posterior.660Con v2.1.268 o posterior en el servidor de puerta de enlace, la puerta de enlace también coloca las tasas de `pricing` en las políticas [`managed`](#managed) que sirve, como la configuración administrada [`modelPricing`](/docs/es/settings-reference#modelpricing). Los desarrolladores coincididos por una política ven las tasas de `pricing` para el primer upstream que sirve cada ID de modelo en `/usage`, la línea de estado y OpenTelemetry. Un desarrollador que no coincide con ninguna política no recibe configuración administrada, por lo que sus cifras permanecen en el precio de lista. Los clientes aplican la configuración en Claude Code v2.1.242 o posterior.

632 661 

633* Lo que agrega el gateway: a menos que el bloque `cli` de una política ya establezca `modelPricing`, el gateway agrega el `multiplier` y, para cada ID de modelo que un cliente pueda solicitar, la fila de anulación del primer upstream que sirve ese ID. Una tasa que solo un upstream de conmutación por error cobra permanece en el gateway.662* Lo que agrega la puerta de enlace: a menos que el bloque `cli` de una política ya establezca `modelPricing`, la puerta de enlace agrega el `multiplier` y, para cada ID de modelo que un cliente pueda solicitar, la fila de anulación del primer upstream que sirve ese ID. Una tasa que solo cobra un upstream de conmutación por error permanece en la puerta de enlace.

634* Optar una política: establezca `modelPricing` en `{}` en el bloque `cli` de esa política, y sus desarrolladores permanecen al precio de lista.663* Optar una política: establezca `modelPricing` en `{}` en el bloque `cli` de esa política, y sus desarrolladores permanecen en el precio de lista.

635* Mantener las tasas propias de una política: una política cuyo bloque `cli` establece `modelPricing` con su propio `multiplier` u `overrides` mantiene ese `modelPricing` completo, y el gateway no agrega tasas propias a él.664* Mantener las tasas propias de una política: una política cuyo bloque `cli` establece `modelPricing` con su propio `multiplier` u `overrides` mantiene ese `modelPricing` completo, y la puerta de enlace no agrega tasas propias a él.

636 665 

637<h3 id="models">666<h3 id="models">

638 `models`667 `models`

639</h3>668</h3>

640 669 

641El bloque `models` es una lista de modelos opcional curada por administrador, servida en `/v1/models` y utilizada para traducir IDs de modelo por upstream. Es obligatorio para regiones de Amazon Bedrock que no sean EE.UU., ARN de rendimiento aprovisionado de Amazon Bedrock y nombres de implementación de Microsoft Foundry.670El bloque `models` es una lista de modelos opcional curada por administrador, servida en `/v1/models` y utilizada para traducir ID de modelos por upstream. Es obligatorio para regiones de Amazon Bedrock que no sean EE.UU., ARN de rendimiento aprovisionado de Amazon Bedrock y nombres de implementación de Microsoft Foundry.

642 671 

643```yaml theme={null}672```yaml theme={null}

644auto_include_builtin_models: true # false: expose only the list below673auto_include_builtin_models: true # false: exponer solo la lista a continuación

645models:674models:

646 - id: claude-opus-4-8675 - id: claude-opus-4-8

647 label: Claude Opus 4.8676 label: Claude Opus 4.8

648 # description: optional text shown in clients that surface it677 # description: texto opcional mostrado en clientes que lo muestren

649 upstream_model:678 upstream_model:

650 anthropic: claude-opus-4-8679 anthropic: claude-opus-4-8

651 bedrock: us.anthropic.claude-opus-4-8 # or an inference-profile ARN680 bedrock: us.anthropic.claude-opus-4-8 # o un ARN de perfil de inferencia

652 foundry: your-opus-deployment-name681 foundry: your-opus-deployment-name

653```682```

654 683 

655Cada clave bajo `upstream_model` debe coincidir con el `name` de un upstream configurado, que por defecto es el nombre del proveedor. Una clave que no coincida con ningún upstream falla al iniciar, por lo que omita las líneas para proveedores que no utiliza.684Cada clave bajo `upstream_model` debe coincidir con el `name` de un upstream configurado, que por defecto es el nombre del proveedor. Una clave que no coincida con ningún upstream falla al arrancar, así que omita las líneas para proveedores que no use.

656 685 

657<h3 id="managed">686<h3 id="managed">

658 `managed`687 `managed`

659</h3>688</h3>

660 689 

661El bloque `managed` define políticas de acceso basadas en roles con 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 general `match: {}`. Se sirven por usuario en `GET /managed/settings` con almacenamiento en caché de ETag/304.690El bloque `managed` define políticas de acceso basadas en roles con 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 general `match: {}`. Se sirven por usuario en `GET /managed/settings` con almacenamiento en caché ETag/304.

662 691 

663```yaml theme={null}692```yaml theme={null}

664managed:693managed:


668 cli:697 cli:

669 availableModels: [claude-sonnet-4-6]698 availableModels: [claude-sonnet-4-6]

670 permissions: { deny: ["WebFetch", "WebSearch"] }699 permissions: { deny: ["WebFetch", "WebSearch"] }

671 # Captura general predeterminada al final: coincide con todos los que se autenticaron.700 # Captura general predeterminada última: coincide con todos los que se autenticaron.

672 - match: {}701 - match: {}

673 cli:702 cli:

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

675```704```

676 705 

677Una captura general `match: {}`, convencionalmente enumerada al final, se trata como una capa base. Cada otra política hereda cualquier clave que no establezca de la captura general, por lo que las entradas por rol solo necesitan enumerar lo que difiere del valor predeterminado de la organización. Las reglas de fusión dependen del tipo de clave:706Una captura general `match: {}`, convencionalmente enumerada última, se trata como una capa base. Todas las demás políticas heredan cualquier clave que no establezcan de la captura general, por lo que las entradas por rol solo necesitan enumerar lo que difiere del valor predeterminado de la organización. Las reglas de fusión dependen del tipo de clave:

678 707 

679* **Listas de permitidos**: `availableModels` y `permissions.allow`. La lista de una política específica reemplaza completamente la de la base.708* **Listas de permitidos**: `availableModels` y `permissions.allow`. La lista de una política específica reemplaza completamente la de la base.

680* **Listas de denegados y arrays de hooks**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` y cada array de tipo de evento `hooks`. Estos toman la unión de base y política, por lo que un hook de denegación o auditoría en toda la organización no puede ser eliminado accidentalmente por una anulación por rol.709* **Listas de denegación y arrays de hooks**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` y cada array de tipo de evento `hooks`. Estos toman la unión de base y política, por lo que un hook de auditoría o denegación de toda la organización no puede ser eliminado accidentalmente por una anulación por rol.

681* **Claves de tipo registro**: `env`, `modelOverrides` y `skillOverrides`. Estas se fusionan superficialmente, por lo que un bloque `env` por rol anula las claves que establece y hereda el resto de la base.710* **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.

682 711 

683`availableModels` también se aplica en el lado del servidor en `/v1/messages`, por lo que un modelo denegado devuelve `400` independientemente de lo que envíe el cliente.712`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.

684 713 

685El gateway valida el valor `model` en sí antes de retransmitir una solicitud, por lo que un valor mal formado nunca llega a un upstream. Rechaza la solicitud con un `400` en dos casos:714La puerta de enlace valida el valor `model` en sí antes de retransmitir una solicitud, por lo que un valor mal formado nunca llega a un upstream. Rechaza la solicitud con un `400` en dos casos:

686 715 

687* Cuando el valor falta o está vacío, el gateway rechaza la solicitud con el mensaje `model is required`. Esa comprobación requiere un gateway que ejecute Claude Code v2.1.228 o posterior.716* Cuando el valor falta o está vacío, la puerta de enlace rechaza la solicitud con el mensaje `model is required`. Esa comprobación requiere una puerta de enlace que ejecute Claude Code v2.1.228 o posterior.

688* Cuando el valor está presente pero no es una cadena, el gateway rechaza la solicitud con el mensaje `model must be a string`. Requiere un gateway que ejecute Claude Code v2.1.221 o posterior.717* Cuando el valor está presente pero no es una cadena, la puerta de enlace rechaza la solicitud con el mensaje `model must be a string`. Requiere una puerta de enlace que ejecute Claude Code v2.1.221 o posterior.

689 718 

690| Coincidencia | Comportamiento |719| Coincidencia | Comportamiento |

691| - | - |720| - | - |

692| `match: {}` | Coincide con cada usuario autenticado. Comience con uno de estos y agregue políticas con alcance de grupo por encima más tarde. |721| `match: {}` | Coincide con todos los usuarios autenticados. Comience con uno de estos y agregue políticas con alcance de grupo por encima más tarde. |

693| `match: { groups: [a, b] }` | Coincide si la reclamación `groups` del JWT contiene alguno de los grupos enumerados. Sensible a mayúsculas y minúsculas: los grupos deben coincidir con el uso exacto de mayúsculas y minúsculas del IdP. |722| `match: { groups: [a, b] }` | Coincide si la reclamación `groups` del JWT contiene alguno de los grupos enumerados. Sensible a mayúsculas y minúsculas: los grupos deben coincidir con la capitalización exacta del IdP. |

694| `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. |723| `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. |

695| `match: { groups: [a], email_domain: example.com }` | Ambas condiciones deben coincidir |724| `match: { groups: [a], email_domain: example.com }` | Ambas condiciones deben coincidir |

696 725 

697Un usuario autenticado que no coincida con ninguna política obtiene los valores predeterminados del gateway, lo que significa cada modelo en el catálogo y sin configuraciones administradas. Agregue una captura general `match: {}` al final si desea una política predeterminada garantizada.726Un 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 general `match: {}` última si desea una política predeterminada garantizada.

698 727 

699<Note>728<Note>

700 El gateway no mantiene su propio directorio de usuarios. Autoriza cada solicitud desde el token de IdP del usuario, leyendo la pertenencia al 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.729 La puerta de enlace no mantiene su propio directorio de usuarios. Autoriza cada solicitud desde el token de IdP del usuario, leyendo la pertenencia al 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.

701 730 

702 Ejecute la gestión del ciclo de vida del usuario y el grupo en la fuente de verdad, que es el aprovisionamiento SCIM nativo de su IdP o una plataforma dedicada de gobernanza de identidades. La pertenencia y desaprovisionamiento gobernados allí fluyen hacia el gateway automáticamente a través del token. Si desea el aprovisionamiento SCIM de las propias cuentas de Claude, esa es una capacidad de [Claude for Enterprise](/docs/es/admin-setup).731 Ejecute la gestión del ciclo de vida de usuarios y grupos en la fuente de verdad, que es el aprovisionamiento SCIM nativo de su IdP o una plataforma dedicada de gobernanza de identidad. La pertenencia y desaprovisionamiento gobernados allí fluyen hacia 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](/docs/es/admin-setup).

703 732 

704 Se aplican dos relojes de propagación:733 Se aplican dos relojes de propagación:

705 734 

706 * **Contenidos de política**: editar una política y reimplementar llega a clientes conectados en su próxima encuesta de configuraciones administradas, dentro de una hora, aparte de los [cambios que se aplican solo en el próximo lanzamiento](/docs/es/server-managed-settings#fetch-and-caching-behavior)735 * **Contenidos de política**: editar una política y reimplementar llega a clientes conectados en su próxima encuesta de configuración administrada, dentro de una hora, aparte de los [cambios que se aplican solo en el próximo lanzamiento](/docs/es/server-managed-settings#fetch-and-caching-behavior)

707 * **Pertenencia al grupo**: cambiar la pertenencia al grupo de un usuario cambia qué política los coincide. Esto entra en vigor en el próximo acuñamiento de sesión, lo que significa el próximo refresco silencioso, limitado por `session.ttl_hours`.736 * **Pertenencia al grupo**: cambiar la pertenencia al grupo de un usuario cambia qué política los coincide. Esto entra en vigor en el próximo acuñamiento de sesión, lo que significa la próxima actualización silenciosa, limitada por `session.ttl_hours`.

708</Note>737</Note>

709 738 

710<h4 id="matcher-values-that-stop-the-gateway-at-boot">739<h4 id="matcher-values-that-stop-the-gateway-at-boot">

711 Valores de coincidencia que detienen el gateway al iniciar740 Valores de coincidencia que detienen la puerta de enlace al arrancar

712</h4>741</h4>

713 742 

714Al iniciar, el gateway comprueba el bloque `match` de cada política y la lista [`admin_groups`](#admin). Cualquiera de estos valores detiene el gateway con un error que nombra el campo:743Al arrancar, la puerta de enlace comprueba el bloque `match` de cada política y la lista [`admin_groups`](#admin). Cualquiera de estos valores detiene la puerta de enlace con un error que nombra el campo:

715 744 

716* Una lista `groups` vacía745* Una lista `groups` vacía

717* Una entrada vacía en `groups` o en `admin_groups`746* Una entrada vacía en `groups` o en `admin_groups`

718* Un `email_domain` vacío747* Un `email_domain` vacío

719* Un `email_domain` que contiene `@`, espacios en blanco o una coma. El gateway recorta el valor y elimina una `@` inicial antes de esta comprobación. Escriba un dominio desnudo, como `example.com`.748* Un `email_domain` que contiene `@`, espacios en blanco o una coma. La puerta de enlace recorta el valor y elimina una `@` inicial antes de esta comprobación. Escriba un dominio desnudo, como `example.com`.

720 749 

721Antes de v2.1.232, el gateway se iniciaba con estos valores. Cada valor tenía este efecto:750Antes de v2.1.232, la puerta de enlace comenzaba con estos valores. Cada valor tenía este efecto:

722 751 

723* Un `email_domain` vacío: el gateway omitía la comprobación de dominio, por lo que una política con un `email_domain` vacío y sin lista `groups` coincidía con cada usuario autenticado752* Un `email_domain` vacío: la puerta de enlace omitía la comprobación de dominio, por lo que una política con un `email_domain` vacío y sin lista `groups` coincidía con todos los usuarios autenticados

724* Una lista `groups` vacía: la política no coincidía con nadie753* Una lista `groups` vacía: la política no coincidía con nadie

725* Un `email_domain` que contiene `@`, espacios en blanco o una coma: la política no coincidía con nadie754* Un `email_domain` que contiene `@`, espacios en blanco o una coma: la política no coincidía con nadie

726* Una entrada vacía en `groups` o en `admin_groups`: la entrada coincidía con un usuario solo cuando la reclamación `groups` del IdP de ese usuario también contenía una entrada vacía. En `admin_groups`, esa coincidencia otorgaba acceso administrativo. Si su lista `admin_groups` nunca contenía una entrada vacía, nadie obtenía acceso administrativo de esta manera.755* Una entrada vacía en `groups` o en `admin_groups`: la entrada coincidía con un usuario solo cuando la reclamación `groups` de IdP de ese usuario también contenía una entrada vacía. En `admin_groups`, esa coincidencia otorgaba acceso de administrador. Si su lista `admin_groups` nunca contenía una entrada vacía, nadie obtenía acceso de administrador de esta manera.

727 756 

728<h4 id="what-goes-in-cli">757<h4 id="what-goes-in-cli">

729 Qué va en `cli`758 Qué va en `cli`


731 760 

732Cada 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, en lugar de la configuración administrada por servidor. Por lo tanto, ignora la configuración [restringida a fuentes de política a nivel de SO](/docs/es/server-managed-settings#current-limitations), como `policyHelper` y `wslInheritsWindowsSettings`.761Cada 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, en lugar de la configuración administrada por servidor. Por lo tanto, ignora la configuración [restringida a fuentes de política a nivel de SO](/docs/es/server-managed-settings#current-limitations), como `policyHelper` y `wslInheritsWindowsSettings`.

733 762 

734El gateway valida cada documento contra el esquema de configuración del CLI al iniciar, por lo que una clave de nivel superior no reconocida falla al iniciar 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 del gateway no. Estas claves abiertas incluyen `env`, `pluginConfigs` y claves anidadas bajo `permissions`.763La 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 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 incluyen `env`, `pluginConfigs` y claves anidadas bajo `permissions`.

735 764 

736Debido a que la validación utiliza el esquema incluido con la versión instalada del gateway, 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 el gateway. Pruebe una nueva política en un cliente antes de implementarla.765Debido 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.

737 766 

738La referencia de clave completa está en [Configuración de Claude Code](/docs/es/settings-reference#all-settings). Las claves que los operadores buscan primero:767La referencia de clave completa está en [Configuración de Claude Code](/docs/es/settings-reference#all-settings). Las claves que los operadores buscan primero:

739 768 


742 policies:771 policies:

743 - match: {}772 - match: {}

744 cli:773 cli:

745 # Acceso a modelos (también aplicado en el lado del servidor en /v1/messages)774 # Acceso a modelos (también aplicado del lado del servidor en /v1/messages)

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

747 776 

748 # Política de permisos777 # Política de permisos


751 - "WebFetch"780 - "WebFetch"

752 - "Read(./.env)"781 - "Read(./.env)"

753 - "Read(./secrets/**)"782 - "Read(./secrets/**)"

754 disableBypassPermissionsMode: disable # blocks --dangerously-skip-permissions783 disableBypassPermissionsMode: disable # bloquea --dangerously-skip-permissions

755 allowManagedPermissionRulesOnly: true # ignore user/project permission rules784 allowManagedPermissionRulesOnly: true # ignora reglas de permisos de usuario/proyecto

756 785 

757 # Entorno insertado en el proceso CLI. DISABLE_UPDATES bloquea786 # Entorno insertado en el proceso CLI. DISABLE_UPDATES bloquea

758 # actualizaciones de fondo y manuales; DISABLE_AUTOUPDATER detiene solo787 # actualizaciones de fondo y manuales; DISABLE_AUTOUPDATER detiene solo

759 # actualizaciones de fondo.788 # actualizaciones de fondo.

760 env:789 env:

761 DISABLE_UPDATES: "1" # pin versions via your own distribution790 DISABLE_UPDATES: "1" # fijar versiones a través de su propia distribución

762 791 

763 # Hooks en toda la organización. Los comandos de hooks se ejecutan en máquinas de desarrolladores, no en el792 # Hooks de toda la organización. Los comandos de hook se ejecutan en máquinas de desarrollador, no en la

764 # gateway, por lo que la ruta debe existir en cada SO cliente en la política.793 # puerta de enlace, por lo que la ruta debe existir en cada SO cliente en la política.

765 hooks:794 hooks:

766 PostToolUse:795 PostToolUse:

767 - matcher: "Edit|Write"796 - matcher: "Edit|Write"


771 800 

772| Clave | Aplicada por | Efecto |801| Clave | Aplicada por | Efecto |

773| - | - | - |802| - | - | - |

774| `availableModels` | Gateway + CLI | Lista de permitidos de modelos. También se comprueba en `/v1/messages`, por lo que un cliente parcheado no puede omitirlo. |803| `availableModels` | Puerta de enlace + CLI | Lista de permitidos de modelos. También se comprueba en `/v1/messages`, por lo que un cliente parcheado no puede omitirlo. |

775| `permissions.allow` / `.deny` | CLI | Reglas de herramientas y comandos. Consulte [Permisos](/docs/es/permissions). |804| `permissions.allow` / `.deny` | CLI | Reglas de herramientas y comandos. Consulte [Permisos](/docs/es/permissions). |

776| `permissions.disableBypassPermissionsMode` | CLI | Establezca en `disable` para bloquear [`bypassPermissions`](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode), el modo que omite indicadores de permisos, y la bandera `--dangerously-skip-permissions` |805| `permissions.disableBypassPermissionsMode` | CLI | Establezca en `disable` para bloquear [`bypassPermissions`](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode), el modo que omite indicadores de permisos, y la bandera `--dangerously-skip-permissions` |

777| `allowManagedPermissionRulesOnly` | CLI | Cuando es `true`, la configuración administrada se convierte en la única fuente de configuración de reglas de permisos. La entrada [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) enumera cada fuente que Claude Code luego ignora. |806| `allowManagedPermissionRulesOnly` | CLI | Cuando es `true`, la configuración administrada se convierte en la única fuente de configuración de reglas de permisos. La entrada [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) enumera todas las fuentes que Claude Code luego ignora. |

778| `env` | CLI | Variables de entorno fusionadas en el proceso CLI. Utilice para telemetría, actualización automática y anulaciones de nombres de modelos. |807| `env` | CLI | Variables de entorno fusionadas en el proceso CLI. Úselo para telemetría, actualización automática y anulaciones de nombres de modelos. |

779| `hooks` | CLI | Hooks en toda la organización [hooks](/docs/es/hooks) |808| `hooks` | CLI | Hooks de toda la organización [hooks](/docs/es/hooks) |

780| `managedMcpServers` | CLI | Servidores MCP remotos [proporcionados a cada desarrollador coincidente](/docs/es/managed-mcp#provide-servers-through-managed-settings) junto con los servidores que agregan ellos mismos, solo `http` y `sse`. Consulte [Servidores MCP en una política](#mcp-servers-in-a-policy). Requiere Claude Code v2.1.259 o posterior en el servidor de gateway y en clientes. Los clientes anteriores ignoran la clave. |809| `managedMcpServers` | CLI | Servidores MCP remotos [proporcionados a cada desarrollador coincidente](/docs/es/managed-mcp#provide-servers-through-managed-settings) junto con los servidores que agregan ellos mismos, solo `http` y `sse`. Consulte [Servidores MCP en una política](#mcp-servers-in-a-policy). Requiere Claude Code v2.1.259 o posterior en el servidor de puerta de enlace y en clientes. Los clientes anteriores ignoran la clave. |

781 810 

782Debido 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 antes de aplicar la configuración enumerada a continuación:811Debido 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 antes de aplicar la configuración enumerada a continuación:

783 812 

784* `hooks`813* `hooks`

785* Variables `env` que requieren la aprobación del desarrollador, como variables de proxy y URL base814* Variables `env` que requieren la aprobación del desarrollador, como variables de proxy y URL base

786* configuraciones de ejecución de shell como `apiKeyHelper` y `statusLine`815* configuración de ejecución de shell como `apiKeyHelper` y `statusLine`

787* la configuración de binario de sandbox `sandbox.bwrapPath`, `sandbox.socatPath` y `sandbox.ripgrep`816* la configuración de binario de sandbox `sandbox.bwrapPath`, `sandbox.socatPath` y `sandbox.ripgrep`

788* Configuraciones de Sandbox que interceptan tráfico, inyectan credenciales o debilitan el aislamiento, como `sandbox.network.tlsTerminate` y la configuración del puerto proxy. [Diálogos de aprobación de seguridad](/docs/es/server-managed-settings#security-approval-dialogs) los enumera todos.817* Configuración de Sandbox que intercepta tráfico, inyecta credenciales o debilita el aislamiento, como `sandbox.network.tlsTerminate` y la configuración del puerto proxy. [Diálogos de aprobación de seguridad](/docs/es/server-managed-settings#security-approval-dialogs) los enumera todos.

789 818 

790[Memoria de aprobación](/docs/es/server-managed-settings#approval-memory) cubre cuánto tiempo dura una aprobación y cuándo aparece el diálogo nuevamente.819[Memoria de aprobación](/docs/es/server-managed-settings#approval-memory) cubre cuánto tiempo dura una aprobación y cuándo aparece el diálogo nuevamente.

791 820 

792Claude Code aplica algunas variables `env` entregadas sin mostrar al desarrollador el diálogo de aprobación, como configuraciones de selección de modelos y límites numéricos. Otras variables entregadas pueden requerir la aprobación del desarrollador antes de que surtan efecto; un valor de proxy, URL base u `OTEL_EXPORTER_OTLP_ENDPOINT` no vacío siempre lo hace. Cuando una variable entregada necesita aprobación, el diálogo la nombra.821Claude Code aplica algunas variables `env` entregadas sin mostrar al desarrollador el diálogo de aprobación de seguridad, como configuración de selección de modelos y límites numéricos. Otras variables entregadas pueden requerir la aprobación del desarrollador antes de que surtan efecto; un valor de proxy, URL base u `OTEL_EXPORTER_OTLP_ENDPOINT` no vacío siempre lo hace. Cuando una variable entregada necesita aprobación, el diálogo la nombra.

793 822 

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

795 824 

796La configuración de [telemetría](#telemetry) del gateway inserta `OTEL_EXPORTER_OTLP_ENDPOINT`, por lo que establecer `telemetry.forward_to` activa el diálogo en cada cliente interactivo. El diálogo protege la máquina del desarrollador de un gateway comprometido u hostil, no la organización del desarrollador.825La configuración de [telemetría](#telemetry) de la puerta de enlace inserta `OTEL_EXPORTER_OTLP_ENDPOINT`, por lo que establecer `telemetry.forward_to` activa el diálogo en cada cliente interactivo. El diálogo protege la máquina del desarrollador de una puerta de enlace comprometida u hostil, no la organización del desarrollador.

797 826 

798Una ejecución no interactiva con la bandera `-p` no puede mostrar el diálogo. Aplica la configuración insertada para esa ejecución solo y no la registra como aprobada, por lo que la próxima sesión interactiva del desarrollador aún muestra el diálogo. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada y ninguna sesión interactiva posterior mostraba el diálogo para ellas.827Una [ejecución no interactiva](/docs/es/server-managed-settings#security-approval-dialogs), como `claude -p` o una sesión de Agent SDK, no puede mostrar el diálogo. Aplica la configuración insertada para esa ejecución solo y no la registra como aprobada, por lo que la próxima sesión interactiva del desarrollador aún muestra el diálogo para ellas. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada y ninguna sesión interactiva posterior mostraba el diálogo para ellas.

799 828 

800Si un desarrollador rechaza, Claude Code sale de esa sesión en lugar de aplicar la política. Cuando inserta un nuevo hook, o cualquier variable env que active el diálogo, en una política amplia, Claude Code por lo tanto muestra el diálogo a cada desarrollador coincidente. Muestra el diálogo en una sesión en ejecución en la próxima encuesta cada hora, y de lo contrario en el próximo inicio del desarrollador.829Si un desarrollador rechaza, Claude Code sale de esa sesión en lugar de aplicar la política. Cuando inserta un nuevo hook, o cualquier variable env que active el diálogo, en una política amplia, cada desarrollador coincidente ve el diálogo en sus sesiones interactivas. Una sesión interactiva en ejecución lo muestra en la próxima encuesta cada hora, y de lo contrario aparece en el próximo inicio interactivo del desarrollador.

801 830 

802La clave `cli` se llamaba `settings` en versiones anteriores. Esa ortografía aún se acepta como un alias, pero las nuevas implementaciones deben usar `cli`.831La clave `cli` se llamaba `settings` en versiones anteriores. Esa ortografía aún se acepta como alias, pero las nuevas implementaciones deben usar `cli`.

803 832 

804<h4 id="mcp-servers-in-a-policy">833<h4 id="mcp-servers-in-a-policy">

805 Servidores MCP en una política834 Servidores MCP en una política

806</h4>835</h4>

807 836 

808Para proporcionar servidores MCP a los clientes de Claude Code que coincida una política, establezca [`managedMcpServers`](/docs/es/managed-mcp#provide-servers-through-managed-settings) en el bloque `cli` de esa política. Necesita Claude Code v2.1.259 o posterior en el servidor de gateway y en clientes.837Para proporcionar servidores MCP a los clientes de Claude Code que coincida una política, establezca [`managedMcpServers`](/docs/es/managed-mcp#provide-servers-through-managed-settings) en el bloque `cli` de esa política. Necesita Claude Code v2.1.259 o posterior en el servidor de puerta de enlace y en clientes.

809 838 

810El gateway comprueba cada entrada al iniciar con [las mismas reglas que Claude Code aplica en el cliente](/docs/es/managed-mcp#what-an-entry-can-contain), y si una entrada falla una comprobación, el gateway se niega a iniciar y nombra la entrada.839La puerta de enlace comprueba cada entrada al arrancar con [las mismas reglas que Claude Code aplica en el cliente](/docs/es/managed-mcp#what-an-entry-can-contain), y si una entrada falla una comprobación, la puerta de enlace se niega a iniciar y nombra la entrada.

811 840 

812Si escribe una referencia `${VAR}` en `gateway.yaml`, el gateway la resuelve desde su entorno al iniciar a través de [expansión de secretos](#secret-expansion) antes de ejecutar las comprobaciones de entrada, por lo que cada cliente coincidente recibe el valor literal y puede leerlo. La [orientación de encabezado para servidores proporcionados](/docs/es/managed-mcp#provide-servers-through-managed-settings) se aplica al valor expandido.841Si escribe una referencia `${VAR}` en `gateway.yaml`, la puerta de enlace la resuelve desde su entorno al arrancar a través de [expansión de secretos](#secret-expansion) antes de ejecutar las comprobaciones de entrada, por lo que cada cliente coincidente recibe el valor literal y puede leerlo. La [orientación de encabezado para servidores proporcionados](/docs/es/managed-mcp#provide-servers-through-managed-settings) se aplica al valor expandido.

813 842 

814El gateway rechaza la ortografía `.mcp.json` `mcpServers` en un bloque `cli`, y su error de inicio nombra `managedMcpServers` como la clave a usar. Antes de v2.1.259, el gateway rechazaba cualquier definición de servidor MCP en un bloque `cli`.843La puerta de enlace rechaza la ortografía `.mcp.json` `mcpServers` en un bloque `cli`, y su error de arranque nombra `managedMcpServers` como la clave a usar. Antes de v2.1.259, la puerta de enlace rechazaba cualquier definición de servidor MCP en un bloque `cli`.

815 844 

816<h4 id="claude-desktop-overlay">845<h4 id="claude-desktop-overlay">

817 Superposición de Claude Desktop846 Superposición de Claude Desktop

818</h4>847</h4>

819 848 

820Si su organización también implementa [Claude Desktop](/docs/es/desktop), el mismo gateway sirve a ambos clientes. Apunte `bootstrapUrl`, en la [configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop, a `<listen.public_url>/user/bootstrap`. Claude Desktop deriva el emisor de OAuth de esa URL, ejecuta el mismo inicio de sesión de código de dispositivo contra este gateway y obtiene su configuración de la respuesta.849Si su organización también implementa [Claude Desktop](/docs/es/desktop), la misma puerta de enlace sirve a ambos clientes. Apunte `bootstrapUrl`, en la [configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop, a `<listen.public_url>/user/bootstrap`. Claude Desktop deriva el emisor de OAuth de esa URL, ejecuta el mismo inicio de sesión de código de dispositivo contra esta puerta de enlace y obtiene su configuración de la respuesta.

821 850 

822<Note>851<Note>

823 Requiere Claude Code v2.1.203 o posterior en el servidor de gateway, y una opción explícita: `/user/bootstrap` devuelve 404 a menos que la política que coincida con el usuario lleve una clave `desktop`. Un `desktop: {}` vacío opta una política, y una clave `desktop` en la capa base `match: {}` opta en cada política que la hereda. El registro de auditoría registra cada solicitud como `desktop_bootstrap.serve` o `desktop_bootstrap.denied`.852 Requiere Claude Code v2.1.203 o posterior en el servidor de puerta de enlace, y una opción explícita: `/user/bootstrap` devuelve 404 a menos que la política que coincida con el usuario lleve una clave `desktop`. Un `desktop: {}` vacío opta una política, y una clave `desktop` en la capa base `match: {}` opta en cada política que la hereda. El registro de auditoría registra cada solicitud como `desktop_bootstrap.serve` o `desktop_bootstrap.denied`.

824</Note>853</Note>

825 854 

826El gateway deriva gran parte de la respuesta del bloque `cli` de la política coincidente y de la configuración del gateway de nivel superior:855La puerta de enlace deriva gran parte de la respuesta del bloque `cli` de la política coincidente y de la configuración de puerta de enlace de nivel superior:

827 856 

828* La lista de modelos, de `availableModels`857* La lista de modelos, de `availableModels`

829* Herramientas deshabilitadas, de entradas `permissions.deny` de nombre de herramienta desnudo. Si establece `disabledBuiltinTools` en el bloque `desktop` de la política, el gateway sirve la unión de su valor y la lista derivada, por lo que puede deshabilitar más herramientas de esta manera pero no puede volver a habilitar una que deshabilitó a través de `permissions.deny`858* Herramientas deshabilitadas, de entradas `permissions.deny` de nombre de herramienta desnuda. Si establece `disabledBuiltinTools` en el bloque `desktop` de la política, la puerta de enlace sirve la unión de su valor y la lista derivada, por lo que puede deshabilitar más herramientas de esta manera pero no puede volver a habilitar una que deshabilitó a través de `permissions.deny`

830* La lista de permitidos de salida, de `sandbox.network.allowedDomains`. Si establece `coworkEgressAllowedHosts` en el bloque `desktop` de la política, el gateway usa ese valor en lugar de la lista derivada859* La lista de permitidos de salida, de `sandbox.network.allowedDomains`. Si establece `coworkEgressAllowedHosts` en el bloque `desktop` de la política, la puerta de enlace usa ese valor en lugar de la lista derivada

831* Un punto final OTLP que apunta al gateway mismo, y los atributos de identidad del usuario conectado. El gateway retransmite las exportaciones que recibe en ese punto final a sus destinos `forward_to`. Incluye el punto final y los atributos cuando establece tanto [`telemetry.forward_to`](#telemetry) como `listen.public_url`.860* Un punto final OTLP que apunta a la puerta de enlace en sí, y los atributos de identidad del usuario conectado. La puerta de enlace retransmite las exportaciones que recibe en ese punto final a sus destinos `forward_to`. Incluye el punto final y los atributos cuando establece tanto [`telemetry.forward_to`](#telemetry) como `listen.public_url`.

832 861 

833 Claude Desktop exporta cada señal con una codificación: `http/protobuf`, o `http/json` cuando establece `OTEL_EXPORTER_OTLP_PROTOCOL` o uno de sus variantes por señal en `http/json` en el `env` de la política. Antes de Claude Code v2.1.261 en el servidor de gateway, la respuesta establecía `http/json` independientemente, por lo que un recopilador que acepta solo protobuf rechazaba las exportaciones de Claude Desktop862 Claude Desktop exporta cada señal con una codificación: `http/protobuf`, o `http/json` cuando establece `OTEL_EXPORTER_OTLP_PROTOCOL` o una de sus variantes por señal en `http/json` en el `env` de la política. Antes de Claude Code v2.1.261 en el servidor de puerta de enlace, la respuesta establecía `http/json` independientemente, por lo que un recopilador que acepta solo protobuf rechazaba las exportaciones de Claude Desktop

834 863 

835Para establecer `disabledBuiltinTools`, `coworkEgressAllowedHosts` o la configuración `managedMcpServers` propia de Claude Desktop en el bloque `desktop` de una política, necesita Claude Code v2.1.232 o posterior en el servidor de gateway. El `managedMcpServers` de Claude Desktop toma un valor de array en lugar de un objeto.864Para establecer `disabledBuiltinTools`, `coworkEgressAllowedHosts` o la configuración `managedMcpServers` propia de Claude Desktop en el bloque `desktop` de una política, necesita Claude Code v2.1.232 o posterior en el servidor de puerta de enlace. El `managedMcpServers` de Claude Desktop toma un valor de array en lugar de un objeto.

836 865 

837El gateway omite claves sin equivalente de Claude Desktop, como `hooks` y reglas de permisos con alcance como `Bash(npm *)`, de la respuesta de bootstrap.866La puerta de enlace omite claves sin equivalente de Claude Desktop, como `hooks` y reglas de permisos con alcance como `Bash(npm *)`, de la respuesta de arranque.

838 867 

839Agregue el bloque `desktop` opcional junto a `cli` para establecer la configuración de Claude Desktop directamente. Escriba la configuración de la [referencia de configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop como nombres de clave planos. Deje fuera las claves que Claude Desktop lee solo de MDM o archivos locales, como `bootstrapUrl`; el gateway las rechaza al iniciar. Antes de v2.1.232, el gateway aceptaba una lista fija de 11 claves de puerta de características, como `chatTabEnabled` y `disableAutoUpdates`, y rechazaba todas las demás claves al iniciar. Antes de v2.1.227, el gateway también rechazaba `chatTabEnabled` y `chatAdvancedFileAnalysisEnabled` al iniciar.868Agregue el bloque `desktop` opcional junto a `cli` para establecer la configuración de Claude Desktop directamente. Escriba la configuración de la [referencia de configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop como nombres de clave planos. Deje fuera las claves que Claude Desktop lee solo de MDM o archivos locales, como `bootstrapUrl`; la puerta de enlace las rechaza al arrancar. Antes de v2.1.232, la puerta de enlace aceptaba una lista fija de 11 claves de puerta de características, como `chatTabEnabled` y `disableAutoUpdates`, y rechazaba todas las demás claves al arrancar. Antes de v2.1.227, la puerta de enlace también rechazaba `chatTabEnabled` y `chatAdvancedFileAnalysisEnabled` al arrancar.

840 869 

841```yaml theme={null}870```yaml theme={null}

842managed:871managed:


850 banner: { text: "Contractor build: internal use only" }879 banner: { text: "Contractor build: internal use only" }

851```880```

852 881 

853Cada clave es opcional; Claude Desktop aplica su propio valor predeterminado para cualquier clave que omita. El gateway valida cada bloque `desktop` al iniciar contra el esquema de configuración que el propio Claude Desktop usa, por lo que un error aparece al inicio del gateway como un error que nombra la clave en lugar de llegar a cada desktop conectado. El gateway falla al iniciar cuando un bloque contiene:882Cada clave es opcional; Claude Desktop aplica su propio valor predeterminado para cualquier clave que omita. La puerta de enlace valida cada bloque `desktop` al arrancar contra el esquema de configuración que Claude Desktop usa, por lo que un error aparece al inicio de la puerta de enlace como un error que nombra la clave en lugar de llegar a cada escritorio conectado. La puerta de enlace falla al arrancar cuando un bloque contiene:

854 883 

855* Una clave desconocida884* Una clave desconocida

856* Una clave reconocida cuyo valor Claude Desktop rechazaría o dejaría caer silenciosamente, como un valor vacío o una subclave mal escrita dentro de una entrada anidada. Antes de v2.1.260, el gateway dejaba caer silenciosamente un campo mal escrito dentro de un objeto anidado de una entrada `managedMcpServers` u `orgPluginSettings` en lugar de fallar al iniciar.885* Una clave reconocida cuyo valor Claude Desktop rechazaría o dejaría caer silenciosamente, como un valor vacío o una subclave mal escrita dentro de una entrada anidada. Antes de v2.1.260, la puerta de enlace dejaba caer silenciosamente un campo mal escrito dentro de un objeto anidado de una entrada `managedMcpServers` u `orgPluginSettings` en lugar de fallar al arrancar.

857* Una clave que el gateway calcula a sí mismo: la conexión de inferencia, la lista de modelos y el relé OTLP. Configure esos a través de [`upstreams`](#upstreams), [`models`](#models) y la sección [`telemetry`](#telemetry) de `forward_to`.886* Una clave que la puerta de enlace calcula en sí: la conexión de inferencia, la lista de modelos y el relé OTLP. Configure esos a través de [`upstreams`](#upstreams), [`models`](#models) y la sección [`telemetry`](#telemetry) de `forward_to`.

858* Un alias heredado de una clave actual. En el error de inicio, el gateway nombra la clave canónica a escribir.887* Un alias heredado de una clave actual. En el error de arranque, la puerta de enlace nombra la clave canónica a escribir.

888 

889Si usa un valor o forma de entrada obsoleta, como una entrada `managedMcpServers` sin `transport`, la puerta de enlace se inicia y registra una advertencia que nombra el reemplazo.

859 890 

860Si utiliza un valor o forma de entrada obsoleta, como una entrada `managedMcpServers` sin `transport`, el gateway se inicia y registra una advertencia que nombra el reemplazo.891La puerta de enlace valida un bloque `desktop` contra el esquema incluido con su versión instalada, como lo hace con el bloque `cli`. Para entregar una configuración introducida por una versión más nueva de Claude Desktop, actualice primero la puerta de enlace. Por ejemplo, `userPluginMarketplacesEnabled` y `userPluginUploadsEnabled` necesitan Claude Code v2.1.260 o posterior en el servidor de puerta de enlace y Claude Desktop 1.37937.0 o posterior en las máquinas de los miembros.

861 892 

862El gateway valida un bloque `desktop` contra el esquema incluido con su versión instalada, como lo hace con el bloque `cli`. Para entregar una configuración introducida por una versión más nueva de Claude Desktop, actualice primero el gateway. Por ejemplo, `userPluginMarketplacesEnabled` y `userPluginUploadsEnabled` necesitan Claude Code v2.1.260 o posterior en el servidor de gateway y Claude Desktop 1.37937.0 o posterior en las máquinas de los miembros.893`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes` y `sshClientPath` necesitan Claude Code v2.1.281 o posterior en el servidor de puerta de enlace. También lo hace el valor `required` de `microsoftAuthBroker` y el campo `continuousAccessEvaluation` de una entrada `managedMcpServers` de Microsoft 365. Los lanzamientos de Claude Desktop que preceden al valor `required` lo leen como `disabled`, así que establezca `required` solo después de que cada miembro de Claude Desktop lo admita. La [referencia de configuración administrada](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop enumera el lanzamiento que primero lee cada clave.

863 894 

864Si establece `orgPluginSettings` en el bloque `desktop` de una política, el gateway lo sirve en la forma de array que Claude Desktop 1.15200.0 y posterior lee. Los desktops más antiguos ignoran el array y no aplican ninguna política de herramientas de plugins, por lo que actualice a los miembros a 1.15200.0 o posterior antes de confiar en ello.895Si establece `orgPluginSettings` en el bloque `desktop` de una política, la puerta de enlace lo sirve en la forma de array que Claude Desktop 1.15200.0 y posterior leen. Los escritorios más antiguos ignoran el array y no aplican ninguna política de herramientas de complemento, así que actualice los miembros a 1.15200.0 o posterior antes de confiar en ello.

865 896 

866El gateway rellena las claves que el bloque `desktop` de una política no establece desde el bloque `desktop` de la captura general `match: {}`, de la misma manera que rellena el bloque `cli` de una política desde la base. Si establece `disabledBuiltinTools` o `builtinToolPolicy` en la base y una política de rol, el gateway mantiene la restricción de la base:897La puerta de enlace rellena las claves que el bloque `desktop` de una política no establece desde el bloque `desktop` de la captura general `match: {}`, de la misma manera que rellena el bloque `cli` de una política desde la base. Si establece `disabledBuiltinTools` o `builtinToolPolicy` en la base y una política de rol, la puerta de enlace mantiene la restricción de la base:

867 898 

868* `disabledBuiltinTools`: el gateway usa la unión de la lista de la base y la lista de la política899* `disabledBuiltinTools`: la puerta de enlace usa la unión de la lista de la base y la lista de la política

869* `builtinToolPolicy`: si establece una herramienta en un valor distinto de `allow` en la base, el gateway mantiene ese valor incluso si establece `allow` para la misma herramienta en una política de rol900* `builtinToolPolicy`: si establece una herramienta en un valor distinto de `allow` en la base, la puerta de enlace mantiene ese valor incluso si establece `allow` para la misma herramienta en una política de rol

870 901 

871Para todas las demás claves, si las establece en la política de rol, el gateway usa el valor de la política de rol. El gateway reemplaza un array o un objeto anidado como `banner` completo, por lo que si establece `banner.text` en una política de rol, el gateway descarta el `banner.backgroundColor` de la base.902Para todas las demás claves, si las establece en la política de rol, la puerta de enlace usa el valor de la política de rol. La puerta de enlace reemplaza un array o un objeto anidado como `banner` completo, por lo que si establece `banner.text` en una política de rol, la puerta de enlace descarta el `banner.backgroundColor` de la base.

872 903 

873Si no implementa Claude Desktop, deje `desktop` completamente fuera de sus políticas; el gateway luego devuelve 404 desde `/user/bootstrap` para cada usuario.904Si no implementa Claude Desktop, deje `desktop` completamente fuera de sus políticas; la puerta de enlace luego devuelve 404 desde `/user/bootstrap` para cada usuario.

874 905 

875<h4 id="precedence-with-other-managed-sources">906<h4 id="precedence-with-other-managed-sources">

876 Precedencia con otras fuentes administradas907 Precedencia con otras fuentes administradas

877</h4>908</h4>

878 909 

879Si un dispositivo también tiene una política entregada por MDM o un `managed-settings.json` local, la configuración entregada por gateway ocupa el primer lugar. [Precedencia dentro del nivel administrado](/docs/es/managed-settings#precedence-within-the-managed-tier) en la página de configuraciones administradas dice cuándo se aplican las fuentes locales, y tiene las [claves que Claude Code lee de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source) independientemente de qué fuente seleccionó, como las claves de bloqueo de sandbox, `forceRemoteSettingsRefresh` y el `env` por variable. Un [`policyHelper`](/docs/es/settings-reference#policyhelper) configurado en un perfil MDM o el archivo de configuraciones administradas se ejecuta solo cuando el gateway no entrega configuraciones; la entrada dice qué reemplaza su salida.910Si un dispositivo también tiene una política entregada por MDM o un `managed-settings.json` local, la configuración entregada por puerta de enlace ocupa el primer lugar. [Precedencia dentro del nivel administrado](/docs/es/managed-settings#precedence-within-the-managed-tier) en la página de configuración administrada dice cuándo se aplican las fuentes locales, y tiene las [claves que Claude Code lee de todas las fuentes de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source) independientemente de cuál fuente seleccione, como las claves de bloqueo de sandbox, `forceRemoteSettingsRefresh` y el `env` por variable fusionado. Un [`policyHelper`](/docs/es/settings-reference#policyhelper) configurado en un perfil MDM o el archivo de configuración administrada se ejecuta solo cuando la puerta de enlace no entrega configuración; la entrada dice qué reemplaza su salida.

880 911 

881Los hosts de incrustación como [Claude Desktop](/docs/es/desktop) pueden suministrar política a través de la opción SDK `managedSettings`. [Configuraciones principales de hosts de incrustación](/docs/es/managed-settings#parent-settings-from-embedding-hosts) dice cuándo Claude Code la aplica, y [Restringir configuraciones principales](/docs/es/claude-apps-gateway#restrict-parent-settings) enumera qué configuraciones de dirección de permitidos aún se aplican sin los bloqueos `allowManaged*Only`.912Los hosts de incrustación como [Claude Desktop](/docs/es/desktop) pueden suministrar política a través de la opción `managedSettings` del SDK. [Configuración de padres de hosts de incrustación](/docs/es/managed-settings#parent-settings-from-embedding-hosts) dice cuándo Claude Code la aplica, y [Restringir configuración de padres](/docs/es/claude-apps-gateway#restrict-parent-settings) enumera qué configuración de dirección de permitidos aún se aplica sin los bloqueos `allowManaged*Only`.

882 913 

883Las políticas de gateway 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 de Agent. Si el gateway es inaccesible al iniciar, las sesiones conectadas salen con un error en lugar de ejecutarse sin su política.914Las 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 Agent SDK. Si la puerta de enlace es inaccesible al inicio, las sesiones conectadas salen con un error en lugar de ejecutarse sin su política.

884 915 

885<h3 id="telemetry">916<h3 id="telemetry">

886 `telemetry`917 `telemetry`

887</h3>918</h3>

888 919 

889El CLI envía métricas, registros y, cuando está habilitado, trazas al gateway, que las retransmite textualmente a cada destino configurado. Las exportaciones utilizan OpenTelemetry Protocol (OTLP) sobre HTTP. Para omitir el relé y hacer que las sesiones exporten directamente a su recopilador, [nombre el recopilador en una política](#export-directly-to-your-collector). Consulte [Monitoreo de uso](/docs/es/monitoring-usage) para las métricas y eventos que emite el CLI.920El CLI envía métricas, registros y, cuando está habilitado, trazas a la puerta de enlace, que las retransmite textualmente a cada destino configurado. Las exportaciones utilizan OpenTelemetry Protocol (OTLP) sobre HTTP. Para omitir el relé y hacer que las sesiones exporten directamente a su recopilador, [nombre el recopilador en una política](#export-directly-to-your-collector). Consulte [Monitoreo de uso](/docs/es/monitoring-usage) para las métricas y eventos que emite el CLI.

890 921 

891El CLI marca cada exportación con la identidad del usuario autenticado, leída del JWT emitido por el gateway: los atributos `user.id`, `user.email` y `user.groups`. La atribución de costo y uso por desarrollador funciona sin configuración en el lado del desarrollador.922En sesiones conectadas a través de `/login`, el 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.

892 923 

893[Claude Desktop](#claude-desktop-overlay) y las sesiones de Cowork conectadas a través del gateway marcan su telemetría con `user.email` y `user.groups` junto a `enduser.id`, por lo que puede cubrir el uso de terminal, Desktop y Cowork con una consulta en `user.email` o `user.groups`. `user.groups` es la lista de grupos de IdP separada por comas.924Las sesiones de [Claude Desktop](#claude-desktop-overlay) y Cowork conectadas a través de la puerta de enlace marcan su telemetría con `user.email` y `user.groups` junto a `enduser.id`, por lo que puede cubrir el uso de terminal, Desktop y Cowork con una consulta en `user.email` o `user.groups`. `user.groups` es la lista de grupos de IdP separada por comas.

894 925 

895La telemetría de Desktop y Cowork también lleva `enduser.sub`, la reclamación `sub` que su proveedor de identidades emite para el usuario, que permanece igual cuando cambia el correo electrónico de un usuario. Las sesiones de terminal marcan el mismo valor bajo `user.id`, por lo que una consulta que coincida con `enduser.sub` contra `user.id` de terminal cubre el uso de terminal, Desktop y Cowork de un usuario junto. En las exportaciones de Desktop y Cowork, `user.id` es un identificador anónimo, no el sujeto.926La telemetría de Desktop y Cowork también lleva `enduser.sub`, la reclamación `sub` que su proveedor de identidad emite para el usuario, que permanece igual cuando cambia el correo electrónico de un usuario. Las sesiones de terminal marcan el mismo valor bajo `user.id`, por lo que una consulta que coincida `enduser.sub` contra `user.id` de terminal cubre el uso de terminal, Desktop y Cowork de un usuario junto. En las exportaciones de Desktop y Cowork, `user.id` es un identificador anónimo, no el sujeto.

896 927 

897Como todos los datos de OpenTelemetry de Claude Code, estos atributos van solo a destinos que su organización configura, nunca a Anthropic.928Como todos los datos de OpenTelemetry de Claude Code, estos atributos van solo a destinos que su organización configura, nunca a Anthropic.

898 929 

899Si la lista de grupos de un usuario es más larga que 255 caracteres una vez codificada en porcentaje, o un nombre de grupo contiene una coma o un signo igual, el gateway deja `user.groups` fuera de la telemetría de Desktop y Cowork de ese usuario en lugar de truncarla. Las sesiones de terminal de ese usuario aún llevan la lista completa.930Si la lista de grupos de un usuario es más larga que 255 caracteres una vez codificada en porcentaje, o un nombre de grupo contiene una coma o un signo igual, la puerta de enlace deja `user.groups` fuera de la telemetría de Desktop y Cowork de ese usuario en lugar de truncarla. Las sesiones de terminal de ese usuario aún llevan la lista completa.

900 931 

901El gateway deja `enduser.sub` cuando el sujeto es más largo que 255 caracteres una vez codificado en porcentaje, o contiene un espacio, un carácter fuera de ASCII imprimible, o uno de `,` `;` `=` `\` `"` `%`. La telemetría de Desktop y Cowork de ese usuario mantiene sus otros atributos.932La puerta de enlace deja `enduser.sub` fuera cuando el sujeto es más largo que 255 caracteres una vez codificado en porcentaje, o contiene un espacio, un carácter fuera de ASCII imprimible, o uno de `,` `;` `=` `\` `"` `%`. La telemetría de Desktop y Cowork de ese usuario mantiene sus otros atributos.

902 933 

903Necesita Claude Code v2.1.265 o posterior en el servidor de gateway para `user.email` y `user.groups` en la telemetría de Desktop y Cowork, y Claude Desktop 1.24012 o posterior en la máquina de cada desarrollador para `user.groups`.934Necesita Claude Code v2.1.265 o posterior en el servidor de puerta de enlace para `user.email` y `user.groups` en telemetría de Desktop y Cowork, y Claude Desktop 1.24012 o posterior en la máquina de cada desarrollador para `user.groups`.

904 935 

905Necesita Claude Code v2.1.274 o posterior en el servidor de gateway para `enduser.sub`.936Necesita Claude Code v2.1.274 o posterior en el servidor de puerta de enlace para `enduser.sub`.

906 937 

907```yaml theme={null}938```yaml theme={null}

908telemetry:939telemetry:


910 - url: https://otel-collector.internal.example.com941 - url: https://otel-collector.internal.example.com

911 headers:942 headers:

912 Authorization: ${OTLP_TOKEN}943 Authorization: ${OTLP_TOKEN}

913 # Opción por señal. Predeterminado: solo métricas.944 # Opción de participación por señal. Predeterminado: solo métricas.

914 metrics: true945 metrics: true

915 logs: false946 logs: false

916 traces: false947 traces: false


928 Habilite registros y trazas solo en destinos con los controles de acceso y la política de retención que esos datos justifican.959 Habilite registros y trazas solo en destinos con los controles de acceso y la política de retención que esos datos justifican.

929</Warning>960</Warning>

930 961 

931Cada URL `forward_to` debe usar `https://`, con una excepción para un recopilador en la interfaz de loopback del gateway:962Cada URL `forward_to` debe usar `https://`, con una excepción para un recopilador en la interfaz de bucle de retorno de la puerta de enlace:

932 963 

933* `http://localhost:<port>` pasa la validación de configuración, pero la [guardia SSRF](/docs/es/claude-apps-gateway-deploy#threat-model-summary) bloquea cada exportación con `ECONNREFUSED_SSRF` a menos que establezca `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` en el entorno del gateway964* `http://localhost:<port>` pasa la validación de configuración, pero la [protección SSRF](/docs/es/claude-apps-gateway-deploy#threat-model-summary) bloquea cada exportación con `ECONNREFUSED_SSRF` a menos que establezca `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` en el entorno de la puerta de enlace

934* `http://127.0.0.1:<port>` o `http://[::1]:<port>` falla al iniciar a menos que esa variable esté establecida965* `http://127.0.0.1:<port>` o `http://[::1]:<port>` falla al arrancar a menos que esa variable esté establecida

935 966 

936Para un recopilador en el clúster, expóngalo sobre HTTPS en su propia dirección interna, o ejecútelo como un sidecar con la variable establecida.967Para un recopilador en clúster, expóngalo sobre HTTPS en su propia dirección interna, o ejecútelo como un sidecar con la variable establecida.

937 968 

938Cuando `HTTPS_PROXY` está establecido, el gateway envía exportaciones a través de ese proxy.969Cuando se establece `HTTPS_PROXY`, la puerta de enlace envía exportaciones a través de ese proxy.

939 970 

940Para llegar a un recopilador interno directamente, agréguelo a `NO_PROXY` por nombre de host o por un dominio con un punto inicial como `.internal.example.com`, que requiere Claude Code v2.1.277 o posterior en el servidor de gateway. Asegúrese de que el gateway pueda llegar al recopilador sin el proxy. Una entrada sin un punto inicial coincide solo con ese nombre exacto, no con nombres bajo él. Los rangos CIDR no coinciden.971Para llegar a un recopilador interno directamente, agréguelo a `NO_PROXY` por nombre de host o por un dominio con un punto inicial como `.internal.example.com`, que requiere Claude Code v2.1.277 o posterior en el servidor de puerta de enlace. Asegúrese de que la puerta de enlace pueda llegar al recopilador sin el proxy. Una entrada sin un punto inicial coincide solo con ese nombre exacto, no con nombres bajo él. Los rangos CIDR no coinciden.

941 972 

942Con [salida solo proxy](#proxy-only-egress) activada, permita el recopilador en el proxy en su lugar, ya que cualquier entrada `NO_PROXY` mantiene la salida solo proxy desactivada.973Con [salida solo proxy](#proxy-only-egress) activada, permita el recopilador en el proxy en su lugar, ya que cualquier entrada `NO_PROXY` mantiene la salida solo proxy desactivada.

943 974 

944La telemetría está desactivada en el CLI de forma predeterminada. Cuando establece tanto `telemetry.forward_to` como `listen.public_url`, el gateway la activa para clientes conectados insertando seis variables de entorno a través de `/managed/settings`:975La telemetría está desactivada en el CLI de forma predeterminada. Cuando establece tanto `telemetry.forward_to` como `listen.public_url`, la puerta de enlace la activa para clientes conectados insertando seis variables de entorno a través de `/managed/settings`:

945 976 

946* `CLAUDE_CODE_ENABLE_TELEMETRY=1`977* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

947* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` y `OTEL_TRACES_EXPORTER`, cada uno establecido en `otlp` si al menos un destino `forward_to` habilita esa señal y en `none` de lo contrario978* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` y `OTEL_TRACES_EXPORTER`, cada uno establecido en `otlp` si al menos un destino `forward_to` habilita esa señal y en `none` de lo contrario

948* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`979* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

949* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`980* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`

950 981 

951Cuando agrega [sus propias etiquetas](#add-your-own-labels), el gateway también inserta `OTEL_RESOURCE_ATTRIBUTES`.982Cuando [agrega sus propias etiquetas](#add-your-own-labels), la puerta de enlace también inserta `OTEL_RESOURCE_ATTRIBUTES`.

952 983 

953Antes de Claude Code v2.1.265 en el servidor de gateway, el gateway insertaba los tres selectores de exportador como `otlp`, incluido para señales que ningún destino optó.984Antes de Claude Code v2.1.265 en el servidor de puerta de enlace, la puerta de enlace insertaba los tres selectores de exportador como `otlp`, incluido para señales que ningún destino optó.

954 985 

955El punto final insertado 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.986El punto final insertado 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.

956 987 

957Los desarrolladores conectados a través de `/login` no pueden redirigir exportaciones con su propia configuración OTEL:988Los desarrolladores conectados a través de `/login` no pueden redirigir exportaciones con su propia configuración OTEL:

958 989 

959* **Variables establecidas localmente**: Claude Code aplica las variables insertadas en el nivel administrado, por lo que cada una anula el valor que un desarrollador establece localmente.990* **Variables establecidas localmente**: Claude Code aplica las variables insertadas en el nivel administrado, por lo que cada una anula el valor que un desarrollador establece localmente.

960* **Puntos finales configurados localmente**: con la exportación OTLP/HTTP habilitada, el CLI ignora cualquier punto final configurado localmente, independientemente de si el gateway insertó las variables de telemetría. Sus exportaciones van al gateway a menos que una política [nombre su recopilador como punto final](#export-directly-to-your-collector).991* **Puntos finales configurados localmente**: con exportación OTLP/HTTP habilitada, el CLI ignora cualquier punto final configurado localmente, independientemente de si la puerta de enlace insertó las variables de telemetría. Sus exportaciones van a la puerta de enlace a menos que una política [nombre su recopilador como punto final](#export-directly-to-your-collector).

961 992 

962Sin un destino `forward_to` para una señal, el gateway la acepta y la descarta. Si los desarrolladores ya exportan telemetría de Claude Code a uno de sus recopiladores, agréguelo como destino `forward_to`, con registros o trazas habilitadas si exportan esos, para que continúe recibiendo sus datos después de que se conecten. Para omitir el relé en su lugar, [nombre el recopilador en una política](#export-directly-to-your-collector).993Sin un destino `forward_to` para una señal, la puerta de enlace la acepta y la descarta. Si los desarrolladores ya exportan telemetría de Claude Code a uno de sus recopiladores, agréguelo como destino `forward_to`, con registros o trazas habilitadas si exportan esos, para que continúe recibiendo sus datos después de que se conecten. Para omitir el relé en su lugar, [nombre el recopilador en una política](#export-directly-to-your-collector).

963 994 

964[Trazas](/docs/es/monitoring-usage#traces-beta) también requieren `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` en cada cliente. Establézcalo en el bloque `env` de una política administrada, ya que el gateway no lo inserta. Los desarrolladores lo aprueban en el mismo [diálogo de aprobación de seguridad](#managed) que el punto final insertado ya activa.995[Trazas](/docs/es/monitoring-usage#traces-beta) también requieren `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` en cada cliente. Establézcalo en un bloque `env` de política administrada, ya que la puerta de enlace no lo inserta. Los desarrolladores lo aprueban en el mismo [diálogo de aprobación de seguridad](#managed) que el punto final insertado ya activa.

965 996 

966Establézcalo en `1` solo en las políticas cuyos grupos desea rastrear. Una política que no lo establece hereda el valor de su política de captura general `match: {}` si esa política establece uno, según las [reglas de fusión](#managed). Para evitar que los clientes de un grupo envíen trazas incluso cuando un desarrollador establece la variable localmente, establézcala en `0` en la política de ese grupo.997Establézcalo en `1` solo en las políticas cuyos grupos desea rastrear. Una política que no lo establece hereda el valor de su política de captura general `match: {}` si esa política establece uno, según las [reglas de fusión](#managed). Para evitar que los clientes de un grupo envíen trazas incluso cuando un desarrollador establece la variable localmente, establézcala en `0` en la política de ese grupo.

967 998 

968Tanto las codificaciones OTLP de protobuf como JSON se retransmiten, y cualquier backend compatible con OpenTelemetry funciona como destino.999Tanto las codificaciones OTLP de protobuf como JSON se retransmiten, y cualquier backend compatible con OpenTelemetry funciona como destino.

969 1000 

970<h4 id="add-your-own-labels">1001<h4 id="add-your-own-labels">

971 Agregar sus propias etiquetas1002 Agregue sus propias etiquetas

972</h4>1003</h4>

973 1004 

974Para poner etiquetas fijas como `service.namespace` o `deployment.environment.name` en la telemetría de sesiones conectadas a través del gateway, establezca `telemetry.resource_attributes`. Cada etiqueta es un atributo de recurso de OpenTelemetry, y cada destino recibe las mismas etiquetas.1005Para poner etiquetas fijas como `service.namespace` o `deployment.environment.name` en la telemetría de sesiones conectadas a través de la puerta de enlace, establezca `telemetry.resource_attributes`. Cada etiqueta es un atributo de recurso de OpenTelemetry, y cada destino recibe las mismas etiquetas.

975 1006 

976Las sesiones obtienen las etiquetas solo cuando también establece `telemetry.forward_to` y `listen.public_url`. Este ejemplo agrega dos etiquetas:1007Las sesiones obtienen las etiquetas solo cuando también establece `telemetry.forward_to` y `listen.public_url`. Este ejemplo agrega dos etiquetas:

977 1008 


984 deployment.environment.name: prod1015 deployment.environment.name: prod

985```1016```

986 1017 

987El gateway se niega a iniciar cuando una etiqueta rompe una de estas reglas, y el error de inicio nombra la etiqueta:1018La puerta de enlace se niega a iniciar cuando una etiqueta rompe una de estas reglas, y el error de inicio nombra la etiqueta:

988 1019 

989* Los nombres usan solo letras, dígitos, `.`, `_` y `-`1020* Los nombres usan solo letras, dígitos, `.`, `_` y `-`

990* Los nombres no están reservados. Comparados en cualquier caso de letra, los nombres reservados son todo lo que comienza con `user.`, `enduser.` o `identity.`, más `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version` y `wsl.version`1021* Los nombres no están reservados. Comparados en cualquier caso de letra, los nombres reservados son todo lo que comienza con `user.`, `enduser.` o `identity.`, más `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version` y `wsl.version`

991* Los valores son ASCII imprimible no vacío sin espacio y ninguno de `, ; = \ " %`1022* Los valores son ASCII imprimible no vacío sin espacio y ninguno de `, ; = \ " %`

992* Los valores tienen como máximo 255 caracteres tal como los cuenta el gateway después de la codificación en porcentaje, por lo que `/`, `:` y `@` cada uno cuentan como tres1023* Los valores tienen como máximo 255 caracteres según los cuenta la puerta de enlace después de la codificación en porcentaje, por lo que `/`, `:` y `@` cada uno cuentan como tres

993* Los valores son texto, por lo que cite un número, `true` o `false`1024* Los valores son texto, así que cite un número, `true` o `false`

994 1025 

995Necesita Claude Code v2.1.281 o posterior en el servidor de gateway para establecer `telemetry.resource_attributes`. Un gateway anterior se niega a iniciar cuando encuentra la clave. Actualice cada réplica antes de agregar la clave y elimine la clave antes de revertir a una versión anterior.1026Necesita Claude Code v2.1.281 o posterior en el servidor de puerta de enlace para establecer `telemetry.resource_attributes`. Una puerta de enlace anterior se niega a iniciar cuando encuentra la clave. Actualice cada réplica antes de agregar la clave, y elimine la clave antes de revertir a una versión anterior.

996 1027 

997Las sesiones de terminal conectadas a través de `/login` reciben las etiquetas como `OTEL_RESOURCE_ATTRIBUTES`, insertadas con las otras [variables de telemetría](#telemetry). Si establece `OTEL_RESOURCE_ATTRIBUTES` en el bloque `env` de una política, las sesiones de terminal que esa política coincide obtienen ese valor en lugar de las etiquetas. Claude Desktop recibe las etiquetas del gateway junto a `user.email` y los otros atributos de identidad.1028Las sesiones de terminal conectadas a través de `/login` reciben las etiquetas como `OTEL_RESOURCE_ATTRIBUTES`, insertadas con las otras [variables de telemetría](#telemetry). Si establece `OTEL_RESOURCE_ATTRIBUTES` en un bloque `env` de política, las sesiones de terminal que esa política coincida obtienen ese valor en lugar de las etiquetas. Claude Desktop recibe las etiquetas de la puerta de enlace junto a `user.email` y los otros atributos de identidad.

998 1029 

999Claude Code también copia cada etiqueta en cada punto de datos de métrica, por lo que puede filtrar métricas por ella en un backend que no indexa atributos de recurso. Para desactivar esa copia, consulte [Control de cardinalidad de métricas](/docs/es/monitoring-usage#metrics-cardinality-control).1030Claude Code también copia cada etiqueta en cada punto de datos de métrica, por lo que puede filtrar métricas por ella en un backend que no indexe atributos de recurso. Para desactivar esa copia, consulte [Control de cardinalidad de métricas](/docs/es/monitoring-usage#metrics-cardinality-control).

1000 1031 

1001<h4 id="export-directly-to-your-collector">1032<h4 id="export-directly-to-your-collector">

1002 Exportar directamente a su recopilador1033 Exportar directamente a su recopilador


1004 1035 

1005Para hacer que las sesiones conectadas a través de `/login` envíen telemetría directamente a su recopilador en lugar de a través del relé, establezca `OTEL_EXPORTER_OTLP_ENDPOINT` en la URL base `https://` del recopilador en el bloque `env` de una [política administrada](#managed). Claude Code añade `/v1/metrics`, `/v1/logs` o `/v1/traces` a la URL que establece, como `https://otel-collector.example.com:4318`, y exporta cada señal allí sobre OTLP/HTTP. Requiere Claude Code v2.1.265 o posterior en la máquina de cada desarrollador. Los clientes anteriores exportan a través del relé.1036Para hacer que las sesiones conectadas a través de `/login` envíen telemetría directamente a su recopilador en lugar de a través del relé, establezca `OTEL_EXPORTER_OTLP_ENDPOINT` en la URL base `https://` del recopilador en el bloque `env` de una [política administrada](#managed). Claude Code añade `/v1/metrics`, `/v1/logs` o `/v1/traces` a la URL que establece, como `https://otel-collector.example.com:4318`, y exporta cada señal allí sobre OTLP/HTTP. Requiere Claude Code v2.1.265 o posterior en la máquina de cada desarrollador. Los clientes anteriores exportan a través del relé.

1006 1037 

1007Para autenticarse en el recopilador, establezca `OTEL_EXPORTER_OTLP_HEADERS` en el mismo bloque `env`. Las sesiones nunca envían el token de sesión de gateway del desarrollador a un recopilador nombrado de esta manera.1038Para autenticarse en el recopilador, establezca `OTEL_EXPORTER_OTLP_HEADERS` en el mismo bloque `env`. Las sesiones nunca envían el token de sesión de puerta de enlace del desarrollador a un recopilador nombrado de esta manera.

1008 1039 

1009Cuando agrega o cambia este punto final en una política, Claude Code pide a cada desarrollador que lo apruebe en el [diálogo de aprobación de seguridad](#managed) antes de aplicarlo en una sesión interactiva.1040Cuando agrega o cambia este punto final en una política, Claude Code pide a cada desarrollador que lo apruebe en el [diálogo de aprobación de seguridad](#managed) antes de aplicarlo en una sesión interactiva.

1010 1041 

1011Claude Code comprueba el punto final antes de exportar una señal directamente, y mantiene esa señal en el relé cuando una comprobación falla. Las comprobaciones incluyen:1042Claude Code comprueba el punto final antes de exportar una señal directamente, y mantiene esa señal en el relé cuando una comprobación falla. Las comprobaciones incluyen:

1012 1043 

1013* El punto final proviene del gateway mismo. Si establece la misma variable en un perfil MDM o un `managed-settings.json` local, las exportaciones permanecen en el relé.1044* El punto final proviene de la puerta de enlace en sí. Si establece la misma variable en un perfil MDM o un `managed-settings.json` local, las exportaciones permanecen en el relé.

1014* La URL usa `https://`, o `http://` a una dirección de loopback1045* La URL usa `https://`, o `http://` a una dirección de bucle de retorno

1015* La URL se resuelve en una ruta que termina en `/v1/<signal>`, sin consulta o fragmento. Claude Code construye esa ruta a sí mismo desde la variable genérica. Utiliza una variable por señal como `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` tal como está escrita, por lo que incluya la ruta completa allí.1046* La URL se resuelve en una ruta que termina en `/v1/<signal>`, sin consulta o fragmento. Claude Code construye esa ruta en sí desde la variable genérica. Usa una variable por señal como `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` tal como está escrita, así que incluye la ruta completa allí.

1016* La URL no es el host del gateway. Un punto final dirigido al gateway mantiene la ruta de relé y su token de sesión.1047* La URL no es el host de la puerta de enlace. Un punto final dirigido a la puerta de enlace mantiene la ruta de relé y su token de sesión.

1017* Ni usted ni el desarrollador han configurado [`otelHeadersHelper`](/docs/es/settings-reference#otelheadershelper) en ninguna fuente de configuración. Con un ayudante configurado, cada señal permanece en el relé.1048* Ni usted ni el desarrollador han configurado [`otelHeadersHelper`](/docs/es/settings-reference#otelheadershelper) en ninguna fuente de configuración. Con un ayudante configurado, cada señal permanece en el relé.

1018 1049 

1019El punto final que nombra cambia solo dónde van las exportaciones. Aún elige qué señales exportan en absoluto con los selectores `OTEL_*_EXPORTER`.1050El punto final que nombra cambia solo dónde van las exportaciones. Aún elige qué señales exportan en absoluto con los selectores `OTEL_*_EXPORTER`.

1020 1051 

1021El punto final solo no activa la exportación, por lo que también establezca las variables que lo hacen, a menos que el gateway ya las inserte:1052El punto final solo no activa la exportación, así que también establezca las variables que lo hacen, a menos que la puerta de enlace ya las inserte:

1022 1053 

1023* Si el gateway ya [inserta las variables de telemetría](#telemetry), cubren habilitación, selectores y protocolo, y su punto final explícito anula el valor `<public_url>` insertado. Establezca un selector `OTEL_*_EXPORTER` en `otlp` usted mismo solo para una señal que ningún destino `forward_to` habilita.1054* Si la puerta de enlace ya [inserta las variables de telemetría](#telemetry), cubren habilitación, selectores y protocolo, y su punto final explícito anula el valor `<public_url>` insertado. Establezca un selector `OTEL_*_EXPORTER` en `otlp` usted mismo solo para una señal que ningún destino `forward_to` habilita.

1024* Si no, también establezca `CLAUDE_CODE_ENABLE_TELEMETRY=1`, los selectores `OTEL_*_EXPORTER` y `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.1055* Si no, también establezca `CLAUDE_CODE_ENABLE_TELEMETRY=1`, los selectores `OTEL_*_EXPORTER` y `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.

1025 1056 

1026Cuando el desarrollador se desconecta, o se conecta a un gateway diferente, las exportaciones al recopilador se detienen y Claude Code descarta cada lote restante en lugar de enviarlo.1057Cuando el desarrollador se desconecta, o se conecta a una puerta de enlace diferente, las exportaciones al recopilador se detienen y Claude Code descarta cada lote restante en lugar de enviarlo.

1027 1058 

1028<h4 id="when-a-destination-fails">1059<h4 id="when-a-destination-fails">

1029 Cuando un destino falla1060 Cuando un destino falla

1030</h4>1061</h4>

1031 1062 

1032El gateway no almacena en búfer, reintenta ni almacena telemetría, por lo que descarta una exportación que no llega a un destino en lugar de entregarla tarde. Cada destino tiene éxito o falla por su cuenta, y el cliente exportador recibe una respuesta de éxito de cualquier manera, por lo que una entrega fallida aparece solo en el registro del gateway.1063La puerta de enlace no almacena en búfer, reintenta ni almacena telemetría, por lo que descarta una exportación que no llega a un destino en lugar de entregarla tarde. Cada destino tiene éxito o falla por su cuenta, y el cliente exportador recibe una respuesta de éxito de cualquier manera, por lo que una entrega fallida aparece solo en el registro de la puerta de enlace.

1033 1064 

1034Después de cinco entregas consecutivas fallidas a un destino, el gateway pausa el reenvío a él en tramos de 30 segundos, registrando cada pausa, hasta que una entrega tiene éxito. Cualquier respuesta de error, tiempo de espera o error de conexión cuenta como una entrega fallida, excepto `400`, `413`, `415`, `422` y `431`, que significan que el recopilador rechazó la carga útil de esa exportación como mal formada o demasiado grande.1065Después de cinco entregas consecutivas fallidas a un destino, la puerta de enlace pausa el reenvío a él en tramos de 30 segundos, registrando cada pausa, hasta que una entrega tiene éxito. Cualquier respuesta de error, tiempo de espera o error de conexión cuenta como una entrega fallida, excepto `400`, `413`, `415`, `422` y `431`, que significan que el recopilador rechazó la carga útil de esa exportación como mal formada o demasiado grande.

1035 1066 

1036Una carga útil rechazada ni avanza ni reinicia el contador de fallos: el gateway continúa reenviando al destino y registra una advertencia que lo nombra y el estado, en el primer rechazo del destino y cada centésimo después.1067Una carga útil rechazada ni avanza ni reinicia el contador de fallos: la puerta de enlace continúa reenviando al destino y registra una advertencia que lo nombra y el estado, en el primer rechazo del destino y cada centésimo después.

1037 1068 

1038<h3 id="http-tuning">1069<h3 id="http-tuning">

1039 Ajuste HTTP1070 Ajuste HTTP


1043 1074 

1044| Bloque | Clave | Predeterminado | Descripción |1075| Bloque | Clave | Predeterminado | Descripción |

1045| - | - | - | - |1076| - | - | - | - |

1046| `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 comprueba primero; un cliente que coincida se rechaza incluso si `allow_cidrs` también coincide. Si `allow_cidrs` no está vacío, el gateway es denegación predeterminada. `/healthz` y `/readyz` están exentos de `allow_cidrs`. Cuando un proxy de confianza envía una entrada `X-Forwarded-For` que no es una dirección IP, el cliente real es desconocido y el gateway registra una advertencia una vez nombrando qué verificar. Donde se aplica cualquiera de las listas a la solicitud, la rechaza con `403` y razón de auditoría `xff_unparseable`. Donde ninguno lo hace, sirve la solicitud y usa la dirección del proxy como dirección IP del cliente para límites de velocidad por IP y auditoría. |1077| `access_control` | `allow_cidrs` / `deny_cidrs` | vacío | Entrada IP permitida/denegada por dirección de cliente, después de la resolución de `trusted_proxies`. `deny_cidrs` se comprueba 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 denegación predeterminada. `/healthz` y `/readyz` están exentos de `allow_cidrs`. Cuando un proxy de confianza envía una entrada `X-Forwarded-For` que no es una dirección IP, el cliente real es desconocido y la puerta de enlace registra una advertencia una vez nombrando qué verificar. Donde se aplica cualquiera de las listas a la solicitud, la rechaza con `403` y razón de auditoría `xff_unparseable`. Donde ninguno lo hace, sirve la solicitud y usa la dirección del proxy como dirección IP del cliente para límites de velocidad por IP y auditoría. |

1047| `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. |1078| `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. |

1048| `limits` | `max_request_header_bytes` | sin establecer | Cuando se establece, los encabezados de tamaño excesivo devuelven `431` |1079| `limits` | `max_request_header_bytes` | sin establecer | Cuando se establece, los encabezados de tamaño excesivo devuelven `431` |

1049| `limits` | `max_url_length` | sin establecer | Cuando se establece, una URL demasiado larga devuelve `414` |1080| `limits` | `max_url_length` | sin establecer | Cuando se establece, una URL demasiado larga devuelve `414` |

1050| `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; en todos los demás proveedores, el gateway espera hasta una hora a que comience la respuesta. |1081| `timeouts` | `upstream_ttfb_ms` | 120000 | Espera máxima para los encabezados de respuesta ascendentes (tiempo al 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; en todos los demás proveedores, la puerta de enlace espera hasta una hora a que comience la respuesta. |

1051| `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 dirección IP de salida compartida o NAT. [Implementaciones grandes](/docs/es/claude-apps-gateway-deploy#large-rollouts) muestra cómo dimensionarlo. Estos límites se aplican solo al flujo de inicio de sesión de concesión de dispositivo, no a la inferencia `/v1/messages`. Consulte [Resistencia de fuerza bruta de código de usuario](/docs/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1082| `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. [Implementaciones grandes](/docs/es/claude-apps-gateway-deploy#large-rollouts) muestra cómo dimensionarlo. Estos límites se aplican solo al flujo de inicio de sesión de concesión de dispositivo, no a la inferencia `/v1/messages`. Consulte [Resistencia de fuerza bruta de código de usuario](/docs/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

1052| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Límite de velocidad por IP en envíos de `user_code` en `/device`. Es lo que detiene a alguien de adivinar el código de otro desarrollador. [Implementaciones grandes](/docs/es/claude-apps-gateway-deploy#large-rollouts) muestra cuánto aumentarlo. |1083| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Límite de velocidad por IP en envíos de `user_code` en `/device`. Es lo que detiene a alguien de adivinar el código de otro desarrollador. [Implementaciones grandes](/docs/es/claude-apps-gateway-deploy#large-rollouts) muestra cuánto levantarlo. |

1053 1084 

1054Si deja ambas listas `access_control` vacías, que es el valor predeterminado, el gateway sirve cualquier dirección de cliente, por lo que solo su red restringe quién puede alcanzarlo. Eso importa porque un gateway puede insertar [configuraciones administradas](#managed) que ejecutan comandos en máquinas de desarrolladores.1085Si deja ambas listas `access_control` vacías, que es el valor predeterminado, la puerta de enlace sirve cualquier dirección de cliente, por lo que solo su red restringe quién puede alcanzarla. Eso importa porque una puerta de enlace puede insertar [configuración administrada](#managed) que ejecuta comandos en máquinas de desarrollador.

1055 1086 

1056Mientras `allow_cidrs` esté vacío, el gateway advierte en dos lugares, sin cambiar cómo responde a ninguna solicitud:1087Mientras `allow_cidrs` está vacío, la puerta de enlace advierte en dos lugares, sin cambiar cómo responde a ninguna solicitud:

1057 1088 

1058* **Al iniciar**: una advertencia en el registro operacional recomienda permitir solo los rangos privados `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` y `fc00::/7`, más cualquier otro rango interno desde el que se conectan sus desarrolladores. Si vincula el gateway a una dirección de loopback y no establece ni `trusted_proxies` ni `public_url`, como en desarrollo local, la advertencia no aparece.1089* **Al arrancar**: una advertencia en el registro operativo recomienda permitir solo los rangos privados `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` y `fc00::/7`, más cualquier otro rango interno desde el que se conectan sus desarrolladores. Si vincula la puerta de enlace a una dirección de bucle de retorno y no establece ni `trusted_proxies` ni `public_url`, como en desarrollo local, la advertencia no aparece.

1059* **En tiempo de ejecución**: la primera vez que llega una solicitud desde una dirección fuera de esos rangos privados, el gateway registra una advertencia y emite un evento de auditoría [`access.public_client`](/docs/es/claude-apps-gateway-deploy#logs) que lleva la dirección IP del cliente. Ambos se disparan una vez por proceso. Las direcciones de enlace local, `169.254.0.0/16` y `fe80::/10`, no cuentan como públicas. El gateway responde `/healthz` y `/readyz` antes de que se ejecute esta comprobación, por lo que los sondeos de salud desde rangos públicos no la activan.1090* **En tiempo de ejecución**: la primera vez que una solicitud llega desde una dirección fuera de esos rangos privados, la puerta de enlace registra una advertencia y emite un evento de auditoría [`access.public_client`](/docs/es/claude-apps-gateway-deploy#logs) que lleva la IP del cliente. Ambos se disparan una vez por proceso. Las direcciones de enlace local, `169.254.0.0/16` y `fe80::/10`, no cuentan como públicas. La puerta de enlace responde `/healthz` y `/readyz` antes de que se ejecute esta comprobación, por lo que los sondeos de salud desde rangos públicos no la activan.

1060 1091 

1061Ambas señales utilizan la dirección del cliente tal como la resuelve el gateway. Si un equilibrador de carga, reenvío de puerto o túnel retransmite tráfico y no está enumerado en `listen.trusted_proxies`, el gateway ve la dirección del relé, que generalmente es privada, por lo que ni la advertencia en tiempo de ejecución ni una lista de permitidos privada lo detecta.1092Ambas señales usan la dirección del cliente tal como la resuelve la puerta de enlace. Si un equilibrador de carga, reenvío de puerto o túnel retransmite tráfico y no está enumerado en `listen.trusted_proxies`, la puerta de enlace ve la dirección del relé, que generalmente es privada, por lo que ni la advertencia en tiempo de ejecución ni una lista de permitidos privada lo detecta.

1062 1093 

1063Detrás de tal front end, establezca primero [`listen.trusted_proxies`](#listen) para que el gateway vea direcciones de cliente reales, y mantenga el gateway y todo lo que está frente a él inaccesible desde la internet pública independientemente.1094Detrás de tal front-end, establezca primero [`listen.trusted_proxies`](#listen) para que la puerta de enlace vea direcciones de cliente reales, y mantenga la puerta de enlace y todo lo que está frente a ella inaccesible desde la internet pública de cualquier manera.

1064 1095 

1065<h3 id="load_test_mode">1096<h3 id="load_test_mode">

1066 `load_test_mode`1097 `load_test_mode`

1067</h3>1098</h3>

1068 1099 

1069El bloque `load_test_mode` le permite hacer pruebas de carga en un gateway sin llamar a un proveedor de modelos. Mientras está activado, el gateway construye y firma cada solicitud de proveedor como de costumbre, la descarta en lugar de enviarla, y transmite una respuesta enlatada a través de su ruta de respuesta normal. La respuesta es texto de relleno que comienza con una oración que dice que es enlatada.1100El bloque `load_test_mode` le permite hacer pruebas de carga en una puerta de enlace sin llamar a un proveedor de modelos. Mientras está activado, la puerta de enlace construye y firma cada solicitud de proveedor como de costumbre, la descarta en lugar de enviarla, y transmite una respuesta enlatada a través de su ruta de respuesta normal. La respuesta es texto de relleno que comienza con una oración que dice que es enlatada.

1070 1101 

1071Requiere Claude Code v2.1.282 o posterior en el servidor de gateway. Las versiones anteriores se niegan a iniciar cuando encuentran la clave. Actualice cada réplica antes de agregar el bloque y elimine el bloque antes de revertir.1102Requiere Claude Code v2.1.282 o posterior en el servidor de puerta de enlace. Una puerta de enlace anterior se niega a iniciar cuando encuentra la clave. Actualice cada réplica antes de agregar el bloque, y elimine el bloque antes de revertir.

1072 1103 

1073El ejemplo a continuación activa el modo con los valores predeterminados, una respuesta de aproximadamente 750 tokens de texto transmitida durante aproximadamente 10 segundos:1104El ejemplo a continuación activa el modo con los valores predeterminados, una respuesta de aproximadamente 750 tokens de texto transmitida durante aproximadamente 10 segundos:

1074 1105 

1075```yaml theme={null}1106```yaml theme={null}

1076load_test_mode:1107load_test_mode:

1077 enabled: true1108 enabled: true

1078 reply_tokens: 750 # roughly how many tokens of text each canned reply carries1109 reply_tokens: 750 # aproximadamente cuántos tokens de texto lleva cada respuesta enlatada

1079 reply_seconds: 9.5 # how long a streamed reply takes1110 reply_seconds: 9.5 # cuánto tiempo tarda una respuesta transmitida

1080```1111```

1081 1112 

1082| Campo | Requerido | Descripción |1113| Campo | Requerido | Descripción |

1083| - | - | - |1114| - | - | - |

1084| `enabled` | Sí | `true` activa el modo. `false` mantiene sus números en el archivo con el modo desactivado. El gateway se niega a iniciar si el bloque está presente sin él. |1115| `enabled` | Sí | `true` activa el modo. `false` mantiene sus números en el archivo con el modo desactivado. La puerta de enlace se niega a iniciar si el bloque está presente sin él. |

1085| `reply_tokens` | No | Predeterminado `750`. Aproximadamente cuántos tokens de texto lleva cada respuesta enlatada, un número entero de 1 a 100000. |1116| `reply_tokens` | No | Predeterminado `750`. Aproximadamente cuántos tokens de texto lleva cada respuesta enlatada, un número entero de 1 a 100000. |

1086| `reply_seconds` | No | Predeterminado `9.5`. Cuánto tiempo tarda una respuesta transmitida, de 0 a 600. `0` envía toda la respuesta a la vez. Una respuesta a una solicitud sin transmisión siempre vuelve a la vez. |1117| `reply_seconds` | No | Predeterminado `9.5`. Cuánto tiempo tarda una respuesta transmitida, de 0 a 600. `0` envía toda la respuesta a la vez. Una respuesta a una solicitud sin transmisión siempre vuelve a la vez. |

1087 1118 

1088Una prueba de carga en este modo cubre el gateway, su Postgres y todo lo que está frente al gateway. No cubre los límites, velocidad o ruta de red del proveedor.1119Una prueba de carga en este modo cubre la puerta de enlace, su Postgres y todo lo que está frente a la puerta de enlace. No cubre los límites, velocidad o ruta de red del proveedor.

1089 1120 

1090Ninguna solicitud de modelo se envía al proveedor, por lo que la CPU de una réplica por solicitud es una estimación y se lee más baja que la producción, que también cifra su tráfico al proveedor. Confirme un recuento de réplica con un pequeño piloto contra el proveedor real. Antes de v2.1.283, la estimación se lee mucho más baja.1121No se envía ninguna solicitud de modelo al proveedor, por lo que la CPU de una réplica por solicitud es una estimación y se lee más baja que la producción, que también cifra su tráfico al proveedor. Confirme un recuento de réplica con un pequeño piloto contra el proveedor real. Antes de v2.1.283, la estimación se lee mucho más baja.

1091 1122 

1092Mientras el modo está activado, una solicitud puede llevar un encabezado `x-load-test-user` que contenga un número entero de hasta siete dígitos. El gateway cuenta cada número como un desarrollador separado, con el correo electrónico y grupos del desarrollador cuyo token vino con la solicitud.1123Mientras el modo está activado, una solicitud puede llevar un encabezado `x-load-test-user` que contenga un número entero de hasta siete dígitos. La puerta de enlace cuenta cada número como un desarrollador separado, con el correo electrónico y los grupos del desarrollador cuyo token vino con la solicitud.

1093 1124 

1094Asigne a la implementación de prueba de carga su propia base de datos vacía, porque el gateway se niega a iniciar con el modo activado contra una base de datos en la que algún desarrollador ya ha gastado algo.1125Asigne a la implementación de prueba de carga su propia base de datos vacía, porque la puerta de enlace se niega a iniciar con el modo activado contra una base de datos en la que algún desarrollador ya ha gastado algo.

1095 1126 

1096<Warning>1127<Warning>

1097 Nunca active esto para un gateway que los desarrolladores usan. Cada solicitud obtiene la respuesta enlatada y ningún modelo se llama. El gateway registra una advertencia `load_test_mode is on` al iniciar y marca cada evento de auditoría [`inference`](/docs/es/claude-apps-gateway-deploy#logs) con `load_test: true` mientras el modo está activado.1128 Nunca active esto para una puerta de enlace que los desarrolladores usan. Cada solicitud obtiene la respuesta enlatada y ningún modelo se llama. La puerta de enlace registra una advertencia `load_test_mode is on` al arrancar y marca cada evento de auditoría [`inference`](/docs/es/claude-apps-gateway-deploy#logs) con `load_test: true` mientras el modo está activado.

1098</Warning>1129</Warning>

1099 1130 

1100<h2 id="complete-example">1131<h2 id="complete-example">

Details

303| - | - | - |303| - | - | - |

304| Inferencia (indicaciones, finalizaciones) | CLI → puerta de enlace → su ascendente | Solo si la API de Anthropic es un ascendente configurado |304| Inferencia (indicaciones, finalizaciones) | CLI → puerta de enlace → su ascendente | Solo si la API de Anthropic es un ascendente configurado |

305| Telemetría (métricas OTLP, más [registros y trazas opcionales](/docs/es/claude-apps-gateway-config#telemetry)) | CLI → puerta de enlace → su recopilador | Nunca |305| Telemetría (métricas OTLP, más [registros y trazas opcionales](/docs/es/claude-apps-gateway-config#telemetry)) | CLI → puerta de enlace → su recopilador | Nunca |

306| Identidad (correo electrónico, grupos, sub) | IdP → puerta de enlace → JWT → CLI; el CLI lo marca en exportaciones OTLP. Si activa [`forward_user_identity`](/docs/es/claude-apps-gateway-config#per-user-identity-headers-for-a-proxy-you-run), la puerta de enlace también envía el correo electrónico del desarrollador y el asunto de IdP como encabezados a su proxy | Nunca |306| Identidad (correo electrónico, grupos, sub) | IdP → puerta de enlace → CLI; el CLI lo marca en exportaciones OTLP. Si activa [`forward_user_identity`](/docs/es/claude-apps-gateway-config#per-user-identity-headers-for-a-proxy-you-run), la puerta de enlace también envía el correo electrónico del desarrollador y el asunto de IdP como encabezados a su proxy | Nunca |

307| Configuraciones administradas | Su YAML de puerta de enlace → CLI | Nunca |307| Configuraciones administradas | Su YAML de puerta de enlace → CLI | Nunca |

308| Registro de auditoría | Stderr de puerta de enlace → su agregador | Nunca |308| Registro de auditoría | Stderr de puerta de enlace → su agregador | Nunca |

309 309 

Details

516 Telemetría516 Telemetría

517</h2>517</h2>

518 518 

519El gateway le proporciona métricas de uso por desarrollador sin ninguna configuración de OTEL por máquina. Claude Code emite métricas, registros y trazas de OpenTelemetry (OTLP) opcionales; [Monitoreo de uso](/docs/es/monitoring-usage) cubre todo lo que el CLI reporta. En sesiones de gateway el CLI marca cada exportación con los atributos de identidad del IdP autenticado `user.id`, `user.email` y `user.groups`, por lo que el uso se acumula por desarrollador sin ningún cableado de `OTEL_RESOURCE_ATTRIBUTES`.519El gateway le proporciona métricas de uso por desarrollador sin ninguna configuración de OTEL por máquina. Claude Code emite métricas, registros y trazas de OpenTelemetry (OTLP) opcionales; [Monitoreo de uso](/docs/es/monitoring-usage) cubre todo lo que el CLI reporta. En sesiones iniciadas a través de `/login`, el CLI marca cada exportación con los atributos de identidad del IdP autenticado `user.id`, `user.email` y `user.groups`, por lo que el uso se acumula por desarrollador.

520 520 

521El gateway en sí es un relé OTLP autenticado. Establezca [`telemetry.forward_to`](/docs/es/claude-apps-gateway-config#telemetry) junto con `listen.public_url`, e inserta la configuración del exportador OTEL en cada cliente conectado y reenvía su tráfico OTLP verbatim a cada destino que enumere. Cada destino se suscribe a métricas, registros y trazas de forma independiente, y el predeterminado es solo métricas; consulte la [referencia `telemetry`](/docs/es/claude-apps-gateway-config#telemetry) para los campos por señal y sus compromisos de sensibilidad. El gateway no almacena en búfer, agrega ni almacena telemetría, por lo que dónde aterrizan los datos es enteramente la configuración del exportador del recopilador.521El gateway en sí es un relé OTLP autenticado. Establezca [`telemetry.forward_to`](/docs/es/claude-apps-gateway-config#telemetry) junto con `listen.public_url`, e inserta la configuración del exportador OTEL en cada cliente conectado y reenvía su tráfico OTLP verbatim a cada destino que enumere. Cada destino se suscribe a métricas, registros y trazas de forma independiente, y el predeterminado es solo métricas; consulte la [referencia `telemetry`](/docs/es/claude-apps-gateway-config#telemetry) para los campos por señal y sus compromisos de sensibilidad. El gateway no almacena en búfer, agrega ni almacena telemetría, por lo que dónde aterrizan los datos es enteramente la configuración del exportador del recopilador.

522 522 

Details

150* El directorio debe ser un repositorio de git con al menos una confirmación150* El directorio debe ser un repositorio de git con al menos una confirmación

151* El repositorio agrupado debe ser menor de 100 MB. Los repositorios más grandes se replieguen a agrupar solo la rama actual, luego a una instantánea única comprimida del árbol de trabajo, y fallan solo si la instantánea aún es demasiado grande151* El repositorio agrupado debe ser menor de 100 MB. Los repositorios más grandes se replieguen a agrupar solo la rama actual, luego a una instantánea única comprimida del árbol de trabajo, y fallan solo si la instantánea aún es demasiado grande

152* Los archivos sin rastrear no se incluyen; ejecute `git add` en archivos que desea que la sesión en la nube vea152* Los archivos sin rastrear no se incluyen; ejecute `git add` en archivos que desea que la sesión en la nube vea

153* En macOS, Linux y WSL, Claude Code rechaza la carga cuando no puede seguir una configuración de git que afecta qué reglas de atributos se aplican a sus archivos, como `core.attributesFile` establecido en un archivo de configuración incluido. El [mensaje de rechazo](/docs/es/errors#the-repository-upload-cant-follow-a-git-setting) nombra la configuración y la solución

153* Las sesiones creadas desde un paquete pueden insertar de vuelta a un remoto de GitHub solo cuando su [conexión de GitHub](#github-authentication-options) tiene acceso de inserción a ese repositorio154* Las sesiones creadas desde un paquete pueden insertar de vuelta a un remoto de GitHub solo cuando su [conexión de GitHub](#github-authentication-options) tiene acceso de inserción a ese repositorio

154 155 

155<h3 id="send-follow-ups-from-the-cli">156<h3 id="send-follow-ups-from-the-cli">

Details

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

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

1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins/loading#synced-plugins) que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar. Los archivos permanecen aquí para que pueda recuperarlos hasta que el barrido los elimine |1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins/loading#synced-plugins) que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar. Los archivos permanecen aquí para que pueda recuperarlos hasta que el barrido los elimine |

1572| `plugins/installed_plugins.set-aside.<date>.<hash>.json`, `plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Copias fechadas que Claude Code realiza antes de reescribir [`installed_plugins.json`](/docs/es/plugins/loading#find-plugins-on-disk): registros de instalación que eliminó, y el contenido de un archivo que no podía leer. |

1572| `todos/`, `statsig/`, `logs/` | Directorios heredados de versiones anteriores. Ya no se escriben. El barrido elimina su contenido y luego el directorio vacío. |1573| `todos/`, `statsig/`, `logs/` | Directorios heredados de versiones anteriores. Ya no se escriben. El barrido elimina su contenido y luego el directorio vacío. |

1573 1574 

1574Los archivos de sesión en `sessions/`, memoria automática, y transcripciones de Claude Desktop y Cowork cada uno sigue su propia regla de retención:1575Los archivos de sesión en `sessions/`, memoria automática, y transcripciones de Claude Desktop y Cowork cada uno sigue su propia regla de retención:


1715| `~/.claude/policy-limits.json` | Nada. Se actualiza automáticamente. |1716| `~/.claude/policy-limits.json` | Nada. Se actualiza automáticamente. |

1716| `~/.claude/tasks/` | Listas de tareas que una sesión reanudada recogería |1717| `~/.claude/tasks/` | Listas de tareas que una sesión reanudada recogería |

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

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

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

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

1720 1722 

claude-projects.md +25 −11

Details

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

81 81 

82* **Desde cero**, cuando sabes el flujo de trabajo que deseas que ejecute Claude: abre el diálogo **New project** y nómbralo. [Comienza un nuevo proyecto desde cero](#start-a-new-project-from-scratch) te guía a través del diálogo.82* **Desde cero**, cuando sabes el flujo de trabajo que deseas que ejecute Claude: abre el diálogo **New project** y nómbralo. [Comienza un nuevo proyecto desde cero](#start-a-new-project-from-scratch) te guía a través del diálogo.

83* **Desde una sesión en la nube que ya está haciendo el trabajo**: elige **Continue as a project** del menú de esa sesión, y Claude propone la configuración del proyecto a partir de lo que la sesión estaba haciendo. Ver [Comenzar desde una sesión en la nube existente](#start-from-an-existing-cloud-session).83* **Desde una sesión en la nube que ya está haciendo el trabajo**: elige **Continue as project** del menú de esa sesión, y Claude propone la configuración del proyecto a partir de lo que la sesión estaba haciendo. Ver [Comenzar desde una sesión en la nube existente](#start-from-an-existing-cloud-session).

84 84 

85De cualquier forma, [verifica los requisitos previos](#check-the-prerequisites) primero.85De cualquier forma, [verifica los requisitos previos](#check-the-prerequisites) primero.

86 86 


131 Comienza desde una sesión en la nube existente131 Comienza desde una sesión en la nube existente

132</h3>132</h3>

133 133 

134Si ya tienes una sesión en la nube haciendo trabajo que pertenece a un proyecto, abre el menú de la sesión en la barra lateral y elige **Continue as a project** o **Move to project**:134Si ya tienes una sesión en la nube haciendo trabajo que pertenece a un proyecto, abre el menú de la sesión en la barra lateral y elige **Continue as project** o **Move to project**:

135 135 

136* **Continue as a project** crea un nuevo proyecto nombrado después de la sesión y lo abre. Claude lee la sesión y publica **Setup recommendations** en la conversación para que confirmes. La sesión original permanece en tu lista de sesiones, y si estaba en medio de un turno sigue ejecutándose, así que detenla tú mismo si no deseas que ambas trabajen a la vez. Si usas el banner **Set up project** que puede aparecer arriba del cuadro de mensaje de la sesión en la nube, el resultado es el mismo, excepto que el turno en ejecución de la sesión se detiene una vez que se abre el proyecto.136* **Continue as project** crea un nuevo proyecto nombrado después de la sesión y lo abre. Claude lee la sesión y publica **Setup recommendations** en la conversación para que confirmes. La sesión original permanece en tu lista de sesiones, y si estaba en medio de un turno sigue ejecutándose, así que detenla tú mismo si no deseas que ambas trabajen a la vez. Si usas el banner **Set up project** que puede aparecer arriba del cuadro de mensaje de la sesión en la nube, el resultado es el mismo, excepto que el turno en ejecución de la sesión se detiene una vez que se abre el proyecto.

137* **Move to project** trae el trabajo de la sesión a un proyecto existente. Publica un mensaje en la conversación de ese proyecto pidiéndole a Claude que lea la sesión y continúe desde donde se quedó, y el nuevo trabajo continúa en los propios hilos del proyecto. La sesión original permanece en tu lista de sesiones, sin cambios.137* **Move to project** trae el trabajo de la sesión a un proyecto existente. Publica un mensaje en la conversación de ese proyecto pidiéndole a Claude que lea la sesión y continúe desde donde se quedó, y el nuevo trabajo continúa en los propios hilos del proyecto. La sesión original permanece en tu lista de sesiones, sin cambios.

138 138 

139Una sesión local no tiene estas opciones. Para continuar su trabajo en un proyecto, describe el trabajo en la conversación del proyecto, o envía su rama, agrega ese repositorio al proyecto, y nombra la rama en la tarea.

140 

139<h3 id="set-up-github-access">141<h3 id="set-up-github-access">

140 Configurar acceso a GitHub142 Configurar acceso a GitHub

141</h3>143</h3>


275 277 

276Los hilos se ejecutan en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) cuando el modelo del hilo lo admite, por lo que la mayoría de las llamadas de herramientas se ejecutan sin pedirle. Cuando un hilo necesita su aprobación, el aviso está dentro de ese hilo y el hilo espera hasta que responda allí. Decirle a Claude en la conversación del proyecto que continúe no lo alcanza.278Los hilos se ejecutan en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) cuando el modelo del hilo lo admite, por lo que la mayoría de las llamadas de herramientas se ejecutan sin pedirle. Cuando un hilo necesita su aprobación, el aviso está dentro de ese hilo y el hilo espera hasta que responda allí. Decirle a Claude en la conversación del proyecto que continúe no lo alcanza.

277 279 

278Cada aprobación cubre ese aviso, o el resto de ese hilo si elige la opción más amplia. Para permitir que cada hilo ejecute ciertos comandos sin preguntar, o para bloquear algunos, agregue [reglas de permiso](/docs/es/permissions) al `.claude/settings.json` del repositorio. Los hilos en la nube las aplican solo en un proyecto con un repositorio; vea [Qué recogen los hilos de sus repositorios](#what-threads-pick-up-from-your-repositories).280Cada aprobación cubre ese aviso, o el resto de ese hilo si elige la opción más amplia. Para permitir que cada hilo ejecute ciertos comandos sin preguntar, o para bloquear algunos, agregue [reglas de permiso](/docs/es/permissions) al `.claude/settings.json` del repositorio. Los hilos en la nube las aplican solo en un proyecto con un repositorio; vea [Qué recogen los hilos de sus repositorios](#what-threads-pick-up-from-your-repositories). En un proyecto con varios repositorios, las reglas de permiso de ningún repositorio llegan a un hilo en la nube, por lo que depende del modo automático y de las aprobaciones que da dentro de cada hilo.

279 281 

280<h3 id="run-a-thread-on-your-own-computer">282<h3 id="run-a-thread-on-your-own-computer">

281 Ejecutar un hilo en su propia computadora283 Ejecutar un hilo en su propia computadora


283 285 

284Cuando una tarea necesita algo que solo su computadora tiene, como una base de datos local, un emulador de dispositivo, o una API detrás de su VPN, pida a Claude que ejecute el hilo para esa tarea en su computadora en lugar de en la nube. Cuando lo solicita en la conversación del proyecto, el hilo es una sesión de Claude Code en una carpeta en su máquina, conectada a través de [Remote Control](/docs/es/remote-control). Los otros hilos del proyecto continúan ejecutándose en la nube. En comparación con un hilo en la nube, un hilo en su computadora:286Cuando una tarea necesita algo que solo su computadora tiene, como una base de datos local, un emulador de dispositivo, o una API detrás de su VPN, pida a Claude que ejecute el hilo para esa tarea en su computadora en lugar de en la nube. Cuando lo solicita en la conversación del proyecto, el hilo es una sesión de Claude Code en una carpeta en su máquina, conectada a través de [Remote Control](/docs/es/remote-control). Los otros hilos del proyecto continúan ejecutándose en la nube. En comparación con un hilo en la nube, un hilo en su computadora:

285 287 

286* Funciona con los archivos, herramientas, servidores MCP, y configuración de Claude Code en esa máquina en lugar del entorno en la nube del proyecto288* Funciona con los archivos, herramientas, servidores MCP, y configuración de Claude Code en esa máquina, incluidos sus hooks y reglas de permiso, en lugar del entorno en la nube del proyecto

287* Comienza con las instrucciones del proyecto, pero sin sus archivos de memoria cargados289* Comienza con las instrucciones del proyecto, pero sin sus archivos de memoria cargados

288* Se ejecuta solo mientras esa computadora está despierta con Remote Control activado290* Se ejecuta solo mientras esa computadora está despierta con Remote Control activado

289 291 


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

293 295 

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

295 * **En una terminal**: ejecute `claude remote-control` en la carpeta y déjela ejecutándose.297 * **En una terminal**: ejecute `claude remote-control` en la carpeta y déjela ejecutándose. En un repositorio de git, agregue `--spawn worktree` para dar a cada hilo allí su propio [worktree](/docs/es/worktrees) en lugar de la carpeta misma.

296 </Step>298 </Step>

297 299 

298 <Step title="Solicitar la tarea con Work locally">300 <Step title="Solicitar la tarea con Work locally">


300 </Step>302 </Step>

301 303 

302 <Step title="Permitirlo en la tarjeta">304 <Step title="Permitirlo en la tarjeta">

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

304 </Step>306 </Step>

305</Steps>307</Steps>

306 308 


320| :- | :- | :- |322| :- | :- | :- |

321| Memoria del proyecto | Notas que Claude mantiene sobre el proyecto, como requisitos, decisiones y trampas, almacenadas como archivos. Cada hilo en la nube lee el archivo de índice `MEMORY.md` cuando comienza y abre los otros archivos cuando los necesita | Pida a Claude en la conversación del proyecto o en cualquier hilo en la nube que recuerde un requisito, una decisión o una trampa, o que olvide uno. Lea, edite y elimine los archivos en **Configuración del proyecto > Memoria** |323| Memoria del proyecto | Notas que Claude mantiene sobre el proyecto, como requisitos, decisiones y trampas, almacenadas como archivos. Cada hilo en la nube lee el archivo de índice `MEMORY.md` cuando comienza y abre los otros archivos cuando los necesita | Pida a Claude en la conversación del proyecto o en cualquier hilo en la nube que recuerde un requisito, una decisión o una trampa, o que olvide uno. Lea, edite y elimine los archivos en **Configuración del proyecto > Memoria** |

322| Instrucciones del proyecto | Texto enviado a cada nuevo hilo y a Claude en la conversación del proyecto, hasta 16.000 caracteres. [Escribir instrucciones del proyecto](#write-project-instructions) cubre qué poner en él | **Configuración del proyecto > Memoria > Instrucciones del proyecto**, o pida a Claude que cambie las instrucciones |324| Instrucciones del proyecto | Texto enviado a cada nuevo hilo y a Claude en la conversación del proyecto, hasta 16.000 caracteres. [Escribir instrucciones del proyecto](#write-project-instructions) cubre qué poner en él | **Configuración del proyecto > Memoria > Instrucciones del proyecto**, o pida a Claude que cambie las instrucciones |

323| Repositorios, archivos y entorno | Los repositorios que cada hilo en la nube clona, las carpetas y archivos que puede leer en `/mnt/project-files`, y el entorno en la nube en el que se ejecuta | Repositorios y entorno en **Configuración del proyecto > Entorno**, o pida a Claude en la conversación que agregue un repositorio al proyecto. Archivos y carpetas desde **Agregar** en la pestaña **Biblioteca** en **Descripción general** |325| Repositorios, archivos y entorno | Los repositorios que cada hilo en la nube clona, las carpetas y archivos que puede leer en `/mnt/project-files`, y el entorno en la nube en el que se ejecuta | Repositorios y entorno en **Configuración del proyecto > Entorno**, o pida a Claude en la conversación que agregue un repositorio al proyecto. [Archivos y carpetas](#add-files-and-folders) desde **Agregar** en la pestaña **Biblioteca** en **Descripción general** |

324 326 

325**Configuración del proyecto > Memoria** enumera estos archivos en **Memoria automática**, porque Claude los escribe a sí mismo mientras trabaja en el proyecto. Son separados de la [memoria automática](/docs/es/memory) que Claude Code mantiene en su máquina, aunque ambos usen un índice `MEMORY.md`. La memoria del proyecto también es separada de los archivos `CLAUDE.md` en los repositorios del proyecto. Cada hilo en la nube aún lee esos archivos `CLAUDE.md` de su clon cuando comienza, así que ponga instrucciones sobre un repositorio en su `CLAUDE.md` y notas sobre el proyecto en la memoria del proyecto.327**Configuración del proyecto > Memoria** enumera estos archivos en **Memoria automática**, porque Claude los escribe a sí mismo mientras trabaja en el proyecto. Son separados de la [memoria automática](/docs/es/memory) que Claude Code mantiene en su máquina, aunque ambos usen un índice `MEMORY.md`. La memoria del proyecto también es separada de los archivos `CLAUDE.md` en los repositorios del proyecto. Cada hilo en la nube aún lee esos archivos `CLAUDE.md` de su clon cuando comienza, así que ponga instrucciones sobre un repositorio en su `CLAUDE.md` y notas sobre el proyecto en la memoria del proyecto.

326 328 


364 366 

365Para un proyecto que abarca muchos repositorios, como una característica con código de servidor, web, móvil y escritorio, agregue uno o dos repositorios que casi todas las tareas tocan y nombre los otros en [instrucciones del proyecto](#write-project-instructions) para que Claude sepa dónde vive el resto del código. Los hilos en la nube entonces comienzan pequeños y traen los otros repositorios solo para las tareas que los necesitan.367Para un proyecto que abarca muchos repositorios, como una característica con código de servidor, web, móvil y escritorio, agregue uno o dos repositorios que casi todas las tareas tocan y nombre los otros en [instrucciones del proyecto](#write-project-instructions) para que Claude sepa dónde vive el resto del código. Los hilos en la nube entonces comienzan pequeños y traen los otros repositorios solo para las tareas que los necesitan.

366 368 

369<h3 id="add-files-and-folders">

370 Agregar archivos y carpetas

371</h3>

372 

373Agregue los archivos y carpetas que desea que los hilos lean en el campo **Contexto** del diálogo **Nuevo proyecto**, o después con **Agregar** en la pestaña **Biblioteca** en **Descripción general**. Estos límites se aplican a lo que agrega:

374 

375* **Pestaña Biblioteca**: hasta 100 archivos y 2 GB en una selección, con un único archivo de hasta 480 MB.

376* **Diálogo Nuevo proyecto**: los archivos de más de 30 MB se omiten, así que agregue archivos más grandes desde la pestaña **Biblioteca** después de crear el proyecto.

377* **Carpetas**: cuando agrega una carpeta desde cualquiera de los dos lugares, el proyecto recibe una copia de sus primeros 100 archivos de hasta 200 MB, sin archivos de más de 30 MB, archivos ocultos o `node_modules`. Un proyecto contiene hasta 10 carpetas y carpetas de Google Drive combinadas, y los archivos individuales no cuentan hacia ese límite.

378* **Cambios después de la carga**: las cargas son copias, por lo que un cambio que realiza en su computadora después no llega al proyecto hasta que cargue el archivo nuevamente y elija **Reemplazar** cuando se le pregunte sobre el nombre existente.

379 

367<h3 id="what-threads-pick-up-from-your-repositories">380<h3 id="what-threads-pick-up-from-your-repositories">

368 Lo que los hilos recogen de sus repositorios381 Lo que los hilos recogen de sus repositorios

369</h3>382</h3>


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

473 486 

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

475* **Cloud sessions**: cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web) a menos que pida a Claude que la ejecute en su máquina. De cualquier forma, Claude la comienza y rastrea en lugar de usted. Una sesión en la nube que comenzó usted mismo puede convertirse en un proyecto o alimentar uno a través de [**Continue as a project** o **Move to project**](#start-from-an-existing-cloud-session).488* **Cloud sessions**: cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web) a menos que pida a Claude que la ejecute en su máquina. De cualquier forma, Claude la comienza y rastrea en lugar de usted. Una sesión en la nube que comenzó usted mismo puede convertirse en un proyecto o alimentar uno a través de [**Continue as project** o **Move to project**](#start-from-an-existing-cloud-session).

476* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.489* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.

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

478* **Local sessions and agent view**: una sesión que comienza usted mismo en su terminal, IDE, o el entorno local de la aplicación de escritorio no puede ser agregada a un proyecto. [Agent view](/docs/es/agent-view) es una pantalla para rastrear varias sesiones locales lado a lado, y usted sigue iniciando cada una y le da su tarea usted mismo.491* **Local sessions and agent view**: una sesión que comienza usted mismo en su terminal, IDE, o el entorno local de la aplicación de escritorio no puede ser agregada a un proyecto. [Agent view](/docs/es/agent-view) es una pantalla para rastrear varias sesiones locales lado a lado, y usted sigue iniciando cada una y le da su tarea usted mismo.

479* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio para que las sesiones paralelas en su máquina no se sobrescriban entre sí. Los hilos en la nube no los necesitan: cada uno clona sus repositorios en su propia sandbox en la nube y trabaja en su propia rama.492* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio para que las sesiones paralelas en su máquina no se sobrescriban entre sí. Los hilos en la nube no los necesitan: cada uno clona sus repositorios en su propia sandbox en la nube y trabaja en su propia rama.

480* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.493* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.

494* **Subagents**: un [subagente](/docs/es/sub-agents) se ejecuta dentro de una sesión, realiza una tarea secundaria en su propia ventana de contexto, y devuelve un resumen a esa sesión. Los hilos de un proyecto son sesiones completas que Claude comienza y que reportan al proyecto, y un hilo aún puede usar subagentes para sus propias tareas secundarias.

481* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.495* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.

482 496 

483[Ejecutar agentes en paralelo](/docs/es/agents) compara estas opciones lado a lado.497[Ejecutar agentes en paralelo](/docs/es/agents) compara estas opciones lado a lado.


486 Limitaciones500 Limitaciones

487</h2>501</h2>

488 502 

489* Los proyectos están disponibles en claude.ai/code, en la aplicación de escritorio y en la aplicación móvil de Claude, no en el CLI de terminal ni a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. El comando [`claude project`](/docs/es/cli-reference) del CLI, que administra el estado local de Claude Code para un directorio, no está relacionado.503* Los proyectos están disponibles en claude.ai/code, en la aplicación de escritorio y en la aplicación móvil de Claude, no en el CLI de terminal, la extensión de VS Code o el plugin de JetBrains, y no a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. El comando [`claude project`](/docs/es/cli-reference) del CLI, que administra el estado local de Claude Code para un directorio, no está relacionado.

490* Los hilos del proyecto son [sesiones en la nube](/docs/es/claude-code-on-the-web), o sesiones en su propia máquina a través de [Remote Control](/docs/es/remote-control), con Anthropic como proveedor de modelo en ambos casos. [Seguridad](/docs/es/security) y [Uso de datos](/docs/es/data-usage) cubren cómo se aíslan las sesiones en la nube y qué se retiene, y [Connection and security](/docs/es/remote-control#connection-and-security) cubre cómo un hilo en su máquina se conecta y qué se almacena.504* Los hilos del proyecto son [sesiones en la nube](/docs/es/claude-code-on-the-web), o sesiones en su propia máquina a través de [Remote Control](/docs/es/remote-control), con Anthropic como proveedor de modelo en ambos casos. [Seguridad](/docs/es/security) y [Uso de datos](/docs/es/data-usage) cubren cómo se aíslan las sesiones en la nube y qué se retiene, y [Connection and security](/docs/es/remote-control#connection-and-security) cubre cómo un hilo en su máquina se conecta y qué se almacena.

491* No puede agregar una sesión que inició usted mismo en su máquina a un proyecto. Un proyecto llega a su máquina solo al [ejecutar un hilo allí a través de Remote Control](#run-a-thread-on-your-own-computer), y esa sección enumera lo que necesita.505* No puede agregar una sesión que inició usted mismo en su máquina a un proyecto. Un proyecto llega a su máquina solo al [ejecutar un hilo allí a través de Remote Control](#run-a-thread-on-your-own-computer), y esa sección enumera lo que necesita.

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

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

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

495 509 

496<h2 id="troubleshooting">510<h2 id="troubleshooting">

497 Solución de problemas511 Solución de problemas

Details

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

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

4 4 

5# Escanea tu base de código en busca de vulnerabilidades5# Escanee su base de código en busca de vulnerabilidades

6 6 

7> Instala el plugin de seguridad de Claude para escanear tu base de código en busca de vulnerabilidades en una sesión de Claude Code y convierte los hallazgos en parches que revisas y aplicas.7> Instale el plugin de seguridad de Claude para escanear su base de código en busca de vulnerabilidades en una sesión de Claude Code y convierta los hallazgos en parches que usted revisa y aplica.

8 8 

9El plugin de seguridad de Claude ejecuta un escaneo de vulnerabilidades multiagente de tu base de código dentro de una sesión de Claude Code. Un equipo de agentes de Claude mapea tu arquitectura, construye un modelo de amenazas, busca vulnerabilidades y revisa de forma independiente cada hallazgo antes de escribir el informe. Usa el plugin para escanear un repositorio completo o [solo un conjunto de cambios](#scan-only-your-changes), como el diff de una rama, el diff de una solicitud de extracción o una única confirmación, luego convierte los hallazgos que elijas en parches que revisas y aplicas tú mismo.9El plugin de seguridad de Claude ejecuta un escaneo de vulnerabilidades multiagente de su base de código dentro de una sesión de Claude Code. Un equipo de agentes de Claude mapea su arquitectura, construye un modelo de amenazas, busca vulnerabilidades y revisa de forma independiente cada hallazgo antes de escribir el informe. Utilice el plugin para escanear un repositorio completo o [solo un conjunto de cambios](#scan-only-your-changes), como el diff de una rama, el diff de una solicitud de extracción o una única confirmación, luego convierta los hallazgos que elija en parches que usted revisa y aplica usted mismo.

10 10 

11El plugin se ejecuta localmente en tu sesión, utiliza los modelos a los que tienes acceso en Claude Code, y cada escaneo cuenta contra los límites de uso de tu plan. Si deseas un servicio administrado que monitoree tus repositorios, o deseas ejecutar escaneos en [Claude Mythos 5](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), consulta el producto [Claude Security](https://claude.com/product/claude-security), disponible en el plan Enterprise. El plugin accede a código que el producto administrado no puede alcanzar, como repositorios alojados en GitLab o Bitbucket, o en redes que no permiten conexiones entrantes.11El plugin se ejecuta localmente en su sesión, utiliza [los modelos que tenga acceso en Claude Code](#models-and-providers), y cada escaneo cuenta hacia su [uso](/docs/es/costs). Si desea un servicio administrado que monitoree sus repositorios, o desea ejecutar escaneos en [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), consulte el producto [Claude Security](https://claude.com/product/claude-security), disponible en el plan Enterprise. El plugin llega al código que el producto administrado no puede alcanzar, como repositorios alojados en GitLab o Bitbucket, o en redes que no permiten conexiones entrantes.

12 12 

13El plugin también es distinto de las herramientas de revisión ya presentes en Claude Code: el [plugin de orientación de seguridad](/docs/es/security-guidance) revisa el código mientras Claude lo escribe, [`/security-review`](/docs/es/commands#all-commands) ejecuta un único paso sobre tu rama, y [Code Review](/docs/es/code-review) revisa solicitudes de extracción. Para ver cómo se apilan las capas, consulta [Cómo se ajusta el plugin con otras herramientas de seguridad](#how-the-plugin-fits-with-other-security-tools).13El plugin también es distinto de las herramientas de revisión ya presentes en Claude Code: el [plugin de orientación de seguridad](/docs/es/security-guidance) revisa el código mientras Claude lo escribe, [`/security-review`](/docs/es/commands#all-commands) ejecuta un único paso sobre su rama, y [Code Review](/docs/es/code-review) revisa solicitudes de extracción. Para ver cómo se apilan las capas, consulte [Cómo se ajusta el plugin con otras herramientas de seguridad](#how-the-plugin-fits-with-other-security-tools).

14 14 

15<h2 id="prerequisites">15<h2 id="prerequisites">

16 Requisitos previos16 Requisitos previos

17</h2>17</h2>

18 18 

19Para ejecutar el plugin, necesitas:19Para ejecutar el plugin, necesita:

20 20 

21* Un plan de pago, para los [flujos de trabajo dinámicos](/docs/es/workflows) que el escaneo utiliza para orquestar sus agentes. En Pro, actívalos desde la fila Dynamic workflows en `/config`.21* Un plan de pago, acceso a la API de Anthropic, o un [proveedor de terceros](#models-and-providers), para los [flujos de trabajo dinámicos](/docs/es/workflows) que el escaneo utiliza para orquestar sus agentes. En Pro, actívelos desde la fila Dynamic workflows en `/config`.

22* Python 3.9 o posterior disponible en tu `PATH` como `python3`. Verifica con `python3 --version`. Las herramientas del plugin utilizan solo la biblioteca estándar de Python, por lo que no se instala nada.22* Python 3.9 o posterior disponible en su `PATH` como `python3`. Verifique con `python3 --version`. Las herramientas del plugin utilizan solo la biblioteca estándar de Python, por lo que no se instala nada.

23* Linux, macOS o Windows.23* Linux, macOS o Windows.

24* Git, para escaneos de cambios y para convertir hallazgos en parches; esos trabajos no admiten otros sistemas de control de versiones. Un escaneo completo funciona en cualquier directorio, con o sin control de versiones.24* Git, para escaneos de cambios y para convertir hallazgos en parches; esos trabajos no admiten otros sistemas de control de versiones. Un escaneo completo funciona en cualquier directorio, con o sin control de versiones.

25 25 

26<h2 id="models-and-providers">

27 Modelos y proveedores

28</h2>

29 

30Un escaneo se ejecuta dentro de su sesión de Claude Code. El plugin no realiza llamadas de modelo por su cuenta, por lo que no hay una clave de API separada ni una configuración de proveedor que configurar.

31 

32* **Modelo**: los agentes que buscan vulnerabilidades, verifican hallazgos y escriben y revisan parches se ejecutan en [el modelo de su sesión](/docs/es/sub-agents#choose-a-model). Para cambiarlo, ejecute [`/model`](/docs/es/model-config#setting-your-model) en su sesión antes de iniciar un escaneo. Algunos pasos de apoyo, como la asignación del repositorio, utilizan el [alias `sonnet`](/docs/es/model-config#model-aliases) en su lugar.

33* **Proveedor**: los escaneos se ejecutan en un plan de pago, con acceso a la API de Anthropic, o en un [proveedor de terceros](/docs/es/third-party-integrations) como [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai), o [Microsoft Foundry](/docs/es/microsoft-foundry).

34 

35En un proveedor de terceros, el alias `sonnet` puede resolverse a una versión diferente que en la API de Anthropic. Si su cuenta no puede usar esa versión, [fije sus versiones de modelo](/docs/es/model-config#pin-models-for-third-party-deployments), incluido `ANTHROPIC_DEFAULT_SONNET_MODEL`.

36 

37[La alternancia automática de modelo](/docs/es/model-config#automatic-model-fallback) vuelve a ejecutar una solicitud que las salvaguardas de un modelo marcan. En Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, la solicitud puede terminar con un mensaje de rechazo en su lugar, dependiendo de [cómo esté configurada su implementación](/docs/es/model-config#enable-fallback-on-bedrock-agent-platform-and-foundry).

38 

26<h2 id="install-the-plugin">39<h2 id="install-the-plugin">

27 Instala el plugin40 Instala el plugin

28</h2>41</h2>


156 169 

157**El menú `/claude-security` se abre con una advertencia de Python.** El plugin necesita `python3` 3.9 o posterior en tu `PATH`. Cuando no puede encontrar `python3` en absoluto, el menú advierte que Claude Security no funcionará hasta que se instale uno; cuando el primer `python3` en tu `PATH` es más antiguo, la advertencia nombra la versión que encontró. Instala Python 3, o coloca un `python3` más nuevo primero en tu `PATH`, luego inicia una nueva sesión.170**El menú `/claude-security` se abre con una advertencia de Python.** El plugin necesita `python3` 3.9 o posterior en tu `PATH`. Cuando no puede encontrar `python3` en absoluto, el menú advierte que Claude Security no funcionará hasta que se instale uno; cuando el primer `python3` en tu `PATH` es más antiguo, la advertencia nombra la versión que encontró. Instala Python 3, o coloca un `python3` más nuevo primero en tu `PATH`, luego inicia una nueva sesión.

158 171 

159**Puedes ver un aviso "safeguards flagged this message" al escanear en un modelo Fable.** El mensaje nombra el modelo, por ejemplo "Fable 5.1's safeguards flagged this message". Los clasificadores de seguridad de ciberseguridad de Fable marcan ciertas solicitudes, y Claude Code vuelve a ejecutar una solicitud marcada en un modelo Opus a través de [fallback automático de modelo](/docs/es/model-config#automatic-model-fallback). Esto es esperado, y el escaneo aún debería completarse exitosamente.172**Puedes ver un aviso "safeguards flagged this message" al escanear en un modelo Fable.** El mensaje nombra el modelo que estás ejecutando. Los clasificadores de seguridad de ciberseguridad de Fable marcan ciertas solicitudes, y Claude Code vuelve a ejecutar una solicitud marcada en un modelo Opus a través de [fallback automático de modelo](/docs/es/model-config#automatic-model-fallback). Esto es esperado. Cuando la solicitud se vuelve a ejecutar, el escaneo aún debería completarse exitosamente.

160 173 

161<h2 id="related-resources">174<h2 id="related-resources">

162 Recursos relacionados175 Recursos relacionados

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

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

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

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

Details

566 * platform.claude.com566 * platform.claude.com

567 * code.claude.com567 * code.claude.com

568 * claude.ai568 * claude.ai

569 * claude.com

570 * support.claude.com

571 * anthropic.com

572 * [www.anthropic.com](http://www.anthropic.com)

569 </Accordion>573 </Accordion>

570 574 

571 <Accordion title="Control de versiones">575 <Accordion title="Control de versiones">


596 * hub.docker.com600 * hub.docker.com

597 * [www.docker.com](http://www.docker.com)601 * [www.docker.com](http://www.docker.com)

598 * production.cloudflare.docker.com602 * production.cloudflare.docker.com

603 * production.cloudfront.docker.com

599 * download.docker.com604 * download.docker.com

600 * gcr.io605 * gcr.io

601 * \*.gcr.io606 * \*.gcr.io

commands.md +7 −4

Details

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

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

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

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

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

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

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

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


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

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

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

70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Ejecuta `migrate` para actualizar el código existente de Claude API a un modelo más nuevo. Ejecuta `upgrade` para mover la dependencia del SDK de Anthropic de tu proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x. Ejecuta `managed-agents-onboard` para un tutorial que crea un nuevo Managed Agent. Ejecuta `prompt-audit` para marcar instrucciones escritas para modelos más antiguos en tus prompts, skills y descripciones de herramientas y proponer correcciones como un diff. Ejecuta `cost-optimize` para perfilar dónde va el gasto de Claude API de tu proyecto y proponer ahorros de opciones como almacenamiento en caché de prompts, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez. Ejecuta `build-eval` para construir un conjunto de evaluación para tu aplicación impulsada por Claude, e `hillclimb` para mejorar iterativamente la aplicación contra una evaluación existente. El subcomando `prompt-audit` requiere Claude Code v2.1.221 o posterior, `upgrade` requiere v2.1.236 o posterior, `cost-optimize` requiere v2.1.247 o posterior, y `build-eval` e `hillclimb` requieren v2.1.259 o posterior |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Para ver qué hace cada subcomando y la versión que requiere, consulta [Trabajar en proyectos de Claude API](/docs/es/skills#work-on-claude-api-projects) |

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

costs.md +2 −0

Details

96 96 

97Ejecute [`/insights`](/docs/es/commands#all-commands) para un informe sobre cómo trabaja en lugar de cuántos tokens ha utilizado. Analiza sus sesiones recientes en esta máquina y escribe un informe HTML que cubre en qué trabaja, puntos de fricción como solicitudes mal entendidas o código defectuoso, y sugerencias para usar Claude Code de manera más efectiva. Una única ejecución analiza hasta 200 sesiones que no ha visto antes y omite las muy cortas. Cuando se omiten sesiones, el encabezado del informe muestra el recuento analizado con el total entre paréntesis, por ejemplo `200 sessions (412 total)`.97Ejecute [`/insights`](/docs/es/commands#all-commands) para un informe sobre cómo trabaja en lugar de cuántos tokens ha utilizado. Analiza sus sesiones recientes en esta máquina y escribe un informe HTML que cubre en qué trabaja, puntos de fricción como solicitudes mal entendidas o código defectuoso, y sugerencias para usar Claude Code de manera más efectiva. Una única ejecución analiza hasta 200 sesiones que no ha visto antes y omite las muy cortas. Cuando se omiten sesiones, el encabezado del informe muestra el recuento analizado con el total entre paréntesis, por ejemplo `200 sessions (412 total)`.

98 98 

99Cuando [el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) está disponible para la sesión y sus sesiones recientes se ejecutaron principalmente sin él, el informe también puede incluir una estimación de cuántos avisos de permisos el modo automático podría haber manejado en esas sesiones.

100 

99Claude Code escribe el informe más reciente en `~/.claude/usage-data/report.html` y guarda una copia con marca de tiempo de cada ejecución en el mismo directorio, por lo que los informes anteriores no se sobrescriben. Claude Code elimina informes en el mismo cronograma que el resto de sus datos de sesión: al iniciar, elimina archivos más antiguos que [`cleanupPeriodDays`](/docs/es/claude-directory#cleaned-up-automatically), 30 días por defecto.101Claude Code escribe el informe más reciente en `~/.claude/usage-data/report.html` y guarda una copia con marca de tiempo de cada ejecución en el mismo directorio, por lo que los informes anteriores no se sobrescriben. Claude Code elimina informes en el mismo cronograma que el resto de sus datos de sesión: al iniciar, elimina archivos más antiguos que [`cleanupPeriodDays`](/docs/es/claude-directory#cleaned-up-automatically), 30 días por defecto.

100 102 

101Puede ejecutar `/insights` en cualquier plan y con cualquier proveedor. El análisis se ejecuta a través del mismo proveedor y cuenta que sus sesiones regulares, y los tokens cuentan contra su plan o uso de API. Las sesiones de otros dispositivos y claude.ai no se incluyen.103Puede ejecutar `/insights` en cualquier plan y con cualquier proveedor. El análisis se ejecuta a través del mismo proveedor y cuenta que sus sesiones regulares, y los tokens cuentan contra su plan o uso de API. Las sesiones de otros dispositivos y claude.ai no se incluyen.

desktop.md +6 −0

Details

834* **Remote Control**: habilite o deshabilite [Remote Control](/docs/es/remote-control) para su organización834* **Remote Control**: habilite o deshabilite [Remote Control](/docs/es/remote-control) para su organización

835* **Disable Bypass permissions mode**: evite que los usuarios en su organización habiliten el modo bypass permissions835* **Disable Bypass permissions mode**: evite que los usuarios en su organización habiliten el modo bypass permissions

836 836 

837<Note>

838 El formulario de OpenTelemetry para Cowork bajo **Monitoring** en la [configuración de datos y privacidad](https://claude.ai/admin-settings/data-privacy-controls) de la consola de administración se aplica solo a sesiones de Cowork. En una sesión de Cowork en esta máquina, la aplicación de escritorio pasa ese recopilador a Claude Code como variables de entorno `OTEL_*`, por lo que el formulario tiene efecto aunque Claude Code en esa sesión [nunca obtiene configuraciones de consola de administración](#managed-settings).

839 

840 Para exportar telemetría desde sesiones de la pestaña Code, establezca `CLAUDE_CODE_ENABLE_TELEMETRY` y las variables `OTEL_*` en el bloque `env` de su configuración administrada de Claude Code, como se muestra en [configuración de administrador para monitoreo](/docs/es/monitoring-usage#administrator-configuration). Las sesiones locales, en la nube y SSH leen [configuración administrada desde diferentes fuentes](#managed-settings). Para los hosts que una sesión en la nube puede alcanzar, consulte [acceso a la red](/docs/es/cloud-environments#network-access). Para el `service.name` que las sesiones de la pestaña Code reportan, consulte [información de servicio](/docs/es/monitoring-usage#service-information).

841</Note>

842 

837<h3 id="managed-settings">843<h3 id="managed-settings">

838 Configuración administrada844 Configuración administrada

839</h3>845</h3>

errors.md +90 −14

Details

152| `There's an issue with the selected model` | [Errores de solicitud](#theres-an-issue-with-the-selected-model) |152| `There's an issue with the selected model` | [Errores de solicitud](#theres-an-issue-with-the-selected-model) |

153| `Model ... is not a recognized model id` | [Errores de solicitud](#model-is-not-a-recognized-model-id) |153| `Model ... is not a recognized model id` | [Errores de solicitud](#model-is-not-a-recognized-model-id) |

154| `Model ... not found` | [Errores de solicitud](#model-not-found) |154| `Model ... not found` | [Errores de solicitud](#model-not-found) |

155| `Couldn't confirm model ... with the API` | [Errores de solicitud](#couldnt-confirm-model-with-the-api) |

155| `API error: ... · model not changed` | [Errores de solicitud](#api-error-model-not-changed) |156| `API error: ... · model not changed` | [Errores de solicitud](#api-error-model-not-changed) |

156| `Claude Opus is not available with the Claude Pro plan` | [Errores de solicitud](#claude-opus-is-not-available-with-the-claude-pro-plan) |157| `Claude Opus is not available with the Claude Pro plan` | [Errores de solicitud](#claude-opus-is-not-available-with-the-claude-pro-plan) |

157| `Claude Code ... does not support this model; version ... or newer is required` | [Errores de solicitud](#claude-code-does-not-support-this-model) |158| `Claude Code ... does not support this model; version ... or newer is required` | [Errores de solicitud](#claude-code-does-not-support-this-model) |

158| `Claude Code ... is older than the minimum version required by your organization's policy` | [Errores de solicitud](#claude-code-does-not-support-this-model) |159| `Claude Code ... is older than the minimum version required by your organization's policy` | [Errores de solicitud](#claude-code-does-not-support-this-model) |

159| `Model ... is restricted by your organization's settings` | [Errores de solicitud](#model-is-restricted-by-your-organizations-settings) |160| `Model ... is restricted by your organization's settings` | [Errores de solicitud](#model-is-restricted-by-your-organizations-settings) |

160| `Model ... is not available. Your organization restricts model selection.` | [Errores de solicitud](#model-is-restricted-by-your-organizations-settings) |161| `Model ... is not available. Your organization restricts model selection.` | [Errores de solicitud](#model-is-restricted-by-your-organizations-settings) |

162| `Can't switch to the default model` | [Errores de solicitud](#cant-switch-to-the-default-model) |

161| `Model switch ... blocked by a PreModelSwitch hook` | [Errores de solicitud](#model-switch-was-blocked-by-a-premodelswitch-hook) |163| `Model switch ... blocked by a PreModelSwitch hook` | [Errores de solicitud](#model-switch-was-blocked-by-a-premodelswitch-hook) |

162| `couldn't save it as your default` / `couldn't confirm it was saved as your default` | [Errores de solicitud](#couldnt-save-it-as-your-default) |164| `couldn't save it as your default` / `couldn't confirm it was saved as your default` | [Errores de solicitud](#couldnt-save-it-as-your-default) |

163| `thinking.type.enabled is not supported for this model` | [Errores de solicitud](#thinking-type-enabled-is-not-supported-for-this-model) |165| `thinking.type.enabled is not supported for this model` | [Errores de solicitud](#thinking-type-enabled-is-not-supported-for-this-model) |


219| `Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Errores de línea de comandos](#no-github-account-is-connected-to-your-claude-account) |221| `Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Errores de línea de comandos](#no-github-account-is-connected-to-your-claude-account) |

220| `Your connected GitHub account can't see <owner>/<repo>` | [Errores de línea de comandos](#your-connected-github-account-cant-see-the-repository) |222| `Your connected GitHub account can't see <owner>/<repo>` | [Errores de línea de comandos](#your-connected-github-account-cant-see-the-repository) |

221| `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Errores de línea de comandos](#the-github-app-preflight-failed-transiently) |223| `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Errores de línea de comandos](#the-github-app-preflight-failed-transiently) |

224| `Not uploading this working tree` with `the upload cannot follow that setting` | [Errores de línea de comandos](#the-repository-upload-cant-follow-a-git-setting) |

222| `GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud` | [Errores de línea de comandos](#github-isnt-connected-to-your-claude-account) |225| `GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud` | [Errores de línea de comandos](#github-isnt-connected-to-your-claude-account) |

223| `Single sign-on authorization needed` | [Errores de línea de comandos](#single-sign-on-authorization-needed) |226| `Single sign-on authorization needed` | [Errores de línea de comandos](#single-sign-on-authorization-needed) |

224| `Failed to resume the conversation` | [Errores de línea de comandos](#failed-to-resume-the-conversation) |227| `Failed to resume the conversation` | [Errores de línea de comandos](#failed-to-resume-the-conversation) |


252| `Plugin "<name>@synced" is required by your organization and can't be disabled here` | [Errores de plugins](#plugin-is-required-by-your-organization) |255| `Plugin "<name>@synced" is required by your organization and can't be disabled here` | [Errores de plugins](#plugin-is-required-by-your-organization) |

253| `"<plugin>" was not uninstalled: it is still switched on in <file>` | [Errores de plugins](#plugin-was-not-uninstalled) |256| `"<plugin>" was not uninstalled: it is still switched on in <file>` | [Errores de plugins](#plugin-was-not-uninstalled) |

254| `"<plugin>" was not uninstalled: <file> is there and could not be read` | [Errores de plugins](#plugin-was-not-uninstalled) |257| `"<plugin>" was not uninstalled: <file> is there and could not be read` | [Errores de plugins](#plugin-was-not-uninstalled) |

258| `Plugin "<plugin>" was not uninstalled: installed_plugins.json` | [Solución de problemas de plugins](/docs/es/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read) |

255| `would be spawned with zero tools — refusing` | [Errores de herramientas](#agent-would-be-spawned-with-zero-tools) |259| `would be spawned with zero tools — refusing` | [Errores de herramientas](#agent-would-be-spawned-with-zero-tools) |

256| `File is covered by a Read deny rule in your permission settings` | [Errores de herramientas](#file-is-covered-by-a-read-deny-rule) |260| `File is covered by a Read deny rule in your permission settings` | [Errores de herramientas](#file-is-covered-by-a-read-deny-rule) |

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


727 The prompt to confirm went unanswered731 The prompt to confirm went unanswered

728</h3>732</h3>

729 733 

730Si su cuenta requiere el [consentimiento de créditos de uso de Fable](/docs/es/model-config#fable-and-usage-credits), Claude Code le pide que confirme antes de que una solicitud de Fable facture créditos de uso. Cuando nadie responde ese aviso de consentimiento en una sesión que puede no tener a nadie en su terminal, Claude Code cierra el aviso y termina el turno con uno de estos mensajes:734Si su cuenta requiere el [consentimiento de créditos de uso de Fable](/docs/es/model-config#fable-and-usage-credits), Claude Code le pide que confirme antes de que una solicitud de Fable facture créditos de uso. Cuando el aviso de consentimiento se cierra sin que nadie lo responda, Claude Code termina el turno con uno de estos mensajes:

731 735 

732```text theme={null}736```text theme={null}

733Fable limit reached · continuing on Fable 5.1 uses usage credits, and the prompt to confirm went unanswered — nothing was sent · answer it where this session is running, or /model to change737Fable limit reached · continuing on Fable 5.1 uses usage credits, and the prompt to confirm went unanswered — nothing was sent · answer it where this session is running, or /model to change


736 740 

737Los mensajes nombran el modelo Fable de la sesión, por lo que en Fable 5 leen `continuing on Fable 5` y `Fable 5 now uses usage credits`. Antes de v2.1.257, el primer mensaje comenzaba `Fable 5 limit reached`.741Los mensajes nombran el modelo Fable de la sesión, por lo que en Fable 5 leen `continuing on Fable 5` y `Fable 5 now uses usage credits`. Antes de v2.1.257, el primer mensaje comenzaba `Fable 5 limit reached`.

738 742 

739Esto sucede en sesiones de [Remote Control](/docs/es/remote-control), [sesiones en segundo plano](/docs/es/agent-view) y sesiones de compañeros de [equipo de agentes](/docs/es/agent-teams). Claude Code muestra el aviso de consentimiento solo en la vista interactiva de la sesión: la terminal donde se ejecuta, o, para una sesión en segundo plano, la [vista de agentes](/docs/es/agent-view) una vez que se adjunta. Un cliente de Remote Control no puede mostrarlo. Claude Code cierra el aviso en la fecha límite de [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry), cinco minutos por defecto, o tan pronto como llega un nuevo aviso mientras nadie ha escrito en esa terminal, como un aviso enviado desde un cliente de Remote Control. Escribir en la terminal donde se ejecuta la sesión cancela la fecha límite, y Claude Code espera su respuesta. En la vista adjunta de una sesión en segundo plano, escribir no cancela la fecha límite, y un nuevo aviso aún cierra el aviso de consentimiento, así que responda antes de que suceda cualquiera de los dos. Claude Code no envía nada y mantiene su modelo, por lo que cuando envía su siguiente aviso, Claude Code muestra el aviso de consentimiento nuevamente.743Esto sucede en sesiones de [Remote Control](/docs/es/remote-control), [sesiones en segundo plano](/docs/es/agent-view), [equipo de agentes](/docs/es/agent-teams) sesiones de compañeros, y sesiones que otra aplicación aloja a través del Agent SDK. Para saber cuándo Claude Code cierra el aviso, consulte [Fable and usage credits](/docs/es/model-config#fable-and-usage-credits).

740 744 

741**Qué hacer:**745**Qué hacer:**

742 746 

743* En la terminal donde se ejecuta la sesión, envíe otro aviso y responda el aviso de consentimiento cuando reaparezca. Para una sesión en segundo plano, adjúntese a ella desde la [vista de agentes](/docs/es/agent-view) primero. Reenviar desde un cliente de Remote Control muestra este mensaje nuevamente, porque el cliente no puede mostrar el aviso.747* Donde se ejecuta la sesión, en la terminal o en la aplicación que la aloja, envíe otro aviso y responda el aviso de consentimiento cuando reaparezca. Para una sesión en segundo plano, adjúntese a ella desde la [vista de agentes](/docs/es/agent-view) primero. Reenviar desde un cliente de Remote Control muestra este mensaje nuevamente, porque el cliente no puede mostrar el aviso.

744* Ejecute `/model` para cambiar a un modelo que no facture créditos de uso748* Ejecute `/model` para cambiar a un modelo que no facture créditos de uso

745* Para darse más tiempo para llegar a esa terminal, establezca [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry) en un valor más largo o `"never"`749* Para darse más tiempo, establezca [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry) en un valor más largo o `"never"`

746 750 

747Antes de v2.1.236, este mensaje no aparecía: mientras un cliente de Remote Control estaba conectado, Claude Code esperaba 60 segundos una respuesta y luego continuaba el turno en su modelo predeterminado.751Antes de v2.1.236, este mensaje no aparecía: mientras un cliente de Remote Control estaba conectado, Claude Code esperaba 60 segundos una respuesta y luego continuaba el turno en su modelo predeterminado.

748 752 


2346 El modelo no es un ID de modelo reconocido2350 El modelo no es un ID de modelo reconocido

2347</h3>2351</h3>

2348 2352 

2349La cadena de modelo que pasó a un cambio de modelo no es un alias de modelo, un ID de modelo que esta versión de Claude Code conoce, o un ID que comienza con `claude-`. Las causas habituales son un error tipográfico en el ID, un nombre para mostrar como `Sonnet 5` donde se espera el ID `claude-sonnet-5`, o un alias que solo las versiones más nuevas de Claude Code reconocen. Claude Code rechaza el cambio inmediatamente. Antes de v2.1.200, Claude Code guardaba la cadena y fallaba en la siguiente solicitud con [There's an issue with the selected model](#theres-an-issue-with-the-selected-model).2353La cadena que pasó a un cambio de modelo no es una que Claude Code pueda usar como modelo, por lo que rechazó el cambio sin enviar una solicitud y la sesión mantiene su modelo actual. Puede obtener este error cuando un modelo se establece a través del método [Agent SDK](/docs/es/agent-sdk/typescript) `setModel()`, por una aplicación que ejecuta la CLI de Claude Code para usted, como la [aplicación de escritorio](/docs/es/desktop), o cuando elige un modelo desde un dispositivo conectado a través de [Remote Control](/docs/es/remote-control). Antes de v2.1.200, Claude Code guardaba la cadena y fallaba en la siguiente solicitud con [There's an issue with the selected model](#theres-an-issue-with-the-selected-model).

2350 2354 

2351```text theme={null}2355```text theme={null}

2352Model "claud-sonnet-5" is not a recognized model id. Did you mean 'claude-sonnet-5'?2356Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?

2353```2357```

2354 2358 

2355La sugerencia final nombra el alias o ID de modelo más cercano. Cuando nada es lo suficientemente cercano, dice `Run /model to see available models.` en su lugar. En una sesión que la [aplicación de escritorio](/docs/es/desktop) inicia para usted, la sugerencia sin coincidencia dice `Switch to a different model.`2359En este ejemplo una aplicación envió el nombre para mostrar `Sonnet 5`, que el mensaje repite sin su espacio. La sugerencia final nombra el alias o ID de modelo más cercano. Cuando nada es lo suficientemente cercano, dice `Run /model to see available models.` en su lugar. En una sesión que la [aplicación de escritorio](/docs/es/desktop) inicia para usted, la sugerencia sin coincidencia dice `Switch to a different model.`

2356 2360 

2357Claude Code produce este error localmente en el momento en que se solicita el cambio, antes de que se realice ninguna solicitud de API. Se aplica cuando un modelo se establece a través del método [Agent SDK](/docs/es/agent-sdk/typescript) `setModel()`, por una aplicación como la [aplicación de escritorio](/docs/es/desktop) que ejecuta la CLI de Claude Code para usted, o cuando elige un modelo desde un dispositivo conectado a través de [Remote Control](/docs/es/remote-control). Antes de v2.1.260, la verificación no cubría las selecciones de Remote Control, por lo que Claude Code aplicaba la selección y la siguiente solicitud fallaba con [There's an issue with the selected model](#theres-an-issue-with-the-selected-model).2361Cuando cambia a través del Agent SDK o una aplicación en la API de Anthropic, solo una cadena que no puede ser un ID de modelo obtiene este error, como un nombre para mostrar o una cadena vacía.

2362 

2363Cuando elige un modelo desde un dispositivo Remote Control, Claude Code verifica la cadena localmente. Cualquier cadena que no sea un alias de modelo, un modelo que Claude Code enumera o que usted configuró, o un ID que comienza con `claude-` obtiene este error, un ID mal escrito como `claud-sonnet-5` incluido. Antes de v2.1.260, esta verificación no cubría las selecciones de Remote Control, por lo que una cadena no reconocida se aplicaba y fallaba en la siguiente solicitud.

2358 2364 

2359**Qué hacer:**2365**Qué hacer:**

2360 2366 

2361* Ejecute `/model` sin argumento para abrir el selector y elegir entre los modelos disponibles para su cuenta, luego pase el alias o ID que se muestra allí2367* Ejecute `/model` sin argumento para abrir el selector y elegir entre los modelos disponibles para su cuenta, luego pase el alias o ID que se muestra allí

2362* Si usó un alias que una versión más nueva de Claude Code admite, ejecute `claude update`. Un ID completo que comienza con `claude-` pasa esta verificación local incluso cuando el modelo es más nuevo que su versión de Claude Code. El servidor aún puede requerir una versión mínima para ese modelo; consulte [Claude Code does not support this model](#claude-code-does-not-support-this-model).2368* Si usó un alias que una versión más nueva de Claude Code admite, ejecute `claude update`, o pase el ID completo del modelo en su lugar. El servidor aún puede requerir una versión mínima de Claude Code para ese modelo; consulte [Claude Code does not support this model](#claude-code-does-not-support-this-model).

2363* Un modelo guardado antes de v2.1.200 no se repara con esta verificación. Si un valor obsoleto sigue apareciendo, elimínelo de las ubicaciones enumeradas en [Setting your model](/docs/es/model-config#setting-your-model).2369* Un modelo guardado antes de v2.1.200 no se repara con esta verificación. Si un valor obsoleto sigue apareciendo, elimínelo de las ubicaciones enumeradas en [Setting your model](/docs/es/model-config#setting-your-model).

2364* La verificación se ejecuta solo en la API de Anthropic. En cualquier otro proveedor o puerta de enlace, incluida una `ANTHROPIC_BASE_URL` personalizada, el proveedor define los nombres de modelo, por lo que Claude Code acepta cualquier cadena y la pasa. Claude Code aún puede escribir la [línea de diagnóstico de modelo no reconocido](#unrecognized-model-id-on-a-request) en el momento de la solicitud, en cada proveedor.2370* En cualquier proveedor que no sea la API de Anthropic, o detrás de una puerta de enlace o `ANTHROPIC_BASE_URL` personalizado, solo una cadena vacía obtiene este error. Claude Code aún puede escribir la [línea de diagnóstico de modelo no reconocido](#unrecognized-model-id-on-a-request) en el momento de la solicitud, en cada proveedor.

2365 2371 

2366<h3 id="model-not-found">2372<h3 id="model-not-found">

2367 Modelo no encontrado2373 Modelo no encontrado

2368</h3>2374</h3>

2369 2375 

2370Eligió un modelo con `/model <name>` y Claude Code no pudo confirmar que existe un modelo con ese nombre. Cuando el nombre no es un [alias de modelo](/docs/es/model-config#model-aliases) u otra ortografía que Claude Code acepta localmente, `/model` lo verifica con una solicitud mínima de API, y este error es generalmente la respuesta de su punto final de API. Un nombre que no puede ser un ID de modelo en absoluto, como uno que contiene espacios, obtiene el mismo mensaje.2376Cambió a un modelo por nombre y Claude Code no pudo confirmar que existe un modelo con ese nombre. Cuando el nombre no es un [alias de modelo](/docs/es/model-config#model-aliases) u otra ortografía que Claude Code acepta localmente, Claude Code lo verifica con una solicitud mínima de API, y este error es generalmente la respuesta de su punto final de API. Con `/model <name>`, un nombre que no puede ser un ID de modelo en absoluto, como uno que contiene espacios, obtiene el mismo mensaje.

2371 2377 

2372```text theme={null}2378```text theme={null}

2373Model 'claude-opus-9' not found2379Model 'claude-opus-9' not found


2379 2385 

2380* Ejecute `/model` sin argumento y elija entre los modelos disponibles para su cuenta, o use un [alias de modelo](/docs/es/model-config#model-aliases) como `sonnet`, que se resuelve a un valor predeterminado mantenido2386* Ejecute `/model` sin argumento y elija entre los modelos disponibles para su cuenta, o use un [alias de modelo](/docs/es/model-config#model-aliases) como `sonnet`, que se resuelve a un valor predeterminado mantenido

2381* Si escribió un ID completo, verifíquelo contra el catálogo de modelos de su proveedor. Un modelo recién lanzado puede estar disponible en la API de Anthropic antes de que su proveedor o región lo ofrezca.2387* Si escribió un ID completo, verifíquelo contra el catálogo de modelos de su proveedor. Un modelo recién lanzado puede estar disponible en la API de Anthropic antes de que su proveedor o región lo ofrezca.

2388* En el Agent SDK, `setModel()` falla con este mensaje y la sesión sigue ejecutándose en su modelo anterior. En el SDK de TypeScript, llame a [`supportedModels()`](/docs/es/agent-sdk/typescript#query-object) para enumerar los modelos a los que puede cambiar.

2382* Antes de v2.1.265, `/model` también rechazaba la ortografía del alias `opusplan[1m]` con este error. En esas versiones, actualice Claude Code, o establezca el modelo en [settings](/docs/es/model-config#setting-your-model) o con `--model` en su lugar.2389* Antes de v2.1.265, `/model` también rechazaba la ortografía del alias `opusplan[1m]` con este error. En esas versiones, actualice Claude Code, o establezca el modelo en [settings](/docs/es/model-config#setting-your-model) o con `--model` en su lugar.

2383 2390 

2391<h3 id="couldnt-confirm-model-with-the-api">

2392 No se pudo confirmar el modelo con la API

2393</h3>

2394 

2395Cambió de modelos a través del método [Agent SDK](/docs/es/agent-sdk/typescript) `setModel()` o una aplicación que ejecuta la CLI de Claude Code para usted, como la [aplicación de escritorio](/docs/es/desktop), y la solicitud que confirma el ID del modelo con su punto final de API no obtuvo respuesta dentro de cinco segundos. La sesión mantiene su modelo actual.

2396 

2397```text theme={null}

2398Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.

2399```

2400 

2401En una sesión que la [aplicación de escritorio](/docs/es/desktop) inicia para usted, el mensaje termina en `Try again.`

2402 

2403**Qué hacer:**

2404 

2405* Cambie al modelo de nuevo

2406* Si el cambio sigue fallando, verifique que Claude Code pueda alcanzar su punto final de API; consulte [Network and connection errors](#network-and-connection-errors)

2407 

2384<h3 id="api-error-model-not-changed">2408<h3 id="api-error-model-not-changed">

2385 Error de API al verificar el modelo seleccionado2409 Error de API al verificar el modelo seleccionado

2386</h3>2410</h3>


2432API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.2456API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.

2433```2457```

2434 2458 

2459La versión que la API verifica es la que reporta el binario de Claude Code que realizó la solicitud.

2460 

2435**Qué hacer:**2461**Qué hacer:**

2436 2462 

2437* Ejecute `claude update`, o actualice la aplicación de escritorio Claude, luego comience una nueva sesión2463Actualice ese binario, luego comience una nueva sesión. De dónde vino el binario decide cómo, excepto en un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#pin-the-version):

2438* Para la redacción por modelo, puede seguir trabajando en la sesión actual cambiando a otro modelo con `/model`2464 

2465| El binario que realizó la solicitud | Cómo actualizarlo |

2466| :- | :- |

2467| Un Claude Code que instaló | Ejecute `claude update` |

2468| La aplicación de escritorio Claude | Actualice la aplicación |

2469| El binario que agrupa la [extensión VS Code](/docs/es/vs-code) | Actualice la extensión |

2470| El binario que agrupa un paquete Agent SDK | [Actualice el paquete SDK](/docs/es/agent-sdk/hosting#runtime-dependencies), luego reinicie su aplicación. En un [ejecutable de archivo único compilado](/docs/es/agent-sdk/typescript#compile-to-a-single-executable), reconstruyalo |

2471 

2472* Para la redacción por modelo, puede seguir trabajando en la sesión actual cambiando a otro modelo: ejecute `/model` en la CLI, llame a [`setModel()`](/docs/es/agent-sdk/typescript#query-object) en el objeto `Query` del SDK de TypeScript en modo de entrada de transmisión, o llame a [`set_model()`](/docs/es/agent-sdk/python#claudesdkclient) en el `ClaudeSDKClient` del SDK de Python

2439* Para la redacción de la política organizacional, actualice antes de continuar2473* Para la redacción de la política organizacional, actualice antes de continuar

2440 2474 

2441<h3 id="model-is-restricted-by-your-organizations-settings">2475<h3 id="model-is-restricted-by-your-organizations-settings">


2460* Si el modelo restringido se estableció en `--model`, `ANTHROPIC_MODEL`, el campo `model` de un archivo de configuración, o el frontmatter `model` de un [subagente](/docs/es/sub-agents#choose-a-model), habilidad o comando, elimine o actualice ese valor para que el aviso no se repita2494* Si el modelo restringido se estableció en `--model`, `ANTHROPIC_MODEL`, el campo `model` de un archivo de configuración, o el frontmatter `model` de un [subagente](/docs/es/sub-agents#choose-a-model), habilidad o comando, elimine o actualice ese valor para que el aviso no se repita

2461* Si necesita acceso al modelo restringido, pida a su administrador de organización que lo habilite. Consulte [Organization model restrictions](/docs/es/model-config#organization-model-restrictions).2495* Si necesita acceso al modelo restringido, pida a su administrador de organización que lo habilite. Consulte [Organization model restrictions](/docs/es/model-config#organization-model-restrictions).

2462 2496 

2497<h3 id="cant-switch-to-the-default-model">

2498 No se puede cambiar al modelo predeterminado

2499</h3>

2500 

2501Eligió el modelo Predeterminado, por ejemplo seleccionando la fila Predeterminada en el selector `/model` o escribiendo `/model default`. Claude Code rechazó el cambio, por lo que la sesión mantiene su modelo actual.

2502 

2503```text theme={null}

2504Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

2505```

2506 

2507La redacción después de los dos puntos nombra lo que bloqueó el cambio:

2508 

2509* **`your organization's managed settings block it ... in "deniedModels"`**: una lista de negación administrada bloquea el modelo al que se resuelve la opción Predeterminada

2510* **`your organization allows only the models listed in "availableModels"`**: una lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) administrada con [`availableModelsMatch`](/docs/es/settings-reference#availablemodelsmatch) establecido en `"exact"` deja fuera el modelo al que se resuelve la opción Predeterminada

2511* **`Claude Code couldn't read your organization's managed settings to check which models they allow`**: la [configuración administrada](/docs/es/managed-settings) no se pudo leer, y Claude Code rechaza el cambio en lugar de aplicarlo sin verificar

2512 

2513**Qué hacer:**

2514 

2515* Para las redacciones [`deniedModels`](/docs/es/settings-reference#deniedmodels) y `availableModels`, ejecute `/model` y elija un modelo que su organización permita por nombre

2516* Pida a su administrador que actualice la configuración administrada que el mensaje nombra

2517* Para la redacción `couldn't read`, reinicie Claude Code; si sigue sucediendo, pida a su administrador que verifique la configuración administrada

2518 

2519Si una sesión en su lugar falla al iniciarse con un mensaje `Claude Code can't start` bajo esta configuración administrada, consulte [Managed settings block the default model](#managed-settings-block-the-default-model).

2520 

2463<h3 id="model-switch-was-blocked-by-a-premodelswitch-hook">2521<h3 id="model-switch-was-blocked-by-a-premodelswitch-hook">

2464 El cambio de modelo fue bloqueado por un hook PreModelSwitch2522 El cambio de modelo fue bloqueado por un hook PreModelSwitch

2465</h3>2523</h3>


3376 3434 

3377Antes de v2.1.251, Claude Code terminaba el mensaje con `Please set up GitHub on https://claude.ai/code` incluso cuando la verificación de GitHub falló solo transitoriamente, y el consejo de configuración no puede aclarar una falla transitoria.3435Antes de v2.1.251, Claude Code terminaba el mensaje con `Please set up GitHub on https://claude.ai/code` incluso cuando la verificación de GitHub falló solo transitoriamente, y el consejo de configuración no puede aclarar una falla transitoria.

3378 3436 

3437<h3 id="the-repository-upload-cant-follow-a-git-setting">

3438 La carga del repositorio no puede seguir una configuración de git

3439</h3>

3440 

3441Inició una [sesión en la nube que carga su repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github), o una [ultrareview](/docs/es/ultrareview) de una rama, y la carga no puede seguir una de las configuraciones de git que deciden qué reglas de atributo se aplican a sus archivos. Si la carga continuara y perdiera una regla, un archivo que git transforma antes de almacenarlo, como uno que un filtro limpio cifra, podría llegar a la nube tal como está en el disco. Claude Code rechaza la carga en su lugar, y nada se carga:

3442 

3443```text theme={null}

3444Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.

3445```

3446 

3447El mensaje nombra la configuración y dónde está establecida, y termina con la solución para el caso que golpeó. El mismo rechazo aparece para `core.attributesFile` y `attr.tree`, cada uno con su propia solución.

3448 

3449El mensaje puede nombrar un archivo de configuración que su configuración de git extrae a través de una directiva `include` o `includeIf`, incluso cuando esa condición de directiva no se aplica a este repositorio.

3450 

3451**Qué hacer:**

3452 

3453* Aplique la solución en la oración final del mensaje

3454 

3379<h3 id="github-isnt-connected-to-your-claude-account">3455<h3 id="github-isnt-connected-to-your-claude-account">

3380 GitHub no está conectado a su cuenta de Claude3456 GitHub no está conectado a su cuenta de Claude

3381</h3>3457</h3>


3888 Plugin was not uninstalled3964 Plugin was not uninstalled

3889</h3>3965</h3>

3890 3966 

3891Ejecutó [`claude plugin uninstall`](/docs/es/plugins/cli-reference#plugin-uninstall), o eligió **Uninstall** en la pestaña **Installed** de `/plugin`, y la desinstalación se detuvo con un mensaje que comienza `"<plugin>" was not uninstalled:`.3967Ejecutó [`claude plugin uninstall`](/docs/es/plugins/cli-reference#plugin-uninstall), o eligió **Uninstall** en la pestaña **Installed** de `/plugin`, y la desinstalación se detuvo con un mensaje que comienza `"<plugin>" was not uninstalled:`. Si el texto después de ese dos puntos comienza con `installed_plugins.json` en lugar de nombrar un archivo de configuración, la causa es contenido en `installed_plugins.json` que esta versión de Claude Code no puede leer. Para esa forma, consulte [`installed_plugins.json` holds a record this version can't read](/docs/es/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read).

3892 3968 

3893Cuando Claude Code eliminó la entrada del plugin de `enabledPlugins` y leyó los archivos de configuración de ese ámbito nuevamente, ya sea el plugin seguía activado allí, o un archivo que podría activarlo no se pudo leer o verificar. Eliminar las opciones guardadas del plugin, secretos y datos mientras una entrada de configuración podría activarlo nuevamente los perdería, por lo que la desinstalación se detiene en su lugar: el plugin permanece instalado y nada que guardó se elimina.3969Cuando Claude Code eliminó la entrada del plugin de `enabledPlugins` y leyó los archivos de configuración de ese ámbito nuevamente, ya sea el plugin seguía activado allí, o un archivo que podría activarlo no se pudo leer o verificar. Eliminar las opciones guardadas del plugin, secretos y datos mientras una entrada de configuración podría activarlo nuevamente los perdería, por lo que la desinstalación se detiene en su lugar: el plugin permanece instalado y nada que guardó se elimina.

3894 3970 

fast-mode.md +2 −0

Details

72 72 

73Escribe `/fast on` en la sesión para activar el modo rápido. Se mantiene activado solo para esa sesión y no se guarda como tu valor predeterminado. Los [requisitos](#requirements) también se aplican en sesiones en la nube.73Escribe `/fast on` en la sesión para activar el modo rápido. Se mantiene activado solo para esa sesión y no se guarda como tu valor predeterminado. Los [requisitos](#requirements) también se aplican en sesiones en la nube.

74 74 

75En el navegador en [claude.ai/code](https://claude.ai/code), también puedes activar y desactivar el modo rápido desde el menú de modelos en el cuadro de mensaje. El menú muestra el interruptor cuando tu plan incluye el modo rápido y el modelo seleccionado lo admite.

76 

75<h2 id="understand-the-cost-tradeoff">77<h2 id="understand-the-cost-tradeoff">

76 Comprender la compensación de costos78 Comprender la compensación de costos

77</h2>79</h2>

Details

312| [Computer use](/docs/es/computer-use) | ✓ | ✓ | ✗ | ✗ |312| [Computer use](/docs/es/computer-use) | ✓ | ✓ | ✗ | ✗ |

313| Dispatch ([Desktop](/docs/es/desktop#sessions-from-dispatch)) | ✓ | ✓ | ✗ | ✗ |313| Dispatch ([Desktop](/docs/es/desktop#sessions-from-dispatch)) | ✓ | ✓ | ✗ | ✗ |

314| [Code Review](/docs/es/code-review) | ✗ | ✗ | ✓ | ✓ |314| [Code Review](/docs/es/code-review) | ✗ | ✗ | ✓ | ✓ |

315| [Artifacts](/docs/es/artifacts) | ✓ | ✓ | ✓ | Habilitado por administrador |315| [Artifacts](/docs/es/artifacts) | ✓ | ✓ | ✓ | ✓ |

316| [Panel de análisis y métricas de contribución](/docs/es/analytics) | ✗ | ✗ | ✓ | ✓ |316| [Panel de análisis y métricas de contribución](/docs/es/analytics) | ✗ | ✗ | ✓ | ✓ |

317| [API de análisis empresarial](/docs/es/analytics#access-data-programmatically) | ✗ | ✗ | ✗ | ✓ |317| [API de análisis empresarial](/docs/es/analytics#access-data-programmatically) | ✗ | ✗ | ✗ | ✓ |

318| [Configuración administrada por servidor](/docs/es/server-managed-settings) | ✗ | ✗ | ✓ | ✓ |318| [Configuración administrada por servidor](/docs/es/server-managed-settings) | ✗ | ✗ | ✓ | ✓ |

fullscreen.md +1 −1

Details

294 294 

295Con la captura del ratón deshabilitada, el desplazamiento por teclado con `PgUp`, `PgDn`, `Ctrl+Home` y `Ctrl+End` sigue funcionando, y su terminal maneja la selección de forma nativa. Pierde la capacidad de hacer clic para posicionar el cursor, hacer clic para expandir, hacer clic en URL y desplazamiento de rueda dentro de Claude Code.295Con la captura del ratón deshabilitada, el desplazamiento por teclado con `PgUp`, `PgDn`, `Ctrl+Home` y `Ctrl+End` sigue funcionando, y su terminal maneja la selección de forma nativa. Pierde la capacidad de hacer clic para posicionar el cursor, hacer clic para expandir, hacer clic en URL y desplazamiento de rueda dentro de Claude Code.

296 296 

297Para 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.297Para mantener el desplazamiento de rueda pero desactivar el manejo de clic, arrastre y desplazamiento, establezca `CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1` en su lugar. `CLAUDE_CODE_DISABLE_MOUSE` tiene prioridad cuando ambas variables están establecidas.

298 298 

299Con los clics deshabilitados, Claude Code sigue capturando 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.299Con los clics deshabilitados, Claude Code sigue capturando 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.

300 300 

Details

43 43 

44Claude Code luego inserta una rama con los archivos de flujo de trabajo que selecciona, ya configurados para usar ese secreto, y abre GitHub en su navegador con una solicitud de extracción lista para crear. Cree y fusione esa solicitud de extracción, y `@claude` funciona en el repositorio.44Claude Code luego inserta una rama con los archivos de flujo de trabajo que selecciona, ya configurados para usar ese secreto, y abre GitHub en su navegador con una solicitud de extracción lista para crear. Cree y fusione esa solicitud de extracción, y `@claude` funciona en el repositorio.

45 45 

46Para detener la configuración a mitad de camino, presione Esc. Un paso ya en progreso se termina, y ningún paso posterior comienza. El mensaje de cierre enumera lo que ya sucedió en el repositorio, como una rama insertada o un secreto guardado.

47 

46Si selecciona el flujo de trabajo de revisión, Claude publica cada revisión en la solicitud de extracción misma, como un comentario en línea en cada problema que encuentra o como un comentario de resumen cuando no encuentra ninguno. Claude omite algunas solicitudes de extracción, como borradores. El [ejemplo de flujo de trabajo de revisión](#run-a-skill) usa la misma skill y las enumera. Antes de v2.1.229, Claude escribía su revisión solo en el registro de ejecución del flujo de trabajo.48Si selecciona el flujo de trabajo de revisión, Claude publica cada revisión en la solicitud de extracción misma, como un comentario en línea en cada problema que encuentra o como un comentario de resumen cuando no encuentra ninguno. Claude omite algunas solicitudes de extracción, como borradores. El [ejemplo de flujo de trabajo de revisión](#run-a-skill) usa la misma skill y las enumera. Antes de v2.1.229, Claude escribía su revisión solo en el registro de ejecución del flujo de trabajo.

47 49 

48Para actualizar un flujo de trabajo de revisión que una versión anterior generó, haga una de las siguientes:50Para actualizar un flujo de trabajo de revisión que una versión anterior generó, haga una de las siguientes:

Details

95 Requisitos de red95 Requisitos de red

96</h3>96</h3>

97 97 

98Para sesiones alojadas en Anthropic, su instancia de GHES debe ser accesible desde la infraestructura de Anthropic para que Claude pueda clonar repositorios y publicar comentarios de revisión. Si su instancia de GHES está detrás de un firewall, agregue a la lista blanca las [direcciones IP salientes](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#configure-git) clonan desde dentro de su red en su lugar, a menos que el ejecutor opte por el [proxy de git de Anthropic](/docs/es/self-hosted-environments-deploy#use-the-anthropic-git-proxy), que obtiene desde el lado de Anthropic y necesita la misma accesibilidad; el [conector de SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) cubre los flujos previos a la sesión alojados, como el selector de repositorio, para un host de GHES que solo es enrutable internamente.98Para sesiones alojadas en Anthropic, su instancia de GHES debe ser accesible desde la infraestructura de Anthropic para que Claude pueda clonar repositorios y publicar comentarios de revisión. Si su instancia de GHES está detrás de un firewall, agregue a la lista blanca las [direcciones IP salientes](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#configure-git) clonan desde dentro de su red en su lugar, a menos que el ejecutor opte por el [proxy de git de Anthropic](/docs/es/self-hosted-environments-deploy#use-the-anthropic-git-proxy), que obtiene desde el lado de Anthropic y necesita la misma accesibilidad. Los flujos previos a la sesión alojados, como el selector de repositorio, se ejecutan en el lado de Anthropic antes de que comience una sesión. Necesitan que su instancia de GHES sea accesible desde la infraestructura de Anthropic incluso cuando la sesión se ejecuta en un entorno autohospedado. El [conector de SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) no está disponible, por lo que esos flujos no pueden alcanzar un host de GHES que solo sea enrutable internamente.

99 99 

100<h2 id="developer-workflow">100<h2 id="developer-workflow">

101 Flujo de trabajo del desarrollador101 Flujo de trabajo del desarrollador


246 Instancia de GHES no accesible246 Instancia de GHES no accesible

247</h3>247</h3>

248 248 

249Si las revisiones o sesiones en la nube alojadas por Anthropic se agotan, su instancia de GHES puede no ser accesible desde la infraestructura de Anthropic. Confirme que su firewall permite conexiones entrantes desde las [direcciones IP de salida](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) alcanzan GHES desde dentro de su red, así que para ellas verifique la ruta de red propia del ejecutor y el [conector SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) en su lugar.249Si las revisiones o sesiones en la nube alojadas por Anthropic se agotan, su instancia de GHES puede no ser accesible desde la infraestructura de Anthropic. Confirme que su firewall permite conexiones entrantes desde las [direcciones IP de salida](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments) alcanzan GHES desde dentro de su red, así que cuando uno de ellos no pueda clonar, verifique la ruta de red propia del ejecutor en su lugar. Para el selector de repositorio y otros flujos previos a la sesión alojados, consulte [Requisitos de red](#network-requirements).

250 250 

251<h3 id="session-start-fails-with-unable-to-get-organization-uuid">251<h3 id="session-start-fails-with-unable-to-get-organization-uuid">

252 El inicio de sesión falla con `Unable to get organization UUID`252 El inicio de sesión falla con `Unable to get organization UUID`

glossary.md +1 −1

Details

56 Artifact56 Artifact

57</h3>57</h3>

58 58 

59Una página web interactiva en vivo que Claude Code publica desde su sesión a una URL privada en claude.ai, para que pueda ver la salida visualmente o compartirla en lugar de leer texto de terminal. La página se actualiza en su lugar cuando la sesión se republica. Los artefactos que crea desde Claude Code aparecen en la misma galería que los artefactos creados en conversaciones de claude.ai. El uso compartido depende de su plan: en Pro y Max, un enlace público que cualquiera puede abrir; en Team y Enterprise, uso compartido dentro de su organización, más enlaces públicos una vez que un propietario los habilita.59Una página web interactiva en vivo que Claude Code publica desde su sesión a una URL privada en claude.ai, para que pueda ver la salida visualmente o compartirla en lugar de leer texto de terminal. La página se actualiza en su lugar cuando la sesión se republica. Los artefactos que crea desde Claude Code aparecen en la misma galería que los artefactos creados en conversaciones de claude.ai. Las opciones de uso compartido dependen de su plan: consulte [Share an artifact](/docs/es/artifacts#share-an-artifact).

60 60 

61Más información: [Share session output as artifacts](/docs/es/artifacts)61Más información: [Share session output as artifacts](/docs/es/artifacts)

62 62 

Details

315 315 

316Claude 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/es/build-with-claude/context-windows#context-window-sizes-by-model) en Google Cloud's Agent Platform. 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.316Claude 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/es/build-with-claude/context-windows#context-window-sizes-by-model) en Google Cloud's Agent Platform. 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.

317 317 

318El [asistente de configuración](#sign-in-with-agent-platform) 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](/docs/es/model-config#pin-models-for-third-party-deployments) para obtener detalles.318El [asistente de configuración](#sign-in-with-agent-platform) 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](/docs/es/model-config#pin-models-for-third-party-deployments) para obtener detalles, incluida la forma de usar la ventana de 1M sin cambiar la fijación.

319 319 

320<h2 id="troubleshooting">320<h2 id="troubleshooting">

321 Solución de problemas321 Solución de problemas

hooks.md +158 −153

Details

274 274 

275Los hooks de archivos de configuración, configuración de política administrada y plugins también se ejecutan dentro de [subagentes](/docs/es/sub-agents). Cuando un subagente llama a una herramienta, eventos de herramienta como `PreToolUse` y `PostToolUse` activan los mismos hooks configurados que en la conversación principal, y la entrada lleva los campos de entrada comunes `agent_id` y `agent_type` [](#common-input-fields) que identifican al subagente.275Los hooks de archivos de configuración, configuración de política administrada y plugins también se ejecutan dentro de [subagentes](/docs/es/sub-agents). Cuando un subagente llama a una herramienta, eventos de herramienta como `PreToolUse` y `PostToolUse` activan los mismos hooks configurados que en la conversación principal, y la entrada lleva los campos de entrada comunes `agent_id` y `agent_type` [](#common-input-fields) que identifican al subagente.

276 276 

277Los administradores empresariales pueden usar `allowManagedHooksOnly` para restringir qué hooks se ejecutan:277Los administradores pueden usar [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) en [configuración administrada](/docs/es/managed-settings) para restringir qué hooks se ejecutan:

278 278 

279* Tus hooks de usuario, proyecto, local y plugin están bloqueados. Los hooks de plugins forzados a habilitarse en la configuración administrada `enabledPlugins` están exentos279* Tus hooks de usuario, proyecto, local y plugin están bloqueados. Los hooks de plugins forzados a habilitarse en la configuración administrada `enabledPlugins` están exentos

280* Claude Code también reduce tu configuración [`statusLine`](/docs/es/statusline), [`fileSuggestion`](/docs/es/settings-reference#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) a la configuración administrada280* Claude Code también reduce tu configuración [`statusLine`](/docs/es/statusline), [`fileSuggestion`](/docs/es/settings-reference#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) a la configuración administrada


304 304 

305Un matcher en la ruta de expresión regular se prueba con `RegExp.prototype.test` de JavaScript, que tiene éxito en una coincidencia en cualquier lugar del valor. `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`; envuelve el patrón en `^` y `$`, como en `^Edit$`, cuando necesites una coincidencia de cadena completa.305Un matcher en la ruta de expresión regular se prueba con `RegExp.prototype.test` de JavaScript, que tiene éxito en una coincidencia en cualquier lugar del valor. `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`; envuelve el patrón en `^` y `$`, como en `^Edit$`, cuando necesites una coincidencia de cadena completa.

306 306 

307Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un nombre con guiones como `code-reviewer` se evalúa como una expresión regular sin anclar, por lo que también se activa para `senior-code-reviewer`; anclalo como `^code-reviewer$` en esas versiones para coincidir solo con ese nombre.

308 

309`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 `,`.307`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 `,`.

310 308 

311El evento `FileChanged` no sigue estas reglas al construir su lista de vigilancia. Consulta [FileChanged](#filechanged).309El evento `FileChanged` no sigue estas reglas al construir su lista de vigilancia. Consulta [FileChanged](#filechanged).


380* `mcp__brave-search__.*` coincide con todas las herramientas de un servidor cuyo nombre contiene un guión378* `mcp__brave-search__.*` coincide con todas las herramientas de un servidor cuyo nombre contiene un guión

381* `mcp__.*__write.*` coincide con cualquier herramienta cuyo nombre comienza con `write` de cualquier servidor379* `mcp__.*__write.*` coincide con cualquier herramienta cuyo nombre comienza con `write` de cualquier servidor

382 380 

383Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un prefijo con guiones desnudo como `mcp__brave-search` se evalúa como una expresión regular sin anclar y coincide con cada herramienta de ese servidor. La forma `mcp__brave-search__.*` funciona en cada versión.

384 

385Las herramientas de un [servidor MCP incluido en plugin](/docs/es/mcp#plugin-provided-mcp-servers) utilizan un segmento de servidor con alcance que incluye el nombre del plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher escrito contra la clave del servidor desnuda nunca se activa para estas herramientas. Para un plugin llamado `my-plugin` que incluye un servidor bajo la clave `db`, una herramienta `query` aparece como `mcp__plugin_my-plugin_db__query`, por lo que el matcher para cada herramienta de ese servidor es `mcp__plugin_my-plugin_db__.*`. Utiliza el mismo nombre de herramienta con alcance en el campo [`if`](#common-fields) de un manejador. Consulta [Servidores MCP incluidos en plugin](/docs/es/mcp#plugin-provided-mcp-servers) para saber cómo se construye el nombre con alcance.381Las herramientas de un [servidor MCP incluido en plugin](/docs/es/mcp#plugin-provided-mcp-servers) utilizan un segmento de servidor con alcance que incluye el nombre del plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher escrito contra la clave del servidor desnuda nunca se activa para estas herramientas. Para un plugin llamado `my-plugin` que incluye un servidor bajo la clave `db`, una herramienta `query` aparece como `mcp__plugin_my-plugin_db__query`, por lo que el matcher para cada herramienta de ese servidor es `mcp__plugin_my-plugin_db__.*`. Utiliza el mismo nombre de herramienta con alcance en el campo [`if`](#common-fields) de un manejador. Consulta [Servidores MCP incluidos en plugin](/docs/es/mcp#plugin-provided-mcp-servers) para saber cómo se construye el nombre con alcance.

386 382 

387Este ejemplo registra todas las operaciones del servidor de memoria y valida operaciones de escritura de cualquier servidor MCP:383Este ejemplo registra todas las operaciones del servidor de memoria y valida operaciones de escritura de cualquier servidor MCP:


919| :- | :- | :- |915| :- | :- | :- |

920| `PreToolUse` | Sí | Bloquea la llamada a herramienta |916| `PreToolUse` | Sí | Bloquea la llamada a herramienta |

921| `PermissionRequest` | No | El código de salida 2 no se honra para este evento y el flujo de permiso procede sin cambios. Deniegue a través del objeto [`decision`](#permissionrequest-decision-control) en su lugar |917| `PermissionRequest` | No | El código de salida 2 no se honra para este evento y el flujo de permiso procede sin cambios. Deniegue a través del objeto [`decision`](#permissionrequest-decision-control) en su lugar |

922| `UserPromptSubmit` | Sí | Bloquea el procesamiento del prompt y borra el prompt |918| `UserPromptSubmit` | Sí | Bloquea el prompt, por lo que nunca llega a Claude. Consulte [What a blocked prompt leaves behind](#what-a-blocked-prompt-leaves-behind) |

923| `UserPromptExpansion` | Sí | Bloquea la expansión |919| `UserPromptExpansion` | Sí | Bloquea la expansión |

924| `Stop` | Sí | Evita que Claude se detenga, continúa la conversación |920| `Stop` | Sí | Evita que Claude se detenga, continúa la conversación |

925| `SubagentStop` | Sí | Evita que el subagente se detenga |921| `SubagentStop` | Sí | Evita que el subagente se detenga |


1187| `resume` | `--resume`, `--continue`, o `/resume` |1183| `resume` | `--resume`, `--continue`, o `/resume` |

1188| `clear` | `/clear` |1184| `clear` | `/clear` |

1189| `compact` | Compactación automática o manual |1185| `compact` | Compactación automática o manual |

1190| `fork` | Una nueva sesión bifurcada desde una existente: `--fork-session` con `--resume` o `--continue`, la copia de fondo `/fork`, o `/branch` |1186| `fork` | Una nueva sesión bifurcada desde una existente: `--fork-session` con `--resume` o `--continue`, la copia de fondo `/fork`, `/branch`, o una conversación que [mueve al fondo](/docs/es/agent-view#from-inside-a-session) |

1191 1187 

1192Antes de v2.1.214, las sesiones bifurcadas reportaban origen `"resume"`.1188Antes de v2.1.214, las sesiones bifurcadas reportaban origen `"resume"`.

1193 1189 

1194Cuando inicia una sesión interactiva, reanuda una conversación al iniciar con `--continue` o `--resume`, o ejecuta `/clear`, los hooks SessionStart se ejecutan en segundo plano. Puede escribir de inmediato, y una conversación que reanudó aparece sin esperar a los hooks. La primera respuesta de Claude aún espera a que los hooks terminen, por lo que su contexto llega a Claude.1190Cuando inicia una sesión interactiva, reanuda una conversación al iniciar con `--continue` o `--resume`, o ejecuta `/clear`, los hooks SessionStart se ejecutan en segundo plano. Puede escribir de inmediato, y una conversación que reanudó aparece sin esperar a que se completen los hooks. La primera respuesta de Claude aún espera a que se completen los hooks, por lo que su contexto llega a Claude.

1195 1191 

1196Cuando cambia de conversaciones con `/resume` dentro de una sesión, el cambio espera a que los hooks terminen. Si ejecuta `/clear` o cambia a otra conversación mientras los hooks de fondo aún se están ejecutando, nada de lo que devuelven se aplica a la sesión.1192Cuando cambia de conversaciones con `/resume` dentro de una sesión, el cambio espera a que se completen los hooks. Si ejecuta `/clear` o cambia a otra conversación mientras los hooks de fondo aún se están ejecutando, nada de lo que devuelven se aplica a la sesión.

1197 1193 

1198La misma espera se aplica al iniciar, incluida una sesión reanudada: un prompt que envía mientras los hooks SessionStart aún se están ejecutando no llega a Claude hasta que terminen.1194La misma espera se aplica al iniciar, incluida una sesión reanudada: un prompt que envía mientras los hooks SessionStart aún se están ejecutando no llega a Claude hasta que se completen.

1199 1195 

1200Durante cualquiera de las esperas, presione `Esc` para recuperar el prompt en la entrada sin enviarlo. Los hooks siguen ejecutándose.1196Durante cualquiera de las esperas, presione `Esc` para recuperar el prompt en la entrada sin enviarlo. Los hooks siguen ejecutándose.

1201 1197 


1208| Campo | Descripción |1204| Campo | Descripción |

1209| :- | :- |1205| :- | :- |

1210| `source` | Cómo se inició la sesión: `"startup"` para nuevas sesiones, `"resume"` para sesiones reanudadas, `"clear"` después de `/clear`, `"compact"` después de compactación, o `"fork"` para una nueva sesión bifurcada desde una existente |1206| `source` | Cómo se inició la sesión: `"startup"` para nuevas sesiones, `"resume"` para sesiones reanudadas, `"clear"` después de `/clear`, `"compact"` después de compactación, o `"fork"` para una nueva sesión bifurcada desde una existente |

1211| `model` | El identificador del modelo activo. Puede omitirse, por ejemplo después de `/clear` o cuando una sesión se restaura a través de recuperación de conversación, así que verifique el campo antes de leerlo |1207| `model` | El identificador del modelo activo. Puede omitirse, por ejemplo después de `/clear` o cuando se restaura una sesión a través de recuperación de conversación, así que verifique el campo antes de leerlo |

1212| `agent_type` | El nombre del agente, presente cuando inicia Claude Code con `claude --agent <name>` |1208| `agent_type` | El nombre del agente, presente cuando inicia Claude Code con `claude --agent <name>` |

1213| `session_title` | El título de sesión actual si ya está establecido, por ejemplo a través de `--name` o `/rename`. Un hook que emite `sessionTitle` puede verificar `session_title` primero para evitar sobrescribir un título que el usuario estableció explícitamente |1209| `session_title` | El título de sesión actual si ya está establecido, por ejemplo a través de `--name` o `/rename`. Un hook que emite `sessionTitle` puede verificar `session_title` primero para evitar sobrescribir un título que el usuario estableció explícitamente |

1214 1210 


1218| :- | :- |1214| :- | :- |

1219| `seconds_since_last_response` | Segundos de reloj de pared desde la última respuesta en la transcripción reanudada |1215| `seconds_since_last_response` | Segundos de reloj de pared desde la última respuesta en la transcripción reanudada |

1220| `context_tokens` | Tokens que la primera solicitud de la sesión reanudada reenvía como su prompt |1216| `context_tokens` | Tokens que la primera solicitud de la sesión reanudada reenvía como su prompt |

1221| `prompt_cache_likely_expired` | `true` cuando la última respuesta es más antigua que la [duración del caché de prompt](/docs/es/prompt-caching#cache-lifetime) de la sesión o una compactación posterior reemplazó la conversación en caché |1217| `prompt_cache_likely_expired` | `true` cuando la última respuesta es más antigua que la [duración de vida del caché de prompt](/docs/es/prompt-caching#cache-lifetime) de la sesión o una compactación posterior reemplazó la conversación en caché |

1222| `estimated_cache_write_usd` | Costo estimado en dólares estadounidenses de escribir `context_tokens` en el caché de prompt en el modelo de la sesión, excluyendo la respuesta |1218| `estimated_cache_write_usd` | Costo estimado en dólares estadounidenses de escribir `context_tokens` en el caché de prompt en el modelo de la sesión, excluyendo la respuesta |

1223 1219 

1224Este ejemplo muestra la entrada para una sesión reanudada 90 minutos después de su última respuesta:1220Este ejemplo muestra la entrada para una sesión reanudada 90 minutos después de su última respuesta:


1250| `initialUserMessage` | Cadena utilizada como el primer mensaje del usuario de la sesión. Se aplica en [modo no interactivo](/docs/es/headless) con la bandera `-p`, donde se convierte en el primer turno incluso si no se proporciona ningún prompt. Si se proporciona un prompt, lo sigue como el siguiente turno. A diferencia de `additionalContext`, que se adjunta a un turno existente, esto crea el turno |1246| `initialUserMessage` | Cadena utilizada como el primer mensaje del usuario de la sesión. Se aplica en [modo no interactivo](/docs/es/headless) con la bandera `-p`, donde se convierte en el primer turno incluso si no se proporciona ningún prompt. Si se proporciona un prompt, lo sigue como el siguiente turno. A diferencia de `additionalContext`, que se adjunta a un turno existente, esto crea el turno |

1251| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Úselo para nombrar sesiones automáticamente desde la carpeta de inicio, rama de git o nombre de worktree. Se aplica cuando `source` es `"startup"`, `"resume"`, o `"fork"`; se ignora en `"clear"` y `"compact"` |1247| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Úselo para nombrar sesiones automáticamente desde la carpeta de inicio, rama de git o nombre de worktree. Se aplica cuando `source` es `"startup"`, `"resume"`, o `"fork"`; se ignora en `"clear"` y `"compact"` |

1252| `watchPaths` | Matriz de rutas absolutas para observar eventos [FileChanged](#filechanged) durante esta sesión |1248| `watchPaths` | Matriz de rutas absolutas para observar eventos [FileChanged](#filechanged) durante esta sesión |

1253| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a escanear los directorios de [skill](/docs/es/skills) y comando después de que se completen los hooks SessionStart, por lo que las skills que instaló el hook están disponibles en la misma sesión, comenzando con el primer prompt |1249| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a escanear los directorios de [skill](/docs/es/skills) y comando después de que se completen los hooks SessionStart, por lo que los skills que instaló el hook están disponibles en la misma sesión, comenzando con el primer prompt |

1254 1250 

1255```json theme={null}1251```json theme={null}

1256{1252{


1264 1260 

1265Dado que stdout plano ya llega a Claude para este evento, un hook que solo carga contexto puede imprimir a stdout directamente sin construir JSON. Use la forma JSON cuando necesite combinar contexto con otros campos como `sessionTitle`.1261Dado que stdout plano ya llega a Claude para este evento, un hook que solo carga contexto puede imprimir a stdout directamente sin construir JSON. Use la forma JSON cuando necesite combinar contexto con otros campos como `sessionTitle`.

1266 1262 

1267Use `reloadSkills` cuando un hook SessionStart instala o actualiza skills. El descubrimiento de skills normalmente se ejecuta antes de que terminen los hooks SessionStart, por lo que los archivos que el hook escribe en `~/.claude/skills/` o `.claude/skills/` de otro modo solo aparecerían en la siguiente sesión. Este ejemplo sincroniza un repositorio de skills compartido y solicita el re-escaneo:1263Use `reloadSkills` cuando un hook SessionStart instala o actualiza skills. El descubrimiento de skills normalmente se ejecuta antes de que se completen los hooks SessionStart, por lo que los archivos que el hook escribe en `~/.claude/skills/` o `.claude/skills/` de otro modo solo aparecerían en la siguiente sesión. Este ejemplo sincroniza un repositorio de skills compartido y solicita el re-escaneo:

1268 1264 

1269```bash theme={null}1265```bash theme={null}

1270#!/bin/bash1266#!/bin/bash


1339 1335 

1340En caso de éxito, `--init-only` no imprime nada en la terminal. Para confirmar que los hooks se ejecutaron, comience con `claude --debug-file <path> --init-only`, reemplazando `<path>` con una ubicación de archivo de registro, y verifique el registro para las entradas de hook Setup y SessionStart.1336En caso de éxito, `--init-only` no imprime nada en la terminal. Para confirmar que los hooks se ejecutaron, comience con `claude --debug-file <path> --init-only`, reemplazando `<path>` con una ubicación de archivo de registro, y verifique el registro para las entradas de hook Setup y SessionStart.

1341 1337 

1342Debido a que Setup no se dispara en cada inicio, un plugin que necesita una dependencia instalada no puede confiar solo en Setup. El patrón práctico es verificar la dependencia en el primer uso e instalar si falta, por ejemplo un hook o skill que prueba `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecuta `npm install` si está ausente. Consulte el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data) para saber dónde almacenar dependencias instaladas. Si distribuye su plugin a través de un marketplace, es posible que no necesite este patrón: Claude Code [instala automáticamente las dependencias de paquetes Node.js elegibles](/docs/es/plugins/loading#node-js-package-dependencies) cuando almacena en caché el plugin.1338Debido a que Setup no se dispara en cada inicio, un plugin que necesita una dependencia instalada no puede confiar solo en Setup. El patrón práctico es verificar la dependencia en el primer uso e instalar si falta, por ejemplo un hook o skill que prueba `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecuta `npm install` si está ausente. Consulte el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data) para saber dónde almacenar las dependencias instaladas. Si distribuye su plugin a través de un marketplace, es posible que no necesite este patrón: Claude Code [instala automáticamente las dependencias del paquete Node.js elegibles](/docs/es/plugins/loading#node-js-package-dependencies) cuando almacena en caché el plugin.

1343 1339 

1344<h4 id="setup-input">1340<h4 id="setup-input">

1345 Entrada de Setup1341 Entrada de Setup


1363 1359 

1364Los hooks Setup no pueden bloquear; la ejecución continúa en cualquier código de salida. En cada código de salida, Claude Code descarta los [campos de salida JSON](#json-output) de un hook Setup, como `systemMessage`, `continue`, y `hookSpecificOutput.additionalContext`. Con `-p`, stdout, stderr y el código de salida de un hook Setup aparecen en la salida de la ejecución solo como [eventos `hook_response`](/docs/es/headless#read-session-metadata) cuando inicia con `--output-format stream-json --verbose`.1360Los hooks Setup no pueden bloquear; la ejecución continúa en cualquier código de salida. En cada código de salida, Claude Code descarta los [campos de salida JSON](#json-output) de un hook Setup, como `systemMessage`, `continue`, y `hookSpecificOutput.additionalContext`. Con `-p`, stdout, stderr y el código de salida de un hook Setup aparecen en la salida de la ejecución solo como [eventos `hook_response`](/docs/es/headless#read-session-metadata) cuando inicia con `--output-format stream-json --verbose`.

1365 1361 

1366Los hooks Setup tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en comandos Bash posteriores para la sesión, tal como en [hooks SessionStart](#persist-environment-variables). Solo se ejecutan hooks `type: "command"` en `Setup`. Un hook `type: "mcp_tool"` en `Setup` siempre se omite, como se describe en [campos de hook de herramienta MCP](#mcp-tool-hook-fields).1362Los hooks Setup tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en comandos Bash posteriores para la sesión, al igual que en [hooks SessionStart](#persist-environment-variables). Solo se ejecutan hooks `type: "command"` en `Setup`. Un hook `type: "mcp_tool"` en `Setup` siempre se omite, como se describe en [campos de hook de herramienta MCP](#mcp-tool-hook-fields).

1367 1363 

1368<h3 id="instructionsloaded">1364<h3 id="instructionsloaded">

1369 InstructionsLoaded1365 InstructionsLoaded


1406 Control de decisión de InstructionsLoaded1402 Control de decisión de InstructionsLoaded

1407</h4>1403</h4>

1408 1404 

1409Los hooks InstructionsLoaded no tienen control de decisión. No pueden bloquear o modificar la carga de instrucciones. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage` y `continue`. Use este evento para auditoría de registros, seguimiento de cumplimiento u observabilidad.1405Los hooks InstructionsLoaded no tienen control de decisión. No pueden bloquear o modificar la carga de instrucciones. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage` y `continue`. Use este evento para auditoría de registro, seguimiento de cumplimiento u observabilidad.

1410 1406 

1411<h3 id="userpromptsubmit">1407<h3 id="userpromptsubmit">

1412 UserPromptSubmit1408 UserPromptSubmit


1418 1414 

1419Aparte de un hook de comando que ejecuta con [`async: true`](#run-hooks-in-the-background), un hook `UserPromptSubmit` de comando, HTTP o herramienta MCP que alcanza su tiempo de espera se cancela y su salida, incluido cualquier `additionalContext`, se descarta. El prompt aún llega a Claude sin ese contexto. La transcripción muestra un aviso que nombra el hook, el tiempo de espera que se disparó y que la salida se descartó.1415Aparte de un hook de comando que ejecuta con [`async: true`](#run-hooks-in-the-background), un hook `UserPromptSubmit` de comando, HTTP o herramienta MCP que alcanza su tiempo de espera se cancela y su salida, incluido cualquier `additionalContext`, se descarta. El prompt aún llega a Claude sin ese contexto. La transcripción muestra un aviso que nombra el hook, el tiempo de espera que se disparó y que la salida se descartó.

1420 1416 

1421Un [hook de devolución de llamada del SDK del agente](/docs/es/agent-sdk/hooks) en `UserPromptSubmit` que alcanza su tiempo de espera bloquea el prompt con un mensaje que nombra el hook y el tiempo de espera, porque una devolución de llamada allí puede actuar como una puerta de política que no debe fallar abierta. La sesión continúa. Antes de v2.1.208, un tiempo de espera de devolución de llamada en ese evento terminaba el turno con un error de ejecución.1417Un [hook de callback del Agent SDK](/docs/es/agent-sdk/hooks) en `UserPromptSubmit` que alcanza su tiempo de espera bloquea el prompt con un mensaje que nombra el hook y el tiempo de espera, porque un callback allí puede estar actuando como una puerta de política que no debe fallar abierta. La sesión continúa. Antes de v2.1.208, un tiempo de espera de callback en ese evento terminaba el turno con un error de ejecución.

1422 1418 

1423<h4 id="userpromptsubmit-input">1419<h4 id="userpromptsubmit-input">

1424 Entrada de UserPromptSubmit1420 Entrada de UserPromptSubmit

1425</h4>1421</h4>

1426 1422 

1427Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptSubmit reciben el campo `prompt` que contiene el texto que el usuario envió. El contenido pegado que se redujo a un marcador de posición `[Pasted text #N]` llega expandido en su lugar. En sesiones donde Claude Code [marca texto pegado para Claude](/docs/es/terminal-config#how-claude-treats-pasted-text), ese contenido expandido se encuentra entre una línea `<pasted_content id="…">` y una línea `</pasted_content id="…">`, así que tenga en cuenta esas líneas si su hook analiza el prompt.1423Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptSubmit reciben el campo `prompt` que contiene el texto que envió el usuario. El contenido pegado que se redujo a un marcador de posición `[Pasted text #N]` llega expandido en su lugar. En sesiones donde Claude Code [marca texto pegado para Claude](/docs/es/terminal-config#how-claude-treats-pasted-text), ese contenido expandido se encuentra entre una línea `<pasted_content id="…">` y una línea `</pasted_content id="…">`, así que tenga en cuenta esas líneas si su hook analiza el prompt.

1428 1424 

1429```json theme={null}1425```json theme={null}

1430{1426{


1454 1450 

1455| Campo | Descripción |1451| Campo | Descripción |

1456| :- | :- |1452| :- | :- |

1457| `decision` | `"block"` evita que se procese el prompt y lo borra del contexto. Omita para permitir que el prompt continúe |1453| `decision` | `"block"` detiene el prompt antes de que llegue a Claude. Omita para permitir que el prompt continúe |

1458| `reason` | Se muestra al usuario cuando `decision` es `"block"`. No se agrega al contexto |1454| `reason` | Se muestra al usuario cuando `decision` es `"block"`. No se agrega al contexto |

1459| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt enviado. Consulte [Agregar contexto para Claude](#add-context-for-claude) |1455| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt enviado. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

1460| `sessionTitle` | Establece el título de la sesión. Úselo para nombrar sesiones automáticamente basándose en el contenido del prompt |1456| `sessionTitle` | Establece el título de la sesión. Úselo para nombrar sesiones automáticamente basándose en el contenido del prompt |

1461| `suppressOriginalPrompt` | Si es `true` cuando `decision` es `"block"`, omite el texto del prompt original del mensaje de bloqueo mostrado al usuario |1457| `suppressOriginalPrompt` | Si es `true` cuando el hook bloquea el prompt, deja el texto del prompt fuera del mensaje de bloqueo. Consulte [Lo que un prompt bloqueado deja atrás](#what-a-blocked-prompt-leaves-behind) |

1462 1458 

1463Un hook que bloquea al salir con 2 se enruta de la misma manera que `reason`: el mensaje de bloqueo muestra el texto stderr al usuario y no se agrega al contexto.1459Un hook que bloquea saliendo con 2 se enruta de la misma manera que `reason`: el mensaje de bloqueo muestra el texto stderr al usuario y no se agrega al contexto.

1464 1460 

1465```json theme={null}1461```json theme={null}

1466{1462{


1469 "hookSpecificOutput": {1465 "hookSpecificOutput": {

1470 "hookEventName": "UserPromptSubmit",1466 "hookEventName": "UserPromptSubmit",

1471 "additionalContext": "My additional context here",1467 "additionalContext": "My additional context here",

1472 "sessionTitle": "My session title"1468 "sessionTitle": "My session title",

1469 "suppressOriginalPrompt": true

1473 }1470 }

1474}1471}

1475```1472```

1476 1473 

1474<h4 id="what-a-blocked-prompt-leaves-behind">

1475 Lo que un prompt bloqueado deja atrás

1476</h4>

1477 

1478Un prompt bloqueado nunca llega a Claude, pero su texto no se elimina en todas partes. De forma predeterminada, el mensaje de bloqueo mostrado al usuario termina con `Original prompt:` seguido del texto enviado, y Claude Code escribe ese mensaje en el archivo de transcripción de la sesión en el disco. Para dejar el texto fuera del mensaje, imprima JSON con `"suppressOriginalPrompt": true` dentro de `hookSpecificOutput`. Esto funciona si el hook bloquea con `decision: "block"` o saliendo con 2. Un hook de salida 2 que no imprime JSON siempre obtiene el texto del prompt en su mensaje de bloqueo.

1479 

1480`suppressOriginalPrompt` cambia solo el mensaje de bloqueo. El texto enviado aún puede aparecer en archivos locales como la transcripción de la sesión y su historial de prompts, por lo que un hook de bloqueo no es una forma de mantener un secreto fuera del disco. Para limitar o eliminar esos archivos, consulte [Almacenamiento de texto plano](/docs/es/claude-directory#plaintext-storage) y [Borrar datos locales](/docs/es/claude-directory#clear-local-data).

1481 

1477<h3 id="userpromptexpansion">1482<h3 id="userpromptexpansion">

1478 UserPromptExpansion1483 UserPromptExpansion

1479</h3>1484</h3>

1480 1485 

1481Se ejecuta cuando un comando escrito por el usuario se expande en un prompt antes de llegar a Claude. Úselo para bloquear comandos específicos de invocación directa, inyectar contexto para una skill particular o registrar qué comandos invocan los usuarios. Por ejemplo, un hook que coincide con `deploy` puede bloquear `/deploy` a menos que esté presente un archivo de aprobación, o un hook que coincide con una skill de revisión puede agregar la lista de verificación de revisión del equipo como `additionalContext`.1486Se ejecuta cuando un comando escrito por el usuario se expande en un prompt antes de llegar a Claude. Úselo para bloquear comandos específicos de invocación directa, inyectar contexto para un skill particular o registrar qué comandos invocan los usuarios. Por ejemplo, un hook que coincide con `deploy` puede bloquear `/deploy` a menos que esté presente un archivo de aprobación, o un hook que coincide con un skill de revisión puede agregar la lista de verificación de revisión del equipo como `additionalContext`.

1482 1487 

1483Este evento cubre la ruta que `PreToolUse` no cubre: un hook `PreToolUse` que coincide con la herramienta `Skill` se dispara solo cuando Claude llama a la herramienta, pero escribir `/skillname` directamente omite `PreToolUse`. `UserPromptExpansion` se dispara en esa ruta directa.1488Este evento cubre la ruta que `PreToolUse` no cubre: un hook `PreToolUse` que coincide con la herramienta `Skill` se dispara solo cuando Claude llama a la herramienta, pero escribir `/skillname` directamente omite `PreToolUse`. `UserPromptExpansion` se dispara en esa ruta directa.

1484 1489 


1517| `reason` | Se muestra al usuario cuando `decision` es `"block"` |1522| `reason` | Se muestra al usuario cuando `decision` es `"block"` |

1518| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt expandido. Consulte [Agregar contexto para Claude](#add-context-for-claude) |1523| `additionalContext` | Cadena agregada al contexto de Claude junto con el prompt expandido. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

1519 1524 

1520Un hook que bloquea al salir con 2 se enruta de la misma manera que `reason`: el mensaje de bloqueo muestra el texto stderr al usuario.1525Un hook que bloquea saliendo con 2 se enruta de la misma manera que `reason`: el mensaje de bloqueo muestra el texto stderr al usuario.

1521 1526 

1522```json theme={null}1527```json theme={null}

1523{1528{


1539Use MessageDisplay para:1544Use MessageDisplay para:

1540 1545 

1541* eliminar markdown para una visualización mínima1546* eliminar markdown para una visualización mínima

1542* transformar el texto que una aplicación del SDK del agente muestra a sus usuarios1547* transformar el texto que una aplicación del Agent SDK muestra a sus usuarios

1543* redactar claves API o nombres de host internos de las respuestas de Claude1548* redactar claves API o nombres de host internos de las respuestas de Claude

1544 1549 

1545Claude Code retiene cada lote hasta que su hook devuelve, así que mantenga el hook rápido. Si el hook falla o agota el tiempo de espera, Claude Code muestra el texto original. El tiempo de espera predeterminado para este evento es 10 segundos; si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.1550Claude Code retiene cada lote hasta que su hook devuelve, así que mantenga el hook rápido. Si el hook falla o agota el tiempo de espera, Claude Code muestra el texto original. El tiempo de espera predeterminado para este evento es 10 segundos; si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.


1548 1553 

1549MessageDisplay no admite matchers y se dispara para cada mensaje del asistente que transmite texto; los mensajes sin texto, como respuestas de solo llamada de herramienta, no lo disparan.1554MessageDisplay no admite matchers y se dispara para cada mensaje del asistente que transmite texto; los mensajes sin texto, como respuestas de solo llamada de herramienta, no lo disparan.

1550 1555 

1551En ejecuciones no interactivas, incluidas consultas del SDK del agente y `claude -p`, MessageDisplay se ejecuta una vez por mensaje del asistente en lugar de una vez por lote de líneas. La llamada única llega después de que se completa el mensaje y lleva el texto del mensaje completo: `index` es `0`, `final` es `true`, y `delta` contiene el mensaje completo. Un hook que recopila el texto `delta` para cada mensaje recibe el mismo texto total en ambos modos.1556En ejecuciones no interactivas, incluidas consultas del Agent SDK y `claude -p`, MessageDisplay se ejecuta una vez por mensaje del asistente en lugar de una vez por lote de líneas. La llamada única llega después de que se completa el mensaje y lleva el texto completo del mensaje: `index` es `0`, `final` es `true`, y `delta` contiene el mensaje completo. Un hook que recopila el texto `delta` para cada mensaje recibe el mismo texto total en ambos modos.

1552 1557 

1553<h4 id="messagedisplay-input">1558<h4 id="messagedisplay-input">

1554 Entrada de MessageDisplay1559 Entrada de MessageDisplay


1562| `message_id` | UUID del mensaje del asistente que se muestra. Estable en cada lote del mismo mensaje. Este no es el ID `msg_…` de la API, por lo que no se puede correlacionar con IDs de mensajes de transcripción |1567| `message_id` | UUID del mensaje del asistente que se muestra. Estable en cada lote del mismo mensaje. Este no es el ID `msg_…` de la API, por lo que no se puede correlacionar con IDs de mensajes de transcripción |

1563| `index` | Índice basado en cero de este lote dentro del mensaje |1568| `index` | Índice basado en cero de este lote dentro del mensaje |

1564| `final` | `true` en el último lote del mensaje. Cada mensaje tiene exactamente un lote final |1569| `final` | `true` en el último lote del mensaje. Cada mensaje tiene exactamente un lote final |

1565| `delta` | Las líneas recién completadas desde el lote anterior, incluidas las saltos de línea finales. Siempre líneas completas, excepto el lote final que puede terminar a mitad de línea. En ejecuciones interactivas, el delta del lote final está vacío cuando el mensaje termina en un salto de línea, así que trate `final`, no un delta no vacío, como la señal de fin de mensaje. En ejecuciones del SDK del agente y `claude -p`, la llamada única lleva el mensaje completo |1570| `delta` | Las líneas recién completadas desde el lote anterior, incluidos los saltos de línea finales. Siempre líneas completas, excepto el lote final que puede terminar a mitad de línea. En ejecuciones interactivas, el delta del lote final está vacío cuando el mensaje termina en un salto de línea, así que trate `final`, no un delta no vacío, como la señal de fin de mensaje. En ejecuciones del Agent SDK y `claude -p`, la llamada única lleva el mensaje completo |

1566 1571 

1567```json theme={null}1572```json theme={null}

1568{1573{


1590 1595 

1591Los hooks MessageDisplay no tienen control de decisión. No pueden bloquear el mensaje o cambiar lo que se almacena en la transcripción o se envía a Claude. Claude Code actúa sobre `displayContent` de su salida JSON y descarta `systemMessage` y `continue`.1596Los hooks MessageDisplay no tienen control de decisión. No pueden bloquear el mensaje o cambiar lo que se almacena en la transcripción o se envía a Claude. Claude Code actúa sobre `displayContent` de su salida JSON y descarta `systemMessage` y `continue`.

1592 1597 

1593Este ejemplo elimina el formato markdown de las respuestas de Claude para una visualización de texto plano. El script lee cada lote de stdin, elimina marcadores en negrita y comillas invertidas de código en línea de `delta`, y devuelve el resultado como `displayContent`.1598Este ejemplo elimina el formato markdown de las respuestas de Claude para una visualización de texto plano. El script lee cada lote de stdin, elimina marcadores en negrita y backticks de código en línea de `delta`, y devuelve el resultado como `displayContent`.

1594 1599 

1595<Tabs>1600<Tabs>

1596 <Tab title="macOS/Linux">1601 <Tab title="macOS/Linux">


1649 }1654 }

1650 ```1655 ```

1651 1656 

1652 La bandera `-NoProfile` omite cargar su perfil de PowerShell para que el hook se inicie rápido, y `-ExecutionPolicy Bypass` permite que PowerShell ejecute el archivo de script local.1657 La bandera `-NoProfile` omite la carga de su perfil de PowerShell para que el hook se inicie rápido, y `-ExecutionPolicy Bypass` permite que PowerShell ejecute el archivo de script local.

1653 1658 

1654 Guarde este script en `.claude/hooks/plain-display.ps1` en su proyecto:1659 Guarde este script en `.claude/hooks/plain-display.ps1` en su proyecto:

1655 1660 


1677Para ejecutar un hook cuando un archivo específico cambia en el disco, sin importar qué lo escribió, use [FileChanged](#filechanged) en lugar de hacer coincidir herramientas de edición de archivos por nombre. A diferencia de PreToolUse, Claude Code ejecuta hooks FileChanged después del cambio y no tienen control de decisión, por lo que no pueden bloquear la escritura.1682Para ejecutar un hook cuando un archivo específico cambia en el disco, sin importar qué lo escribió, use [FileChanged](#filechanged) en lugar de hacer coincidir herramientas de edición de archivos por nombre. A diferencia de PreToolUse, Claude Code ejecuta hooks FileChanged después del cambio y no tienen control de decisión, por lo que no pueden bloquear la escritura.

1678 1683 

1679<Warning>1684<Warning>

1680 PreToolUse se ejecuta solo cuando Claude llama a una herramienta. Los archivos que [referencia con `@` en su prompt](/docs/es/common-workflows#reference-files-and-directories) se agregan sin ninguna llamada de herramienta: Claude Code inserta su contenido mientras construye el prompt, por lo que ningún hook PreToolUse se dispara para ellos, incluidos hooks que coinciden con `Read`. Para bloquear rutas específicas de referencias `@`, use una [regla de negación `Read`](/docs/es/permissions#read-and-edit) en su lugar.1685 PreToolUse se ejecuta solo cuando Claude llama a una herramienta. Los archivos que [referencia con `@` en su prompt](/docs/es/common-workflows#reference-files-and-directories) se agregan sin ninguna llamada de herramienta: Claude Code inserta su contenido mientras construye el prompt, por lo que ningún hook PreToolUse se dispara para ellos, incluidos los hooks que coinciden con `Read`. Para bloquear rutas específicas de referencias `@`, use una [regla de denegación `Read`](/docs/es/permissions#read-and-edit) en su lugar.

1681 1686 

1682 PreToolUse tampoco se dispara para [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior).1687 PreToolUse tampoco se dispara para [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior).

1683</Warning>1688</Warning>

1684 1689 

1685Use [control de decisión PreToolUse](#pretooluse-decision-control) para permitir, negar, preguntar o diferir la llamada de herramienta.1690Use [control de decisión PreToolUse](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada de herramienta.

1686 1691 

1687Un [hook de devolución de llamada del SDK del agente](/docs/es/agent-sdk/hooks) en `PreToolUse` que excede su tiempo de espera bloquea la llamada de herramienta, y Claude recibe un resultado de error que nombra el tiempo de espera. Una negación explícita devuelta por otro hook aún tiene prioridad.1692Un [hook de callback del Agent SDK](/docs/es/agent-sdk/hooks) en `PreToolUse` que excede su tiempo de espera bloquea la llamada de herramienta, y Claude recibe un resultado de error que nombra el tiempo de espera. Una denegación explícita devuelta por otro hook aún tiene prioridad.

1688 1693 

1689<h4 id="pretooluse-input">1694<h4 id="pretooluse-input">

1690 Entrada de PreToolUse1695 Entrada de PreToolUse


1692 1697 

1693Además de los [campos de entrada comunes](#common-input-fields), los hooks PreToolUse reciben `tool_name`, `tool_input`, y `tool_use_id`.1698Además de los [campos de entrada comunes](#common-input-fields), los hooks PreToolUse reciben `tool_name`, `tool_input`, y `tool_use_id`.

1694 1699 

1695Para una [herramienta MCP](#match-mcp-tools), la entrada también lleva `mcp_server`, un objeto con el `name` del servidor y un `source` que dice de dónde vino la definición del servidor. Los valores `source` incluyen `plugin`, `sdk`, y alcances de configuración como `user` y `project`. [`McpServerProvenance`](/docs/es/agent-sdk/typescript#mcpserverprovenance) en la referencia del SDK del agente los enumera todos y dice cómo tratar uno que no reconoce. Base las decisiones de confianza en `source` en lugar de en `name` o el prefijo de nombre de herramienta `mcp__<server>__`. El campo `mcp_server` requiere Claude Code v2.1.274 o posterior.1700Para una [herramienta MCP](#match-mcp-tools), la entrada también lleva `mcp_server`, un objeto con el `name` del servidor y un `source` que dice de dónde vino la definición del servidor. Los valores `source` incluyen `plugin`, `sdk`, y alcances de configuración como `user` y `project`. [`McpServerProvenance`](/docs/es/agent-sdk/typescript#mcpserverprovenance) en la referencia del Agent SDK los enumera todos y dice cómo tratar uno que no reconoce. Base las decisiones de confianza en `source` en lugar de en `name` o en el prefijo de nombre de herramienta `mcp__<server>__`. El campo `mcp_server` requiere Claude Code v2.1.274 o posterior.

1696 1701 

1697Para las herramientas de archivo `Write`, `Edit`, y `Read`, `tool_input.file_path` siempre es absoluto:1702Para las herramientas de archivo `Write`, `Edit`, y `Read`, `tool_input.file_path` siempre es absoluto:

1698 1703 


1744 1749 

1745| Campo | Tipo | Ejemplo | Descripción |1750| Campo | Tipo | Ejemplo | Descripción |

1746| :- | :- | :- | :- |1751| :- | :- | :- | :- |

1747| `changedFiles` | array | `["/path/to/src/app.ts"]` | Rutas absolutas de los archivos que el comando cambió, como máximo 200. Presente siempre que `files` contenga un diff o `moreFiles` esté por encima de cero |1752| `changedFiles` | array | `["/path/to/src/app.ts"]` | Rutas absolutas de los archivos que cambió el comando, como máximo 200. Presente siempre que `files` contenga un diff o `moreFiles` esté por encima de cero |

1748| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs de hasta 5 archivos cambiados, para visualización. `created` o `deleted` es `true` para un archivo que el comando agregó o eliminó |1753| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs de hasta 5 archivos cambiados, para visualización. `created` o `deleted` es `true` para un archivo que el comando agregó o eliminó |

1749| `moreFiles` | number | `2` | Recuento de archivos cambiados sin diff en `files` |1754| `moreFiles` | number | `2` | Recuento de archivos cambiados sin diff en `files` |

1750| `unavailable` | boolean | `true` | Se establece cuando el diff está incompleto o no se pudo tomar |1755| `unavailable` | boolean | `true` | Se establece cuando el diff está incompleto o no se pudo tomar |


1819| Campo | Tipo | Ejemplo | Descripción |1824| Campo | Tipo | Ejemplo | Descripción |

1820| :- | :- | :- | :- |1825| :- | :- | :- | :- |

1821| `pattern` | string | `"**/*.ts"` | Patrón glob para hacer coincidir archivos contra |1826| `pattern` | string | `"**/*.ts"` | Patrón glob para hacer coincidir archivos contra |

1822| `path` | string | `"/path/to/dir"` | Directorio opcional para buscar en. Por defecto es el directorio de trabajo actual |1827| `path` | string | `"/path/to/dir"` | Directorio opcional para buscar. Por defecto es el directorio de trabajo actual |

1823 1828 

1824<h5 id="grep">1829<h5 id="grep">

1825 Grep1830 Grep


1876 1881 

1877| Campo | Tipo | Ejemplo | Descripción |1882| Campo | Tipo | Ejemplo | Descripción |

1878| :- | :- | :- | :- |1883| :- | :- | :- | :- |

1879| `status` | string | `"completed"` | `"completed"` para subagentes en primer plano, `"async_launched"` para subagentes en segundo plano. A partir de v2.1.198, los subagentes se ejecutan en segundo plano de forma predeterminada, por lo que un `run_in_background` omitido también produce `"async_launched"` |1884| `status` | string | `"completed"` | `"completed"` para subagentes en primer plano, `"async_launched"` para subagentes de fondo. A partir de v2.1.198, los subagentes se ejecutan en segundo plano de forma predeterminada, por lo que un `run_in_background` omitido también produce `"async_launched"` |

1880| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para la ejecución del subagente |1885| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para la ejecución del subagente |

1881| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Los bloques de texto finales del subagente, o, para un subagente cuyo informe pasa a través de `SubagentHandback`, una nota breve sobre esa entrega en su lugar |1886| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Los bloques de texto finales del subagente, o, para un subagente cuyo informe pasa a través de `SubagentHandback`, una nota breve sobre esa entrega en su lugar |

1882| `resolvedModel` | string | `"claude-sonnet-4-5"` | Modelo en el que comenzó el subagente, que puede diferir del modelo solicitado |1887| `resolvedModel` | string | `"claude-sonnet-4-5"` | Modelo en el que comenzó el subagente, que puede diferir del modelo solicitado |

1883| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Modelos utilizados en orden, con repeticiones consecutivas colapsadas; se establece solo cuando el modelo fue intercambiado a mitad de ejecución. Requiere Claude Code v2.1.212 o posterior |1888| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Modelos utilizados en orden, con repeticiones consecutivas colapsadas; se establece solo cuando el modelo fue intercambiado a mitad de ejecución. Requiere Claude Code v2.1.212 o posterior |

1884| `totalTokens` | number | `12450` | Recuento de tokens de la solicitud final de la API del subagente: tokens de entrada, salida y caché combinados. Esto no es un total en toda la ejecución |1889| `totalTokens` | number | `12450` | Recuento de tokens de la solicitud final de la API del subagente: tokens de entrada, salida y caché combinados. Este no es un total en toda la ejecución |

1885| `totalDurationMs` | number | `48211` | Duración de reloj de pared de la ejecución del subagente |1890| `totalDurationMs` | number | `48211` | Duración de reloj de pared de la ejecución del subagente |

1886| `totalToolUseCount` | number | `7` | Recuento de llamadas de herramienta que hizo el subagente |1891| `totalToolUseCount` | number | `7` | Recuento de llamadas de herramienta que hizo el subagente |

1887| `usage` | object | `{"input_tokens": 8320, ...}` | Desglose de tokens por tipo de la solicitud final de la API: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |1892| `usage` | object | `{"input_tokens": 8320, ...}` | Desglose de tokens por tipo de la solicitud final de la API: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1888 1893 

1889En Claude Code v2.1.271 o posterior, un subagente que se ejecuta con la herramienta [`SubagentHandback`](/docs/es/tools-reference), que Claude Code proporciona en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), entrega su informe a través de esa herramienta en lugar de devolverlo como texto. El campo `content` de su resultado `completed` entonces lleva una nota breve sobre esa entrega en lugar del informe en sí. Para leer el informe, coincida un hook `PreToolUse` o `PostToolUse` en `SubagentHandback` y lea `tool_input.message`.1894En Claude Code v2.1.271 o posterior, un subagente que se ejecuta con la herramienta [`SubagentHandback`](/docs/es/tools-reference), que Claude Code proporciona en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), entrega su informe a través de esa herramienta en lugar de devolverlo como texto. El campo `content` de su resultado `completed` entonces lleva una nota breve sobre esa entrega en lugar del informe en sí. Para leer el informe, coincida un hook `PreToolUse` o `PostToolUse` en `SubagentHandback` y lea `tool_input.message`.

1890 1895 

1891Para subagentes en segundo plano, la herramienta devuelve cuando la tarea se mueve al segundo plano, por lo que `tool_response` no lleva campos de uso: un lanzamiento en segundo plano devuelve inmediatamente, y una tarea en primer plano que Claude Code pone en segundo plano a mitad de ejecución devuelve en esa transición. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, y `resolvedModel`.1896Para subagentes de fondo, la herramienta devuelve cuando la tarea se mueve al fondo, por lo que `tool_response` no lleva campos de uso: un lanzamiento de fondo devuelve inmediatamente, y una tarea en primer plano que Claude Code pone en segundo plano a mitad de ejecución devuelve en esa transición. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, y `resolvedModel`.

1892 1897 

1893En una respuesta `completed`, `resolvedModel` nombra el modelo en el que comenzó el subagente, que puede diferir del valor `model` en `tool_input`, como cuando `availableModels` u otra anulación se aplica. En una respuesta `async_launched`, `resolvedModel` nombra el modelo en uso cuando el agente se movió al segundo plano, por lo que un intercambio que ocurrió antes de pasar al segundo plano se refleja allí. El comportamiento de `modelsUsed` y `resolvedModel` en tiempo de fondo requiere Claude Code v2.1.212 o posterior.1898En una respuesta `completed`, `resolvedModel` nombra el modelo en el que comenzó el subagente, que puede diferir del valor `model` en `tool_input`, como cuando `availableModels` u otra anulación se aplica. En una respuesta `async_launched`, `resolvedModel` nombra el modelo en uso cuando el agente se movió al fondo, por lo que un intercambio que ocurrió antes de pasar al fondo se refleja allí. `modelsUsed` y el comportamiento de `resolvedModel` en el momento de pasar al fondo requieren Claude Code v2.1.212 o posterior.

1894 1899 

1895<a id="askuserquestion" />1900<a id="askuserquestion" />

1896 1901 


1909 ExitPlanMode1914 ExitPlanMode

1910</h5>1915</h5>

1911 1916 

1912Presenta un plan y pide al usuario que lo apruebe antes de que Claude salga del [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Claude escribe el plan en un archivo en el disco antes de llamar a la herramienta, por lo que la entrada `tool_input` literal del modelo es típicamente vacía. Claude Code inyecta el contenido del plan y la ruta del archivo antes de pasar la entrada a los hooks.1917Presenta un plan y pide al usuario que lo apruebe antes de que Claude salga del [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Claude escribe el plan en un archivo en el disco antes de llamar a la herramienta, por lo que la entrada literal `tool_input` del modelo es típicamente vacía. Claude Code inyecta el contenido del plan y la ruta del archivo antes de pasar la entrada a los hooks.

1913 1918 

1914| Campo | Tipo | Ejemplo | Descripción |1919| Campo | Tipo | Ejemplo | Descripción |

1915| :- | :- | :- | :- |1920| :- | :- | :- | :- |

1916| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenido del plan en Markdown. Inyectado desde el archivo del plan en el disco |1921| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenido del plan en Markdown. Inyectado desde el archivo del plan en el disco |

1917| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Ruta al archivo del plan. Inyectado |1922| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Ruta al archivo del plan. Inyectado |

1918| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecado. Claude Code acepta el campo pero lo ignora. Antes de v2.1.205, llevaba permisos basados en prompts que Claude solicitó para implementar el plan |1923| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecado. Claude Code acepta el campo pero lo ignora. Antes de v2.1.205, llevaba permisos basados en prompts que Claude solicitó implementar el plan |

1919 1924 

1920En `PostToolUse`, `tool_response` es un objeto con campos `plan` y `filePath` que contienen el plan aprobado, más banderas de estado internas. Lea `tool_response.plan` para el contenido del plan en lugar de releer el archivo del disco.1925En `PostToolUse`, `tool_response` es un objeto con campos `plan` y `filePath` que contienen el plan aprobado, más banderas de estado internas. Lea `tool_response.plan` para el contenido del plan en lugar de releer el archivo del disco.

1921 1926 


1923 Control de decisión de PreToolUse1928 Control de decisión de PreToolUse

1924</h4>1929</h4>

1925 1930 

1926Los hooks `PreToolUse` pueden controlar si procede una llamada de herramienta. A diferencia de otros hooks que usan un campo `decision` de nivel superior, PreToolUse devuelve su decisión dentro de un objeto `hookSpecificOutput`. Esto le da un control más rico: cuatro resultados (permitir, negar, preguntar o diferir) más la capacidad de modificar la entrada de herramienta antes de la ejecución.1931Los hooks `PreToolUse` pueden controlar si procede una llamada de herramienta. A diferencia de otros hooks que usan un campo `decision` de nivel superior, PreToolUse devuelve su decisión dentro de un objeto `hookSpecificOutput`. Esto le da control más rico: cuatro resultados (permitir, denegar, preguntar o diferir) más la capacidad de modificar la entrada de herramienta antes de la ejecución.

1927 1932 

1928| Campo | Descripción |1933| Campo | Descripción |

1929| :- | :- |1934| :- | :- |

1930| `permissionDecision` | `"allow"` omite el aviso de permiso, excepto para las [acciones que ningún modo auto-aprueba](/docs/es/permission-modes#actions-no-mode-auto-approves) y para `AskUserQuestion` y `ExitPlanMode`, que necesitan [`updatedInput` emparejado con él](#allow-with-updatedinput). `"deny"` evita la llamada de herramienta. `"ask"` solicita al usuario que confirme. `"defer"` sale correctamente para que la herramienta pueda reanudarse más tarde. Las [reglas de negación y pregunta](/docs/es/permissions#manage-permissions) aún se evalúan independientemente de lo que devuelva el hook |1935| `permissionDecision` | `"allow"` omite el prompt de permiso, excepto para las [acciones que ningún modo auto-aprueba](/docs/es/permission-modes#actions-no-mode-auto-approves) y para `AskUserQuestion` y `ExitPlanMode`, que necesitan [`updatedInput` emparejado con él](#allow-with-updatedinput). `"deny"` evita la llamada de herramienta. `"ask"` solicita al usuario que confirme. `"defer"` sale correctamente para que la herramienta pueda reanudarse más tarde. Las [reglas de denegación y pregunta](/docs/es/permissions#manage-permissions) aún se evalúan independientemente de lo que devuelva el hook |

1931| `permissionDecisionReason` | Para `"ask"`, se muestra al usuario pero no a Claude. Para `"deny"`, se muestra a Claude. Para `"allow"` y `"defer"`, se escribe en el [registro de depuración](#debug-hooks) solo |1936| `permissionDecisionReason` | Para `"ask"`, se muestra al usuario pero no a Claude. Para `"deny"`, se muestra a Claude. Para `"allow"` y `"defer"`, se escribe en el [registro de depuración](#debug-hooks) solo |

1932| `updatedInput` | Modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. Claude Code evalúa reglas de permiso y la [elegibilidad de fondo automático](/docs/es/tools-reference#background-commands) de un comando Bash contra la entrada que devuelve su hook, no la entrada que envió Claude. Combine con `"allow"` para auto-aprobar, o `"ask"` para mostrar la entrada modificada al usuario. Para `"defer"`, se ignora |1937| `updatedInput` | Modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. Claude Code evalúa reglas de permiso y la [elegibilidad de ejecución en segundo plano](/docs/es/tools-reference#background-commands) de un comando Bash contra la entrada que devuelve su hook, no la entrada que envió Claude. Combine con `"allow"` para auto-aprobar, o `"ask"` para mostrar la entrada modificada al usuario. Para `"defer"`, se ignora |

1933| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Se ignora cuando `permissionDecision` es `"defer"`. Consulte [Agregar contexto para Claude](#add-context-for-claude) |1938| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Se ignora cuando `permissionDecision` es `"defer"`. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

1934 1939 

1935Cuando múltiples hooks PreToolUse devuelven decisiones diferentes, la precedencia es `deny` > `defer` > `ask` > `allow`.1940Cuando múltiples hooks PreToolUse devuelven decisiones diferentes, la precedencia es `deny` > `defer` > `ask` > `allow`.

1936 1941 

1937Un hook que bloquea al salir con 2 se enruta de la misma manera que `"deny"`: Claude ve el mensaje stderr como la razón de la negación.1942Un hook que bloquea saliendo con 2 se enruta de la misma manera que `"deny"`: Claude ve el mensaje stderr como la razón de la denegación.

1938 1943 

1939Cuando un hook devuelve `"ask"`, el aviso de permiso mostrado al usuario incluye una etiqueta que identifica de dónde vino el hook: `[settings]` para un hook de cualquier archivo de configuración o del frontmatter del agente, `[plugin:<name>]` para el hook de un plugin, o `[skill]` para un hook del frontmatter de skill. Esto ayuda a los usuarios a entender qué fuente de configuración está solicitando confirmación.1944Cuando un hook devuelve `"ask"`, el prompt de permiso mostrado al usuario incluye una etiqueta que identifica de dónde vino el hook: `[settings]` para un hook de cualquier archivo de configuración o del frontmatter del agente, `[plugin:<name>]` para el hook de un plugin, o `[skill]` para un hook del frontmatter de skill. Esto ayuda a los usuarios a entender qué fuente de configuración está solicitando confirmación.

1940 1945 

1941Un `"ask"` de un hook también fuerza un aviso de permiso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): el clasificador aún puede negar la llamada de herramienta, pero no puede aprobar la llamada silenciosamente. Antes de v2.1.211, el clasificador podría aprobar un comando Bash ejecutándose fuera del [sandbox](/docs/es/sandboxing) sin mostrar el aviso que solicitó el hook; el clasificador aún aplicaba sus propias reglas de seguridad a ese comando, y una negación de hook `"deny"` siempre se honraba.1946Un `"ask"` de un hook también fuerza un prompt de permiso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): el clasificador aún puede denegar la llamada de herramienta, pero no puede aprobar la llamada silenciosamente. Antes de v2.1.211, el clasificador podría aprobar un comando Bash ejecutándose fuera del [sandbox](/docs/es/sandboxing) sin mostrar el prompt que solicitó el hook; el clasificador aún aplicaba sus propias reglas de seguridad a ese comando, y una denegación de hook `"deny"` siempre se honraba.

1942 1947 

1943```json theme={null}1948```json theme={null}

1944{1949{


1956 1961 

1957<span id="allow-with-updatedinput" />1962<span id="allow-with-updatedinput" />

1958 1963 

1959En [modo no interactivo](/docs/es/headless) con la bandera `-p`, Claude Code ofrece `AskUserQuestion` y `ExitPlanMode` solo cuando la ejecución tiene un [anfitrión de permiso](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs) para recibir el aviso, como una devolución de llamada `canUseTool` del SDK del agente. Estas herramientas requieren interacción del usuario. Devolver `permissionDecision: "allow"` junto con `updatedInput` satisface ese requisito: el hook lee la entrada de la herramienta de stdin, recopila la respuesta a través de su propia interfaz de usuario, y la devuelve en `updatedInput` para que la herramienta se ejecute sin solicitar. Devolver `"allow"` solo no es suficiente para estas herramientas. Para `AskUserQuestion`, devuelva la matriz `questions` original y agregue un objeto [`answers`](#askuserquestion) que asigne el texto de cada pregunta a la respuesta elegida.1964En [modo no interactivo](/docs/es/headless) con la bandera `-p`, Claude Code ofrece `AskUserQuestion` y `ExitPlanMode` solo cuando la ejecución tiene un [host de permiso](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs) para recibir el prompt, como un callback `canUseTool` del Agent SDK. Estas herramientas requieren interacción del usuario. Devolver `permissionDecision: "allow"` junto con `updatedInput` satisface ese requisito: el hook lee la entrada de la herramienta de stdin, recopila la respuesta a través de su propia interfaz de usuario, y la devuelve en `updatedInput` para que la herramienta se ejecute sin solicitar. Devolver `"allow"` solo no es suficiente para estas herramientas. Para `AskUserQuestion`, devuelva la matriz `questions` original y agregue un objeto [`answers`](#askuserquestion) que asigne el texto de cada pregunta a la respuesta elegida.

1960 1965 

1961A partir de v2.1.199, una herramienta MCP cuyo servidor la marca con [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) es más estricta: un hook no puede omitir su aviso de aprobación con `"allow"`, con o sin `updatedInput`, porque Claude Code no puede confirmar que el hook recopiló la interacción que la herramienta necesita.1966A partir de v2.1.199, una herramienta MCP cuyo servidor la marca con [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) es más estricta: un hook no puede omitir su prompt de aprobación con `"allow"`, con o sin `updatedInput`, porque Claude Code no puede confirmar que el hook recopiló la interacción que la herramienta necesita.

1962 1967 

1963<Note>1968<Note>

1964 PreToolUse anteriormente usaba campos `decision` y `reason` de nivel superior, pero estos están deprecados para este evento. Use `hookSpecificOutput.permissionDecision` y `hookSpecificOutput.permissionDecisionReason` en su lugar. Los valores deprecados `"approve"` y `"block"` se asignan a `"allow"` y `"deny"` respectivamente. Otros eventos como PostToolUse y Stop continúan usando `decision` y `reason` de nivel superior como su formato actual.1969 PreToolUse previamente usaba campos `decision` y `reason` de nivel superior, pero estos están deprecados para este evento. Use `hookSpecificOutput.permissionDecision` y `hookSpecificOutput.permissionDecisionReason` en su lugar. Los valores deprecados `"approve"` y `"block"` se asignan a `"allow"` y `"deny"` respectivamente. Otros eventos como PostToolUse y Stop continúan usando `decision` y `reason` de nivel superior como su formato actual.

1965</Note>1970</Note>

1966 1971 

1967<h4 id="defer-a-tool-call-for-later">1972<h4 id="defer-a-tool-call-for-later">

1968 Diferir una llamada de herramienta para más tarde1973 Diferir una llamada de herramienta para más tarde

1969</h4>1974</h4>

1970 1975 

1971`"defer"` es para integraciones que ejecutan `claude -p` como un subproceso y leen su salida JSON, como una aplicación del SDK del agente o una interfaz de usuario personalizada construida sobre Claude Code. Permite que ese proceso de llamada pause Claude en una llamada de herramienta, recopile entrada a través de su propia interfaz, y reanude donde se quedó. Claude Code honra este valor solo en [modo no interactivo](/docs/es/headless) con la bandera `-p`. En sesiones interactivas registra una advertencia e ignora el resultado del hook.1976`"defer"` es para integraciones que ejecutan `claude -p` como un subproceso y leen su salida JSON, como una aplicación del Agent SDK o una interfaz de usuario personalizada construida sobre Claude Code. Permite que ese proceso de llamada pause Claude en una llamada de herramienta, recopile entrada a través de su propia interfaz, y reanude donde se quedó. Claude Code honra este valor solo en [modo no interactivo](/docs/es/headless) con la bandera `-p`. En sesiones interactivas registra una advertencia e ignora el resultado del hook.

1972 1977 

1973La herramienta `AskUserQuestion` es el caso típico: Claude quiere hacer una pregunta al usuario, pero no hay terminal para responder. Una ejecución `-p` ofrece `AskUserQuestion` solo cuando tiene un [anfitrión de permiso](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), como una herramienta MCP que pasa con `--permission-prompt-tool`, así que inicie la ejecución con una. El viaje de ida y vuelta funciona así:1978La herramienta `AskUserQuestion` es el caso típico: Claude quiere hacer una pregunta al usuario, pero no hay terminal para responder. Una ejecución `-p` ofrece `AskUserQuestion` solo cuando tiene un [host de permiso](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), como una herramienta MCP que pasa con `--permission-prompt-tool`, así que inicie la ejecución con una. El viaje de ida y vuelta funciona así:

1974 1979 

19751. Claude llama a `AskUserQuestion`. Se dispara el hook `PreToolUse`.19801. Claude llama a `AskUserQuestion`. Se dispara el hook `PreToolUse`.

19762. El hook devuelve `permissionDecision: "defer"`. La herramienta no se ejecuta. El proceso sale con `stop_reason: "tool_deferred"` y la llamada de herramienta pendiente preservada en la transcripción.19812. El hook devuelve `permissionDecision: "defer"`. La herramienta no se ejecuta. El proceso sale con `stop_reason: "tool_deferred"` y la llamada de herramienta pendiente preservada en la transcripción.

19773. El proceso de llamada lee `deferred_tool_use` del resultado del SDK, muestra la pregunta en su propia interfaz de usuario, y espera una respuesta.19823. El proceso de llamada lee `deferred_tool_use` del resultado del SDK, muestra la pregunta en su propia interfaz de usuario, y espera una respuesta.

19784. El proceso de llamada ejecuta `claude -p --resume <session-id>` con el mismo anfitrión de permiso. Se dispara la misma llamada de herramienta `PreToolUse` nuevamente.19834. El proceso de llamada ejecuta `claude -p --resume <session-id>` con el mismo host de permiso. Se dispara la misma llamada de herramienta `PreToolUse` nuevamente.

19795. El hook devuelve `permissionDecision: "allow"` con la respuesta en `updatedInput`. La herramienta se ejecuta y Claude continúa.19845. El hook devuelve `permissionDecision: "allow"` con la respuesta en `updatedInput`. La herramienta se ejecuta y Claude continúa.

1980 1985 

1981El campo `deferred_tool_use` lleva el `id`, `name`, e `input` de la herramienta. El `input` son los parámetros que Claude generó para la llamada de herramienta, capturados antes de la ejecución:1986El campo `deferred_tool_use` lleva el `id`, `name`, e `input` de la herramienta. El `input` son los parámetros que Claude generó para la llamada de herramienta, capturados antes de la ejecución:


2001Si la herramienta diferida ya no está disponible cuando reanuda, el proceso sale con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` antes de que se dispare el hook. Esto sucede cuando un servidor MCP que proporcionó la herramienta no está conectado para la sesión reanudada. La carga `deferred_tool_use` aún se incluye para que pueda identificar qué herramienta desapareció.2006Si la herramienta diferida ya no está disponible cuando reanuda, el proceso sale con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` antes de que se dispare el hook. Esto sucede cuando un servidor MCP que proporcionó la herramienta no está conectado para la sesión reanudada. La carga `deferred_tool_use` aún se incluye para que pueda identificar qué herramienta desapareció.

2002 2007 

2003<Note>2008<Note>

2004 Para reanudar una sesión diferida en modo plan, pase [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) junto con `--resume` para que Claude Code pueda presentar el plan para aprobación. Si pasa ciertos otros indicadores de inicio, la ejecución reanudada no vuelve al modo plan; consulte [Reanudar en modo plan con `-p`](/docs/es/sessions#resume-in-plan-mode-with-p). Requiere Claude Code v2.1.246 o posterior.2009 Para reanudar una sesión diferida en modo de plan, pase [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) junto con `--resume` para que Claude Code pueda presentar el plan para aprobación. Si pasa ciertas otras banderas de inicio, la ejecución reanudada no vuelve al modo de plan; consulte [Reanudar en modo de plan con `-p`](/docs/es/sessions#resume-in-plan-mode-with-p). Requiere Claude Code v2.1.246 o posterior.

2005 2010 

2006 Cuando reanuda con `-p`, Claude Code no restaura ningún otro modo de permiso almacenado. Inicia la ejecución en el modo de permiso que una nueva ejecución `claude -p` iniciaría, así que pase `--permission-mode` o `--dangerously-skip-permissions` nuevamente si la sesión diferida usó una. Cuando reanuda con `claude --resume <session-id>` sin `-p`, Claude Code restaura el modo de permiso almacenado, con las excepciones enumeradas en [modo de permiso en reanudar](/docs/es/sessions#permission-mode-on-resume).2011 Cuando reanuda con `-p`, Claude Code no restaura ningún otro modo de permiso almacenado. Inicia la ejecución en el modo de permiso que una nueva ejecución `claude -p` iniciaría, así que pase `--permission-mode` o `--dangerously-skip-permissions` nuevamente si la sesión diferida usó uno. Cuando reanuda con `claude --resume <session-id>` sin `-p`, Claude Code restaura el modo de permiso almacenado, con las excepciones enumeradas en [modo de permiso en reanudar](/docs/es/sessions#permission-mode-on-resume).

2007</Note>2012</Note>

2008 2013 

2009<h3 id="permissionrequest">2014<h3 id="permissionrequest">

2010 PermissionRequest2015 PermissionRequest

2011</h3>2016</h3>

2012 2017 

2013Se ejecuta cuando Claude Code está a punto de pedirle permiso para usar una herramienta. En sesiones que no pueden mostrar un aviso, como subagentes en segundo plano en [modo no interactivo](/docs/es/headless), Claude Code aún ejecuta estos hooks, y si ningún hook devuelve una decisión, niega la llamada de herramienta.2018Se ejecuta cuando Claude Code está a punto de pedirle permiso para usar una herramienta. En sesiones que no pueden mostrar un prompt, como subagentes de fondo en [modo no interactivo](/docs/es/headless), Claude Code aún ejecuta estos hooks, y si ningún hook devuelve una decisión, niega la llamada de herramienta.

2014Use [control de decisión PermissionRequest](#permissionrequest-decision-control) para permitir o negar en nombre del usuario.2019Use [control de decisión PermissionRequest](#permissionrequest-decision-control) para permitir o denegar en nombre del usuario.

2015 2020 

2016Use este evento cuando necesite una señal en el momento en que Claude solicita permiso para usar una herramienta. Claude Code ejecuta un hook [Notification](#notification) con el tipo `permission_prompt` solo después de que el aviso ha esperado aproximadamente seis segundos.2021Use este evento cuando necesite una señal en el momento en que Claude solicita permiso para usar una herramienta. Claude Code ejecuta un hook [Notification](#notification) con el tipo `permission_prompt` solo después de que el prompt haya esperado aproximadamente seis segundos.

2017 2022 

2018Claude Code no ejecuta hooks PermissionRequest para la [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en sandbox. Para obtener una señal para ese aviso, use el tipo de notificación `permission_prompt`.2023Claude Code no ejecuta hooks PermissionRequest para la [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en sandbox. Para obtener una señal para ese prompt, use el tipo de notificación `permission_prompt`.

2019 2024 

2020Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2025Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

2021 2026 


2056 Control de decisión de PermissionRequest2061 Control de decisión de PermissionRequest

2057</h4>2062</h4>

2058 2063 

2059Los hooks `PermissionRequest` pueden permitir o negar solicitudes de permiso. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver un objeto `decision` con estos campos específicos del evento:2064Los hooks `PermissionRequest` pueden permitir o denegar solicitudes de permiso. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver un objeto `decision` con estos campos específicos del evento:

2060 2065 

2061| Campo | Descripción |2066| Campo | Descripción |

2062| :- | :- |2067| :- | :- |

2063| `behavior` | `"allow"` otorga el permiso, `"deny"` lo niega. Las [reglas de negación y pregunta](/docs/es/permissions#manage-permissions) aún se evalúan, por lo que un hook que devuelve `"allow"` no anula una regla de negación coincidente |2068| `behavior` | `"allow"` otorga el permiso, `"deny"` lo niega. Las [reglas de denegación y pregunta](/docs/es/permissions#manage-permissions) aún se evalúan, por lo que un hook que devuelve `"allow"` no anula una regla de denegación coincidente |

2064| `updatedInput` | Para `"allow"` solo: modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. La entrada modificada se re-evalúa contra reglas de negación y pregunta |2069| `updatedInput` | Para `"allow"` solo: modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza el objeto de entrada completo, así que incluya campos sin cambios junto con los modificados. La entrada modificada se re-evalúa contra reglas de denegación y pregunta |

2065| `updatedPermissions` | Para `"allow"` solo: matriz de [entradas de actualización de permiso](#permission-update-entries) a aplicar, como agregar una regla de permiso o cambiar el modo de permiso de la sesión |2070| `updatedPermissions` | Para `"allow"` solo: matriz de [entradas de actualización de permiso](#permission-update-entries) a aplicar, como agregar una regla de permiso o cambiar el modo de permiso de la sesión |

2066| `message` | Para `"deny"` solo: dice a Claude por qué se negó el permiso |2071| `message` | Para `"deny"` solo: dice a Claude por qué se negó el permiso |

2067| `interrupt` | Para `"deny"` solo: si es `true`, detiene a Claude |2072| `interrupt` | Para `"deny"` solo: si es `true`, detiene a Claude |


2098| `removeDirectories` | `directories`, `destination` | Elimina directorios de trabajo |2103| `removeDirectories` | `directories`, `destination` | Elimina directorios de trabajo |

2099 2104 

2100<Note>2105<Note>

2101 `setMode` con `bypassPermissions` solo tiene efecto si inició la sesión con modo de omisión ya disponible: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, o `permissions.defaultMode: "bypassPermissions"` en [configuración de usuario, `--settings`, o administrada](/docs/es/settings-reference#permissions-defaultmode). De lo contrario, la actualización es una no-op. La actualización también es una no-op cuando [`permissions.disableBypassPermissionsMode`](/docs/es/permissions#managed-settings) deshabilita el modo, o cuando la sesión comienza en [modo restringido](/docs/es/cli-reference#cli-flags).2106 `setMode` con `bypassPermissions` solo tiene efecto si inició la sesión con modo de bypass ya disponible: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, o `permissions.defaultMode: "bypassPermissions"` en [configuración de usuario, `--settings`, o configuración administrada](/docs/es/settings-reference#permissions-defaultmode). De lo contrario, la actualización es una no-op. La actualización también es una no-op cuando [`permissions.disableBypassPermissionsMode`](/docs/es/permissions#managed-settings) deshabilita el modo, o cuando la sesión comienza en [modo restringido](/docs/es/cli-reference#cli-flags).

2102 2107 

2103 `bypassPermissions` nunca se persiste como `defaultMode` independientemente de `destination`.2108 `bypassPermissions` nunca se persiste como `defaultMode` independientemente de `destination`.

2104</Note>2109</Note>


2112| `projectSettings` | `.claude/settings.json` |2117| `projectSettings` | `.claude/settings.json` |

2113| `userSettings` | `~/.claude/settings.json` |2118| `userSettings` | `~/.claude/settings.json` |

2114 2119 

2115Un hook puede devolver una de las `permission_suggestions` que recibió como su propia salida `updatedPermissions`.2120Un hook puede hacer eco de una de las `permission_suggestions` que recibió como su propia salida `updatedPermissions`.

2116 2121 

2117<h3 id="posttooluse">2122<h3 id="posttooluse">

2118 PostToolUse2123 PostToolUse


2131 Entrada de PostToolUse2136 Entrada de PostToolUse

2132</h4>2137</h4>

2133 2138 

2134Los hooks `PostToolUse` se disparan después de que una herramienta ya se ha ejecutado exitosamente. La entrada incluye tanto `tool_input`, los argumentos enviados a la herramienta, como `tool_response`, el resultado que devolvió. El esquema exacto para ambos depende de la herramienta. Las rutas `tool_input` de herramientas de archivo llegan en el mismo formato que para [PreToolUse](#pretooluse-input): siempre absolutas, con los separadores nativos de la plataforma, así que barras invertidas en Windows. Para una herramienta MCP, la entrada también lleva el objeto [`mcp_server`](#pretooluse-input).2139Los hooks `PostToolUse` se disparan después de que una herramienta ya se ha ejecutado exitosamente. La entrada incluye tanto `tool_input`, los argumentos enviados a la herramienta, como `tool_response`, el resultado que devolvió. El esquema exacto para ambos depende de la herramienta. Las rutas `tool_input` de herramientas de archivo llegan en el mismo formato que para [PreToolUse](#pretooluse-input): siempre absoluto, con los separadores nativos de la plataforma, así que barras invertidas en Windows. Para una herramienta MCP, la entrada también lleva el objeto [`mcp_server`](#pretooluse-input).

2135 2140 

2136```json theme={null}2141```json theme={null}

2137{2142{


2156 2161 

2157| Campo | Descripción |2162| Campo | Descripción |

2158| :- | :- |2163| :- | :- |

2159| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a avisos de permiso y hooks PreToolUse |2164| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a prompts de permiso y hooks PreToolUse |

2160 2165 

2161<h4 id="posttooluse-decision-control">2166<h4 id="posttooluse-decision-control">

2162 Control de decisión de PostToolUse2167 Control de decisión de PostToolUse


2215 2220 

2216Cuánto peso da el clasificador a la nota depende de dónde configuró el hook:2221Cuánto peso da el clasificador a la nota depende de dónde configuró el hook:

2217 2222 

2218* **Hooks configurados en Claude Code**: para hooks de archivos de configuración, plugins, skills y frontmatter del agente, el clasificador trata la nota como contexto no verificado proporcionado por la aplicación. La nota nunca establece intención del usuario, y si afirma que aprobó o solicitó algo, el clasificador verifica esa afirmación contra sus propios mensajes en la conversación2223* **Hooks configurados en Claude Code**: para hooks de archivos de configuración, plugins, skills y frontmatter del agente, el clasificador trata la nota como contexto no verificado proporcionado por la aplicación. La nota nunca establece intención del usuario, y si afirma que usted aprobó o solicitó algo, el clasificador verifica esa afirmación contra sus propios mensajes en la conversación

2219* **Devoluciones de llamada del SDK del agente en proceso**: cuando una aplicación que integra Claude Code registra el hook como una [devolución de llamada del SDK de TypeScript](/docs/es/agent-sdk/hooks) y devuelve la nota durante la sesión en vivo, el clasificador puede pesar una declaración del usuario retransmitida en la nota como intención del usuario. Tal declaración puede satisfacer un requisito de consentimiento que el clasificador aceptaría de un mensaje que envía, pero nunca levanta un bloqueo que su propio mensaje tampoco podría levantar. Después de que se reanuda una sesión, Claude Code trata las notas restauradas como contexto no verificado. Cuando hooks de ambos grupos anotan la misma llamada, el clasificador trata la nota combinada como no verificada2224* **Callbacks del Agent SDK en proceso**: cuando una aplicación que integra Claude Code registra el hook como un [callback del SDK de TypeScript](/docs/es/agent-sdk/hooks) y devuelve la nota durante la sesión en vivo, el clasificador puede pesar una declaración del usuario retransmitida en la nota como intención del usuario. Tal declaración puede satisfacer un requisito de consentimiento que el clasificador aceptaría de un mensaje que envía, pero nunca levanta un bloqueo que su propio mensaje tampoco pudiera levantar. Después de que se reanuda una sesión, Claude Code trata las notas restauradas como contexto no verificado. Cuando hooks de ambos grupos anotan la misma llamada, el clasificador trata la nota combinada como no verificada

2220 2225 

2221Claude Code aplica estos límites al entregar la nota:2226Claude Code aplica estos límites al entregar la nota:

2222 2227 

2223* **Longitud**: Claude Code limita las notas para una llamada de herramienta a 2,000 caracteres y trunca el resto. El límite se comparte en cada hook que responde a esa llamada2228* **Longitud**: Claude Code limita las notas para una llamada de herramienta a 2,000 caracteres y trunca el resto. El límite se comparte en cada hook que responde a esa llamada

2224* **Solo respuestas sincrónicas**: Claude Code ignora el campo en la respuesta de un hook que [se ejecuta en segundo plano](#run-hooks-in-the-background), porque esa respuesta llega después de que Claude Code registra el resultado de la herramienta2229* **Solo respuestas sincrónicas**: Claude Code ignora el campo en la respuesta de un hook que [se ejecuta en segundo plano](#run-hooks-in-the-background), porque esa respuesta llega después de que Claude Code registra el resultado de la herramienta

2225* **Llamadas que el clasificador no registra**: la transcripción del clasificador omite búsquedas de solo lectura como lecturas de archivo y búsquedas. Claude Code descarta una nota adjunta a una de esas llamadas2230* **Llamadas que el clasificador no registra**: la transcripción del clasificador omite búsquedas de solo lectura como lecturas de archivo y búsquedas. Claude Code descarta una nota adjunta a una de esas llamadas

2226* **Interacción con reescrituras**: cuando la nota describe salida que está reemplazando con `updatedToolOutput`, devuelva ambos campos en la misma respuesta del hook. Claude Code descarta la nota si esa reescritura se rechaza u otra reescritura del hook la reemplaza. Claude Code entrega una nota que devuelve sin una reescritura incluso cuando otro hook reescribe la salida2231* **Interacción con reescrituras**: cuando la nota describe salida que está reemplazando con `updatedToolOutput`, devuelva ambos campos en la misma respuesta del hook. Claude Code descarta la nota si esa reescritura se rechaza u otro reemplazo del hook la reemplaza. Claude Code entrega una nota que devuelve sin una reescritura incluso cuando otro hook reescribe la salida

2227 2232 

2228<Warning>2233<Warning>

2229 El clasificador lee contenido que coloca en `classifierContext` como información del anfitrión de la aplicación de la sesión, así que no copie salida de herramientas no confiables o texto de terceros en él. Mantenga la nota a una afirmación breve sobre esta única llamada, como un hecho sobre su origen o una declaración del usuario sobre ella; no use el campo para entregar mensajes no relacionados o un flujo de eventos.2234 El clasificador lee contenido que coloca en `classifierContext` como información del anfitrión de la aplicación que aloja la sesión, así que no copie salida de herramientas no confiables o texto de terceros en él. Mantenga la nota a una afirmación breve sobre esta única llamada, como un hecho sobre su origen o una declaración del usuario sobre ella; no use el campo para entregar mensajes no relacionados o un flujo de eventos.

2230</Warning>2235</Warning>

2231 2236 

2232<h3 id="posttoolusefailure">2237<h3 id="posttoolusefailure">


2238Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2243Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

2239 2244 

2240<Note>2245<Note>

2241 Este evento no se dispara para llamadas de herramienta rechazadas antes de la ejecución: un nombre de herramienta desconocido, entrada que falla en validación de esquema o específica de herramienta, o una negación de permiso. Los rechazos de validación se devuelven como resultados `tool_use_error` y ocurren antes de que se ejecuten los hooks, por lo que no disparan ni `PreToolUse` ni `PostToolUseFailure`. Las negaciones de permiso disparan `PreToolUse` pero no este evento; consulte [PermissionDenied](#permissiondenied).2246 Este evento no se dispara para llamadas de herramienta rechazadas antes de la ejecución: un nombre de herramienta desconocido, entrada que falla en validación de esquema o específica de herramienta, o una denegación de permiso. Los rechazos de validación se devuelven como resultados `tool_use_error` y ocurren antes de que se ejecuten los hooks, por lo que no disparan ni `PreToolUse` ni `PostToolUseFailure`. Las denegaciones de permiso disparan `PreToolUse` pero no este evento; consulte [PermissionDenied](#permissiondenied).

2242</Note>2247</Note>

2243 2248 

2244<h4 id="posttoolusefailure-input">2249<h4 id="posttoolusefailure-input">


2270| :- | :- |2275| :- | :- |

2271| `error` | Cadena que describe qué salió mal. El formato depende de la herramienta que falló |2276| `error` | Cadena que describe qué salió mal. El formato depende de la herramienta que falló |

2272| `is_interrupt` | Booleano opcional. Verdadero cuando el fallo llegó a Claude Code como una interrupción en lugar de como un error que reportó la herramienta. Cancelar una herramienta en ejecución no dispara este hook; el resultado de la herramienta lleva el mensaje de interrupción en su lugar |2277| `is_interrupt` | Booleano opcional. Verdadero cuando el fallo llegó a Claude Code como una interrupción en lugar de como un error que reportó la herramienta. Cancelar una herramienta en ejecución no dispara este hook; el resultado de la herramienta lleva el mensaje de interrupción en su lugar |

2273| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a avisos de permiso y hooks PreToolUse |2278| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a prompts de permiso y hooks PreToolUse |

2274 2279 

2275La cadena `error` es generalmente el mismo texto que Claude recibe como resultado de la herramienta fallida. Su formato varía según la herramienta y el fallo. Clave su hook en `tool_name`, `is_interrupt`, y la primera línea `Exit code N`; trate el resto de la cadena como texto de visualización, no como un formato estable.2280La cadena `error` es generalmente el mismo texto que Claude recibe como resultado de la herramienta fallida. Su formato varía según la herramienta y el fallo. Clave su hook en `tool_name`, `is_interrupt`, y la primera línea `Exit code N`; trate el resto de la cadena como texto de visualización, no como un formato estable.

2276 2281 

2277* Para Bash y PowerShell, un comando que se ejecutó y salió produce una primera línea `Exit code N`, luego cualquier salida que el comando produjo como un bloque con stdout y stderr intercalados2282* Para Bash y PowerShell, un comando que se ejecutó y salió produce una primera línea `Exit code N`, luego cualquier salida que el comando produjo como un bloque con stdout y stderr intercalados

2278* Una carga también puede llevar un mensaje de fallo desnudo sin línea de código de salida, cuando Claude Code no pudo iniciar el proceso de shell en sí2283* Una carga también puede llevar un mensaje de fallo desnudo sin línea de código de salida, cuando Claude Code no pudo iniciar el proceso de shell en sí

2279* Claude Code trunca a mitad de cadenas largas alrededor de un marcador `... [N characters truncated] ...`, e puede insertar líneas propias, como `Command timed out after 2m 0s`2284* Claude Code trunca en el medio cadenas largas alrededor de un marcador `... [N characters truncated] ...`, e puede insertar líneas propias, como `Command timed out after 2m 0s`

2280 2285 

2281<h4 id="posttoolusefailure-decision-control">2286<h4 id="posttoolusefailure-decision-control">

2282 Control de decisión de PostToolUseFailure2287 Control de decisión de PostToolUseFailure


2301 PostToolBatch2306 PostToolBatch

2302</h3>2307</h3>

2303 2308 

2304Se ejecuta una vez después de que cada llamada de herramienta en un lote se haya resuelto, antes de que Claude Code envíe la siguiente solicitud al modelo. `PostToolUse` se dispara una vez por herramienta, lo que significa que se dispara concurrentemente cuando Claude hace llamadas de herramienta paralelas. `PostToolBatch` se dispara exactamente una vez con el lote completo, por lo que es el lugar correcto para inyectar contexto que dependa del conjunto de herramientas que se ejecutaron en lugar de en cualquier herramienta única. No hay matcher para este evento.2309Se ejecuta una vez después de que cada llamada de herramienta en un lote se haya resuelto, antes de que Claude Code envíe la siguiente solicitud al modelo. `PostToolUse` se dispara una vez por herramienta, lo que significa que se dispara simultáneamente cuando Claude hace llamadas de herramienta paralelas. `PostToolBatch` se dispara exactamente una vez con el lote completo, por lo que es el lugar correcto para inyectar contexto que depende del conjunto de herramientas que se ejecutaron en lugar de en cualquier herramienta única. No hay matcher para este evento.

2305 2310 

2306<h4 id="posttoolbatch-input">2311<h4 id="posttoolbatch-input">

2307 Entrada de PostToolBatch2312 Entrada de PostToolBatch


2333}2338}

2334```2339```

2335 2340 

2336`tool_response` contiene el mismo contenido que el modelo recibe en el bloque `tool_result` correspondiente. El valor es una cadena serializada o matriz de bloques de contenido, exactamente como la herramienta la emitió. Para `Read`, eso significa texto con prefijo de número de línea en lugar de contenidos de archivo sin procesar. Las respuestas pueden ser grandes, así que analice solo los campos que necesita.2341`tool_response` contiene el mismo contenido que el modelo recibe en el bloque `tool_result` correspondiente. El valor es una cadena serializada o matriz de bloques de contenido, exactamente como lo emitió la herramienta. Para `Read`, eso significa texto con prefijo de número de línea en lugar de contenidos de archivo sin procesar. Las respuestas pueden ser grandes, así que analice solo los campos que necesita.

2337 2342 

2338<Note>2343<Note>

2339 La forma `tool_response` difiere de la de `PostToolUse`. `PostToolUse` pasa el objeto `Output` estructurado de la herramienta, como `{filePath: "...", type: "create"}` para `Write`; `PostToolBatch` pasa el contenido `tool_result` serializado que el modelo ve.2344 La forma `tool_response` difiere de la de `PostToolUse`. `PostToolUse` pasa el objeto `Output` estructurado de la herramienta, como `{filePath: "...", type: "create"}` para `Write`; `PostToolBatch` pasa el contenido `tool_result` serializado que ve el modelo.

2340</Note>2345</Note>

2341 2346 

2342<h4 id="posttoolbatch-decision-control">2347<h4 id="posttoolbatch-decision-control">


2364 PermissionDenied2369 PermissionDenied

2365</h3>2370</h3>

2366 2371 

2367Se ejecuta cuando [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) niega una llamada de herramienta, incluido cuando niega sin un veredicto del clasificador porque [una verificación de seguridad separada del modo automático rechazó la solicitud del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action) o su respuesta no se analizó. Este hook solo se dispara en modo automático: no se ejecuta cuando niega manualmente un diálogo de permiso, cuando un hook `PreToolUse` bloquea una llamada, o cuando una regla `deny` coincide. Úselo para registrar negaciones, ajustar configuración o decirle al modelo que puede reintentar la llamada de herramienta.2372Se ejecuta cuando [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) niega una llamada de herramienta, incluido cuando niega sin un veredicto del clasificador porque [una verificación de seguridad separada del modo automático rechazó la propia solicitud del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action) o su respuesta no se analizó. Este hook solo se dispara en modo automático: no se ejecuta cuando niega manualmente un diálogo de permiso, cuando un hook `PreToolUse` bloquea una llamada, o cuando una regla `deny` coincide. Úselo para registrar denegaciones, ajustar configuración o decirle al modelo que puede reintentar la llamada de herramienta.

2368 2373 

2369Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2374Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.

2370 2375 


2393 2398 

2394| Campo | Descripción |2399| Campo | Descripción |

2395| :- | :- |2400| :- | :- |

2396| `reason` | La razón de la negación. Para un veredicto del clasificador, en la mayoría de sesiones nombra la regla coincidente entre corchetes, como `[Data Exfiltration]`; consulte [Revisar negaciones](/docs/es/auto-mode-config#review-denials) para las otras formas. Para una [negación sin veredicto](#permissiondenied-decision-control), comienza con `Auto mode could not evaluate this action and is blocking it for safety`. Para una negación porque el modelo del clasificador no estaba disponible, es el texto fijo `Classifier unavailable` |2401| `reason` | La razón de la denegación. Para un veredicto del clasificador, en la mayoría de sesiones nombra la regla coincidente entre corchetes, como `[Data Exfiltration]`; consulte [Revisar denegaciones](/docs/es/auto-mode-config#review-denials) para las otras formas. Para una [denegación sin veredicto](#permissiondenied-decision-control), comienza con `Auto mode could not evaluate this action and is blocking it for safety`. Para una denegación porque el modelo del clasificador no estaba disponible, es el texto fijo `Classifier unavailable` |

2397 2402 

2398<h4 id="permissiondenied-decision-control">2403<h4 id="permissiondenied-decision-control">

2399 Control de decisión de PermissionDenied2404 Control de decisión de PermissionDenied

2400</h4>2405</h4>

2401 2406 

2402Los hooks PermissionDenied pueden decirle al modelo que puede reintentar la llamada de herramienta negada. Devuelva un objeto JSON con `hookSpecificOutput.retry` establecido en `true`:2407Los hooks PermissionDenied pueden decirle al modelo que puede reintentar la llamada de herramienta denegada. Devuelva un objeto JSON con `hookSpecificOutput.retry` establecido en `true`:

2403 2408 

2404```json theme={null}2409```json theme={null}

2405{2410{


2410}2415}

2411```2416```

2412 2417 

2413Cuando `retry` es `true`, Claude Code agrega un mensaje a la conversación diciéndole al modelo que puede reintentar la llamada de herramienta. Claude Code no revierte la negación en sí. Si su hook no devuelve JSON, o devuelve `retry: false`, la negación se mantiene y el modelo recibe el mensaje de rechazo original.2418Cuando `retry` es `true`, Claude Code agrega un mensaje a la conversación diciéndole al modelo que puede reintentar la llamada de herramienta. Claude Code no revierte la denegación en sí. Si su hook no devuelve JSON, o devuelve `retry: false`, la denegación se mantiene y el modelo recibe el mensaje de rechazo original.

2414 2419 

2415Claude Code ignora `retry: true` cuando el clasificador produjo [sin veredicto en la acción](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action): su respuesta no se analizó, o una verificación de seguridad separada del modo automático rechazó la solicitud del clasificador. Para esas negaciones, Claude Code ya le dice al modelo en el mensaje de rechazo si debe reintentar más tarde o continuar.2420Claude Code ignora `retry: true` cuando el clasificador produjo [ningún veredicto sobre la acción](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action): su respuesta no se analizó, o una verificación de seguridad separada del modo automático rechazó la propia solicitud del clasificador. Para esas denegaciones, Claude Code ya le dice al modelo en el mensaje de rechazo si reintentar más tarde o continuar.

2416 2421 

2417<h3 id="notification">2422<h3 id="notification">

2418 Notification2423 Notification


2424 2429 

2425| Matcher | Cuándo se dispara |2430| Matcher | Cuándo se dispara |

2426| :- | :- |2431| :- | :- |

2427| `permission_prompt` | Claude necesita su permiso para usar una herramienta o una [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en sandbox, y el aviso ha esperado aproximadamente seis segundos |2432| `permission_prompt` | Claude necesita su permiso para usar una herramienta o una [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en sandbox, y el prompt ha esperado aproximadamente seis segundos |

2428| `idle_prompt` | Claude terminó de responder hace aproximadamente 60 segundos y no ha escrito desde entonces |2433| `idle_prompt` | Claude terminó de responder hace aproximadamente 60 segundos y no ha escrito desde entonces |

2429| `auth_success` | La autenticación se completa |2434| `auth_success` | La autenticación se completa |

2430| `elicitation_dialog` | Un servidor MCP abre un formulario de elicitación y no ha escrito durante aproximadamente seis segundos |2435| `elicitation_dialog` | Un servidor MCP abre un formulario de elicitación y no ha escrito durante aproximadamente seis segundos |

2431| `elicitation_url_dialog` | Un servidor MCP le pide que abra una URL de navegador y no ha escrito durante aproximadamente seis segundos |2436| `elicitation_url_dialog` | Un servidor MCP le pide que abra una URL de navegador y no ha escrito durante aproximadamente seis segundos |

2432| `elicitation_complete` | Un servidor MCP reporta que una [elicitación de modo URL](#elicitation-input) está completa |2437| `elicitation_complete` | Un servidor MCP reporta que una [elicitación de modo URL](#elicitation-input) está completa |

2433| `elicitation_response` | Se envía una respuesta de elicitación de MCP de vuelta al servidor |2438| `elicitation_response` | Se envía una respuesta de elicitación de MCP de vuelta al servidor |

2434| `agent_needs_input` | Una sesión en segundo plano comienza a esperar su entrada mientras [vista de agente](/docs/es/agent-view) está abierta en una terminal, o la sesión actual le hace una pregunta de configuración de terminal de un [compañero de equipo del equipo del agente](/docs/es/agent-teams#choose-a-display-mode) y no ha escrito durante aproximadamente seis segundos |2439| `agent_needs_input` | Una sesión de fondo comienza a esperar su entrada mientras [vista de agente](/docs/es/agent-view) está abierta en una terminal. También se dispara cuando una sesión de terminal le muestra una [pregunta de configuración de terminal de un compañero de equipo de agente](/docs/es/agent-teams#choose-a-display-mode) o el aviso del modo automático sobre [cargos de solicitud del clasificador](/docs/es/auto-mode-classifier-billing) y no ha escrito durante aproximadamente seis segundos |

2435| `agent_completed` | Una sesión en segundo plano termina o falla. Se dispara solo mientras [vista de agente](/docs/es/agent-view) está abierta en una terminal |2440| `agent_completed` | Una sesión de fondo termina o falla. Se dispara solo mientras [vista de agente](/docs/es/agent-view) está abierta en una terminal |

2436| `quota_auto_resume_fired` | Claude Code continúa su tarea después de que un límite de uso de claude.ai la pausó: en el reinicio, o antes cuando algo que hace en Claude Code durante la espera, como agregar créditos de uso, actualizar su plan o cambiar modelos, hace que el uso esté disponible nuevamente, con la [excepción de configuración de modelo](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) |2441| `quota_auto_resume_fired` | Claude Code continúa su tarea después de que un límite de uso de claude.ai la pausó: en el reinicio, o antes cuando algo que hace en Claude Code durante la espera, como agregar créditos de uso, actualizar su plan o cambiar modelos, hace que el uso esté disponible nuevamente, con la [excepción de configuración de modelo](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) |

2437| `quota_auto_resume_stale` | Un límite de uso de claude.ai se reinició mientras su computadora dormía durante más de aproximadamente 30 minutos. Claude Code espera a que presione `Enter` en lugar de continuar. Después de un sueño más corto continúa y dispara `quota_auto_resume_fired` en su lugar |2442| `quota_auto_resume_stale` | Un límite de uso de claude.ai se reinició mientras su computadora dormía más de aproximadamente 30 minutos. Claude Code espera a que presione `Enter` en lugar de continuar. Después de un sueño más corto continúa y se dispara `quota_auto_resume_fired` en su lugar |

2438| `quota_auto_resume_disabled` | Claude Code termina su espera por un límite de uso de claude.ai sin continuar su tarea: [`autoContinueAtUsageLimit`](/docs/es/settings-reference#autocontinueatusagelimit) se desactivó o el reinicio se movió más de 24 horas durante una espera que Claude Code comenzó por sí solo, la tarea continuada siguió golpeando el límite, o la continuación fue bloqueada antes de llegar al modelo. No se dispara cuando presiona `Esc` o `Ctrl+C`, o elige **No continuar automáticamente** |2443| `quota_auto_resume_disabled` | Claude Code termina su espera por un límite de uso de claude.ai sin continuar su tarea: [`autoContinueAtUsageLimit`](/docs/es/settings-reference#autocontinueatusagelimit) se desactivó o el reinicio se movió más de 24 horas en el futuro durante una espera que Claude Code comenzó por sí solo, la tarea continuada siguió golpeando el límite, o la continuación fue bloqueada antes de llegar al modelo. No se dispara cuando presiona `Esc` o `Ctrl+C`, o elige **No continuar automáticamente** |

2439 2444 

2440Los tipos `agent_needs_input` y `agent_completed` requieren Claude Code v2.1.198 o posterior.2445Los tipos `agent_needs_input` y `agent_completed` requieren Claude Code v2.1.198 o posterior.

2441 2446 


2448<Note>2453<Note>

2449 Los tipos `permission_prompt`, `idle_prompt`, `elicitation_dialog`, y `elicitation_url_dialog` comparten su tiempo con notificaciones de escritorio, por lo que en sesiones de terminal solo los ve cuando parece que está lejos de la terminal:2454 Los tipos `permission_prompt`, `idle_prompt`, `elicitation_dialog`, y `elicitation_url_dialog` comparten su tiempo con notificaciones de escritorio, por lo que en sesiones de terminal solo los ve cuando parece que está lejos de la terminal:

2450 2455 

2451 * Espere `permission_prompt` una vez que no haya escrito durante aproximadamente seis segundos. El temporizador comienza cuando aparece el aviso de permiso, y cada pulsación de tecla lo difiere. Para ejecutar un hook inmediatamente cuando Claude solicita permiso para usar una herramienta, use [PermissionRequest](#permissionrequest) en su lugar.2456 * Espere `permission_prompt` una vez que no haya escrito durante aproximadamente seis segundos. El temporizador comienza cuando aparece el prompt de permiso, y cada pulsación de tecla lo difiere. Para ejecutar un hook inmediatamente cuando Claude solicita permiso para usar una herramienta, use [PermissionRequest](#permissionrequest) en su lugar.

2452 * Espere `idle_prompt` aproximadamente 60 segundos después de que Claude termine de responder, y solo si no ha escrito desde entonces. Claude Code no envía `idle_prompt` mientras espera a que se reinicie un límite de uso de claude.ai. Cuando la espera termina por sí sola, uno de los tipos `quota_auto_resume_*` se dispara en su lugar.2457 * Espere `idle_prompt` aproximadamente 60 segundos después de que Claude termine de responder, y solo si no ha escrito desde entonces. Claude Code no envía `idle_prompt` mientras espera a que se reinicie un límite de uso de claude.ai. Cuando la espera termina por sí sola, uno de los tipos `quota_auto_resume_*` se dispara en su lugar.

2453 * Espere `elicitation_dialog` para un formulario de elicitación, o `elicitation_url_dialog` para una solicitud de URL de navegador, una vez que no haya escrito durante aproximadamente seis segundos. Ambos comparten la misma puerta de seis segundos que `permission_prompt`: el temporizador comienza cuando aparece el diálogo, y cada pulsación de tecla lo difiere.2458 * Espere `elicitation_dialog` para un formulario de elicitación, o `elicitation_url_dialog` para una solicitud de URL de navegador, una vez que no haya escrito durante aproximadamente seis segundos. Ambos comparten la misma puerta de seis segundos que `permission_prompt`: el temporizador comienza cuando aparece el diálogo, y cada pulsación de tecla lo difiere.

2454 2459 

2455 Una solicitud de permiso o elicitación que llega mientras otro diálogo está en pantalla mantiene la misma puerta de seis segundos, cronometrada desde cuando llega la solicitud. Su notificación puede llegar a usted mientras la solicitud aún espera detrás del diálogo abierto.2460 Una solicitud de permiso o elicitación que llega mientras otro diálogo está en pantalla mantiene la misma puerta de seis segundos, cronometrada desde cuando llega la solicitud. Su notificación puede llegar a usted mientras la solicitud aún espera detrás del diálogo abierto.

2456</Note>2461</Note>

2457 2462 

2458Claude Code cronometra `permission_prompt` diferente en sesiones donde envía solicitudes de permiso a la devolución de llamada [`canUseTool`](/docs/es/agent-sdk/user-input) del SDK del agente, que es cómo Claude Desktop y la extensión VS Code alojan Claude Code:2463Claude Code cronometra `permission_prompt` diferente en sesiones donde envía solicitudes de permiso al callback [`canUseTool`](/docs/es/agent-sdk/user-input) del Agent SDK, que es cómo Claude Desktop y la extensión VS Code alojan Claude Code:

2459 2464 

2460* Espere `permission_prompt` aproximadamente seis segundos después de que Claude solicite permiso. Claude Code no lo difiere mientras escribe.2465* Espere `permission_prompt` aproximadamente seis segundos después de que Claude solicita permiso. Claude Code no lo difiere mientras escribe.

2461* Si usted o un hook [PermissionRequest](#permissionrequest) responden antes, Claude Code no ejecuta `permission_prompt`.2466* Si usted o un hook [PermissionRequest](#permissionrequest) responden antes, Claude Code no ejecuta `permission_prompt`.

2462* Establezca [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/es/env-vars) en `1` para desactivar `permission_prompt` en estas sesiones.2467* Establezca [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/es/env-vars) en `1` para desactivar `permission_prompt` en estas sesiones.

2463 2468 


2510}2515}

2511```2516```

2512 2517 

2513Los hooks Notification no pueden bloquear o modificar notificaciones. Claude Code descarta sus campos `systemMessage` y `continue` pero aún emite [`terminalSequence`](#emit-terminal-notifications), que es en lo que se basa el ejemplo de notificación de escritorio. Los hooks Notification están destinados a efectos secundarios como reenviar la notificación a un servicio externo.2518Los hooks Notification no pueden bloquear o modificar notificaciones. Claude Code descarta sus campos `systemMessage` y `continue` pero aún emite [`terminalSequence`](#emit-terminal-notifications), en el que se basa el ejemplo de notificación de escritorio. Los hooks Notification están destinados a efectos secundarios como reenviar la notificación a un servicio externo.

2514 2519 

2515<h3 id="subagentstart">2520<h3 id="subagentstart">

2516 SubagentStart2521 SubagentStart

2517</h3>2522</h3>

2518 2523 

2519Se ejecuta cuando Claude genera un subagente con la herramienta Agent, cuando Claude [reanuda un subagente](/docs/es/sub-agents#resume-subagents), y cada vez que un [equipo del agente](/docs/es/agent-teams) compañero en proceso maneja un nuevo mensaje. Admite matchers para filtrar por nombre de tipo de agente. Para agentes integrados, este es el nombre del agente como `general-purpose`, `Explore`, o `Plan`. Para [subagentes personalizados](/docs/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo.2524Se ejecuta cuando Claude genera un subagente con la herramienta Agent, cuando Claude [reanuda un subagente](/docs/es/sub-agents#resume-subagents), y cada vez que un compañero de [equipo de agente](/docs/es/agent-teams) en proceso maneja un nuevo mensaje. Admite matchers para filtrar por nombre de tipo de agente. Para agentes integrados, este es el nombre del agente como `general-purpose`, `Explore`, o `Plan`. Para [subagentes personalizados](/docs/es/sub-agents), este es el campo `name` del frontmatter del agente, no el nombre del archivo.

2520 2525 

2521Para subagentes enviados por un [plugin](/docs/es/plugins/overview), el tipo de agente es el identificador con alcance de plugin como `my-plugin:reviewer`, no el nombre de frontmatter desnudo. Los dos puntos colocan un nombre con alcance de plugin en la ruta de expresión regular, así que ancle el matcher con `^` y `$` para una coincidencia exacta: `^my-plugin:reviewer$`.2526Para subagentes enviados por un [plugin](/docs/es/plugins/overview), el tipo de agente es el identificador con alcance de plugin como `my-plugin:reviewer`, no el nombre de frontmatter desnudo. Los dos puntos colocan un nombre con alcance de plugin en la ruta de expresión regular, así que ancle el matcher con `^` y `$` para una coincidencia exacta: `^my-plugin:reviewer$`.

2522 2527 


2537}2542}

2538```2543```

2539 2544 

2540Los hooks SubagentStart no pueden bloquear la creación del subagente, pero pueden inyectar contexto en el subagente. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver:2545Los hooks SubagentStart no pueden bloquear la creación de subagentes, pero pueden inyectar contexto en el subagente. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver:

2541 2546 

2542| Campo | Descripción |2547| Campo | Descripción |

2543| :- | :- |2548| :- | :- |


2566 2571 

2567Además de los [campos de entrada comunes](#common-input-fields), los hooks SubagentStop reciben `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, y `last_assistant_message`. El campo `agent_type` es el valor utilizado para filtrado de matcher. El `transcript_path` es la transcripción de la sesión principal, mientras que `agent_transcript_path` es la transcripción propia del subagente almacenada en una carpeta `subagents/` anidada. El campo `last_assistant_message` contiene el contenido de texto de la respuesta final del subagente, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción.2572Además de los [campos de entrada comunes](#common-input-fields), los hooks SubagentStop reciben `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, y `last_assistant_message`. El campo `agent_type` es el valor utilizado para filtrado de matcher. El `transcript_path` es la transcripción de la sesión principal, mientras que `agent_transcript_path` es la transcripción propia del subagente almacenada en una carpeta `subagents/` anidada. El campo `last_assistant_message` contiene el contenido de texto de la respuesta final del subagente, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción.

2568 2573 

2569No todos los eventos SubagentStop provienen de un subagente que Claude generó. Claude Code también ejecuta agentes internos para algunas de sus propias características, como [sugerencias de prompt](/docs/es/interactive-mode#prompt-suggestions) y [preguntas secundarias `/btw`](/docs/es/interactive-mode#side-questions-with-%2Fbtw), y SubagentStop se dispara cuando uno de esos termina también. Para esos eventos, `agent_type` es el nombre del agente que la sesión en sí ejecuta, como uno establecido con [`--agent`](/docs/es/cli-reference#cli-flags) o la configuración [`agent`](/docs/es/settings-reference#agent), y una cadena vacía cuando la sesión se ejecuta sin uno.2574No cada evento SubagentStop proviene de un subagente que Claude generó. Claude Code también ejecuta agentes internos para algunas de sus propias características, como [sugerencias de prompt](/docs/es/interactive-mode#prompt-suggestions) y [preguntas secundarias `/btw`](/docs/es/interactive-mode#side-questions-with-%2Fbtw), y SubagentStop se dispara cuando uno de esos termina también. Para esos eventos, `agent_type` es el nombre del agente que la sesión en sí ejecuta, como uno establecido con [`--agent`](/docs/es/cli-reference#cli-flags) o la configuración [`agent`](/docs/es/settings-reference#agent), y una cadena vacía cuando la sesión se ejecuta sin uno.

2570 2575 

2571Un `matcher` que nombra tipos de agente no coincide con un `agent_type` vacío. Un hook cuyo matcher está omitido, `""`, o `"*"`, o es una expresión regular que coincide con una cadena vacía, se ejecuta para eventos con un `agent_type` vacío también.2576Un `matcher` que nombra tipos de agentes no coincide con un `agent_type` vacío. Un hook cuyo matcher está omitido, `""`, o `"*"`, o es una expresión regular que coincide con una cadena vacía, se ejecuta para eventos con un `agent_type` vacío también.

2572 2577 

2573En Claude Code v2.1.271 o posterior, un subagente que se ejecuta con la herramienta [`SubagentHandback`](/docs/es/tools-reference) entrega su informe a través de esa herramienta antes de que se detenga. El campo `last_assistant_message` entonces contiene el texto de cierre del subagente, si lo hay, que no es el informe entregado. El informe es la entrada `message` de esa llamada, que un hook `PreToolUse` o `PostToolUse` que coincide en `SubagentHandback` recibe como `tool_input.message`.2578En Claude Code v2.1.271 o posterior, un subagente que se ejecuta con la herramienta [`SubagentHandback`](/docs/es/tools-reference) entrega su informe a través de esa herramienta antes de que se detenga. El campo `last_assistant_message` entonces contiene el texto de cierre del subagente, si lo hay, que no es el informe entregado. El informe es la entrada `message` de esa llamada, que un hook `PreToolUse` o `PostToolUse` que coincide en `SubagentHandback` recibe como `tool_input.message`.

2574 2579 

2575Los hooks SubagentStop también reciben las matrices `background_tasks` y `session_crons` descritas en [entrada de Stop](#stop-input). Ambas matrices tienen alcance a la sesión padre, no al subagente.2580Los hooks SubagentStop también reciben las matrices `background_tasks` y `session_crons` descritas en [entrada de Stop](#stop-input). Ambas matrices están limitadas a la sesión padre, no al subagente.

2576 2581 

2577```json theme={null}2582```json theme={null}

2578{2583{


2591}2596}

2592```2597```

2593 2598 

2594Los hooks SubagentStop usan el mismo formato de control de decisión que [hooks Stop](#stop-decision-control), incluido `hookSpecificOutput.additionalContext` con `hookEventName` establecido en `"SubagentStop"`, para retroalimentación sin error que mantiene el subagente ejecutándose. Devolver `decision: "block"` con un `reason` mantiene el subagente ejecutándose y entrega `reason` al subagente como su siguiente instrucción. Un hook que bloquea al salir con 2 entrega su mensaje stderr de la misma manera. Para inyectar contexto en la sesión padre después de que un subagente devuelve, use un hook [`PostToolUse`](#posttooluse) en la herramienta `Agent` en su lugar.2599Los hooks SubagentStop usan el mismo formato de control de decisión que [hooks Stop](#stop-decision-control), incluido `hookSpecificOutput.additionalContext` con `hookEventName` establecido en `"SubagentStop"`, para retroalimentación sin error que mantiene el subagente ejecutándose. Devolver `decision: "block"` con un `reason` mantiene el subagente ejecutándose y entrega `reason` al subagente como su siguiente instrucción. Un hook que bloquea saliendo con 2 entrega su mensaje stderr de la misma manera. Para inyectar contexto en la sesión padre después de que un subagente devuelve, use un hook [`PostToolUse`](#posttooluse) en la herramienta `Agent` en su lugar.

2595 2600 

2596<h3 id="taskcreated">2601<h3 id="taskcreated">

2597 TaskCreated2602 TaskCreated


2626| `task_id` | Identificador de la tarea que se está creando |2631| `task_id` | Identificador de la tarea que se está creando |

2627| `task_subject` | Título de la tarea |2632| `task_subject` | Título de la tarea |

2628| `task_description` | Descripción detallada de la tarea. Puede estar ausente |2633| `task_description` | Descripción detallada de la tarea. Puede estar ausente |

2629| `teammate_name` | Nombre del compañero que crea la tarea. Puede estar ausente |2634| `teammate_name` | Nombre del compañero que está creando la tarea. Puede estar ausente |

2630| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |2635| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |

2631 2636 

2632<h4 id="taskcreated-decision-control">2637<h4 id="taskcreated-decision-control">


2657 TaskCompleted2662 TaskCompleted

2658</h3>2663</h3>

2659 2664 

2660Se ejecuta cuando una tarea se está marcando como completada. Esto se dispara en dos situaciones: cuando cualquier agente marca explícitamente una tarea como completada a través de la herramienta TaskUpdate, o cuando un [equipo del agente](/docs/es/agent-teams) compañero termina su turno con tareas en progreso. Úselo para hacer cumplir criterios de finalización como pasar pruebas o verificaciones de lint antes de que una tarea pueda cerrarse.2665Se ejecuta cuando se está marcando una tarea como completada. Esto se dispara en dos situaciones: cuando cualquier agente marca explícitamente una tarea como completada a través de la herramienta TaskUpdate, o cuando un compañero de [equipo de agente](/docs/es/agent-teams) termina su turno con tareas en progreso. Úselo para hacer cumplir criterios de finalización como pasar pruebas o verificaciones de lint antes de que una tarea pueda cerrarse.

2661 2666 

2662Los hooks TaskCompleted no admiten matchers y se disparan en cada ocurrencia.2667Los hooks TaskCompleted no admiten matchers y se disparan en cada ocurrencia.

2663 2668 


2687| `task_id` | Identificador de la tarea que se está completando |2692| `task_id` | Identificador de la tarea que se está completando |

2688| `task_subject` | Título de la tarea |2693| `task_subject` | Título de la tarea |

2689| `task_description` | Descripción detallada de la tarea. Puede estar ausente |2694| `task_description` | Descripción detallada de la tarea. Puede estar ausente |

2690| `teammate_name` | Nombre del compañero que completa la tarea. Puede estar ausente |2695| `teammate_name` | Nombre del compañero que está completando la tarea. Puede estar ausente |

2691| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |2696| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |

2692 2697 

2693<h4 id="taskcompleted-decision-control">2698<h4 id="taskcompleted-decision-control">


2697Los hooks TaskCompleted admiten dos formas de controlar la finalización de tareas:2702Los hooks TaskCompleted admiten dos formas de controlar la finalización de tareas:

2698 2703 

2699* **Código de salida 2**: la tarea no se marca como completada y el mensaje stderr se devuelve al modelo como retroalimentación.2704* **Código de salida 2**: la tarea no se marca como completada y el mensaje stderr se devuelve al modelo como retroalimentación.

2700* **JSON `{"continue": false, "stopReason": "..."}`**: cuando un compañero que termina su turno disparó el evento, detiene completamente al compañero, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario. Cuando la herramienta `TaskUpdate` disparó el evento, Claude Code ignora `continue: false`; el código de salida 2 aún bloquea la finalización.2705* **JSON `{"continue": false, "stopReason": "..."}`**: cuando un compañero que termina su turno disparó el evento, detiene completamente al compañero, coincidiendo con el comportamiento del hook Stop. El `stopReason` se muestra al usuario. Cuando la herramienta `TaskUpdate` disparó el evento, Claude Code ignora `continue: false`; el código de salida 2 aún bloquea la finalización.

2701 2706 

2702Este ejemplo ejecuta pruebas y bloquea la finalización de tareas si fallan:2707Este ejemplo ejecuta pruebas y bloquea la finalización de tareas si fallan:

2703 2708 


2731 2736 

2732Además de los [campos de entrada comunes](#common-input-fields), los hooks Stop reciben `stop_hook_active`, `last_assistant_message`, `background_tasks`, y `session_crons`. El campo `stop_hook_active` es `true` cuando Claude Code ya está continuando como resultado de un hook de parada. Verifique este valor o procese la transcripción para evitar bloquear en una condición que nunca se resolverá. Claude Code aplica un límite de 8 continuaciones consecutivas: después de que los hooks de parada hayan continuado el turno ocho veces seguidas, Claude Code anula el siguiente bloqueo y termina el turno. Para aumentar el límite, establezca [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/es/env-vars).2737Además de los [campos de entrada comunes](#common-input-fields), los hooks Stop reciben `stop_hook_active`, `last_assistant_message`, `background_tasks`, y `session_crons`. El campo `stop_hook_active` es `true` cuando Claude Code ya está continuando como resultado de un hook de parada. Verifique este valor o procese la transcripción para evitar bloquear en una condición que nunca se resolverá. Claude Code aplica un límite de 8 continuaciones consecutivas: después de que los hooks de parada hayan continuado el turno ocho veces seguidas, Claude Code anula el siguiente bloqueo y termina el turno. Para aumentar el límite, establezca [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/es/env-vars).

2733 2738 

2734El campo `last_assistant_message` contiene el contenido de texto de la respuesta final de Claude, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción. Para hooks que actúan en el turno recién completado, como hooks de lectura en voz alta o notificación, use este campo en lugar de leer `transcript_path`: el archivo de transcripción no se garantiza que incluya el mensaje final en el tiempo de Stop en todas las versiones.2739El campo `last_assistant_message` contiene el contenido de texto de la respuesta final de Claude, por lo que los hooks pueden acceder a él sin analizar el archivo de transcripción. Para hooks que actúan en el turno recién completado, como hooks de lectura en voz alta o notificación, use este campo en lugar de leer `transcript_path`: el archivo de transcripción no se garantiza que incluya el mensaje final en el momento de Stop en todas las versiones.

2735 2740 

2736Las matrices `background_tasks` y `session_crons` permiten a los hooks distinguir "sesión terminada" de "sesión pausada esperando que el trabajo de fondo la despierte". Ambas matrices están presentes cuando el registro de tareas es alcanzable y están vacías cuando nada está en vuelo o programado.2741Las matrices `background_tasks` y `session_crons` permiten a los hooks distinguir "sesión terminada" de "sesión pausada esperando que el trabajo de fondo la despierte". Ambas matrices están presentes cuando el registro de tareas es alcanzable y están vacías cuando nada está en vuelo o programado.

2737 2742 


2798| Campo | Descripción |2803| Campo | Descripción |

2799| :- | :- |2804| :- | :- |

2800| `decision` | `"block"` evita que Claude se detenga. Omita para permitir que Claude se detenga |2805| `decision` | `"block"` evita que Claude se detenga. Omita para permitir que Claude se detenga |

2801| `reason` | Requerido cuando `decision` es `"block"`. Le dice a Claude por qué debe continuar |2806| `reason` | Requerido cuando `decision` es `"block"`. Le dice a Claude por qué debería continuar |

2802| `hookSpecificOutput.additionalContext` | Retroalimentación sin error para Claude. La conversación continúa para que Claude pueda actuar sobre ella, pero a diferencia de `decision: "block"` se muestra en la transcripción como retroalimentación de hook en lugar de un error de hook |2807| `hookSpecificOutput.additionalContext` | Retroalimentación sin error para Claude. La conversación continúa para que Claude pueda actuar sobre ella, pero a diferencia de `decision: "block"` se muestra en la transcripción como retroalimentación de hook en lugar de un error de hook |

2803 2808 

2804Un hook que bloquea al salir con 2 se enruta de la misma manera que `reason`: Claude recibe el mensaje stderr como la explicación de por qué debe continuar.2809Un hook que bloquea saliendo con 2 se enruta de la misma manera que `reason`: Claude recibe el mensaje stderr como la explicación de por qué debería continuar.

2805 2810 

2806```json theme={null}2811```json theme={null}

2807{2812{


2810}2815}

2811```2816```

2812 2817 

2813Use `additionalContext` cuando el hook está funcionando como se diseñó y dando orientación a Claude, como "ejecutar el conjunto de pruebas antes de terminar". Mantiene la conversación a través de las mismas protecciones de bucle que `decision: "block"`, es decir, la entrada `stop_hook_active` y el límite de 8 continuaciones consecutivas, pero la transcripción la etiqueta como `Stop hook feedback` y no se muestra ninguna notificación de error de hook:2818Use `additionalContext` cuando el hook está funcionando como se diseñó y dando orientación a Claude, como "ejecutar el conjunto de pruebas antes de terminar". Mantiene la conversación a través de las mismas protecciones de bucle que `decision: "block"`, a saber la entrada `stop_hook_active` y el límite de 8 continuaciones consecutivas, pero la transcripción la etiqueta como `Stop hook feedback` y no se muestra notificación de error de hook:

2814 2819 

2815```json theme={null}2820```json theme={null}

2816{2821{


2831 Entrada de StopFailure2836 Entrada de StopFailure

2832</h4>2837</h4>

2833 2838 

2834Además de los [campos de entrada comunes](#common-input-fields), los hooks StopFailure reciben `error`, `error_details` opcional, y `last_assistant_message` opcional. El campo `error` identifica el tipo de error y se utiliza para filtrado de matcher.2839Además de los [campos de entrada comunes](#common-input-fields), los hooks StopFailure reciben `error`, `error_details` opcional, y `last_assistant_message` opcional. El campo `error` identifica el tipo de error y se usa para filtrado de matcher.

2835 2840 

2836| Campo | Descripción |2841| Campo | Descripción |

2837| :- | :- |2842| :- | :- |


2857 TeammateIdle2862 TeammateIdle

2858</h3>2863</h3>

2859 2864 

2860Se ejecuta cuando un [equipo del agente](/docs/es/agent-teams) compañero está a punto de quedarse inactivo después de terminar su turno. Úselo para hacer cumplir puertas de calidad antes de que un compañero deje de trabajar, como requerir verificaciones de lint aprobadas o verificar que existan archivos de salida.2865Se ejecuta cuando un compañero de [equipo de agente](/docs/es/agent-teams) está a punto de quedarse inactivo después de terminar su turno. Úselo para hacer cumplir puertas de calidad antes de que un compañero deje de trabajar, como requerir verificaciones de lint aprobadas o verificar que existan archivos de salida.

2861 2866 

2862Los hooks TeammateIdle no admiten matchers y se disparan en cada ocurrencia.2867Los hooks TeammateIdle no admiten matchers y se disparan en cada ocurrencia.

2863 2868 


2891Los hooks TeammateIdle admiten dos formas de controlar el comportamiento del compañero:2896Los hooks TeammateIdle admiten dos formas de controlar el comportamiento del compañero:

2892 2897 

2893* **Código de salida 2**: el compañero recibe el mensaje stderr como retroalimentación y continúa trabajando en lugar de quedarse inactivo.2898* **Código de salida 2**: el compañero recibe el mensaje stderr como retroalimentación y continúa trabajando en lugar de quedarse inactivo.

2894* **JSON `{"continue": false, "stopReason": "..."}`**: detiene completamente al compañero, coincidiendo con el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario.2899* **JSON `{"continue": false, "stopReason": "..."}`**: detiene completamente al compañero, coincidiendo con el comportamiento del hook Stop. El `stopReason` se muestra al usuario.

2895 2900 

2896Este ejemplo verifica que exista un artefacto de compilación antes de permitir que un compañero se quede inactivo:2901Este ejemplo verifica que exista un artefacto de compilación antes de permitir que un compañero se quede inactivo:

2897 2902 


2910 ConfigChange2915 ConfigChange

2911</h3>2916</h3>

2912 2917 

2913Se ejecuta cuando un archivo de configuración cambia durante una sesión. Úselo para auditar cambios de configuración, hacer cumplir políticas de seguridad o bloquear modificaciones no autorizadas en archivos de configuración.2918Se ejecuta cuando un archivo de configuración cambia durante una sesión. Úselo para auditar cambios de configuración, hacer cumplir políticas de seguridad o bloquear modificaciones no autorizadas a archivos de configuración.

2914 2919 

2915Claude Code ejecuta hooks ConfigChange cuando un archivo de configuración, un archivo de política administrada o un archivo de skill cambia. Para política administrada, solo los ejecuta cuando `managed-settings.json` o un archivo en `managed-settings.d/` cambia. Aplica [configuración administrada por servidor](/docs/es/server-managed-settings) y cambios en preferencias administradas de macOS o política de registro de Windows sin ejecutarlos. En WSL con [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings), también aplica un archivo de configuración administrada de Windows modificado en su sondeo de política sin ejecutarlos.2920Claude Code ejecuta hooks ConfigChange cuando un archivo de configuración, un archivo de política administrada o un archivo de skill cambia. Para política administrada, solo los ejecuta cuando `managed-settings.json` o un archivo en `managed-settings.d/` cambia. Aplica [configuración administrada por servidor](/docs/es/server-managed-settings) y cambios a preferencias administradas de macOS o política de registro de Windows sin ejecutarlos. En WSL con [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings), también aplica un archivo de configuración administrada de Windows modificado en su sondeo de política sin ejecutarlos.

2916 2921 

2917El matcher filtra en la fuente de configuración:2922El matcher filtra en la fuente de configuración:

2918 2923 


2965 Control de decisión de ConfigChange2970 Control de decisión de ConfigChange

2966</h4>2971</h4>

2967 2972 

2968Los hooks ConfigChange pueden bloquear cambios de configuración para que no tengan efecto. Use código de salida 2 o un JSON `decision` para evitar el cambio. Cuando se bloquea, la nueva configuración no se aplica a la sesión en ejecución.2973Los hooks ConfigChange pueden bloquear cambios de configuración para que no surtan efecto. Use código de salida 2 o un JSON `decision` para evitar el cambio. Cuando se bloquea, la nueva configuración no se aplica a la sesión en ejecución.

2969 2974 

2970| Campo | Descripción |2975| Campo | Descripción |

2971| :- | :- |2976| :- | :- |

2972| `decision` | `"block"` evita que se aplique el cambio de configuración. Omita para permitir el cambio |2977| `decision` | `"block"` evita que el cambio de configuración se aplique. Omita para permitir el cambio |

2973| `reason` | Aceptado pero nunca mostrado |2978| `reason` | Aceptado pero nunca mostrado |

2974 2979 

2975```json theme={null}2980```json theme={null}


2979}2984}

2980```2985```

2981 2986 

2982Los cambios `policy_settings` no se pueden bloquear. Los hooks aún se disparan para fuentes `policy_settings` cuando un archivo de configuración administrada en la máquina cambia, para que pueda registrar esas ediciones, pero cualquier decisión de bloqueo se ignora. Esto asegura que la configuración administrada por empresa siempre tenga efecto. Claude Code no ejecuta hooks `ConfigChange` cuando llegan o se actualizan [configuración administrada por servidor](/docs/es/server-managed-settings).2987Los cambios `policy_settings` no se pueden bloquear. Los hooks aún se disparan para fuentes `policy_settings` cuando un archivo de configuración administrada en la máquina cambia, por lo que puede usarlos para registrar esas ediciones, pero cualquier decisión de bloqueo se ignora. Esto asegura que la configuración administrada por la empresa siempre surta efecto. Claude Code no ejecuta hooks `ConfigChange` cuando llegan o se actualizan [configuración administrada por servidor](/docs/es/server-managed-settings).

2983 2988 

2984Claude Code actúa sobre la decisión de bloqueo de la salida JSON de un hook ConfigChange y descarta `systemMessage` y `continue`. Un cambio bloqueado no muestra ningún mensaje a usted o a Claude, ya sea que bloquee con `reason` o con stderr en salida 2. Claude Code solo escribe una línea en el registro de depuración.2989Claude Code actúa sobre la decisión de bloqueo de la salida JSON de un hook ConfigChange y descarta `systemMessage` y `continue`. Un cambio bloqueado no muestra ningún mensaje a usted o a Claude, ya sea que bloquee con `reason` o con stderr en salida 2. Claude Code solo escribe una línea en el registro de depuración.

2985 2990 


3028 DirectoryAdded3033 DirectoryAdded

3029</h3>3034</h3>

3030 3035 

3031Se ejecuta después de agregar un directorio de trabajo a mitad de sesión con el comando `/add-dir`, o después de que un cliente SDK agregue uno con la solicitud de control `register_repo_root`. Úselo para preparar un repositorio recién agregado, por ejemplo instalando sus dependencias.3036Se ejecuta después de agregar un directorio de trabajo a mitad de sesión con el comando `/add-dir`, o después de que un cliente del SDK agregue uno con la solicitud de control `register_repo_root`. Úselo para preparar un repositorio recién agregado, por ejemplo instalando sus dependencias.

3032 3037 

3033Claude Code no dispara este evento cuando:3038Claude Code no dispara este evento cuando:

3034 3039 


3045| Matcher | Cuándo se dispara |3050| Matcher | Cuándo se dispara |

3046| :- | :- |3051| :- | :- |

3047| `slash_command` | Agrega un directorio con `/add-dir` |3052| `slash_command` | Agrega un directorio con `/add-dir` |

3048| `register_repo_root` | Un cliente SDK agrega un directorio con la solicitud de control `register_repo_root` |3053| `register_repo_root` | Un cliente del SDK agrega un directorio con la solicitud de control `register_repo_root` |

3049 3054 

3050<h4 id="directoryadded-input">3055<h4 id="directoryadded-input">

3051 Entrada de DirectoryAdded3056 Entrada de DirectoryAdded


3078 FileChanged3083 FileChanged

3079</h3>3084</h3>

3080 3085 

3081Se ejecuta cuando un archivo observado cambia en el disco. Claude Code detecta cambios con un observador del sistema de archivos, no inspeccionando llamadas de herramientas, por lo que ejecuta el hook sin importar qué cambió el archivo: una llamada de herramienta `Edit` o `Write`, un script que Claude ejecuta con `Bash`, o un proceso fuera de Claude Code completamente. Un uso común es recargar variables de entorno cuando cambian los archivos de configuración del proyecto.3086Se ejecuta cuando un archivo observado cambia en el disco. Claude Code detecta cambios con un observador del sistema de archivos, no inspeccionando llamadas de herramientas, por lo que ejecuta el hook sin importar qué cambió el archivo: una llamada de herramienta `Edit` o `Write`, un script que Claude ejecuta con `Bash`, o un proceso fuera de Claude Code completamente. Un uso común es recargar variables de entorno cuando cambian archivos de configuración del proyecto.

3082 3087 

3083El `matcher` para este evento sirve dos roles:3088El `matcher` para este evento sirve dos roles:

3084 3089 

3085* **Construir la lista de observación**: el valor se divide en `|` y cada segmento se registra como un nombre de archivo literal en el directorio de trabajo, por lo que `".envrc|.env"` observa exactamente esos dos archivos. Los patrones regex no son útiles aquí: un valor como `^\.env` observaría un archivo literalmente nombrado `^\.env`.3090* **Construir la lista de observación**: el valor se divide en `|` y cada segmento se registra como un nombre de archivo literal en el directorio de trabajo, por lo que `".envrc|.env"` observa exactamente esos dos archivos. Los patrones regex no son útiles aquí: un valor como `^\.env` observaría un archivo literalmente nombrado `^\.env`.

3086* **Filtrar qué hooks se ejecutan**: cuando un archivo observado cambia, el mismo valor filtra qué grupos de hooks se ejecutan usando las [reglas de matcher](#matcher-patterns) estándar contra el nombre base del archivo cambiado.3091* **Filtrar qué hooks se ejecutan**: cuando un archivo observado cambia, el mismo valor filtra qué grupos de hook se ejecutan usando las [reglas de matcher](#matcher-patterns) estándar contra el nombre base del archivo cambiado.

3087 3092 

3088Este ejemplo normaliza terminaciones de línea en `data.csv` después de cualquier cambio, incluido un comando `Bash` o un script externo reescribiendo el archivo:3093Este ejemplo normaliza los finales de línea en `data.csv` después de cualquier cambio, incluido un comando `Bash` o un script externo reescribiendo el archivo:

3089 3094 

3090```json theme={null}3095```json theme={null}

3091{3096{


3115fi3120fi

3116```3121```

3117 3122 

3118Para confirmar que el hook funciona, pida a Claude que agregue una línea CRLF a `data.csv` con un comando `Bash`. Claude Code ejecuta el hook y el archivo termina con terminaciones LF.3123Para confirmar que el hook funciona, pida a Claude que agregue una línea CRLF a `data.csv` con un comando `Bash`. Claude Code ejecuta el hook y el archivo termina con finales LF.

3119 3124 

3120Para observar archivos que no puede nombrar por adelantado, devuelva [`watchPaths`](#filechanged-output) de un hook para actualizar la lista de observación dinámicamente. Claude Code inicia el observador solo cuando algo nombra un archivo para observar, por lo que semilla la lista con un grupo FileChanged cuyo matcher nombra al menos un archivo, o con un hook [SessionStart](#sessionstart-decision-control) o [CwdChanged](#cwdchanged) que devuelve `watchPaths`. El matcher aún filtra qué grupos de hooks se ejecutan cuando un archivo observado cambia, así que dé al grupo que maneja rutas dinámicas un matcher omitido, que coincide con cada archivo observado y no agrega nada a la lista de observación. Un matcher `"*"` también coincide con cada archivo, pero Claude Code lo registra en la lista de observación como cualquier otro valor, como un archivo literal nombrado `*`.3125Para observar archivos que no puede nombrar por adelantado, devuelva [`watchPaths`](#filechanged-output) de un hook para actualizar la lista de observación dinámicamente. Claude Code inicia el observador solo cuando algo nombra un archivo para observar, por lo que inicie la lista con un grupo FileChanged cuyo matcher nombre al menos un archivo, o con un hook [SessionStart](#sessionstart-decision-control) o [CwdChanged](#cwdchanged) que devuelva `watchPaths`. El matcher aún filtra qué grupos de hook se ejecutan cuando un archivo observado cambia, así que dé al grupo que maneja rutas dinámicas un matcher omitido, que coincide con cada archivo observado y no agrega nada a la lista de observación. Un matcher `"*"` también coincide con cada archivo, pero Claude Code lo registra en la lista de observación como cualquier otro valor, como un archivo literal nombrado `*`.

3121 3126 

3122Los hooks FileChanged tienen acceso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Las variables escritas en ese archivo persisten en comandos Bash posteriores hasta el siguiente evento [CwdChanged](#cwdchanged), cuando Claude Code las borra.3127Los hooks FileChanged tienen acceso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Las variables escritas en ese archivo persisten en comandos Bash posteriores hasta el siguiente evento [CwdChanged](#cwdchanged), cuando Claude Code las borra.

3123 3128 


3161 WorktreeCreate3166 WorktreeCreate

3162</h3>3167</h3>

3163 3168 

3164Se ejecuta cuando se está creando un worktree, ya sea desde `claude --worktree`, desde un [subagente usando `isolation: "worktree"`](/docs/es/sub-agents#choose-the-subagent-scope), o para una [sesión en segundo plano](/docs/es/agent-view#how-file-edits-are-isolated) que Claude Code aísla en su propio worktree. De forma predeterminada, Claude Code crea la copia de trabajo aislada con `git worktree`. Configurar un hook WorktreeCreate reemplaza ese comportamiento git predeterminado, permitiéndole usar un sistema de control de versiones diferente como SVN, Perforce o Mercurial.3169Se ejecuta cuando se está creando un worktree, ya sea desde `claude --worktree`, desde un [subagente usando `isolation: "worktree"`](/docs/es/sub-agents#choose-the-subagent-scope), o para una [sesión de fondo](/docs/es/agent-view#how-file-edits-are-isolated) que Claude Code aísla en su propio worktree. De forma predeterminada, Claude Code crea la copia de trabajo aislada con `git worktree`. Configurar un hook WorktreeCreate reemplaza ese comportamiento git predeterminado, permitiéndole usar un sistema de control de versiones diferente como SVN, Perforce o Mercurial.

3165 3170 

3166Debido a que el hook reemplaza el comportamiento predeterminado completamente, [`.worktreeinclude`](/docs/es/worktrees#copy-gitignored-files-into-worktrees) no se procesa. Si necesita copiar archivos de configuración local como `.env` en el nuevo worktree, hágalo dentro de su script de hook.3171Debido a que el hook reemplaza el comportamiento predeterminado completamente, [`.worktreeinclude`](/docs/es/worktrees#copy-gitignored-files-into-worktrees) no se procesa. Si necesita copiar archivos de configuración local como `.env` en el nuevo worktree, hágalo dentro de su script de hook.

3167 3172 


3188}3193}

3189```3194```

3190 3195 

3191El hook lee el `name` del worktree de la entrada JSON en stdin, verifica una copia fresca en un nuevo directorio e imprime la ruta del directorio. El `echo` en la última línea es lo que Claude Code lee como la ruta del worktree. Redirija cualquier otra salida a stderr para que no interfiera con la ruta.3196El hook lee el `name` del worktree de la entrada JSON en stdin, verifica una copia fresca en un nuevo directorio, e imprime la ruta del directorio. El `echo` en la última línea es lo que Claude Code lee como la ruta del worktree. Redirija cualquier otra salida a stderr para que no interfiera con la ruta.

3192 3197 

3193<h4 id="worktreecreate-input">3198<h4 id="worktreecreate-input">

3194 Entrada de WorktreeCreate3199 Entrada de WorktreeCreate


3210 Salida de WorktreeCreate3215 Salida de WorktreeCreate

3211</h4>3216</h4>

3212 3217 

3213Los hooks WorktreeCreate no usan el modelo de decisión estándar permitir/bloquear. En su lugar, el éxito o fallo del hook determina el resultado. El hook debe devolver la ruta al directorio del worktree creado:3218Los hooks WorktreeCreate no usan el modelo de decisión de permitir/bloquear estándar. En su lugar, el éxito o fallo del hook determina el resultado. El hook debe devolver la ruta al directorio del worktree creado:

3214 3219 

3215* **Hooks de comando** (`type: "command"`): imprima la ruta como la última línea no vacía de stdout. Claude Code elimina códigos de escape ANSI antes de leer esa línea, por lo que los banners de inicio de shell impresos antes de su `echo` se ignoran. Redirija cualquier otra salida del hook a stderr.3220* **Hooks de comando** (`type: "command"`): imprima la ruta como la última línea no vacía de stdout. Claude Code elimina códigos de escape ANSI antes de leer esa línea, por lo que los banners de inicio de shell impresos antes de su `echo` se ignoran. Redirija cualquier otra salida del hook a stderr.

3216* **Hooks HTTP** (`type: "http"`): devuelva `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.3221* **Hooks HTTP** (`type: "http"`): devuelva `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.


3229 3234 

3230* sale de una sesión `--worktree` y elige eliminarla3235* sale de una sesión `--worktree` y elige eliminarla

3231* un subagente con `isolation: "worktree"` termina3236* un subagente con `isolation: "worktree"` termina

3232* elimina una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree creó el hook3237* elimina una [sesión de fondo](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree creó el hook

3233 3238 

3234Para worktrees basados en git, Claude Code maneja la limpieza automáticamente con `git worktree remove`. Si configuró un hook WorktreeCreate, emparéjelo con un hook WorktreeRemove para controlar la limpieza de los worktrees que crea:3239Para worktrees basados en git, Claude Code maneja la limpieza automáticamente con `git worktree remove`. Si configuró un hook WorktreeCreate, emparéjelo con un hook WorktreeRemove para controlar la limpieza de los worktrees que crea:

3235 3240 

3236* **Sin hook WorktreeRemove**: cuando sale de una sesión `--worktree` y elige eliminación, Claude Code vuelve a `git worktree remove --force` en la ruta que devolvió su hook WorktreeCreate, por lo que se elimina un worktree que git reconoce. Un worktree que git no reconoce, por ejemplo uno que su hook creó con un sistema de control de versiones no git, permanece en el disco. Para lo que hace eliminar una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) con un worktree creado por hook, consulte las reglas de eliminación de vista de agente.3241* **Sin hook WorktreeRemove**: cuando sale de una sesión `--worktree` y elige eliminación, Claude Code vuelve a `git worktree remove --force` en la ruta que devolvió su hook WorktreeCreate, por lo que se elimina un worktree que git reconoce. Un worktree que git no reconoce, por ejemplo uno que su hook creó con un sistema de control de versiones no git, permanece en el disco. Para lo que hace eliminar una [sesión de fondo](/docs/es/agent-view#what-deleting-a-session-removes) con un worktree creado por hook, consulte las reglas de eliminación de vista de agente.

3237* **El hook sale con 0**: el worktree se cuenta como eliminado. Claude Code no lee nada más del hook, así que asegúrese de que su hook eliminó el directorio.3242* **Hook sale con 0**: el worktree se cuenta como eliminado. Claude Code no lee nada más del hook, así que asegúrese de que su hook eliminó el directorio.

3238* **El hook sale con código no cero**: la eliminación falla si el directorio en `worktree_path` aún existe después, y el worktree permanece en el disco sin respaldo de git. Un hook que eliminó el directorio antes de salir con código no cero se cuenta como eliminado. Para cómo se reporta el fallo, consulte [entrada de WorktreeRemove](#worktreeremove-input).3243* **Hook sale con código no cero**: la eliminación falla si el directorio en `worktree_path` aún existe después, y el worktree permanece en el disco sin fallback de git. Un hook que eliminó el directorio antes de salir con código no cero se cuenta como eliminado. Para cómo se reporta el fallo, consulte [entrada de WorktreeRemove](#worktreeremove-input).

3239 3244 

3240Claude Code nunca elimina una rama perteneciente a un worktree creado por hook, porque solo conoce la ruta que devolvió su hook WorktreeCreate. Si su hook WorktreeCreate crea una rama, elimínela en su hook WorktreeRemove.3245Claude Code nunca elimina una rama perteneciente a un worktree creado por hook, porque solo conoce la ruta que devolvió su hook WorktreeCreate. Si su hook WorktreeCreate crea una rama, elimínela en su hook WorktreeRemove.

3241 3246 

3242Claude Code descarta los [campos de salida JSON](#json-output) de un hook WorktreeRemove, como `systemMessage` y `continue`.3247Claude Code descarta los [campos de salida JSON](#json-output) de un hook WorktreeRemove, como `systemMessage` y `continue`.

3243 3248 

3244Para una eliminación de sesión en segundo plano, Claude Code verifica la ruta del worktree almacenada antes de ejecutar el hook y rechaza una ruta que es un enlace simbólico o pasa a través de uno por debajo de la raíz del repositorio. El hook se ejecuta para un worktree que aún contiene archivos solo cuando confirma la eliminación en [vista de agente](/docs/es/agent-view#what-deleting-a-session-removes); para tal worktree, [`claude rm`](/docs/es/agent-view#manage-sessions-from-the-shell) mantiene la sesión y el worktree en su lugar. Antes de v2.1.216, el hook se ejecutaba en la ruta almacenada sin estas verificaciones.3249Para una eliminación de sesión de fondo, Claude Code verifica la ruta del worktree almacenada antes de ejecutar el hook y rechaza una ruta que es un enlace simbólico o pasa a través de uno por debajo de la raíz del repositorio. El hook se ejecuta para un worktree que aún contiene archivos solo cuando confirma la eliminación en [vista de agente](/docs/es/agent-view#what-deleting-a-session-removes); para tal worktree, [`claude rm`](/docs/es/agent-view#manage-sessions-from-the-shell) mantiene la sesión y el worktree en su lugar. Antes de v2.1.216, el hook se ejecutaba en la ruta almacenada sin estas verificaciones.

3245 3250 

3246Claude Code pasa la ruta devuelta por WorktreeCreate como `worktree_path` en la entrada del hook. Este ejemplo lee esa ruta y elimina el directorio:3251Claude Code pasa la ruta devuelta por WorktreeCreate como `worktree_path` en la entrada del hook. Este ejemplo lee esa ruta y elimina el directorio:

3247 3252 


3281El código de salida de un hook WorktreeRemove decide el resultado. Cuando un hook sale con código no cero y el directorio en `worktree_path` aún existe después, la eliminación falla:3286El código de salida de un hook WorktreeRemove decide el resultado. Cuando un hook sale con código no cero y el directorio en `worktree_path` aún existe después, la eliminación falla:

3282 3287 

3283* El worktree permanece en el disco, y el comando del hook y stderr van al [registro de depuración](#debug-hooks).3288* El worktree permanece en el disco, y el comando del hook y stderr van al [registro de depuración](#debug-hooks).

3284* Si estaba eliminando una sesión en segundo plano, la sesión también permanece. El mensaje de rechazo en [vista de agente](/docs/es/agent-view#what-deleting-a-session-removes) reporta cómo terminó el hook, como `exited 1`, cita el inicio de su stderr, y dice si eliminar la sesión nuevamente elimina el directorio de todas formas.3289* Si estaba eliminando una sesión de fondo, la sesión también permanece. El mensaje de rechazo en [vista de agente](/docs/es/agent-view#what-deleting-a-session-removes) reporta cómo terminó el hook, como `exited 1`, cita el inicio de su stderr, y dice si eliminar la sesión nuevamente elimina el directorio de todas formas.

3285 3290 

3286<h3 id="precompact">3291<h3 id="precompact">

3287 PreCompact3292 PreCompact


3298 3303 

3299Salga con código 2 para bloquear la compactación. Para un `/compact` manual, el mensaje stderr se muestra al usuario. También puede bloquear devolviendo JSON con `"decision": "block"`.3304Salga con código 2 para bloquear la compactación. Para un `/compact` manual, el mensaje stderr se muestra al usuario. También puede bloquear devolviendo JSON con `"decision": "block"`.

3300 3305 

3301Bloquear la compactación automática tiene diferentes efectos dependiendo de cuándo se dispare. Si la compactación fue disparada de forma proactiva antes del límite de contexto, Claude Code la omite y la conversación continúa sin compactar. Si la compactación fue disparada para recuperarse de un error de límite de contexto ya devuelto por la API, el error subyacente aparece y la solicitud actual falla.3306Bloquear la compactación automática tiene diferentes efectos dependiendo de cuándo se dispare. Si la compactación fue disparada de forma proactiva antes del límite de contexto, Claude Code la omite y la conversación continúa sin compactar. Si la compactación fue disparada para recuperarse de un error de límite de contexto ya devuelto por la API, el error subyacente surge y la solicitud actual falla.

3302 3307 

3303Claude Code descarta los campos `systemMessage` y `continue` de un hook PreCompact.3308Claude Code descarta los campos `systemMessage` y `continue` de un hook PreCompact.

3304 3309 


3325 3330 

3326Se ejecuta después de que Claude Code completa una operación de compactación. Úselo para reaccionar al nuevo estado compactado, por ejemplo para registrar el resumen generado o actualizar el estado externo. Claude Code descarta los campos `systemMessage` y `continue` de un hook PostCompact.3331Se ejecuta después de que Claude Code completa una operación de compactación. Úselo para reaccionar al nuevo estado compactado, por ejemplo para registrar el resumen generado o actualizar el estado externo. Claude Code descarta los campos `systemMessage` y `continue` de un hook PostCompact.

3327 3332 

3328Los mismos valores de matcher se aplican como para `PreCompact`:3333Los mismos valores de matcher se aplican que para `PreCompact`:

3329 3334 

3330| Matcher | Cuándo se dispara |3335| Matcher | Cuándo se dispara |

3331| :- | :- |3336| :- | :- |


3355 PreModelSwitch3360 PreModelSwitch

3356</h3>3361</h3>

3357 3362 

3358Se ejecuta antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitaron. Úselo para bloquear un cambio, requerir confirmación o mostrar qué costará el cambio antes de que suceda.3363Se ejecuta antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Úselo para bloquear un cambio, requerir confirmación o mostrar cuál será el costo del cambio antes de que suceda.

3359 3364 

3360PreModelSwitch requiere Claude Code v2.1.251 o posterior. Claude Code lo ejecuta para estas solicitudes:3365PreModelSwitch requiere Claude Code v2.1.251 o posterior. Claude Code lo ejecuta para estas solicitudes:

3361 3366 


3363* El selector de modelo `Option+P` o `Alt+P`3368* El selector de modelo `Option+P` o `Alt+P`

3364* La configuración Model en `/config`3369* La configuración Model en `/config`

3365* Activar [modo rápido](/docs/es/fast-mode) cuando eso cambia el modelo de la sesión3370* Activar [modo rápido](/docs/es/fast-mode) cuando eso cambia el modelo de la sesión

3366* Una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un anfitrión [SDK del agente](/docs/es/agent-sdk/typescript#query-object) o [Control remoto](/docs/es/remote-control)3371* Una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un host [Agent SDK](/docs/es/agent-sdk/typescript#query-object) o [Control Remoto](/docs/es/remote-control)

3367 3372 

3368Claude Code no ejecuta hooks PreModelSwitch para cambios que hace por sí solo, como un [respaldo de modelo automático](/docs/es/model-config#automatic-model-fallback) o restaurar el modelo cuando reanuda una sesión. Esos cambios llegan a [PostModelSwitch](#postmodelswitch) solo.3373Claude Code no ejecuta hooks PreModelSwitch para cambios que hace por sí solo, como un [fallback de modelo automático](/docs/es/model-config#automatic-model-fallback) o restaurar el modelo cuando reanuda una sesión. Esos cambios llegan a [PostModelSwitch](#postmodelswitch) solo.

3369 3374 

3370Claude Code compara el matcher contra el nombre canónico del modelo al que la sesión está cambiando, ignorando cualquier sufijo `[1m]`. Un alias como `opus`, un ID de modelo fechado, y un ID específico del proveedor como un ID de modelo de Amazon Bedrock todos coinciden con el único nombre canónico al que se resuelven, por lo que `claude-opus-5` cubre cada deletreo de Opus 5.3375Claude Code compara el matcher contra el nombre canónico del modelo al que la sesión está cambiando, ignorando cualquier sufijo `[1m]`. Un alias como `opus`, un ID de modelo fechado, y un ID específico del proveedor como un ID de modelo de Amazon Bedrock todos coinciden con el único nombre canónico al que se resuelven, por lo que `claude-opus-5` cubre cada deletreo de Opus 5.

3371 3376 

3372Cuando Claude Code no puede determinar un nombre canónico para el objetivo, por ejemplo un ID de modelo personalizado que solo su [puerta de enlace LLM](/docs/es/llm-gateway) conoce, ejecuta cada hook PreModelSwitch independientemente del matcher. Un hook que bloquea debe verificar `to_model` de su entrada en lugar de confiar solo en el matcher.3377Cuando Claude Code no puede determinar un nombre canónico para el objetivo, por ejemplo un ID de modelo personalizado que solo su [puerta de enlace LLM](/docs/es/llm-gateway) conoce, ejecuta cada hook PreModelSwitch independientemente del matcher. Un hook que bloquea debería por lo tanto verificar `to_model` de su entrada en lugar de confiar solo en el matcher.

3373 3378 

3374Escriba el matcher como un nombre exacto, una lista separada por `|` como `claude-opus-4-6|claude-opus-5`, o una expresión regular como `.*opus.*`. Este ejemplo usa un matcher de nombre exacto y también verifica `to_model` de la entrada del hook, por lo que rechaza un cambio a Opus 4.6 al salir con código 2 y permite cualquier otro objetivo:3379Escriba el matcher como un nombre exacto, una lista separada por `|` como `claude-opus-4-6|claude-opus-5`, o una expresión regular como `.*opus.*`. Este ejemplo usa un matcher de nombre exacto y también verifica `to_model` de la entrada del hook, por lo que rechaza un cambio a Opus 4.6 saliendo con código 2 y permite cualquier otro objetivo:

3375 3380 

3376<Tabs>3381<Tabs>

3377 <Tab title="macOS/Linux">3382 <Tab title="macOS/Linux">


3443 Entrada de PreModelSwitch3448 Entrada de PreModelSwitch

3444</h4>3449</h4>

3445 3450 

3446Además de los [campos de entrada comunes](#common-input-fields), los hooks PreModelSwitch reciben los campos en esta tabla. Los últimos cinco describen qué cuesta reenviar la conversación al nuevo modelo, para que un hook pueda mostrar esa cifra antes de que suceda el cambio.3451Además de los [campos de entrada comunes](#common-input-fields), los hooks PreModelSwitch reciben los campos en esta tabla. Los últimos cinco describen cuál es el costo de reenviar la conversación al nuevo modelo, para que un hook pueda mostrar esa cifra antes de que suceda el cambio.

3447 3452 

3448| Campo | Tipo | Descripción |3453| Campo | Tipo | Descripción |

3449| :- | :- | :- |3454| :- | :- | :- |

3450| `from_model` | string | ID de modelo del que cambia el cambio |3455| `from_model` | string | ID de modelo del que cambia el cambio |

3451| `to_model` | string | ID de modelo al que cambia el cambio. El matcher compara contra el nombre canónico de este modelo |3456| `to_model` | string | ID de modelo al que cambia el cambio. El matcher compara contra el nombre canónico de este modelo |

3452| `requested_model` | string o `null` | El modelo que la solicitud nombró: un alias como `opus`, un ID de modelo completo, o `null` cuando la solicitud fue para el modelo predeterminado |3457| `requested_model` | string o `null` | El modelo que la solicitud nombró: un alias como `opus`, un ID de modelo completo, o `null` cuando la solicitud fue para el modelo predeterminado |

3453| `source` | string | De dónde vino la solicitud: `"command"` para `/model <name>`, la configuración Model en `/config`, o activar modo rápido; `"picker"` para un selector de modelo; `"sdk"` para una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un anfitrión del SDK del agente o Control remoto |3458| `source` | string | De dónde vino la solicitud: `"command"` para `/model <name>`, la configuración Model en `/config`, o activar modo rápido; `"picker"` para un selector de modelo; `"sdk"` para una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un host Agent SDK o Control Remoto |

3454| `context_tokens` | number | Tokens que la siguiente solicitud reenvía como su prompt: los tokens de entrada, lectura de caché, creación de caché y salida de la última respuesta en la conversación principal, combinados. `0` antes de la primera respuesta |3459| `context_tokens` | number | Tokens que la siguiente solicitud reenvía como su prompt: los tokens de entrada, lectura de caché, creación de caché y salida de la última respuesta en la conversación principal, combinados. `0` antes de la primera respuesta |

3455| `prompt_cache_warm` | boolean | Si el caché de prompt del modelo actual probablemente aún esté caliente, lo que significa que el cambio lo pierde |3460| `prompt_cache_warm` | boolean | Si el caché de prompt del modelo actual probablemente aún esté caliente, lo que significa que el cambio lo pierde |

3456| `cache_ttl` | string | [Duración del caché de prompt](/docs/es/prompt-caching#cache-lifetime) que Claude Code solicita para esta sesión: `"5m"` o `"1h"` |3461| `cache_ttl` | string | [Duración de vida del caché de prompt](/docs/es/prompt-caching#cache-lifetime) que Claude Code solicita para esta sesión: `"5m"` o `"1h"` |

3457| `estimated_cache_write_usd` | number | Costo estimado en dólares estadounidenses de escribir `context_tokens` en el caché de prompt en `to_model` a la tasa `cache_ttl`, excluyendo la siguiente respuesta. El servidor puede no necesitar re-cachear todo el contexto, así que trátelo como una estimación |3462| `estimated_cache_write_usd` | number | Costo estimado en dólares estadounidenses de escribir `context_tokens` en el caché de prompt en `to_model` a la tasa `cache_ttl`, excluyendo la siguiente respuesta. El servidor puede no necesitar re-cachear todo el contexto, así que trátelo como una estimación |

3458| `pricing` | string | Cómo Claude Code fijó el precio de `estimated_cache_write_usd`: `"configured"` a sus propias tasas de la organización cuando las ha configurado, `"catalog"` a precio de lista, o `"default"` cuando `to_model` no tiene precio conocido y Claude Code asumió una tasa predeterminada |3463| `pricing` | string | Cómo Claude Code fijó el precio de `estimated_cache_write_usd`: `"configured"` a sus propias tasas de la organización cuando las ha configurado, `"catalog"` a precio de lista, o `"default"` cuando `to_model` no tiene precio conocido y Claude Code asumió una tasa predeterminada |

3459 3464 


3483 3488 

3484Los hooks `PreModelSwitch` pueden cancelar el cambio, pedir al usuario que lo confirme, o permitir que continúe. El código de salida 2 o un `decision: "block"` de nivel superior cancela el cambio.3489Los hooks `PreModelSwitch` pueden cancelar el cambio, pedir al usuario que lo confirme, o permitir que continúe. El código de salida 2 o un `decision: "block"` de nivel superior cancela el cambio.

3485 3490 

3486Para un control más fino, devuelva `permissionDecision` y `permissionDecisionReason` en un objeto `hookSpecificOutput`, como en [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` acepta `"allow"`, `"deny"`, y `"ask"`. No acepta `"defer"`, `updatedInput`, o `additionalContext`. La tabla a continuación describe ambos campos:3491Para control más fino, devuelva `permissionDecision` y `permissionDecisionReason` en un objeto `hookSpecificOutput`, como en [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` acepta `"allow"`, `"deny"`, y `"ask"`. No acepta `"defer"`, `updatedInput`, o `additionalContext`. La tabla a continuación describe ambos campos:

3487 3492 

3488| Campo | Descripción |3493| Campo | Descripción |

3489| :- | :- |3494| :- | :- |

3490| `permissionDecision` | `"allow"` continúa y omite la [confirmación que Claude Code muestra mientras el caché de prompt está caliente](/docs/es/prompt-caching#switching-models). `"deny"` cancela el cambio. `"ask"` solicita al usuario que lo confirme |3495| `permissionDecision` | `"allow"` continúa y omite la [confirmación que Claude Code muestra mientras el caché de prompt está caliente](/docs/es/prompt-caching#switching-models). `"deny"` cancela el cambio. `"ask"` solicita al usuario que lo confirme |

3491| `permissionDecisionReason` | Para `"deny"`, se muestra al usuario como la razón por la que se bloqueó el cambio, o se devuelve como el error para una solicitud `set_model`. Para `"ask"`, se muestra en el aviso de confirmación. Se ignora para `"allow"` |3496| `permissionDecisionReason` | Para `"deny"`, se muestra al usuario como la razón por la que se bloqueó el cambio, o se devuelve como el error para una solicitud `set_model`. Para `"ask"`, se muestra en el prompt de confirmación. Se ignora para `"allow"` |

3492 3497 

3493Solo `/model` en una sesión interactiva puede mostrar el aviso `"ask"`. En todas las otras superficies, incluido modo no interactivo con la bandera `-p`, `/config`, y solicitudes `set_model`, Claude Code trata `"ask"` como un rechazo.3498Solo `/model` en una sesión interactiva puede mostrar el prompt `"ask"`. En todas las otras superficies, incluido modo no interactivo con la bandera `-p`, `/config`, y solicitudes `set_model`, Claude Code trata `"ask"` como un rechazo.

3494 3499 

3495Este ejemplo pide al usuario que confirme y cita el recuento de tokens de `context_tokens`:3500Este ejemplo pide al usuario que confirme y cita el recuento de tokens de `context_tokens`:

3496 3501 


3510 3515 

3511Un hook PreModelSwitch que no responde antes de su tiempo de espera bloquea el cambio. En [PreToolUse](#timeouts), por el contrario, un hook de comando que agota el tiempo de espera permite que la llamada de herramienta continúe. El tiempo de espera predeterminado para este evento es 30 segundos. `PreModelSwitch` ejecuta solo hooks `command`, `http`, y `mcp_tool`, por lo que los valores predeterminados `prompt` y `agent` no se aplican.3516Un hook PreModelSwitch que no responde antes de su tiempo de espera bloquea el cambio. En [PreToolUse](#timeouts), por el contrario, un hook de comando que agota el tiempo de espera permite que la llamada de herramienta continúe. El tiempo de espera predeterminado para este evento es 30 segundos. `PreModelSwitch` ejecuta solo hooks `command`, `http`, y `mcp_tool`, por lo que los valores predeterminados `prompt` y `agent` no se aplican.

3512 3517 

3513Un hook que sale con un código distinto de 0 o 2 y no imprime ninguna decisión JSON no bloquea: Claude Code muestra su stderr y aplica el cambio, como se describe en [Otros códigos de salida](#other-exit-codes).3518Un hook que sale con un código distinto de 0 o 2 e imprime sin decisión JSON no bloquea: Claude Code muestra su stderr y aplica el cambio, como se describe en [Otros códigos de salida](#other-exit-codes).

3514 3519 

3515<h3 id="postmodelswitch">3520<h3 id="postmodelswitch">

3516 PostModelSwitch3521 PostModelSwitch


3520 3525 

3521PostModelSwitch requiere Claude Code v2.1.251 o posterior. No puede bloquear, porque el modelo ya ha cambiado. Claude Code ejecuta hooks PostModelSwitch después de cualquiera de estos cambios:3526PostModelSwitch requiere Claude Code v2.1.251 o posterior. No puede bloquear, porque el modelo ya ha cambiado. Claude Code ejecuta hooks PostModelSwitch después de cualquiera de estos cambios:

3522 3527 

3523* Un cambio que usted o un cliente solicitaron3528* Un cambio que usted o un cliente solicitó

3524* Un [respaldo de modelo automático](/docs/es/model-config#automatic-model-fallback), que cambia el modelo de la sesión3529* Un [fallback de modelo automático](/docs/es/model-config#automatic-model-fallback), que cambia el modelo de la sesión

3525* Una configuración como [`opusplan`](/docs/es/model-config#opusplan-model-setting) entrando o saliendo del modo plan3530* Una configuración como [`opusplan`](/docs/es/model-config#opusplan-model-setting) entrando o saliendo del modo de plan

3526* Claude Code restaurando el modelo cuando reanuda una sesión3531* Claude Code restaurando el modelo cuando reanuda una sesión

3527 3532 

3528Claude Code no ejecuta hooks PostModelSwitch cuando un modelo de una [cadena de modelo de respaldo](/docs/es/model-config#fallback-model-chains) sirve un turno, porque esa sustitución dura un turno y deja el modelo de la sesión sin cambios.3533Claude Code no ejecuta hooks PostModelSwitch cuando un modelo de una [cadena de modelo de fallback](/docs/es/model-config#fallback-model-chains) sirve un turno, porque esa sustitución dura un turno y deja el modelo de la sesión sin cambios.

3529 3534 

3530El matcher sigue las mismas reglas que [PreModelSwitch](#premodelswitch): Claude Code compara contra el nombre canónico del modelo al que la sesión cambió.3535El matcher sigue las mismas reglas que [PreModelSwitch](#premodelswitch): Claude Code compara contra el nombre canónico del modelo al que la sesión cambió.

3531 3536 


3555 Entrada de PostModelSwitch3560 Entrada de PostModelSwitch

3556</h4>3561</h4>

3557 3562 

3558Los hooks PostModelSwitch reciben los mismos campos que [PreModelSwitch](#premodelswitch-input), con `hook_event_name` establecido en `"PostModelSwitch"` y dos valores `source` más: `"auto"` para un respaldo automático u otro cambio que Claude Code hizo por sí solo, y `"resume"` para el modelo restaurado cuando reanuda una sesión.3563Los hooks PostModelSwitch reciben los mismos campos que [PreModelSwitch](#premodelswitch-input), con `hook_event_name` establecido en `"PostModelSwitch"` y dos valores `source` más: `"auto"` para un fallback automático u otro cambio que Claude Code hizo por sí solo, y `"resume"` para el modelo restaurado cuando reanuda una sesión.

3559 3564 

3560`requested_model` es `null` cuando `source` es `"auto"`. Cuando `source` es `"resume"`, es la configuración de modelo guardada que Claude Code restauró.3565`requested_model` es `null` cuando `source` es `"auto"`. Cuando `source` es `"resume"`, es la configuración de modelo guardada que Claude Code restauró.

3561 3566 


3569| :- | :- |3574| :- | :- |

3570| `additionalContext` | Cadena agregada al contexto de Claude con la siguiente solicitud. Consulte [Agregar contexto para Claude](#add-context-for-claude) |3575| `additionalContext` | Cadena agregada al contexto de Claude con la siguiente solicitud. Consulte [Agregar contexto para Claude](#add-context-for-claude) |

3571 3576 

3572Si el hook no ha terminado dentro de cinco segundos después de que envía la siguiente solicitud, Claude Code envía esa solicitud sin la salida y la adjunta a la siguiente solicitud en su lugar. Si el modelo cambia varias veces antes de la siguiente solicitud, Claude Code entrega solo la salida para el modelo de destino del último cambio.3577Si el hook no se ha completado dentro de cinco segundos después de que envíe la siguiente solicitud, Claude Code envía esa solicitud sin la salida y la adjunta a la siguiente solicitud en su lugar. Si el modelo cambia varias veces antes de la siguiente solicitud, Claude Code entrega solo la salida para el cambio del modelo objetivo final.

3573 3578 

3574<h3 id="sessionend">3579<h3 id="sessionend">

3575 SessionEnd3580 SessionEnd

3576</h3>3581</h3>

3577 3582 

3578Se ejecuta cuando termina una sesión de Claude Code. Útil para tareas de limpieza, registrar estadísticas de sesión o guardar estado de sesión. Admite matchers para filtrar por razón de salida.3583Se ejecuta cuando termina una sesión de Claude Code. Útil para tareas de limpieza, registro de estadísticas de sesión o guardado del estado de la sesión. Admite matchers para filtrar por razón de salida.

3579 3584 

3580El campo `reason` en la entrada del hook indica por qué terminó la sesión:3585El campo `reason` en la entrada del hook indica por qué terminó la sesión:

3581 3586 


3586| `logout` | Usuario cerró sesión |3591| `logout` | Usuario cerró sesión |

3587| `prompt_input_exit` | Usuario salió mientras la entrada de prompt era visible |3592| `prompt_input_exit` | Usuario salió mientras la entrada de prompt era visible |

3588| `other` | Otras razones de salida |3593| `other` | Otras razones de salida |

3589| `bypass_permissions_disabled` | Eliminado en v2.1.234; Claude Code no lo envía. Elimínelo de sus matchers `SessionEnd` |3594| `bypass_permissions_disabled` | Eliminado en v2.1.234; Claude Code no lo envía. Elimine de sus matchers `SessionEnd` |

3590 3595 

3591<h4 id="sessionend-input">3596<h4 id="sessionend-input">

3592 Entrada de SessionEnd3597 Entrada de SessionEnd


3604}3609}

3605```3610```

3606 3611 

3607Los hooks SessionEnd no tienen control de decisión. No pueden bloquear la terminación de sesión pero pueden realizar tareas de limpieza. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage`.3612Los hooks SessionEnd no tienen control de decisión. No pueden bloquear la terminación de la sesión pero pueden realizar tareas de limpieza. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage`.

3608 3613 

3609Los hooks SessionEnd tienen un tiempo de espera predeterminado de 1.5 segundos. Se aplica cuando sale, ejecuta `/clear`, o cambia sesiones con `/resume` interactivo. Puede dar a un hook más tiempo de dos formas:3614Los hooks SessionEnd tienen un tiempo de espera predeterminado de 1.5 segundos. Se aplica cuando sale, ejecuta `/clear`, o cambia de sesiones con `/resume` interactivo. Puede dar a un hook más tiempo de dos formas:

3610 3615 

3611* **`timeout` por hook**: establezca `timeout` en la configuración de ese hook. El presupuesto general aumenta automáticamente para coincidir con el `timeout` por hook más alto en sus archivos de configuración, hasta 60 segundos. Si aumenta el presupuesto de esta forma, un hook sin su propio `timeout` aún mantiene el predeterminado. Los tiempos de espera establecidos en hooks proporcionados por plugins no aumentan el presupuesto.3616* **`timeout` por hook**: establezca `timeout` en la configuración de ese hook. El presupuesto general aumenta automáticamente para coincidir con el `timeout` por hook más alto en sus archivos de configuración, hasta 60 segundos. Si aumenta el presupuesto de esta forma, un hook sin su propio `timeout` aún mantiene el predeterminado. Los tiempos de espera establecidos en hooks proporcionados por plugins no aumentan el presupuesto.

3612* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: establezca esta variable de entorno en milisegundos para anular el presupuesto explícitamente. El valor que establezca también se convierte en el tiempo de espera para cada hook sin su propio `timeout`.3617* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: establezca esta variable de entorno en milisegundos para anular el presupuesto explícitamente. El valor que establezca también se convierte en el tiempo de espera para cada hook sin su propio `timeout`.

hooks-guide.md +1 −1

Details

196| `elicitation_url_dialog` | Un servidor MCP te pide que abras una URL en el navegador y no has escrito durante aproximadamente seis segundos |196| `elicitation_url_dialog` | Un servidor MCP te pide que abras una URL en el navegador y no has escrito durante aproximadamente seis segundos |

197| `elicitation_complete` | Un servidor MCP reporta que una [elicitación en modo URL](/docs/es/hooks#elicitation-input) está completa |197| `elicitation_complete` | Un servidor MCP reporta que una [elicitación en modo URL](/docs/es/hooks#elicitation-input) está completa |

198| `elicitation_response` | Una respuesta de elicitación de MCP se envía de vuelta al servidor |198| `elicitation_response` | Una respuesta de elicitación de MCP se envía de vuelta al servidor |

199| `agent_needs_input` | Una sesión en segundo plano comienza a esperar tu entrada mientras la [vista de agente](/docs/es/agent-view) está abierta, o la sesión actual te hace una [pregunta de configuración de terminal de un compañero de equipo de agente](/docs/es/agent-teams#choose-a-display-mode) y no has escrito durante aproximadamente seis segundos |199| `agent_needs_input` | Una sesión en segundo plano comienza a esperar tu entrada mientras la [vista de agente](/docs/es/agent-view) está abierta. También se activa cuando una sesión de terminal te muestra una [pregunta de configuración de terminal de un compañero de equipo de agente](/docs/es/agent-teams#choose-a-display-mode) o el aviso del modo automático sobre [cargos de solicitud de clasificador](/docs/es/auto-mode-classifier-billing) y no has escrito durante aproximadamente seis segundos |

200| `agent_completed` | Una sesión en segundo plano se completa o falla. Se activa solo mientras la [vista de agente](/docs/es/agent-view) está abierta |200| `agent_completed` | Una sesión en segundo plano se completa o falla. Se activa solo mientras la [vista de agente](/docs/es/agent-view) está abierta |

201| `quota_auto_resume_fired` | Claude Code continúa tu tarea después de que un límite de uso de claude.ai la pausó: en el reinicio, o antes cuando algo que haces en Claude Code durante la espera, como añadir créditos de uso, actualizar tu plan o cambiar modelos, hace que el uso esté disponible de nuevo, con la [excepción de configuración de modelo](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) |201| `quota_auto_resume_fired` | Claude Code continúa tu tarea después de que un límite de uso de claude.ai la pausó: en el reinicio, o antes cuando algo que haces en Claude Code durante la espera, como añadir créditos de uso, actualizar tu plan o cambiar modelos, hace que el uso esté disponible de nuevo, con la [excepción de configuración de modelo](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) |

202| `quota_auto_resume_stale` | Un límite de uso de claude.ai se reinició mientras tu computadora dormía durante más de aproximadamente 30 minutos. Claude Code espera a que presiones `Enter` en lugar de continuar. Después de un sueño más corto continúa y activa `quota_auto_resume_fired` en su lugar |202| `quota_auto_resume_stale` | Un límite de uso de claude.ai se reinició mientras tu computadora dormía durante más de aproximadamente 30 minutos. Claude Code espera a que presiones `Enter` en lugar de continuar. Después de un sueño más corto continúa y activa `quota_auto_resume_fired` en su lugar |

keybindings.md +5 −2

Details

301| `footer:down` | Down | Navegar hacia abajo en el pie de página |301| `footer:down` | Down | Navegar hacia abajo en el pie de página |

302| `footer:openSelected` | Enter | Abrir elemento de pie de página seleccionado |302| `footer:openSelected` | Enter | Abrir elemento de pie de página seleccionado |

303| `footer:clearSelection` | Escape | Borrar selección de pie de página |303| `footer:clearSelection` | Escape | Borrar selección de pie de página |

304| `footer:dismiss` | (sin asignar) | Eliminado en v2.1.281. Un `keybindings.json` que aún nombra la acción sigue siendo válido, y la vinculación no hace nada. Antes de v2.1.281, Backspace y Delete descartaban el enlace de artefacto seleccionado del pie de página |304| `footer:dismiss` | (sin asignar) | Vincular una tecla a esta acción no tiene efecto, y un `keybindings.json` que la nombra sigue siendo válido. Antes de v2.1.281, Backspace y Delete estaban vinculados a ella y descartaban el enlace de artefacto seleccionado del pie de página. |

305 305 

306Mientras se selecciona un elemento de pie de página, como una fila en el panel de agente debajo de la indicación, `Enter` lo abre incluso cuando reasigna `Enter` en el contexto `Chat` a `chat:queueSubmit` o `chat:newline`.306Mientras se selecciona un elemento de pie de página, como una fila en el panel de agente debajo de la indicación, `Enter` lo abre incluso cuando reasigna `Enter` en el contexto `Chat` a `chat:queueSubmit` o `chat:newline`.

307 307 


417| `select:accept` | Enter | Aceptar selección |417| `select:accept` | Enter | Aceptar selección |

418| `select:cancel` | Escape | Cancelar selección |418| `select:cancel` | Escape | Cancelar selección |

419 419 

420En paneles de lista como `/skills` y `/mcp`, Claude Code aplica sus vinculaciones de `select:pageUp`, `select:pageDown`, `select:first` y `select:last`. En la mayoría de otras listas, como el selector `/model`, se aplican sus vinculaciones de `select:first` y `select:last`. PageUp y PageDown avanzan por las opciones en esas listas independientemente de sus vinculaciones.420En paneles de lista como `/skills`, `/mcp` y `/tasks`, Claude Code aplica sus vinculaciones de `select:pageUp`, `select:pageDown`, `select:first` y `select:last`. En la mayoría de otras listas, como el selector `/model`, se aplican sus vinculaciones de `select:first` y `select:last`. PageUp y PageDown avanzan por las opciones en esas listas independientemente de sus vinculaciones.

421 421 

422Antes de v2.1.280, esas otras listas ignoraban Home, End y sus vinculaciones de `select:first` y `select:last`.422Antes de v2.1.280, esas otras listas ignoraban Home, End y sus vinculaciones de `select:first` y `select:last`.

423 423 

424Antes de v2.1.283, la lista de herramientas `/mcp` avanzaba con teclas PageUp y PageDown fijas independientemente de sus vinculaciones.

425 

424<h3 id="plugin-actions">426<h3 id="plugin-actions">

425 Acciones de plugins427 Acciones de plugins

426</h3>428</h3>


692Claude Code valida sus atajos de teclado y escribe una advertencia en el registro de depuración para:694Claude Code valida sus atajos de teclado y escribe una advertencia en el registro de depuración para:

693 695 

694* Errores de análisis (JSON o estructura inválida)696* Errores de análisis (JSON o estructura inválida)

697* Modificadores mal escritos, como `ctl+k`. Claude Code descarta la parte que no reconoce y aplica la vinculación a la pulsación de tecla que permanece, `k` en este ejemplo.

695* Nombres de contexto inválidos698* Nombres de contexto inválidos

696* Valores de acción inválidos, como una acción que no es una cadena o `null`699* Valores de acción inválidos, como una acción que no es una cadena o `null`

697* Nombres de acción desconocidos, como un error tipográfico de una acción registrada. Claude Code omite la vinculación y mantiene cualquier vinculación predeterminada para esa tecla en vigor. Antes de v2.1.246, una vinculación con un nombre de acción desconocido deshabilitaba silenciosamente esa tecla700* Nombres de acción desconocidos, como un error tipográfico de una acción registrada. Claude Code omite la vinculación y mantiene cualquier vinculación predeterminada para esa tecla en vigor. Antes de v2.1.246, una vinculación con un nombre de acción desconocido deshabilitaba silenciosamente esa tecla

Details

79 79 

80Cuando el cliente habla el formato Amazon Bedrock, retransmita el cuerpo de respuesta `InvokeModelWithResponseStream` y su encabezado `Content-Type: application/vnd.amazon.eventstream` sin modificar, y no convierta la transmisión a eventos enviados por el servidor. Consulte [Errores de streaming detrás de una puerta de enlace o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).80Cuando el cliente habla el formato Amazon Bedrock, retransmita el cuerpo de respuesta `InvokeModelWithResponseStream` y su encabezado `Content-Type: application/vnd.amazon.eventstream` sin modificar, y no convierta la transmisión a eventos enviados por el servidor. Consulte [Errores de streaming detrás de una puerta de enlace o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).

81 81 

82Reenvíe también los pings de mantenimiento de conexión. En conexiones a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`, Claude Code cuenta cada byte que su puerta de enlace retransmite, incluidos los eventos SSE `ping` y líneas de comentario, e interrumpe una transmisión que se queda en silencio durante 300 segundos de forma predeterminada. Los pings del proveedor ascendente son el único tráfico durante pausas de pensamiento prolongado, por lo que si su puerta de enlace los elimina o los almacena en búfer, Claude Code interrumpe la transmisión durante esas pausas; [Reintentos automáticos](/docs/es/errors#automatic-retries) cubre lo que una transmisión interrumpida informa según cuán lejos había progresado la respuesta. Un proveedor ascendente que no envía pings en absoluto, como el flujo de eventos binarios de Amazon Bedrock, deja esas pausas sin nada que reenviar. Al traducir desde tal proveedor ascendente, emita sus propios eventos `ping` durante brechas silenciosas. Las puertas de enlace alcanzadas a través de `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, o `ANTHROPIC_FOUNDRY_BASE_URL` no están envueltas por este perro guardián a nivel de bytes, incluso cuando retransmiten el formato Anthropic Messages; allí, un [tiempo de espera de inactividad de 5 minutos](/docs/es/env-vars) interrumpe una transmisión silenciosa en su lugar, y en conexiones `ANTHROPIC_BEDROCK_BASE_URL` puede agregar el perro guardián de bytes con [`CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`](/docs/es/env-vars).82Reenvíe también los pings de mantenimiento de conexión, porque Claude Code interrumpe una respuesta de transmisión una vez que no llegan bytes durante [cinco minutos de forma predeterminada](/docs/es/network-config#streaming-idle-watchdogs). Durante una pausa de pensamiento prolongado, los eventos SSE `ping` del proveedor ascendente pueden ser los únicos bytes en la transmisión. Si su puerta de enlace los elimina o los almacena en búfer, Claude Code interrumpe la respuesta a mitad de la pausa. Cuando traduce desde un proveedor ascendente que no envía pings en absoluto, como el flujo de eventos binarios de Amazon Bedrock, emita sus propios eventos `ping` durante brechas silenciosas.

83 83 

84<h3 id="format-mismatch-with-the-upstream">84<h3 id="format-mismatch-with-the-upstream">

85 Desajuste de formato con el proveedor ascendente85 Desajuste de formato con el proveedor ascendente

managed-mcp.md +23 −6

Details

31 31 

32| Patrón | Qué hace | Configurar |32| Patrón | Qué hace | Configurar |

33| :- | :- | :- |33| :- | :- | :- |

34| **Deshabilitar MCP** | No se cargan servidores, aparte de [servidores en proceso que la aplicación que inició la sesión registra](#exclusive-control-with-managed-mcp-json) y cualquiera que [proporcione a través de `managedMcpServers`](#provide-servers-through-managed-settings) | `managed-mcp.json` con un mapa de servidores vacío |34| **Deshabilitar MCP** | No se cargan servidores excepto los pocos que [se cargan bajo control exclusivo](#exclusive-control-with-managed-mcp-json) | `managed-mcp.json` con un mapa de servidores vacío |

35| **Implementación fija** | Cada usuario obtiene los mismos servidores y no puede agregar otros | `managed-mcp.json` con los servidores que desea |35| **Implementación fija** | Cada usuario obtiene los mismos servidores y no puede agregar otros | `managed-mcp.json` con los servidores que desea |

36| **Servidores proporcionados** | Cada usuario obtiene los servidores remotos que enumera y mantiene los suyos propios | `managedMcpServers` en configuración administrada |36| **Servidores proporcionados** | Cada usuario obtiene los servidores remotos que enumera y mantiene los suyos propios | `managedMcpServers` en configuración administrada |

37| **Catálogo aprobado** | Publique una lista de servidores aprobados; los usuarios agregan los que desean, todo lo demás se bloquea | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |37| **Catálogo aprobado** | Publique una lista de servidores aprobados; los usuarios agregan los que desean, todo lo demás se bloquea | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |


53* Los servidores que el archivo define53* Los servidores que el archivo define

54* Servidores que [proporciona a través de `managedMcpServers`](#provide-servers-through-managed-settings)54* Servidores que [proporciona a través de `managedMcpServers`](#provide-servers-through-managed-settings)

55* Servidores en proceso que la aplicación que inició la sesión registra, como el servidor propio de la extensión de VS Code o los [conectores que entrega la aplicación de escritorio](/docs/es/mcp#how-connectors-reach-claude-code)55* Servidores en proceso que la aplicación que inició la sesión registra, como el servidor propio de la extensión de VS Code o los [conectores que entrega la aplicación de escritorio](/docs/es/mcp#how-connectors-reach-claude-code)

56* El servidor integrado de [Claude in Chrome](/docs/es/chrome), si [lo permite junto con el conjunto administrado](#allow-claude-in-chrome-alongside-the-managed-set)

56 57 

57Los usuarios no pueden agregar, modificar ni usar ningún otro servidor MCP, incluidos los servidores proporcionados por plugins y los servidores pasados con la [bandera CLI `--mcp-config`](/docs/es/cli-reference#cli-flags). El archivo también suprime los conectores de claude.ai que Claude Code obtiene por sí mismo a menos que [los permita junto con el conjunto administrado](#allow-claude-ai-connectors-alongside-the-managed-set).58Los usuarios no pueden agregar, modificar ni usar ningún otro servidor MCP, incluidos los servidores proporcionados por plugins y los servidores pasados con la [bandera CLI `--mcp-config`](/docs/es/cli-reference#cli-flags). El archivo también suprime los conectores de claude.ai que Claude Code obtiene por sí mismo a menos que [los permita junto con el conjunto administrado](#allow-claude-ai-connectors-alongside-the-managed-set).

58 59 


144 Deshabilitar MCP completamente145 Deshabilitar MCP completamente

145</h3>146</h3>

146 147 

147Implemente un `managed-mcp.json` que contenga un mapa de servidor vacío para bloquear cada servidor MCP aparte de [servidores en proceso que la aplicación que inició la sesión registra](#exclusive-control-with-managed-mcp-json):148Implemente un `managed-mcp.json` que contenga un mapa de servidor vacío para bloquear cada servidor MCP aparte de los que [cargan bajo control exclusivo](#exclusive-control-with-managed-mcp-json):

148 149 

149```json theme={null}150```json theme={null}

150{151{


152}153}

153```154```

154 155 

155`claude mcp add` falla con el error de política empresarial anterior. Los servidores que los usuarios habían configurado previamente dejan de cargarse la próxima vez que inician una sesión, sin advertencia de que la política es la razón. Los servidores que proporciona a través de `managedMcpServers` aún se cargan bajo un mapa vacío, así que deje esa clave sin establecer también para deshabilitar MCP completamente.156`claude mcp add` falla con el error de política empresarial anterior. Los servidores que los usuarios habían configurado previamente dejan de cargarse la próxima vez que inician una sesión, sin advertencia de que la política es la razón. Los servidores que proporciona a través de `managedMcpServers`, y cualquier otra cosa que permita junto con el conjunto administrado, aún se cargan bajo un mapa vacío, así que deje esas claves sin establecer para desactivar MCP completamente.

156 157 

157<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">158<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">

158 Permitir conectores de claude.ai junto con el conjunto administrado159 Permitir conectores de claude.ai junto con el conjunto administrado


166 167 

167Claude Code lee `allowAllClaudeAiMcps` solo desde niveles de política controlados por administrador: configuración administrada por servidor, una clave de registro plist o HKLM implementada por MDM, o un archivo `managed-settings.json` del sistema. Colocarlo en configuración de usuario o proyecto no tiene efecto, por lo que los usuarios no pueden volver a habilitar conectores que el control exclusivo suprimió.168Claude Code lee `allowAllClaudeAiMcps` solo desde niveles de política controlados por administrador: configuración administrada por servidor, una clave de registro plist o HKLM implementada por MDM, o un archivo `managed-settings.json` del sistema. Colocarlo en configuración de usuario o proyecto no tiene efecto, por lo que los usuarios no pueden volver a habilitar conectores que el control exclusivo suprimió.

168 169 

170<h3 id="allow-claude-in-chrome-alongside-the-managed-set">

171 Permitir Claude in Chrome junto con el conjunto administrado

172</h3>

173 

174De forma predeterminada, cuando implementa `managed-mcp.json`, Claude Code bloquea el servidor integrado de [Claude in Chrome](/docs/es/chrome) en sesiones de terminal. Los usuarios no reciben el [aviso de instalación de extensión](/docs/es/chrome#install-the-extension-when-claude-asks), y una sesión donde el usuario [habilitó Chrome de forma predeterminada](/docs/es/chrome#enable-chrome-by-default) se inicia sin Chrome y no imprime ninguna advertencia. Cuando un usuario que de otro modo podría ejecutar Claude in Chrome lo inicia con `claude --chrome` o `CLAUDE_CODE_ENABLE_CFC=1`, Claude Code sale al inicio con un error que nombra la configuración `allowClaudeInChromeWithManagedMcp`.

175 

176Para permitir que los usuarios ejecuten Claude in Chrome junto con los servidores en `managed-mcp.json`, establezca `"allowClaudeInChromeWithManagedMcp": true` en la configuración administrada del dispositivo. Colóquelo en una clave de registro plist o HKLM implementada por MDM, o un archivo `managed-settings.json` del sistema, cualquiera de esos que Claude Code [selecciona](/docs/es/managed-settings#precedence-within-the-managed-tier) en ese dispositivo. Requiere Claude Code v2.1.282 o posterior. Antes de v2.1.282, Claude Code ignora la configuración, y el error de inicio dice `You cannot dynamically configure MCP servers when an enterprise MCP config is present` en su lugar.

177 

178Claude Code lee la configuración desde esas fuentes de dispositivo incluso cuando [configuración administrada por servidor](/docs/es/server-managed-settings) entrega el resto de su política. Ignora la configuración en la propia configuración administrada por servidor, en el registro HKCU escribible por el usuario, y en configuración de usuario o proyecto. Una entrada [`deniedMcpServers`](#policy-based-control-with-allowlists-and-denylists) para `claude-in-chrome` aún bloquea el servidor con la configuración activada.

179 

169<h2 id="provide-servers-through-managed-settings">180<h2 id="provide-servers-through-managed-settings">

170 Proporcionar servidores a través de configuración administrada181 Proporcionar servidores a través de configuración administrada

171</h2>182</h2>


303 314 

304| Configuración | Sin establecer (predeterminado) | Matriz vacía `[]` | Poblada |315| Configuración | Sin establecer (predeterminado) | Matriz vacía `[]` | Poblada |

305| :- | :- | :- | :- |316| :- | :- | :- | :- |

306| `allowedMcpServers` | Se permiten todos los servidores | No se permite ningún servidor, aparte de [los propios de la organización](#how-a-server-is-evaluated) | Solo se permiten servidores coincidentes, aparte de [los propios de la organización](#how-a-server-is-evaluated) |317| `allowedMcpServers` | Se permiten todos los servidores | No se permite ningún servidor, aparte de [los que omiten la comprobación de lista de permitidos](#how-a-server-is-evaluated) | Solo se permiten servidores coincidentes, aparte de [los que omiten la comprobación de lista de permitidos](#how-a-server-is-evaluated) |

307| `deniedMcpServers` | No se bloquea ningún servidor | No se bloquea ningún servidor | Se bloquean servidores coincidentes |318| `deniedMcpServers` | No se bloquea ningún servidor | No se bloquea ningún servidor | Se bloquean servidores coincidentes |

308 319 

309Vea [Entradas inválidas en configuración administrada](/docs/es/managed-settings#invalid-entries-in-managed-settings) para saber qué sucede cuando una entrada falla la validación del esquema.320Vea [Entradas inválidas en configuración administrada](/docs/es/managed-settings#invalid-entries-in-managed-settings) para saber qué sucede cuando una entrada falla la validación del esquema.


3292. **Verificar la lista de bloqueados.** Un servidor que coincida con cualquier entrada de lista de bloqueados, por URL, comando o nombre, se bloquea. Nada anula una coincidencia de lista de bloqueados.3402. **Verificar la lista de bloqueados.** Un servidor que coincida con cualquier entrada de lista de bloqueados, por URL, comando o nombre, se bloquea. Nada anula una coincidencia de lista de bloqueados.

3303. **Verificar la lista de permitidos.** Si `allowedMcpServers` no está establecido en ningún lugar, cada servidor que pasó la lista de bloqueados se carga. Si está establecido, lo que el servidor debe coincidir depende de su tipo, que se muestra en la tabla a continuación.3413. **Verificar la lista de permitidos.** Si `allowedMcpServers` no está establecido en ningún lugar, cada servidor que pasó la lista de bloqueados se carga. Si está establecido, lo que el servidor debe coincidir depende de su tipo, que se muestra en la tabla a continuación.

331 342 

332 Los servidores propios de la organización omiten esta comprobación: cada entrada `managedMcpServers`, y cualquier entrada `managed-mcp.json` cuyos valores no usen expansión `${VAR}`. Los servidores integrados también la omiten, como Claude en Chrome, el servidor `ide` al que Claude Code se conecta en un IDE de VS Code o JetBrains en ejecución, y servidores que la CLI misma configura.343 Tres grupos de servidores omiten esta comprobación:

344 

345 * Los servidores propios de la organización: cada entrada `managedMcpServers`, y cualquier entrada `managed-mcp.json` cuyos valores no usen expansión `${VAR}`.

346 * Servidores integrados, como Claude en Chrome, el servidor `ide` al que Claude Code se conecta en un IDE de VS Code o JetBrains en ejecución, y servidores que la CLI misma configura.

347 * Las herramientas de Slack de una sesión de [Claude Tag](/docs/es/claude-tag): los servidores que utiliza para leer el hilo y publicar sus respuestas se cargan sin una entrada de lista de permitidos.

333 348 

334 Un servidor `managed-mcp.json` que usa expansión `${VAR}` en su comando, argumentos, `env`, URL o encabezados aún se verifica, al igual que cada servidor que un usuario, un plugin, `--mcp-config` o claude.ai añade.349 Un servidor `managed-mcp.json` que usa expansión `${VAR}` en su comando, argumentos, `env`, URL o encabezados aún se verifica. Lo mismo ocurre con cada servidor que un usuario, un plugin, o claude.ai añade, y cada servidor que un usuario pasa con `--mcp-config`.

335 350 

336| Tipo de servidor | Se permite cuando coincide |351| Tipo de servidor | Se permite cuando coincide |

337| :- | :- |352| :- | :- |


514| Restricción | Lo que ve el usuario |529| Restricción | Lo que ve el usuario |

515| :- | :- |530| :- | :- |

516| `managed-mcp.json` está presente y el usuario ejecuta `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |531| `managed-mcp.json` está presente y el usuario ejecuta `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |

532| `managed-mcp.json` está presente y un usuario que de otro modo podría ejecutar Claude en Chrome ejecuta `claude --chrome` | Claude Code se cierra al iniciar con `Claude in Chrome is blocked by your organization's managed MCP configuration (managed-mcp.json). An administrator can allow it with allowClaudeInChromeWithManagedMcp in device policy.` |

517| El servidor está en una lista de bloqueo y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |533| El servidor está en una lista de bloqueo y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |

518| El servidor no está en la lista de permitidos y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |534| El servidor no está en la lista de permitidos y el usuario ejecuta `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |

519| El usuario ejecuta `claude mcp remove` en un servidor de `managedMcpServers` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |535| El usuario ejecuta `claude mcp remove` en un servidor de `managedMcpServers` | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |


541| `allowedMcpServers` | Lista de permitidos de servidores permitidos | Cualquier [ámbito de configuración](/docs/es/settings#where-settings-live); [Cómo se evalúa un servidor](#how-a-server-is-evaluated) dice cómo se combinan las listas de varios ámbitos y fuentes administradas | Para aplicación, una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices): configuración administrada por servidor, `managed-settings.json`, perfil MDM, o registro |557| `allowedMcpServers` | Lista de permitidos de servidores permitidos | Cualquier [ámbito de configuración](/docs/es/settings#where-settings-live); [Cómo se evalúa un servidor](#how-a-server-is-evaluated) dice cómo se combinan las listas de varios ámbitos y fuentes administradas | Para aplicación, una [fuente de configuración administrada](/docs/es/admin-setup#decide-how-settings-reach-devices): configuración administrada por servidor, `managed-settings.json`, perfil MDM, o registro |

542| `deniedMcpServers` | Lista de bloqueados de servidores bloqueados | Cualquier ámbito de configuración; [Cómo se evalúa un servidor](#how-a-server-is-evaluated) dice cómo se combinan las listas de varios ámbitos y fuentes administradas | Igual que `allowedMcpServers` |558| `deniedMcpServers` | Lista de bloqueados de servidores bloqueados | Cualquier ámbito de configuración; [Cómo se evalúa un servidor](#how-a-server-is-evaluated) dice cómo se combinan las listas de varios ámbitos y fuentes administradas | Igual que `allowedMcpServers` |

543| `allowManagedMcpServersOnly` | Bloquea la lista de permitidos solo a fuentes administradas | Solo fuentes de configuración administrada; [Las claves leídas de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source) dice qué fuentes administradas pueden activarla. La configuración no tiene efecto en otros ámbitos | Igual que `allowedMcpServers` |559| `allowManagedMcpServersOnly` | Bloquea la lista de permitidos solo a fuentes administradas | Solo fuentes de configuración administrada; [Las claves leídas de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source) dice qué fuentes administradas pueden activarla. La configuración no tiene efecto en otros ámbitos | Igual que `allowedMcpServers` |

560| `allowClaudeInChromeWithManagedMcp` | Permite que el servidor Claude integrado en Chrome se ejecute junto con `managed-mcp.json` | Configuración administrada solo en el dispositivo: un perfil MDM, el registro HKLM, o `managed-settings.json`. La configuración administrada por servidor y las fuentes escribibles por el usuario no tienen efecto | MDM, GPO, administración de flota, o cualquier proceso con privilegios de administrador |

544| `allowAllClaudeAiMcps` | Carga los conectores de claude.ai que Claude Code obtiene por sí mismo junto con `managed-mcp.json`. [Un `managed-mcp.json` en el host que ejecuta una sesión en la nube aún suprime los conectores de esa sesión](#allow-claude-ai-connectors-alongside-the-managed-set) | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Igual que `allowedMcpServers` |561| `allowAllClaudeAiMcps` | Carga los conectores de claude.ai que Claude Code obtiene por sí mismo junto con `managed-mcp.json`. [Un `managed-mcp.json` en el host que ejecuta una sesión en la nube aún suprime los conectores de esa sesión](#allow-claude-ai-connectors-alongside-the-managed-set) | Solo fuentes de configuración administrada; la configuración no tiene efecto en otros lugares | Igual que `allowedMcpServers` |

545 562 

546<h2 id="related-resources">563<h2 id="related-resources">

Details

449| [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) | Lista de bloqueo de fuentes de mercado. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de mercado administradas](/docs/es/plugins/org#restrict-what-users-can-install) |449| [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) | Lista de bloqueo de fuentes de mercado. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de mercado administradas](/docs/es/plugins/org#restrict-what-users-can-install) |

450| [`channelsEnabled`](/docs/es/settings-reference#channelsenabled) | Permitir [canales](/docs/es/channels) para la organización. Consulte [controles empresariales](/docs/es/channels#enterprise-controls) para el predeterminado en cada plan |450| [`channelsEnabled`](/docs/es/settings-reference#channelsenabled) | Permitir [canales](/docs/es/channels) para la organización. Consulte [controles empresariales](/docs/es/channels#enterprise-controls) para el predeterminado en cada plan |

451| [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) | Cuando es `true`, bloquea completamente las [fuentes de plugins de `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), por lo que el comando declarado por el mercado nunca se ejecuta. También bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del mercado, excepto para un mercado que la configuración administrada declara a sí misma. Cuando no se establece, sigue `allowManagedHooksOnly`. Requiere Claude Code v2.1.229 o posterior, y el bloque `headersHelper` requiere v2.1.238 o posterior |451| [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) | Cuando es `true`, bloquea completamente las [fuentes de plugins de `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), por lo que el comando declarado por el mercado nunca se ejecuta. También bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del mercado, excepto para un mercado que la configuración administrada declara a sí misma. Cuando no se establece, sigue `allowManagedHooksOnly`. Requiere Claude Code v2.1.229 o posterior, y el bloque `headersHelper` requiere v2.1.238 o posterior |

452| [`disableSideloadFlags`](/docs/es/settings-reference#disablesideloadflags) | Rechace los indicadores `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al inicio. En sesiones en la nube, Claude Code descarta los servidores MCP que el servidor entregó a través de `--mcp-config`, que no sean entradas `type: "sdk"` en proceso, e inicia la sesión. Requiere Claude Code v2.1.193 o posterior |452| [`disableSideloadFlags`](/docs/es/settings-reference#disablesideloadflags) | Rechace los indicadores `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al inicio. En sesiones en la nube, Claude Code en su lugar inicia la sesión y descarta los servidores `--mcp-config` entregados por el servidor, aparte de las excepciones que su [entrada de referencia](/docs/es/settings-reference#disablesideloadflags) enumera. Requiere Claude Code v2.1.193 o posterior |

453| [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#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 inicio cerrado](/docs/es/server-managed-settings#enforce-fail-closed-startup) |453| [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#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 inicio cerrado](/docs/es/server-managed-settings#enforce-fail-closed-startup) |

454| [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) | Servidores MCP remotos proporcionados a cada usuario junto con los suyos propios. Proporciona servidores en lugar de bloquear nada. Consulte [Proporcionar servidores a través de configuración administrada](/docs/es/managed-mcp#provide-servers-through-managed-settings). Requiere Claude Code v2.1.259 o posterior |454| [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) | Servidores MCP remotos proporcionados a cada usuario junto con los suyos propios. Proporciona servidores en lugar de bloquear nada. Consulte [Proporcionar servidores a través de configuración administrada](/docs/es/managed-mcp#provide-servers-through-managed-settings). Requiere Claude Code v2.1.259 o posterior |

455| [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) | Si Claude Code aplica solo la fuente administrada de mayor prioridad o [compone cada una de ellas](#compose-every-managed-source) |455| [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) | Si Claude Code aplica solo la fuente administrada de mayor prioridad o [compone cada una de ellas](#compose-every-managed-source) |

mcp.md +3 −3

Details

542 * En [sesiones en la nube](/docs/es/claude-code-on-the-web), una llamada MCP a un servidor de plugin que aún no está conectado, como justo después de que una sesión inactiva se despierte, inicia el servidor bajo demanda y espera a que se conecte542 * En [sesiones en la nube](/docs/es/claude-code-on-the-web), una llamada MCP a un servidor de plugin que aún no está conectado, como justo después de que una sesión inactiva se despierte, inicia el servidor bajo demanda y espera a que se conecte

543* **Marcadores de posición de ruta**: `${CLAUDE_PLUGIN_ROOT}` se resuelve al directorio de instalación del plugin, `${CLAUDE_PLUGIN_DATA}` a su directorio de [estado persistente](/docs/es/plugins/components#path-variables-and-persistent-data), y `${CLAUDE_PROJECT_DIR}` a la raíz del proyecto estable. La sustitución se aplica a:543* **Marcadores de posición de ruta**: `${CLAUDE_PLUGIN_ROOT}` se resuelve al directorio de instalación del plugin, `${CLAUDE_PLUGIN_DATA}` a su directorio de [estado persistente](/docs/es/plugins/components#path-variables-and-persistent-data), y `${CLAUDE_PROJECT_DIR}` a la raíz del proyecto estable. La sustitución se aplica a:

544 * servidores `stdio`: `command`, `args`, `env`544 * servidores `stdio`: `command`, `args`, `env`

545 * servidores `http`, `sse`, y `ws`: `url`, `headers`, y `headersHelper`. Antes de v2.1.195, `headersHelper` pasaba el marcador de posición como una cadena literal545 * servidores `http`, `sse`, y `ws`: `url`, `headers`, y `headersHelper`

546* **Acceso al entorno del usuario**: acceso a las mismas variables de entorno que los servidores configurados manualmente546* **Acceso al entorno del usuario**: acceso a las mismas variables de entorno que los servidores configurados manualmente

547* **Múltiples tipos de transporte**: soporte para transportes stdio, SSE, HTTP, y WebSocket, aunque el soporte de transporte puede variar según el servidor547* **Múltiples tipos de transporte**: soporte para transportes stdio, SSE, HTTP, y WebSocket, aunque el soporte de transporte puede variar según el servidor

548 548 


1101 1101 

1102| Dónde configuró el servidor | Directorio de trabajo |1102| Dónde configuró el servidor | Directorio de trabajo |

1103| :- | :- |1103| :- | :- |

1104| Un [plugin](/docs/es/plugins/components#mcp-servers) | El directorio raíz del plugin. Requiere Claude Code v2.1.195 o posterior |1104| Un [plugin](/docs/es/plugins/components#mcp-servers) | El directorio raíz del plugin |

1105| Un proyecto `.mcp.json` o un servidor de [alcance local](#local-scope) | El directorio del proyecto en el que se declara el servidor |1105| Un proyecto `.mcp.json` o un servidor de [alcance local](#local-scope) | El directorio del proyecto en el que se declara el servidor |

1106| Un archivo de agente en su proyecto, un servidor de la opción `mcpServers` del SDK o el método `setMcpServers()`, o [`--mcp-config`](/docs/es/cli-reference) | El [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión |1106| Un archivo de agente en su proyecto, un servidor de la opción `mcpServers` del SDK o el método `setMcpServers()`, o [`--mcp-config`](/docs/es/cli-reference) | El [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión |

1107| [Alcance de usuario](#user-scope), [MCP administrado](/docs/es/managed-mcp), un [conector de claude.ai](#use-mcp-servers-from-claude-ai), o un archivo de agente de fuera de su proyecto, incluido uno de un directorio `--add-dir` | Su directorio de configuración, `~/.claude` a menos que establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) |1107| [Alcance de usuario](#user-scope), [MCP administrado](/docs/es/managed-mcp), un [conector de claude.ai](#use-mcp-servers-from-claude-ai), o un archivo de agente de fuera de su proyecto, incluido uno de un directorio `--add-dir` | Su directorio de configuración, `~/.claude` a menos que establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) |


1440 1440 

1441Su servidor recibe los argumentos que Claude eligió, así que continúe validando la combinación del lado del servidor.1441Su servidor recibe los argumentos que Claude eligió, así que continúe validando la combinación del lado del servidor.

1442 1442 

1443Cuando Claude Code no puede producir un esquema que la API acepte, o en una implementación que no recibe la configuración remota que habilita la reescritura, omite esa herramienta, registra el motivo en el registro del servidor y deja disponibles las otras herramientas del servidor. Las versiones anteriores a v2.1.195 omiten todas las herramientas cuyo esquema de entrada tiene un `anyOf`, `oneOf` o `allOf` a nivel raíz.1443Cuando Claude Code no puede producir un esquema que la API acepte, o en una implementación que no recibe la configuración remota que habilita la reescritura, omite esa herramienta, registra el motivo en el registro del servidor y deja disponibles las otras herramientas del servidor.

1444 1444 

1445<h2 id="tools-with-invalid-input-schemas">1445<h2 id="tools-with-invalid-input-schemas">

1446 Herramientas con esquemas de entrada inválidos1446 Herramientas con esquemas de entrada inválidos

memory.md +20 −10

Details

89 Escriba instrucciones efectivas89 Escriba instrucciones efectivas

90</h3>90</h3>

91 91 

92Los archivos CLAUDE.md se cargan en la ventana de contexto al inicio de cada sesión, consumiendo tokens junto con su conversación. La [visualización de la ventana de contexto](/docs/es/context-window) muestra dónde se carga CLAUDE.md en relación con el resto del contexto de inicio. Debido a que son contexto en lugar de configuración forzada, la forma en que escribe las instrucciones afecta la confiabilidad con la que Claude las sigue. Las instrucciones específicas, concisas y bien estructuradas funcionan mejor.92Claude trata los archivos CLAUDE.md como contexto, no como configuración forzada, por lo que la forma en que escribe las instrucciones afecta la confiabilidad con la que Claude las sigue. Escriba instrucciones que sean lo suficientemente concretas para verificar:

93 

94**Tamaño**: apunte a menos de 200 líneas por archivo CLAUDE.md. Los archivos más largos consumen más contexto y reducen la adherencia. Si sus instrucciones están creciendo mucho, use [reglas con alcance de ruta](#path-specific-rules) para que las instrucciones se carguen solo cuando Claude trabaje con archivos coincidentes. También puede dividir el contenido en [importaciones](#import-additional-files) para organización, aunque los archivos importados aún se cargan e ingresan a la ventana de contexto al iniciar.

95 

96**Estructura**: use encabezados markdown y viñetas para agrupar instrucciones relacionadas. Claude escanea la estructura de la misma manera que los lectores: las secciones organizadas son más fáciles de seguir que los párrafos densos.

97 

98**Especificidad**: escriba instrucciones que sean lo suficientemente concretas para verificar. Por ejemplo:

99 93 

100* "Usar indentación de 2 espacios" en lugar de "Formatear código correctamente"94* "Usar indentación de 2 espacios" en lugar de "Formatear código correctamente"

101* "Ejecutar `npm test` antes de hacer commit" en lugar de "Probar sus cambios"95* "Ejecutar `npm test` antes de hacer commit" en lugar de "Probar sus cambios"

102* "Los controladores de API viven en `src/api/handlers/`" en lugar de "Mantener los archivos organizados"96* "Los controladores de API viven en `src/api/handlers/`" en lugar de "Mantener los archivos organizados"

103 97 

104**Consistencia**: si dos reglas se contradicen entre sí, Claude puede elegir una arbitrariamente. Revise sus archivos CLAUDE.md, archivos CLAUDE.md anidados en subdirectorios y [`.claude/rules/`](#organize-rules-with-claude/rules/) periódicamente para eliminar instrucciones obsoletas o conflictivas. En monorepos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitir archivos CLAUDE.md de otros equipos que no sean relevantes para su trabajo.98Mantenga sus archivos cortos, organizados y consistentes:

99 

100* **Tamaño**: apunte a menos de 200 líneas por archivo CLAUDE.md. Los archivos más largos consumen más contexto y reducen la adherencia. Mueva las instrucciones que importan solo para parte de la base de código a [reglas con alcance de ruta](#path-specific-rules), que se cargan solo cuando Claude trabaja con archivos coincidentes. Las [importaciones](#import-additional-files) le ayudan a organizar un archivo largo pero no reducen su costo de contexto, porque los archivos importados también se cargan al iniciar.

101* **Estructura**: agrupe las instrucciones relacionadas bajo encabezados y viñetas markdown. Las secciones organizadas son más fáciles de seguir para Claude que los párrafos densos.

102* **Consistencia**: si dos instrucciones se contradicen entre sí, Claude puede elegir una arbitrariamente. Revise sus archivos CLAUDE.md, archivos CLAUDE.md anidados en subdirectorios y [`.claude/rules/`](#organize-rules-with-claude/rules/) periódicamente para eliminar instrucciones obsoletas o conflictivas. Para que Claude las encuentre por usted, [ejecute una auditoría de solicitud](#audit-your-instruction-files).

103 

104<h4 id="audit-your-instruction-files">

105 Audite sus archivos de instrucciones

106</h4>

105 107 

106Para que Claude verifique estos archivos en busca de instrucciones obsoletas o conflictivas, ejecute `/doctor prompt-audit` en una sesión. Claude lee sus archivos CLAUDE.md, CLAUDE.local.md y AGENTS.md, más las reglas, skills, comandos, subagentes y estilos de salida bajo `.claude/` y `~/.claude/`. Busca problemas como instrucciones escritas para modelos más antiguos, referencias a archivos o comandos que no existen y archivos que se contradicen entre sí. Obtiene un informe de hallazgos y un conjunto de ediciones propuestas, y nada en sus archivos cambia hasta que le pida a Claude que las aplique.108Para que Claude verifique sus archivos de instrucciones en busca de contenido obsoleto o conflictivo, ejecute `/doctor prompt-audit` en una sesión. Claude busca problemas como instrucciones escritas para modelos más antiguos, referencias a archivos o comandos que no existen y archivos que se contradicen entre sí. Obtiene un informe de hallazgos con ediciones propuestas, y nada en sus archivos cambia hasta que le pida a Claude que las aplique.

107 109 

108Para auditar un archivo o directorio en su lugar, pase su ruta, por ejemplo `/doctor prompt-audit .claude/skills/deploy`. La auditoría se ejecuta a través del skill `/claude-api` incluido, por lo que no está disponible mientras ese skill está desactivado en [`skillOverrides`](/docs/es/skills#override-skill-visibility-from-settings) o con [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills). `/doctor prompt-audit` requiere Claude Code v2.1.283 o posterior.110De forma predeterminada, la auditoría cubre sus archivos CLAUDE.md, CLAUDE.local.md y AGENTS.md, más las reglas, skills, comandos, subagentes y estilos de salida bajo `.claude/` y `~/.claude/`. Para auditar un archivo o directorio en su lugar, pase su ruta, por ejemplo `/doctor prompt-audit .claude/skills/deploy`.

111 

112La auditoría se ejecuta a través del skill `/claude-api` incluido. No está disponible mientras ese skill está desactivado en [`skillOverrides`](/docs/es/skills#override-skill-visibility-from-settings) o con [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills). `/doctor prompt-audit` requiere Claude Code v2.1.283 o posterior.

109 113 

110<h3 id="import-additional-files">114<h3 id="import-additional-files">

111 Importe archivos adicionales115 Importe archivos adicionales


115 119 

116Se permiten rutas relativas y absolutas. Las rutas relativas se resuelven en relación con el archivo que contiene la importación, no con el directorio de trabajo. Los archivos importados pueden importar recursivamente otros archivos, con una profundidad máxima de cuatro saltos.120Se permiten rutas relativas y absolutas. Las rutas relativas se resuelven en relación con el archivo que contiene la importación, no con el directorio de trabajo. Los archivos importados pueden importar recursivamente otros archivos, con una profundidad máxima de cuatro saltos.

117 121 

122Para importar un archivo cuya ruta contiene espacios, coloque una barra invertida antes de cada espacio. Sin las barras invertidas, la ruta termina en el primer espacio, incluso cuando la importación está en una línea por sí sola. Una ruta envuelta en comillas no se importa en absoluto, con o sin las barras invertidas. Esta importación carga un archivo desde una carpeta llamada `Design Docs`:

123 

124```text theme={null}

125- API conventions @Design\ Docs/api-conventions.md

126```

127 

118El análisis de importación omite espacios de código Markdown y bloques de código delimitados. Para mencionar una ruta en su CLAUDE.md sin importarla, envuélvala en backticks: escribir `` `@README` `` mantiene el texto literal, mientras que `@README` fuera de backticks importa el archivo.128El análisis de importación omite espacios de código Markdown y bloques de código delimitados. Para mencionar una ruta en su CLAUDE.md sin importarla, envuélvala en backticks: escribir `` `@README` `` mantiene el texto literal, mientras que `@README` fuera de backticks importa el archivo.

119 129 

120Para incluir un README, package.json y una guía de flujo de trabajo, haga referencia a ellos con la sintaxis `@` en cualquier lugar de su CLAUDE.md:130Para incluir un README, package.json y una guía de flujo de trabajo, haga referencia a ellos con la sintaxis `@` en cualquier lugar de su CLAUDE.md:

model-config.md +22 −20

Details

41| **`haiku`** | Utiliza el modelo Haiku rápido y eficiente para tareas simples |41| **`haiku`** | Utiliza el modelo Haiku rápido y eficiente para tareas simples |

42| **`sonnet[1m]`** | Utiliza Sonnet con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) para sesiones largas. Sin efecto cuando `sonnet` ya se resuelve a Sonnet 5.5 o Sonnet 5 con su ventana nativa de 1M; detrás de una [puerta de enlace LLM](/docs/es/llm-gateway), selecciona la ventana de 1M para ese modelo |42| **`sonnet[1m]`** | Utiliza Sonnet con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) para sesiones largas. Sin efecto cuando `sonnet` ya se resuelve a Sonnet 5.5 o Sonnet 5 con su ventana nativa de 1M; detrás de una [puerta de enlace LLM](/docs/es/llm-gateway), selecciona la ventana de 1M para ese modelo |

43| **`opus[1m]`** | Utiliza Opus con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) para sesiones largas |43| **`opus[1m]`** | Utiliza Opus con una [ventana de contexto de 1 millón de tokens](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) para sesiones largas |

44| **`opusplan`** | Modo especial que utiliza `opus` durante el modo de plan, luego cambia a `sonnet` para la ejecución |44| **`opusplan`** | Modo especial que utiliza `opus` durante el Plan Mode, luego cambia a `sonnet` para la ejecución |

45 45 

46La versión a la que se resuelven los alias `opus` y `sonnet` depende del proveedor:46La versión a la que se resuelven los alias `opus` y `sonnet` depende del proveedor:

47 47 


65Los alias apuntan a la versión recomendada para su proveedor y se actualizan con el tiempo. Para fijar una versión específica, use el nombre de modelo completo, por ejemplo `claude-opus-5-5`, o establezca la variable de entorno correspondiente como `ANTHROPIC_DEFAULT_OPUS_MODEL`.65Los alias apuntan a la versión recomendada para su proveedor y se actualizan con el tiempo. Para fijar una versión específica, use el nombre de modelo completo, por ejemplo `claude-opus-5-5`, o establezca la variable de entorno correspondiente como `ANTHROPIC_DEFAULT_OPUS_MODEL`.

66 66 

67<Note>67<Note>

68 Sonnet 5.5 requiere Claude Code v2.1.284 o posterior, y Opus 5.5 requiere v2.1.280 o posterior. Ejecute `claude update` para actualizar.68 Sonnet 5.5 requiere Claude Code v2.1.284 o posterior, y Opus 5.5 requiere v2.1.280 o posterior. Si una solicitud de una versión anterior falla, consulte [Claude Code no admite este modelo](/docs/es/errors#claude-code-does-not-support-this-model). Ejecute `claude update` para actualizar.

69</Note>69</Note>

70 70 

71<h3 id="work-with-fable">71<h3 id="work-with-fable">


104 104 

105En sesiones interactivas, Claude Code muestra un mensaje de consentimiento antes de que una solicitud de Fable facture créditos de uso. Los miembros de planes Enterprise con facturación de organización no ven el mensaje. Puede continuar en Fable usando créditos de uso o cambiar a su modelo predeterminado. También puede descartar el mensaje:105En sesiones interactivas, Claude Code muestra un mensaje de consentimiento antes de que una solicitud de Fable facture créditos de uso. Los miembros de planes Enterprise con facturación de organización no ven el mensaje. Puede continuar en Fable usando créditos de uso o cambiar a su modelo predeterminado. También puede descartar el mensaje:

106 106 

107* En el selector `/model`, mantiene su modelo actual.107* Cuando selecciona un modelo Fable con `/model`, mantiene su modelo actual.

108* A mitad de sesión, Claude Code continúa el turno en su modelo predeterminado.108* A mitad de sesión, Claude Code continúa el turno en su modelo predeterminado.

109 109 

110Después de elegir continuar en Fable usando créditos de uso, Claude Code no muestra el mensaje nuevamente.110Después de elegir continuar en Fable usando créditos de uso, Claude Code no muestra el mensaje nuevamente.

111 111 

112En una sesión con [Control remoto](/docs/es/remote-control) conectado, una [sesión en segundo plano](/docs/es/agent-view), o una sesión de compañero de [equipo de agentes](/docs/es/agent-teams), es posible que nadie esté en la terminal, por lo que Claude Code mantiene el mensaje de consentimiento a mitad de sesión para el plazo de [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry), cinco minutos por defecto. Si nadie ha respondido antes del plazo, Claude Code finaliza el turno sin enviar la solicitud y agrega un aviso a la transcripción, que el cliente de Control remoto también muestra. Su selección de modelo no cambia, y Claude Code solicita consentimiento nuevamente en su próximo mensaje.112En una sesión con [Remote Control](/docs/es/remote-control) conectado, una [sesión en segundo plano](/docs/es/agent-view), o una sesión de compañero de [equipo de agentes](/docs/es/agent-teams), es posible que nadie esté en la terminal, por lo que Claude Code mantiene el mensaje de consentimiento a mitad de sesión para el plazo de [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry), cinco minutos por defecto. Si nadie ha respondido antes del plazo, Claude Code finaliza el turno sin enviar la solicitud y agrega un aviso a la transcripción, que el cliente de Remote Control también muestra. Su selección de modelo no cambia, y Claude Code solicita consentimiento nuevamente en su próximo mensaje.

113 113 

114Lo que puede hacer mientras el mensaje está esperando depende de la sesión:114Lo que puede hacer mientras el mensaje está esperando depende de la sesión:

115 115 

116* Con Control remoto conectado o en una sesión de compañero, presione cualquier tecla en la terminal para cancelar el plazo, y Claude Code espera su respuesta.116* Con Remote Control conectado o en una sesión de compañero, presione cualquier tecla en la terminal para cancelar el plazo, y Claude Code espera su respuesta.

117* En una sesión en segundo plano, responda antes del plazo.117* En una sesión en segundo plano, responda antes del plazo.

118* Si envía un nuevo mensaje desde el cliente remoto antes de que alguien escriba en la terminal, Claude Code finaliza el turno de la misma manera, y su nuevo mensaje inicia el siguiente turno. Después de que alguien escriba en la terminal, Claude Code continúa esperando la respuesta y pone en cola su nuevo mensaje detrás de ella.118* Si envía un nuevo mensaje desde el cliente remoto antes de que alguien escriba en la terminal, Claude Code finaliza el turno de la misma manera, y su nuevo mensaje inicia el siguiente turno. Después de que alguien escriba en la terminal, Claude Code continúa esperando la respuesta y pone en cola su nuevo mensaje detrás de ella.

119 119 

120En [modo no interactivo](/docs/es/headless) con la bandera `-p` y a través del Agent SDK, Claude Code nunca muestra el mensaje de consentimiento. Cuando una solicitud de Fable allí facturase a créditos de uso, Claude Code la factura sin preguntar.120En una sesión que otra aplicación aloja a través del [Agent SDK](/docs/es/agent-sdk/overview), si el mensaje aparece depende de esa aplicación. Si aparece y nadie responde antes del mismo plazo de [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry), Claude Code finaliza el turno sin enviar la solicitud.

121 

122En [modo no interactivo](/docs/es/headless) con la bandera `-p`, y en una aplicación Agent SDK que no muestra el mensaje, Claude Code nunca solicita consentimiento. Cuando una solicitud de Fable allí facturase a créditos de uso, Claude Code la factura sin preguntar.

121 123 

122<h3 id="setting-your-model">124<h3 id="setting-your-model">

123 Configurar su modelo125 Configurar su modelo


164 166 

165Cuando Claude Code no puede determinar qué hooks PreModelSwitch entregan los [plugins administrados](/docs/es/settings-reference#enabledplugins) de su organización, por ejemplo porque un plugin administrado no se cargó, rechaza el cambio en lugar de aplicarlo sin verificar, y verifica nuevamente en cada nuevo intento. Consulte [El cambio de modelo fue bloqueado por un hook PreModelSwitch](/docs/es/errors#model-switch-was-blocked-by-a-premodelswitch-hook) para el mensaje y recuperación.167Cuando Claude Code no puede determinar qué hooks PreModelSwitch entregan los [plugins administrados](/docs/es/settings-reference#enabledplugins) de su organización, por ejemplo porque un plugin administrado no se cargó, rechaza el cambio en lugar de aplicarlo sin verificar, y verifica nuevamente en cada nuevo intento. Consulte [El cambio de modelo fue bloqueado por un hook PreModelSwitch](/docs/es/errors#model-switch-was-blocked-by-a-premodelswitch-hook) para el mensaje y recuperación.

166 168 

167Cuando cambia modelos a través del método [`setModel()`](/docs/es/agent-sdk/overview) del Agent SDK o desde un dispositivo conectado a través de [Control remoto](/docs/es/remote-control), o una aplicación como la [Aplicación de escritorio](/docs/es/desktop) que ejecuta el CLI de Claude Code cambia por usted, Claude Code verifica que la cadena sea una que reconozca antes de guardarla. Esta verificación requiere Claude Code v2.1.200 o posterior. Verificar una selección de Control remoto requiere Claude Code v2.1.260 o posterior en su máquina. En la API de Anthropic, Claude Code reconoce:169Cuando cambia modelos a través del método [`setModel()`](/docs/es/agent-sdk/overview) del Agent SDK, a través de una aplicación como la [Aplicación de escritorio](/docs/es/desktop), o desde un dispositivo conectado a través de [Remote Control](/docs/es/remote-control), Claude Code verifica el valor en el cambio:

168 170 

169* un alias de modelo171* **Agent SDK o una aplicación**: con Claude Code v2.1.268 o posterior, a menos que Claude Code acepte un ID de modelo localmente, como lo hace para su [opción de modelo personalizado](#add-a-custom-model-option), confirma el ID con su proveedor la primera vez que la sesión cambia a él. La confirmación se ejecuta en cada proveedor, y un ID que su proveedor no ofrece se rechaza en el cambio en lugar de fallar en su próxima solicitud.

170* una entrada del selector `/model`172* **Remote Control**: en la API de Anthropic, Claude Code verifica el valor localmente y no envía ninguna solicitud.

171* cualquier nombre que comience con `claude-`

172* un valor que configuró usted mismo como una [opción de modelo personalizado](#add-a-custom-model-option) o en [`modelOverrides`](#override-model-ids-per-version)

173 173 

174Claude Code rechaza una cadena no reconocida con `Model "<name>" is not a recognized model id.` y la sesión mantiene su modelo actual, en lugar de guardar la cadena y fallar en la próxima solicitud. Consulte [la referencia de errores](/docs/es/errors#model-is-not-a-recognized-model-id) para pasos de recuperación.174Consulte [Model is not a recognized model id](/docs/es/errors#model-is-not-a-recognized-model-id) y [Model not found](/docs/es/errors#model-not-found) para los mensajes.

175 175 

176La verificación se ejecuta solo en la API de Anthropic. En Amazon Bedrock, Plataforma de agentes de Google Cloud, Microsoft Foundry, [Plataforma Claude en AWS](/docs/es/claude-platform-on-aws), y detrás de una [puerta de enlace LLM](/docs/es/llm-gateway) o un `ANTHROPIC_BASE_URL` personalizado, su proveedor o puerta de enlace define los nombres de modelo, por lo que Claude Code pasa cualquier cadena sin verificarla. La verificación tampoco cubre la bandera `--model`, la variable de entorno `ANTHROPIC_MODEL`, o la configuración `model`; un valor mal escrito allí produce [Hay un problema con el modelo seleccionado](/docs/es/errors#theres-an-issue-with-the-selected-model) en la primera solicitud en su lugar. Claude Code aún puede escribir la [línea de diagnóstico de modelo no reconocido](/docs/es/errors#unrecognized-model-id-on-a-request) en tiempo de solicitud, en cada proveedor.176Si establece el modelo con la bandera `--model`, la variable de entorno `ANTHROPIC_MODEL`, o la configuración `model`, Claude Code no lo verifica por adelantado, y un valor mal escrito produce [There's an issue with the selected model](/docs/es/errors#theres-an-issue-with-the-selected-model) en la primera solicitud.

177 177 

178Cuando 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](/docs/es/headless) cuando se usa el formato de salida de texto predeterminado. La verificación también cubre un `model` establecido en [frontmatter de subagente](/docs/es/sub-agents). La advertencia stderr se suprime para `--output-format json` y `stream-json`; lea el modelo real del campo `modelUsage` del [mensaje de resultado](/docs/es/headless#get-structured-output) en su lugar.178Cuando 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](/docs/es/headless) cuando se usa el formato de salida de texto predeterminado. La verificación también cubre un `model` establecido en [frontmatter de subagente](/docs/es/sub-agents). La advertencia stderr se suprime para `--output-format json` y `stream-json`; lea el modelo real del campo `modelUsage` del [mensaje de resultado](/docs/es/headless#get-structured-output) en su lugar.

179 179 


241 Restringir la selección de modelos241 Restringir la selección de modelos

242</h2>242</h2>

243 243 

244Los administradores empresariales pueden usar `availableModels` en [configuración administrada o de políticas](/docs/es/managed-settings) para restringir qué modelos pueden seleccionar los usuarios. Las entradas coinciden con una familia de modelos como `sonnet`, un prefijo de versión como `claude-sonnet-4-5`, o un ID de modelo completo como `claude-sonnet-4-5-20250929`. Un prefijo de versión también coincide con IDs de modelo posteriores que lo extienden con otro segmento, por lo que `claude-fable-5` permite tanto Fable 5 como Fable 5.1, mientras que `claude-fable-5-1` permite solo Fable 5.1. Para bloquear un modelo que la lista permite, o para hacer que cada entrada de ID de modelo permita solo la versión que nombra, consulte [Bloquear modelos o versiones específicas](#block-specific-models-or-versions).244Los administradores pueden usar `availableModels` en [configuración administrada o de políticas](/docs/es/managed-settings) para restringir qué modelos pueden seleccionar los usuarios. Las entradas coinciden con una familia de modelos como `sonnet`, un prefijo de versión como `claude-sonnet-4-5`, o un ID de modelo completo como `claude-sonnet-4-5-20250929`. Un prefijo de versión también coincide con IDs de modelo posteriores que lo extienden con otro segmento, por lo que `claude-fable-5` permite tanto Fable 5 como Fable 5.1, mientras que `claude-fable-5-1` permite solo Fable 5.1. Para bloquear un modelo que la lista permite, o para hacer que cada entrada de ID de modelo permita solo la versión que nombra, consulte [Bloquear modelos o versiones específicas](#block-specific-models-or-versions).

245 245 

246En plataformas que integran Claude Code y establecen [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars), la configuración de modelo del host tiene precedencia sobre la configuración de modelos administrada, mientras que una lista de permitidos `availableModels` administrada permanece en vigor a menos que el host proporcione la suya propia; [Excepciones a la precedencia de configuración administrada](/docs/es/settings#exceptions-to-managed-settings-precedence) indica qué claves y variables anula el host.246En plataformas que integran Claude Code y establecen [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars), la configuración de modelo del host tiene precedencia sobre la configuración de modelos administrada, mientras que una lista de permitidos `availableModels` administrada permanece en vigor a menos que el host proporcione la suya propia; [Excepciones a la precedencia de configuración administrada](/docs/es/settings#exceptions-to-managed-settings-precedence) indica qué claves y variables anula el host.

247 247 


297 297 

298| Mecanismo de entrega | CLI e IDE | Sesiones locales de escritorio | Sesiones web, móviles y en la nube | Agent SDK y no interactivo | Cowork |298| Mecanismo de entrega | CLI e IDE | Sesiones locales de escritorio | Sesiones web, móviles y en la nube | Agent SDK y no interactivo | Cowork |

299| :- | :- | :- | :- | :- | :- |299| :- | :- | :- | :- | :- | :- |

300| [Configuración administrada por servidor](/docs/es/server-managed-settings) desde la consola de administración | Aplicada | Aplicada | Aplicada, excepto en sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) | Aplicada | No entregada |300| [Configuración administrada por servidor](/docs/es/server-managed-settings) desde la consola de administración | Aplicada | Aplicada | Aplicada, excepto en sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) | Aplicada | Sesiones remotas de Cowork: el servidor verifica el modelo. En la máquina del usuario: no entregada. |

301| [MDM o archivos de configuración administrada](/docs/es/managed-settings#delivery-mechanisms) | Aplicada | Aplicada | No entregada en entornos alojados por Anthropic; en [entornos autohospedados](/docs/es/self-hosted-environments), aplicada desde la imagen del ejecutor según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) | Aplicada | Aplicada donde se implementa |301| [MDM o archivos de configuración administrada](/docs/es/managed-settings#delivery-mechanisms) | Aplicada | Aplicada | No entregada en entornos alojados por Anthropic; en [entornos autohospedados](/docs/es/self-hosted-environments), aplicada desde la imagen del ejecutor según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) | Aplicada | Aplicada donde se implementa |

302 302 

303* Las [sesiones en la nube](/docs/es/claude-code-on-the-web), incluidas las que inicia desde la aplicación de escritorio, se ejecutan en máquinas virtuales administradas por Anthropic de forma predeterminada: la configuración implementada en su dispositivo no las alcanza, por lo que entregue la lista de permitidos a través de configuración administrada por servidor. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en su propio cálculo y también leen el archivo de configuración administrada en la imagen del ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) indica cuándo se aplica ese archivo. Un cambio de modelo a mitad de sesión en una sesión en la nube se rechaza cuando el modelo solicitado está excluido por la lista de permitidos. Cuando `availableModels` en su configuración administrada por servidor no está vacío, el servidor rechaza la solicitud de un usuario para iniciar una sesión en la nube en un modelo que la lista excluye.303* Las [sesiones en la nube](/docs/es/claude-code-on-the-web), incluidas las que inicia desde la aplicación de escritorio, se ejecutan en máquinas virtuales administradas por Anthropic de forma predeterminada: la configuración implementada en su dispositivo no las alcanza, por lo que entregue la lista de permitidos a través de configuración administrada por servidor. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en su propio cálculo y también leen el archivo de configuración administrada en la imagen del ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) indica cuándo se aplica ese archivo. Un cambio de modelo a mitad de sesión en una sesión en la nube se rechaza cuando el modelo solicitado está excluido por la lista de permitidos. Cuando `availableModels` en su configuración administrada por servidor no está vacío, el servidor rechaza la solicitud de un usuario para iniciar una sesión en la nube en un modelo que la lista excluye.

304* [Claude Tag](https://claude.com/docs/claude-tag/overview) las sesiones se ejecutan en entornos en la nube pero no reciben configuración administrada por servidor; en un [entorno autohospedado](/docs/es/self-hosted-environments), aún leen el archivo de configuración administrada en la imagen del ejecutor. Para establecer el modelo para esas sesiones, consulte [Elegir el modelo para un alcance](https://claude.com/docs/claude-tag/admins/customize#choose-the-model-for-a-scope) en la guía de administrador de Claude Tag.304* [Claude Tag](https://claude.com/docs/claude-tag/overview) las sesiones se ejecutan en entornos en la nube pero no reciben configuración administrada por servidor; en un [entorno autohospedado](/docs/es/self-hosted-environments), aún leen el archivo de configuración administrada en la imagen del ejecutor. Para establecer el modelo para esas sesiones, consulte [Elegir el modelo para un alcance](https://claude.com/docs/claude-tag/admins/customize#choose-the-model-for-a-scope) en la guía de administrador de Claude Tag.

305* Cowork, la pestaña de trabajo agéntico en la aplicación de escritorio de Claude, ejecuta sus sesiones en Claude Code pero, por diseño, no recibe configuración administrada por servidor desde la consola de administración de claude.ai. Un archivo de configuración administrada se aplica a sesiones de Cowork cuando está presente donde se ejecuta la sesión; las sesiones remotas de Cowork se ejecutan en máquinas virtuales administradas por Anthropic, donde un archivo implementado en el dispositivo no está presente.305* Cowork, la pestaña de trabajo agéntico en la aplicación de escritorio de Claude, ejecuta sus sesiones en Claude Code pero, por diseño, no recibe configuración administrada por servidor desde la consola de administración de claude.ai. Cuando `availableModels` en su configuración administrada por servidor no está vacío y un usuario elige un modelo fuera de él, el servidor rechaza ese modelo para una sesión remota de Cowork. Un archivo de configuración administrada se aplica a sesiones de Cowork cuando está presente donde se ejecuta la sesión; las sesiones remotas de Cowork se ejecutan en máquinas virtuales administradas por Anthropic, donde un archivo implementado en el dispositivo no está presente.

306* Las sesiones en [proveedores de terceros](/docs/es/server-managed-settings#platform-availability) como Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, y [Claude Platform en AWS](/docs/es/claude-platform-on-aws) no reciben configuración administrada por servidor, por lo que entregue la lista de permitidos a través de MDM o archivos de configuración administrada allí.306* Las sesiones en [proveedores de terceros](/docs/es/server-managed-settings#platform-availability) como Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, y [Claude Platform en AWS](/docs/es/claude-platform-on-aws) no reciben configuración administrada por servidor, por lo que entregue la lista de permitidos a través de MDM o archivos de configuración administrada allí.

307* La entrega administrada por servidor también requiere que la sesión se autentique con un [inicio de sesión o clave elegible](/docs/es/server-managed-settings#platform-availability). Las flotas que generan claves solo a través de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) deben entregar la lista de permitidos a través de MDM o archivos de configuración administrada.307* La entrega administrada por servidor también requiere que la sesión se autentique con un [inicio de sesión o clave elegible](/docs/es/server-managed-settings#platform-availability). Las flotas que generan claves solo a través de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) deben entregar la lista de permitidos a través de MDM o archivos de configuración administrada.

308* La pestaña de código de escritorio también aloja [sesiones SSH](/docs/es/desktop#ssh-sessions), que leen el archivo de configuración administrada del host remoto en el que se ejecutan. Consulte [Configuración administrada de escritorio](/docs/es/desktop#managed-settings).308* La pestaña de código de escritorio también aloja [sesiones SSH](/docs/es/desktop#ssh-sessions), que leen el archivo de configuración administrada del host remoto en el que se ejecutan. Consulte [Configuración administrada de escritorio](/docs/es/desktop#managed-settings).


751| Establecer el predeterminado global | Ejecuta `/config` y alterna el modo de pensamiento. Guardado como `alwaysThinkingEnabled` en `~/.claude/settings.json` |751| Establecer el predeterminado global | Ejecuta `/config` y alterna el modo de pensamiento. Guardado como `alwaysThinkingEnabled` en `~/.claude/settings.json` |

752| Desactivar a través de una variable de entorno | Establece [`MAX_THINKING_TOKENS=0`](/docs/es/env-vars), que desactiva el pensamiento en la API de Anthropic excepto en Opus 5.5, Sonnet 5.5 y modelos Fable. En [proveedores de terceros](/docs/es/third-party-integrations), Claude Code omite el parámetro `thinking` en su lugar, y los modelos de razonamiento adaptativo aún pueden pensar. Otros valores se aplican solo con un [presupuesto de pensamiento fijo](#adaptive-reasoning-and-fixed-thinking-budgets) |752| Desactivar a través de una variable de entorno | Establece [`MAX_THINKING_TOKENS=0`](/docs/es/env-vars), que desactiva el pensamiento en la API de Anthropic excepto en Opus 5.5, Sonnet 5.5 y modelos Fable. En [proveedores de terceros](/docs/es/third-party-integrations), Claude Code omite el parámetro `thinking` en su lugar, y los modelos de razonamiento adaptativo aún pueden pensar. Otros valores se aplican solo con un [presupuesto de pensamiento fijo](#adaptive-reasoning-and-fixed-thinking-budgets) |

753 753 

754No puedes desactivar el pensamiento en Opus 5.5, Sonnet 5.5 o los modelos Fable. El alternador de sesión, `alwaysThinkingEnabled` y `MAX_THINKING_TOKENS=0` no tienen efecto allí, y el modelo decide por paso cuánto pensar según el nivel de esfuerzo.754No puedes desactivar el pensamiento en Opus 5.5, Sonnet 5.5 o los modelos Fable. El alternador de sesión y la fila `/config` muestran `Thinking can't be turned off` para estos modelos en lugar de ofrecer el cambio, y una `alwaysThinkingEnabled: false` guardada o `MAX_THINKING_TOKENS=0` no tiene efecto allí. En estos modelos, el modelo decide por paso cuánto pensar según el nivel de esfuerzo. La configuración guardada se aplica de nuevo cuando cambias a un modelo que la acepta.

755 755 

756Claude Code colapsa la salida de pensamiento por defecto. Presiona `Ctrl+O` para alternar el modo detallado y ver el razonamiento como texto gris en cursiva. Las sesiones interactivas en la API de Anthropic reciben bloques de pensamiento redactados por defecto, así que establece `showThinkingSummaries: true` en [configuración](/docs/es/settings) si quieres que los resúmenes completos estén disponibles cuando expandas. Se te cobra por todos los tokens de pensamiento generados, incluso cuando están colapsados o redactados.756Claude Code colapsa la salida de pensamiento por defecto. Presiona `Ctrl+O` para alternar el modo detallado y ver el razonamiento como texto gris en cursiva. Las sesiones interactivas en la API de Anthropic reciben bloques de pensamiento redactados por defecto, así que establece `showThinkingSummaries: true` en [configuración](/docs/es/settings) si quieres que los resúmenes completos estén disponibles cuando expandas. Se te cobra por todos los tokens de pensamiento generados, incluso cuando están colapsados o redactados.

757 757 


784 784 

785La ventana de contexto de 1M utiliza precios de modelo estándar sin prima para tokens más allá de 200K. Para planes donde el contexto extendido se incluye con tu suscripción, el uso permanece cubierto por tu suscripción. Para planes que acceden al contexto extendido a través de créditos de uso, los tokens se facturan a créditos de uso.785La ventana de contexto de 1M utiliza precios de modelo estándar sin prima para tokens más allá de 200K. Para planes donde el contexto extendido se incluye con tu suscripción, el uso permanece cubierto por tu suscripción. Para planes que acceden al contexto extendido a través de créditos de uso, los tokens se facturan a créditos de uso.

786 786 

787Si tu cuenta admite contexto de 1M, la opción aparece en el selector `/model` en las últimas versiones de Claude Code. Si no la ves, intenta reiniciar tu sesión.787Si tu cuenta admite contexto de 1M, la opción aparece en el selector `/model` en las últimas versiones de Claude Code. Si no la ves, intenta reiniciar tu sesión, y en un proveedor de terceros verifica si tu despliegue [fijó el modelo](#pin-models-for-third-party-deployments) con una variable `ANTHROPIC_DEFAULT_*_MODEL`.

788 788 

789También puedes usar el sufijo `[1m]` con alias de modelo o nombres de modelo completos:789También puedes usar el sufijo `[1m]` con alias de modelo o nombres de modelo completos:

790 790 


956* Solo añada `[1m]` cuando el modelo subyacente [admita contexto de 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model).956* Solo añada `[1m]` cuando el modelo subyacente [admita contexto de 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model).

957* El sufijo se lee por variable, no por modelo. En Amazon Bedrock, Plataforma de Agentes de Google Cloud y Microsoft 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.957* El sufijo se lee por variable, no por modelo. En Amazon Bedrock, Plataforma de Agentes de Google Cloud y Microsoft 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.

958 958 

959Cuando establece una variable `ANTHROPIC_DEFAULT_*_MODEL`, el selector `/model` muestra una fila para ese modelo en lugar de las filas integradas de la familia, incluidas las filas de contexto de 1M. Para alcanzar la ventana de 1M sin añadir el sufijo a esa variable, sus usuarios ejecutan `/model opus[1m]`, y Claude Code aplica el sufijo al modelo que la variable nombra. `/model sonnet[1m]` funciona de la misma manera.

960 

959<Note>961<Note>

960 Una lista de permitidos `availableModels` entregada a través de [MDM o un archivo de configuración administrado](/docs/es/managed-settings#delivery-mechanisms) aún se aplica cuando se utilizan proveedores de terceros; [la configuración administrada por servidor no se entrega allí](/docs/es/server-managed-settings#platform-availability).962 Una lista de permitidos `availableModels` entregada a través de [MDM o un archivo de configuración administrado](/docs/es/managed-settings#delivery-mechanisms) aún se aplica cuando se utilizan proveedores de terceros; [la configuración administrada por servidor no se entrega allí](/docs/es/server-managed-settings#platform-availability).

961 963 


1053| - | - |1055| - | - |

1054| `DISABLE_PROMPT_CACHING` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones para todos los modelos. Tiene precedencia sobre la configuración por modelo |1056| `DISABLE_PROMPT_CACHING` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones para todos los modelos. Tiene precedencia sobre la configuración por modelo |

1055| `DISABLE_PROMPT_CACHING_HAIKU` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones para el [modelo Haiku predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |1057| `DISABLE_PROMPT_CACHING_HAIKU` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones para el [modelo Haiku predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |

1056| `DISABLE_PROMPT_CACHING_SONNET` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones solo para modelos Sonnet |1058| `DISABLE_PROMPT_CACHING_SONNET` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones para el [modelo Sonnet predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |

1057| `DISABLE_PROMPT_CACHING_OPUS` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones solo para modelos Opus |1059| `DISABLE_PROMPT_CACHING_OPUS` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones para el [modelo Opus predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |

1058| `DISABLE_PROMPT_CACHING_FABLE` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones solo para modelos Fable |1060| `DISABLE_PROMPT_CACHING_FABLE` | Establezca en `1` para desactivar el almacenamiento en caché de indicaciones solo para modelos Fable |

1059 1061 

1060Para elegir el TTL de caché para la conversación principal y para subagentes por separado, consulte [elegir el TTL usted mismo](/docs/es/prompt-caching#choose-the-ttl-yourself). Para saber qué desencadena un error de caché, consulte [Cómo Claude Code utiliza el almacenamiento en caché de indicaciones](/docs/es/prompt-caching).1062Para elegir el TTL de caché para la conversación principal y para subagentes por separado, consulte [elegir el TTL usted mismo](/docs/es/prompt-caching#choose-the-ttl-yourself). Para saber qué desencadena un error de caché, consulte [Cómo Claude Code utiliza el almacenamiento en caché de indicaciones](/docs/es/prompt-caching).

Details

64}64}

65```65```

66 66 

67En la aplicación Claude Desktop, las sesiones de la pestaña Code leen estos ajustes administrados de las fuentes que [llegan a cada tipo de sesión de Desktop](/docs/es/desktop#managed-settings). El formulario de OpenTelemetry para Cowork bajo **Monitoring** en los [ajustes de Datos y privacidad](https://claude.ai/admin-settings/data-privacy-controls) de la consola de administrador se aplica solo a sesiones de Cowork, por lo que ni la CLI de terminal ni la pestaña Code exportan a un recopilador que establezca allí.

68 

67Claude Code ignora las [variables del exportador de OpenTelemetry](/docs/es/settings-reference#variables-claude-code-ignores-in-env) en el `.claude/settings.json` y `.claude/settings.local.json` de un repositorio, por lo que un repositorio no puede usarlas para activar la telemetría, elegir dónde va, o capturar contenido. Establécelas en los ajustes administrados, o haz que cada desarrollador las establezca en su shell o `~/.claude/settings.json`. Un repositorio aún puede desactivar una señal estableciendo su selector de exportador, como `OTEL_LOGS_EXPORTER`, en `none`, a menos que los ajustes administrados, un archivo `--settings`, o el entorno desde el que inicias Claude Code establezca esa variable.69Claude Code ignora las [variables del exportador de OpenTelemetry](/docs/es/settings-reference#variables-claude-code-ignores-in-env) en el `.claude/settings.json` y `.claude/settings.local.json` de un repositorio, por lo que un repositorio no puede usarlas para activar la telemetría, elegir dónde va, o capturar contenido. Establécelas en los ajustes administrados, o haz que cada desarrollador las establezca en su shell o `~/.claude/settings.json`. Un repositorio aún puede desactivar una señal estableciendo su selector de exportador, como `OTEL_LOGS_EXPORTER`, en `none`, a menos que los ajustes administrados, un archivo `--settings`, o el entorno desde el que inicias Claude Code establezca esa variable.

68 70 

69Claude Code no pasa variables de entorno `OTEL_*` a los subprocesos que genera, incluyendo la herramienta Bash, hooks, servidores MCP, y servidores de lenguaje. Una aplicación instrumentada con OpenTelemetry que ejecutes a través de la herramienta Bash no hereda el punto final del exportador de Claude Code ni los encabezados, así que establece esas variables directamente en el comando si esa aplicación necesita exportar su propia telemetría.71Claude Code no pasa variables de entorno `OTEL_*` a los subprocesos que genera, incluyendo la herramienta Bash, hooks, servidores MCP, y servidores de lenguaje. Una aplicación instrumentada con OpenTelemetry que ejecutes a través de la herramienta Bash no hereda el punto final del exportador de Claude Code ni los encabezados, así que establece esas variables directamente en el comando si esa aplicación necesita exportar su propia telemetría.


582| 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) |584| 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) |

583| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | La identidad del repositorio de la sesión, derivada de su remoto `origin`. Consulte [Atributos del repositorio](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (predeterminado: false). Requiere Claude Code v2.1.269 o posterior |585| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | La identidad del repositorio de la sesión, derivada de su remoto `origin`. Consulte [Atributos del repositorio](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (predeterminado: false). Requiere Claude Code v2.1.269 o posterior |

584 586 

585Cuando Claude Code está conectado a una [puerta de enlace de aplicaciones Claude](/docs/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 sujeto 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 en último lugar, por lo que las claves `user.*` e `identity.*` establecidas a través de `OTEL_RESOURCE_ATTRIBUTES` se ignoran en sesiones de puerta de enlace.587En sesiones conectadas a una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) a través de `/login`, la CLI marca las exportaciones con la identidad autenticada: `user.id` es el sujeto del IdP, `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 en último lugar, por lo que las claves `user.*` e `identity.*` establecidas a través de `OTEL_RESOURCE_ATTRIBUTES` se ignoran en esas sesiones.

588 

589Para los atributos de identidad en sesiones de Claude Desktop y Cowork que se conectan a través de una puerta de enlace, consulte la [referencia de telemetría de la puerta de enlace](/docs/es/claude-apps-gateway-config#telemetry).

586 590 

587Los eventos incluyen además los siguientes atributos. Estos nunca se adjuntan a las métricas porque causarían cardinalidad ilimitada:591Los eventos incluyen además los siguientes atributos. Estos nunca se adjuntan a las métricas porque causarían cardinalidad ilimitada:

588 592 


1540 Atribuir acciones a usuarios1544 Atribuir acciones a usuarios

1541</h3>1545</h3>

1542 1546 

1543Los [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 o, en una [sesión en la nube](/docs/es/claude-code-on-the-web), cuando las credenciales propias de la sesión las llevan, 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](/docs/es/claude-apps-gateway), donde es el asunto del IdP del token emitido por la puerta de enlace.1547Los [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 o, en una [sesión en la nube](/docs/es/claude-code-on-the-web), cuando las credenciales propias de la sesión las llevan, más `user.id` y el `session.id` por sesión. `user.id` es un identificador con alcance de instalación, excepto en sesiones que inician sesión en una [Claude apps gateway](/docs/es/claude-apps-gateway) a través de `/login`, donde es el asunto del IdP del token emitido por la puerta de enlace.

1544 1548 

1545En una sesión que inicia un desarrollador, las llamadas de herramientas MCP, comandos Bash y ediciones de archivos se atribuyen por lo tanto al desarrollador. 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](/docs/es/claude-apps-gateway). En sesiones de canales de Claude Tag, Claude funciona como la [identidad compartida](/docs/es/cloud-environments#set-the-environment-a-claude-tag-channel-uses) de su organización en su lugar.1549En una sesión que inicia un desarrollador, las llamadas de herramientas MCP, comandos Bash y ediciones de archivos se atribuyen por lo tanto al desarrollador. 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](/docs/es/claude-apps-gateway). En sesiones de canales de Claude Tag, Claude funciona como la [identidad compartida](/docs/es/cloud-environments#set-the-environment-a-claude-tag-channel-uses) de su organización en su lugar.

1546 1550 

1547Cuando Claude Code se autentica con una clave de API directa, o contra Amazon Bedrock, Google Cloud's Agent Platform, 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).1551Cuando Claude Code se autentica con una clave de API directa, o contra Amazon Bedrock, Google Cloud's Agent Platform, 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: consulte [Atributos estándar](#standard-attributes) para la identidad que sus exportaciones llevan.

1548 1552 

1549```bash theme={null}1553```bash theme={null}

1550export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."1554export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."

Details

210| Plazo de primer byte | No llegan encabezados de respuesta después de que Claude Code envía la solicitud | API de Anthropic directa y [Claude Platform on AWS](/docs/es/claude-platform-on-aws), incluyendo a través de un proxy HTTPS, pero no cuando `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL` los enrutan a través de una [gateway](/docs/es/gateways). Opt-in en Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; no se ejecuta en Agent Platform de Google Cloud o Microsoft Foundry | 180 segundos en la API de Anthropic directa, 300 segundos en otros lugares, más un segundo por cada 32KB del cuerpo de la solicitud |210| Plazo de primer byte | No llegan encabezados de respuesta después de que Claude Code envía la solicitud | API de Anthropic directa y [Claude Platform on AWS](/docs/es/claude-platform-on-aws), incluyendo a través de un proxy HTTPS, pero no cuando `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL` los enrutan a través de una [gateway](/docs/es/gateways). Opt-in en Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; no se ejecuta en Agent Platform de Google Cloud o Microsoft Foundry | 180 segundos en la API de Anthropic directa, 300 segundos en otros lugares, más un segundo por cada 32KB del cuerpo de la solicitud |

211| Perro guardián a nivel de evento | No se analizan eventos de respuesta. En conexiones donde se ejecuta el perro guardián a nivel de byte, los bytes que llegan, incluyendo pings de keep-alive, también reinician este perro guardián, durante aproximadamente cinco minutos sin un evento analizado | Cada proveedor | 300 segundos |211| Perro guardián a nivel de evento | No se analizan eventos de respuesta. En conexiones donde se ejecuta el perro guardián a nivel de byte, los bytes que llegan, incluyendo pings de keep-alive, también reinician este perro guardián, durante aproximadamente cinco minutos sin un evento analizado | Cada proveedor | 300 segundos |

212| Perro guardián a nivel de byte | No llegan bytes en el cable, incluyendo pings de keep-alive de SSE | API de Anthropic directa, [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y conexiones de [gateway](/docs/es/gateways), incluyendo un `ANTHROPIC_BASE_URL` personalizado. Opt-in en respuestas `vnd.amazon.eventstream` de Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; no se ejecuta en Agent Platform de Google Cloud o Microsoft Foundry | 180 segundos en la API de Anthropic directa, 300 segundos en otros lugares |212| Perro guardián a nivel de byte | No llegan bytes en el cable, incluyendo pings de keep-alive de SSE | API de Anthropic directa, [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y conexiones de [gateway](/docs/es/gateways), incluyendo un `ANTHROPIC_BASE_URL` personalizado. Opt-in en respuestas `vnd.amazon.eventstream` de Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; no se ejecuta en Agent Platform de Google Cloud o Microsoft Foundry | 180 segundos en la API de Anthropic directa, 300 segundos en otros lugares |

213| Tiempo de espera de inactividad del cuerpo | No llegan bytes durante 5 minutos | Proveedores distintos de la API de Anthropic directa y Claude Platform on AWS, a menos que [`API_FORCE_IDLE_TIMEOUT`](/docs/es/env-vars) cambie eso | 5 minutos |213| Tiempo de espera de inactividad del cuerpo | No llegan bytes durante 5 minutos | Proveedores distintos de la API de Anthropic directa, Claude Platform on AWS, y Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` establecido, a menos que [`API_FORCE_IDLE_TIMEOUT`](/docs/es/env-vars) cambie eso | 5 minutos |

214 

215Si establece `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, el perro guardián a nivel de byte reemplaza el tiempo de espera de inactividad del cuerpo en Bedrock en lugar de ejecutarse junto a él. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` entonces también rige cuánto tiempo un stream de Bedrock puede permanecer en silencio antes de que Claude Code trate la conexión como muerta, dentro de los límites enumerados a continuación. Los bytes que llegan aún no reinician el perro guardián a nivel de evento en Bedrock. Con el registro de depuración activado, cada stream de Bedrock entonces registra un mensaje de depuración que comienza con `wire-heartbeat: _chunkTimes absent`.

214 216 

215Configure los temporizadores con estas variables, cada una detallada en la [referencia de variables de entorno](/docs/es/env-vars):217Configure los temporizadores con estas variables, cada una detallada en la [referencia de variables de entorno](/docs/es/env-vars):

216 218 


277 279 

278Si su organización de GitHub Enterprise Cloud restringe el acceso por dirección IP, habilite [herencia de lista de permitidos de IP para aplicaciones 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) y también [agregue una entrada de lista de permitidos](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) para las [direcciones IP salientes](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. La herencia cubre solo las solicitudes que realiza la aplicación GitHub de Claude como instalación, no las solicitudes que realiza en nombre de sus usuarios. Para otros firewalls, consulte las [direcciones IP de la API de Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).280Si su organización de GitHub Enterprise Cloud restringe el acceso por dirección IP, habilite [herencia de lista de permitidos de IP para aplicaciones 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) y también [agregue una entrada de lista de permitidos](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) para las [direcciones IP salientes](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic. La herencia cubre solo las solicitudes que realiza la aplicación GitHub de Claude como instalación, no las solicitudes que realiza en nombre de sus usuarios. Para otros firewalls, consulte las [direcciones IP de la API de Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).

279 281 

280Para instancias de [GitHub Enterprise Server](/docs/es/github-enterprise-server) autohospedadas detrás de un firewall, agregue a la lista de permitidos las [direcciones IP salientes](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic para que la infraestructura de Anthropic pueda alcanzar su host GHES para clonar repositorios y publicar comentarios de revisión. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#configure-git) alcanzan su host GHES desde dentro de su red en su lugar, por lo que esa exposición se aplica solo a sesiones alojadas por Anthropic, a flujos previos a la sesión alojados como el selector de repositorio, y a ejecutores autohospedados que opten por el [proxy git de Anthropic](/docs/es/self-hosted-environments-deploy#use-the-anthropic-git-proxy), que obtiene desde el lado de Anthropic. Para un host GHES que solo es enrutable dentro de su red, el [conector SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) lleva los flujos previos a la sesión alojados sobre una conexión saliente en su lugar, por lo que la lista de permitidos no es necesaria para ellos.282Para instancias de [GitHub Enterprise Server](/docs/es/github-enterprise-server) autohospedadas detrás de un firewall, agregue a la lista de permitidos las [direcciones IP salientes](https://platform.claude.com/docs/en/api/ip-addresses#outbound-ip-addresses) de Anthropic para que la infraestructura de Anthropic pueda alcanzar su host GHES para clonar repositorios y publicar comentarios de revisión. Las sesiones en un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#configure-git) alcanzan su host GHES desde dentro de su red en su lugar, por lo que esa exposición se aplica solo a sesiones alojadas por Anthropic, a flujos previos a la sesión alojados como el selector de repositorio, y a ejecutores autohospedados que opten por el [proxy git de Anthropic](/docs/es/self-hosted-environments-deploy#use-the-anthropic-git-proxy), que obtiene desde el lado de Anthropic. El [conector SCM](/docs/es/self-hosted-environments-reference#scm-connector-flags) no está disponible, por lo que los flujos previos a la sesión alojados no pueden alcanzar un host GHES que solo sea enrutable dentro de su red.

281 283 

282<h3 id="desktop-and-claude-ai">284<h3 id="desktop-and-claude-ai">

283 Escritorio y claude.ai285 Escritorio y claude.ai

Details

368* `git commit --amend` cuando la confirmación en HEAD no fue creada en esta sesión368* `git commit --amend` cuando la confirmación en HEAD no fue creada en esta sesión

369* Desde v2.1.198, `git commit --amend` cuando la confirmación en HEAD ya ha sido insertada. Una reescritura de solo mensaje no se bloquea: `--amend -m` sin nada recién preparado, en una confirmación que Claude creó durante esta sesión369* Desde v2.1.198, `git commit --amend` cuando la confirmación en HEAD ya ha sido insertada. Una reescritura de solo mensaje no se bloquea: `--amend -m` sin nada recién preparado, en una confirmación que Claude creó durante esta sesión

370* `terraform destroy`, `pulumi destroy`, `cdk destroy` o `terragrunt destroy`, y aplicar un plan que destruye recursos370* `terraform destroy`, `pulumi destroy`, `cdk destroy` o `terragrunt destroy`, y aplicar un plan que destruye recursos

371 

372Claude Code v2.1.195 y posterior bloquean más categorías de forma predeterminada. Varios dependen de entradas de [entorno](/docs/es/auto-mode-config#define-trusted-infrastructure), como destinos remotos sensibles y alcances de IaC protegidos, que puede reducir a nombres concretos.

373 

374* Escritura en un administrador de secretos, o cambio de registros DNS o certificados TLS371* Escritura en un administrador de secretos, o cambio de registros DNS o certificados TLS

375* Fusión de una solicitud de extracción que ningún humano ha aprobado, aprobación de la propia solicitud de extracción de Claude o desactivación de verificaciones de CI372* Fusión de una solicitud de extracción que ningún humano ha aprobado, aprobación de la propia solicitud de extracción de Claude o desactivación de verificaciones de CI

376* Publicación de un comentario que es en sí mismo un comando para automatización, como `atlantis apply` o `/deploy` o `/merge` de un bot373* Publicación de un comentario que es en sí mismo un comando para automatización, como `atlantis apply` o `/deploy` o `/merge` de un bot


387* Lanzamiento de un bucle de agente autónomo que se ejecuta sin aprobación humana o sandbox, como uno iniciado con `--dangerously-skip-permissions` o `--no-sandbox`. A partir de v2.1.198, esto también cubre la ejecución de un agente de terceros o evaluador con aislamiento y aprobación por acción desactivados, como un ejecutor iniciado con `--yes-always`384* Lanzamiento de un bucle de agente autónomo que se ejecuta sin aprobación humana o sandbox, como uno iniciado con `--dangerously-skip-permissions` o `--no-sandbox`. A partir de v2.1.198, esto también cubre la ejecución de un agente de terceros o evaluador con aislamiento y aprobación por acción desactivados, como un ejecutor iniciado con `--yes-always`

388* Acciones del navegador [Claude en Chrome](/docs/es/chrome) que podrían enviar contenido de página, cookies o credenciales fuera de origen385* Acciones del navegador [Claude en Chrome](/docs/es/chrome) que podrían enviar contenido de página, cookies o credenciales fuera de origen

389 386 

387Varias de estas categorías dependen de entradas de [entorno](/docs/es/auto-mode-config#define-trusted-infrastructure), como destinos remotos sensibles y alcances de IaC protegidos, que puede reducir a nombres concretos.

388 

390Claude Code v2.1.198 y posterior también bloquean estos de forma predeterminada:389Claude Code v2.1.198 y posterior también bloquean estos de forma predeterminada:

391 390 

392* Eliminación de archivos en `/tmp`, `$TMPDIR` u otro directorio compartido de scratch o caché por comodín, glob o filtro de edad en lugar de por una ruta nombrada específica391* Eliminación de archivos en `/tmp`, `$TMPDIR` u otro directorio compartido de scratch o caché por comodín, glob o filtro de edad en lugar de por una ruta nombrada específica


433* Lectura de `.env` y envío de credenciales a su API coincidente432* Lectura de `.env` y envío de credenciales a su API coincidente

434* Solicitudes HTTP de solo lectura433* Solicitudes HTTP de solo lectura

435* Inserción a cualquier rama del repositorio en el que está trabajando, incluida la rama predeterminada. Una rama no predeterminada cuyo nombre la marca como destino de implementación o publicación, como `production` o `gh-pages`, no está cubierta: el clasificador juzga una inserción allí en sus propios términos. El contenido de la inserción aún se verifica contra las otras reglas, las reglas [`permissions.deny`](/docs/es/permissions#manage-permissions) aún pueden bloquear comandos de inserción [como se escriben](/docs/es/permissions#bash-rule-limits) en todos los modos, y la protección de rama propia del remoto aún se aplica. Antes de v2.1.211, solo las inserciones a la rama en la que comenzó, las ramas que Claude creó y las inserciones rutinarias a la rama predeterminada se permitían de forma predeterminada, y antes de v2.1.203 cualquier inserción directa a la rama predeterminada se bloqueaba434* Inserción a cualquier rama del repositorio en el que está trabajando, incluida la rama predeterminada. Una rama no predeterminada cuyo nombre la marca como destino de implementación o publicación, como `production` o `gh-pages`, no está cubierta: el clasificador juzga una inserción allí en sus propios términos. El contenido de la inserción aún se verifica contra las otras reglas, las reglas [`permissions.deny`](/docs/es/permissions#manage-permissions) aún pueden bloquear comandos de inserción [como se escriben](/docs/es/permissions#bash-rule-limits) en todos los modos, y la protección de rama propia del remoto aún se aplica. Antes de v2.1.211, solo las inserciones a la rama en la que comenzó, las ramas que Claude creó y las inserciones rutinarias a la rama predeterminada se permitían de forma predeterminada, y antes de v2.1.203 cualquier inserción directa a la rama predeterminada se bloqueaba

436 

437Claude Code v2.1.195 y posterior también permiten estos de forma predeterminada:

438 

439* Eliminación de los trabajos exactos que Claude creó anteriormente en la misma sesión435* Eliminación de los trabajos exactos que Claude creó anteriormente en la misma sesión

440* Lectura, revisión o escritura de código, configuraciones y modelos de amenaza relacionados con la seguridad como parte de su tarea436* Lectura, revisión o escritura de código, configuraciones y modelos de amenaza relacionados con la seguridad como parte de su tarea

441* Mensajes entre agentes que trabajan juntos en la misma sesión multiagente437* Mensajes entre agentes que trabajan juntos en la misma sesión multiagente


526 * En una sesión con [revisión del clasificador del lado del servidor](#server-side-classifier-review), las acciones de solo lectura y comandos de shell [en sandbox](/docs/es/sandboxing#sandbox-modes) esperan esa revisión y se bloquean si la marca522 * En una sesión con [revisión del clasificador del lado del servidor](#server-side-classifier-review), las acciones de solo lectura y comandos de shell [en sandbox](/docs/es/sandboxing#sandbox-modes) esperan esa revisión y se bloquean si la marca

527 * Una escritura dentro de su directorio de trabajo que la [verificación de enlace simbólico](/docs/es/permissions#symlinks) resuelve a una ubicación fuera de él le solicita523 * Una escritura dentro de su directorio de trabajo que la [verificación de enlace simbólico](/docs/es/permissions#symlinks) resuelve a una ubicación fuera de él le solicita

528 3. Todo lo demás va al clasificador, aparte de [eliminaciones de ruta crítica](#critical-paths) bajo su manejo predeterminado. Las herramientas de conector y herramientas MCP de `requiresUserInteraction` que le solicitan directamente en el paso 1 nunca llegan al clasificador tampoco, por lo que ni una aprobación requerida por la organización ni un paso de consentimiento se aprueban automáticamente524 3. Todo lo demás va al clasificador, aparte de [eliminaciones de ruta crítica](#critical-paths) bajo su manejo predeterminado. Las herramientas de conector y herramientas MCP de `requiresUserInteraction` que le solicitan directamente en el paso 1 nunca llegan al clasificador tampoco, por lo que ni una aprobación requerida por la organización ni un paso de consentimiento se aprueban automáticamente

529 4. Si el clasificador bloquea, Claude recibe la razón e intenta una alternativa. En la mayoría de sesiones la razón nombra la regla que el clasificador coincidió, como `[Data Exfiltration]`, en lugar de dar una explicación escrita; consulte [Revisar negaciones](/docs/es/auto-mode-config#review-denials)525 4. Si el clasificador bloquea, Claude recibe la razón. En la mayoría de sesiones la razón nombra la regla que el clasificador coincidió, como `[Data Exfiltration]`, en lugar de dar una explicación escrita; consulte [Revisar negaciones](/docs/es/auto-mode-config#review-denials)

530 526 

531 Al entrar en modo automático, se descartan las reglas de permitir amplias que otorgan ejecución de código arbitrario:527 Al entrar en modo automático, se descartan las reglas de permitir amplias que otorgan ejecución de código arbitrario:

532 528 

permissions.md +15 −14

Details

228 Bash228 Bash

229</h3>229</h3>

230 230 

231Las reglas de Bash coinciden con el texto completo del comando, siendo `*` un comodín para cualquier texto. [Wildcard patterns](#wildcard-patterns) muestra qué comandos coinciden con cada forma de regla y dónde poner el `*`. El resto de esta sección cubre cómo Claude Code coincide con comandos compuestos y envoltorios, qué no coincide una regla, comandos de solo lectura y redirecciones.231Las reglas de Bash coinciden con el texto completo del comando, donde `*` representa cualquier texto. [Wildcard patterns](#wildcard-patterns) muestra qué comandos coinciden con cada forma de regla y dónde colocar el `*`. El resto de esta sección cubre cómo Claude Code coincide con comandos compuestos y envoltorios, qué no coincide una regla, comandos de solo lectura y redirecciones.

232 232 

233<h4 id="compound-commands">233<h4 id="compound-commands">

234 Comandos compuestos234 Comandos compuestos


242 242 

243Cuando `&&` o `||` no tiene nada después, como en `npm test &&`, Claude Code trata el comando como no analizable y no lo divide en subcomandos para la coincidencia de reglas de permiso, por lo que una regla como `Bash(npm *)` no lo aprueba.243Cuando `&&` o `||` no tiene nada después, como en `npm test &&`, Claude Code trata el comando como no analizable y no lo divide en subcomandos para la coincidencia de reglas de permiso, por lo que una regla como `Bash(npm *)` no lo aprueba.

244 244 

245Cuando aprueba un comando compuesto con "Sí, y no vuelvas a preguntar", Claude Code guarda una regla separada para cada subcomando que requiere aprobación, en lugar de una única regla para la cadena completa. Por ejemplo, aprobar `git status && npm test` guarda una regla para `npm test`, por lo que las invocaciones futuras de `npm test` se reconocen independientemente de lo que preceda al `&&`. Los subcomandos como `cd` en un directorio fuera de sus directorios de trabajo generan su propia regla Read para esa ruta. Se pueden guardar hasta 5 reglas para un único comando compuesto.245Cuando aprueba un comando compuesto con "Sí, y no vuelvas a preguntar", Claude Code guarda una regla separada para cada subcomando que requiere aprobación, en lugar de una única regla para la cadena completa. Por ejemplo, aprobar `git status && npm test` guarda una regla para `npm test`, por lo que las invocaciones futuras de `npm test` se reconocen independientemente de lo que preceda a `&&`. Los subcomandos como `cd` en un directorio fuera de sus directorios de trabajo generan su propia regla de lectura para esa ruta. Se pueden guardar hasta 5 reglas para un único comando compuesto.

246 246 

247<h4 id="process-wrappers">247<h4 id="process-wrappers">

248 Envoltorios248 Envoltorios


272 272 

273Sus otras reglas y el modo de permiso deciden los comandos en la última columna.273Sus otras reglas y el modo de permiso deciden los comandos en la última columna.

274 274 

275Para la aplicación del sistema de archivos y la red que no depende del texto del comando, use [sandboxing](/docs/es/sandboxing). Para inspeccionar el texto completo del comando con su propia lógica antes de que se ejecute, use un hook [PreToolUse](#extend-permissions-with-hooks).275Para la aplicación de sistema de archivos y red que no depende del texto del comando, use [sandboxing](/docs/es/sandboxing). Para inspeccionar el texto completo del comando con su propia lógica antes de que se ejecute, use un hook [PreToolUse](#extend-permissions-with-hooks).

276 276 

277<h4 id="read-only-commands">277<h4 id="read-only-commands">

278 Comandos de solo lectura278 Comandos de solo lectura

279</h4>279</h4>

280 280 

281Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en cada modo, excepto para una ruta que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cierra. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir una solicitud para uno de estos comandos, agregue una regla `ask` o `deny` para él. En modo automático, estos comandos también pueden esperar la revisión del clasificador; consulte [cómo el clasificador evalúa acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions).281Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en cada modo, excepto cuando [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cambia el comportamiento para rutas fuera de sus directorios de trabajo. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir una solicitud para uno de estos comandos, agregue una regla `ask` o `deny` para él. En modo automático, estos comandos también pueden esperar la revisión del clasificador; consulte [cómo el clasificador evalúa acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions).

282 282 

283Una redirección como `ls > out.txt` agrega una verificación en el destino. Consulte [Redirections](#redirections).283Una redirección como `ls > out.txt` agrega una verificación en el destino. Consulte [Redirections](#redirections).

284 284 


290* **`docker` apuntado a otro daemon**: las formas de solo lectura de `docker` solicitan cuando el comando lleva una bandera que selecciona un daemon diferente, como `-H`, `--context` o `--url` y `--connection` de Podman.290* **`docker` apuntado a otro daemon**: las formas de solo lectura de `docker` solicitan cuando el comando lleva una bandera que selecciona un daemon diferente, como `-H`, `--context` o `--url` y `--connection` de Podman.

291* **`file` con banderas de apertura de ruta**: `file` solicita cuando pasa `-m`/`--magic-file` o `-f`/`--files-from`, porque esas banderas hacen que `file` abra las rutas nombradas en el valor de la bandera.291* **`file` con banderas de apertura de ruta**: `file` solicita cuando pasa `-m`/`--magic-file` o `-f`/`--files-from`, porque esas banderas hacen que `file` abra las rutas nombradas en el valor de la bandera.

292* **Rutas de red en Windows**: un comando cuyos argumentos incluyen una ruta de red (UNC), como `\\server\share\file`, solicita porque acceder a una ruta de red puede enviar sus credenciales de Windows al host que nombra. La misma verificación se aplica a los comandos de la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool).292* **Rutas de red en Windows**: un comando cuyos argumentos incluyen una ruta de red (UNC), como `\\server\share\file`, solicita porque acceder a una ruta de red puede enviar sus credenciales de Windows al host que nombra. La misma verificación se aplica a los comandos de la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool).

293* **Escrituras en variables de shell especiales**: un comando que establece, desestablece o itera sobre ciertas variables de shell especiales, como `PATH` o `IFS`, solicita incluso cuando el resto del comando es de solo lectura.

293* **Comandos que el análisis no puede analizar**: cuando Claude Code no puede analizar completamente un comando, solicita aprobación en lugar de tratar el comando como de solo lectura. Los comandos más largos que 10,000 caracteres siempre solicitan porque exceden lo que el análisis analiza.294* **Comandos que el análisis no puede analizar**: cuando Claude Code no puede analizar completamente un comando, solicita aprobación en lugar de tratar el comando como de solo lectura. Los comandos más largos que 10,000 caracteres siempre solicitan porque exceden lo que el análisis analiza.

294 295 

295Un `cd` en una ruta dentro de su directorio de trabajo o un [directorio adicional](#working-directories) también es de solo lectura, y un comando compuesto como `cd packages/api && ls` se ejecuta sin una solicitud cuando cada parte se califica por sí sola. Estas combinaciones solicitan incluso cuando cada parte es de solo lectura:296Un `cd` en una ruta dentro de su directorio de trabajo o un [directorio adicional](#working-directories) también es de solo lectura, y un comando compuesto como `cd packages/api && ls` se ejecuta sin una solicitud cuando cada parte se califica por sí sola. Estas combinaciones solicitan incluso cuando cada parte es de solo lectura:

296 297 

297* **`cd` con `git`**: solicita cuando el `cd` cambia a un directorio diferente, ya que ejecutar `git` en un nuevo directorio puede ejecutar los hooks de ese directorio. Un `cd` cuyo destino se resuelve al directorio de trabajo actual es una no-operación y no desencadena la solicitud.298* **`cd` con `git`**: solicita cuando el `cd` cambia a un directorio diferente, ya que ejecutar `git` en un nuevo directorio puede ejecutar los hooks de ese directorio. Un `cd` cuyo destino se resuelve al directorio de trabajo actual es una no-operación y no activa la solicitud.

298* **`cd` con una redirección**: solicita cuando Claude Code no puede determinar contra qué directorio se resuelve el destino de redirección después de que se ejecuta el `cd`. Un comando cuyo único destino de redirección es `/dev/null`, como `cd app; grep -r pattern . 2>/dev/null`, no solicita, porque `/dev/null` no depende del directorio de trabajo.299* **`cd` con una redirección**: solicita cuando Claude Code no puede determinar contra qué directorio se resuelve el destino de redirección después de que se ejecuta el `cd`. Un comando cuyo único destino de redirección es `/dev/null`, como `cd app; grep -r pattern . 2>/dev/null`, no solicita, porque `/dev/null` no depende del directorio de trabajo.

299 300 

300<Warning>301<Warning>


357 358 

358Para bloquear las herramientas de archivo de Claude de leer un archivo o directorio, agregue una regla de negación `Read` para su ruta, como `Read(./.env)` o `Read(./secrets/**)`; [Exclude sensitive files](/docs/es/settings-reference#exclude-sensitive-files) tiene un ejemplo listo para pegar.359Para bloquear las herramientas de archivo de Claude de leer un archivo o directorio, agregue una regla de negación `Read` para su ruta, como `Read(./.env)` o `Read(./secrets/**)`; [Exclude sensitive files](/docs/es/settings-reference#exclude-sensitive-files) tiene un ejemplo listo para pegar.

359 360 

360Las reglas `Edit` se aplican a todas las herramientas integradas que editan archivos. Claude hace un esfuerzo de buena fe para aplicar reglas `Read` a todas las herramientas integradas que leen archivos como Grep y Glob, a menciones `@file` en sus indicaciones y a la selección y contexto de archivo abierto que un [IDE](/docs/es/vs-code#the-built-in-ide-mcp-server) conectado comparte con Claude.361Las reglas `Edit` se aplican a todas las herramientas integradas que editan archivos. Claude hace un esfuerzo de mejor intento para aplicar reglas `Read` a todas las herramientas integradas que leen archivos como Grep y Glob, a menciones `@file` en sus solicitudes y a la selección y contexto de archivo abierto que un [IDE](/docs/es/vs-code#the-built-in-ide-mcp-server) conectado comparte con Claude.

361 362 

362Una regla de negación `Read` también bloquea las herramientas [Edit y Write](/docs/es/errors#file-is-covered-by-a-read-deny-rule) en la misma ruta, incluida la creación de un nuevo archivo allí. NotebookEdit no está cubierto, por lo que agregue una regla de negación `Edit` para rutas que ninguna herramienta pueda cambiar. La verificación requiere Claude Code v2.1.208 o posterior en ediciones, y v2.1.228 o posterior en escrituras.363Una regla de negación `Read` también bloquea las herramientas [Edit y Write](/docs/es/errors#file-is-covered-by-a-read-deny-rule) en la misma ruta, incluida la creación de un nuevo archivo allí. NotebookEdit no está cubierto, por lo que agregue una regla de negación `Edit` para rutas que ninguna herramienta pueda cambiar. La verificación requiere Claude Code v2.1.208 o posterior en ediciones, y v2.1.228 o posterior en escrituras.

363 364 


452 453 

453Dos límites estrechan lo que un patrón `!` puede extraer:454Dos límites estrechan lo que un patrón `!` puede extraer:

454 455 

455* Claude Code lee un patrón `!` relativo al directorio actual incluso cuando `/`, `~/` o `//` sigue al `!`, por lo que el patrón no puede alcanzar una regla anclada con uno de esos prefijos. `Read(!~/notes/public/**)` no extrae nada de `Read(~/notes/**)`.456* Claude Code lee un patrón `!` relativo al directorio actual incluso cuando `/`, `~/` o `//` sigue a `!`, por lo que el patrón no puede alcanzar una regla anclada con uno de esos prefijos. `Read(!~/notes/public/**)` no extrae nada de `Read(~/notes/**)`.

456* Una extracción no puede reabrir un archivo dentro de un directorio que una regla bloquea en su totalidad. Con `Read(secrets/**)` y `Read(!secrets/public/**)`, Claude Code aún bloquea `secrets/public` junto con el resto de `secrets`.457* Una extracción no puede reabrir un archivo dentro de un directorio que una regla bloquea en su totalidad. Con `Read(secrets/**)` y `Read(!secrets/public/**)`, Claude Code aún bloquea `secrets/public` junto con el resto de `secrets`.

457 458 

458<h4 id="symlinks">459<h4 id="symlinks">


489 Rutas que no se pueden resolver o que cambian490 Rutas que no se pueden resolver o que cambian

490</h5>491</h5>

491 492 

492Cuando Claude Code no puede determinar dónde lleva una ruta en el disco, por ejemplo porque los symlinks en ella forman un bucle, las herramientas Read, Edit y Write [rechazan la operación](/docs/es/errors#refusing-after-a-symlink-changed).493Cuando Claude Code no puede determinar dónde conduce una ruta en el disco, por ejemplo porque los symlinks en ella forman un bucle, las herramientas Read, Edit y Write [rechazan la operación](/docs/es/errors#refusing-after-a-symlink-changed).

493 494 

494Cuando una herramienta luego abre el archivo aprobado, [confirma que la ruta aún se resuelve a la ubicación que la verificación de permiso aprobó](/docs/es/errors#refusing-after-a-symlink-changed).495Cuando una herramienta luego abre el archivo aprobado, [confirma que la ruta aún se resuelve a la ubicación que la verificación de permiso aprobó](/docs/es/errors#refusing-after-a-symlink-changed).

495 496 


520| `WebFetch` | Claude busca sin solicitarle. No cambia qué hosts pueden alcanzar los comandos en sandbox. | Claude Code elimina la herramienta `WebFetch`, por lo que Claude no puede buscar en absoluto. No cambia qué hosts pueden alcanzar los comandos en sandbox. |521| `WebFetch` | Claude busca sin solicitarle. No cambia qué hosts pueden alcanzar los comandos en sandbox. | Claude Code elimina la herramienta `WebFetch`, por lo que Claude no puede buscar en absoluto. No cambia qué hosts pueden alcanzar los comandos en sandbox. |

521| `WebFetch(domain:*)` | Claude busca sin solicitarle, y los comandos en sandbox pueden alcanzar cualquier host. | Claude Code mantiene la herramienta y rechaza cada búsqueda, y los comandos en sandbox no pueden alcanzar ningún host. |522| `WebFetch(domain:*)` | Claude busca sin solicitarle, y los comandos en sandbox pueden alcanzar cualquier host. | Claude Code mantiene la herramienta y rechaza cada búsqueda, y los comandos en sandbox no pueden alcanzar ningún host. |

522 523 

523Las dos formas también difieren en lecturas de [artefactos](/docs/es/artifacts), las páginas que la herramienta Artifact publica en claude.ai. Una regla `WebFetch` de negación o solicitud desnuda no se aplica a esas lecturas. Una regla `domain:` que cubre `claude.ai` o el host de contenido `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` o `WebFetch(domain:*)`, niega cada lectura o solicita antes de ella. Una regla [`Artifact`](/docs/es/artifacts#disable-artifacts) hace lo mismo.524Las dos formas también difieren en lecturas de [artefactos](/docs/es/artifacts), las páginas que la herramienta Artifact publica en claude.ai. Una regla de negación o solicitud `WebFetch` desnuda no se aplica a esas lecturas. Una regla `domain:` que cubre `claude.ai` o el host de contenido `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` o `WebFetch(domain:*)`, niega cada lectura o solicita antes de ella. Una regla [`Artifact`](/docs/es/artifacts#disable-artifacts) hace lo mismo.

524 525 

525Cuando una regla bloquea una lectura, la negación nombra la regla. Antes de v2.1.268, una regla `WebFetch` de negación desnuda bloqueaba cada lectura de artefacto, y una regla de solicitud desnuda solicitaba antes de cada una.526Cuando una regla bloquea una lectura, la negación nombra la regla. Antes de v2.1.268, una regla de negación `WebFetch` desnuda bloqueaba cada lectura de artefacto, y una regla de solicitud desnuda solicitaba antes de cada una.

526 527 

527Para permitir que Claude busque libremente mientras mantiene la lista de permitidos del sandbox como está, use la forma desnuda. Este `settings.json` hace eso:528Para permitir que Claude busque libremente mientras mantiene la lista de permitidos del sandbox como está, use la forma desnuda. Este `settings.json` hace eso:

528 529 


534}535}

535```536```

536 537 

537Cuando le pide a Claude que busque una página, busca sin una solicitud. Cuando le pide que ejecute un `curl` [en sandbox](/docs/es/sandboxing) contra un host fuera de la lista de permitidos del sandbox, Claude Code aún le solicita ese host, porque la regla desnuda no agregó el host a la lista de permitidos.538Cuando solicita a Claude que busque una página, busca sin una solicitud. Cuando solicita que ejecute un `curl` [en sandbox](/docs/es/sandboxing) contra un host fuera de la lista de permitidos del sandbox, Claude Code aún le solicita ese host, porque la regla desnuda no agregó el host a la lista de permitidos.

538 539 

539En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra el host en los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) del comando para que el clasificador revise.540En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra el host en los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) de la solicitud para que el clasificador revise.

540 541 

541<h3 id="mcp">542<h3 id="mcp">

542 MCP543 MCP


550 551 

551Si su organización ha establecido una herramienta de conector [claude.ai](/docs/es/mcp#organization-controls-on-connector-tools) en `ask` y esa configuración llega a Claude Code en su sesión, las reglas de permiso para esa herramienta no tienen efecto: Claude Code solicita en cada llamada, incluso en modos `auto` y `bypassPermissions`. En modo `dontAsk`, que nunca solicita, Claude Code niega la llamada en su lugar. Las herramientas de conectores que Claude Code obtiene por sí mismo aparecen como `mcp__claude_ai_<server>__<tool>`.552Si su organización ha establecido una herramienta de conector [claude.ai](/docs/es/mcp#organization-controls-on-connector-tools) en `ask` y esa configuración llega a Claude Code en su sesión, las reglas de permiso para esa herramienta no tienen efecto: Claude Code solicita en cada llamada, incluso en modos `auto` y `bypassPermissions`. En modo `dontAsk`, que nunca solicita, Claude Code niega la llamada en su lugar. Las herramientas de conectores que Claude Code obtiene por sí mismo aparecen como `mcp__claude_ai_<server>__<tool>`.

552 553 

553En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude ejecuta comandos de shell a través de la herramienta `mcp__workspace__bash` de Cowork en lugar de la herramienta `Bash` integrada, y Cowork igualmente proporciona `mcp__workspace__web_fetch` para búsquedas web. Claude Code también aplica reglas de negación que nombran la herramienta `Bash` o `WebFetch` completa a estas herramientas de Cowork, por lo que una regla de negación `Bash` administrada detiene a Claude de ejecutar comandos de shell en Cowork. Cuando Claude Code bloquea tal llamada, el mensaje nombra la herramienta de Cowork: `Permission to use mcp__workspace__bash has been denied.` Las reglas de permiso no se transfieren: Claude Code nunca aplica una regla de permiso `Bash` a `mcp__workspace__bash`.554En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude ejecuta comandos de shell a través de la herramienta `mcp__workspace__bash` de Cowork en lugar de la herramienta `Bash` integrada, y Cowork igualmente proporciona `mcp__workspace__web_fetch` para búsquedas web. Claude Code también aplica reglas de negación que nombran la herramienta completa `Bash` o `WebFetch` a estas herramientas de Cowork, por lo que una regla de negación `Bash` administrada detiene a Claude de ejecutar comandos de shell en Cowork. Cuando Claude Code bloquea tal llamada, el mensaje nombra la herramienta de Cowork: `Permission to use mcp__workspace__bash has been denied.` Las reglas de permiso no se transfieren: Claude Code nunca aplica una regla de permiso `Bash` a `mcp__workspace__bash`.

554 555 

555<h3 id="agent-subagents">556<h3 id="agent-subagents">

556 Agent (subagentes)557 Agent (subagentes)


576 Cd577 Cd

577</h3>578</h3>

578 579 

579Las reglas `Cd` controlan a qué directorios el comando [`/cd`](/docs/es/commands) puede mover la sesión. `Cd` no es una herramienta invocable por modelo: Claude no puede llamarla, y las reglas se aplican solo cuando ejecuta `/cd` usted mismo.580Las reglas `Cd` controlan a qué directorios puede moverse la sesión el comando [`/cd`](/docs/es/commands). `Cd` no es una herramienta invocable por modelo: Claude no puede llamarla, y las reglas se aplican solo cuando ejecuta `/cd` usted mismo.

580 581 

581Una regla de negación `Cd` desnuda deshabilita `/cd` completamente. Una regla de negación `Cd(<path-pattern>)` bloquea destinos coincidentes. Las reglas de negación verifican cada ortografía del destino, incluido cada salto de symlink al que se resuelve, por lo que una regla escrita para una ruta también bloquea destinos que se resuelven a ella.582Una regla de negación `Cd` desnuda deshabilita `/cd` completamente. Una regla de negación `Cd(<path-pattern>)` bloquea destinos coincidentes. Las reglas de negación verifican cada ortografía del destino, incluido cada salto de symlink al que se resuelve, por lo que una regla escrita para una ruta también bloquea destinos que se resuelven a ella.

582 583 

plugin-evals.md +19 −13

Details

57 La línea base sin plugin57 La línea base sin plugin

58</h3>58</h3>

59 59 

60Una puntuación alta por sí sola no le dice que el plugin ayudó, porque Claude podría hacerlo igual sin él. Para separar los dos, las ejecuciones de cada caso se repiten sin plugin cargado por defecto, y obtiene dos puntuaciones, `WITH` y `W/OUT`. Su diferencia, `Δ`, es lo que el plugin contribuyó. Si un caso puntúa 1.0 tanto con como sin el plugin, el plugin no es lo que lo hizo pasar.60Una puntuación alta por sí sola no le dice que el plugin ayudó, porque Claude podría hacerlo igual sin él. Para separar los dos, las ejecuciones de cada caso se repiten sin plugin cargado, y obtiene dos puntuaciones, `WITH` y `W/OUT`. Su diferencia, `Δ`, es lo que el plugin contribuyó. Si un caso puntúa 1.0 tanto con como sin el plugin, el plugin no es lo que lo hizo pasar.

61 61 

62Los dos conjuntos de ejecuciones se llaman el brazo con y el brazo sin; [Comparar con una línea base sin plugin](#compare-against-a-no-plugin-baseline) cubre cómo se califican los calificadores en ambos brazos y cómo desactivar la línea base.62Los dos conjuntos de ejecuciones se llaman el brazo con y el brazo sin; [Comparar con una línea base sin plugin](#compare-against-a-no-plugin-baseline) cubre qué casos ejecutan solo el brazo con y cómo se califican los calificadores en ambos brazos.

63 63 

64<h2 id="create-your-first-eval-suite">64<h2 id="create-your-first-eval-suite">

65 Cree su primer conjunto de eval65 Cree su primer conjunto de eval


134 Escribir y refinar casos134 Escribir y refinar casos

135</h2>135</h2>

136 136 

137Los casos que `claude plugin eval init` escribe son archivos simples que puede abrir, cambiar, y agregar. Un caso es un directorio bajo el directorio de eval del plugin que contiene un `prompt.md`, un `case.yaml`, o ambos. Para agrupar casos, anídelos bajo un directorio que no sea en sí mismo un caso; cualquier cosa dentro de un directorio de caso, como `graders/` y archivos de fixture, pertenece a ese caso.137Los casos que `claude plugin eval init` escribe son archivos simples que puede abrir, cambiar, y agregar. Un caso es un directorio bajo el directorio de eval del plugin que contiene un `prompt.md`, un `case.yaml`, o ambos. Dé a cada caso al menos un calificador, como un archivo `graders/<name>.md` o una entrada `graders:` en `case.yaml`, porque un caso sin uno no se carga. Para agrupar casos, anídelos bajo un directorio que no sea en sí mismo un caso; cualquier cosa dentro de un directorio de caso, como `graders/` y archivos de fixture, pertenece a ese caso.

138 138 

139Este es el diseño que `claude plugin eval init` escribe y el que usar para nuevos conjuntos. La [referencia de conjunto de eval](#eval-suite-reference) tiene el árbol completo, incluyendo mocks y resultados:139Este es el diseño que `claude plugin eval init` escribe y el que usar para nuevos conjuntos. La [referencia de conjunto de eval](#eval-suite-reference) tiene el árbol completo, incluyendo mocks y resultados:

140 140 


248 Calificar contra la línea base sin plugin248 Calificar contra la línea base sin plugin

249</h3>249</h3>

250 250 

251Cuando un plugin está bajo prueba, cada caso se ejecuta en dos brazos por defecto. El brazo con es sus ejecuciones con el plugin cargado, y el brazo sin es el mismo número de ejecuciones sin plugin en absoluto. El resumen e informe muestran ambas puntuaciones y `Δ`, la puntuación del brazo con menos la puntuación del brazo sin.251Cuando un plugin está bajo prueba, un caso normalmente se ejecuta en dos brazos. El brazo con es sus ejecuciones con el plugin cargado, y el brazo sin es el mismo número de ejecuciones sin plugin en absoluto. El resumen e informe muestran ambas puntuaciones y `Δ`, la puntuación del brazo con menos la puntuación del brazo sin.

252 252 

253Pase `--ablation none` para ejecutar solo el brazo con, lo que reduce a la mitad el costo cuando no necesita la comparación, como mientras itera en calificadores.253En estas situaciones un caso ejecuta solo el brazo con, así que no obtiene puntuación `W/OUT` o `Δ`:

254 

255* **Usted pasa `--ablation none`**: cada caso ejecuta un brazo, lo que reduce a la mitad el costo cuando no necesita la comparación, como mientras itera en calificadores.

256* **El caso reanuda una transcripción y el objetivo es una ruta**: con un [objetivo](#choose-what-to-evaluate) como `.` en lugar del nombre de un plugin instalado, un caso [`context.history_file`](#add-setup-or-history-with-case-yaml) ejecuta un brazo por defecto, en la suposición de que la conversación grabada ya refleja el plugin. La ejecución imprime un aviso `single-arm (no Δ)` en stderr nombrando estos casos. Para comparar el turno reanudado con y sin el plugin, pase `--ablation with-without`.

257* **No se encontró plugin para el caso**: cuando el objetivo es una ruta, un caso cuyo plugin Claude Code no pudo localizar también ejecuta un brazo por defecto. Vea [el brazo de línea base no muestra plugin](#the-baseline-arm-shows-no-plugin-or-delta-is-zero) para arreglarlo.

254 258 

255En una ejecución de dos brazos, algunos calificadores se reportan con `scored: false`. Una verificación como "el skill fue invocado" nunca puede pasar sin el plugin, así que contarla empujaría el brazo sin hacia cero e inflaría `Δ`. Para mantener los dos brazos comparables, Claude Code excluye tales calificadores de la puntuación en ambos brazos y los reporta en el brazo con como indicadores de aprobación/fallo solo. Eso incluye:259En una ejecución de dos brazos, algunos calificadores se reportan con `scored: false`. Una verificación como "el skill fue invocado" nunca puede pasar sin el plugin, así que contarla empujaría el brazo sin hacia cero e inflaría `Δ`. Para mantener los dos brazos comparables, Claude Code excluye tales calificadores de la puntuación en ambos brazos y los reporta en el brazo con como indicadores de aprobación/fallo solo. Eso incluye:

256 260 


288Cada ejecución comienza en un espacio de trabajo vacío. Cuando un caso necesita más que el prompt, agregue un `case.yaml` junto a `prompt.md` con un bloque `context`:292Cada ejecución comienza en un espacio de trabajo vacío. Cuando un caso necesita más que el prompt, agregue un `case.yaml` junto a `prompt.md` con un bloque `context`:

289 293 

290* **Archivos de fixture o un repositorio git**: escriba un script Bash en el directorio del caso y nómbrelo en `context.scaffold_script`. El script se ejecuta como usted, fuera del sandbox del agente, y solo cuando pasa `--scaffold`, así que pase esa bandera solo para conjuntos que usted u su organización escribieron.294* **Archivos de fixture o un repositorio git**: escriba un script Bash en el directorio del caso y nómbrelo en `context.scaffold_script`. El script se ejecuta como usted, fuera del sandbox del agente, y solo cuando pasa `--scaffold`, así que pase esa bandera solo para conjuntos que usted u su organización escribieron.

291* **Una conversación anterior para continuar**: guarde la transcripción como un archivo `.jsonl` y nómbrelo en `context.history_file`, y el prompt del caso se convierte en el siguiente turno del usuario.295* **Una conversación anterior para continuar**: guarde la transcripción como un archivo `.jsonl` y nómbrelo en `context.history_file`, y el prompt del caso se convierte en el siguiente turno del usuario. Cuando el objetivo es una ruta, tal caso se ejecuta [sin un brazo de línea base](#compare-against-a-no-plugin-baseline) de forma predeterminada.

292* **Directorios de fixture que Claude puede leer durante la ejecución**: enumérelos en `context.add_dirs`.296* **Directorios de fixture que Claude puede leer durante la ejecución**: enumérelos en `context.add_dirs`.

293 297 

294Un `case.yaml` también necesita `schema_version: "1.1"` y `name`; la referencia [campos de case.yaml](#case-yaml-fields) tiene la lista completa.298Un `case.yaml` también necesita `schema_version: "1.1"` y `name`; la referencia [campos de case.yaml](#case-yaml-fields) tiene la lista completa.


304 add_dirs: [resources]308 add_dirs: [resources]

305```309```

306 310 

311Un script de scaffold comienza en el espacio de trabajo vacío con un pequeño entorno fijo: el `PATH` de su shell, `HOME` establecido en el directorio de inicio temporal de la ejecución, `TMPDIR`, y algunas constantes como `TERM=dumb`. Nada más de su shell llega a él, y tampoco las variables `EVAL_*` del caso. Si el script sale con código distinto de cero o se ejecuta más de 120 segundos, esa ejecución obtiene una puntuación de 0 con un error `scaffold failed`. Use el script solo para archivos y estado git, ya que la configuración del proyecto que escribe [no se carga](#how-runs-are-isolated).

312 

307<h3 id="mock-mcp-servers">313<h3 id="mock-mcp-servers">

308 Mock MCP servers314 Mock MCP servers

309</h3>315</h3>


400| `-j`, `--concurrency <n>` | `1` | Ejecute hasta este número de ejecuciones de agente a la vez, de 1 a 8. Comparten el límite de velocidad de su cuenta, así que esto acorta el tiempo de reloj de pared en lugar de aumentar el rendimiento más allá de ese límite. Los resultados mantienen el orden del caso |406| `-j`, `--concurrency <n>` | `1` | Ejecute hasta este número de ejecuciones de agente a la vez, de 1 a 8. Comparten el límite de velocidad de su cuenta, así que esto acorta el tiempo de reloj de pared en lugar de aumentar el rendimiento más allá de ese límite. Los resultados mantienen el orden del caso |

401| `--model <model>` | `model` de cada caso, si no `ANTHROPIC_MODEL` si se establece, si no el predeterminado de Claude Code | Modelo para el agente bajo prueba. Fíjelo en CI para que un lanzamiento de modelo no se confunda con una regresión de plugin |407| `--model <model>` | `model` de cada caso, si no `ANTHROPIC_MODEL` si se establece, si no el predeterminado de Claude Code | Modelo para el agente bajo prueba. Fíjelo en CI para que un lanzamiento de modelo no se confunda con una regresión de plugin |

402| `--judge-model <model>` | Un modelo pequeño y rápido | Modelo para calificadores `llm` y `baseline` |408| `--judge-model <model>` | Un modelo pequeño y rápido | Modelo para calificadores `llm` y `baseline` |

403| `--ablation <mode>` | `with-without` cuando un plugin se resuelve, si no `none` | Si también ejecutar cada caso sin el plugin para medir qué agrega. `none` ejecuta un brazo; `with-without` agrega la línea base sin plugin |409| `--ablation <mode>` | Decidido por caso; vea [Puntuar contra la línea base sin plugin](#compare-against-a-no-plugin-baseline) | Si también ejecutar cada caso sin el plugin para medir qué agrega. `none` ejecuta un brazo; `with-without` agrega la línea base sin plugin |

404| `--threshold <0..1>` | `1.0` | Un caso aprueba cuando su puntuación de brazo con es al menos esto. Cualquier caso por debajo hace que el comando salga 1 |410| `--threshold <0..1>` | `1.0` | Un caso aprueba cuando su puntuación de brazo con es al menos esto. Cualquier caso por debajo hace que el comando salga 1 |

405| `--max-cost-usd <usd>` | Sin techo | Un techo en la estimación de costo de precio de lista de la ejecución, no en el uso del plan. Se verifica antes de que cada ejecución comience. Una vez gastado, nada más comienza; las ejecuciones ya en vuelo terminan, así que el gasto puede pasar el techo por esas ejecuciones. Si alguna ejecución se deja sin iniciar, el comando sale 2 con resultados parciales |411| `--max-cost-usd <usd>` | Sin techo | Un techo en la estimación de costo de precio de lista de la ejecución, no en el uso del plan. Se verifica antes de que cada ejecución comience. Una vez gastado, nada más comienza; las ejecuciones ya en vuelo terminan, así que el gasto puede pasar el techo por esas ejecuciones. Si alguna ejecución se deja sin iniciar, el comando sale 2 con resultados parciales |

406| `--allow-tools <tools...>` | Ninguno | Otorgue herramientas más allá del conjunto de solo lectura. Vea [Otorgar herramientas](#grant-tools) |412| `--allow-tools <tools...>` | Ninguno | Otorgue herramientas más allá del conjunto de solo lectura. Vea [Otorgar herramientas](#grant-tools) |


512 Confiar en el directorio del plugin518 Confiar en el directorio del plugin

513</h3>519</h3>

514 520 

515La primera vez que ejecuta `claude plugin eval` contra un directorio, Claude Code pregunta `Trust this plugin directory?` antes de cargar nada de él, a menos que ya aceptara el aviso de confianza allí en una sesión interactiva de `claude`. Dentro de un repositorio git, responder sí confía en todo el repositorio, para sesiones interactivas también. Cuando stdin o stdout no es una terminal, bajo `--json`, o cuando la variable de entorno `CI` se establece en un valor verdadero como `true`, la ejecución no puede preguntar y se rechaza con salida 1; pase `--trust-plugin` para afirmar la confianza usted mismo, solo para un plugin que ejecutaría en su propia máquina. Un destino que nombra en lugar de dar como ruta, significando un plugin instalado o un plugin de directorio de skills, omite el aviso.521La primera vez que ejecuta `claude plugin eval` contra un directorio, Claude Code pregunta `Trust this plugin directory?` antes de cargar nada de él, a menos que ya aceptara el aviso de confianza allí en una sesión interactiva de `claude`. Dentro de un repositorio git, responder sí confía en todo el repositorio, para sesiones interactivas también. Cuando stdin o stdout no es una terminal, o bajo `--json`, la ejecución no puede preguntar y se rechaza con salida 1; pase `--trust-plugin` para afirmar la confianza usted mismo, solo para un plugin que ejecutaría en su propia máquina. Un destino que nombra en lugar de dar como ruta, significando un plugin instalado o un plugin de directorio de skills, omite el aviso.

516 522 

517Algunas partes del plugin y conjunto se ejecutan solo cuando pasa su bandera para esa ejecución:523Algunas partes del plugin y conjunto se ejecutan solo cuando pasa su bandera para esa ejecución:

518 524 


530 536 

531Cada ejecución obtiene un directorio de inicio temporal, directorio de trabajo, y configuración de Claude Code, y el agente bajo prueba se ejecuta allí como un proceso hijo `claude -p` con solo su plugin cargado. Tenga en cuenta estas consecuencias cuando escriba casos:537Cada ejecución obtiene un directorio de inicio temporal, directorio de trabajo, y configuración de Claude Code, y el agente bajo prueba se ejecuta allí como un proceso hijo `claude -p` con solo su plugin cargado. Tenga en cuenta estas consecuencias cuando escriba casos:

532 538 

533* **Nada personal o a nivel de proyecto carga.** Sus configuraciones de usuario, hooks, archivos `CLAUDE.md`, servidores MCP, otros plugins instalados, memoria, y skills están ausentes, y ningún `.claude/` o `.mcp.json` a nivel de proyecto por encima del sandbox se lee. La mayoría de su entorno de shell también se retiene; solo una [lista de permitidos](#prompt-md-fields) y variables `EVAL_*` llegan a la ejecución. Si el plugin necesita configuración, envíela en el plugin, créela en un `scaffold_script`, o pase variables `EVAL_*`.539* **Nada personal o a nivel de proyecto carga.** Sus configuraciones de usuario, hooks, archivos `CLAUDE.md`, servidores MCP, otros plugins instalados, memoria, y skills están ausentes. La configuración con alcance de proyecto no se lee en ningún lugar: ningún directorio `.claude/`, `CLAUDE.md`, o `.mcp.json` carga desde arriba del espacio de trabajo o dentro de él, ni siquiera uno que un `scaffold_script` escribió, y los directorios `add_dirs` otorgan acceso de solo lectura. La mayoría de su entorno de shell también se retiene; solo una [lista de permitidos](#prompt-md-fields) y variables `EVAL_*` llegan a la ejecución. Envíe cualquier skill, agente, hook, o servidor MCP que un caso dependa en el plugin bajo prueba, ya que un [`scaffold_script`](#add-setup-or-history-with-case-yaml) puede suministrar solo archivos y estado de git.

534* **La política administrada aún puede restringir una ejecución.** Las restricciones en [configuración administrada](/docs/es/managed-settings) que un administrador implementó en la máquina se aplican dentro de una ejecución, así que los resultados en una máquina administrada pueden diferir de una no administrada por esa política.540* **La política administrada aún puede restringir una ejecución.** Las restricciones en [configuración administrada](/docs/es/managed-settings) que un administrador implementó en la máquina se aplican dentro de una ejecución, así que los resultados en una máquina administrada pueden diferir de una no administrada por esa política.

535* **La herramienta Artifact está apagada.** Un skill que publica un [artefacto](/docs/es/artifacts) puede calificarse solo en lo que produce antes de ese paso.541* **La herramienta Artifact está apagada.** Un skill que publica un [artefacto](/docs/es/artifacts) puede calificarse solo en lo que produce antes de ese paso.

536* **Las definiciones del caso están ocultas del agente.** Una ejecución no puede leer el directorio de eval, así que Claude no puede ver el prompt del caso, sus calificadores, o casos hermanos.542* **Las definiciones del caso están ocultas del agente.** Una ejecución no puede leer el directorio de eval, así que Claude no puede ver el prompt del caso, sus calificadores, o casos hermanos.


540 Referencia de conjunto de eval546 Referencia de conjunto de eval

541</h2>547</h2>

542 548 

543Todo lo que un conjunto de eval puede contener vive bajo el directorio de eval del plugin, `evals/` a menos que [configure otro](#use-a-different-eval-directory). Este árbol muestra cada archivo que `claude plugin eval` lee o escribe allí; solo `prompt.md` o `case.yaml` es requerido para que un caso exista:549Todo lo que un conjunto de eval puede contener vive bajo el directorio de eval del plugin, `evals/` a menos que [configure otro](#use-a-different-eval-directory). Un directorio cuenta como un caso cuando contiene un `prompt.md` o un `case.yaml`, y un caso sin al menos un calificador falla al cargar con un error `invalid case.yaml` que nombra `graders`. Este árbol muestra cada archivo que `claude plugin eval` lee o escribe en el directorio de eval:

544 550 

545```text theme={null}551```text theme={null}

546evals/552evals/


596 602 

597| Campo | Propósito |603| Campo | Propósito |

598| :- | :- |604| :- | :- |

599| `context.scaffold_script` | Un script Bash en el directorio del caso que se ejecuta en el espacio de trabajo vacío antes de que Claude comience, para crear archivos de fixture o un repositorio git. Se ejecuta solo cuando pasa [`--scaffold`](#add-setup-or-history-with-case-yaml) |605| `context.scaffold_script` | Un script Bash en el directorio del caso que se ejecuta en el espacio de trabajo vacío antes de que Claude comience, para crear archivos de fixture o un repositorio git. Se ejecuta solo cuando pasa [`--scaffold`](#add-setup-or-history-with-case-yaml), con un entorno mínimo y un límite de 120 segundos, y una salida distinta de cero falla la ejecución |

600| `context.history_file` | Una transcripción `.jsonl` en el directorio del caso para reanudar. El prompt del caso se convierte en el siguiente turno del usuario |606| `context.history_file` | Una transcripción `.jsonl` en el directorio del caso para reanudar. El prompt del caso se convierte en el siguiente turno del usuario |

601| `context.add_dirs` | Directorios dentro del directorio del caso que Claude puede leer durante la ejecución, otorgados de solo lectura |607| `context.add_dirs` | Directorios dentro del directorio del caso que Claude puede leer durante la ejecución, otorgados de solo lectura |

602| `execution.prompt` | El prompt, cuando mantiene todo el caso en `case.yaml` y omite `prompt.md` |608| `execution.prompt` | El prompt, cuando mantiene todo el caso en `case.yaml` y omite `prompt.md` |


685 "is not a trusted plugin directory, and this run cannot stop to ask you about it"691 "is not a trusted plugin directory, and this run cannot stop to ask you about it"

686</h3>692</h3>

687 693 

688Esta es la primera ejecución contra un directorio que Claude Code aún no confía, y no puede preguntar porque stdin o stdout no es una terminal, pasó `--json`, o la variable de entorno `CI` está establecida en un valor verdadero como `true`. Ejecute `claude plugin eval <dir>` una vez en una terminal y responda el aviso, o pase `--trust-plugin` si confía en el código y conjunto del plugin. Vea [Lo que una ejecución puede acceder](#security).694Esta es la primera ejecución contra un directorio que Claude Code aún no confía, y no puede preguntar porque stdin o stdout no es una terminal o pasó `--json`. Ejecute `claude plugin eval <dir>` una vez en una terminal y responda el aviso, o pase `--trust-plugin` si confía en el código y conjunto del plugin. Vea [Lo que una ejecución puede acceder](#security).

689 695 

690<h3 id="git-is-too-old-for-claude-plugin-eval">696<h3 id="git-is-too-old-for-claude-plugin-eval">

691 "is too old for claude plugin eval"697 "is too old for claude plugin eval"


711 El brazo de línea base muestra sin plugin, o delta es cero717 El brazo de línea base muestra sin plugin, o delta es cero

712</h3>718</h3>

713 719 

714Si el resumen no tiene columna `W/OUT`, o el caso falla con "ablation requested but no plugin resolved", no se encontró plugin para el caso. Agregue `plugins: ["../.."]` al caso, dando la ruta desde el directorio del caso al directorio del plugin.720Si el resumen no tiene columna `W/OUT`, o el caso falla con "ablation requested but no plugin resolved", la causa habitual es que no se encontró plugin para el caso. Si cada caso reanuda una transcripción a través de `context.history_file`, la columna faltante es esperada en su lugar, porque esos casos se ejecutan [un brazo por defecto](#compare-against-a-no-plugin-baseline). De lo contrario, agregue `plugins: ["../.."]` al caso, dando la ruta desde el directorio del caso al directorio del plugin.

715 721 

716Si el plugin cargó y `Δ` aún está cerca de cero con su calificador `tool_used: Skill` fallando, eso es generalmente un hallazgo real, significando que la `description` del skill no se activa en la fraseología del prompt. Ajuste la descripción y re-ejecute el mismo conjunto.722Si el plugin cargó y `Δ` aún está cerca de cero con su calificador `tool_used: Skill` fallando, eso es generalmente un hallazgo real, significando que la `description` del skill no se activa en la fraseología del prompt. Ajuste la descripción y re-ejecute el mismo conjunto.

717 723 

Details

92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |

93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

94 94 

95Ejecuta `claude plugin install --help` en tu shell para ver todas las opciones que tu versión soporta.

96 

95Pasa `-y` desde tu propia terminal para aceptar el comando mostrado sin el aviso. Aquí está lo que sucede sin un TTY y cuando Claude ejecuta el comando:97Pasa `-y` desde tu propia terminal para aceptar el comando mostrado sin el aviso. Aquí está lo que sucede sin un TTY y cuando Claude ejecuta el comando:

96 98 

97* **stdin o stdout no es un TTY, y no pasas ni `-y` ni `--accept-command`**: la instalación se rechaza. La salida dice que el comando solo se mostró, y el código de salida es `1`99* **stdin o stdout no es un TTY, y no pasas ni `-y` ni `--accept-command`**: la instalación se rechaza. La salida dice que el comando solo se mostró, y el código de salida es `1`


163 165 

164Claude Code imprime `Successfully uninstalled plugin: formatter (scope: project)`. Cuando el plugin no está instalado en ese ámbito, el comando imprime una línea que comienza con `Failed to uninstall plugin "formatter@my-marketplace":` y sale con `1`.166Claude Code imprime `Successfully uninstalled plugin: formatter (scope: project)`. Cuando el plugin no está instalado en ese ámbito, el comando imprime una línea que comienza con `Failed to uninstall plugin "formatter@my-marketplace":` y sale con `1`.

165 167 

166Si la línea de fallo continúa con `"formatter" was not uninstalled:`, Claude Code no pudo confirmar que la configuración del ámbito ya no activa el plugin, por lo que el plugin permanece instalado con todo lo que guardó. Con `--json`, el resultado lleva `failureCode: "settings_still_on"`. Esta verificación de configuración requiere Claude Code v2.1.282 o posterior.168Si la línea de fallo continúa con `"formatter" was not uninstalled:` y nombra un archivo de configuración, Claude Code no pudo confirmar que la configuración del ámbito ya no activa el plugin, por lo que el plugin permanece instalado con todo lo que guardó. Con `--json`, el resultado lleva `failureCode: "settings_still_on"`. Esta verificación de configuración requiere Claude Code v2.1.282 o posterior.

167 169 

168<h4 id="what-an-uninstall-deletes-and-keeps">170<h4 id="what-an-uninstall-deletes-and-keeps">

169 Qué elimina y qué conserva una desinstalación171 Qué elimina y qué conserva una desinstalación


436| `-j, --concurrency <n>` | Sesiones de agente a ejecutar a la vez, 1 a 8. Comparten tu límite de velocidad | `1` |438| `-j, --concurrency <n>` | Sesiones de agente a ejecutar a la vez, 1 a 8. Comparten tu límite de velocidad | `1` |

437| `--model <model>` | Modelo para el agente bajo prueba | El `model` de cada caso, si no `ANTHROPIC_MODEL` si está establecido, si no el predeterminado de Claude Code |439| `--model <model>` | Modelo para el agente bajo prueba | El `model` de cada caso, si no `ANTHROPIC_MODEL` si está establecido, si no el predeterminado de Claude Code |

438| `--judge-model <model>` | Modelo para calificadores `llm` y `baseline` | Un modelo pequeño rápido |440| `--judge-model <model>` | Modelo para calificadores `llm` y `baseline` | Un modelo pequeño rápido |

439| `--ablation <mode>` | `none` o `with-without`. Consulta [Comparar contra una línea base sin plugin](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` cuando un plugin se resuelve, si no `none` |441| `--ablation <mode>` | `none` o `with-without`. Consulta [Comparar contra una línea base sin plugin](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | Decidido por caso, como esa sección describe |

440| `--threshold <0..1>` | Sale con 1 si algún caso puntúa por debajo de esto | `1.0` |442| `--threshold <0..1>` | Sale con 1 si algún caso puntúa por debajo de esto | `1.0` |

441| `--max-cost-usd <usd>` | Detente antes de la próxima ejecución una vez que el gasto alcance esto, sale con 2, e informa resultados parciales | Sin límite |443| `--max-cost-usd <usd>` | Detente antes de la próxima ejecución una vez que el gasto alcance esto, sale con 2, e informa resultados parciales | Sin límite |

442| `--allow-tools <tools...>` | Otorga herramientas más allá del conjunto de solo lectura, como `Bash`, `Write`, `Edit` o `"mcp__plugin_<plugin>_<server>__*"`. Consulta [Otorgar herramientas](/docs/es/plugin-evals#grant-tools) | |444| `--allow-tools <tools...>` | Otorga herramientas más allá del conjunto de solo lectura, como `Bash`, `Write`, `Edit` o `"mcp__plugin_<plugin>_<server>__*"`. Consulta [Otorgar herramientas](/docs/es/plugin-evals#grant-tools) | |


467claude plugin eval init [name] [options]469claude plugin eval init [name] [options]

468```470```

469 471 

472Ejecuta el comando desde la carpeta raíz del plugin, el directorio que contiene `.claude-plugin/plugin.json` o el `SKILL.md` del skill. Para crear el conjunto en otro directorio a propósito, pasa `--eval-dir`.

473 

470En una terminal, el comando abre una sesión interactiva de Claude Code para una entrevista de autoría. En la entrevista, Claude hace lo siguiente:474En una terminal, el comando abre una sesión interactiva de Claude Code para una entrevista de autoría. En la entrevista, Claude hace lo siguiente:

471 475 

4721. Lee el plugin4761. Lee el plugin


477 481 

478Con `--bare`, o sin una terminal, el comando escribe una plantilla de caso único en blanco en su lugar. Cuando Claude ejecuta el comando desde dentro de una sesión de Claude Code, el comando imprime las instrucciones de entrevista para que esa sesión siga en su lugar de escribir una plantilla.482Con `--bare`, o sin una terminal, el comando escribe una plantilla de caso único en blanco en su lugar. Cuando Claude ejecuta el comando desde dentro de una sesión de Claude Code, el comando imprime las instrucciones de entrevista para que esa sesión siga en su lugar de escribir una plantilla.

479 483 

480El `name` opcional es un nombre de caso. Es requerido con `--bare` o sin una terminal, porque el comando escribe la plantilla en blanco para ese caso. La entrevista no necesita uno.484El `name` opcional es un nombre de caso. Es requerido con `--bare` o sin una terminal, porque el comando escribe la plantilla en blanco para ese caso. Un nombre de caso comienza con una letra o dígito y contiene solo letras, dígitos, `.`, `_` y `-`. En cada plataforma, el comando también rechaza nombres que Windows no puede almacenar, como `con` o un nombre que termina en `.`.

481 485 

482El comando acepta estas opciones:486El comando acepta estas opciones:

483 487 


634| :- | :- | :- |638| :- | :- | :- |

635| `owner/repo`, `owner/repo#ref` o `owner/repo@ref` | `github` | Clona el repositorio de GitHub, fijado a `ref` cuando se da. El propietario y el repo deben seguir las reglas de nombres de GitHub |639| `owner/repo`, `owner/repo#ref` o `owner/repo@ref` | `github` | Clona el repositorio de GitHub, fijado a `ref` cuando se da. El propietario y el repo deben seguir las reglas de nombres de GitHub |

636| `user@host:path[.git][#ref]` | `git` | Clona sobre SSH |640| `user@host:path[.git][#ref]` | `git` | Clona sobre SSH |

637| `https://example.com/repo.git[#ref]`, o una URL que contiene `/_git/` | `git` | Clona sobre HTTPS, incluyendo URLs de Azure DevOps |641| Una URL `http://` o `https://` que termina en `.git[#ref]` o contiene `/_git/`, como `https://example.com/repo.git` | `git` | Clona la URL, incluyendo URLs de Azure DevOps |

638| `https://github.com/owner/repo` o `https://gitlab.com/namespace/project` | `git` | Clona sobre HTTPS después de añadir `.git` |642| `https://github.com/owner/repo` o `https://gitlab.com/namespace/project`, o lo mismo sobre `http://` | `git` | Clona la URL después de añadir `.git` |

639| Cualquier otra URL `http://` o `https://`, incluyendo un host de git auto-alojado sin `.git` | `url` | Obtiene la URL como un `marketplace.json`. Para clonar un repositorio allí en su lugar, añade `.git` |643| Cualquier otra URL `http://` o `https://`, incluyendo un host de git auto-alojado sin `.git` | `url` | Obtiene la URL como un `marketplace.json`. Para clonar un repositorio allí en su lugar, añade `.git` |

640| `./path`, `../path`, `/path` o `~/path` a un directorio | `directory` | Lee el directorio en su lugar. En Windows, las formas `.\`, `..\` y `C:\` también funcionan |644| `./path`, `../path`, `/path` o `~/path` a un directorio | `directory` | Lee el directorio en su lugar. En Windows, las formas `.\`, `..\` y `C:\` también funcionan |

641| Las mismas formas de ruta, a un archivo `.json` | `file` | Lee el archivo en su lugar |645| Las mismas formas de ruta, a un archivo `.json` | `file` | Lee el archivo en su lugar |


707Elimina la declaración de un marketplace de tu configuración. `rm` es un alias para `remove`.711Elimina la declaración de un marketplace de tu configuración. `rm` es un alias para `remove`.

708 712 

709<Warning>713<Warning>

710 Cuando eliminas un marketplace del último ámbito que lo declara, Claude Code también elimina su caché y desinstala cada plugin que instalaste desde él. Sin `--scope`, el comando elimina la declaración de cada ámbito. Para actualizar un marketplace sin perder sus plugins, ejecuta `plugin marketplace update` en su lugar.714 Cuando eliminas un marketplace del último ámbito que lo declara, Claude Code también elimina su caché y desinstala cada plugin que instalaste desde él. También elimina sus [opciones y secretos](/docs/es/plugins/manifest-reference#user-configuration) guardados y [datos](/docs/es/plugins/components#path-variables-and-persistent-data) donde puede.

715 

716 Para actualizar un marketplace sin perder sus plugins, ejecuta `plugin marketplace update` en su lugar.

711</Warning>717</Warning>

712 718 

713```bash theme={null}719```bash theme={null}


726claude plugin marketplace remove your-marketplace732claude plugin marketplace remove your-marketplace

727```733```

728 734 

729Claude Code imprime `Successfully removed marketplace: your-marketplace`, añadiendo `(from project settings)` cuando lo limitaste. Si limitas a un archivo de configuración que no declara el marketplace, el comando falla con `Marketplace 'your-marketplace' is not declared in project settings. Omit --scope to remove it from all scopes.`735Claude Code imprime `Successfully removed marketplace: your-marketplace`. Cuando el comando desinstala plugins, la salida los lista bajo una línea como `Also uninstalled 2 plugins from this marketplace:`. Para usar uno de ellos de nuevo, añade el marketplace de vuelta y reinstala el plugin.

736 

737Si limitas a un archivo de configuración que no declara el marketplace, el comando falla con `Marketplace 'your-marketplace' is not declared in project settings. Omit --scope to remove it from all scopes.`

730 738 

731<h3 id="plugin-marketplace-update">739<h3 id="plugin-marketplace-update">

732 plugin marketplace update740 plugin marketplace update


769| `/plugin list [--enabled\|--disabled]` | `ls` | Imprime tus plugins instalados de marketplace en línea, con versión, ámbito y estado. Una bandera de filtro muestra solo ese estado. Un plugin cuyo estado de habilitación aún no se ha aplicado está marcado como `— run /reload-plugins to apply`. Requiere Claude Code v2.1.163 o posterior |777| `/plugin list [--enabled\|--disabled]` | `ls` | Imprime tus plugins instalados de marketplace en línea, con versión, ámbito y estado. Una bandera de filtro muestra solo ese estado. Un plugin cuyo estado de habilitación aún no se ha aplicado está marcado como `— run /reload-plugins to apply`. Requiere Claude Code v2.1.163 o posterior |

770| `/plugin install` | `i` | Abre la pestaña **Discover** |778| `/plugin install` | `i` | Abre la pestaña **Discover** |

771| `/plugin install <plugin>` | `i` | Abre los detalles del plugin en la pestaña **Discover**. Con `name@marketplace`, los abre en la lista de ese marketplace |779| `/plugin install <plugin>` | `i` | Abre los detalles del plugin en la pestaña **Discover**. Con `name@marketplace`, los abre en la lista de ese marketplace |

780| `/plugin install <source>` | `i` | Reporta un error de [marketplace no encontrado](/docs/es/plugins/troubleshooting#marketplace-not-found) e instala nada cuando el destino es una ruta, URL, u `owner/repo`, incluso una fuente que ya has añadido. Para instalar desde una fuente, consulta [Añadir un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command) |

772| `/plugin install <plugin> --marketplace <source>` | `i` | Añade el marketplace en `<source>` cuando aún no lo has añadido, pidiéndote que confirmes primero, luego abre los detalles del plugin. Consulta [Añadir un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command). Requiere Claude Code v2.1.275 o posterior |781| `/plugin install <plugin> --marketplace <source>` | `i` | Añade el marketplace en `<source>` cuando aún no lo has añadido, pidiéndote que confirmes primero, luego abre los detalles del plugin. Consulta [Añadir un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command). Requiere Claude Code v2.1.275 o posterior |

773| `/plugin manage` | | Abre la pestaña **Installed** |782| `/plugin manage` | | Abre la pestaña **Installed** |

774| `/plugin stats` | | Abre la pestaña **Stats**, en sesiones donde [`/skill-doctor`](/docs/es/skills#find-unused-skills) está disponible. En cualquier otro lugar abre el panel en la pestaña **Discover** |783| `/plugin stats` | | Abre la pestaña **Stats**, en sesiones donde [`/skill-doctor`](/docs/es/skills#find-unused-skills) está disponible. En cualquier otro lugar abre el panel en la pestaña **Discover** |


841| `--plugin-dir <path>` | Carga un plugin desde un directorio o un archivo `.zip` de uno. Una carpeta de plugins carga cada carpeta hijo que contiene un `.claude-plugin/plugin.json`. Cada bandera toma una ruta | `claude --plugin-dir ./my-plugin --plugin-dir ./other.zip` |850| `--plugin-dir <path>` | Carga un plugin desde un directorio o un archivo `.zip` de uno. Una carpeta de plugins carga cada carpeta hijo que contiene un `.claude-plugin/plugin.json`. Cada bandera toma una ruta | `claude --plugin-dir ./my-plugin --plugin-dir ./other.zip` |

842| `--plugin-url <url>` | Obtiene un archivo `.zip` de plugin desde una URL. Repite la bandera, o pasa varias URLs separadas por espacios en un valor entrecomillado | `claude --plugin-url "https://example.com/a.zip https://example.com/b.zip"` |851| `--plugin-url <url>` | Obtiene un archivo `.zip` de plugin desde una URL. Repite la bandera, o pasa varias URLs separadas por espacios en un valor entrecomillado | `claude --plugin-url "https://example.com/a.zip https://example.com/b.zip"` |

843 852 

844Un plugin que cualquiera de esas banderas carga es un plugin de solo sesión. `claude plugin list` lo muestra como `<name>@inline` con ámbito `session`, pero solo cuando la misma bandera precede al subcomando. Por ejemplo, ejecuta `claude --plugin-dir ./my-plugin plugin list`.853Un plugin que cualquiera de esas banderas carga es un plugin de solo sesión. [`claude plugin list`](#plugin-list) lo muestra solo cuando la misma bandera precede al subcomando, como en `claude --plugin-dir ./my-plugin plugin list`. El plugin aparece como `<name>@inline` bajo un encabezado que comienza con `Session-only plugins`, y `--json` reporta su `scope` como `session`.

845 854 

846Cuando un plugin de solo sesión comparte un nombre con un plugin instalado, Claude Code carga la copia de solo sesión para esa sesión y omite la instalada. La copia instalada se carga en su lugar si deshabilitaste la copia de solo sesión con `claude plugin disable <name>@inline`, o si la configuración gestionada bloquea ese nombre de plugin. Para la precedencia, consulta [Referencia de carga de plugins](/docs/es/plugins/loading).855Cuando un plugin de solo sesión comparte un nombre con un plugin instalado, Claude Code carga la copia de solo sesión para esa sesión y omite la instalada. La copia instalada se carga en su lugar si deshabilitaste la copia de solo sesión con `claude plugin disable <name>@inline`, o si la configuración gestionada bloquea ese nombre de plugin. Para la precedencia, consulta [Referencia de carga de plugins](/docs/es/plugins/loading).

847 856 

Details

676 676 

677Para incluir instrucciones en un plugin, escríbalas como una skill. Claude Code no carga un `CLAUDE.md` en la raíz del plugin, y `claude plugin validate` advierte `CLAUDE.md at the plugin root is not loaded as project context`.677Para incluir instrucciones en un plugin, escríbalas como una skill. Claude Code no carga un `CLAUDE.md` en la raíz del plugin, y `claude plugin validate` advierte `CLAUDE.md at the plugin root is not loaded as project context`.

678 678 

679Si una regla debe mantenerse en todo momento, como [bloquear ediciones a archivos protegidos](/docs/es/hooks-guide#block-edits-to-protected-files), agréguela al plugin como un [hook](#hooks) en lugar de una skill. Para elegir entre los dos, consulte la pestaña Hook vs Skill bajo [Comparar características similares](/docs/es/features-overview#compare-similar-features).

680 

679Para campos de frontmatter y archivos de apoyo, consulte [Skills](/docs/es/skills).681Para campos de frontmatter y archivos de apoyo, consulte [Skills](/docs/es/skills).

680 682 

681<h3 id="commands">683<h3 id="commands">

Details

126 126 

127Cada plugin que distribuya es un objeto en el array `plugins` de `marketplace.json`. Para agregar un segundo plugin, agregue un segundo objeto. Estos campos cubren la mayoría de entradas:127Cada plugin que distribuya es un objeto en el array `plugins` de `marketplace.json`. Para agregar un segundo plugin, agregue un segundo objeto. Estos campos cubren la mayoría de entradas:

128 128 

129* `name`: el identificador que las personas escriben antes de `@` cuando instalan. No puede contener espacios.129* `name`: el identificador que las personas escriben antes de `@` cuando instalan. [Las entradas de plugins](/docs/es/plugins/marketplace-reference#plugin-entries) proporciona los caracteres que un nombre puede usar.

130* `source`: dónde Claude Code obtiene el plugin. Escriba una cadena de ruta relativa para un plugin dentro del directorio del marketplace, como en [el tutorial](#create-a-marketplace), o un objeto de source para un plugin fuera de él. Consulte [Elegir una source de plugin](#choose-a-plugin-source).130* `source`: dónde Claude Code obtiene el plugin. Escriba una cadena de ruta relativa para un plugin dentro del directorio del marketplace, como en [el tutorial](#create-a-marketplace), o un objeto de source para un plugin fuera de él. Consulte [Elegir una source de plugin](#choose-a-plugin-source).

131* `description`: la línea que las personas ven junto al plugin cuando exploran su marketplace en `/plugin`.131* `description`: la línea que las personas ven junto al plugin cuando exploran su marketplace en `/plugin`.

132 132 


199 199 

200* Errores de sintaxis JSON, como `json: Invalid JSON syntax: <reason>`200* Errores de sintaxis JSON, como `json: Invalid JSON syntax: <reason>`

201* Campos requeridos faltantes, como `owner: Invalid input`201* Campos requeridos faltantes, como `owner: Invalid input`

202* Un nombre de marketplace con espacios, caracteres no ASCII, o una forma que imita un marketplace oficial de Anthropic, como `claude-official`202* Un nombre de marketplace o plugin que infringe las reglas de nomenclatura en la [referencia de marketplace](/docs/es/plugins/marketplace-reference#top-level-fields)

203* Una `source` relativa que contiene `..`203* Una `source` relativa que contiene `..`

204* Campos desconocidos en el nivel superior o en una entrada de plugin, como advertencias204* Campos desconocidos en el nivel superior o en una entrada de plugin, como advertencias

205* Problemas en el `plugin.json` de cada plugin de ruta relativa, como `plugins[N] plugin.json → <field>: <message>`205* Problemas en el `plugin.json` de cada plugin de ruta relativa, como `plugins[N] plugin.json → <field>: <message>`

Details

50 50 

51Cuando los usuarios agregan su marketplace como una URL `marketplace.json` simple, Claude Code descarga solo ese archivo. Una entrada en su matriz `plugins` cuyo `source` es una ruta relativa como `./plugins/formatter` luego falla en la instalación con [`its marketplace entry path does not stay inside the marketplace directory`](/docs/es/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces). Dé a cada entrada un source que pueda obtenerse por sí solo, como un repositorio `github` o una URL `archive`, u aloje el marketplace en un repositorio de git para que Claude Code clone el árbol completo.51Cuando los usuarios agregan su marketplace como una URL `marketplace.json` simple, Claude Code descarga solo ese archivo. Una entrada en su matriz `plugins` cuyo `source` es una ruta relativa como `./plugins/formatter` luego falla en la instalación con [`its marketplace entry path does not stay inside the marketplace directory`](/docs/es/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces). Dé a cada entrada un source que pueda obtenerse por sí solo, como un repositorio `github` o una URL `archive`, u aloje el marketplace en un repositorio de git para que Claude Code clone el árbol completo.

52 52 

53<h3 id="stay-within-the-download-limits-for-hosted-files">

54 Stay within the download limits for hosted files

55</h3>

56 

57Cuando los usuarios agregan su marketplace como una URL `marketplace.json`, o instalan una entrada con un source [`archive`](/docs/es/plugins/marketplace-reference#archive-plugin-source), Claude Code descarga el archivo desde su servidor. La descarga falla más allá de los límites en esta tabla, así que dimensione sus archivos y configure su servidor para mantenerse dentro de ellos.

58 

59| Archivo | Descarga más grande | Tiempo para que su servidor responda | Redirecciones |

60| :- | :- | :- | :- |

61| `marketplace.json` de un source de marketplace `url` | 5 MiB | 10 segundos | Una redirección a un origen diferente debe usar `https://` y no puede apuntar a un host loopback, link-local o cloud-metadata, por lo que una redirección de `https://` a `http://` falla |

62| Zip de un source de plugin `archive` | 256 MiB | 120 segundos | Como máximo cinco. Cada destino de redirección debe usar `https://` y no puede apuntar a un host loopback, link-local o cloud-metadata |

63 

64Una solicitud que una redirección envía a un origen diferente no lleva ninguno de los encabezados que configuró en el source del marketplace o en la entrada del plugin.

65 

66Después de que se descarga un archivo, la instalación falla cuando el zip excede cualquiera de estos límites de extracción:

67 

68* **Entradas**: 100,000 archivos y directorios

69* **Tamaño de archivo**: 512 MiB para cualquier archivo, sin comprimir

70* **Tamaño total**: 1 GiB sin comprimir

71* **Relación de compresión**: contenido sin comprimir 50 veces el tamaño del zip

72 

53<h3 id="edit-plugins-in-place-on-a-shared-directory">73<h3 id="edit-plugins-in-place-on-a-shared-directory">

54 Edit plugins in place on a shared directory74 Edit plugins in place on a shared directory

55</h3>75</h3>

Details

121 121 

122En su terminal, los plugins se sincronizan solo en sesiones donde inicia sesión con su cuenta claude.ai.122En su terminal, los plugins se sincronizan solo en sesiones donde inicia sesión con su cuenta claude.ai.

123 123 

124Claude Code no descarga ni carga plugins sincronizados en estas sesiones de terminal, incluso después de que inicie sesión con `/login`:

125 

126* Una sesión donde `ANTHROPIC_AUTH_TOKEN`, `CLAUDE_CODE_OAUTH_TOKEN`, o un script `apiKeyHelper` proporciona la credencial en lugar de ese inicio de sesión

127* Una sesión que no [obtiene banderas de características de Anthropic](/docs/es/env-vars#features-that-need-feature-flag-fetching), como una donde establece `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

128* Una sesión en [modo bare](/docs/es/headless#start-faster-with-bare-mode) o una que inicia con `--safe-mode`

129* Una sesión que inicia con una lista [`--setting-sources`](/docs/es/cli-reference#cli-flags) que deja fuera `user`

130 

124Si inició sesión en una versión anterior de Claude Code, ese inicio de sesión no cubre plugins hasta que Claude Code lo renueve en segundo plano. Para obtener acceso más rápido, ejecute `/login` nuevamente. La sincronización de plugins comienza la próxima vez que inicia Claude Code.131Si inició sesión en una versión anterior de Claude Code, ese inicio de sesión no cubre plugins hasta que Claude Code lo renueve en segundo plano. Para obtener acceso más rápido, ejecute `/login` nuevamente. La sincronización de plugins comienza la próxima vez que inicia Claude Code.

125 132 

126<h4 id="control-which-synced-plugins-load">133<h4 id="control-which-synced-plugins-load">


190| `.trash/` | Plugins que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar |197| `.trash/` | Plugins que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar |

191| `installed_plugins.json` y `known_marketplaces.json` | Los registros de lo que Claude Code ha instalado y qué mercados ha obtenido, descritos bajo [Verificar en qué etapa llegó un plugin](#check-which-stage-a-plugin-reached). Un [mercado alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai) se registra en `known_marketplaces_claudeai.json` en su lugar |198| `installed_plugins.json` y `known_marketplaces.json` | Los registros de lo que Claude Code ha instalado y qué mercados ha obtenido, descritos bajo [Verificar en qué etapa llegó un plugin](#check-which-stage-a-plugin-reached). Un [mercado alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai) se registra en `known_marketplaces_claudeai.json` en su lugar |

192| `flagged-plugins.json` | Plugins que Claude Code desinstaló porque su mercado los eliminó de la lista. Aparecen en la sección **Flagged** de `/plugin`; consulte [Alojar un mercado](/docs/es/plugins/host-marketplace) |199| `flagged-plugins.json` | Plugins que Claude Code desinstaló porque su mercado los eliminó de la lista. Aparecen en la sección **Flagged** de `/plugin`; consulte [Alojar un mercado](/docs/es/plugins/host-marketplace) |

200| `installed_plugins.set-aside.<date>.<hash>.json` e `installed_plugins.unreadable.<date>.<hash>.kept` | Copias fechadas que Claude Code mantiene antes de descartar registros de instalación que ninguna versión de Claude Code puede usar o reconstruir un `installed_plugins.json` ilegible. Consulte [las notas de recuperación](/docs/es/plugins/troubleshooting#installed-plugins-json-could-not-be-read-and-was-rebuilt). Envejecen según el cronograma [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays) |

193 201 

194Debido a que `${CLAUDE_PLUGIN_ROOT}` apunta a un directorio de versión, la ruta raíz de un plugin cambia con cada versión. Mantenga los archivos duraderos de un plugin en `${CLAUDE_PLUGIN_DATA}` en su lugar.202Debido a que `${CLAUDE_PLUGIN_ROOT}` apunta a un directorio de versión, la ruta raíz de un plugin cambia con cada versión. Mantenga los archivos duraderos de un plugin en `${CLAUDE_PLUGIN_DATA}` en su lugar.

195 203 

Details

48* **Nombres de marketplace comunitario**: `claude-community`, `claude-plugins-community` y `healthcare`. Reservado bajo la misma regla que los nombres oficiales.48* **Nombres de marketplace comunitario**: `claude-community`, `claude-plugins-community` y `healthcare`. Reservado bajo la misma regla que los nombres oficiales.

49* **Nombres de directorio de plugins**: `anthropic-plugin-directory` y `claude-plugin-directory`. Reservado bajo la misma regla que los nombres oficiales.49* **Nombres de directorio de plugins**: `anthropic-plugin-directory` y `claude-plugin-directory`. Reservado bajo la misma regla que los nombres oficiales.

50* **Nombres que suplanten un marketplace oficial**: nombres como `official-claude-plugins` o `claude-plugins-v2`, y cualquier nombre que contenga un carácter no ASCII. El error es `Marketplace name impersonates an official Anthropic/Claude marketplace`. Un carácter de control o de formato bidireccional en un nombre también reporta `Marketplace name cannot contain control or bidirectional-formatting characters`. Un marketplace ya registrado bajo tal nombre deja de cargarse, junto con sus plugins.50* **Nombres que suplanten un marketplace oficial**: nombres como `official-claude-plugins` o `claude-plugins-v2`, y cualquier nombre que contenga un carácter no ASCII. El error es `Marketplace name impersonates an official Anthropic/Claude marketplace`. Un carácter de control o de formato bidireccional en un nombre también reporta `Marketplace name cannot contain control or bidirectional-formatting characters`. Un marketplace ya registrado bajo tal nombre deja de cargarse, junto con sus plugins.

51* <span id="reserved-name-spellings" />**Otra ortografía de un nombre reservado**: un nombre que difiere de un nombre reservado solo por un punto final, o por un símbolo distinto de un guión en lugar de un guión, por lo que `claude.code.plugins` cuenta como `claude-code-plugins`. `claude plugin validate` acepta tal nombre; agregar el marketplace falla con [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/es/errors#marketplace-name-is-another-spelling-of-a-reserved-name), y un marketplace ya registrado bajo uno deja de cargarse. Esta verificación requiere Claude Code v2.1.280 o posterior.51* <span id="reserved-name-spellings" />**Otra ortografía de un nombre reservado**: un nombre que difiere de un nombre reservado solo por un punto final, o por un símbolo distinto de un guión en lugar de un guión, por lo que `claude.code.plugins` cuenta como `claude-code-plugins`. Agregar el marketplace falla con [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/es/errors#marketplace-name-is-another-spelling-of-a-reserved-name), y un marketplace ya registrado bajo uno deja de cargarse. Esta verificación requiere Claude Code v2.1.280 o posterior.

52* **Nombres que Claude Code usa para plugins que no provienen de un marketplace**: `inline` para plugins cargados con [`--plugin-dir`](/docs/es/cli-reference), `builtin` para plugins integrados, `skills-dir` para plugins cargados automáticamente desde [`.claude/skills/`](/docs/es/skills) y `synced` para plugins sincronizados desde su cuenta claude.ai. `claude-plugin-test` también está reservado. `skills-dir` también aparece como `{"source": "skills-dir"}` en `strictKnownMarketplaces` y `blockedMarketplaces`, descrito bajo [Valores de fuente válidos solo en listas de políticas](#source-values-valid-only-in-policy-lists).52* **Nombres que Claude Code usa para plugins que no provienen de un marketplace**: `inline` para plugins cargados con [`--plugin-dir`](/docs/es/cli-reference), `builtin` para plugins integrados, `skills-dir` para plugins cargados automáticamente desde [`.claude/skills/`](/docs/es/skills) y `synced` para plugins sincronizados desde su cuenta claude.ai. `claude-plugin-test` también está reservado. `skills-dir` también aparece como `{"source": "skills-dir"}` en `strictKnownMarketplaces` y `blockedMarketplaces`, descrito bajo [Valores de fuente válidos solo en listas de políticas](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github` y `gh`**: reservado en cualquier mayúscula. Esta verificación requiere Claude Code v2.1.275 o posterior.53* **`npm`, `pip`, `uv`, `cargo`, `github` y `gh`**: reservado en cualquier mayúscula. Esta verificación requiere Claude Code v2.1.275 o posterior.

54* **Nombres que comienzan con `claudeai-`**: reservado para marketplaces alojados en claude.ai. `claude plugin marketplace add` rechaza cualquier otro marketplace que use uno con `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.54* **Nombres que comienzan con `claudeai-`**: reservado para marketplaces alojados en claude.ai. `claude plugin marketplace add` rechaza cualquier otro marketplace que use uno con `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.


63 63 

64| Campo | Tipo | Descripción |64| Campo | Tipo | Descripción |

65| :- | :- | :- |65| :- | :- | :- |

66| `name` | string | Identificador de marketplace. Sin espacios, caracteres de control o caracteres de formato bidireccional, sin `/` o `\`, sin `..` y no `.`. Consulte [Nombres reservados](#reserved-names). Los usuarios lo escriben después de `@` cuando instalan un plugin |66| `name` | string | Identificador de marketplace: letras, dígitos, `.`, `_` y `-`, comenzando con una letra o dígito, y sin `..`. Forma la mitad después de `@` de cada [id de plugin](/docs/es/plugins/loading#find-where-a-plugin-came-from) instalado desde el marketplace, por lo que `claude plugin validate` falla con otros nombres. Consulte [Nombres reservados](#reserved-names) |

67| `owner` | object | Información del mantenedor. `name` es obligatorio; `email` y `url` son opcionales |67| `owner` | object | Información del mantenedor. `name` es obligatorio; `email` y `url` son opcionales |

68| `plugins` | array | [Entradas de plugins](#plugin-entries). Cada entrada se valida por sí sola, por lo que una entrada inválida no falla el marketplace |68| `plugins` | array | [Entradas de plugins](#plugin-entries). Cada entrada se valida por sí sola, por lo que una entrada inválida no falla el marketplace |

69| `$schema` | string | URL de JSON Schema para autocompletado del editor. Se ignora en tiempo de carga |69| `$schema` | string | URL de JSON Schema para autocompletado del editor. Se ignora en tiempo de carga |


87 87 

88| Campo | Tipo | Descripción |88| Campo | Tipo | Descripción |

89| :- | :- | :- |89| :- | :- | :- |

90| `name` | string | Identificador de plugin, sin espacios, caracteres de control o caracteres de formato bidireccional. Los usuarios lo escriben antes de `@` cuando instalan, incluso cuando el propio `plugin.json` del plugin establece un `name` diferente |90| `name` | string | Identificador de plugin: letras, dígitos, `.`, `_` y `-`, comenzando con una letra o dígito. `claude plugin validate` falla con otros nombres, que Claude Code no puede instalar. Los usuarios lo escriben antes de `@` cuando instalan, incluso cuando el propio `plugin.json` del plugin establece un `name` diferente |

91| `source` | string or object | Dónde obtener el plugin. Consulte [Fuentes de plugins](#plugin-sources) |91| `source` | string or object | Dónde obtener el plugin. Consulte [Fuentes de plugins](#plugin-sources) |

92| `description` | string | Se muestra en los listados y detalles de [`/plugin`](/docs/es/plugins/install) |92| `description` | string | Se muestra en los listados y detalles de [`/plugin`](/docs/es/plugins/install) |

93| `version` | string | Cadena de versión para el plugin. Cuando `plugin.json` también establece `version`, `plugin.json` tiene precedencia y `claude plugin validate` advierte. Consulte [Referencia de carga de plugins](/docs/es/plugins/loading) |93| `version` | string | Cadena de versión para el plugin. Cuando `plugin.json` también establece `version`, `plugin.json` tiene precedencia y `claude plugin validate` advierte. Consulte [Referencia de carga de plugins](/docs/es/plugins/loading) |


280 Fuente de plugin archive280 Fuente de plugin archive

281</h3>281</h3>

282 282 

283`url` debe usar `https://` y no puede apuntar a un host de loopback, link-local o cloud-metadata.283`url` debe usar `https://` y no puede apuntar a un host de loopback, link-local o cloud-metadata. Para los límites de tamaño, tiempo de espera, redirección y extracción en la descarga, consulte [Manténgase dentro de los límites de descarga para archivos alojados](/docs/es/plugins/host-marketplace#stay-within-the-download-limits-for-hosted-files).

284 284 

285La raíz del plugin puede estar en la parte superior del zip o un directorio hacia abajo.285La raíz del plugin puede estar en la parte superior del zip o un directorio hacia abajo.

286 286 


385| :- | :- | :- | :- | :- | :- |385| :- | :- | :- | :- | :- | :- |

386| `url` | `url`, `headers`, `headersHelper` | Una URL `http://` o `https://` que no coincide con una forma git | Se carga | Permite la misma URL | Bloquea la misma URL |386| `url` | `url`, `headers`, `headersHelper` | Una URL `http://` o `https://` que no coincide con una forma git | Se carga | Permite la misma URL | Bloquea la misma URL |

387| `github` | `repo`, `ref`, `path`, `sparsePaths` | `owner/repo`, `owner/repo@ref` u `owner/repo#ref` | Se carga | Permite el mismo `repo`, `ref` y `path`. `repo` puede ser `owner/*` | Bloquea lo mismo, y una URL `git` al mismo repositorio |387| `github` | `repo`, `ref`, `path`, `sparsePaths` | `owner/repo`, `owner/repo@ref` u `owner/repo#ref` | Se carga | Permite el mismo `repo`, `ref` y `path`. `repo` puede ser `owner/*` | Bloquea lo mismo, y una URL `git` al mismo repositorio |

388| `git` | `url`, `ref`, `path`, `sparsePaths` | Una URL `user@host:path`, o una URL `https://` que termina en `.git`, contiene `/_git/`, o nombra un repositorio github.com o gitlab.com. `#ref` fija un ref | Se carga | Permite la misma URL, `ref` y `path` | Bloquea lo mismo, y otras ortografías del mismo repositorio github.com |388| `git` | `url`, `ref`, `path`, `sparsePaths` | Una URL `user@host:path`, o una URL `http://` o `https://` que termina en `.git`, contiene `/_git/`, o nombra un repositorio github.com o gitlab.com. `#ref` fija un ref | Se carga | Permite la misma URL, `ref` y `path` | Bloquea lo mismo, y otras ortografías del mismo repositorio github.com |

389| `npm` | `package` | No producido | Falla al cargar: `NPM marketplace sources not yet implemented` | Se analiza pero no coincide con nada, porque nada registra un marketplace `npm` | Se analiza pero no coincide con nada |389| `npm` | `package` | No producido | Falla al cargar: `NPM marketplace sources not yet implemented` | Se analiza pero no coincide con nada, porque nada registra un marketplace `npm` | Se analiza pero no coincide con nada |

390| `file` | `path` | Una ruta a un archivo `.json` | Se carga | Permite la misma ruta | Bloquea la misma ruta |390| `file` | `path` | Una ruta a un archivo `.json` | Se carga | Permite la misma ruta | Bloquea la misma ruta |

391| `directory` | `path` | Una ruta a un directorio | Se carga | Permite la misma ruta | Bloquea la misma ruta |391| `directory` | `path` | Una ruta a un directorio | Se carga | Permite la misma ruta | Bloquea la misma ruta |


402 402 

403| Campo | Tipos | Descripción |403| Campo | Tipos | Descripción |

404| :- | :- | :- |404| :- | :- | :- |

405| `url` | `url` | Enlace al archivo `marketplace.json`. Claude Code descarga solo ese archivo, por lo que los plugins del marketplace no pueden usar [fuentes de ruta relativa](#relative-path-plugin-source) |405| `url` | `url` | Enlace al archivo `marketplace.json`. Claude Code descarga solo ese archivo, por lo que los plugins del marketplace no pueden usar [fuentes de ruta relativa](#relative-path-plugin-source). Consulte [Manténgase dentro de los límites de descarga para archivos alojados](/docs/es/plugins/host-marketplace#stay-within-the-download-limits-for-hosted-files) para los límites de tamaño, tiempo de espera y redirección |

406| `url` | `git` | El repositorio git para clonar |406| `url` | `git` | El repositorio git para clonar |

407| `headers` | `url` | Mapa de encabezados HTTP que Claude Code envía con la obtención, para hosts autenticados |407| `headers` | `url` | Mapa de encabezados HTTP que Claude Code envía con la obtención, para hosts autenticados |

408| `headersHelper` | `url` | Comando que imprime encabezados cuyos valores son demasiado efímeros para listar en `headers`. Requiere Claude Code v2.1.238 o posterior. Consulte [Autenticar descargas de archivos](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) |408| `headersHelper` | `url` | Comando que imprime encabezados cuyos valores son demasiado efímeros para listar en `headers`. Requiere Claude Code v2.1.238 o posterior. Consulte [Autenticar descargas de archivos](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) |


469 469 

470Un mensaje prefijado con un índice de entrada y `plugin.json →`, como `plugins[2] plugin.json →`, es sobre los propios archivos de ese plugin. [`claude plugin validate` reporta errores](/docs/es/plugins/troubleshooting#claude-plugin-validate-reports-errors) enumera esos mensajes con sus correcciones.470Un mensaje prefijado con un índice de entrada y `plugin.json →`, como `plugins[2] plugin.json →`, es sobre los propios archivos de ese plugin. [`claude plugin validate` reporta errores](/docs/es/plugins/troubleshooting#claude-plugin-validate-reports-errors) enumera esos mensajes con sus correcciones.

471 471 

472Las advertencias que mencionan nombres de banderas de Claude Desktop señalan nombres que Claude Code acepta pero Claude Desktop rechaza, porque las reglas de nombre de Claude Desktop son más estrictas.472Las advertencias que mencionan nombres de banderas de Claude Desktop señalan nombres que Claude Desktop rechaza.

473 473 

474La tabla asigna mensajes de nivel de marketplace al campo sobre el que trata cada uno.474La tabla asigna mensajes de nivel de marketplace al campo sobre el que trata cada uno.

475 475 


484| `Author name cannot be empty` | Error | `owner.name` |484| `Author name cannot be empty` | Error | `owner.name` |

485| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Error | `plugins[i].name` |485| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Error | `plugins[i].name` |

486| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | `plugins[i].name` |486| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | `plugins[i].name` |

487| `Claude Code cannot install plugins from marketplace "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change the marketplace's "name".` | Error | `name` |

488| `Claude Code cannot install plugin "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change this entry's "name".` | Error | `plugins[i].name` |

487| `Duplicate plugin name "x" found in marketplace` | Error | Dos entradas comparten un `name` |489| `Duplicate plugin name "x" found in marketplace` | Error | Dos entradas comparten un `name` |

488| `plugins.i.source: Invalid input` | Error | El `source` de la entrada no coincide con ningún tipo. Consulte [Entrada inválida en una fuente](#invalid-input-on-a-source) |490| `plugins.i.source: Invalid input` | Error | El `source` de la entrada no coincide con ningún tipo. Consulte [Entrada inválida en una fuente](#invalid-input-on-a-source) |

489| `plugins[i].source: Path contains "..": <path>` | Error | Un `source` relativo que escapa de la raíz del marketplace |491| `plugins[i].source: Path contains "..": <path>` | Error | Un `source` relativo que escapa de la raíz del marketplace |

Details

145 `Marketplace "<name>" not found`145 `Marketplace "<name>" not found`

146</h3>146</h3>

147 147 

148Ejecutó `/plugin install <plugin>@<name>` en una sesión, a menudo desde una línea de instalación que alguien le envió, y Claude Code informó que no tiene ningún mercado con ese nombre.148Ejecutó `/plugin install` en una sesión y Claude Code informó que no tiene ningún mercado con ese nombre. Dos formas del comando llegan a este mensaje:

149 

150* **`/plugin install <plugin>@<name>`**: la línea de instalación, a menudo una que alguien le envió, nombra un mercado que no ha agregado. El resto de esta entrada cubre encontrarlo y agregarlo.

151* **`/plugin install <source>` con una ruta, URL, u `owner/repo`**: esta forma informa el mensaje en lugar de instalar, incluso para una fuente que ya ha agregado. Para instalar desde una fuente en un comando, vea [Agregar un mercado e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command).

149 152 

150Si el nombre comienza con `claudeai-`, el mercado se aloja en claude.ai, y lo agrega por nombre desde su shell con `claude plugin marketplace add --claudeai <name>`. Vea [Add a marketplace from claude.ai](/docs/es/plugins/install#add-from-claude-ai).153Si el nombre comienza con `claudeai-`, el mercado se aloja en claude.ai, y lo agrega por nombre desde su shell con `claude plugin marketplace add --claudeai <name>`. Vea [Add a marketplace from claude.ai](/docs/es/plugins/install#add-from-claude-ai).

151 154 


646 649 

647Luego ejecute `/reload-plugins` en su sesión. La entrada de la pestaña **Errors** desaparece y el plugin está de vuelta bajo **Installed**.650Luego ejecute `/reload-plugins` en su sesión. La entrada de la pestaña **Errors** desaparece y el plugin está de vuelta bajo **Installed**.

648 651 

652<h3 id="installed-plugins-json-holds-a-record-this-version-cannot-read">

653 `installed_plugins.json holds a record under "<id>" that this version of Claude Code cannot read`

654</h3>

655 

656El mensaje aparece en estas formas:

657 

658* **`claude plugin list`**: lo imprime como una `Note:`

659* **`claude plugin install`, `uninstall`, y `update`**: se niegan con `Plugin "<name>" was not installed:`, `Plugin "<name>" was not uninstalled:`, o `Plugin "<name>" was not updated:`, seguido del mismo texto

660* **`--json` en cualquiera de esos tres comandos**: la línea de resultado lleva el mismo `message` y `failureCode: "install_records_unreadable"`

661* **Varios registros de este tipo**: el mensaje lee `holds records under`

662* **El archivo completo declara un formato que esta versión no conoce**: el mensaje lee `installed_plugins.json is in a format (version <N>) that this version of Claude Code does not know` en su lugar

663 

664El registro nombrado en `installed_plugins.json` es JSON válido bajo un id de plugin válido, pero sus campos no se analizan para esta versión. Lo más probable es que otra versión de Claude Code lo escribió, quizás una más nueva.

665 

666Mientras el registro esté allí, esta versión no reescribe el archivo, por lo que el registro no se pierde.

667 

668Tome las opciones del mensaje en orden:

669 

6701. Actualice Claude Code con `claude update`.

6712. Si no puede actualizar, desinstale el plugin nombrado con la versión de Claude Code que escribió el registro.

6723. Si ninguno ayuda, elimine el registro de `installed_plugins.json` a mano, luego reinicie Claude Code o ejecute `/reload-plugins`.

673 

674<h3 id="installed-plugins-json-could-not-be-read-and-was-rebuilt">

675 `installed_plugins.json could not be read and was rebuilt`

676</h3>

677 

678`claude plugin list` imprime esta nota, con la ruta de un archivo guardado nombrado `installed_plugins.unreadable.<date>.<hash>.kept`, mientras ese archivo se encuentre junto a `installed_plugins.json`.

679 

680Un `installed_plugins.json` que no es JSON válido, o no es una lista de plugins, no puede decir qué instaló.

681 

682Abra el archivo `.kept` para ver qué registró el archivo antiguo, e reinstale los plugins que le faltan. Claude Code nunca vuelve a leer el archivo, y el archivo envejece en el cronograma [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays).

683 

684<h3 id="install-records-under-names-that-no-version-can-use">

685 `install records under names that no version of Claude Code can use were removed from installed_plugins.json`

686</h3>

687 

688`claude plugin list` imprime esta nota, con la ruta de una copia nombrada `installed_plugins.set-aside.<date>.<hash>.json`, mientras esa copia se encuentre junto a `installed_plugins.json`. La nota termina `Nothing needs doing about these copies.`

689 

690Un registro en `installed_plugins.json` se encontraba bajo una clave que no es un id de plugin válido, por lo que ninguna versión de Claude Code puede usarlo. El resto del archivo se carga normalmente.

691 

692Claude Code copia los registros inutilizables en el archivo `.set-aside` y los elimina de la lista. Claude Code nunca vuelve a leer las copias, y las copias envejecen en el cronograma [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays).

693 

649<h3 id="a-plugin-you-disabled-still-loads">694<h3 id="a-plugin-you-disabled-still-loads">

650 `Disabled in ~/.claude/settings.json but still loads`695 `Disabled in ~/.claude/settings.json but still loads`

651</h3>696</h3>


981| `Path contains "..": <path>` bajo `plugins[N].source` | Error | Use rutas relativas a la raíz del mercado sin segmentos `..`. |1026| `Path contains "..": <path>` bajo `plugins[N].source` | Error | Use rutas relativas a la raíz del mercado sin segmentos `..`. |

982| `Marketplace name cannot contain control or bidirectional-formatting characters` | Error | Elimine el carácter del nombre, como un escape o una nueva línea. |1027| `Marketplace name cannot contain control or bidirectional-formatting characters` | Error | Elimine el carácter del nombre, como un escape o una nueva línea. |

983| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | Elimine el carácter del `name` del plugin. |1028| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | Elimine el carácter del `name` del plugin. |

1029| `Claude Code cannot install plugins from marketplace "<name>". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change the marketplace's "name".` | Error | Cambie el nombre del mercado para que se ajuste a la regla que indica el mensaje. |

1030| `Claude Code cannot install plugin "<name>". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change this entry's "name".` | Error | Cambie el nombre de la entrada para que se ajuste a la regla que indica el mensaje. |

984| `Marketplace has no plugins defined` | Advertencia | Agregue al menos una entrada a `plugins`. |1031| `Marketplace has no plugins defined` | Advertencia | Agregue al menos una entrada a `plugins`. |

985| `No marketplace description provided` | Advertencia | Agregue una `description` a nivel superior. |1032| `No marketplace description provided` | Advertencia | Agregue una `description` a nivel superior. |

986| `Plugin name "<name>" is not kebab-case` bajo `plugins[N] plugin.json → name` | Advertencia | Cambie el nombre a letras minúsculas, dígitos, y guiones. Claude Code acepta otras formas, pero la sincronización del mercado de claude.ai las rechaza. |1033| `Plugin name "<name>" is not kebab-case` bajo `plugins[N] plugin.json → name` | Advertencia | Cambie el nombre a letras minúsculas, dígitos, y guiones; la sincronización del mercado de claude.ai requiere esa forma. |

987| `Entry declares version "<a>" but <path>/plugin.json says "<b>"` | Advertencia | Actualice la entrada para que coincida con `plugin.json`, que es autoritario en el tiempo de instalación. |1034| `Entry declares version "<a>" but <path>/plugin.json says "<b>"` | Advertencia | Actualice la entrada para que coincida con `plugin.json`, que es autoritario en el tiempo de instalación. |

988| `Marketplace name "<name>" is reserved in Claude Desktop` | Advertencia | Cambie el nombre del mercado. La sincronización de mercado administrada de Claude Desktop rechaza `org`, `org-provisioned`, y `unknown` en cualquier mayúscula. |1035| `Marketplace name "<name>" is reserved in Claude Desktop` | Advertencia | Cambie el nombre del mercado. La sincronización de mercado administrada de Claude Desktop rechaza `org`, `org-provisioned`, y `unknown` en cualquier mayúscula. |

989| `Marketplace name "<name>" is not accepted by Claude Desktop` o `Plugin name "<name>" is not accepted by Claude Desktop` | Advertencia | Cambie el nombre a como máximo 128 caracteres de letras, dígitos, `.`, `_`, y `-`, comenzando con una letra o dígito. |1036| `Marketplace name "<name>" is not accepted by Claude Desktop` o `Plugin name "<name>" is not accepted by Claude Desktop` | Advertencia | Cambie el nombre a como máximo 128 caracteres de letras, dígitos, `.`, `_`, y `-`, comenzando con una letra o dígito. |

Details

412| - | - |412| - | - |

413| `DISABLE_PROMPT_CACHING` | Desactivar para todos los modelos |413| `DISABLE_PROMPT_CACHING` | Desactivar para todos los modelos |

414| `DISABLE_PROMPT_CACHING_HAIKU` | Desactivar para el modelo Haiku predeterminado |414| `DISABLE_PROMPT_CACHING_HAIKU` | Desactivar para el modelo Haiku predeterminado |

415| `DISABLE_PROMPT_CACHING_SONNET` | Desactivar solo para Sonnet |415| `DISABLE_PROMPT_CACHING_SONNET` | Desactivar para el modelo Sonnet predeterminado |

416| `DISABLE_PROMPT_CACHING_OPUS` | Desactivar solo para Opus |416| `DISABLE_PROMPT_CACHING_OPUS` | Desactivar para el modelo Opus predeterminado |

417| `DISABLE_PROMPT_CACHING_FABLE` | Desactivar solo para Fable |417| `DISABLE_PROMPT_CACHING_FABLE` | Desactivar solo para Fable |

418 418 

419`DISABLE_PROMPT_CACHING_HAIKU` se aplica al modelo Haiku predeterminado, el modelo al que se resuelve el alias `haiku`. Desactiva el almacenamiento en caché dondequiera que ese modelo se ejecute, incluida la conversación principal cuando es su modelo principal. Cubrir la conversación principal requiere Claude Code v2.1.283 o posterior.419`DISABLE_PROMPT_CACHING_HAIKU` se aplica al modelo Haiku predeterminado, el modelo al que se resuelve el alias `haiku`. Desactiva el almacenamiento en caché dondequiera que ese modelo se ejecute, incluida la conversación principal cuando es su modelo principal. Cubrir la conversación principal requiere Claude Code v2.1.283 o posterior.


422 422 

423Una versión diferente de Haiku que fija como su modelo principal mantiene el almacenamiento en caché; establezca `DISABLE_PROMPT_CACHING` para desactivar el almacenamiento en caché para ella.423Una versión diferente de Haiku que fija como su modelo principal mantiene el almacenamiento en caché; establezca `DISABLE_PROMPT_CACHING` para desactivar el almacenamiento en caché para ella.

424 424 

425`DISABLE_PROMPT_CACHING_SONNET` y `DISABLE_PROMPT_CACHING_OPUS` se aplican cada una al modelo al que se resuelve el alias `sonnet` u `opus`. Si establece cualquier otro ID de modelo Sonnet u Opus como su modelo principal, ese modelo mantiene el almacenamiento en caché. Por ejemplo, una sesión en `claude-sonnet-5` mantiene el almacenamiento en caché mientras que `sonnet` se resuelve a `claude-sonnet-5-5`. Para desactivar el almacenamiento en caché para ese modelo, establezca `DISABLE_PROMPT_CACHING`.

426 

425Para establecer la política de almacenamiento en caché en toda una organización, coloque cualquiera de estas o las [variables de TTL](#cache-lifetime) en el bloque `env` de [configuración administrada](/docs/es/managed-settings). Para uso normal, deje el almacenamiento en caché habilitado.427Para establecer la política de almacenamiento en caché en toda una organización, coloque cualquiera de estas o las [variables de TTL](#cache-lifetime) en el bloque `env` de [configuración administrada](/docs/es/managed-settings). Para uso normal, deje el almacenamiento en caché habilitado.

426 428 

427<h2 id="related-resources">429<h2 id="related-resources">

Details

200 200 

201El mismo botón de alternancia aparece fuera de la CLI:201El mismo botón de alternancia aparece fuera de la CLI:

202 202 

203* **Aplicación de escritorio**: **Settings > Claude Code > Enable remote control by default**.203* **Aplicación de escritorio**: **Settings > Claude Code > Connect new sessions to Remote Control**.

204* **Extensión de VS Code**: **Enable Remote Control for all sessions** en la sección Configuración del [menú de comandos](/docs/es/vs-code#use-the-prompt-box).204* **Extensión de VS Code**: **Enable Remote Control for all sessions** en la sección Configuración del [menú de comandos](/docs/es/vs-code#use-the-prompt-box).

205 205 

206Para activar la conexión automática desde un archivo de configuración en su lugar, establezca [`remoteControlAtStartup`](/docs/es/settings-reference#remotecontrolatstartup) en `true` en su usuario `~/.claude/settings.json` o en [configuración administrada](/docs/es/managed-settings). En configuración de proyecto o local (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code honra un `false` y desactiva la conexión automática para ese repositorio, pero ignora un `true`, por lo que un archivo registrado no puede activar Remote Control para todos los que abren el repositorio.206Para activar la conexión automática desde un archivo de configuración en su lugar, establezca [`remoteControlAtStartup`](/docs/es/settings-reference#remotecontrolatstartup) en `true` en su usuario `~/.claude/settings.json` o en [configuración administrada](/docs/es/managed-settings). En configuración de proyecto o local (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code honra un `false` y desactiva la conexión automática para ese repositorio, pero ignora un `true`, por lo que un archivo registrado no puede activar Remote Control para todos los que abren el repositorio.

routines.md +16 −6

Details

66 66 

67En todos los demás casos, incluida la publicación de un nuevo artefacto, Claude pregunta primero. Cuando el trabajo de una rutina es mantener una página actual, déle un artefacto que ya haya publicado.67En todos los demás casos, incluida la publicación de un nuevo artefacto, Claude pregunta primero. Cuando el trabajo de una rutina es mantener una página actual, déle un artefacto que ya haya publicado.

68 68 

69Las rutinas pertenecen a su cuenta individual de claude.ai. No se comparten con compañeros de equipo y cuentan contra la asignación diaria de ejecuciones de su cuenta. Cualquier cosa que una rutina haga a través de su identidad de GitHub conectada o conectores aparece como usted: los commits y las solicitudes de extracción llevan su usuario de GitHub, y los mensajes de Slack, tickets de Linear u otras acciones de conectores utilizan sus cuentas vinculadas para esos servicios.69Las rutinas pertenecen a su cuenta individual de claude.ai. No se comparten con compañeros de equipo y sus ejecuciones cuentan contra los [límites y uso](#usage-and-limits) de su cuenta. Cualquier cosa que una rutina haga a través de su identidad de GitHub conectada o conectores aparece como usted: los commits y las solicitudes de extracción llevan su usuario de GitHub, y los mensajes de Slack, tickets de Linear u otras acciones de conectores utilizan sus cuentas vinculadas para esos servicios.

70 70 

71<h3 id="create-from-the-web">71<h3 id="create-from-the-web">

72 Crear desde la web72 Crear desde la web


174 174 

175La misma conversión de zona local a UTC que las programaciones recurrentes se aplica a las marcas de tiempo únicas.175La misma conversión de zona local a UTC que las programaciones recurrentes se aplica a las marcas de tiempo únicas.

176 176 

177Las ejecuciones únicas no cuentan contra el límite diario de ejecuciones de rutina. Consulte [Uso y límites](#usage-and-limits) para obtener detalles.177Las ejecuciones únicas cuentan contra el mismo límite por hora que otras ejecuciones programadas. Consulte [Uso y límites](#usage-and-limits) para obtener detalles.

178 178 

179<h3 id="add-an-api-trigger">179<h3 id="add-an-api-trigger">

180 Agregar un disparador de API180 Agregar un disparador de API


256Un disparador de GitHub inicia una nueva sesión automáticamente cuando ocurre un evento coincidente en un repositorio conectado. Claude Code no reutiliza sesiones entre eventos, por lo que dos actualizaciones de PR producen dos sesiones independientes.256Un disparador de GitHub inicia una nueva sesión automáticamente cuando ocurre un evento coincidente en un repositorio conectado. Claude Code no reutiliza sesiones entre eventos, por lo que dos actualizaciones de PR producen dos sesiones independientes.

257 257 

258<Note>258<Note>

259 Durante la vista previa de investigación, los eventos de webhook de GitHub están sujetos a límites por hora por rutina y por cuenta. Los eventos más allá del límite se descartan hasta que se reinicia la ventana. Vea sus límites actuales en [claude.ai/code/routines](https://claude.ai/code/routines).259 Los eventos de webhook de GitHub están sujetos a límites por hora por rutina y por cuenta. Los eventos más allá del límite se descartan hasta que se reinicia la ventana.

260</Note>260</Note>

261 261 

262La aplicación Claude GitHub debe estar instalada en el repositorio al que desea suscribirse, sea cual sea la superficie desde la que configure el disparador.262La aplicación Claude GitHub debe estar instalada en el repositorio al que desea suscribirse, sea cual sea la superficie desde la que configure el disparador.


421 Uso y límites421 Uso y límites

422</h2>422</h2>

423 423 

424Las rutinas reducen el uso de suscripción de la misma manera que lo hacen las sesiones interactivas. Además de los límites de suscripción estándar, las rutinas tienen un límite diario de cuántas ejecuciones pueden comenzar por cuenta. Vea su consumo actual y ejecuciones diarias de rutina restantes en [claude.ai/code/routines](https://claude.ai/code/routines) o [claude.ai/settings/usage](https://claude.ai/settings/usage).424Las rutinas reducen el uso de suscripción de la misma manera que lo hacen las sesiones interactivas. Vea su consumo actual en [claude.ai/settings/usage](https://claude.ai/settings/usage).

425 425 

426Cuando una rutina alcanza el límite diario o el límite de uso de su suscripción, las organizaciones con créditos de uso habilitados pueden continuar ejecutando rutinas en exceso medido. Sin créditos de uso, las ejecuciones adicionales se rechazan hasta que se reinicia la ventana. Habilite los créditos de uso en [claude.ai/settings/usage](https://claude.ai/settings/usage). En los planes Team y Enterprise, un administrador los habilita para la organización en [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).426Separado del uso de suscripción, cada forma de iniciar una ejecución tiene un límite por hora:

427 427 

428Las ejecuciones únicas no cuentan contra el límite diario de rutina. Reducen su uso de suscripción regular como cualquier otra sesión.428| Acción | Límite | Contado para | Más allá del límite |

429| :- | :- | :- | :- |

430| Ejecuciones programadas, incluidas ejecuciones únicas | 100 por hora | Su cuenta | La ejecución espera hasta que se reinicie el límite |

431| **Ejecutar ahora**, disparos de API y configurar una rutina única para ejecutarse de nuevo | 30 por hora | Cada rutina, un conteo compartido por los tres | La acción falla hasta que se reinicie el límite |

432| **Ejecutar ahora** y configurar una rutina única para ejecutarse de nuevo | 100 por hora | Su cuenta | Igual |

433| Disparos de API | 100 por hora | Su cuenta, contado por separado de **Ejecutar ahora** | Igual |

434| Eventos de GitHub | Vea [Agregar un disparador de GitHub](#add-a-github-trigger) | | |

435 

436Ninguno de estos límites por hora tiene exceso.

437 

438Cuando una rutina alcanza el límite de uso de su suscripción, las organizaciones con créditos de uso habilitados pueden continuar ejecutando rutinas en exceso medido. Sin créditos de uso, las ejecuciones adicionales se rechazan hasta que se reinicia su ventana de uso. Habilite los créditos de uso en [claude.ai/settings/usage](https://claude.ai/settings/usage). En los planes Team y Enterprise, un administrador los habilita para la organización en [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).

429 439 

430Mientras su suscripción está pausada, sus rutinas se ponen en espera y no se ejecutan. Una vez que su suscripción esté activa nuevamente, actívelas de nuevo.440Mientras su suscripción está pausada, sus rutinas se ponen en espera y no se ejecutan. Una vez que su suscripción esté activa nuevamente, actívelas de nuevo.

431 441 

Details

138* En la raíz del proyecto, el tiempo de ejecución niega `.git/hooks`, niega `.git/config` a menos que establezca `filesystem.allowGitConfig: true`, y niega `.mcp.json`, `.claude/commands`, `.claude/agents`, y archivos de inicio de shell.138* En la raíz del proyecto, el tiempo de ejecución niega `.git/hooks`, niega `.git/config` a menos que establezca `filesystem.allowGitConfig: true`, y niega `.mcp.json`, `.claude/commands`, `.claude/agents`, y archivos de inicio de shell.

139* En macOS, estas negaciones se verifican cuando ocurre una escritura, así que también cubren archivos anidados y repositorios creados durante la sesión.139* En macOS, estas negaciones se verifican cuando ocurre una escritura, así que también cubren archivos anidados y repositorios creados durante la sesión.

140* En Linux y WSL2, el tiempo de ejecución construye la lista de negación una vez al lanzamiento. Cubre de manera confiable la raíz del proyecto, realiza un escaneo superficial de mejor esfuerzo para copias anidadas que existen en ese momento, y no cubre nada que la sesión cree después, como `git init`, `git clone`, o scaffolding. La sección `mandatoryDenySearchDepth` del README describe la semántica exacta del escaneo.140* En Linux y WSL2, el tiempo de ejecución construye la lista de negación una vez al lanzamiento. Cubre de manera confiable la raíz del proyecto, realiza un escaneo superficial de mejor esfuerzo para copias anidadas que existen en ese momento, y no cubre nada que la sesión cree después, como `git init`, `git clone`, o scaffolding. La sección `mandatoryDenySearchDepth` del README describe la semántica exacta del escaneo.

141* Sin un `~/.srt-settings.json` válido, el tiempo de ejecución se inicia de todas formas, bloquea acceso de red, y confina escrituras a rutas de tiempo de ejecución integradas como `/tmp/claude`, `~/.npm/_logs`, y `~/.claude/debug`. No tome un inicio limpio como prueba de que su configuración se cargó.141* Si `~/.srt-settings.json` no existe y no pasa `--settings`, el tiempo de ejecución se inicia de todas formas. Bloquea acceso de red y confina escrituras a rutas de tiempo de ejecución integradas como `/tmp/claude`, `~/.npm/_logs`, y `~/.claude/debug`. No tome un inicio limpio como prueba de que su configuración se cargó.

142* Cuando pasa `--settings`, el tiempo de ejecución se niega a iniciar si el archivo falla al cargar.142* Si el archivo de configuración existe pero está vacío, es ilegible o inválido, el tiempo de ejecución se niega a iniciar, ya sea `~/.srt-settings.json` o un archivo que pase con `--settings`. También se niega a iniciar si el archivo `--settings` no existe.

143 143 

144Sus permisos de escritura aún incluyen otras rutas desde las que Claude Code carga configuración, así que niegue esas con `denyWrite`. Una sesión en sandbox que puede escribirlas puede persistir hooks, reglas de permiso, o servidores MCP que se ejecutan sin sandbox la próxima vez que lance Claude Code.144Sus permisos de escritura aún incluyen otras rutas desde las que Claude Code carga configuración, así que niegue esas con `denyWrite`. Una sesión en sandbox que puede escribirlas puede persistir hooks, reglas de permiso, o servidores MCP que se ejecutan sin sandbox la próxima vez que lance Claude Code.

145 145 

Details

48* **Retención cero de datos**: no disponible para organizaciones con [Retención cero de datos](/docs/es/zero-data-retention) habilitada.48* **Retención cero de datos**: no disponible para organizaciones con [Retención cero de datos](/docs/es/zero-data-retention) habilitada.

49* **Inferencia de modelos**: las sesiones utilizan la API de Anthropic, y la inferencia no se puede enrutar a través de [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/es/third-party-integrations), o una [puerta de enlace LLM](/docs/es/llm-gateway).49* **Inferencia de modelos**: las sesiones utilizan la API de Anthropic, y la inferencia no se puede enrutar a través de [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry](/docs/es/third-party-integrations), o una [puerta de enlace LLM](/docs/es/llm-gateway).

50* **Superficies**: sesiones iniciadas desde [claude.ai/code](https://claude.ai/code), las aplicaciones móviles y de escritorio, [rutinas programadas](/docs/es/routines), y la terminal, con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) o un [envío `--environment`](/docs/es/self-hosted-environments-testing#run-the-test-loop), pueden ejecutarse en entornos autohospedados. Las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) también pueden ejecutarse en ellas, pero Claude aún no puede usar [Paquetes de acceso](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) en esas sesiones. Las sesiones de [Claude Security](/docs/es/claude-security) y [Code Review](/docs/es/code-review) aún no se enrutan a ellas. El soporte para esas dos superficies sigue por separado.50* **Superficies**: sesiones iniciadas desde [claude.ai/code](https://claude.ai/code), las aplicaciones móviles y de escritorio, [rutinas programadas](/docs/es/routines), y la terminal, con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) o un [envío `--environment`](/docs/es/self-hosted-environments-testing#run-the-test-loop), pueden ejecutarse en entornos autohospedados. Las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) también pueden ejecutarse en ellas, pero Claude aún no puede usar [Paquetes de acceso](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle) en esas sesiones. Las sesiones de [Claude Security](/docs/es/claude-security) y [Code Review](/docs/es/code-review) aún no se enrutan a ellas. El soporte para esas dos superficies sigue por separado.

51* **Repositorios**: las sesiones clonan repositorios desde GitHub; consulte [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options).51* **Repositorios**: las sesiones clonan repositorios desde GitHub; consulte [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options). Para un host de GitHub Enterprise Server, consulte sus [requisitos de red](/docs/es/github-enterprise-server#network-requirements).

52* **Facturación**: las sesiones en un entorno autohospedado consumen el uso de Claude Code de su organización de la misma manera que las sesiones en entornos alojados por Anthropic.52* **Facturación**: las sesiones en un entorno autohospedado consumen el uso de Claude Code de su organización de la misma manera que las sesiones en entornos alojados por Anthropic.

53 53 

54<h2 id="why-self-host">54<h2 id="why-self-host">

Details

170 170 

171Si su host de git rechaza la credencial, o no configuró una, el runner reintenta algunas veces y luego falla la preparación del repositorio cuando el repositorio es el que la sesión empuja resultados a. Para un repositorio que la sesión solo lee, [Troubleshooting](#troubleshooting) cubre cuándo el runner lo omite en su lugar. El runner no pasa estas configuraciones al entorno de la sesión.171Si su host de git rechaza la credencial, o no configuró una, el runner reintenta algunas veces y luego falla la preparación del repositorio cuando el repositorio es el que la sesión empuja resultados a. Para un repositorio que la sesión solo lee, [Troubleshooting](#troubleshooting) cubre cuándo el runner lo omite en su lugar. El runner no pasa estas configuraciones al entorno de la sesión.

172 172 

173Mantenga cualquier programa que nombre en `GIT_SSH_COMMAND` o `GIT_ASKPASS` donde las sesiones no puedan escribir en él, de la manera que la [lista de verificación de endurecimiento](#harden-your-deployment) pide para el directorio de hooks y el script de envoltura. Lo mismo aplica para cualquier clave o archivo en la línea de comando de ese programa. El propio git del runner ejecuta ese programa cuando clona u obtiene.

174 

173Si los directorios de checkout son propiedad de un uid diferente al del proceso del runner, git se niega a operar en ellos; agregue `safe.directory`:175Si los directorios de checkout son propiedad de un uid diferente al del proceso del runner, git se niega a operar en ellos; agregue `safe.directory`:

174 176 

175```dockerfile theme={null}177```dockerfile theme={null}


184 186 

185El proxy requiere `--capacity 1` porque la URL del proxy es por sesión, y git 2.32 o más reciente porque git más antiguo ignora el mecanismo de configuración que el proxy usa para aislar sesiones entre sí. El runner se niega a iniciar si alguno de los requisitos no se cumple. Porque el proxy obtiene del lado de Anthropic, su host de git debe ser alcanzable desde la infraestructura de Anthropic, el mismo requisito que tienen las sesiones alojadas por Anthropic; para un host de git que solo es enrutable dentro de su red, use un [hook de ciclo de vida `checkout`](/docs/es/self-hosted-environments-configuration#checkout) en su lugar. Cada proceso de runner maneja una sesión a la vez, así que ejecute más réplicas para paralelismo. Cuando el proxy está habilitado, `--git-host-rewrite` y `--git-ssh-rewrite` no tienen efecto: la URL del proxy apunta a `api.anthropic.com`, no a su host de git.187El proxy requiere `--capacity 1` porque la URL del proxy es por sesión, y git 2.32 o más reciente porque git más antiguo ignora el mecanismo de configuración que el proxy usa para aislar sesiones entre sí. El runner se niega a iniciar si alguno de los requisitos no se cumple. Porque el proxy obtiene del lado de Anthropic, su host de git debe ser alcanzable desde la infraestructura de Anthropic, el mismo requisito que tienen las sesiones alojadas por Anthropic; para un host de git que solo es enrutable dentro de su red, use un [hook de ciclo de vida `checkout`](/docs/es/self-hosted-environments-configuration#checkout) en su lugar. Cada proceso de runner maneja una sesión a la vez, así que ejecute más réplicas para paralelismo. Cuando el proxy está habilitado, `--git-host-rewrite` y `--git-ssh-rewrite` no tienen efecto: la URL del proxy apunta a `api.anthropic.com`, no a su host de git.

186 188 

189<Warning>

190 Las [recetas de Kubernetes](#kubernetes) y [Docker Compose](#docker-compose) en esta página usan `--capacity 4`. Si agrega `--use-anthropic-git-proxy` o `CLAUDE_RUNNER_USE_GIT_PROXY=1` a una de ellas sin cambiar la capacidad a `1`, el runner sale al inicio cada vez que su orquestador lo reinicia. Establezca `--capacity 1` y ejecute más réplicas para paralelismo. [Cuando el runner sale](#when-the-runner-exits) muestra la línea que imprime el runner.

191</Warning>

192 

187El runner también reporta la opción de participación a Anthropic cuando se registra, imprimiendo `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` al inicio. Reportar la opción de participación requiere Claude Code v2.1.267 o posterior, y versiones anteriores aceptan la bandera sin reportarla o imprimir esa línea. Cada sesión en un runner que ha optado por participar luego usa git gestionado por Anthropic o la URL del proxy por sesión. Cuando una sesión usa la URL del proxy por sesión, el runner registra una línea `[runner:warn]` diciendo así.193El runner también reporta la opción de participación a Anthropic cuando se registra, imprimiendo `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` al inicio. Reportar la opción de participación requiere Claude Code v2.1.267 o posterior, y versiones anteriores aceptan la bandera sin reportarla o imprimir esa línea. Cada sesión en un runner que ha optado por participar luego usa git gestionado por Anthropic o la URL del proxy por sesión. Cuando una sesión usa la URL del proxy por sesión, el runner registra una línea `[runner:warn]` diciendo así.

188 194 

195<h4 id="trust-a-private-certificate-authority-with-anthropic-managed-git">

196 Confíe en una autoridad de certificados privada con git gestionado por Anthropic

197</h4>

198 

199Esta sección aplica si establece `GIT_SSL_CAINFO` o `GIT_SSL_NO_VERIFY` en el entorno de un runner cuyas sesiones usan git gestionado por Anthropic. El manejo que describe requiere que el runner ejecute Claude Code v2.1.283 o posterior.

200 

201Cuando git en el runner debe confiar en una autoridad de certificados privada (CA), como la que firma un proxy de inspección TLS, los enfoques habituales funcionan de la siguiente manera:

202 

203* **Almacén de certificados del sistema**: instale su CA en el almacén de certificados del sistema del host del runner, y git confía en él sin ninguna variable.

204* **`GIT_SSL_CAINFO`**: establézcalo en un archivo PEM de sus CAs, por ejemplo `GIT_SSL_CAINFO=/etc/ssl/corp-ca.pem`.

205* **`GIT_SSL_NO_VERIFY`**: no ayuda detrás de un proxy de re-firma. El clon propio del runner a través de git gestionado por Anthropic verifica certificados incluso cuando la variable está establecida, así que ese clon falla hasta que git confía en su CA a través de uno de los otros dos enfoques.

206 

207Para conexiones de git que llevan el token de una sesión a git gestionado por Anthropic, el runner aplica las dos variables de la siguiente manera. Un [hook `command`](/docs/es/self-hosted-environments-configuration#command) comienza con el entorno de la sesión, así que obtiene lo que git dentro de la sesión obtiene:

208 

209* **`GIT_SSL_CAINFO`**: lo que git verifica contra git gestionado por Anthropic depende de dónde se ejecute git:

210 * **Clon y obtenciones propios del runner**: se ejecutan sin la variable y verifican git gestionado por Anthropic contra un archivo de certificado por sesión que el runner escribe. Ese archivo contiene el paquete de CA del sistema del host del runner más los certificados de su archivo.

211 * **Git dentro de la sesión**: obtiene configuración `http.sslCAInfo` nombrando su archivo en lugar de la variable, más entradas `http.<url>.sslCAInfo` que verifican git gestionado por Anthropic contra el archivo por sesión.

212 * **Hooks `checkout` y `post-session`**: heredan la variable sin cambios.

213* **`GIT_SSL_NO_VERIFY`**: qué verificaciones de certificado permanecen desactivadas depende de dónde se ejecute git:

214 * **Clon y obtenciones propios del runner**: se ejecutan sin la variable y verifican el certificado que se les presenta.

215 * **Git dentro de la sesión**: obtiene configuración `http.sslVerify=false` en lugar de la variable, así que las verificaciones permanecen desactivadas para otros hosts. También obtiene entradas `http.<url>.sslVerify=true` que mantienen las verificaciones activadas para git gestionado por Anthropic.

216 * **Hooks `checkout` y `post-session`**: cuando la sesión tiene un repositorio en git gestionado por Anthropic, obtienen configuración `http.sslVerify=false` en lugar de la variable. También obtienen entradas `http.<url>.sslVerify=true` que mantienen las verificaciones activadas para git gestionado por Anthropic.

217 

218El archivo de certificado por sesión necesita un paquete de CA del sistema en `/etc/ssl/certs/ca-certificates.crt` o `/etc/pki/tls/certs/ca-bundle.crt` en el host del runner. También necesita un archivo `GIT_SSL_CAINFO` que el usuario del runner pueda leer, que contenga bloques `CERTIFICATE` PEM, y que tenga como máximo 1 MiB. Cuando el runner no puede construir el archivo por sesión, registra una línea `[runner:warn]` que contiene `did not build the certificate file` y la razón. Git luego usa su archivo tal como es para git gestionado por Anthropic. Corrija lo que la línea nombra.

219 

220Para cada sesión que usa git gestionado por Anthropic, el runner también registra una línea `[runner:warn]` que comienza con `governed git: GIT_SSL_CAINFO is set` o `governed git: GIT_SSL_NO_VERIFY is set`. La línea dice qué hizo el runner con esa variable para su propio git, para git dentro de la sesión, y para sus hooks de ciclo de vida. Termina con si necesita cambiar algo.

221 

189<h3 id="rewrite-git-urls-for-private-networks">222<h3 id="rewrite-git-urls-for-private-networks">

190 Reescriba URLs de git para redes privadas223 Reescriba URLs de git para redes privadas

191</h3>224</h3>


203 236 

204Anthropic no publica una imagen de runner precompilada. Construya la suya alrededor del binario `claude`, agregando cualquier cadena de herramientas que sus repositorios necesiten: tiempos de ejecución de lenguaje, compiladores, gestores de paquetes, y sidecars de [MCP](/docs/es/mcp).237Anthropic no publica una imagen de runner precompilada. Construya la suya alrededor del binario `claude`, agregando cualquier cadena de herramientas que sus repositorios necesiten: tiempos de ejecución de lenguaje, compiladores, gestores de paquetes, y sidecars de [MCP](/docs/es/mcp).

205 238 

206Las recetas a continuación usan `--capacity 4`, por lo que un contenedor sirve hasta cuatro sesiones concurrentes del mismo propietario bloqueado. Eso no proporciona el aislamiento del contenedor por sesión en la [sección de endurecimiento](#harden-your-deployment): antes de conectar un entorno a sistemas de producción, ejecute las recetas en `--capacity 1` con un contenedor por sesión, o use [runners bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners), que también mantienen el secreto del entorno fuera de los hosts que ejecutan sesiones.239Las recetas a continuación usan `--capacity 4`, por lo que un contenedor sirve hasta cuatro sesiones concurrentes del mismo propietario bloqueado. Eso no proporciona el aislamiento del contenedor por sesión en la [sección de endurecimiento](#harden-your-deployment): antes de conectar un entorno a sistemas de producción, ejecute las recetas en `--capacity 1` con un contenedor por sesión, o use [runners bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners), que también mantienen el secreto del entorno fuera de los hosts que ejecutan sesiones. Si agrega el [proxy de git de Anthropic](#use-the-anthropic-git-proxy) a una de estas recetas, también cambie `--capacity` a `1`.

207 240 

208Este Dockerfile es un punto de partida mínimo:241Este Dockerfile es un punto de partida mínimo:

209 242 


338 371 

339El servicio Compose a continuación reinicia el runner siempre que sale, lo que cubre tanto bloqueos como la salida normal después del drenaje. Una política de reinicio de Docker reinicia el mismo contenedor con su capa escribible intacta, por lo que el runner regresa en un sistema de archivos reutilizado en lugar del nuevo que la [postura de endurecimiento](#harden-your-deployment) recomienda; use esta receta para evaluación, y para producción recrear el contenedor por ejecución o use un orquestador que lo haga.372El servicio Compose a continuación reinicia el runner siempre que sale, lo que cubre tanto bloqueos como la salida normal después del drenaje. Una política de reinicio de Docker reinicia el mismo contenedor con su capa escribible intacta, por lo que el runner regresa en un sistema de archivos reutilizado en lugar del nuevo que la [postura de endurecimiento](#harden-your-deployment) recomienda; use esta receta para evaluación, y para producción recrear el contenedor por ejecución o use un orquestador que lo haga.

340 373 

374Docker espera más tiempo antes de cada reinicio de un contenedor que sigue saliendo, hasta un límite máximo, por lo que un runner que no puede iniciarse no sigue reiniciándose en un bucle cerrado bajo esta receta. [Cuando el runner sale](#when-the-runner-exits) describe qué verificar cuando eso sucede.

375 

341```yaml theme={null}376```yaml theme={null}

342services:377services:

343 claude-runner:378 claude-runner:


451 486 

452El proceso hijo de Claude Code de cada sesión ejecuta el binario propio del runner, y el runner desactiva la actualización automática dentro de las sesiones que genera, por lo que cada sesión ejecuta la versión que instaló en el host o construyó en la imagen. Una actualización a nivel de host entra en vigor la próxima vez que el runner comienza.487El proceso hijo de Claude Code de cada sesión ejecuta el binario propio del runner, y el runner desactiva la actualización automática dentro de las sesiones que genera, por lo que cada sesión ejecuta la versión que instaló en el host o construyó en la imagen. Una actualización a nivel de host entra en vigor la próxima vez que el runner comienza.

453 488 

489Un modelo que sus sesiones utilizan puede requerir una versión más reciente de Claude Code que la que ejecutan. El servidor rechaza las solicitudes para ese modelo con [Claude Code no admite este modelo](/docs/es/errors#claude-code-does-not-support-this-model). Antes de fijar una versión, compruebe [las versiones de Claude Code que los modelos requieren](/docs/es/model-config#available-models) para cada modelo que sus sesiones utilizan.

490 

454* **Para mantener una flota en una versión**: construya la imagen con una versión fijada, o en un host desnudo instale una versión específica y [desactive las actualizaciones automáticas](/docs/es/setup#disable-auto-updates)491* **Para mantener una flota en una versión**: construya la imagen con una versión fijada, o en un host desnudo instale una versión específica y [desactive las actualizaciones automáticas](/docs/es/setup#disable-auto-updates)

455* **Para actualizar**: instale la versión más reciente o reconstruya la imagen, luego reinicie los runners492* **Para actualizar**: instale la versión más reciente o reconstruya la imagen, luego reinicie los runners

456* **Plugins**: los mercados de plugins tampoco se actualizan automáticamente; establezca `FORCE_AUTOUPDATE_PLUGINS=1` en el entorno del runner para permitir que los plugins se actualicen automáticamente mientras el binario permanece fijado493* **Plugins**: los mercados de plugins tampoco se actualizan automáticamente; establezca `FORCE_AUTOUPDATE_PLUGINS=1` en el entorno del runner para permitir que los plugins se actualicen automáticamente mientras el binario permanece fijado


554 591 

555Cada proceso secundario de sesión escribe un registro de depuración separado. En caso de fallo, el runner expone la cola del registro junto con la sesión en claude.ai/code. A menos que haya iniciado el runner con [`--remove-session-state`](/docs/es/self-hosted-environments-reference#runner-cli-flags), también mantiene el registro de una sesión fallida en el disco e imprime su ruta en el registro del runner.592Cada proceso secundario de sesión escribe un registro de depuración separado. En caso de fallo, el runner expone la cola del registro junto con la sesión en claude.ai/code. A menos que haya iniciado el runner con [`--remove-session-state`](/docs/es/self-hosted-environments-reference#runner-cli-flags), también mantiene el registro de una sesión fallida en el disco e imprime su ruta en el registro del runner.

556 593 

594<h3 id="when-the-runner-exits">

595 Cuando el runner se cierra

596</h3>

597 

598No reinicie un [runner bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners), porque su orden de trabajo es de un solo uso. Un runner que se cierra justo después de que comienza necesita un manejo diferente al de uno que se cierra por cualquier otra razón.

599 

600* **Una salida normal**: el runner terminó sus sesiones y se drenó, alcanzó su tiempo de jubilación, o se le indicó que se detuviera. Reinícielo para que el entorno tenga capacidad nuevamente. [Runner lifecycle](/docs/es/self-hosted-environments#runner-lifecycle) describe estas salidas.

601* **Un inicio fallido**: el runner no puede iniciarse con la configuración o el host que se le proporcionó, por lo que se cierra segundos después de que comienza, y se cierra de la misma manera cada vez que lo reinicia. Reiniciarlo más rápido no ayuda. Alguien necesita leer su salida y corregir la causa.

602 

603Configure su supervisor para reiniciar el runner cada vez que se cierre, para esperar más tiempo entre reinicios cuando el runner sigue cerrándose justo después de que comienza, y para notificar a alguien cuando eso sigue sucediendo.

604 

605<h4 id="recognize-a-failed-start">

606 Reconocer un inicio fallido

607</h4>

608 

609Cuando el runner no puede iniciarse, imprime una línea que dice por qué, y luego se cierra. Para la mayoría de las causas, la línea contiene `[runner:fatal]`. Para algunas causas, la línea comienza con `error:` en su lugar, incluido cuando el runner no puede analizar sus banderas, no puede leer el secreto del entorno, o no puede crear ni escribir en el directorio base. La siguiente línea luego apunta a `--help`.

610 

611La mayoría de las líneas de registro comienzan con una marca de tiempo y `[self-hosted-runner]`, que la muestra a continuación omite. Por ejemplo, un runner iniciado con el proxy de git de Anthropic y una capacidad superior a uno imprime una línea como esta:

612 

613```text theme={null}

614[runner:fatal] --use-anthropic-git-proxy requires --capacity 1 (the proxy URL is per-session and linked worktrees share origin). Omit --use-anthropic-git-proxy or set --capacity 1.

615```

616 

617Busque la línea en la salida estándar y el error estándar del runner, en los registros del contenedor de su plataforma, o en el archivo que estableció con [`--log-file`](/docs/es/self-hosted-environments-reference#runner-cli-flags). El runner imprime una línea `error:` antes de abrir el archivo de registro, así que búsquela en la terminal o en los registros del contenedor, como [Solución de problemas](#troubleshooting) señala.

618 

619Estos también ayudan cuando lee un inicio fallido:

620 

621* **Sin línea en absoluto**: un runner que el host mata no imprime ninguno. Si la salida termina sin línea `[runner:fatal]` y sin línea `error:`, verifique si el host u su orquestador detuvo el proceso, por ejemplo por exceder un límite de memoria.

622* **El código de salida**: el runner no reserva un código de salida para errores que se repiten en cada inicio. Se cierra con el mismo código para un error de configuración, como una combinación no compatible de banderas, y para una falla que puede aclararse por sí sola, como que la API permanezca inalcanzable a través de los propios reintentos del runner. Base la decisión de esperar más tiempo en qué tan pronto se cerró el runner, y lea la salida del runner para aprender por qué.

623* **Un entorno que se ve saludable**: algunos pasos de inicio se ejecutan después de que el runner se registra con su entorno, como [`--configure-git`](#let-the-runner-configure-git) y la configuración de credenciales del proxy de git de Anthropic. Si uno de esos pasos falla, el entorno puede seguir listando ese runner durante algunos minutos después de que el proceso haya salido, y la página **Cloud environments** puede leer **Healthy** mientras ningún runner está recogiendo trabajo. Si las sesiones permanecen en cola en un entorno que se ve saludable, verifique si su supervisor está reiniciando el runner.

624 

625<h4 id="restart-with-a-wait-that-grows">

626 Reiniciar con una espera que crece

627</h4>

628 

629Cómo obtener una espera creciente depende de su supervisor.

630 

631* **Kubernetes**: el [Deployment](#kubernetes) en esta página no necesita cambios. Después de que un contenedor se cierra, el kubelet por defecto espera antes de reiniciar el contenedor, y la espera crece en cada reinicio hasta un techo. La espera comienza de nuevo una vez que el contenedor ha estado ejecutándose durante un tiempo sin cerrarse.

632 

633 El kubelet aplica la misma espera después de una salida normal cuando el contenedor se ejecutó solo brevemente. Un runner que se drena a menudo puede por lo tanto mostrar el estado `CrashLoopBackOff` también, así que lea la salida antes de concluir que el runner no puede iniciarse. El comando a continuación lee la salida de la última ejecución de un pod del Deployment:

634 

635 ```bash theme={null}

636 kubectl logs --previous -n claude-runners deploy/claude-runner

637 ```

638 

639 Cuando la última ejecución fue un inicio fallido, la línea `[runner:fatal]` o `error:` está entre las últimas líneas de la salida. Para leer la última ejecución de otro pod, nombre ese pod en lugar de `deploy/claude-runner`.

640* **Docker y Docker Compose**: la [receta Compose](#docker-compose) en esta página no necesita cambios. Con `restart: always`, Docker espera más tiempo antes de cada reinicio de un contenedor que sigue cerrándose, hasta un techo. Reemplace `<container>` con el nombre del contenedor en el comando a continuación, que lee cuántas veces Docker ha reiniciado el contenedor:

641 

642 ```bash theme={null}

643 docker inspect --format '{{.RestartCount}}' <container>

644 ```

645 

646 El comando imprime un número. Un número que sigue aumentando significa que Docker sigue reiniciando el runner.

647* **Una unidad systemd**: por defecto systemd espera el mismo `RestartSec` antes de cada reinicio y no lo alarga, así que una unidad con `Restart=always` reinicia un runner que no puede iniciarse en ese mismo intervalo cada vez. Cuando los inicios vienen lo suficientemente rápido como para alcanzar el límite de velocidad de inicio de la unidad, cinco inicios en 10 segundos por defecto, systemd deja de reiniciar la unidad. La unidad permanece detenida hasta que alguien la inicie de nuevo, lo que systemd permite una vez que el intervalo del límite de velocidad ha pasado o después de `systemctl reset-failed`. Porque `RestartSec` se aplica a cada reinicio, un valor más largo también retrasa el reinicio después de una salida normal. Elija un valor que equilibre los dos, y alerte sobre el recuento de reinicio de la unidad.

648* **Un bucle de shell o su propio supervisor**: aplique la misma regla usted mismo. Comience con una espera de cinco segundos. Después de cada ejecución que terminó dentro de un minuto, duplique la espera para el siguiente reinicio, hasta cinco minutos. Después de una ejecución que duró un minuto o más, vuelva a cinco segundos.

649 

650<h4 id="check-why-the-runner-keeps-exiting">

651 Verificar por qué el runner sigue cerrándose

652</h4>

653 

654Cuando el runner ha salido justo después de comenzar varias veces seguidas, deténgase y verifique estos antes de reiniciarlo de nuevo.

655 

656* **La última línea `[runner:fatal]` o `error:`**: dice por qué se detuvo el runner. [Solución de problemas](#troubleshooting) enumera las causas comunes.

657* **La combinación de banderas**: el [proxy de git de Anthropic](#use-the-anthropic-git-proxy) requiere `--capacity 1`. Las recetas en esta página usan una capacidad más alta, así que bájela cuando agregue el proxy a una de ellas.

658* **Lo que el servicio de su entorno puede alcanzar**: si el runner comienza a mano y falla bajo su supervisor, compare el usuario, el directorio de inicio, el `PATH`, y el límite de memoria. `--configure-git` y el proxy de git de Anthropic necesitan git en el `PATH` y un `~/.gitconfig` escribible.

659* **El secreto del entorno**: si revocó el secreto o lo escribió mal, el runner imprime una línea que contiene `RegisterRunner auth failed`.

660* **La pestaña Activity del entorno**: abra el entorno y seleccione **Activity**. Si nuevos runners siguen apareciendo allí y ninguno recoge trabajo, su supervisor está reiniciando el runner.

661 

662Para un diagnóstico guiado en el host del runner, ejecute el [subcomando doctor](#troubleshooting).

663 

557<h2 id="what’s-next">664<h2 id="what’s-next">

558 Qué sigue665 Qué sigue

559</h2>666</h2>

Details

105 </Step>105 </Step>

106</Steps>106</Steps>

107 107 

108El runner sale por diseño una vez que sus sesiones activas terminan; consulte [Runner lifecycle](/docs/es/self-hosted-environments#runner-lifecycle). Para producción, implántelo bajo un orquestador que lo reinicie al salir. Consulte [Implementar en producción](/docs/es/self-hosted-environments-deploy).108El runner sale por diseño una vez que sus sesiones activas terminan; consulte [Runner lifecycle](/docs/es/self-hosted-environments#runner-lifecycle). Para producción, implántelo bajo un orquestador que lo reinicie al salir y espere más tiempo entre reinicios cuando el runner siga saliendo justo después de que inicia. Consulte [Implementar en producción](/docs/es/self-hosted-environments-deploy) y [Cuando el runner sale](/docs/es/self-hosted-environments-deploy#when-the-runner-exits).

109 109 

110<h2 id="send-a-follow-up-message-to-a-running-session">110<h2 id="send-a-follow-up-message-to-a-running-session">

111 Enviar un mensaje de seguimiento a una sesión en ejecución111 Enviar un mensaje de seguimiento a una sesión en ejecución

Details

63* **Variable de entorno**: el runner fija el valor al techo del temporizador en lugar de rechazarlo.63* **Variable de entorno**: el runner fija el valor al techo del temporizador en lugar de rechazarlo.

64 64 

65<h2 id="orchestrator-cli-flags">65<h2 id="orchestrator-cli-flags">

66 Flags CLI del orquestador66 Banderas de CLI del Orchestrator

67</h2>67</h2>

68 68 

69El subcomando `self-hosted-runner orchestrator`, que genera [runners bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners), acepta `--api-url`, `--environment-secret-file`, `--hooks-dir`, `--health-port`, y `--log-level` con los mismos valores predeterminados que el runner y, donde el flag del runner tiene uno, la misma variable de entorno, excepto que `--hooks-dir` es requerido y debe contener un hook `spawn-runner`. También toma sus propios flags:69El subcomando `self-hosted-runner orchestrator`, que genera [runners bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners), acepta `--api-url`, `--environment-secret-file`, `--hooks-dir`, `--health-port` y `--log-level` con los mismos valores predeterminados que el runner y, donde la bandera del runner tiene uno, la misma variable de entorno, excepto que `--hooks-dir` es obligatorio y debe contener un hook `spawn-runner`. También toma sus propias banderas:

70 70 

71| Flag | Default | Description |71| Bandera | Predeterminado | Descripción |

72| :- | :- | :- |72| :- | :- | :- |

73| `--hook-concurrency <n>` | `4` | Máximo de hooks `spawn-runner` ejecutándose en paralelo. También limita cuántas solicitudes de generación se reclaman por sondeo. |73| `--hook-concurrency <n>` | `4` | Máximo de hooks `spawn-runner` ejecutándose en paralelo. También limita cuántas solicitudes de generación se reclaman por sondeo. |

74| `--hook-timeout <sec>` | `60` | Termine el árbol de procesos del hook después de estos muchos segundos. El timeout más su gracia de muerte de 5 segundos debe mantenerse por debajo de `--expected-spawn-seconds`; el orquestador lo aplica al iniciar. |74| `--hook-timeout <sec>` | `60` | Terminar el árbol de procesos del hook después de este número de segundos. El tiempo de espera más su período de gracia de 5 segundos debe mantenerse por debajo de `--expected-spawn-seconds`; el orchestrator lo aplica al inicio. |

75| `--expected-spawn-seconds <sec>` | `120` | Tiempo de arranque p99 esperado para runners generados, en el rango aplicado por el servidor de 10 a 3600. Enviado en cada sondeo como el arrendamiento del lado del servidor; si ningún runner se registra antes de que transcurra, la sesión se re-ofrece con un ID de orden nuevo. Todas las réplicas deben compartir este valor. |75| `--expected-spawn-seconds <sec>` | `120` | Tiempo de arranque esperado p99 para runners generados, en el rango aplicado por el servidor de 10 a 3600. Se envía en cada sondeo como el arrendamiento del lado del servidor; si ningún runner se registra antes de que transcurra, la sesión se vuelve a ofrecer con un ID de orden nuevo. Todas las réplicas deben compartir este valor. |

76| `--min-idle <n>` | `0` | Mantenga al menos N slots de sesión inactivos libres generando runners de espera de forma proactiva. `0` desactiva el precalentamiento. Empareje con el `--exit-if-unused-min` del runner para que los runners de espera excedentes se reclamen a sí mismos. |76| `--min-idle <n>` | `0` | Mantener al menos N espacios de sesión inactivos libres generando runners en espera de forma proactiva. `0` desactiva el precalentamiento. Emparejar con `--exit-if-unused-min` del runner para que los runners en espera excedentes se reclamen a sí mismos. |

77| `--debug-dir <path>` | unset | Escriba la orden de trabajo y stderr del hook de cada solicitud de generación en disco. Solo depuración; nunca establezca en producción. |77| `--debug-dir <path>` | sin establecer | Escribir la orden de trabajo de cada solicitud de generación y stderr del hook en el disco. Solo para depuración; nunca establecer en producción. |

78 78 

79<h3 id="scm-connector-flags">79<h3 id="scm-connector-flags">

80 Flags del conector SCM80 Banderas del conector SCM

81</h3>81</h3>

82 82 

83El orquestador puede mantener una conexión WebSocket permanente al plano de control de Anthropic para que los flujos previos a la sesión alojados, como el selector de repositorio y el resolutor de rama o ref, puedan alcanzar un host de GitHub Enterprise Server que solo es enrutable desde dentro de su red. El conector permanece apagado a menos que establezca `--scm-connector-host`.83El conector SCM no está disponible, así que deje las banderas en esta sección sin establecer. Si establece `--scm-connector-host`, la conexión no se abre y el orchestrator sigue reintentando. Los runners aún se inician a medida que las sesiones se encolan.

84 84 

85| Flag | Default | Description |85El conector es una conexión WebSocket permanente desde el orchestrator al plano de control de Anthropic. Está diseñado para permitir que los flujos previos a la sesión alojados, como el selector de repositorio y el resolutor de rama o ref, lleguen a un host de GitHub Enterprise Server que solo es enrutable desde dentro de su red. Consulte [Requisitos de red](/docs/es/github-enterprise-server#network-requirements) en la página de GitHub Enterprise Server para ver lo que esos flujos necesitan.

86 

87| Bandera | Predeterminado | Descripción |

86| :- | :- | :- |88| :- | :- | :- |

87| `--scm-connector-host <host[:port]>` | unset | Nombre de host de GitHub Enterprise Server para reenviar solicitudes. El puerto predeterminado es `443`. Establecer este flag habilita el conector. |89| `--scm-connector-host <host[:port]>` | sin establecer | Nombre de host de GitHub Enterprise Server al que reenviar solicitudes. El puerto predeterminado es `443`. |

88| `--scm-connector-id <n>` | required with `--scm-connector-host` | El ID numérico de la conexión de GitHub Enterprise Server de su organización. Póngase en contacto con su equipo de cuenta de Anthropic para el valor cuando habilite el conector. |90| `--scm-connector-id <n>` | requerido con `--scm-connector-host` | El ID numérico de la conexión de GitHub Enterprise Server de su organización. |

89| `--scm-connector-provider <slug>` | `ghe` | Segmento de ruta que identifica el proveedor, coincidiendo con `^[a-z0-9-]{1,32}$`. |91| `--scm-connector-provider <slug>` | `ghe` | Segmento de ruta que identifica el proveedor, coincidiendo con `^[a-z0-9-]{1,32}$`. |

90| `--scm-connector-ca-file <path>` | unset | Paquete de CA adicional, en formato PEM, para conexiones TLS al host de GitHub Enterprise Server. |92| `--scm-connector-ca-file <path>` | sin establecer | Paquete de CA adicional, en formato PEM, para conexiones TLS al host de GitHub Enterprise Server. |

91| `--scm-connector-host-rewrite <from>=<to_host:to_port>` | unset | Solo para pruebas de extremo a extremo: redirige la conexión TCP mientras mantiene el encabezado Host y TLS SNI como `--scm-connector-host`. |93| `--scm-connector-host-rewrite <from>=<to_host:to_port>` | sin establecer | Solo para pruebas de extremo a extremo: redirige la conexión TCP mientras mantiene el encabezado Host y TLS SNI como `--scm-connector-host`. |

92 94 

93El conector se autentica con el secreto del entorno existente del orquestador y se reconecta automáticamente: con retroceso exponencial en una conexión caída, o un retraso fijo de 30 segundos cuando el plano de control cierra la conexión porque otra réplica del orquestador ya la sostiene.95En cada intento de conexión, el orchestrator envía su secreto de entorno existente, y reintenta automáticamente con retroceso exponencial, limitado a 30 segundos más jitter.

94 96 

95<h2 id="environment-variable-only-settings">97<h2 id="environment-variable-only-settings">

96 Configuración solo de variables de entorno98 Configuración solo de variables de entorno

Details

310* **Una sesión interactiva que no puede mostrar el diálogo**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. El diálogo aparece en la siguiente sesión que puede mostrarlo. Requiere Claude Code v2.1.211 o posterior.310* **Una sesión interactiva que no puede mostrar el diálogo**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. El diálogo aparece en la siguiente sesión que puede mostrarlo. Requiere Claude Code v2.1.211 o posterior.

311* **`claude install` o `claude update`**: Claude Code no muestra el diálogo durante ninguno de los comandos. El comando se ejecuta con la última configuración aprobada, y el diálogo aparece en su siguiente sesión interactiva. Si Claude Code espera la búsqueda de configuración al inicio, como con [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) establecido o en una implementación de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway), muestra el diálogo durante el comando en su lugar, y una ejecución de instalación desde una tubería falla; consulte [`Raw mode is not supported` durante la instalación](/docs/es/troubleshoot-install#raw-mode-is-not-supported-during-install). Antes de v2.1.246, Claude Code intentaba mostrar el diálogo durante estos comandos también.311* **`claude install` o `claude update`**: Claude Code no muestra el diálogo durante ninguno de los comandos. El comando se ejecuta con la última configuración aprobada, y el diálogo aparece en su siguiente sesión interactiva. Si Claude Code espera la búsqueda de configuración al inicio, como con [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) establecido o en una implementación de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway), muestra el diálogo durante el comando en su lugar, y una ejecución de instalación desde una tubería falla; consulte [`Raw mode is not supported` durante la instalación](/docs/es/troubleshoot-install#raw-mode-is-not-supported-during-install). Antes de v2.1.246, Claude Code intentaba mostrar el diálogo durante estos comandos también.

312* **Un error cierra el diálogo antes de que responda**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. Lo muestra nuevamente en la siguiente sesión que puede mostrarlo.312* **Un error cierra el diálogo antes de que responda**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. Lo muestra nuevamente en la siguiente sesión que puede mostrarlo.

313* **Una ejecución no interactiva**, como `claude -p` o una sesión del SDK del Agente: Claude Code no puede mostrar el diálogo, por lo que cuando la configuración entregada requeriría aprobación, la aplica solo para esa ejecución. No la registra como aprobada ni la escribe en el [caché local](#fetch-and-caching-behavior), y la siguiente sesión interactiva muestra el diálogo. Hasta que un usuario apruebe en una sesión interactiva, cada ejecución no interactiva obtiene la configuración nuevamente al inicio. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada, por lo que las sesiones interactivas posteriores nunca mostraban el diálogo para ellas.313* **Una ejecución no interactiva**, como `claude -p`, una sesión del SDK del Agente, o una sesión en el panel de chat de la extensión VS Code o la pestaña Code de la aplicación de escritorio: Claude Code no puede mostrar el diálogo, por lo que cuando la configuración entregada requeriría aprobación, la aplica solo para esa ejecución. No la registra como aprobada ni la escribe en el [caché local](#fetch-and-caching-behavior), y la siguiente sesión interactiva muestra el diálogo. Hasta que un usuario apruebe en una sesión interactiva, cada ejecución no interactiva obtiene la configuración nuevamente al inicio. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada, por lo que las sesiones interactivas posteriores nunca mostraban el diálogo para ellas.

314 314 

315<h4 id="environment-variables-and-the-approval-dialog">315<h4 id="environment-variables-and-the-approval-dialog">

316 Variables de entorno y el diálogo de aprobación316 Variables de entorno y el diálogo de aprobación

Details

595| [`agent`](#agent) | Inicie cada sesión como un [subagente](/docs/es/sub-agents) nombrado con su prompt, herramientas y modelo | Agentes, sesiones y worktrees | Any file |595| [`agent`](#agent) | Inicie cada sesión como un [subagente](/docs/es/sub-agents) nombrado con su prompt, herramientas y modelo | Agentes, sesiones y worktrees | Any file |

596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Permita que Claude envíe una [notificación push a su teléfono](/docs/es/remote-control#mobile-push-notifications) cuando decida hacerlo | Remoto, escritorio y notificaciones | Any file |596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Permita que Claude envíe una [notificación push a su teléfono](/docs/es/remote-control#mobile-push-notifications) cuando decida hacerlo | Remoto, escritorio y notificaciones | Any file |

597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Cargue los [conectores de claude.ai](/docs/es/mcp) que Claude Code obtiene por sí mismo junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Cargue los [conectores de claude.ai](/docs/es/mcp) que Claude Code obtiene por sí mismo junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |

598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Permita que el servidor [Claude en Chrome](/docs/es/chrome) integrado se ejecute junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |

598| [`allowedChannelPlugins`](#allowedchannelplugins) | Reemplace la lista de permitidos predeterminada de [plugins de canal](/docs/es/channels#restrict-which-channel-plugins-can-run) que pueden enviar mensajes | Plugins y skills | Managed |599| [`allowedChannelPlugins`](#allowedchannelplugins) | Reemplace la lista de permitidos predeterminada de [plugins de canal](/docs/es/channels#restrict-which-channel-plugins-can-run) que pueden enviar mensajes | Plugins y skills | Managed |

599| [`allowedHttpHookUrls`](#allowedhttphookurls) | Limite qué URLs pueden dirigirse a los [hooks HTTP](/docs/es/hooks) | Hooks y automatización | Any file |600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Limite qué URLs pueden dirigirse a los [hooks HTTP](/docs/es/hooks) | Hooks y automatización | Any file |

600| [`allowedMcpServers`](#allowedmcpservers) | Lista de permitidos de qué [servidores MCP](/docs/es/mcp) pueden agregar los usuarios | MCP | Any file |601| [`allowedMcpServers`](#allowedmcpservers) | Lista de permitidos de qué [servidores MCP](/docs/es/mcp) pueden agregar los usuarios | MCP | Any file |


1744 * `"default"`: Claude Code ejecuta solo lecturas sin preguntar1745 * `"default"`: Claude Code ejecuta solo lecturas sin preguntar

1745 * `"acceptEdits"`: Claude Code también ejecuta ediciones de archivos y comandos comunes del sistema de archivos como `mkdir` y `mv` sin preguntar1746 * `"acceptEdits"`: Claude Code también ejecuta ediciones de archivos y comandos comunes del sistema de archivos como `mkdir` y `mv` sin preguntar

1746 * `"plan"`: Claude Code lee y planifica pero bloquea ediciones hasta que apruebe un plan1747 * `"plan"`: Claude Code lee y planifica pero bloquea ediciones hasta que apruebe un plan

1747 * `"auto"`: Claude Code ejecuta todo, con verificaciones de seguridad en segundo plano1748 * `"auto"`: Claude Code ejecuta sin avisos rutinarios; antes de que se ejecuten acciones como comandos shell y solicitudes de red, un clasificador en segundo plano verifica que se alineen con su solicitud

1748 * `"dontAsk"`: Claude Code auto-deniega cada llamada que de otro modo solicitaría confirmación; las lecturas, otras acciones que no necesitan aprobación y herramientas pre-aprobadas aún se ejecutan1749 * `"dontAsk"`: Claude Code auto-deniega cada llamada que de otro modo solicitaría confirmación; las lecturas, otras acciones que no necesitan aprobación y herramientas pre-aprobadas aún se ejecutan

1749 * `"bypassPermissions"`: Claude Code ejecuta todo sin preguntar1750 * `"bypassPermissions"`: Claude Code ejecuta todo sin preguntar

1750 * `"manual"`: un alias para `"default"`, en Claude Code v2.1.200 o posterior1751 * `"manual"`: un alias para `"default"`, en Claude Code v2.1.200 o posterior


3064</h4>3065</h4>

3065 3066 

3066* Un valor aquí sobrescribe la misma variable exportada en su shell, y cuando más de un archivo de configuración establece una variable, se aplica la [más alta precedencia](/docs/es/settings#settings-precedence). [Variables que Claude Code ignora en `env`](#variables-claude-code-ignores-in-env) enumera las excepciones para la configuración del proyecto y local.3067* Un valor aquí sobrescribe la misma variable exportada en su shell, y cuando más de un archivo de configuración establece una variable, se aplica la [más alta precedencia](/docs/es/settings#settings-precedence). [Variables que Claude Code ignora en `env`](#variables-claude-code-ignores-in-env) enumera las excepciones para la configuración del proyecto y local.

3068* Cuando la aplicación Claude Desktop o un [entorno autohospedado](/docs/es/self-hosted-environments) inicia la sesión, el entorno de lanzamiento que construye tiene prioridad en su lugar: Claude Code ignora un valor de `env` de cualquier archivo de configuración para una variable que el entorno de lanzamiento ya establece. El [registro de depuración](/docs/es/debug-your-config) nombra cada variable ignorada.

3067* Para cancelar una exportación de shell, establezca la variable en `""`. Claude Code trata un valor vacío como sin establecer para la selección de proveedor, y los subprocesos heredan el valor vacío.3069* Para cancelar una exportación de shell, establezca la variable en `""`. Claude Code trata un valor vacío como sin establecer para la selección de proveedor, y los subprocesos heredan el valor vacío.

3068* `NO_COLOR` y `FORCE_COLOR` establecidos aquí llegan solo a los subprocesos. Para cambiar los colores de la interfaz propia de Claude Code, establézcalos en su shell antes de lanzar `claude`.3070* `NO_COLOR` y `FORCE_COLOR` establecidos aquí llegan solo a los subprocesos. Para cambiar los colores de la interfaz propia de Claude Code, establézcalos en su shell antes de lanzar `claude`.

3069* Los valores aquí son texto sin formato en el archivo de configuración y llegan a cada subproceso que Claude Code inicia. Para un token portador OTLP que rota, use [`otelHeadersHelper`](#otelheadershelper); para credenciales de API, use [`apiKeyHelper`](#apikeyhelper).3071* Los valores aquí son texto sin formato en el archivo de configuración y llegan a cada subproceso que Claude Code inicia. Para un token portador OTLP que rota, use [`otelHeadersHelper`](#otelheadershelper); para credenciales de API, use [`apiKeyHelper`](#apikeyhelper).


5156 5158 

5157[`allowedMcpServers`](#allowedmcpservers) y [`deniedMcpServers`](#deniedmcpservers) aún se aplican a los conectores que esta clave carga. Los conectores entregados a una [sesión en la nube](/docs/es/claude-code-on-the-web) cuyo host lleva un `managed-mcp.json`, como un ejecutor autohospedado, permanecen suprimidos. Consulte [Permitir conectores de claude.ai junto con el conjunto administrado](/docs/es/managed-mcp#allow-claude-ai-connectors-alongside-the-managed-set).5159[`allowedMcpServers`](#allowedmcpservers) y [`deniedMcpServers`](#deniedmcpservers) aún se aplican a los conectores que esta clave carga. Los conectores entregados a una [sesión en la nube](/docs/es/claude-code-on-the-web) cuyo host lleva un `managed-mcp.json`, como un ejecutor autohospedado, permanecen suprimidos. Consulte [Permitir conectores de claude.ai junto con el conjunto administrado](/docs/es/managed-mcp#allow-claude-ai-connectors-alongside-the-managed-set).

5158 5160 

5161<h3 id="allowclaudeinchromewithmanagedmcp">

5162 `allowClaudeInChromeWithManagedMcp`

5163</h3>

5164 

5165Permita que el servidor integrado [Claude en Chrome](/docs/es/chrome) se ejecute junto con un `managed-mcp.json` implementado. Sin esta clave, un `managed-mcp.json` implementado bloquea Claude en Chrome en sesiones de terminal. Requiere Claude Code v2.1.282 o posterior.

5166 

5167* **Scope**: [`Managed`](#scopes), solo desde la configuración administrada del dispositivo: un plist implementado por MDM o una clave de registro HKLM, o un archivo `managed-settings.json` del sistema. Claude Code lo ignora en la configuración administrada del servidor, en el registro HKCU que se puede escribir por el usuario y en la configuración de usuario o proyecto.

5168* **Type**: Boolean

5169 * `true`: el servidor integrado Claude en Chrome puede ejecutarse junto con un `managed-mcp.json` implementado

5170 * `false`: un `managed-mcp.json` implementado bloquea Claude en Chrome en sesiones de terminal

5171* **Default**: `false`, por lo que un `managed-mcp.json` implementado bloquea Claude en Chrome en sesiones de terminal

5172 

5173```json managed-settings.json theme={null}

5174{

5175 "allowClaudeInChromeWithManagedMcp": true

5176}

5177```

5178 

5179Una entrada [`deniedMcpServers`](#deniedmcpservers) para `claude-in-chrome` aún bloquea el servidor con esta clave activada. Consulte [Permitir Claude en Chrome junto con el conjunto administrado](/docs/es/managed-mcp#allow-claude-in-chrome-alongside-the-managed-set).

5180 

5159<h3 id="allowedmcpservers">5181<h3 id="allowedmcpservers">

5160 `allowedMcpServers`5182 `allowedMcpServers`

5161</h3>5183</h3>

5162 5184 

5163Cree una lista de permitidos de los servidores MCP que las personas pueden agregar. Claude Code bloquea cualquier servidor que no coincida con una entrada dondequiera que esté definido, incluidos servidores de complementos, servidores pasados con `--mcp-config` y servidores de claude.ai.5185Cree una lista de permitidos de los servidores MCP que las personas pueden agregar. Claude Code bloquea cualquier servidor que no coincida con una entrada dondequiera que esté definido, incluidos servidores de complementos, servidores pasados con `--mcp-config` y servidores de claude.ai.

5164 5186 

5165Los servidores integrados como Claude en Chrome, el servidor `ide` al que Claude Code se conecta en un IDE [VS Code](/docs/es/vs-code#the-built-in-ide-mcp-server) o [JetBrains](/docs/es/jetbrains#the-built-in-ide-mcp-server) en ejecución, y los servidores que la CLI misma configura están exentos de la lista de permitidos, y la lista de denegados aún se aplica a ellos. Los servidores `type: "sdk"` en proceso están exentos de ambas listas; la [aplicación que inició la sesión](/docs/es/mcp#how-connectors-reach-claude-code) los registra.5187Los servidores integrados como Claude en Chrome, el servidor `ide` al que Claude Code se conecta en un IDE [VS Code](/docs/es/vs-code#the-built-in-ide-mcp-server) o [JetBrains](/docs/es/jetbrains#the-built-in-ide-mcp-server) en ejecución, y los servidores que la CLI misma configura están exentos de la lista de permitidos, y la lista de denegados aún se aplica a ellos. En Claude Code v2.1.268 o posterior, las herramientas de Slack de una sesión [Claude Tag](/docs/es/claude-tag) también están exentas de la lista de permitidos, y la lista de denegados aún se aplica a ellas. Los servidores `type: "sdk"` en proceso están exentos de ambas listas; la [aplicación que inició la sesión](/docs/es/mcp#how-connectors-reach-claude-code) los registra.

5166 5188 

5167Los servidores que su organización entrega también están exentos de la lista de permitidos, y la lista de denegados aún se aplica a ellos. La exención cubre cada entrada [`managedMcpServers`](#managedmcpservers) y cualquier entrada [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) cuyos valores no usen expansión `${VAR}`. Consulte [Cómo se evalúa un servidor](/docs/es/managed-mcp#how-a-server-is-evaluated) para el orden de verificación completo. Antes de v2.1.259, los servidores de `managed-mcp.json` también tenían que coincidir.5189Los servidores que su organización entrega también están exentos de la lista de permitidos, y la lista de denegados aún se aplica a ellos. La exención cubre cada entrada [`managedMcpServers`](#managedmcpservers) y cualquier entrada [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) cuyos valores no usen expansión `${VAR}`. Consulte [Cómo se evalúa un servidor](/docs/es/managed-mcp#how-a-server-is-evaluated) para el orden de verificación completo. Antes de v2.1.259, los servidores de `managed-mcp.json` también tenían que coincidir.

5168 5190 


6303 `disableSideloadFlags`6325 `disableSideloadFlags`

6304</h3>6326</h3>

6305 6327 

6306Rechaza las banderas CLI `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al iniciar, que los usuarios podrían pasar de otra manera para eludir [`strictKnownMarketplaces`](#strictknownmarketplaces) en una única ejecución. Claude Code sale con un error que nombra las banderas rechazadas y aplica la misma verificación a las superficies que inician la CLI con estas banderas internamente, actualmente [sesiones locales de Cowork](/docs/es/desktop) en la aplicación de escritorio. En [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code descarta los servidores MCP que el servidor entregó a través de `--mcp-config`, excepto las entradas `type: "sdk"` en proceso, e inicia la sesión. Requiere Claude Code v2.1.193 o posterior.6328Rechaza las banderas CLI `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al iniciar, que los usuarios podrían pasar de otra manera para eludir [`strictKnownMarketplaces`](#strictknownmarketplaces) en una única ejecución. Claude Code sale con un error que nombra las banderas rechazadas y aplica la misma verificación a las superficies que inician la CLI con estas banderas internamente, actualmente [sesiones locales de Cowork](/docs/es/desktop) en la aplicación de escritorio. En [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code inicia la sesión y descarta todas las entradas `--mcp-config` entregadas por el servidor excepto las entradas `type: "sdk"` en proceso y las herramientas de Slack de una sesión [Claude Tag](/docs/es/claude-tag). Requiere Claude Code v2.1.193 o posterior.

6307 6329 

6308* **Alcance**: [`Managed`](#scopes)6330* **Alcance**: [`Managed`](#scopes)

6309* **Tipo**: Booleano6331* **Tipo**: Booleano

6310 * `true`: Claude Code rechaza `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al iniciar y sale con un error que los nombra, excepto que en sesiones en la nube descarta los servidores MCP que el servidor entregó a través de `--mcp-config`, excepto las entradas `type: "sdk"` en proceso, e inicia la sesión6332 * `true`: Claude Code rechaza `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al iniciar y sale con un error que los nombra. En sesiones en la nube, inicia la sesión y descarta todas las entradas `--mcp-config` entregadas por el servidor excepto las entradas `type: "sdk"` en proceso y las herramientas de Slack de una sesión Claude Tag

6311 * `false`: Claude Code acepta esas banderas6333 * `false`: Claude Code acepta esas banderas

6312* **Predeterminado**: `false`6334* **Predeterminado**: `false`

6313 6335 


6321 6343 

6322La misma verificación cubre carpetas de plugins nombradas en la variable de entorno [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables), que requiere Claude Code v2.1.280 o posterior. Cuando la variable nombra una carpeta, Claude Code sale con el mismo error, y el error dice desactivar la variable.6344La misma verificación cubre carpetas de plugins nombradas en la variable de entorno [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables), que requiere Claude Code v2.1.280 o posterior. Cuando la variable nombra una carpeta, Claude Code sale con el mismo error, y el error dice desactivar la variable.

6323 6345 

6324En sesiones en la nube, Claude Code también ignora las actualizaciones MCP entregadas por el servidor a mitad de sesión, la ruta detrás de la configuración de sesión en la nube y las llamadas `setMcpServers()` del SDK que llegan a esas sesiones. Las entradas `type: "sdk"` en proceso permanecen exentas allí también. Antes de v2.1.239, un `--mcp-config` entregado por el servidor bloqueaba el inicio de una sesión en la nube.6346En sesiones en la nube, Claude Code también ignora las actualizaciones MCP entregadas por el servidor a mitad de sesión, la ruta detrás de la configuración de sesión en la nube y las llamadas `setMcpServers()` del SDK que llegan a esas sesiones. Las entradas `type: "sdk"` en proceso y las herramientas de Slack de una sesión Claude Tag permanecen exentas allí también. Antes de v2.1.268, tanto este descarte como el descarte de inicio también eliminaban las herramientas de Slack de una sesión Claude Tag. Antes de v2.1.239, un `--mcp-config` entregado por el servidor bloqueaba el inicio de una sesión en la nube.

6325 6347 

6326<h3 id="forceremotesettingsrefresh">6348<h3 id="forceremotesettingsrefresh">

6327 `forceRemoteSettingsRefresh`6349 `forceRemoteSettingsRefresh`

skills.md +26 −2

Details

56 56 

57Claude edita el archivo registrado solo cuando dirigió una ejecución incorrectamente, como un comando que falló o un paso faltante, para que pueda confirmar el archivo sin diffs por sesión. Antes de v2.1.205, la skill incluida le indicaba a Claude que incorporara cualquier cosa que una ejecución aprendiera, lo que causaba conflictos de fusión frecuentes.57Claude edita el archivo registrado solo cuando dirigió una ejecución incorrectamente, como un comando que falló o un paso faltante, para que pueda confirmar el archivo sin diffs por sesión. Antes de v2.1.205, la skill incluida le indicaba a Claude que incorporara cualquier cosa que una ejecución aprendiera, lo que causaba conflictos de fusión frecuentes.

58 58 

59<h3 id="work-on-claude-api-projects">

60 Trabaje en proyectos de Claude API

61</h3>

62 

63La skill incluida `/claude-api` carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de su proyecto. Claude también la activa automáticamente cuando su código importa `anthropic` o `@anthropic-ai/sdk`.

64 

65Para iniciar uno de los flujos de trabajo de la skill, escriba un subcomando después del nombre de la skill en el prompt de Claude Code, por ejemplo `/claude-api migrate`. La tabla enumera lo que hace cada subcomando y la versión más antigua de Claude Code que lo incluye. `migrate` y `managed-agents-onboard` son anteriores a v2.1.221, la versión más antigua que la tabla rastrea.

66 

67| Subcomando | Lo que hace | Versión mínima |

68| :- | :- | :- |

69| `migrate` | Actualice su código existente de Claude API a un modelo más nuevo | Anterior a v2.1.221 |

70| `upgrade` | Mueva la dependencia del SDK de Anthropic de su proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x | v2.1.236 o posterior |

71| `managed-agents-onboard` | Recorra la creación de un nuevo Managed Agent | Anterior a v2.1.221 |

72| `prompt-audit` | Marque las instrucciones escritas para modelos más antiguos en sus prompts, skills y descripciones de herramientas y proponga correcciones como un diff | v2.1.221 o posterior |

73| `cost-optimize` | Perfil dónde va el gasto de Claude API de su proyecto y proponga ahorros de opciones como prompt caching, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez | v2.1.247 o posterior |

74| `build-eval` | Construya un conjunto de evaluación para su aplicación impulsada por Claude | v2.1.259 o posterior |

75| `hillclimb` | Mejore iterativamente su aplicación contra una evaluación existente | v2.1.259 o posterior |

76| `preserved-thinking-migration` | Encuentre las ediciones que su integración realiza en turnos anteriores, su prompt del sistema o su lista de herramientas que invalidan bloques de [preserved thinking](https://platform.claude.com/docs/en/build-with-claude/preserved-thinking), mida cuánto razonamiento deja caer cada uno y proponga correcciones una a la vez, remidiendo después de cada cambio | v2.1.282 o posterior |

77 

59<h2 id="getting-started">78<h2 id="getting-started">

60 Primeros pasos79 Primeros pasos

61</h2>80</h2>


909 928 

910Ver que una skill se activa le indica que Claude la encontró, no que haya hecho lo que usted pretendía. Para saber que una skill funciona, mida dos cosas por separado: si Claude la invoca en los prompts que debería, y si la salida coincide con lo que espera cuando lo hace.929Ver que una skill se activa le indica que Claude la encontró, no que haya hecho lo que usted pretendía. Para saber que una skill funciona, mida dos cosas por separado: si Claude la invoca en los prompts que debería, y si la salida coincide con lo que espera cuando lo hace.

911 930 

912La verificación de ambas es una comparación de línea base. Recopile algunos prompts realistas, ejecute cada uno en una sesión nueva con la skill disponible y nuevamente con ella [deshabilitada](#override-skill-visibility-from-settings), y compare los resultados. Una sesión nueva es importante porque el contexto residual de la creación de la skill enmascarará las brechas en las instrucciones escritas.931La verificación de ambas es una comparación de línea base. Recopile algunos prompts realistas, ejecute cada uno en una sesión nueva con la skill disponible y nuevamente con ella deshabilitada, y compare los resultados. Una sesión nueva es importante porque el contexto residual de la creación de la skill enmascarará las brechas en las instrucciones escritas.

932 

933Cómo desactiva la skill para la segunda ejecución depende de dónde provenga:

934 

935* **Skill personal o de proyecto**: establézcala en `"off"` en [`skillOverrides`](#override-skill-visibility-from-settings).

936* **Skill que proporciona un plugin**: `skillOverrides` no se aplica a las skills de plugins. Use [`claude plugin eval`](/docs/es/plugin-evals#the-no-plugin-baseline) en su lugar, que repite cada ejecución sin plugin cargado.

913 937 

914Dos herramientas automatizan esa comparación. Para una skill que se distribuye en un [plugin](/docs/es/plugins/overview), [`claude plugin eval`](/docs/es/plugin-evals) ejecuta cada prompt en una sesión aislada con y sin el plugin, la califica con evaluadores que usted define o que escribe por usted, y sale con un código distinto de cero por debajo de un umbral para que pueda controlar su CI. Para iterar sobre una única skill dentro de una conversación de Claude Code, el plugin skill-creator a continuación ejecuta un bucle similar con su propio formato `evals/evals.json`. Los dos formatos no son intercambiables.938Dos herramientas automatizan la comparación de línea base. Para una skill que se distribuye en un [plugin](/docs/es/plugins/overview), [`claude plugin eval`](/docs/es/plugin-evals) ejecuta cada prompt en una sesión aislada con y sin el plugin, la califica con evaluadores que usted define o que escribe por usted, y sale con un código distinto de cero por debajo de un umbral para que pueda controlar su CI. Para iterar sobre una única skill dentro de una conversación de Claude Code, el plugin skill-creator a continuación ejecuta un bucle similar con su propio formato `evals/evals.json`. Los dos formatos no son intercambiables.

915 939 

916<h3 id="run-evals-with-skill-creator">940<h3 id="run-evals-with-skill-creator">

917 Ejecutar evals con skill-creator941 Ejecutar evals con skill-creator

statusline.md +1 −1

Details

1178**El porcentaje de contexto muestra valores inesperados**1178**El porcentaje de contexto muestra valores inesperados**

1179 1179 

1180* Usa `used_percentage` para el estado de contexto más simple y preciso1180* Usa `used_percentage` para el estado de contexto más simple y preciso

1181* El porcentaje de contexto puede diferir de la salida `/context` debido a cuándo se calcula cada uno1181* La línea de estado reporta los conteos de la última respuesta de API, mientras que `/context` agrega una estimación para los mensajes añadidos desde esa respuesta, por lo que `/context` puede leer más alto hasta la siguiente respuesta

1182 1182 

1183**Los enlaces OSC 8 no son clickeables**1183**Los enlaces OSC 8 no son clickeables**

1184 1184 

sub-agents.md +3 −5

Details

802 - matcher: "Bash"802 - matcher: "Bash"

803 hooks:803 hooks:

804 - type: command804 - type: command

805 command: "./scripts/validate-command.sh $TOOL_INPUT"805 command: "./scripts/validate-command.sh"

806 PostToolUse:806 PostToolUse:

807 - matcher: "Edit|Write"807 - matcher: "Edit|Write"

808 hooks:808 hooks:


850}850}

851```851```

852 852 

853Un 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.

854 

855Consulte [Hooks](/docs/es/hooks) para el formato de configuración de hook completo.853Consulte [Hooks](/docs/es/hooks) para el formato de configuración de hook completo.

856 854 

857<h2 id="work-with-subagents">855<h2 id="work-with-subagents">


876 874 

877* **Lenguaje natural**: nombra el subagente en tu indicación; Claude decide si delega875* **Lenguaje natural**: nombra el subagente en tu indicación; Claude decide si delega

878* **@-mention**: garantiza que el subagente se ejecute para una tarea876* **@-mention**: garantiza que el subagente se ejecute para una tarea

879* **Sesión completa**: toda la sesión utiliza el indicador del sistema del subagente, restricciones de herramientas y modelo a través de la bandera `--agent` o la configuración `agent`877* **Sesión completa**: toda la sesión se ejecuta como ese subagente a través de la bandera `--agent` o la configuración `agent`

880 878 

881Para lenguaje natural, no hay sintaxis especial. Nombra el subagente y Claude típicamente delega:879Para lenguaje natural, no hay sintaxis especial. Nombra el subagente y Claude típicamente delega:

882 880 


897 895 

898También puedes escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`. Mientras escribes esta forma, el autocompletado muestra coincidencias de archivos en lugar de agentes. La mención del agente aún se resuelve cuando envías.896También puedes escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`. Mientras escribes esta forma, el autocompletado muestra coincidencias de archivos en lugar de agentes. La mención del agente aún se resuelve cuando envías.

899 897 

900**Ejecuta toda la sesión como un subagente.** Pasa [`--agent <name>`](/docs/es/cli-reference) para iniciar una sesión donde el hilo principal en sí toma el indicador del sistema del subagente, restricciones de herramientas y modelo:898**Ejecuta toda la sesión como un subagente.** Pasa [`--agent <name>`](/docs/es/cli-reference) para iniciar una sesión donde el hilo principal en sí toma las restricciones de herramientas y el modelo del subagente:

901 899 

902```bash theme={null}900```bash theme={null}

903claude --agent code-reviewer901claude --agent code-reviewer

Details

122 122 

123 <tr>123 <tr>

124 <td>Facturación</td>124 <td>Facturación</td>

125 <td><strong>Teams:</strong> \$150/puesto (Premium) con PAYG disponible<br /><strong>Enterprise:</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Contactar ventas</a></td>125 <td><strong>Teams:</strong> suscripción por puesto con PAYG disponible, consulte <a href="https://claude.com/pricing?utm_source=claude_code&utm_medium=docs&utm_content=third_party_pricing#team-&-enterprise">precios</a><br /><strong>Enterprise:</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Contactar ventas</a></td>

126 <td>PAYG</td>126 <td>PAYG</td>

127 <td>PAYG a través de AWS</td>127 <td>PAYG a través de AWS</td>

128 <td>PAYG a través de AWS Marketplace</td>128 <td>PAYG a través de AWS Marketplace</td>

tools-reference.md +26 −30

Details

354 354 

355La herramienta Monitor permite que Claude observe algo en segundo plano y reaccione cuando cambia, sin pausar la conversación. Pida a Claude que:355La herramienta Monitor permite que Claude observe algo en segundo plano y reaccione cuando cambia, sin pausar la conversación. Pida a Claude que:

356 356 

357* Siga un archivo de registro y marque errores a medida que aparecen357* Monitoree un archivo de registro y señale errores a medida que aparecen

358* Sondee una PR o trabajo de CI y reporte cuando su estado cambia358* Consulte un PR o trabajo de CI e informe cuando cambia su estado

359* Observe un directorio para cambios de archivos359* Observe un directorio para detectar cambios de archivos

360* Rastrear la salida de cualquier script de larga duración que señale360* Rastree la salida de cualquier script de larga duración que le indique

361* Conectarse a una fuente de WebSocket e informar cada mensaje a medida que llega361* Se conecte a un feed de WebSocket e informe cada mensaje a medida que llega

362 362 

363Para 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.363Para la mayoría de los monitoreos, 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 [conexión WebSocket](#websocket-source) en lugar de ejecutar un script.

364 364 

365Continúa trabajando en la misma sesión y Claude interviene cuando llega un evento.365Usted continúa trabajando en la misma sesión y Claude interviene cuando llega un evento.

366 366 

367Cada observación que Claude inicia tiene un plazo: 5 minutos por defecto, como máximo 30 minutos, y como máximo 10 minutos en una ejecución [no interactiva](/docs/es/headless) dada una única solicitud con `-p`.367Cada monitoreo que Claude inicia tiene un plazo: 5 minutos por defecto, como máximo 30 minutos, y como máximo 10 minutos en una ejecución [no interactiva](/docs/es/headless) con un único prompt y `-p`.

368 368 

369En el plazo, la observación termina. Claude recibe un aviso, por lo que puede reiniciar la observación si aún es necesaria.369Al llegar al plazo, el monitoreo termina. Claude recibe un aviso, para que pueda reiniciar el monitoreo si aún es necesario.

370 370 

371Detenga un monitor pidiendo a Claude que lo cancele o terminando la sesión. Cuando detiene una [subagente](/docs/es/sub-agents) que inició monitores, por ejemplo desde `/tasks`, esos monitores se detienen con ella.371Detenga un monitor pidiendo a Claude que lo cancele o terminando la sesión. Cuando detiene un [subagente](/docs/es/sub-agents) que inició monitores, por ejemplo desde `/tasks`, esos monitores se detienen con él.

372 372 

373Cuando Monitor ejecuta un comando, utiliza las mismas [reglas de permisos que Bash](/docs/es/permissions#tool-specific-permission-rules), por lo que los patrones `allow` y `deny` que tiene establecidos para Bash se aplican aquí también. Mientras [el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) está activo, Claude Code reserva reglas de permiso que nombran `Monitor` en sí mismo, junto con las otras [reglas de permiso amplias que descarta](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que el clasificador revisa los comandos de Monitor de la misma manera que revisa los comandos de Bash.373Cuando Monitor ejecuta un comando, utiliza las mismas [reglas de permisos que Bash](/docs/es/permissions#tool-specific-permission-rules), por lo que los patrones `allow` y `deny` que ha establecido para Bash también se aplican aquí. Mientras [el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) está activo, Claude Code deja de lado las reglas de permiso que nombran a `Monitor` en sí mismo, junto con las otras [reglas de permiso amplias que descarta](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que el clasificador revisa los comandos de Monitor de la misma manera que revisa los comandos de Bash.

374 374 

375La [fuente de WebSocket](#websocket-source) tiene su propio mensaje de aprobación, que el clasificador también decide en modo automático.375La [fuente WebSocket](#websocket-source) tiene su propio prompt de aprobación, que el clasificador también decide en modo automático.

376 376 

377La herramienta no está disponible en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry. Tampoco está disponible cuando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecido.377La herramienta no está disponible en Amazon Bedrock, en la plataforma de agentes de Google Cloud ni en Microsoft Foundry. Tampoco está disponible cuando se establece `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`.

378 378 

379Los 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](/docs/es/plugins/components#monitors).379Los plugins pueden declarar monitores que se inician automáticamente cuando el plugin está activo, en lugar de pedir a Claude que los inicie. Consulte [monitores de plugins](/docs/es/plugins/components#monitors).

380 380 

381<h3 id="websocket-source">381<h3 id="websocket-source">

382 Fuente de WebSocket382 Fuente WebSocket

383</h3>383</h3>

384 384 

385<Note>385Cuando un servidor ya envía eventos a través de WebSocket, Claude puede conectarse directamente en lugar de escribir un script de consulta. Cada tipo de actividad de socket se convierte en un evento o termina el monitoreo:

386 La fuente de WebSocket requiere Claude Code v2.1.195 o posterior.

387</Note>

388 

389Cuando 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:

390 386 

391* **Mensajes de texto**: cada uno se convierte en un evento, incluso cuando el mensaje abarca múltiples líneas.387* **Mensajes de texto**: cada uno se convierte en un evento, incluso cuando el mensaje abarca varias líneas.

392* **Mensajes binarios**: no se transmiten. Claude recibe una línea de marcador de posición como `[binary frame, 512 bytes]` en su lugar.388* **Mensajes binarios**: no se transmiten. Claude recibe una línea de marcador de posición como `[binary frame, 512 bytes]`.

393* **Mensajes mayores de 1 MiB**: la observación termina, por lo que suscríbase a una fuente filtrada donde exista una.389* **Mensajes mayores de 1 MiB**: el monitoreo termina, por lo que suscríbase a un feed filtrado donde exista uno.

394* **Cierre de socket**: la observación termina y Claude recibe el código de cierre.390* **Cierre de socket**: el monitoreo termina y Claude recibe el código de cierre.

395 391 

396Una 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:392Un monitoreo de WebSocket toma una entrada `ws` en lugar de `command`, y una única llamada a Monitor no puede combinar los dos. La entrada `ws` tiene dos campos:

397 393 

398| Campo | Requerido | Descripción |394| Campo | Requerido | Descripción |

399| :- | :- | :- |395| :- | :- | :- |

400| `url` | Sí | El punto final al que conectarse. Debe ser una URL `ws://` o `wss://` sin credenciales incrustadas o espacios en blanco, utilizando solo caracteres ASCII |396| `url` | Sí | El punto de conexión al que conectarse. Debe ser una URL `ws://` o `wss://` sin credenciales incrustadas ni espacios en blanco, utilizando solo caracteres ASCII |

401| `protocols` | No | Nombres de subprotocolo de WebSocket para ofrecer durante el apretón de manos. Cada entrada debe ser un token de subprotocolo válido, y la lista no puede contener duplicados |397| `protocols` | No | Nombres de subprotocolo de WebSocket para ofrecer durante el protocolo de enlace. Cada entrada debe ser un token de subprotocolo válido, y la lista no puede contener duplicados |

402 398 

403El plazo `timeout_ms` se aplica también a una observación de WebSocket: la observación termina en el plazo, y `TaskStop` la cancela temprano.399El plazo `timeout_ms` también se aplica a un monitoreo de WebSocket: el monitoreo termina al llegar al plazo, y `TaskStop` lo cancela anticipadamente.

404 400 

405Abrir un WebSocket solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) el clasificador decide en su lugar. El mensaje no ofrece una opción para omitir futuros mensajes para el mismo host.401Abrir un WebSocket solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) el clasificador decide en su lugar. El prompt no ofrece una opción para omitir futuros prompts para el mismo host.

406 402 

407Claude 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`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) está establecido en la configuración administrada, cualquier host fuera de la lista de permitidos administrada.403Claude Code deniega las URL que apuntan a una dirección privada, de enlace local o de metadatos en la nube, incluidos los nombres de host que se resuelven en una. También deniega los hosts en `sandbox.network.deniedDomains`, y cuando [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) se establece en la configuración administrada, cualquier host fuera de la lista de permitidos administrada.

408 404 

409<h2 id="notebookedit-tool-behavior">405<h2 id="notebookedit-tool-behavior">

410 Comportamiento de la herramienta NotebookEdit406 Comportamiento de la herramienta NotebookEdit

Details

445 Errores de conexión TLS o SSL445 Errores de conexión TLS o SSL

446</h3>446</h3>

447 447 

448Errores como `curl: (35) TLS connect error`, `schannel: next InitializeSecurityContext failed`, o el `Could not establish trust relationship for the SSL/TLS secure channel` de PowerShell indican fallos de protocolo de enlace TLS.448Errores como estos significan que el protocolo de enlace TLS falló:

449 

450* `curl: (35) TLS connect error`

451* `schannel: next InitializeSecurityContext failed`

452* El `Could not create SSL/TLS secure channel` de PowerShell

453* El `Could not establish trust relationship for the SSL/TLS secure channel` de PowerShell

449 454 

450**Soluciones:**455**Soluciones:**

451 456 


1017 403 Forbidden después del inicio de sesión1022 403 Forbidden después del inicio de sesión

1018</h3>1023</h3>

1019 1024 

1020Si ve `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}` después de iniciar sesión:1025Si ve `API Error: 403 Request not allowed` después de iniciar sesión:

1021 1026 

1022* **Usuarios de Claude Pro/Max**: verifique que su suscripción esté activa en [claude.ai/settings](https://claude.ai/settings)1027* **Usuarios de Claude Pro/Max**: verifique que su suscripción esté activa en [claude.ai/settings](https://claude.ai/settings)

1023* **Usuarios de Anthropic Console**: confirme que su cuenta tiene el rol "Claude Code" o "Developer". Los administradores asignan esto en Anthropic Console bajo Settings → Members.1028* **Usuarios de Anthropic Console**: confirme que su cuenta tiene el rol "Claude Code" o "Developer". Los administradores asignan esto en Anthropic Console bajo Settings → Members.

Details

52 El archivo `.heapsnapshot` contiene cada cadena en el proceso, incluyendo su conversación completa y credenciales. No lo adjunte a un problema público ni lo comparta.52 El archivo `.heapsnapshot` contiene cada cadena en el proceso, incluyendo su conversación completa y credenciales. No lo adjunte a un problema público ni lo comparta.

53</Warning>53</Warning>

54 54 

55El comando también imprime un resumen en la conversación, mostrando el tamaño del conjunto residente, montón de JS, búferes de matriz, y memoria nativa no contabilizada, más cualquier indicador de fuga que detecte, como una tasa de crecimiento de memoria alta o un número inusualmente alto de identificadores abiertos. El resumen indica si la mayoría de la memoria está en el montón de JS, que la instantánea captura, o en memoria nativa, que no lo hace.55El comando también imprime un resumen en la conversación, mostrando la memoria total del proceso, cuánta de ella está en el montón de JS, y cuánta se encuentra fuera del montón. El resumen también enumera cualquier indicador de fuga, como una tasa de crecimiento de memoria alta o un número inusualmente alto de identificadores abiertos. El resumen indica si la mayoría de la memoria está en el montón de JS, que la instantánea captura, o en memoria nativa, que no lo hace.

56 56 

57Haga una de dos cosas con la salida:57Haga una de dos cosas con la salida:

58 58 

workflows.md +1 −1

Details

91 Ver la ejecución91 Ver la ejecución

92</h3>92</h3>

93 93 

94Los flujos de trabajo se ejecutan en segundo plano, por lo que la sesión permanece receptiva mientras los agentes trabajan. Ejecute `/workflows` en cualquier momento para enumerar los flujos de trabajo en ejecución y completados, luego seleccione uno para abrir su vista de progreso.94Los flujos de trabajo se ejecutan en segundo plano, por lo que la sesión permanece receptiva mientras los agentes trabajan. Ejecute `/workflows` en cualquier momento para enumerar los flujos de trabajo en ejecución y completados, luego seleccione uno para abrir su vista de progreso. Para detener un flujo de trabajo en ejecución sin abrirlo, selecciónelo en la lista y presione `x`.

95 95 

96La vista de progreso muestra cada fase con sus recuentos de agentes, totales de tokens y tiempo transcurrido. El pie de página enumera la tecla para cada acción:96La vista de progreso muestra cada fase con sus recuentos de agentes, totales de tokens y tiempo transcurrido. El pie de página enumera la tecla para cada acción:

97 97