SpyBara
Go Premium

Documentation 2026-10-02 22:59 UTC to 2026-10-03 02:59 UTC

34 files changed +1,385 −1,233. View all changes and history on the product overview
2026
Sat 3 04:00 Fri 2 22:59 Thu 1 23:59
Details

145Algunos comportamientos no se adaptan al modo lector de pantalla:145Algunos comportamientos no se adaptan al modo lector de pantalla:

146 146 

147* El modo lector de pantalla no se activa automáticamente cuando se ejecuta un lector de pantalla.147* El modo lector de pantalla no se activa automáticamente cuando se ejecuta un lector de pantalla.

148* Claude Code no anuncia un cambio de modo de permiso realizado de ninguna otra forma que no sea ciclar con `Shift+Tab`, como entrar en [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) desde un comando.148* Claude Code no anuncia un cambio de modo de permisos que realices con un comando, como entrar en [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) con `/plan`.

149* Adjuntarse a una [sesión de fondo](/docs/es/agent-view) con `claude attach` o desde la vista de agente entra en la pantalla alternativa de la terminal, que no tiene scrollback nativo. Este es el [mismo comportamiento que otras sesiones adjuntas](/docs/es/fullscreen). Para salir, presione la flecha izquierda en una solicitud vacía, o Ctrl+Z si un diálogo tiene el foco.149* Adjuntarse a una [sesión de fondo](/docs/es/agent-view) con `claude attach` o desde la vista de agente entra en la pantalla alternativa de la terminal, que no tiene scrollback nativo. Este es el [mismo comportamiento que otras sesiones adjuntas](/docs/es/fullscreen). Para salir, presione la flecha izquierda en una solicitud vacía, o Ctrl+Z si un diálogo tiene el foco.

150* Claude Code anuncia costos en el resumen que imprime al salir, no por turno.150* Claude Code anuncia costos en el resumen que imprime al salir, no por turno.

151* El modo lector de pantalla no cambia el [modo no interactivo](/docs/es/headless) con la bandera `-p`. El modo no interactivo ya escribe texto plano y sigue siendo una alternativa para scripting.151* El modo lector de pantalla no cambia el [modo no interactivo](/docs/es/headless) con la bandera `-p`. El modo no interactivo ya escribe texto plano y sigue siendo una alternativa para scripting.

agent-teams.md +1 −1

Details

92* **Intro**: abrir la transcripción del compañero de equipo seleccionado y enviarle un mensaje directamente92* **Intro**: abrir la transcripción del compañero de equipo seleccionado y enviarle un mensaje directamente

93* **Escape**: borrar la selección. Mientras está viendo la transcripción de un compañero de equipo, Escape interrumpe el turno actual de ese compañero de equipo93* **Escape**: borrar la selección. Mientras está viendo la transcripción de un compañero de equipo, Escape interrumpe el turno actual de ese compañero de equipo

94 94 

95A partir de v2.1.199, la fila de un compañero de equipo inactivo permanece en el panel mientras cualquier compañero de equipo o subagente siga trabajando, por lo que puede seleccionarlo para revisar su transcripción o enviarle más trabajo. Una vez que cada agente en el panel está inactivo, las filas inactivas se ocultan después de 30 segundos y reaparecen en el siguiente turno del compañero de equipo; el compañero de equipo sigue ejecutándose y es direccionable mientras está oculto. En v2.1.181 a v2.1.198, una fila inactiva se ocultaba 30 segundos después de que su propio turno terminaba, incluso mientras otros compañeros de equipo seguían trabajando; las filas inactivas no se ocultan en versiones anteriores a v2.1.181.95La fila de un compañero de equipo inactivo permanece en el panel mientras cualquier compañero de equipo o subagente siga trabajando, por lo que puedes seleccionarla para revisar su transcripción o enviarle más trabajo. Una vez que cada agente en el panel está inactivo, las filas inactivas se ocultan después de 30 segundos y reaparecen en el siguiente turno del compañero de equipo; el compañero de equipo sigue ejecutándose y es direccionable mientras está oculto.

96 96 

97Cuando más de tres compañeros de equipo están inactivos a la vez, las filas más allá de las primeras tres se contraen en una sola fila que cuenta los compañeros de equipo contraídos, como `2 idle agents` cuando cinco están inactivos. Selecciónela y presione Intro para expandir las filas contraídas, o presione Esc para contraerlas de nuevo. Los compañeros de equipo que trabajan, los compañeros de equipo que fallaron, y el compañero de equipo que está viendo siempre mantienen sus propias filas.97Cuando más de tres compañeros de equipo están inactivos a la vez, las filas más allá de las primeras tres se contraen en una sola fila que cuenta los compañeros de equipo contraídos, como `2 idle agents` cuando cinco están inactivos. Selecciónela y presione Intro para expandir las filas contraídas, o presione Esc para contraerlas de nuevo. Los compañeros de equipo que trabajan, los compañeros de equipo que fallaron, y el compañero de equipo que está viendo siempre mantienen sus propias filas.

98 98 

champion-kit.md +7 −7

Details

50Ejemplos de técnicas reutilizables:50Ejemplos de técnicas reutilizables:

51 51 

52* "Aprendí que @-mencionar un directorio funciona. Lo señalé a `@src/components/` y pregunté cuáles carecían de pruebas, lo que reveló dos que había pasado por alto."52* "Aprendí que @-mencionar un directorio funciona. Lo señalé a `@src/components/` y pregunté cuáles carecían de pruebas, lo que reveló dos que había pasado por alto."

53* "Plan mode (`Shift+Tab`) muestra exactamente qué archivos se tocarán antes de cualquier edición, por lo que estoy cómodo usándolo en código compartido."53* "El modo plan (`Shift+Tab`) presenta primero los cambios propuestos, por lo que me siento cómodo usándolo en código compartido."

54* "Configuré un hook Stop para recibir una notificación de escritorio cuando se completa una tarea larga. La configuración está en el hilo."54* "Configuré un hook Stop para recibir una notificación de escritorio cuando se completa una tarea larga. La configuración está en el hilo."

55* "Ejecutar `/init` genera un `CLAUDE.md` desde el repositorio para que el asistente deje de preguntar sobre nuestras convenciones."55* "Ejecutar `/init` genera un `CLAUDE.md` desde el repositorio para que el asistente deje de preguntar sobre nuestras convenciones."

56 56 


88```88```

89 89 

90```text theme={null}90```text theme={null}

91Plan mode es la razón por la que estoy cómodo usando esto en código que91El modo plan es la razón por la que me siento cómodo usando esto en código

92importa. Presione Shift+Tab hasta que vea "plan"; establece exactamente92que importa. Presiona Shift+Tab hasta que veas "plan"; presenta los cambios

93qué archivos tiene la intención de tocar antes de cambiar nada.93que propone sin editar tu código fuente.

94```94```

95 95 

96<h2 id="be-the-person-people-ask">96<h2 id="be-the-person-people-ask">


126| Pregunta | Respuesta sugerida | Recurso de seguimiento |126| Pregunta | Respuesta sugerida | Recurso de seguimiento |

127| - | - | - |127| - | - | - |

128| "¿En qué debería intentarlo primero?" | Recomiende una tarea real pero contenida, idealmente un error o tarea que la persona ha estado posponiendo porque es tediosa en lugar de difícil. | [Common workflows](/docs/es/common-workflows) |128| "¿En qué debería intentarlo primero?" | Recomiende una tarea real pero contenida, idealmente un error o tarea que la persona ha estado posponiendo porque es tediosa en lugar de difícil. | [Common workflows](/docs/es/common-workflows) |

129| "¿Cómo confío en que toque mi código?" | Introduzca plan mode: presionar `Shift+Tab` lo cicla, Claude propone exactamente qué tiene la intención de cambiar, y nada se modifica hasta que el usuario aprueba. | [Permissions](/docs/es/permissions) |129| "¿Cómo confío en que toque mi código?" | Presenta el modo plan: al presionar `Shift+Tab` se cambia a él, y Claude investiga y propone cambios sin editar tu código fuente. | [Permissions](/docs/es/permissions) |

130| "¿Vale la pena el esfuerzo de configuración?" | La instalación toma aproximadamente dos minutos, se ejecuta en la terminal y no requiere extensión IDE. Ejecutar `/init` una vez es suficiente para comenzar a trabajar. | [Quickstart](/docs/es/quickstart) |130| "¿Vale la pena el esfuerzo de configuración?" | La instalación toma aproximadamente dos minutos, se ejecuta en la terminal y no requiere extensión IDE. Ejecutar `/init` una vez es suficiente para comenzar a trabajar. | [Quickstart](/docs/es/quickstart) |

131| "Produjo un resultado incorrecto." | Anímelos a proporcionar el fallo a Claude. Pegar el mensaje de error o la prueba fallida es mucho más efectivo que reformular la solicitud original. | [Common workflows](/docs/es/common-workflows) |131| "Produjo un resultado incorrecto." | Anímelos a proporcionar el fallo a Claude. Pegar el mensaje de error o la prueba fallida es mucho más efectivo que reformular la solicitud original. | [Common workflows](/docs/es/common-workflows) |

132| "No entiende las convenciones de nuestro código base." | Sugiera ejecutar `/init` para generar un archivo `CLAUDE.md`, luego agregue las convenciones del equipo, comandos de prueba y cualquier directorio que deba evitarse. | [Memory](/docs/es/memory) |132| "No entiende las convenciones de nuestro código base." | Sugiera ejecutar `/init` para generar un archivo `CLAUDE.md`, luego agregue las convenciones del equipo, comandos de prueba y cualquier directorio que deba evitarse. | [Memory](/docs/es/memory) |


199| Preocupación | Respuesta sugerida | Evidencia a ofrecer |199| Preocupación | Respuesta sugerida | Evidencia a ofrecer |

200| - | - | - |200| - | - | - |

201| "Soy más rápido sin esto." | Eso probablemente es cierto para el código que la persona escribe rutinariamente. Sugiera intentarlo en el trabajo que tienden a evitar: archivos heredados, servicios desconocidos o andamiaje de pruebas, donde el apalancamiento es mayor. | Cronometrar una tarea tediosa de ambas formas y comparar. |201| "Soy más rápido sin esto." | Eso probablemente es cierto para el código que la persona escribe rutinariamente. Sugiera intentarlo en el trabajo que tienden a evitar: archivos heredados, servicios desconocidos o andamiaje de pruebas, donde el apalancamiento es mayor. | Cronometrar una tarea tediosa de ambas formas y comparar. |

202| "No confío en que la IA toque el código de producción." | Acepte que ningún cambio debe aterrizar sin ser leído. Plan mode combinado con revisión de diff normal significa que nada se aplica que el ingeniero no haya inspeccionado, el mismo estándar que cualquier solicitud de extracción. | Demuestre plan mode en un archivo real. |202| "No confío en que la IA toque el código de producción." | Acepta que ningún cambio debe aterrizar sin ser leído. Sugiere el modo plan para ver primero los cambios propuestos y luego revisar el diff con el mismo estándar que cualquier pull request. | Demuestra el modo plan en un archivo real. |

203| "Hará que los ingenieros junior sean más débiles." | Usado bien, es un explicador efectivo. Anime a los ingenieros junior a pedirle a Claude que explique un archivo y sus sitios de llamada antes de pedirle que cambie nada. | Ejecute "Explicar @file y dónde se llama desde" juntos. |203| "Hará que los ingenieros junior sean más débiles." | Usado bien, es un explicador efectivo. Anime a los ingenieros junior a pedirle a Claude que explique un archivo y sus sitios de llamada antes de pedirle que cambie nada. | Ejecute "Explicar @file y dónde se llama desde" juntos. |

204| "Lo intenté una vez y alucinó." | Esto suele ser un problema de contexto en lugar de un problema de modelo. @-mencionar los archivos relevantes, ejecutar `/init` y proporcionar la salida de error real generalmente lo resuelve. | Vuelva a ejecutar su prompt original con el contexto `@` adecuado. |204| "Lo intenté una vez y alucinó." | Esto suele ser un problema de contexto en lugar de un problema de modelo. @-mencionar los archivos relevantes, ejecutar `/init` y proporcionar la salida de error real generalmente lo resuelve. | Vuelva a ejecutar su prompt original con el contexto `@` adecuado. |

205| "No tenemos tiempo para aprender otra herramienta." | Claude Code es un comando de terminal en lugar de una plataforma. Si no devuelve valor dentro de la primera sesión, es razonable dejarlo de lado. | Una instalación de dos minutos seguida de un error real. |205| "No tenemos tiempo para aprender otra herramienta." | Claude Code es un comando de terminal en lugar de una plataforma. Si no devuelve valor dentro de la primera sesión, es razonable dejarlo de lado. | Una instalación de dos minutos seguida de un error real. |


213| Técnica | Cómo aplicarla |213| Técnica | Cómo aplicarla |

214| - | - |214| - | - |

215| Proporcione el contexto correcto | Use referencias `@file` o `@directory/`, o pegue la salida de error o registro directamente. Proporcionar contexto relevante es más efectivo que un prompt elaborado. |215| Proporcione el contexto correcto | Use referencias `@file` o `@directory/`, o pegue la salida de error o registro directamente. Proporcionar contexto relevante es más efectivo que un prompt elaborado. |

216| Revise el plan antes de la edición | Presione `Shift+Tab` para entrar en plan mode. Claude describirá los cambios previstos para su aprobación antes de ejecutarlos. |216| Revisa el plan antes de la edición | Presiona `Shift+Tab` para entrar en modo plan. Claude investiga y propone cambios sin editar tu código fuente. |

217| Enseñe su repositorio | Ejecute `/init` para generar un archivo `CLAUDE.md`, luego agregue sus convenciones, comandos de prueba y cualquier directorio que no deba modificarse. Ver [Memory](/docs/es/memory). |217| Enseñe su repositorio | Ejecute `/init` para generar un archivo `CLAUDE.md`, luego agregue sus convenciones, comandos de prueba y cualquier directorio que no deba modificarse. Ver [Memory](/docs/es/memory). |

218| Reutilice un flujo de trabajo | Guarde un archivo `SKILL.md` en `.claude/skills/<name>/` para crear un skill `/name` que todo el equipo pueda usar. Ver [Skills](/docs/es/skills). |218| Reutilice un flujo de trabajo | Guarde un archivo `SKILL.md` en `.claude/skills/<name>/` para crear un skill `/name` que todo el equipo pueda usar. Ver [Skills](/docs/es/skills). |

219| Manténgase informado durante tareas largas | Configure un hook Stop para recibir una notificación de escritorio cuando se completa una tarea de larga duración. Ver [Hooks](/docs/es/hooks-guide). |219| Manténgase informado durante tareas largas | Configure un hook Stop para recibir una notificación de escritorio cuando se completa una tarea de larga duración. Ver [Hooks](/docs/es/hooks-guide). |

chrome.md +1 −1

Details

130En una sesión de VS Code, que Claude Code te pregunte antes de una acción del navegador depende de cómo se conectó la sesión a tu navegador:130En una sesión de VS Code, que Claude Code te pregunte antes de una acción del navegador depende de cómo se conectó la sesión a tu navegador:

131 131 

132* **Escribiste `@browser`**: la extensión aprueba cada acción del navegador sobre la que Claude Code de otro modo te preguntaría.132* **Escribiste `@browser`**: la extensión aprueba cada acción del navegador sobre la que Claude Code de otro modo te preguntaría.

133* **El ajuste [Enabled by default](#enable-chrome-by-default) la conectó al iniciar**: Claude Code te pregunta antes de las acciones del navegador en los modos de permisos Manual, Edit automatically, Auto y Bypass permissions, hasta que escribas `@browser` en esa sesión.133* **El ajuste [Enabled by default](#enable-chrome-by-default) la conectó al iniciar**: Claude Code te pregunta antes de las acciones del navegador en un sitio que no has permitido, en los modos de permisos Manual, Edit automatically, Auto y Bypass permissions, hasta que escribas `@browser` en esa sesión.

134 134 

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

136 Herramientas del navegador en Plan Mode136 Herramientas del navegador en Plan Mode

Details

79| Campo | Requerido | Descripción |79| Campo | Requerido | Descripción |

80| - | - | - |80| - | - | - |

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

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

83| `client_secret` | A menos que `token_endpoint_auth_method` sea `private_key_jwt` | De tu registro de cliente OAuth. Omítelo cuando uses [autenticación de cliente con certificado](#certificate-client-authentication). |

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

84| `allowed_groups` | No | Restrinja el inicio de sesión a miembros de estos grupos del IdP, comparados contra `groups_claim`. Un usuario en un dominio de correo electrónico permitido pero en ninguno de estos grupos es rechazado. Requiere que el IdP emita la reclamación de grupos. La coincidencia es una comparación de cadena exacta y sensible a mayúsculas y minúsculas contra los valores en esa reclamación, y la puerta de enlace no expande grupos anidados: para admitir miembros de un subgrupo, enumere el subgrupo aquí o configure el IdP para emitir membresía aplanada. |85| `allowed_groups` | No | Restrinja el inicio de sesión a miembros de estos grupos del IdP, comparados contra `groups_claim`. Un usuario en un dominio de correo electrónico permitido pero en ninguno de estos grupos es rechazado. Requiere que el IdP emita la reclamación de grupos. La coincidencia es una comparación de cadena exacta y sensible a mayúsculas y minúsculas contra los valores en esa reclamación, y la puerta de enlace no expande grupos anidados: para admitir miembros de un subgrupo, enumere el subgrupo aquí o configure el IdP para emitir membresía aplanada. |

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


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

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

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

94| `token_endpoint_auth_method` | No | Anule el método de autenticación del punto final del token. Acepta `client_secret_basic` o `client_secret_post`. Negociado automáticamente por defecto. |95| `token_endpoint_auth_method` | No | Cómo se autentica el gateway ante el endpoint de token del IdP: `client_secret_basic`, `client_secret_post` o `private_key_jwt` para la [autenticación de cliente con certificado](#certificate-client-authentication). Por defecto, el gateway elige uno de los dos métodos `client_secret` según lo que anuncie el IdP. |

96| `client_assertion` | Con `private_key_jwt` | Un bloque con `private_key_pem` y `certificate_pem`: la clave privada y el certificado para la [autenticación de cliente con certificado](#certificate-client-authentication). Requiere v2.1.284 o posterior. |

95| `id_token_signed_response_alg` | No | Algoritmo de firma id\_token esperado. Por defecto `RS256`. Establezca para IdPs que firman con ES256, PS256, o EdDSA. |97| `id_token_signed_response_alg` | No | Algoritmo de firma id\_token esperado. Por defecto `RS256`. Establezca para IdPs que firman con ES256, PS256, o EdDSA. |

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

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


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

100| `ca_cert_pem` | No | El certificado CA codificado en PEM en sí, no una ruta a un archivo. Reemplaza el almacén de confianza del sistema solo para solicitudes del IdP. Para cargar un archivo montado, escriba `${file:/etc/gateway/idp-ca.pem}`. Úselo para Keycloak o Dex detrás de PKI corporativa. |102| `ca_cert_pem` | No | El certificado CA codificado en PEM en sí, no una ruta a un archivo. Reemplaza el almacén de confianza del sistema solo para solicitudes del IdP. Para cargar un archivo montado, escriba `${file:/etc/gateway/idp-ca.pem}`. Úselo para Keycloak o Dex detrás de PKI corporativa. |

101 103 

104<h4 id="certificate-client-authentication">

105 Autenticación de cliente con certificado

106</h4>

107 

108Si tu proveedor de identidad autentica a los clientes OAuth con un certificado en lugar de un secreto de cliente, como hace Microsoft Entra con las credenciales de certificado, establece `token_endpoint_auth_method: private_key_jwt`. Requiere Claude Code v2.1.284 o posterior en el servidor del gateway.

109 

110Con esta configuración, el gateway no envía ningún secreto. Se autentica ante el endpoint de token del IdP con un JWT de corta duración firmado con la clave privada del certificado cuando un desarrollador inicia sesión y cada vez que el gateway actualiza su sesión. El JWT se firma con RS256 e identifica el certificado mediante los encabezados de huella digital `x5t` y `x5t#S256` en lugar de un `kid`. Tu IdP debe poder encontrar el certificado registrado por su huella digital.

111 

112<Steps>

113 <Step title="Crea la clave y el certificado">

114 Crea una clave privada RSA sin cifrar de al menos 2048 bits, en formato PEM PKCS#8 o PKCS#1, y un certificado para ella. El gateway se niega a iniciar con cualquier clave que no cumpla estas condiciones. Este comando `openssl` crea una clave así con un certificado autofirmado válido durante un año:

115 

116 ```bash theme={null}

117 openssl req -x509 -newkey rsa:2048 -nodes -keyout idp-client.key -out idp-client.crt -days 365 -subj "/CN=claude-gateway"

118 ```

119 

120 Escribe `idp-client.key` e `idp-client.crt` en el directorio actual. Copia o monta ambos archivos donde el gateway pueda leerlos. El ejemplo del paso 3 usa `/etc/gateway/`.

121 </Step>

122 

123 <Step title="Sube el certificado al IdP">

124 Sube el certificado, no la clave privada, al registro de aplicación del gateway en el IdP.

125 </Step>

126 

127 <Step title="Agrega la clave y el certificado a gateway.yaml">

128 Proporciona al gateway la clave privada y el certificado en un bloque `client_assertion`. Omite `client_secret`, porque el gateway se niega a iniciar cuando se establece junto con `private_key_jwt`. Este bloque `oidc` autentica el gateway ante un inquilino de Microsoft Entra con un certificado:

129 

130 ```yaml theme={null}

131 oidc:

132 issuer: https://login.microsoftonline.com/<tenant-id>/v2.0

133 client_id: <application-id>

134 token_endpoint_auth_method: private_key_jwt

135 client_assertion:

136 private_key_pem: ${file:/etc/gateway/idp-client.key}

137 certificate_pem: ${file:/etc/gateway/idp-client.crt}

138 ```

139 

140 Ambos valores son el contenido PEM, no rutas de archivo, así que carga los archivos montados con `${file:/path}` como hace el ejemplo. El gateway se niega a iniciar a menos que `certificate_pem` sea un único certificado PEM, sin el resto de su cadena, cuya clave pública coincida con `private_key_pem`.

141 </Step>

142 

143 <Step title="Reinicia el gateway y revisa el registro de arranque">

144 Reinicia el gateway y busca esta línea en el registro de arranque:

145 

146 ```text theme={null}

147 [gateway] 2026-10-01T23:07:40.512Z info oidc: client authentication private_key_jwt; certificate CN=claude-gateway, SHA-1 thumbprint DE92821854EE8BAA1D98C758FAA04AABE80B9F57, expires Oct 1 23:07:31 2027 GMT

148 ```

149 

150 Compara la huella digital SHA-1 con la que muestra el IdP para el certificado que subiste. Si el certificado ha expirado o aún no es válido, el gateway igualmente inicia, pero registra una advertencia de que los inicios de sesión y las actualizaciones fallarán hasta que lo reemplaces. Para confirmar que el IdP acepta el certificado, pide a un desarrollador que inicie sesión a través del gateway.

151 </Step>

152</Steps>

153 

154<h4 id="rotate-the-client-certificate">

155 Rotar el certificado de cliente

156</h4>

157 

158El gateway lee la clave y el certificado una sola vez al arrancar, así que un archivo modificado solo surte efecto tras un reinicio. Rota en este orden para que ninguna solicitud de token presente un certificado que el IdP no tenga:

159 

1601. Sube el nuevo certificado al IdP junto al antiguo.

1612. Reemplaza los archivos de clave y certificado que carga `gateway.yaml` y luego reinicia el gateway.

1623. Elimina el certificado antiguo del IdP.

163 

102<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

103 Solicitudes del IdP a través de un proxy directo165 Solicitudes del IdP a través de un proxy directo

104</h4>166</h4>


1120 1182 

1121Con la [salida solo a través del proxy](#proxy-only-egress) activada, permite el recopilador en el proxy, ya que cualquier entrada de `NO_PROXY` mantiene desactivada la salida solo a través del proxy.1183Con la [salida solo a través del proxy](#proxy-only-egress) activada, permite el recopilador en el proxy, ya que cualquier entrada de `NO_PROXY` mantiene desactivada la salida solo a través del proxy.

1122 1184 

1123La telemetría está desactivada en el CLI de forma predeterminada. Cuando estableces tanto `telemetry.forward_to` como `listen.public_url`, el gateway la activa para los clientes con sesión iniciada enviando seis variables de entorno a través de `/managed/settings`:1185La telemetría está desactivada en el CLI de forma predeterminada. Cuando estableces tanto `telemetry.forward_to` como `listen.public_url`, el gateway la activa para los clientes conectados enviando seis variables de entorno a través de `/managed/settings`:

1124 1186 

1125* `CLAUDE_CODE_ENABLE_TELEMETRY=1`1187* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

1126* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` y `OTEL_TRACES_EXPORTER`, cada una establecida en `otlp` si al menos un destino `forward_to` habilita esa señal y en `none` en caso contrario1188* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` y `OTEL_TRACES_EXPORTER`, cada una establecida en `otlp` si al menos un destino `forward_to` habilita esa señal y en `none` en caso contrario


1224| - | - | - | - |1286| - | - | - | - |

1225| `access_control` | `allow_cidrs` / `deny_cidrs` | vacío | Permiso o denegación de IP entrante según la dirección del cliente, después de la resolución de `trusted_proxies`. `deny_cidrs` se comprueba primero; un cliente que coincide con ella se rechaza aunque `allow_cidrs` también coincida. Si `allow_cidrs` no está vacía, el gateway deniega de forma 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 vez una advertencia que indica qué revisar. Si alguna de las listas se aplica a la solicitud, la rechaza con `403` y el motivo de auditoría `xff_unparseable`. Si ninguna se aplica, atiende la solicitud y usa la propia dirección del proxy como IP del cliente para los rate limits por IP y la auditoría. |1287| `access_control` | `allow_cidrs` / `deny_cidrs` | vacío | Permiso o denegación de IP entrante según la dirección del cliente, después de la resolución de `trusted_proxies`. `deny_cidrs` se comprueba primero; un cliente que coincide con ella se rechaza aunque `allow_cidrs` también coincida. Si `allow_cidrs` no está vacía, el gateway deniega de forma 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 vez una advertencia que indica qué revisar. Si alguna de las listas se aplica a la solicitud, la rechaza con `403` y el motivo de auditoría `xff_unparseable`. Si ninguna se aplica, atiende la solicitud y usa la propia dirección del proxy como IP del cliente para los rate limits por IP y la auditoría. |

1226| `limits` | `max_request_bytes` | 32 MiB | Tamaño máximo del cuerpo de la solicitud entrante; las solicitudes demasiado grandes reciben `413` antes de que el cuerpo se almacene en búfer. Auméntalo para solicitudes con archivos o imágenes grandes. |1288| `limits` | `max_request_bytes` | 32 MiB | Tamaño máximo del cuerpo de la solicitud entrante; las solicitudes demasiado grandes reciben `413` antes de que el cuerpo se almacene en búfer. Auméntalo para solicitudes con archivos o imágenes grandes. |

1227| `limits` | `max_request_header_bytes` | sin establecer | Cuando se establece, los encabezados demasiado grandes devuelven `431` |1289| `limits` | `max_request_header_bytes` | sin establecer | Reduce el límite de 256 KiB del gateway para el total de encabezados de una solicitud. Una solicitud que supera el límite devuelve `431`, y un valor superior a 256 KiB no tiene efecto. Si los desarrolladores reciben `431` después de iniciar sesión, consulta [Encabezados de solicitud demasiado grandes tras iniciar sesión](/docs/es/claude-apps-gateway-deploy#request-headers-too-large-after-sign-in). |

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

1229| `timeouts` | `upstream_ttfb_ms` | 120000 | Espera máxima para los encabezados de respuesta del upstream (tiempo hasta el primer byte). Después, el cuerpo de la respuesta se transmite sin límite de tiempo total. Se aplica a la ruta directa al upstream de Anthropic; en todos los demás proveedores, el gateway espera hasta una hora a que empiece la respuesta. |1291| `timeouts` | `upstream_ttfb_ms` | 120000 | Espera máxima para los encabezados de respuesta del upstream (tiempo hasta el primer byte). Después, el cuerpo de la respuesta se transmite sin límite de tiempo total. Se aplica a la ruta directa al upstream de Anthropic; en todos los demás proveedores, el gateway espera hasta una hora a que empiece la respuesta. |

1230| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Rate limit por IP en el endpoint no autenticado de autorización de dispositivo. Auméntalo para una organización grande detrás de una IP de salida compartida o NAT. [Despliegues a gran escala](/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 con concesión de dispositivo, no a la inferencia de `/v1/messages`. Consulta [Resistencia a la fuerza bruta del código de usuario](/docs/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1292| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Rate limit por IP en el endpoint no autenticado de autorización de dispositivo. Auméntalo para una organización grande detrás de una IP de salida compartida o NAT. [Despliegues a gran escala](/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 con concesión de dispositivo, no a la inferencia de `/v1/messages`. Consulta [Resistencia a la fuerza bruta del código de usuario](/docs/es/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

Details

25 Configuración del proveedor de identidad25 Configuración del proveedor de identidad

26</h2>26</h2>

27 27 

28Registre una aplicación web confidencial de OAuth/OpenID Connect (OIDC) con un único URI de redirección, `https://<gateway>/oauth/callback`, y asígnela a los usuarios o grupos que deben tener acceso a la puerta de enlace.28Registra una aplicación web confidencial de OAuth/OpenID Connect (OIDC) con un único URI de redirección, `https://<gateway>/oauth/callback`, y asígnala a los usuarios o grupos que deben tener acceso al gateway. El gateway se autentica ante el IdP con el secreto de cliente del registro, o con un certificado que subes al registro si tu IdP usa [credenciales de certificado](/docs/es/claude-apps-gateway-config#certificate-client-authentication) en su lugar.

29 29 

30Cualquier IdP compatible con OIDC funciona: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate y otros. El IdP debe cumplir tres requisitos:30Cualquier IdP compatible con OIDC funciona: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate y otros. El IdP debe cumplir tres requisitos:

31 31 


370 Solución de problemas370 Solución de problemas

371</h2>371</h2>

372 372 

373Para preguntas y comentarios, use [soporte de Claude Code](https://support.claude.com/en/collections/14445694-claude-code), o abra un problema en el [repositorio de GitHub de Claude Code](https://github.com/anthropics/claude-code/issues). Al reportar un problema, incluya:373Para preguntas y comentarios, usa el [soporte de Claude Code](https://support.claude.com/en/collections/14445694-claude-code) o abre un issue en el [repositorio de GitHub de Claude Code](https://github.com/anthropics/claude-code/issues). Al reportar un problema, incluye:

374 374 

375* **Problema de puerta de enlace**: el stderr de la puerta de enlace para la ventana relevante, su `gateway.yaml` con secretos redactados, la versión de la puerta de enlace, mostrada en la página de inicio en `/` y en el encabezado de respuesta `x-cc-gateway-version` en `/managed/settings`, y qué cambió recientemente375* **Problema del gateway**: el stderr del gateway para el intervalo correspondiente, tu `gateway.yaml` con los secretos ocultos, la versión del gateway, que se muestra en la página de inicio en `/` y en el encabezado de respuesta `x-cc-gateway-version` en `/managed/settings`, y qué cambió recientemente

376* **Problema de inicio de sesión**: el desarrollador ejecuta `claude --debug-file ./claude-debug.txt`, reproduce, y envía ese archivo más el registro de auditoría de la puerta de enlace para la misma ventana376* **Problema de inicio de sesión**: el desarrollador ejecuta `claude --debug-file ./claude-debug.txt`, reproduce el problema y envía ese archivo junto con el registro de auditoría del gateway para el mismo intervalo

377* **Problema de inferencia**: el modelo solicitado, los ascendentes configurados, y el registro de auditoría de la puerta de enlace para la solicitud, que registra qué ascendente la sirvió y el estado de respuesta377* **Problema de inferencia**: el modelo solicitado, los upstreams configurados y el registro de auditoría del gateway para la solicitud, que registra qué upstream la atendió y el estado de la respuesta

378 378 

379El stderr de la puerta de enlace incluye el flujo de eventos de auditoría, el registro de auditoría registra identidades de desarrolladores, y el archivo de depuración registra la salida de hooks y servidores MCP de la máquina del desarrollador. Revise y redacte estos antes de publicar en un problema público.379El stderr del gateway incluye el flujo de eventos de auditoría, el registro de auditoría registra las identidades de los desarrolladores y el archivo de depuración registra la salida de hooks y servidores MCP de la máquina del desarrollador. Revísalos y oculta la información sensible antes de publicarlos en un issue público.

380 380 

381| Síntoma | Causa | Solución |381| Síntoma | Causa | Solución |

382| - | - | - |382| - | - | - |

383| El `/login` de un desarrollador muestra el selector de cuenta estándar en lugar de la pantalla **Cloud gateway** | `forceLoginMethod` o `forceLoginGatewayUrl` no está establecido en configuraciones administradas en esa máquina | Implemente el [archivo de configuraciones administradas](/docs/es/claude-apps-gateway#set-the-gateway-url) en el dispositivo; `/login` lee la URL de la puerta de enlace desde allí |383| El `/login` de un desarrollador muestra el selector de cuenta estándar en lugar de la pantalla **Cloud gateway** | `forceLoginMethod` o `forceLoginGatewayUrl` no está establecido en la configuración administrada de esa máquina | Implementa el [archivo de configuración administrada](/docs/es/claude-apps-gateway#set-the-gateway-url) en el dispositivo; `/login` lee la URL del gateway desde allí |

384| Las solicitudes de un desarrollador fallan con `Not signed in to the Cloud gateway — run /login.` | La configuración administrada de la máquina establece `forceLoginMethod: "gateway"` o `forceLoginGatewayUrl`, y la sesión no tiene inicio de sesión de puerta de enlace. Un inicio de sesión de claude.ai sobrante no satisface el requisito. | Haga que el desarrollador ejecute `/login` y complete el inicio de sesión de la puerta de enlace. Consulte también [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |384| Las solicitudes de un desarrollador fallan con `Not signed in to the Cloud gateway — run /login.` | La configuración administrada de la máquina establece `forceLoginMethod: "gateway"` o `forceLoginGatewayUrl`, y la sesión no tiene un inicio de sesión en el gateway. Un inicio de sesión de claude.ai que haya quedado no satisface el requisito. | Pide al desarrollador que ejecute `/login` y complete el inicio de sesión en el gateway. Consulta también [La política del administrador requiere un inicio de sesión en el Cloud gateway](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

385| Claude Desktop reporta que su configuración de arranque no se pudo obtener | `/user/bootstrap` devolvió 404: la política que coincide con el usuario no lleva una clave `desktop`, o ninguna política coincidió. El registro de auditoría de la puerta de enlace registra cada rechazo como `desktop_bootstrap.denied` con la razón. | Agregue un bloque `desktop` a la política que coincide con el usuario, o a la capa base `match: {}`; un `desktop: {}` vacío es suficiente. Consulte [superposición de Claude Desktop](/docs/es/claude-apps-gateway-config#claude-desktop-overlay). |385| Claude Desktop informa que no se pudo obtener su configuración de arranque | `/user/bootstrap` devolvió 404: la política que coincide con el usuario no tiene una clave `desktop`, o ninguna política coincidió. El registro de auditoría del gateway registra cada rechazo como `desktop_bootstrap.denied` con el motivo. | Agrega un bloque `desktop` a la política que coincide con el usuario, o a la capa base `match: {}`; basta con un `desktop: {}` vacío. Consulta [Superposición de Claude Desktop](/docs/es/claude-apps-gateway-config#claude-desktop-overlay). |

386| El inicio muestra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La compilación de Claude Code instalada es anterior al soporte de puerta de enlace | Haga que el desarrollador actualice Claude Code a una versión que incluya soporte de puerta de enlace en la nube |386| Al iniciar se muestra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La compilación de Claude Code instalada es anterior al soporte del gateway | Pide al desarrollador que actualice Claude Code a una versión que incluya soporte para Cloud gateway |

387| El inicio sale con `Administrator policy requires a Cloud gateway sign-in on this machine` | El entorno del desarrollador establece `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, sus configuraciones configuran un [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), o una clave API de un inicio de sesión anterior de Claude Console aún está guardada | Haga que el desarrollador borre cada uno que se aplique: desestablezca la variable, elimine la entrada `apiKeyHelper`, o ejecute `claude auth logout` para eliminar la clave guardada. Una sesión que selecciona un proveedor de nube con `CLAUDE_CODE_USE_*` luego comienza sin inicio de sesión; para todas las otras sesiones, haga que comiencen `claude` e inicien sesión con `/login`. Consulte también [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |387| Al iniciar, sale con `Administrator policy requires a Cloud gateway sign-in on this machine` | El entorno del desarrollador establece `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, su configuración define un [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), o todavía hay guardada una clave de API de un inicio de sesión anterior en Claude Console | Pide al desarrollador que elimine cada uno que aplique: quitar la variable, eliminar la entrada `apiKeyHelper` o ejecutar `claude auth logout` para eliminar la clave guardada. Una sesión que selecciona un proveedor de nube con `CLAUDE_CODE_USE_*` entonces inicia sin inicio de sesión; para cualquier otra sesión, pídele que inicie `claude` e inicie sesión con `/login`. Consulta también [La política del administrador requiere un inicio de sesión en el Cloud gateway](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

388| El inicio o `/login` reporta `Claude Code may not be enabled for your organization` después de un 403 en la carga de configuraciones administradas | La puerta de enlace, o algo frente a ella, respondió la solicitud `/managed/settings` con 403. La ruta de configuraciones de la puerta de enlace nunca responde 403. El estado proviene de las verificaciones de IP de [`access_control`](/docs/es/claude-apps-gateway-config#http-tuning) o de un proxy o WAF frente a la puerta de enlace. El registro de auditoría registra una negación de verificación de IP como `access.denied` con la razón. El desarrollador permanece conectado. | Verifique el registro de auditoría para `access.denied` en el momento del fallo y corrija las listas de `access_control` o el front end, luego haga que el desarrollador inicie `claude` de nuevo |388| Al iniciar o en `/login` se informa `Claude Code may not be enabled for your organization` después de un 403 al cargar la configuración administrada | El gateway, o algo delante de él, respondió a la solicitud `/managed/settings` con 403. La propia ruta de configuración del gateway nunca responde 403. El estado proviene de las verificaciones de IP de [`access_control`](/docs/es/claude-apps-gateway-config#http-tuning) o de un proxy o WAF delante del gateway. El registro de auditoría registra un rechazo por verificación de IP como `access.denied` con el motivo. El desarrollador sigue con la sesión iniciada. | Busca `access.denied` en el registro de auditoría en el momento del fallo y corrige las listas de `access_control` o el front end; luego pide al desarrollador que inicie `claude` de nuevo |

389| CLI `/login`: `The gateway is limiting sign-in attempts right now`, o `Request failed with status code 429` en versiones anteriores. La página `/device` puede mostrar `Too many attempts` a desarrolladores que no han intentado antes | Se alcanzó el límite de velocidad de inicio de sesión por IP. Ya sea que `listen.trusted_proxies` no cubra el equilibrador de carga, por lo que cada desarrollador comparte su dirección, o muchos desarrolladores comparten una dirección de salida NAT o VPN. Los eventos de auditoría con `result: rate_limited` muestran los mismos uno o pocos valores de `client_ip`. | Establezca `listen.trusted_proxies` a los rangos de origen del equilibrador de carga primero, luego aumente `rate_limits` si los desarrolladores aún comparten direcciones. Consulte [Despliegues a gran escala](#large-rollouts). |389| CLI `/login`: `The gateway is limiting sign-in attempts right now`, o `Request failed with status code 429` en versiones anteriores. La página `/device` puede mostrar `Too many attempts` a desarrolladores que no lo han intentado antes | Se alcanzó el rate limit de inicio de sesión por IP. O bien `listen.trusted_proxies` no cubre el balanceador de carga, por lo que todos los desarrolladores comparten su dirección, o muchos desarrolladores comparten una dirección de salida de NAT o VPN. Los eventos de auditoría con `result: rate_limited` muestran el mismo valor de `client_ip` o unos pocos. | Primero establece `listen.trusted_proxies` en los rangos de origen del balanceador de carga y luego aumenta `rate_limits` si los desarrolladores siguen compartiendo direcciones. Consulta [Despliegues a gran escala](#large-rollouts). |

390| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | El nombre de host de la puerta de enlace se resuelve a al menos una dirección IP pública. Claude Code verifica cada dirección resuelta y requiere que cada una sea privada. Una causa común es un nombre de pila dual donde una familia se resuelve a una dirección pública, incluidos los equilibradores de carga de pila dual internos de AWS, que devuelven direcciones AAAA de rango público. | Haga que el nombre de la puerta de enlace se resuelva solo a direcciones privadas en máquinas de desarrolladores. Para un nombre de pila dual, suelte el registro de rango público o sirva un nombre DNS solo interno separado. Consulte el [requisito previo de red privada](/docs/es/claude-apps-gateway#prerequisites). Si la dirección es espacio de dirección pública que su organización posee y usa internamente, [declare ese bloque](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en su lugar. |390| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | El nombre de host del gateway se resuelve en al menos una dirección IP pública. Claude Code verifica cada dirección resuelta y exige que todas sean privadas. Una causa común es un nombre de doble pila en el que una familia se resuelve en una dirección pública, incluidos los balanceadores de carga internos de doble pila de AWS, que devuelven direcciones AAAA de rango público. | Haz que el nombre del gateway se resuelva solo en direcciones privadas en las máquinas de los desarrolladores. Para un nombre de doble pila, elimina el registro de rango público o sirve un nombre DNS aparte, solo interno. Consulta el [requisito previo de red privada](/docs/es/claude-apps-gateway#prerequisites). Si la dirección pertenece a un espacio público que tu organización posee y usa internamente, [declara ese bloque](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en su lugar. |

391| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica al host de la puerta de enlace y el nombre de host del proxy se resuelve a una dirección pública. Un proxy cuyo host se resuelve solo a direcciones privadas está permitido y no desencadena este error | Agregue el host de la puerta de enlace a `NO_PROXY` en la máquina del desarrollador para que la conexión sea directa, o use un proxy cuyo nombre de host se resuelva a direcciones privadas. El mensaje nombra la entrada exacta de `NO_PROXY` a agregar |391| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica al host del gateway y el nombre de host del proxy se resuelve en una dirección pública. Un proxy cuyo host se resuelve solo en direcciones privadas está permitido y no provoca este error | Agrega el host del gateway a `NO_PROXY` en la máquina del desarrollador para que la conexión sea directa, o usa un proxy cuyo nombre de host se resuelva en direcciones privadas. El mensaje indica la entrada exacta de `NO_PROXY` que debes agregar |

392| CLI `/login`: `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | La puerta de enlace está en un bloque declarado en [`gatewayInternalNetworks`](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), y la máquina del desarrollador la alcanzó desde una dirección fuera de ese bloque: un grupo de direcciones VPN, un segmento NAT de contenedor o WSL2, o una red que no es la suya | Haga que el desarrollador ejecute `/login` desde el SO del host en su red. Si la dirección mostrada también es espacio de dirección pública de su organización, reemplace la entrada de la puerta de enlace con un bloque que cubra ambas, hasta `/8`; se rechaza una segunda entrada superpuesta |392| CLI `/login`: `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | El gateway está en un bloque declarado en [`gatewayInternalNetworks`](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), y la máquina del desarrollador llegó a él desde una dirección fuera de ese bloque: un pool de direcciones de VPN, un segmento NAT de contenedor o de WSL2, o una red que no es tuya | Pide al desarrollador que ejecute `/login` desde el sistema operativo anfitrión en tu red. Si la dirección mostrada también pertenece al espacio público de tu organización, reemplaza la entrada del gateway por un bloque que cubra ambos, hasta `/8`; una segunda entrada superpuesta se rechaza |

393| CLI `/login`: `Every address for gateway host <host> must be inside its declared network <block>, and it also resolves to <ip>` | El nombre de la puerta de enlace se resuelve a una dirección fuera del bloque declarado en [`gatewayInternalNetworks`](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own): un segundo sitio, o un registro IPv6 en un nombre de pila dual. Bajo un bloque declarado, cada registro debe estar dentro de ese único bloque IPv4, direcciones privadas e IPv6 incluidas | Publique solo registros dentro del bloque para el nombre de la puerta de enlace en máquinas de desarrolladores, o sirva un nombre solo interno separado |393| CLI `/login`: `Every address for gateway host <host> must be inside its declared network <block>, and it also resolves to <ip>` | El nombre del gateway se resuelve en una dirección fuera del bloque declarado en [`gatewayInternalNetworks`](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own): un segundo sitio, o un registro IPv6 en un nombre de doble pila. Con un bloque declarado, todos los registros deben estar dentro de ese único bloque IPv4, incluidas las direcciones privadas e IPv6 | Publica solo registros dentro del bloque para el nombre del gateway en las máquinas de los desarrolladores, o sirve un nombre aparte, solo interno |

394| CLI `/login`: `<host> is on the declared network <block>, which Claude Code checks over a direct connection, not through an HTTP proxy` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica a una puerta de enlace en un bloque declarado | En la máquina del desarrollador, agregue la entrada de `NO_PROXY` que el mensaje nombra |394| CLI `/login`: `<host> is on the declared network <block>, which Claude Code checks over a direct connection, not through an HTTP proxy` | Un `HTTPS_PROXY` o `HTTP_PROXY` se aplica a un gateway en un bloque declarado | En la máquina del desarrollador, agrega la entrada de `NO_PROXY` que indica el mensaje |

395| CLI `/login`: un mensaje que comienza con `gatewayInternalNetworks in managed settings` | El valor infringe una de las [reglas de validación](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), y el mensaje nombra cuál. Hasta que lo corrija, Claude Code rechaza cada nuevo `/login` de puerta de enlace en la máquina, puertas de enlace en direcciones privadas incluidas; los inicios de sesión existentes siguen funcionando | En la fuente de configuraciones administradas que implementa, corrija la entrada que el mensaje nombra, luego reintente `/login` |395| CLI `/login`: un mensaje que comienza con `gatewayInternalNetworks in managed settings` | El valor infringe una de las [reglas de validación](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), y el mensaje indica cuál. Hasta que lo corrijas, Claude Code rechaza cualquier nuevo `/login` de gateway en la máquina, incluidos los gateways en direcciones privadas; los inicios de sesión existentes siguen funcionando | En la fuente de configuración administrada que implementas, corrige la entrada que indica el mensaje y luego vuelve a ejecutar `/login` |

396| CLI `/login`: `Could not resolve the configured HTTP proxy` | El nombre de host en `HTTPS_PROXY` o `HTTP_PROXY` no se resuelve desde la máquina del desarrollador, típicamente porque no está conectada a la red corporativa | Haga que el desarrollador se conecte a su red o VPN e intente de nuevo, o corrija la URL del proxy |396| CLI `/login`: `Could not resolve the configured HTTP proxy` | El nombre de host en `HTTPS_PROXY` o `HTTP_PROXY` no se resuelve desde la máquina del desarrollador, normalmente porque no está conectada a la red corporativa | Pide al desarrollador que se conecte a tu red o VPN y vuelva a intentarlo, o corrige la URL del proxy |

397| CLI `/login`: `Could not resolve gateway host <host>` | La máquina no puede resolver el nombre DNS interno de la puerta de enlace, típicamente porque no está en la red corporativa | Haga que el desarrollador se conecte a su red o VPN, luego reintente `/login` |397| CLI `/login`: `Could not resolve gateway host <host>` | La máquina no puede resolver el nombre DNS interno del gateway, normalmente porque no está en la red corporativa | Pide al desarrollador que se conecte a tu red o VPN y luego reintente `/login` |

398| El arranque sale con un error de validación de configuración nombrando `store.postgres_url` | No hay Postgres configurado; la puerta de enlace requiere Postgres | Establezca `store.postgres_url`. Para desarrollo local, use un contenedor desechable: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |398| El arranque sale con un error de validación de configuración que menciona `store.postgres_url` | No hay Postgres configurado; el gateway requiere Postgres | Establece `store.postgres_url`. Para desarrollo local, usa un contenedor desechable: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

399| El arranque sale: `requires the native binary` | Ejecutando bajo Node en lugar del binario nativo | Instale Claude Code con uno de los [métodos de instalación independiente](/docs/es/setup) |399| El arranque sale con: `requires the native binary` | Se está ejecutando con Node en lugar del binario nativo | Instala Claude Code con uno de los [métodos de instalación independiente](/docs/es/setup) |

400| El arranque sale con un error de descubrimiento OIDC después de `config.load` | `oidc.issuer` no alcanzable, o cadena TLS no confiable | Verifique que el emisor sea alcanzable desde el pod y sirva `/.well-known/openid-configuration`. Establezca `ca_cert_pem` para PKI privada. Si el pod alcanza el IdP solo a través de un proxy directo, establezca [`oidc.use_proxy: true`](/docs/es/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); en versiones anteriores a v2.1.227, proporcione al pod una ruta directa a cada uno de los puntos finales del IdP en su lugar. Si el pod tampoco puede resolver el nombre de host del IdP, o el proxy rechaza `CONNECT` a una dirección IP, consulte [Salida solo por proxy](/docs/es/claude-apps-gateway-config#proxy-only-egress), que requiere v2.1.277 o posterior. |400| El arranque sale con un error de descubrimiento OIDC después de `config.load` | `oidc.issuer` no es accesible, o la cadena TLS no es de confianza | Verifica que el emisor sea accesible desde el pod y sirva `/.well-known/openid-configuration`. Establece `ca_cert_pem` para una PKI privada. Si el pod llega al IdP solo a través de un proxy de reenvío, establece [`oidc.use_proxy: true`](/docs/es/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); en versiones anteriores a v2.1.227, dale al pod una ruta directa a cada uno de los endpoints del IdP en su lugar. Si el pod tampoco puede resolver el nombre de host del IdP, o el proxy rechaza `CONNECT` a una dirección IP, consulta [Salida solo por proxy](/docs/es/claude-apps-gateway-config#proxy-only-egress), que requiere v2.1.277 o posterior. |

401| El arranque sale con un error de permiso de Postgres | El rol de base de datos carece de derechos DDL en su esquema | Otorgue al rol `CREATE` en el esquema de la puerta de enlace para que pueda crear y alterar sus tablas en el arranque |401| El arranque sale con un error de permisos de Postgres | El rol de la base de datos no tiene derechos DDL sobre su esquema | Otorga al rol `CREATE` sobre el esquema del gateway para que pueda crear y modificar sus tablas al arrancar |

402| Registro: `could not connect to Postgres at boot, attempt 1 of 3` | La base de datos no era alcanzable cuando la puerta de enlace se inició, por ejemplo en una instancia fría cuya red aún se está iniciando | Si la puerta de enlace luego termina de arrancar, no se requiere acción. Cuando la base de datos no es alcanzable, la puerta de enlace intenta la conexión tres veces, dos segundos aparte, antes de salir. Si sale con `could not connect to Postgres`, verifique `store.postgres_url` y la ruta de red a la base de datos. Si los intentos se agota el tiempo de espera en lugar de ser rechazados, aumente [`store.connect_timeout_seconds`](/docs/es/claude-apps-gateway-config#store) para dar a cada uno más tiempo. |402| Registro: `could not connect to Postgres at boot, attempt 1 of 3` | La base de datos aún no era accesible cuando se inició el gateway, por ejemplo en una instancia en frío cuya red todavía se está levantando | Si el gateway luego termina de arrancar, no hace falta hacer nada. Cuando la base de datos no es accesible, el gateway intenta la conexión tres veces, con dos segundos de diferencia, antes de salir. Si sale con `could not connect to Postgres`, revisa `store.postgres_url` y la ruta de red hacia la base de datos. Si se agota el tiempo de espera de los intentos en lugar de ser rechazados, aumenta [`store.connect_timeout_seconds`](/docs/es/claude-apps-gateway-config#store) para darle más tiempo a cada uno. |

403| `/oauth/callback` muestra "Sign-in could not be completed" | Dominio de correo electrónico rechazado, validación de id\_token falló, o `email_verified` es explícitamente `false`, que la puerta de enlace siempre rechaza sin anulación | Verifique `allowed_email_domains` y que el IdP devuelva una reclamación `email` verificada. Para `email_verified: false`, corrija la verificación del lado del IdP. Si su IdP emite correo electrónico bajo un nombre de reclamación diferente, establezca `oidc.email_claim`. |403| `/oauth/callback` muestra "Sign-in could not be completed" | Dominio de correo electrónico rechazado, falló la validación del id\_token, o `email_verified` es explícitamente `false`, que el gateway siempre rechaza sin posibilidad de sobrescribirlo | Revisa `allowed_email_domains` y que el IdP devuelva un claim `email` verificado. Para `email_verified: false`, corrige la verificación del lado del IdP. Si tu IdP emite el correo electrónico con un nombre de claim diferente, establece `oidc.email_claim`. |

404| Registro: `token exchange failed request_id=<id>: id_token missing email claim` | El IdP no está incluyendo `email` en el id\_token de forma predeterminada. Este rechazo se dispara solo cuando `allowed_email_domains` está establecido; sin él, un correo electrónico faltante acuña una sesión sin correo electrónico | Configure el IdP para emitir `email` en el id\_token. Okta: agregue `email` a las reclamaciones de token de ID de un servidor de autorización personalizado. Entra: agregue `email` como una reclamación opcional en el registro de aplicación. PingFederate: habilite una Política de OpenID Connect que emita `email`. Si el IdP sirve `email` desde el punto final de userinfo pero no lo incluirá en el id\_token, como el servidor de autorización de la organización de Okta, establezca `oidc.userinfo_fallback: true`. |404| Registro: `token exchange failed request_id=<id>: id_token missing email claim` | El IdP no incluye `email` en el id\_token de forma predeterminada. Este rechazo solo se produce cuando `allowed_email_domains` está establecido; sin él, la falta de correo electrónico genera una sesión sin correo electrónico | Configura el IdP para que emita `email` en el id\_token. Okta: agrega `email` a los claims del token de ID de un servidor de autorización personalizado. Entra: agrega `email` como claim opcional en el registro de la aplicación. PingFederate: habilita una OpenID Connect Policy que emita `email`. Si el IdP sirve `email` desde el endpoint de userinfo pero no lo incluye en el id\_token, como el servidor de autorización de organización de Okta, establece `oidc.userinfo_fallback: true`. |

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

406| Cada solicitud de Amazon Bedrock devuelve 502; el registro muestra `Could not load credentials from any providers` | En EC2, el límite de salto predeterminado de IMDSv2 de 1 bloquea la solicitud de metadatos de instancia desde dentro del contenedor. El arranque y `/readyz` pasan de todas formas porque el SDK de AWS resuelve credenciales de instancia en la primera solicitud, no en la construcción del cliente | Aumente el límite de salto con `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, o establézcalo en la plantilla de lanzamiento. El cambio se aplica a cada contenedor en la instancia. Prefiera roles de tarea de ECS donde estén disponibles, que leen credenciales desde el punto final de credenciales del contenedor de ECS y evitan el cambio por completo, o aplique el cambio en una instancia de puerta de enlace dedicada para limitar la exposición. |406| Un desarrollador inicia sesión y luego todas las solicitudes de esa sesión fallan con un error `431` | El token de sesión en el encabezado `Authorization` de cada solicitud enumera los grupos del IdP del desarrollador, por lo que, para un desarrollador que pertenece a muchos grupos, los encabezados pueden superar en total lo que acepta el gateway | Consulta [Encabezados de solicitud demasiado grandes después de iniciar sesión](#request-headers-too-large-after-sign-in) para saber qué límite aplica y qué cambiar |

407| En carga máxima, las respuestas son lentas para comenzar o parecen colgarse, o fallan con un 502 `all upstreams failed` mientras el ascendente es saludable | Una réplica tiene más solicitudes abiertas que las que envía ascendente a la vez, por lo que las solicitudes adicionales esperan dentro de la puerta de enlace. En un ascendente `provider: anthropic`, una solicitud que espera más tiempo que `timeouts.upstream_ttfb_ms` se rinde en ese ascendente, que produce el 502 cuando ningún ascendente posterior lo sirve. El registro muestra una advertencia que contiene `client requests are open`. | Agregue réplicas, o aumente el límite en cada réplica. Consulte [Solicitudes ascendentes concurrentes](#concurrent-upstream-requests). |407| Todas las solicitudes a Amazon Bedrock devuelven 502; el registro muestra `Could not load credentials from any providers` | En EC2, el límite de saltos predeterminado de IMDSv2, que es 1, bloquea la solicitud de metadatos de instancia desde dentro del contenedor. El arranque y `/readyz` pasan de todos modos porque el SDK de AWS resuelve las credenciales de la instancia en la primera solicitud, no al construir el cliente | Aumenta el límite de saltos con `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, o establécelo en la plantilla de lanzamiento. El cambio se aplica a todos los contenedores de la instancia. Cuando estén disponibles, prefiere los roles de tarea de ECS, que leen las credenciales desde el endpoint de credenciales de contenedor de ECS y evitan el cambio por completo, o aplica el cambio en una instancia dedicada al gateway para limitar la exposición. |

408| Error de IdP: unknown or unsupported scope | El IdP rechaza alcances que no reconoce | Establezca `oidc.scopes` exactamente a la lista que su IdP acepta; debe incluir `openid`. El predeterminado es `openid profile email offline_access`. |408| Con carga máxima, las respuestas tardan en empezar o parecen colgarse, o fallan con un 502 `all upstreams failed` aunque el upstream esté en buen estado | Una réplica tiene más solicitudes abiertas de las que envía al upstream a la vez, por lo que las solicitudes adicionales esperan dentro del gateway. En un upstream `provider: anthropic`, una solicitud que espera más de `timeouts.upstream_ttfb_ms` abandona ese upstream, lo que produce el 502 cuando ningún upstream posterior la atiende. El registro muestra una advertencia que contiene `client requests are open`. | Agrega réplicas o aumenta el límite en cada réplica. Consulta [Solicitudes upstream concurrentes](#concurrent-upstream-requests). |

409| Las sesiones no se renuevan silenciosamente después de establecer `oidc.scopes` | `offline_access` fue eliminado de la anulación | Agregue `offline_access` de vuelta si su IdP lo admite. Sin un token de actualización, los desarrolladores vuelven a ejecutar el inicio de sesión del navegador cada `session.ttl_hours`. |409| Error del IdP: unknown or unsupported scope | El IdP rechaza los alcances que no reconoce | Establece `oidc.scopes` exactamente en la lista que acepta tu IdP; debe incluir `openid`. El valor predeterminado es `openid profile email offline_access`. |

410| El navegador muestra "This request came from another site and was blocked" | POST de formulario entre sitios, bloqueado como protección CSRF. Esperado para páginas incrustadas o proxied | Abra el enlace de verificación directamente |410| Las sesiones no se renuevan de forma silenciosa después de establecer `oidc.scopes` | `offline_access` se eliminó en la sobrescritura | Vuelve a agregar `offline_access` si tu IdP lo admite. Sin un token de actualización, los desarrolladores vuelven a hacer el inicio de sesión en el navegador cada `session.ttl_hours`. |

411| Chrome bloquea el botón Aprobar con "Refused to send form data … violates … Content Security Policy directive: form-action", pero la misma página funciona en Safari o Firefox | Chrome impone `form-action` contra toda la cadena de redirección. Su IdP redirige hacia adelante a un segundo host que no está en la lista blanca. | Agregue cada origen adicional en la cadena de redirección a `oidc.form_action_origins`. Abra Chrome DevTools → Consola en la página Aprobar para ver qué origen fue bloqueado. |411| El navegador muestra "This request came from another site and was blocked" | POST de formulario entre sitios, bloqueado como protección contra CSRF. Es lo esperado en páginas incrustadas o servidas a través de un proxy | Abre el enlace de verificación directamente |

412| El inicio de sesión se completa en el IdP pero la devolución de llamada falla, con un error de CSP en Chrome o "this sign-in link has expired" en Safari | El IdP devolvió el código a través de `response_mode=form_post`, que lo auto-envía entre orígenes a través de POST a `/oauth/callback`. Chrome bloquea eso bajo una CSP estricta; Safari permite el envío pero la devolución de llamada lee solo la cadena de consulta. | Asegúrese de que su IdP honre `response_mode=query`, que la puerta de enlace solicita explícitamente para que la devolución de llamada sea una redirección simple |412| Chrome bloquea el botón Aprobar con "Refused to send form data … violates … Content Security Policy directive: form-action", pero la misma página funciona en Safari o Firefox | Chrome aplica `form-action` a toda la cadena de redirecciones. Tu IdP redirige a continuación a un segundo host que no está en la lista de permitidos. | Agrega a `oidc.form_action_origins` cada origen adicional de la cadena de redirecciones. Abre Chrome DevTools → Console en la página Aprobar para ver qué origen se bloqueó. |

413| El inicio de sesión funciona localmente pero falla detrás de un ALB | `public_url` aún nombra el origen local o interno `http://`, por lo que el IdP obtiene el `redirect_uri` incorrecto | Establezca `listen.public_url` al origen externo `https://` y registre `<public_url>/oauth/callback` con el IdP |413| El inicio de sesión se completa en el IdP pero el callback falla, con un error de CSP en Chrome o "this sign-in link has expired" en Safari | El IdP devolvió el código mediante `response_mode=form_post`, que lo envía automáticamente entre orígenes mediante POST a `/oauth/callback`. Chrome lo bloquea con una CSP estricta; Safari permite el envío, pero el callback solo lee la cadena de consulta. | Asegúrate de que tu IdP respete `response_mode=query`, que el gateway solicita explícitamente para que el callback sea una redirección simple |

414| El desarrollador ve el indicador de confianza repetidamente | El certificado TLS está rotando por réplica o por solicitud | Use un certificado estable en el ingress, o termine TLS una vez y ejecute réplicas sobre HTTP simple internamente |414| El inicio de sesión funciona localmente pero falla detrás de un ALB | `public_url` todavía indica el origen `http://` local o interno, por lo que el IdP recibe un `redirect_uri` incorrecto | Establece `listen.public_url` en el origen `https://` externo y registra `<public_url>/oauth/callback` en el IdP |

415| CLI `/login`: "Could not verify the gateway's TLS certificate" o `SELF_SIGNED_CERT_IN_CHAIN` | La cadena TLS de la puerta de enlace está firmada por una CA privada no en el almacén de confianza del host CLI | Claude Code lee el almacén de confianza del SO de forma predeterminada en el binario nativo y en Node 22.15 o posterior; [`CLAUDE_CODE_CERT_STORE`](/docs/es/network-config#ca-certificate-store) controla este comportamiento. Si la CA está instalada en el almacén de confianza del SO, asegúrese de que los desarrolladores estén en un tiempo de ejecución actual. De lo contrario, establezca `NODE_EXTRA_CA_CERTS` al PEM del certificado de CA antes de lanzar. El indicador de huella digital de primera conexión aún se aplica. |415| El desarrollador ve la solicitud de confianza repetidamente | El certificado TLS cambia según la réplica o según la solicitud | Usa un certificado estable en el ingress, o termina TLS una sola vez y ejecuta las réplicas internamente sobre HTTP simple |

416| CLI `/login` completa el inicio de sesión del navegador, luego la sesión termina con `Cloud gateway sign-in was not completed` y una falta de coincidencia de certificado TLS | En la primera solicitud después del inicio de sesión, la puerta de enlace presentó un certificado que no coincide con la huella digital que Claude Code fijó, por lo que Claude Code no mantuvo ninguna credencial de puerta de enlace. Las causas habituales son réplicas detrás de una dirección que sirven certificados diferentes, o algo en la ruta de red que intercepta TLS. | Sirva un certificado para el nombre de host, por ejemplo terminando TLS una vez en el ingress, luego haga que el desarrollador ejecute `/login` de nuevo. Si ese certificado difiere del fijado, Claude Code muestra el [indicador de confianza](/docs/es/claude-apps-gateway#connect-developers) de nuevo con una advertencia de que el certificado cambió. |416| CLI `/login`: "Could not verify the gateway's TLS certificate" o `SELF_SIGNED_CERT_IN_CHAIN` | La cadena TLS del gateway está firmada por una CA privada que no está en el almacén de confianza del host de la CLI | Claude Code lee el almacén de confianza del sistema operativo de forma predeterminada en el binario nativo y en Node 22.15 o posterior; [`CLAUDE_CODE_CERT_STORE`](/docs/es/network-config#ca-certificate-store) controla este comportamiento. Si la CA está instalada en el almacén de confianza del sistema operativo, asegúrate de que los desarrolladores usen un runtime actual. De lo contrario, establece `NODE_EXTRA_CA_CERTS` en el PEM del certificado de la CA antes de iniciar. La solicitud de confirmación de huella digital en la primera conexión sigue aplicándose. |

417| CLI `/login` se detiene con `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | Una solicitud de inicio de sesión llegó a un servidor cuyo certificado no coincide con el que el desarrollador aceptó cuando `/login` comenzó: réplicas detrás de una dirección que sirven certificados diferentes, interceptación de TLS en la ruta, o una rotación de certificado mientras el inicio de sesión estaba en progreso. | Sirva un certificado para el nombre de host, luego haga que el desarrollador inicie el inicio de sesión de nuevo y revise el nuevo certificado en el [indicador de confianza](/docs/es/claude-apps-gateway#connect-developers). |417| CLI `/login` completa el inicio de sesión en el navegador y luego la sesión termina con `Cloud gateway sign-in was not completed` y una discrepancia de certificado TLS | En la primera solicitud después de iniciar sesión, el gateway presentó un certificado que no coincide con la huella digital que Claude Code fijó, por lo que Claude Code no conservó ninguna credencial del gateway. Las causas habituales son réplicas detrás de una misma dirección que sirven certificados diferentes, o algo en la ruta de red que intercepta TLS. | Sirve un único certificado para el nombre de host, por ejemplo terminando TLS una sola vez en el ingress, y luego pide al desarrollador que ejecute `/login` de nuevo. Si ese certificado difiere del fijado, Claude Code vuelve a mostrar la [solicitud de confianza](/docs/es/claude-apps-gateway#connect-developers) con una advertencia de que el certificado cambió. |

418 418| CLI `/login` se detiene con `The gateway's TLS certificate changed during sign-in: it no longer matches the one you trusted` | Una solicitud de inicio de sesión llegó a un servidor cuyo certificado no coincide con el que el desarrollador aceptó cuando comenzó `/login`: réplicas detrás de una misma dirección que sirven certificados diferentes, interceptación de TLS en la ruta, o una rotación de certificado mientras el inicio de sesión estaba en curso. | Sirve un único certificado para el nombre de host y luego pide al desarrollador que vuelva a iniciar el inicio de sesión y revise el nuevo certificado en la [solicitud de confianza](/docs/es/claude-apps-gateway#connect-developers). |

419El mensaje `Cloud gateway sign-in was not completed` nombra el nombre de host de la puerta de enlace. Cuando Claude Code tiene tanto la huella digital fijada como la presentada, el mensaje también muestra los primeros 16 caracteres de cada una.419 

420 420El mensaje `Cloud gateway sign-in was not completed` indica el nombre de host del gateway. Cuando Claude Code tiene tanto la huella digital fijada como la presentada, el mensaje también muestra los primeros 16 caracteres de cada una.

421Si Claude Code reporta `couldn't load your organization's managed settings` después de un inicio de sesión de puerta de enlace, Claude Code nombra la razón, se reinicia en su lugar, y reanuda la conversación. Si Claude Code no puede reiniciarse, por ejemplo en una sesión de fondo, Claude Code termina la sesión y mantiene el inicio de sesión.421 

422Si Claude Code informa `couldn't load your organization's managed settings` después de un inicio de sesión en el gateway, Claude Code indica el motivo, se reinicia en el mismo lugar y reanuda la conversación. Si Claude Code no puede reiniciarse, por ejemplo en una sesión en segundo plano, Claude Code termina la sesión y conserva el inicio de sesión.

423 

424<h3 id="request-headers-too-large-after-sign-in">

425 Encabezados de solicitud demasiado grandes después de iniciar sesión

426</h3>

427 

428Las solicitudes de un desarrollador pueden fallar con un error `431` después de iniciar sesión cuando el desarrollador pertenece a muchos grupos del IdP.

429 

430El gateway responde `431` cuando los encabezados de una solicitud suman más de 256 KiB, o más de [`limits.max_request_header_bytes`](/docs/es/claude-apps-gateway-config#http-tuning) si lo estableces. No escribe ninguna línea de registro ni evento de auditoría para estas solicitudes. Las versiones del gateway anteriores a v2.1.284 responden `431` por encima de 16 KiB.

431 

432Lo que debes cambiar depende de la versión y la configuración de tu gateway:

433 

434* **Gateway anterior a v2.1.284**: actualiza el gateway

435* **`limits.max_request_header_bytes` establecido**: aumenta el valor o elimina la clave

436* **No aplica ninguno de los dos, o el `431` continúa después**: haz que tu IdP emita menos grupos. [Configuración del proveedor de identidad](#identity-provider-setup) explica cómo Okta, Microsoft Entra ID y Google Workspace proporcionan los grupos

422 437 

423<h2 id="related">438<h2 id="related">

424 Relacionado439 Relacionado

Details

1598 1598 

1599`<project>` es la ruta de su directorio de trabajo con cada carácter que no sea letra o dígito reemplazado por `-`, como `-Users-you-my-project`. Si establece [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars), el árbol se mueve bajo ese directorio en su lugar. Los hooks reciben la ruta de la sesión actual como [`scratchpad_dir`](/docs/es/hooks#common-input-fields).1599`<project>` es la ruta de su directorio de trabajo con cada carácter que no sea letra o dígito reemplazado por `-`, como `-Users-you-my-project`. Si establece [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars), el árbol se mueve bajo ese directorio en su lugar. Los hooks reciben la ruta de la sesión actual como [`scratchpad_dir`](/docs/es/hooks#common-input-fields).

1600 1600 

1601Los archivos del bloc de notas duran tanto como la transcripción de la sesión: el [barrido de retención](#cleaned-up-automatically) elimina el directorio cuando elimina la transcripción, y [`claude project purge`](#clear-local-data) no toca el directorio temporal. Debido a que el directorio se encuentra bajo la ubicación temporal del sistema, su sistema operativo también puede borrarlo, como al reiniciar. Para mantener algo que Claude escribió allí, pida a Claude que lo mueva a su proyecto.1601Los archivos del bloc de notas duran tanto como la transcripción de la sesión: el [barrido de retención](#cleaned-up-automatically) elimina el directorio cuando elimina la transcripción, y [`claude purge`](#clear-local-data) no toca el directorio temporal. Debido a que el directorio se encuentra bajo la ubicación temporal del sistema, tu sistema operativo también puede borrarlo, como al reiniciar. Para conservar algo que Claude escribió allí, pide a Claude que lo mueva a tu proyecto.

1602 1602 

1603Una sesión tiene un bloc de notas solo cuando se cumplen todos estos:1603Una sesión tiene un bloc de notas solo cuando se cumplen todos estos:

1604 1604 


1645 Borrar datos locales1645 Borrar datos locales

1646</h3>1646</h3>

1647 1647 

1648Ejecute `claude project purge` para eliminar el estado que Claude Code mantiene para un proyecto. Elimina:1648Ejecuta `claude purge` para eliminar el estado que Claude Code mantiene para un proyecto. Elimina:

1649 1649 

1650* Transcripciones y memoria automática bajo `projects/`1650* Transcripciones y memoria automática bajo `projects/`

1651* Entradas por sesión de `tasks/`, `debug/` y `file-history/`1651* Entradas por sesión de `tasks/`, `debug/` y `file-history/`


1656 1656 

1657El comando imprime el plan de eliminación completo y solicita confirmación antes de eliminar cualquier cosa.1657El comando imprime el plan de eliminación completo y solicita confirmación antes de eliminar cualquier cosa.

1658 1658 

1659Antes de v2.1.288, el comando era `claude project purge`.

1660 

1659Los ejemplos a continuación usan `~/work/my-repo` como marcador de posición. Reemplácelo con la ruta a su proyecto. Si ningún estado coincide con la ruta, el comando imprime un error y sale con estado 1.1661Los ejemplos a continuación usan `~/work/my-repo` como marcador de posición. Reemplácelo con la ruta a su proyecto. Si ningún estado coincide con la ruta, el comando imprime un error y sale con estado 1.

1660 1662 

1661Obtenga una vista previa del plan sin eliminar nada:1663Obtenga una vista previa del plan sin eliminar nada:

1662 1664 

1663```bash theme={null}1665```bash theme={null}

1664claude project purge ~/work/my-repo --dry-run1666claude purge ~/work/my-repo --dry-run

1665```1667```

1666 1668 

1667El plan enumera cada elemento coincidente y por qué se incluye:1669El plan enumera cada elemento coincidente y por qué se incluye:


1684Elimine con un único mensaje de confirmación:1686Elimine con un único mensaje de confirmación:

1685 1687 

1686```bash theme={null}1688```bash theme={null}

1687claude project purge ~/work/my-repo1689claude purge ~/work/my-repo

1688```1690```

1689 1691 

1690El comando imprime el mismo plan, luego pregunta `Delete 3 item(s) for /home/user/work/my-repo? This cannot be undone. [y/N]` y elimina solo si responde `y`.1692El comando imprime el mismo plan, luego pregunta `Delete 3 item(s) for /home/user/work/my-repo? This cannot be undone. [y/N]` y elimina solo si responde `y`.


1694Omita el mensaje de confirmación para usar en scripts:1696Omita el mensaje de confirmación para usar en scripts:

1695 1697 

1696```bash theme={null}1698```bash theme={null}

1697claude project purge ~/work/my-repo --yes1699claude purge ~/work/my-repo --yes

1698```1700```

1699 1701 

1700Pase `--all` en lugar de una ruta para purgar el estado de cada proyecto a la vez, lo que elimina `history.jsonl` directamente en lugar de filtrarlo. Pase `-i` para recorrer el plan de eliminación un elemento a la vez.1702Pase `--all` en lugar de una ruta para purgar el estado de cada proyecto a la vez, lo que elimina `history.jsonl` directamente en lugar de filtrarlo. Pase `-i` para recorrer el plan de eliminación un elemento a la vez.

Details

500 Limitaciones500 Limitaciones

501</h2>501</h2>

502 502 

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

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

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

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

Details

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

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

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

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

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

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

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


51 51 

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

53 53 

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

55 55 

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

57 Banderas CLI57 Banderas CLI

Details

118 Agregar una credencial118 Agregar una credencial

119</h4>119</h4>

120 120 

121Agrega credenciales una a la vez desde el editor de un entorno que ya existe. El diálogo para un nuevo entorno no las ofrece. Tampoco hay edición. Para cambiar los hosts o el valor de una credencial, elimínela y agréguela de nuevo.121Agregas credenciales una a la vez, y no puedes editar una credencial después de agregarla. Para cambiar los hosts o el valor de una credencial, elimínala y agrégala de nuevo.

122 122 

123<Steps>123<Steps>

124 <Step title="Abrir las credenciales de API del entorno">124 <Step title="Abrir las credenciales de API del entorno">

125 [Abra el entorno para editar](#configure-your-environment) en [claude.ai/code](https://claude.ai/code). En el diálogo **Editar entorno en la nube**, encuentre **Credenciales de API** debajo de **Variables de entorno**. Ve las credenciales ya en el entorno, cada una con los hosts a los que se aplica.125 [Abre el entorno para editar](#configure-your-environment) en [claude.ai/code](https://claude.ai/code). En el diálogo **Editar entorno**, busca la sección **Credenciales de API**. Ves las credenciales que ya están en el entorno, cada una con los hosts a los que se aplica.

126 </Step>126 </Step>

127 127 

128 <Step title="Agregar la credencial">128 <Step title="Agregar la credencial">

129 Seleccione **Agregar credencial** y complete el formulario. Mantenga el **Tipo de credencial** predeterminado, **Bearer**, para una clave de API que viaja en un encabezado de solicitud, y complete estos campos:129 Selecciona **Agregar credencial** y completa el formulario. Mantén el **Tipo de credencial** predeterminado, **Bearer**, para una clave de API que viaja en un encabezado de solicitud, y completa estos campos:

130 130 

131 * **Nombre**: una etiqueta para la credencial, como `API de facturación interna`131 * **Nombre**: una etiqueta para la credencial, como `API de facturación interna`

132 * **Sitios web permitidos**: los hosts de la API, como `api.example.com`. Un `*.` inicial coincide con cada subdominio132 * **Sitios web permitidos**: los hosts de la API, como `api.example.com`. Un `*.` inicial coincide con cada subdominio

code-review.md +4 −3

Details

343 343 

344 También puede agregar indicadores:344 También puede agregar indicadores:

345 345 

346 * `--fix`: aplica los hallazgos a su árbol de trabajo después de la revisión346 * `--fix`: aplica los hallazgos a tu árbol de trabajo después de la revisión

347 * `--comment`: publica los hallazgos como comentarios en línea en una solicitud de extracción de GitHub, o como una nota única en una solicitud de fusión de GitLab347 * `--comment`: publica los hallazgos como comentarios en línea en un pull request de GitHub, o como una nota única en un merge request de GitLab

348 * `--post`: en una revisión en la nube `ultra` de una solicitud de extracción de `github.com`, preselecciona publicar los hallazgos terminados en el PR en el diálogo de lanzamiento; consulte [Publicar hallazgos en la solicitud de extracción](/docs/es/ultrareview#post-findings-to-the-pull-request). Requiere Claude Code v2.1.227 o posterior348 * `--post`: en una revisión en la nube `ultra` de un pull request de `github.com`, preselecciona publicar los hallazgos terminados en el PR en el diálogo de lanzamiento; consulta [Publicar hallazgos en el pull request](/docs/es/ultrareview#post-findings-to-the-pull-request). Requiere Claude Code v2.1.227 o posterior

349 * `--max-findings <n>`, `--max-findings all` o `--max-findings default`: reporta hasta `n` hallazgos, o todos los hallazgos con `all`, en lugar del límite habitual de la revisión. Las revisiones posteriores reutilizan el valor que escribiste hasta que pases `--max-findings default`. Requiere Claude Code v2.1.288 o posterior

349 350 

350 Cuando pasa `--comment` para una solicitud de fusión de GitLab, Claude Code publica los hallazgos a través de la CLI `glab` de GitLab. Requiere Claude Code v2.1.257 o posterior. Cuando `glab` no está instalado, Claude imprime los hallazgos en la terminal en su lugar.351 Cuando pasa `--comment` para una solicitud de fusión de GitLab, Claude Code publica los hallazgos a través de la CLI `glab` de GitLab. Requiere Claude Code v2.1.257 o posterior. Cuando `glab` no está instalado, Claude imprime los hallazgos en la terminal en su lugar.

351 352 

commands.md +2 −2

Details

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 la [API de Claude](https://platform.claude.com/docs/en/api/overview) y de [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el lenguaje de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Para saber qué hace cada subcomando y la versión que requiere, consulta [Trabajar en proyectos de la API de Claude](/docs/es/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de la [API de Claude](https://platform.claude.com/docs/en/api/overview) y de [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el lenguaje de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Para saber qué hace cada subcomando y la versión que requiere, consulta [Trabajar en proyectos de la API de Claude](/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, completar un formulario o leer los registros de la consola, a través de [Claude in Chrome](/docs/es/chrome). Disponible cuando la integración con Chrome está habilitada para la sesión, por ejemplo con `claude --chrome`, o cuando Claude Code puede ofrecer [instalar la extensión](/docs/es/chrome#install-the-extension-when-claude-asks) |73| `/claude-in-chrome [task]` | **[Skill](/docs/es/skills#bundled-skills).** Haz que Claude realice una tarea en tu navegador, como probar una página, completar un formulario o leer los registros de la consola, a través de [Claude in Chrome](/docs/es/chrome). Disponible cuando la integración con Chrome está habilitada para la sesión, por ejemplo con `claude --chrome`, o cuando Claude Code puede ofrecer [instalar la extensión](/docs/es/chrome#install-the-extension-when-claude-asks) |

74| `/clear [name]` | Inicia una nueva conversación con el contexto vacío. Pasa un nombre para etiquetar la conversación anterior en el selector de `/resume`. Para liberar contexto sin dejar 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 rewind](/docs/es/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |74| `/clear [name]` | Inicia una nueva conversación con el contexto vacío. Pasa un nombre para etiquetar la conversación anterior en el selector de `/resume`. Para liberar contexto sin dejar 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 rewind](/docs/es/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |

75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el diff actual, o un número de PR, una rama o una ruta que pases, en busca de errores de corrección. Según tu modelo y tu nivel de esfuerzo, la revisión también cubre oportunidades de limpieza. Pasa `--fix` para aplicar los hallazgos, `--comment` para publicarlos en el PR de GitHub o en el merge request de GitLab, o `ultra` para ejecutar una [revisión en la nube](/docs/es/ultrareview) profunda. Publicar en un merge request de GitLab requiere Claude Code v2.1.257 o posterior. Con `ultra` sobre un PR de `github.com` como destino, 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 inicio; `--post` requiere Claude Code v2.1.227 o posterior. Consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para conocer los niveles de esfuerzo, cómo elegir el destino y cómo se relaciona con `/simplify`. Alias: `/review` |75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el diff actual, o un número de PR, una rama o una ruta que pases, en busca de errores de corrección. Según tu modelo y tu nivel de esfuerzo, la revisión también cubre oportunidades de limpieza. Pasa `--fix` para aplicar los hallazgos, `--comment` para publicarlos en el PR de GitHub o en el merge request de GitLab, o `ultra` para ejecutar una [revisión en la nube](/docs/es/ultrareview) profunda. Publicar en un merge request de GitLab requiere Claude Code v2.1.257 o posterior. Con `ultra` sobre un PR de `github.com` como destino, 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 inicio; `--post` requiere Claude Code v2.1.227 o posterior. Consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para conocer los niveles de esfuerzo, cómo elegir el destino y cómo se relaciona con `/simplify`. Alias: `/review` |

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

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

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


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

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

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

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

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

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

140| `/run-skill-generator` | **[Skill](/docs/es/skills#bundled-skills).** Enséñales a `/run` y `/verify` cómo compilar, iniciar y manejar la app de tu proyecto desde un entorno limpio escribiendo un [skill](/docs/es/skills#run-and-verify-your-app) por proyecto |140| `/run-skill-generator` | **[Skill](/docs/es/skills#bundled-skills).** Enséñales a `/run` y `/verify` cómo compilar, iniciar y manejar la app de tu proyecto desde un entorno limpio escribiendo un [skill](/docs/es/skills#run-and-verify-your-app) por proyecto |

Details

42<Tabs>42<Tabs>

43 <Tab title="Correo electrónico">43 <Tab title="Correo electrónico">

44 ```text theme={null}44 ```text theme={null}

45 Asunto: Claude Code está activo para [Ingeniería / su equipo]45 Asunto: Claude Code ya está disponible para [Ingeniería / tu equipo]

46 46 

47 Equipo,47 Equipo:

48 48 

49 A partir de hoy tiene acceso a Claude Code, un agente de codificación de IA que se ejecuta en49 A partir de hoy tienen acceso a Claude Code, un agente de codificación con IA que se ejecuta en

50 su terminal, lee su base de código real y trabaja en tareas reales de principio a fin:50 su terminal, lee su base de código real y trabaja en tareas reales de principio

51 depuración, refactorizaciones, pruebas, PRs. No es autocompletado y no es51 a fin: depuración, refactorizaciones, pruebas, PRs. No es autocompletado ni

52 una ventana de chat. Edita archivos, ejecuta sus comandos y pide permiso52 una ventana de chat. Edita archivos y ejecuta sus comandos.

53 antes de hacer algo arriesgado.

54 53 

55 Comience en dos minutos:54 Empiecen en dos minutos:

56 55 

57 curl -fsSL https://claude.ai/install.sh | bash56 curl -fsSL https://claude.ai/install.sh | bash

58 cd <su-repositorio>57 cd <tu-repositorio>

59 claude58 claude

60 59 

61 Luego ejecute /init una vez. Claude lee su proyecto y escribe un CLAUDE.md con60 Luego ejecuten /init una vez. Claude lee su proyecto y escribe un CLAUDE.md con

62 sus comandos de compilación y convenciones, para que deje de re-explicar lo básico.61 sus comandos de compilación y convenciones, para que dejen de volver a explicar lo básico.

63 62 

64 Luego intente uno de estos en el repositorio en el que ya está:63 Después prueben uno de estos en el repositorio en el que ya están:

65 64 

66 - "La prueba en [archivo] es inestable. Averigüe por qué y arréglela"65 - "La prueba en [archivo] es inestable. Averigua por qué y arréglala"

67 - "Caminemos a través de cómo [módulo] maneja [X]"66 - "Explícame cómo [módulo] maneja [X]"

68 - "Mira mi diff de trabajo y dime qué es arriesgado antes de que lo envíe"67 - "Mira mi diff de trabajo y dime qué es arriesgado antes de hacer push"

69 68 

70 Dónde va su código: Claude Code se ejecuta en su terminal y se comunica directamente69 A dónde va su código: Claude Code se ejecuta en su terminal y se comunica directamente

71 con la API de Anthropic, sin servidores de terceros en el medio. Pide permiso antes de70 con la API de Anthropic. En nuestro plan Team o Enterprise, Anthropic no usa

72 editar archivos o ejecutar comandos. En nuestro plan Team o Enterprise, Anthropic71 su código ni sus prompts para entrenar sus modelos.

73 no utiliza su código o indicaciones para entrenar sus modelos.

74 Detalles: https://code.claude.com/docs/en/data-usage72 Detalles: https://code.claude.com/docs/en/data-usage

75 https://code.claude.com/docs/en/security73 https://code.claude.com/docs/en/security

76 74 

77 Dónde ir con preguntas: #claude-code. [Nombre del propietario] la está monitoreando75 Dónde hacer preguntas: #claude-code. [Nombre del responsable] lo está supervisando

78 esta semana.76 esta semana.

79 77 

80 - [Nombre]78 - [Nombre]

81 79 

82 P.D. ¿Prefiere su editor? Hay una extensión de VS Code y un80 P. D.: ¿Prefieren su editor? Hay una extensión de VS Code y un plugin de

83 plugin de JetBrains. El mismo agente, sin terminal requerida.81 JetBrains. El mismo agente, sin necesidad de terminal.

84 ```82 ```

85 </Tab>83 </Tab>

86 84 

87 <Tab title="Slack o Teams">85 <Tab title="Slack o Teams">

88 ```markdown theme={null}86 ```markdown theme={null}

89 🚀 *Claude Code está activo para [equipo]*87 🚀 *Claude Code ya está disponible para [equipo]*

90 88 

91 Agente de codificación de IA, se ejecuta en su terminal, lee su repositorio, realiza trabajo real:89 Agente de codificación con IA, se ejecuta en tu terminal, lee tu repositorio, hace trabajo real:

92 errores, refactorizaciones, pruebas, PRs. Pide permiso antes de tocar cualquier cosa.90 errores, refactorizaciones, pruebas, PRs.

93 91 

94 `curl -fsSL https://claude.ai/install.sh | bash` → `cd su-repositorio` → `claude`92 `curl -fsSL https://claude.ai/install.sh | bash` → `cd tu-repositorio` → `claude`

95 93 

96 *Primera cosa a probar* → ejecute `/init`, luego: "la prueba en [archivo] es inestable,94 *Lo primero que puedes probar* → ejecuta `/init` y luego: "la prueba en [archivo] es inestable,

97 averigüe por qué y arréglela."95 averigua por qué y arréglala."

98 96 

99 🔒 Se ejecuta en su terminal, se comunica solo con la API de Anthropic. En nuestro plan Team o97 🔒 Se ejecuta en tu terminal y se comunica directamente con la API de Anthropic. En nuestro plan Team o

100 Enterprise, su código e indicaciones no se utilizan para entrenar modelos.98 Enterprise, tu código y tus prompts no se usan para entrenar modelos.

101 Uso de datos → https://code.claude.com/docs/en/data-usage99 Uso de datos → https://code.claude.com/docs/en/data-usage

102 100 

103 📚 Inicio rápido · VS Code · Curso gratuito de 1 hora101 📚 Inicio rápido · VS Code · Curso gratuito de 1 hora


105 https://code.claude.com/docs/en/vs-code103 https://code.claude.com/docs/en/vs-code

106 https://academy.claude.com/courses/claude-code-in-action104 https://academy.claude.com/courses/claude-code-in-action

107 105 

108 Preguntas → este hilo. [Propietario] está a cargo.106 Preguntas → este hilo. [Responsable] está a cargo.

109 ```107 ```

110 </Tab>108 </Tab>

111</Tabs>109</Tabs>


168Use para una implementación por fases. Envíe solo a la cohorte piloto.166Use para una implementación por fases. Envíe solo a la cohorte piloto.

169 167 

170```text theme={null}168```text theme={null}

171Asunto: Está en el piloto de Claude Code169Asunto: Estás en el piloto de Claude Code

172 170 

173[Nombre / equipo],171[Nombre / equipo]:

174 172 

175Está en la primera ola de Claude Code en [empresa]. Elegimos este grupo173Estás en la primera ola de Claude Code en [empresa]. Elegimos este grupo

176porque lo pondrá en problemas reales y nos dirá la verdad al respecto.174porque lo vas a usar en problemas reales y nos vas a decir la verdad al respecto.

177 175 

178La solicitud: úselo en al menos una tarea real esta semana, luego deje una nota en176La petición: úsalo en al menos una tarea real esta semana y luego deja una nota en

179#claude-code-pilot cubriendo qué funcionó, qué fue molesto y qué177#claude-code-pilot contando qué funcionó, qué fue molesto y qué

180lo sorprendió. Esa retroalimentación decide cómo lo implementamos para todos los demás.178te sorprendió. Esos comentarios deciden cómo lo implementamos para todos los demás.

181 179 

182[Continúe con "Comience en dos minutos" del anuncio estándar]180[Continúa con "Empiecen en dos minutos" del anuncio estándar]

183 181 

184Una cosa extra para pilotos: en su primer cambio de múltiples archivos, presione Shift+Tab182Algo extra para los pilotos: en tu primer cambio de varios archivos, presiona Shift+Tab

185hasta que vea "plan". Claude establecerá exactamente qué intenta hacer183hasta que veas "plan". Claude expondrá lo que pretende hacer

186antes de tocar un archivo. Es la forma más rápida de calibrar cuánto184sin editar tu código fuente. Es la forma más rápida de calibrar cuánto

187confiar en él.185confiar en él.

188```186```

189 187 


299 297 

300A veces quieres que Claude pregunte antes de cada edición. A veces solo quieres que lo haga. No deberías tener que elegir uno para siempre.298A veces quieres que Claude pregunte antes de cada edición. A veces solo quieres que lo haga. No deberías tener que elegir uno para siempre.

301 299 

302*Shift+Tab* cicla a través de cuánto puede hacer Claude sin preguntar: *Manual* (el valor de configuración `default`) pregunta antes de ediciones de archivos y la mayoría de comandos de shell, *acceptEdits* permite que las ediciones de archivos y los comandos comunes del sistema de archivos fluyan mientras aún verifica antes de otros comandos de shell, y *plan* propone cambios para tu aprobación antes de que se toque nada. El modo plan es el constructor de confianza, así que comienza allí para cualquier cosa que toque múltiples archivos.300*Shift+Tab* cicla a través de cuánto puede hacer Claude sin preguntar: *Manual* (el valor de configuración `default`) pregunta antes de ediciones de archivos y la mayoría de comandos de shell, *acceptEdits* permite que las ediciones de archivos y los comandos comunes del sistema de archivos fluyan mientras aún verifica antes de otros comandos de shell, y *plan* investiga y propone cambios sin editar tu código fuente. El modo plan es el constructor de confianza, así que comienza allí para cualquier cosa que toque múltiples archivos.

303 301 

304*Pruébalo ahora:* en tu próxima refactorización, presiona Shift+Tab hasta que veas "plan", luego describe el cambio. Obtendrás una propuesta completa antes de que se mueva un solo archivo.302*Pruébalo ahora:* en tu próxima refactorización, presiona Shift+Tab hasta que veas "plan", luego describe el cambio. Obtendrás una propuesta completa para revisar.

305 303 

306📖 Modos de permiso → https://code.claude.com/docs/es/permissions304📖 Modos de permisos → https://code.claude.com/docs/es/permissions

307```305```

308 306 

309**Checkpointing y `/rewind`**307**Checkpointing y `/rewind`**


431 429 

432Alguien en tu equipo va a preguntar "espera, ¿a dónde va mi código?" Aquí está la versión corta que puedes pegar.430Alguien en tu equipo va a preguntar "espera, ¿a dónde va mi código?" Aquí está la versión corta que puedes pegar.

433 431 

434Primero permiso por diseño. Cada edición de archivo, comando de shell y llamada externa está controlada por tu aprobación. El CLI se ejecuta en tu terminal y habla directamente con la API de Anthropic, sin servidores de terceros, y admite sandboxing opcional a nivel del SO para comandos de shell. En un plan Team o Enterprise, Anthropic no utiliza tu código o solicitudes para entrenar sus modelos.432Un modo de permisos establece qué acciones puede realizar Claude sin preguntarte primero. El CLI se ejecuta en tu terminal, habla directamente con la API de Anthropic y admite sandboxing opcional a nivel del SO para comandos de shell. En un plan Team o Enterprise, Anthropic no utiliza tu código ni tus prompts para entrenar sus modelos.

435 433 

436*Pruébalo ahora:* guarda estos dos enlaces para la próxima vez que surja la pregunta. Responden la mayoría de las preguntas de revisión de seguridad.434*Pruébalo ahora:* guarda estos dos enlaces para la próxima vez que surja la pregunta. Responden la mayoría de las preguntas de revisión de seguridad.

437 435 


470| - | - |468| - | - |

471| "¿Funciona en VS Code?" | Sí. Hay una extensión de VS Code y un complemento de JetBrains con las mismas características, integradas en su editor. [VS Code →](/docs/es/vs-code) |469| "¿Funciona en VS Code?" | Sí. Hay una extensión de VS Code y un complemento de JetBrains con las mismas características, integradas en su editor. [VS Code →](/docs/es/vs-code) |

472| "¿Tengo que configurar algo primero?" | No. Instale, luego ejecute `claude` en cualquier repositorio. Ejecute `/init` una vez y está listo. [Inicio rápido →](/docs/es/quickstart) |470| "¿Tengo que configurar algo primero?" | No. Instale, luego ejecute `claude` en cualquier repositorio. Ejecute `/init` una vez y está listo. [Inicio rápido →](/docs/es/quickstart) |

473| "¿Dónde va mi código?" | El CLI se ejecuta en su terminal y envía contexto a la API de Anthropic para inferencia, sin servidores de terceros. En un plan Team o Enterprise, su código e indicaciones no se utilizan para entrenar modelos. [Uso de datos →](/docs/es/data-usage) |471| "¿Dónde va mi código?" | El CLI se ejecuta en tu terminal y envía contexto a la API de Anthropic para inferencia. En un plan Team o Enterprise, tu código y tus prompts no se utilizan para entrenar modelos. [Uso de datos →](/docs/es/data-usage) |

474| "¿Puede ver todo mi repositorio?" | Lee lo que le da acceso. Las lecturas de archivos dentro de su directorio de trabajo no solicitan; los indicadores de permiso controlan ediciones, comandos de shell no solo lectura, y lecturas de herramientas de archivos fuera de ese directorio. Un conjunto integrado de comandos de shell de solo lectura como `ls` y `cat` se ejecuta sin solicitar; restrínjalo con [reglas de sandbox `denyRead`](/docs/es/sandboxing#filesystem-isolation). [Permisos →](/docs/es/permissions) |472| "¿Puede ver todo mi repositorio?" | Lee aquello a lo que le das acceso. Las lecturas de archivos dentro de tu directorio de trabajo no piden permiso. [Permisos →](/docs/es/permissions) |

475| "¿Cómo es esto diferente de Copilot?" | Copilot autocompletea líneas. Claude Code es un agente que lee archivos, ejecuta comandos y realiza ediciones de múltiples archivos. [Descripción general →](/docs/es/overview) |473| "¿Cómo es esto diferente de Copilot?" | Copilot autocompletea líneas. Claude Code es un agente que lee archivos, ejecuta comandos y realiza ediciones de múltiples archivos. [Descripción general →](/docs/es/overview) |

476| "¿Qué debería probar primero?" | Un error que ha estado postergando porque es tedioso. "La prueba en \[archivo] es inestable, averigua por qué." [Inicio rápido →](/docs/es/quickstart) |474| "¿Qué debería probar primero?" | Un error que ha estado postergando porque es tedioso. "La prueba en \[archivo] es inestable, averigua por qué." [Inicio rápido →](/docs/es/quickstart) |

477 475 

Details

226* **La sesión receptora solicita permisos**: Claude Code entrega cada mensaje. Retiene uno para tu aprobación solo cuando la sesión de envío se identifica como omitiendo mensajes de permiso.226* **La sesión receptora solicita permisos**: Claude Code entrega cada mensaje. Retiene uno para tu aprobación solo cuando la sesión de envío se identifica como omitiendo mensajes de permiso.

227* **La sesión receptora omite mensajes de permiso**: Claude Code retiene cada mensaje para tu aprobación. Entrega uno solo cuando la sesión de envío se identifica como también omitiendo.227* **La sesión receptora omite mensajes de permiso**: Claude Code retiene cada mensaje para tu aprobación. Entrega uno solo cuando la sesión de envío se identifica como también omitiendo.

228 228 

229Cuando el valor predeterminado retiene un mensaje, Claude Code abre un diálogo de aprobación en la sesión receptora. El diálogo muestra el remitente y una vista previa:229Cuando el valor predeterminado retiene un mensaje en una sesión interactiva de terminal, Claude Code abre un diálogo de aprobación allí. El diálogo muestra el remitente y una vista previa:

230 230 

231* **Aprobar** entrega ese mensaje a Claude.231* **Aprobar** entrega ese mensaje a Claude.

232* **Denegar**, o descartar el diálogo, lo descarta.232* **Denegar**, o descartar el diálogo, lo descarta.


234* Mientras ninguna terminal está adjunta a una [sesión en segundo plano](/docs/es/agent-view), Claude Code deja el diálogo abierto pasado el plazo. Después de que adjuntes, si el diálogo permanece sin respuesta durante un período de plazo completo, Claude Code lo cierra y descarta el mensaje.234* Mientras ninguna terminal está adjunta a una [sesión en segundo plano](/docs/es/agent-view), Claude Code deja el diálogo abierto pasado el plazo. Después de que adjuntes, si el diálogo permanece sin respuesta durante un período de plazo completo, Claude Code lo cierra y descarta el mensaje.

235* Si la clase de modo de permiso de esta sesión cambia mientras los mensajes están retenidos, Claude Code re-aplica las reglas de entrada, entrega los mensajes que ahora acepta, y muestra un aviso.235* Si la clase de modo de permiso de esta sesión cambia mientras los mensajes están retenidos, Claude Code re-aplica las reglas de entrada, entrega los mensajes que ahora acepta, y muestra un aviso.

236 236 

237Una sesión en la extensión de VS Code o en la aplicación de escritorio no puede mostrar el diálogo. Claude Code retiene allí un mensaje hasta el mismo plazo, como se describe en [Sesiones no interactivas](#non-interactive-sessions).

238 

237Claude Code retiene como máximo 100 mensajes, y pasado eso descarta los más antiguos.239Claude Code retiene como máximo 100 mensajes, y pasado eso descarta los más antiguos.

238 240 

239<h3 id="non-interactive-sessions">241<h3 id="non-interactive-sessions">

env-vars.md +382 −380

Details

124 Variables124 Variables

125</h2>125</h2>

126 126 

127Las variables numéricas como tiempos de espera, presupuestos de tokens y conteos de reintentos aceptan notación científica y deletreos con separadores de dígitos además de dígitos simples, excepto donde la fila de una variable indica que solo acepta dígitos simples. Por ejemplo, Claude Code lee `2e3` como 2000 y `64_000` como 64000. Antes de v2.1.211, estos deletreos podían establecer silenciosamente un valor mucho más pequeño, como `1e6` estableciendo un tiempo de espera a 1.127Las variables numéricas, como los tiempos de espera, los presupuestos de tokens y los recuentos de reintentos, aceptan notación científica y escrituras con separador de dígitos además de dígitos simples, excepto cuando la fila de una variable indica que solo acepta dígitos simples. Por ejemplo, Claude Code lee `2e3` como 2000 y `64_000` como 64000. Antes de v2.1.211, estas escrituras podían establecer silenciosamente un valor mucho menor, como `1e6`, que establecía un tiempo de espera de 1.

128 128 

129<Note>129<Note>

130 Para variables que activan o desactivan un comportamiento, establezca `1`, `true`, `yes` u `on` para activarlo y `0`, `false`, `no` u `off` para desactivarlo, en cualquier mayúscula.130 Para las variables que activan o desactivan un comportamiento, establece `1`, `true`, `yes` u `on` para activarlo y `0`, `false`, `no` u `off` para desactivarlo, con cualquier combinación de mayúsculas y minúsculas.

131 131 

132 Algunas variables solo leen si las establece en absoluto, por lo que cualquier valor no vacío, incluido `0`, activa el comportamiento, y desactiva el comportamiento desestableciendo la variable o estableciéndola en un valor vacío. Estas variables funcionan de esa manera:132 Algunas variables solo comprueban si las estableciste o no, por lo que cualquier valor no vacío, incluido `0`, activa el comportamiento, y lo desactivas quitando la variable o estableciéndola en un valor vacío. Estas variables funcionan así:

133 133 

134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

135 * `DISABLE_TELEMETRY`135 * `DISABLE_TELEMETRY`


138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`

139 * `IS_DEMO`139 * `IS_DEMO`

140 140 

141 Otra variable tiene su propia regla: `FORCE_HYPERLINK` lee un número, por lo que solo `0` la desactiva. La fila de cada variable también establece su propia regla.141 Otra variable tiene su propia regla: `FORCE_HYPERLINK` lee un número, por lo que solo `0` la desactiva. La fila de cada variable también indica su propia regla.

142</Note>142</Note>

143 143 

144| Variable | Propósito |144| Variable | Propósito |

145| :- | :- |145| :- | :- |

146| `ANTHROPIC_API_KEY` | Clave de API enviada como encabezado `X-Api-Key`. Cuando se establece, esta clave se usa en lugar de su suscripción a Claude Pro, Max, Team o Enterprise incluso si ha iniciado sesión. En modo no interactivo (`-p`), la clave siempre se usa cuando está presente. En modo interactivo, se le solicita que apruebe la clave una vez antes de que anule su suscripción. Para usar su suscripción en su lugar, ejecute `unset ANTHROPIC_API_KEY` |146| `ANTHROPIC_API_KEY` | Clave de API enviada como encabezado `X-Api-Key`. Cuando está establecida, esta clave se usa en lugar de tu suscripción Claude Pro, Max, Team o Enterprise, incluso si iniciaste sesión. En modo no interactivo (`-p`), la clave siempre se usa cuando está presente. En modo interactivo, se te pide que apruebes la clave una vez antes de que sobrescriba tu suscripción. Para usar tu suscripción en su lugar, ejecuta `unset ANTHROPIC_API_KEY` |

147| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para el encabezado `Authorization` (el valor que establezca aquí tendrá el prefijo `Bearer `) |147| `ANTHROPIC_AUTH_TOKEN` | Valor personalizado para el encabezado `Authorization` (el valor que establezcas aquí tendrá el prefijo `Bearer `) |

148| `ANTHROPIC_AWS_API_KEY` | Clave de API del espacio de trabajo para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), generada en la Consola de AWS. Se envía como `x-api-key` y tiene prioridad sobre AWS SigV4 |148| `ANTHROPIC_AWS_API_KEY` | Clave de API del espacio de trabajo para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), generada en la consola de AWS. Se envía como `x-api-key` y tiene precedencia sobre AWS SigV4 |

149| `ANTHROPIC_AWS_BASE_URL` | Anule la URL del punto de conexión de [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Use para regiones personalizadas o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). El valor predeterminado es `https://aws-external-anthropic.{region}.api.aws`. Claude Code resuelve la región con la [misma precedencia que en Amazon Bedrock](/docs/es/amazon-bedrock#3-configure-claude-code) |149| `ANTHROPIC_AWS_BASE_URL` | Sobrescribe la URL del endpoint de [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Úsala para regiones personalizadas o al enrutar a través de un [gateway de LLM](/docs/es/llm-gateway). El valor predeterminado es `https://aws-external-anthropic.{region}.api.aws`. Claude Code resuelve la región con la [misma precedencia que en Amazon Bedrock](/docs/es/amazon-bedrock#3-configure-claude-code) |

150| `ANTHROPIC_AWS_WORKSPACE_ID` | Requerido para [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Se envía en cada solicitud como el encabezado `anthropic-workspace-id` |150| `ANTHROPIC_AWS_WORKSPACE_ID` | Obligatoria para [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Se envía en cada solicitud como el encabezado `anthropic-workspace-id` |

151| `ANTHROPIC_BASE_URL` | Anule el punto de conexión de la API para enrutar solicitudes a través de un proxy o puerta de enlace. Cuando se establece en un host que no es de primera parte, [la búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search) está deshabilitada de forma predeterminada. Establezca `ENABLE_TOOL_SEARCH=true` si su proxy reenvía bloques `tool_reference`. A partir de v2.1.196, [Remote Control](/docs/es/remote-control#requirements) está deshabilitado cuando esto apunta a un host que no sea `api.anthropic.com`, coincidiendo con su comportamiento en Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry |151| `ANTHROPIC_BASE_URL` | Sobrescribe el endpoint de la API para enrutar las solicitudes a través de un proxy o gateway. Cuando se establece en un host que no es de primera parte, [MCP Tool Search](/docs/es/mcp#scale-with-mcp-tool-search) está desactivado de forma predeterminada. Establece `ENABLE_TOOL_SEARCH=true` si tu proxy reenvía bloques `tool_reference`. A partir de v2.1.196, [Remote Control](/docs/es/remote-control#requirements) se desactiva cuando esta variable apunta a un host distinto de `api.anthropic.com`, igual que su comportamiento en Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry |

152| `ANTHROPIC_BEDROCK_BASE_URL` | Anule la URL del punto de conexión de Amazon Bedrock. Use para puntos de conexión personalizados de Amazon Bedrock o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). Consulte [Amazon Bedrock](/docs/es/amazon-bedrock) |152| `ANTHROPIC_BEDROCK_BASE_URL` | Sobrescribe la URL del endpoint de Amazon Bedrock. Úsala para endpoints personalizados de Amazon Bedrock o al enrutar a través de un [gateway de LLM](/docs/es/llm-gateway). Consulta [Amazon Bedrock](/docs/es/amazon-bedrock) |

153| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Anule la URL del punto de conexión de Amazon Bedrock Mantle. Consulte [Punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) |153| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Sobrescribe la URL del endpoint de Amazon Bedrock Mantle. Consulta [Endpoint de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) |

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

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

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

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

158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modelo para agregar como entrada personalizada en el selector `/model`. Use esto para hacer que un modelo no estándar o específico de puerta de enlace sea seleccionable sin reemplazar alias integrados. Consulte [Configuración de modelo](/docs/es/model-config#add-a-custom-model-option) |158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modelo para agregar como entrada personalizada en el selector `/model`. Úsala para que un modelo no estándar o específico de un gateway sea seleccionable sin reemplazar los alias integrados. Consulta [Configuración del modelo](/docs/es/model-config#add-a-custom-model-option) |

159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Descripción de visualización para la entrada de modelo personalizado en el selector `/model`. El valor predeterminado es `Custom model (<model-id>)` cuando no se establece |159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Descripción para mostrar de la entrada de modelo personalizado en el selector `/model`. Si no se establece, el valor predeterminado es `Custom model (<model-id>)` |

160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nombre de visualización para la entrada de modelo personalizado en el selector `/model`. Cuando no se establece, la entrada muestra el nombre del modelo si Claude Code [reconoce el ID](/docs/es/model-config#customize-pinned-model-display-and-capabilities), y el ID del modelo en caso contrario |160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nombre para mostrar de la entrada de modelo personalizado en el selector `/model`. Si no se establece, la entrada muestra el nombre del modelo si Claude Code [reconoce el ID](/docs/es/model-config#customize-pinned-model-display-and-capabilities), y el ID del modelo en caso contrario |

161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo personalizado admite, por ejemplo `effort,thinking`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Lista separada por comas de las [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que admite el modelo personalizado, por ejemplo `effort,thinking`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | ID de modelo al que se resuelve el alias `fable`, y el ID que Claude Code reconoce como modelo Fable para [alternancia automática de modelo](/docs/es/model-config#automatic-model-fallback) en proveedores de terceros. Consulte [Configuración de modelo](/docs/es/model-config#environment-variables) |162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | ID de modelo al que se resuelve el alias `fable`, y el ID que Claude Code reconoce como modelo Fable para el [respaldo automático de modelo](/docs/es/model-config#automatic-model-fallback) en proveedores de terceros. Consulta [Configuración del modelo](/docs/es/model-config#environment-variables) |

163| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Descripción de visualización para el modelo Fable fijado en el selector `/model`. Cuando no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Fable model`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |163| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Descripción para mostrar del modelo Fable fijado en el selector `/model`. Si no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Fable model`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nombre de visualización para el modelo Fable fijado en el selector `/model`. Cuando no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nombre para mostrar del modelo Fable fijado en el selector `/model`. Si no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo Fable fijado admite, por ejemplo `effort,thinking`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de las [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que admite el modelo Fable fijado, por ejemplo `effort,thinking`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

166| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | ID de modelo al que se resuelve el alias `haiku`, también usado para [funcionalidad de fondo](/docs/es/costs#background-token-usage). Consulte [Configuración de modelo](/docs/es/model-config#environment-variables) |166| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | ID de modelo al que se resuelve el alias `haiku`, que también se usa para la [funcionalidad en segundo plano](/docs/es/costs#background-token-usage). Consulta [Configuración del modelo](/docs/es/model-config#environment-variables) |

167| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Descripción de visualización para el modelo Haiku fijado en el selector `/model`. Cuando no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Haiku model`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |167| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Descripción para mostrar del modelo Haiku fijado en el selector `/model`. Si no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Haiku model`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

168| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Nombre de visualización para el modelo Haiku fijado en el selector `/model`. Cuando no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |168| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Nombre para mostrar del modelo Haiku fijado en el selector `/model`. Si no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

169| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo Haiku fijado admite, por ejemplo `effort,thinking`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |169| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de las [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que admite el modelo Haiku fijado, por ejemplo `effort,thinking`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

170| `ANTHROPIC_DEFAULT_MODEL` | Modelo en el que las nuevas sesiones comienzan de forma predeterminada. Requiere Claude Code v2.1.236 o posterior. Consulte [Establecer un modelo predeterminado para nuevas sesiones](/docs/es/model-config#set-a-default-model-for-new-sessions) |170| `ANTHROPIC_DEFAULT_MODEL` | Modelo con el que comienzan las sesiones nuevas de forma predeterminada. Requiere Claude Code v2.1.236 o posterior. Consulta [Establecer un modelo predeterminado para sesiones nuevas](/docs/es/model-config#set-a-default-model-for-new-sessions) |

171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | ID de modelo al que se resuelve el alias `opus`, y que `opusplan` usa mientras Plan Mode está activo. Consulte [Configuración de modelo](/docs/es/model-config#environment-variables) |171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | ID de modelo al que se resuelve el alias `opus`, y que `opusplan` usa mientras el modo plan está activo. Consulta [Configuración del modelo](/docs/es/model-config#environment-variables) |

172| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Descripción de visualización para el modelo Opus fijado en el selector `/model`. Cuando no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Opus model`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |172| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Descripción para mostrar del modelo Opus fijado en el selector `/model`. Si no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Opus model`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

173| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nombre de visualización para el modelo Opus fijado en el selector `/model`. Cuando no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |173| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nombre para mostrar del modelo Opus fijado en el selector `/model`. Si no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

174| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo Opus fijado admite, por ejemplo `effort,thinking`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |174| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de las [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que admite el modelo Opus fijado, por ejemplo `effort,thinking`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

175| `ANTHROPIC_DEFAULT_SONNET_MODEL` | ID de modelo al que se resuelve el alias `sonnet`, y que `opusplan` usa cuando Plan Mode no está activo. Consulte [Configuración de modelo](/docs/es/model-config#environment-variables) |175| `ANTHROPIC_DEFAULT_SONNET_MODEL` | ID de modelo al que se resuelve el alias `sonnet`, y que `opusplan` usa cuando el modo plan no está activo. Consulta [Configuración del modelo](/docs/es/model-config#environment-variables) |

176| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Descripción de visualización para el modelo Sonnet fijado en el selector `/model`. Cuando no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Sonnet model`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |176| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Descripción para mostrar del modelo Sonnet fijado en el selector `/model`. Si no se establece, la fila muestra una descripción predeterminada que comienza con `Custom Sonnet model`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

177| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Nombre de visualización para el modelo Sonnet fijado en el selector `/model`. Cuando no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |177| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Nombre para mostrar del modelo Sonnet fijado en el selector `/model`. Si no se establece, la fila muestra el nombre del modelo si Claude Code reconoce el ID fijado, y el ID fijado en caso contrario. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

178| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que el modelo Sonnet fijado admite, por ejemplo `effort,thinking`. Consulte [Configuración de modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |178| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Lista separada por comas de las [capacidades](/docs/es/model-config#customize-pinned-model-display-and-capabilities) que admite el modelo Sonnet fijado, por ejemplo `effort,thinking`. Consulta [Configuración del modelo](/docs/es/model-config#customize-pinned-model-display-and-capabilities) |

179| `ANTHROPIC_FEDERATION_RULE_ID` | ID de regla de federación para [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Cuando lo establece junto con `ANTHROPIC_ORGANIZATION_ID`, Claude Code selecciona credenciales de federación, que tienen rango superior a su credencial `/login`. Consulte [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |179| `ANTHROPIC_FEDERATION_RULE_ID` | ID de la regla de federación para [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Cuando la estableces junto con `ANTHROPIC_ORGANIZATION_ID`, Claude Code selecciona las credenciales de federación, que tienen prioridad sobre tu credencial de `/login`. Consulta [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |

180| `ANTHROPIC_FOUNDRY_API_KEY` | Clave de API para autenticación de Microsoft Foundry (consulte [Microsoft Foundry](/docs/es/microsoft-foundry)) |180| `ANTHROPIC_FOUNDRY_API_KEY` | Clave de API para la autenticación de Microsoft Foundry (consulta [Microsoft Foundry](/docs/es/microsoft-foundry)) |

181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Token portador para autenticación de Microsoft Foundry, como un token de acceso de Microsoft Entra. Claude Code lo envía como el encabezado `Authorization: Bearer`. Tiene prioridad sobre `ANTHROPIC_FOUNDRY_API_KEY` y sobre la cadena de credenciales predeterminada de Azure. Consulte [Microsoft Foundry](/docs/es/microsoft-foundry). Requiere Claude Code v2.1.203 o posterior |181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Token bearer para la autenticación de Microsoft Foundry, como un token de acceso de Microsoft Entra. Claude Code lo envía como el encabezado `Authorization: Bearer`. Tiene precedencia sobre `ANTHROPIC_FOUNDRY_API_KEY` y sobre la cadena de credenciales predeterminada de Azure. Consulta [Microsoft Foundry](/docs/es/microsoft-foundry). Requiere Claude Code v2.1.203 o posterior |

182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL base completa para el recurso de Microsoft Foundry (por ejemplo, `https://my-resource.services.ai.azure.com/anthropic`). Alternativa a `ANTHROPIC_FOUNDRY_RESOURCE` (consulte [Microsoft Foundry](/docs/es/microsoft-foundry)) |182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL base completa del recurso de Microsoft Foundry (por ejemplo, `https://my-resource.services.ai.azure.com/anthropic`). Alternativa a `ANTHROPIC_FOUNDRY_RESOURCE` (consulta [Microsoft Foundry](/docs/es/microsoft-foundry)) |

183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nombre del recurso de Microsoft Foundry (por ejemplo, `my-resource`). Claude Code [rechaza una URL o un nombre de host](/docs/es/errors#anthropic-foundry-resource-must-be-a-foundry-resource-name). Obligatoria si no se establece `ANTHROPIC_FOUNDRY_BASE_URL` (consulta [Microsoft Foundry](/docs/es/microsoft-foundry)) |183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nombre del recurso de Microsoft Foundry (por ejemplo, `my-resource`). Claude Code [rechaza una URL o un nombre de host](/docs/es/errors#anthropic-foundry-resource-must-be-a-foundry-resource-name). Obligatoria si `ANTHROPIC_FOUNDRY_BASE_URL` no está establecida (consulta [Microsoft Foundry](/docs/es/microsoft-foundry)) |

184| `ANTHROPIC_MODEL` | Nombre de la configuración del modelo a usar (consulte [Configuración de modelo](/docs/es/model-config#environment-variables)) |184| `ANTHROPIC_MODEL` | Nombre del ajuste de modelo que se usará (consulta [Configuración del modelo](/docs/es/model-config#environment-variables)) |

185| `ANTHROPIC_ORGANIZATION_ID` | ID de organización para [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establézcalo junto con `ANTHROPIC_FEDERATION_RULE_ID`. Consulte [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |185| `ANTHROPIC_ORGANIZATION_ID` | ID de organización para [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establécela junto con `ANTHROPIC_FEDERATION_RULE_ID`. Consulta [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |

186| `ANTHROPIC_PROFILE` | Nombre del perfil de Anthropic con el que autenticarse, como uno creado por [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) o por [iniciar sesión en una cuenta de Console sin una clave de API](/docs/es/authentication#sign-in-without-an-api-key). Consulte [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |186| `ANTHROPIC_PROFILE` | Nombre del perfil de Anthropic con el que autenticarse, como uno creado por [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) o al [iniciar sesión en una cuenta de Console sin una clave de API](/docs/es/authentication#sign-in-without-an-api-key). Consulta [precedencia de autenticación](/docs/es/authentication#authentication-precedence) |

187| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nombre de [modelo de clase Haiku para tareas de fondo](/docs/es/costs) |187| `ANTHROPIC_SMALL_FAST_MODEL` | \[OBSOLETO] Nombre del [modelo de clase Haiku para tareas en segundo plano](/docs/es/costs) |

188| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Anule la región de AWS para el modelo de clase Haiku cuando use Amazon Bedrock o Amazon Bedrock Mantle. En Amazon Bedrock, esto solo tiene efecto cuando `ANTHROPIC_DEFAULT_HAIKU_MODEL` o el deprecated `ANTHROPIC_SMALL_FAST_MODEL` también está establecido, ya que Amazon Bedrock de otra manera ejecuta tareas de fondo en el [modelo Sonnet predeterminado o el modelo principal](/docs/es/amazon-bedrock#4-pin-model-versions) en la región de sesión |188| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Sobrescribe la región de AWS para el modelo de clase Haiku al usar Amazon Bedrock o Amazon Bedrock Mantle. En Amazon Bedrock, esto solo surte efecto cuando también está establecida `ANTHROPIC_DEFAULT_HAIKU_MODEL` o la obsoleta `ANTHROPIC_SMALL_FAST_MODEL`, ya que, de lo contrario, Amazon Bedrock ejecuta las tareas en segundo plano en el [modelo Sonnet predeterminado o el modelo principal](/docs/es/amazon-bedrock#4-pin-model-versions) en la región de la sesión |

189| `ANTHROPIC_VERTEX_BASE_URL` | Anule la URL del punto de conexión de Google Cloud's Agent Platform. Use para puntos de conexión personalizados de Google Cloud's Agent Platform o cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway). Consulte [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |189| `ANTHROPIC_VERTEX_BASE_URL` | Sobrescribe la URL del endpoint de Agent Platform de Google Cloud. Úsala para endpoints personalizados de Agent Platform de Google Cloud o al enrutar a través de un [gateway de LLM](/docs/es/llm-gateway). Consulta [Agent Platform de Google Cloud](/docs/es/google-vertex-ai) |

190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID del proyecto de GCP al que se dirigen las solicitudes de Google Cloud's Agent Platform. Consulte [Configurar credenciales de GCP](/docs/es/google-vertex-ai#3-configure-gcp-credentials) |190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID del proyecto de GCP al que se dirigen las solicitudes de Agent Platform de Google Cloud. Consulta [Configurar las credenciales de GCP](/docs/es/google-vertex-ai#3-configure-gcp-credentials) |

191| `ANTHROPIC_WORKSPACE_ID` | ID del espacio de trabajo para [federación de identidad de carga de trabajo](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establezca esto cuando su regla de federación tenga un alcance de más de un espacio de trabajo para que el intercambio de tokens sepa a qué espacio de trabajo dirigirse |191| `ANTHROPIC_WORKSPACE_ID` | ID del espacio de trabajo para [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establécela cuando tu regla de federación abarque más de un espacio de trabajo, para que el intercambio de tokens sepa a qué espacio de trabajo dirigirse |

192| `API_FORCE_IDLE_TIMEOUT` | Anule el tiempo de espera de inactividad del cuerpo de 5 minutos que aborta una respuesta del modelo de transmisión cuando no llegan bytes. Establezca en `0` para desactivar el tiempo de espera, por ejemplo cuando una [puerta de enlace](/docs/es/llm-gateway) lenta o un modelo local hace una pausa más larga que 5 minutos entre fragmentos, o `1` para mantenerlo activado para cada proveedor. Cuando no está establecido, el tiempo de espera está activo en proveedores que no sean la API directa de Anthropic, [Claude Platform on AWS](/docs/es/claude-platform-on-aws) y Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` establecido. Los [perros guardianes de transmisión](/docs/es/network-config#streaming-idle-watchdogs) se ejecutan independientemente de él y abortan una pausa larga silenciosa incluso cuando establece `0` aquí |192| `API_FORCE_IDLE_TIMEOUT` | Sobrescribe el tiempo de espera de inactividad del cuerpo de 5 minutos que interrumpe una respuesta del modelo en streaming cuando no llegan bytes. Establécela en `0` para desactivar el tiempo de espera, por ejemplo cuando un [gateway](/docs/es/llm-gateway) lento o un modelo local hace pausas de más de 5 minutos entre fragmentos, o en `1` para mantenerlo activo con todos los proveedores. Si no está establecida, el tiempo de espera está activo en los proveedores distintos de la API directa de Anthropic, [Claude Platform on AWS](/docs/es/claude-platform-on-aws) y Amazon Bedrock con `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` establecida. Los [watchdogs de streaming](/docs/es/network-config#streaming-idle-watchdogs) se ejecutan de forma independiente y interrumpen una pausa silenciosa larga incluso cuando estableces `0` aquí |

193| `API_TIMEOUT_MS` | Tiempo de espera para solicitudes de API en milisegundos (predeterminado: 600000, o 10 minutos; máximo: 2147483647). Aumente esto cuando las solicitudes agoten el tiempo de espera en redes lentas o cuando enrute a través de un proxy. Los valores por encima del máximo desbordan el temporizador subyacente y causan que las solicitudes fallen inmediatamente |193| `API_TIMEOUT_MS` | Tiempo de espera para las solicitudes a la API en milisegundos (predeterminado: 600000, o 10 minutos; máximo: 2147483647). Auméntalo cuando se agote el tiempo de espera de las solicitudes en redes lentas o al enrutar a través de un proxy. Los valores superiores al máximo desbordan el temporizador subyacente y hacen que las solicitudes fallen de inmediato |

194| `AWS_BEARER_TOKEN_BEDROCK` | Clave de API de Amazon Bedrock para autenticación (consulte [Claves de API de Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |194| `AWS_BEARER_TOKEN_BEDROCK` | Clave de API de Amazon Bedrock para la autenticación (consulta [Claves de API de Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

195| `BASH_DEFAULT_TIMEOUT_MS` | Tiempo de espera predeterminado para un comando en primer plano de la herramienta Bash o PowerShell, en milisegundos (predeterminado: 120000, o 2 minutos). Un valor predeterminado superior a 30 minutos también se convierte en el [límite de tiempo predeterminado para comandos en segundo plano](/docs/es/tools-reference#time-limit-for-background-commands) en sesiones desatendidas. El límite de tiempo en segundo plano requiere Claude Code v2.1.285 o posterior |195| `BASH_DEFAULT_TIMEOUT_MS` | Tiempo de espera predeterminado para un comando de la herramienta Bash o PowerShell en primer plano, en milisegundos (predeterminado: 120000, o 2 minutos). Un valor predeterminado de más de 30 minutos también se convierte en el [límite de tiempo predeterminado para comandos en segundo plano](/docs/es/tools-reference#time-limit-for-background-commands) en sesiones desatendidas. El límite de tiempo en segundo plano requiere Claude Code v2.1.285 o posterior |

196| `BASH_MAX_OUTPUT_LENGTH` | Número máximo de caracteres de salida de bash que Claude Code lee en el resultado de un comando (predeterminado: 30000; máximo: 150000). Si establece la configuración [`bashOutputMaxChars`](/docs/es/settings-reference#bashoutputmaxchars), Claude Code ignora esta variable. Consulte [Límites de salida](/docs/es/tools-reference#output-limits) |196| `BASH_MAX_OUTPUT_LENGTH` | Número máximo de caracteres de salida de bash que Claude Code vuelve a leer en el resultado de un comando (predeterminado: 30000; máximo: 150000). Si estableces el ajuste [`bashOutputMaxChars`](/docs/es/settings-reference#bashoutputmaxchars), Claude Code ignora esta variable. Consulta [Límites de salida](/docs/es/tools-reference#output-limits) |

197| `BASH_MAX_TIMEOUT_MS` | Tiempo de espera máximo que el modelo puede establecer para un comando en primer plano de la herramienta Bash o PowerShell, en milisegundos (predeterminado: 600000, o 10 minutos). El límite efectivo es el mayor entre este valor y `BASH_DEFAULT_TIMEOUT_MS`. Un límite efectivo superior a 2 horas también se convierte en el [límite de tiempo](/docs/es/tools-reference#time-limit-for-background-commands) máximo para comandos en segundo plano en sesiones desatendidas. El límite de tiempo en segundo plano requiere Claude Code v2.1.285 o posterior |197| `BASH_MAX_TIMEOUT_MS` | Tiempo de espera máximo que el modelo puede establecer para un comando de la herramienta Bash o PowerShell en primer plano, en milisegundos (predeterminado: 600000, o 10 minutos). El límite efectivo es el mayor entre este valor y `BASH_DEFAULT_TIMEOUT_MS`. Un límite efectivo de más de 2 horas también se convierte en el [límite de tiempo máximo para comandos en segundo plano](/docs/es/tools-reference#time-limit-for-background-commands) en sesiones desatendidas. El límite de tiempo en segundo plano requiere Claude Code v2.1.285 o posterior |

198| `BETA_TRACING_ENDPOINT` | Punto de conexión OTLP para [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta): con `ENABLE_BETA_TRACING_DETAILED=1`, los registros y rastreos van allí en lugar de a los exportadores configurados. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |198| `BETA_TRACING_ENDPOINT` | Endpoint OTLP para el [tracing beta detallado](/docs/es/monitoring-usage#traces-beta): con `ENABLE_BETA_TRACING_DETAILED=1`, los registros y las trazas van allí en lugar de a los exportadores configurados. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración del proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

199| `CCR_FORCE_BUNDLE` | Establezca en `1` para forzar [`claude --cloud`](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) a agrupar y cargar su repositorio local en lugar de clonar desde su remoto |199| `CCR_FORCE_BUNDLE` | Establécela en `1` para forzar que [`claude --cloud`](/docs/es/claude-code-on-the-web#send-local-repositories-without-github) empaquete y suba tu repositorio local en lugar de clonarlo desde su remoto |

200| `CLAUDECODE` | Establezca en `1` en subprocesos que Claude Code genera (herramientas Bash y PowerShell, sesiones tmux, comandos [hook](/docs/es/hooks), comandos [línea de estado](/docs/es/statusline), subprocesos de [servidor MCP](/docs/es/mcp) stdio). Las extensiones IDE también establecen esto en sus terminales integrados. Use para detectar cuándo un script se ejecuta dentro de un subproceso generado por Claude Code. Para verificar si el proceso actual fue generado directamente por una llamada de herramienta o hook, en lugar de dentro de un servidor MCP stdio que Claude Code inició, use `CLAUDE_CODE_CHILD_SESSION` en su lugar |200| `CLAUDECODE` | Se establece en `1` en los subprocesos que Claude Code genera (herramientas Bash y PowerShell, sesiones de tmux, comandos de [hook](/docs/es/hooks), comandos de la [línea de estado](/docs/es/statusline), subprocesos de [servidores MCP](/docs/es/mcp) stdio). Las extensiones de IDE también la establecen en sus terminales integradas. Úsala para detectar cuándo un script se ejecuta dentro de un subproceso generado por Claude Code. Para comprobar si el proceso actual fue generado directamente por una llamada a herramienta o un hook, en lugar de dentro de un servidor MCP stdio que Claude Code inició, usa `CLAUDE_CODE_CHILD_SESSION` en su lugar |

201| `CLAUDE_AFK_COUNTDOWN_MS` | Cuántos milisegundos antes de auto-continuar aparece la cuenta regresiva en pantalla en un diálogo [`AskUserQuestion`](/docs/es/tools-reference) sin respuesta. Predeterminado `20000` (20 segundos), limitado al tiempo de espera de auto-continuación. No tiene efecto a menos que la auto-continuación esté activada; consulte la configuración [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout) y `CLAUDE_AFK_TIMEOUT_MS`. Requiere Claude Code v2.1.198 o posterior |201| `CLAUDE_AFK_COUNTDOWN_MS` | Cuántos milisegundos antes de la continuación automática aparece la cuenta regresiva en pantalla en un cuadro de diálogo de [`AskUserQuestion`](/docs/es/tools-reference) sin responder. Predeterminado `20000` (20 segundos), con un límite igual al tiempo de espera de la continuación automática. No tiene efecto a menos que la continuación automática esté activada; consulta el ajuste [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout) y `CLAUDE_AFK_TIMEOUT_MS`. Requiere Claude Code v2.1.198 o posterior |

202| `CLAUDE_AFK_TIMEOUT_MS` | Cuántos milisegundos de tiempo inactivo antes de que un diálogo [`AskUserQuestion`](/docs/es/tools-reference) sin respuesta se auto-continúe sin usted. La auto-continuación está desactivada de forma predeterminada; opte por ella con la configuración [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout). Esta variable es una anulación para demostraciones y pruebas automatizadas: cuando se establece, tiene prioridad sobre esa configuración y activa la auto-continuación incluso cuando la configuración no está establecida o es `never`. Establecer `0` no desactiva el tiempo de espera; cierra el diálogo inmediatamente. En v2.1.198 y v2.1.199, la auto-continuación estaba activada de forma predeterminada con un tiempo de espera de `60000` (60 segundos). Requiere Claude Code v2.1.198 o posterior |202| `CLAUDE_AFK_TIMEOUT_MS` | Cuántos milisegundos de inactividad transcurren antes de que un cuadro de diálogo de [`AskUserQuestion`](/docs/es/tools-reference) sin responder continúe automáticamente sin ti. La continuación automática está desactivada de forma predeterminada; actívala con el ajuste [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout). Esta variable es una sobrescritura para demostraciones y pruebas automatizadas: cuando está establecida, tiene precedencia sobre ese ajuste y activa la continuación automática incluso cuando el ajuste no está establecido o es `never`. Establecer `0` no desactiva el tiempo de espera; cierra el cuadro de diálogo de inmediato. En v2.1.198 y v2.1.199, la continuación automática estaba activada de forma predeterminada con un tiempo de espera de `60000` (60 segundos). Requiere Claude Code v2.1.198 o posterior |

203| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establezca en `1` para desabilitar todos los tipos de [subagente](/docs/es/sub-agents) integrados como Explore y Plan. Solo se aplica en modo no interactivo (la bandera `-p`). Útil para usuarios de SDK que desean una pizarra en blanco. Esto también elimina `general-purpose`, el subagente que Claude Code ejecuta cuando una llamada de herramienta de Agent omite `subagent_type`. Tal llamada falla con [`subagent_type is required`](/docs/es/errors#subagent-type-is-required) |203| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establécela en `1` para desactivar todos los tipos de [subagentes](/docs/es/sub-agents) integrados, como Explore y Plan. Solo se aplica en modo no interactivo (el flag `-p`). Útil para usuarios del SDK que quieren empezar desde cero. Esto también elimina `general-purpose`, el subagente que Claude Code ejecuta cuando una llamada a la herramienta Agent omite `subagent_type`. Una llamada así falla entonces con [`subagent_type is required`](/docs/es/errors#subagent-type-is-required) |

204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Establezca en `1` para omitir el prefijo `mcp__<server>__` en nombres de herramientas de servidores MCP creados por SDK. Las herramientas usan sus nombres originales. Solo uso de SDK |204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Establécela en `1` para omitir el prefijo `mcp__<server>__` en los nombres de herramientas de servidores MCP creados por el SDK. Las herramientas usan sus nombres originales. Solo para uso del SDK |

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

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

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

208| `CLAUDE_AX_PREPARK_MS` | En el [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos espera Claude Code antes de escribir una línea nueva o modificada. Predeterminado `0`, por lo que Claude Code no espera. Antes de v2.1.287, el valor predeterminado era `50`. Claude Code limita la espera a `5000`. Requiere Claude Code v2.1.233 o posterior |208| `CLAUDE_AX_PREPARK_MS` | En el [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos espera Claude Code antes de escribir una línea nueva o modificada. Predeterminado `0`, por lo que Claude Code no espera. Antes de v2.1.287, el valor predeterminado era `50`. Claude Code limita la espera a `5000`. Requiere Claude Code v2.1.233 o posterior |

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

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

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

212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos para el perro guardián de inactividad de transmisión a nivel de byte; cuando se establece, tiene prioridad sobre `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para ese perro guardián y deja el perro guardián a nivel de evento sin cambios. Claude Code fija esta variable entre 10 segundos y 30 minutos. Requiere Claude Code v2.1.210 o posterior |212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos para el watchdog de inactividad de streaming a nivel de bytes; cuando está establecida, tiene precedencia sobre `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para ese watchdog y deja sin cambios el watchdog a nivel de eventos. Claude Code limita esta variable a un valor entre 10 segundos y 30 minutos. Requiere Claude Code v2.1.210 o posterior |

213| `CLAUDE_CLIENT_PRESENCE_FILE` | Ruta a un archivo que una herramienta externa, como un oyente de bloqueo de pantalla, crea cuando desbloquea su pantalla y elimina cuando la bloquea. Mientras el archivo existe, Claude Code omite [notificaciones push móviles de Remote Control](/docs/es/remote-control#mobile-push-notifications), por lo que deja de recibir notificaciones mientras usa activamente la computadora. Cuando el archivo está ausente o no se puede leer, las notificaciones se envían normalmente. Claude Code verifica el archivo una vez por evento de activación de notificación en lugar de sondear. Requiere Claude Code v2.1.181 o posterior |213| `CLAUDE_CLIENT_PRESENCE_FILE` | Ruta a un archivo que una herramienta externa, como un listener de bloqueo de pantalla, crea cuando desbloqueas la pantalla y elimina cuando la bloqueas. Mientras el archivo existe, Claude Code omite las [notificaciones push móviles de Remote Control](/docs/es/remote-control#mobile-push-notifications), para que dejes de recibir notificaciones push mientras usas activamente la computadora. Cuando el archivo no existe o no se puede leer, las notificaciones se envían con normalidad. Claude Code comprueba el archivo una vez por cada evento que activa una notificación push en lugar de sondearlo. Requiere Claude Code v2.1.181 o posterior |

214| `CLAUDE_CODE_ACCESSIBILITY` | Establezca en `1` para mantener visible el cursor de terminal nativo y desabilitar el indicador de cursor de texto invertido. Permite que ampliadores de pantalla como macOS Zoom rastreen la posición del cursor |214| `CLAUDE_CODE_ACCESSIBILITY` | Establécela en `1` para mantener visible el cursor nativo de la terminal y desactivar el indicador de cursor de texto invertido. Permite que las lupas de pantalla como Zoom de macOS sigan la posición del cursor |

215| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Establezca en `1` para cargar archivos de memoria desde directorios especificados con `--add-dir`. Carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` y `CLAUDE.local.md`. De forma predeterminada, los directorios adicionales no cargan archivos de memoria |215| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Establécela en `1` para cargar archivos de memoria desde los directorios especificados con `--add-dir`. Carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` y `CLAUDE.local.md`. De forma predeterminada, los directorios adicionales no cargan archivos de memoria |

216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Establezca en `1` para repintar la pantalla completa en cada fotograma en [renderizado de pantalla completa](/docs/es/fullscreen) en lugar de enviar actualizaciones incrementales. Use esto si el modo de pantalla completa muestra fragmentos de texto obsoletos o mal colocados. Claude Code habilita esto automáticamente para sesiones de fondo y [vista de agente](/docs/es/agent-view) en Windows |216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Establécela en `1` para volver a pintar toda la pantalla en cada fotograma en el [renderizado de pantalla completa](/docs/es/fullscreen) en lugar de enviar actualizaciones incrementales. Úsala si el modo de pantalla completa muestra fragmentos de texto obsoletos o mal ubicados. Claude Code la activa automáticamente para las sesiones en segundo plano y la [vista de agentes](/docs/es/agent-view) en Windows |

217| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Establezca en `1` para enviar el parámetro [effort](/docs/es/model-config#adjust-effort-level) con cada solicitud, incluso cuando Claude Code no reconoce el ID del modelo como capaz de esfuerzo. Use esto cuando enrute a través de una [puerta de enlace LLM](/docs/es/llm-gateway) o proveedor de terceros que sirve modelos bajo identificadores personalizados. Los modelos que rechazan el parámetro de esfuerzo en la API, incluidos los modelos Claude 3, Sonnet 4.0 y 4.5, Opus 4.0 y 4.1 y Haiku 4.5, aún se excluyen para que las solicitudes no fallen |217| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Establécela en `1` para enviar el parámetro de [esfuerzo](/docs/es/model-config#adjust-effort-level) con cada solicitud, incluso cuando Claude Code no reconoce el ID del modelo como compatible con esfuerzo. Úsala al enrutar a través de un [gateway de LLM](/docs/es/llm-gateway) o un proveedor de terceros que sirve modelos con identificadores personalizados. Los modelos que rechazan el parámetro de esfuerzo en la API, incluidos los modelos Claude 3, Sonnet 4.0 y 4.5, Opus 4.0 y 4.1, y Haiku 4.5, siguen excluidos para que las solicitudes no fallen |

218| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo en milisegundos en el que se deben actualizar las credenciales (cuando se usa [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper)) |218| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervalo en milisegundos en el que se deben actualizar las credenciales (al usar [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper)) |

219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Establezca en `0` para evitar que Claude Code abra el navegador automáticamente cuando se publica un nuevo [artefacto](/docs/es/artifacts#create-an-artifact) |219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Establécela en `0` para evitar que Claude Code abra el navegador automáticamente cuando se publica un nuevo [artefacto](/docs/es/artifacts#create-an-artifact) |

220| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Establezca en `0` para evitar que Claude lea y responda a [comentarios en un artefacto](/docs/es/artifacts#collect-comments-on-an-artifact). No tiene efecto cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ha [desactivado artefactos](/docs/es/artifacts#availability). Requiere Claude Code v2.1.221 o posterior |220| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Establécela en `0` para que Claude deje de leer y responder los [comentarios en un artefacto](/docs/es/artifacts#collect-comments-on-an-artifact). No tiene efecto cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ha [desactivado los artefactos](/docs/es/artifacts#availability). Requiere Claude Code v2.1.221 o posterior |

221| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Establezca en `0` para evitar que Claude [responda por su cuenta a comentarios enviados](/docs/es/artifacts#let-claude-reply-to-comments-on-its-own). Requiere Claude Code v2.1.228 o posterior |221| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Establécela en `0` para que Claude deje de [responder por su cuenta a los comentarios que se le envían](/docs/es/artifacts#let-claude-reply-to-comments-on-its-own). Requiere Claude Code v2.1.228 o posterior |

222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Establezca en `0` para omitir el [bloque de atribución](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), que lleva la versión del cliente y una huella digital del prompt, desde el inicio del prompt del sistema. El almacenamiento en caché en una conexión directa a la API de Anthropic no se ve afectado de ninguna manera. En algunas configuraciones de conexión directa, Claude Code mantiene el bloque en solicitudes de clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) incluso cuando establece `0`. En [Bloque de atribución del prompt del sistema](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), verifique qué conexiones y credenciales cubre esto. Antes de v2.1.181, el bloque incluía un token por solicitud en URLs base personalizadas y conexiones de Microsoft Foundry, por lo que en esas versiones establézcalo en `0` cuando su puerta de enlace LLM almacena en caché el cuerpo de la solicitud o reenvía solicitudes a un proveedor de terceros, o cuando se conecta a Microsoft Foundry directamente |222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Establécela en `0` para omitir el [bloque de atribución](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), que contiene la versión del cliente y una huella del prompt, del inicio del prompt del sistema. El almacenamiento en caché en una conexión directa a la API de Anthropic no se ve afectado en ningún caso. En algunas configuraciones de conexión directa, Claude Code mantiene el bloque en las solicitudes del clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) incluso cuando estableces `0`. En [Bloque de atribución del prompt del sistema](/docs/es/llm-gateway-protocol#system-prompt-attribution-block), comprueba qué conexiones y credenciales abarca esto. Antes de v2.1.181, el bloque incluía un token por solicitud en URLs base personalizadas y conexiones de Microsoft Foundry, por lo que en esas versiones establécela en `0` cuando tu gateway de LLM almacene en caché según el cuerpo de la solicitud o reenvíe solicitudes a un proveedor de terceros, o cuando te conectes directamente a Microsoft Foundry |

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Cuando `CLAUDE_AUTO_BACKGROUND_TASKS` está habilitado, segundos entre recordatorios a Claude para verificar [subagentes de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que aún se están ejecutando. Solo acepta un entero simple de `1` a `86400`; cualquier otro valor o deletreo se lee como no establecido. Cuando no está establecido, no hay recordatorios de verificación. Requiere Claude Code v2.1.248 o posterior |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Cuando `CLAUDE_AUTO_BACKGROUND_TASKS` está activada, segundos entre recordatorios a Claude para que revise los [subagentes en segundo plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que todavía se están ejecutando. Solo acepta un entero simple de `1` a `86400`; cualquier otro valor o escritura se lee como no establecida. Si no está establecida, no hay recordatorios de revisión. Requiere Claude Code v2.1.248 o posterior |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la [ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) en tokens, de `100000` a `1000000`. Solo acepta un entero simple como `500000`: un valor como `500k` se lee como `500` y se fija al mínimo de 100K. La ventana efectiva también se limita a la ventana de contexto del modelo. Tiene prioridad sobre el comando `/autocompact`, la bandera `--autocompact` y la configuración `autoCompactWindow`. La línea de estado `used_percentage` siempre mide contra la ventana de contexto completa del modelo, por lo que una vez que se establece esta variable, ese porcentaje ya no indica cuándo se ejecutará la compactación |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establece la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) en tokens, de `100000` a `1000000`. Solo acepta un entero simple como `500000`: un valor como `500k` se lee como `500` y se ajusta al mínimo de 100K. La ventana efectiva también está limitada a la ventana de contexto del modelo. Tiene precedencia sobre el comando `/autocompact`, el flag `--autocompact` y el ajuste `autoCompactWindow`. El `used_percentage` de la línea de estado siempre se mide respecto a la ventana de contexto completa del modelo, por lo que, una vez establecida esta variable, ese porcentaje ya no indica cuándo se ejecutará la compactación |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión IDE](/docs/es/vs-code) automática. De forma predeterminada, Claude Code se conecta automáticamente cuando se inicia dentro de la terminal integrada de un IDE compatible. Establezca en `false` para evitar esto. Establezca en `true` para forzar un intento de conexión cuando la detección automática falla, como cuando tmux oscurece la terminal padre. Tiene prioridad sobre la configuración global [`autoConnectIde`](/docs/es/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Sobrescribe la [conexión automática al IDE](/docs/es/vs-code). De forma predeterminada, Claude Code se conecta automáticamente cuando se inicia dentro de la terminal integrada de un IDE compatible. Establécela en `false` para evitarlo. Establécela en `true` para forzar un intento de conexión cuando falla la detección automática, por ejemplo cuando tmux oculta la terminal principal. Tiene precedencia sobre el ajuste de configuración global [`autoConnectIde`](/docs/es/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Controla si Claude Code solicita al servidor que [revise acciones de modo automático](/docs/es/permission-modes#server-side-classifier-review). Establezca en `0` para usar solicitudes de clasificador propias de Claude Code en su lugar. En una conexión directa a la API de Anthropic, requiere v2.1.281 o posterior. La sección vinculada enumera qué sesiones solicitan al servidor cuando la variable no está establecida, y desde qué versión. Requiere Claude Code v2.1.271 o posterior |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Controla si Claude Code pide al servidor que [revise las acciones del modo automático](/docs/es/permission-modes#server-side-classifier-review). Establécela en `0` para usar en su lugar las propias solicitudes del clasificador de Claude Code. En una conexión directa a la API de Anthropic, requiere v2.1.281 o posterior. La sección enlazada indica qué sesiones consultan al servidor cuando la variable no está establecida, y a partir de qué versión. Requiere Claude Code v2.1.271 o posterior |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Tiempo en milisegundos que Claude Code espera a que el proveedor de credenciales predeterminado de AWS produzca credenciales antes de que la solicitud falle con [`AWS default-chain credential resolve timed out`](/docs/es/errors#aws-default-chain-credential-resolve-timed-out) (predeterminado: `60000`). Aumente cuando un paso en su cadena legítimamente necesita más tiempo, como un inicio de sesión SSO basado en navegador con MFA a través de un contenedor como `aws-vault`. Se aplica dondequiera que Claude Code firme con la cadena predeterminada: [Amazon Bedrock](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/es/claude-platform-on-aws) y el [punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Requiere Claude Code v2.1.207 o posterior |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Tiempo en milisegundos que Claude Code espera a que la cadena de proveedores de credenciales predeterminada de AWS produzca credenciales antes de que la solicitud falle con [`AWS default-chain credential resolve timed out`](/docs/es/errors#aws-default-chain-credential-resolve-timed-out) (predeterminado: `60000`). Auméntalo cuando un paso de tu cadena necesite legítimamente más tiempo, como un inicio de sesión SSO basado en navegador con MFA a través de un wrapper como `aws-vault`. Se aplica siempre que Claude Code firma con la cadena predeterminada: [Amazon Bedrock](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/es/claude-platform-on-aws) y el [endpoint de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Requiere Claude Code v2.1.207 o posterior |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Establezca en `0` para desactivar el [diff de los archivos que cambiaron mientras se ejecutaba un comando Bash](/docs/es/hooks#bash), o `1` para registrarlo en cada modo de permiso. Tiene prioridad sobre la configuración [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled). Requiere Claude Code v2.1.269 o posterior |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Establécela en `0` para desactivar el [diff de los archivos que cambiaron mientras se ejecutaba un comando de Bash](/docs/es/hooks#bash), o en `1` para registrarlo en todos los modos de permisos. Tiene precedencia sobre el ajuste [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled). Requiere Claude Code v2.1.269 o posterior |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Establezca en `0` para hacer que una sesión no interactiva informe un estado inactivo a su host al final de cada turno, incluso mientras el trabajo de fondo aún se está ejecutando. De forma predeterminada, la sesión sigue informando un estado de ejecución después del final del turno mientras el trabajo de fondo, como un agente de fondo o una ejecución de [flujo de trabajo](/docs/es/workflows), aún está activo. Esto evita que un host que observe el estado, como una lista de sesiones remotas, anuncie que Claude está esperando su entrada a mitad del trabajo. Los comandos de shell de fondo, como un servidor de desarrollo, no mantienen el estado de ejecución. El predeterminado de estado de ejecución y la opción de exclusión de `0` requieren Claude Code v2.1.269 o posterior; en versiones anteriores, establezca `1` para mantener el estado de ejecución |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Establécela en `0` para que una sesión no interactiva informe un estado inactivo a su host al final de cada turno, incluso mientras todavía se ejecuta trabajo en segundo plano. De forma predeterminada, la sesión sigue informando un estado en ejecución después del final del turno mientras el trabajo en segundo plano, como un agente en segundo plano o una ejecución de un [flujo de trabajo](/docs/es/workflows), sigue activo. Esto evita que un host que observa el estado, como una lista de sesiones remotas, anuncie que Claude espera tu entrada a mitad del trabajo. Los comandos de shell en segundo plano, como un servidor de desarrollo, no mantienen el estado en ejecución. El valor predeterminado del estado en ejecución y la exclusión con `0` requieren Claude Code v2.1.269 o posterior; en versiones anteriores, establece `1` para mantener el estado en ejecución |

230| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Se establece automáticamente en subprocesos de herramienta Bash y [comando hook](/docs/es/hooks) mientras la sesión tiene una conexión activa de [Remote Control](/docs/es/remote-control), y se elimina cuando la conexión termina. El valor es el ID de la sesión en forma `session_`, el mismo identificador que aparece en la URL `claude.ai/code` de la sesión, para que un script pueda vincularse de nuevo a la sesión que lo ejecutó. Requiere Claude Code v2.1.199 o posterior. En [sesiones en la nube](/docs/es/claude-code-on-the-web), lea `CLAUDE_CODE_REMOTE_SESSION_ID` en su lugar |230| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Se establece automáticamente en los subprocesos de la herramienta Bash y de los [comandos de hook](/docs/es/hooks) mientras la sesión tiene una conexión activa de [Remote Control](/docs/es/remote-control), y se elimina cuando termina la conexión. El valor es el ID de la sesión en formato `session_`, el mismo identificador que aparece en la URL `claude.ai/code` de la sesión, para que un script pueda enlazar a la sesión que lo ejecutó. Requiere Claude Code v2.1.199 o posterior. En [sesiones en la nube](/docs/es/claude-code-on-the-web), lee `CLAUDE_CODE_REMOTE_SESSION_ID` en su lugar |

231| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Establezca en `0` para hacer que Claude Code lea el byte `0x08`, también escrito `^H`, como Retroceso simple, o `1` para leerlo como Ctrl+Retroceso. Cualquier valor reemplaza el predeterminado de la plataforma. De forma predeterminada, Claude Code lo lee como Ctrl+Retroceso en Windows, excepto cuando `TERM_PROGRAM` es `mintty` o `TERM` es `cygwin`, y como Retroceso simple en macOS y Linux. Establezca `0` en una terminal de Windows donde [Retroceso elimina una palabra completa](/docs/es/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |231| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Establécela en `0` para que Claude Code lea el byte `0x08`, también escrito `^H`, como Backspace simple, o en `1` para leerlo como Ctrl+Backspace. Cualquiera de los dos valores reemplaza el valor predeterminado de la plataforma. De forma predeterminada, Claude Code lo lee como Ctrl+Backspace en Windows, excepto cuando `TERM_PROGRAM` es `mintty` o `TERM` es `cygwin`, y como Backspace simple en macOS y Linux. Establece `0` en una terminal de Windows donde [Backspace borra una palabra completa](/docs/es/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |

232| `CLAUDE_CODE_CERT_STORE` | Lista separada por comas de fuentes de certificados de CA para conexiones TLS. `bundled` es el conjunto de CA de Mozilla enviado con Claude Code. `system` es el almacén de confianza del sistema operativo, leído solo en tiempos de ejecución con `tls.getCACertificates`: el binario nativo, o Node 22.15 o posterior para instalaciones npm. Consulte [Almacén de certificados de CA](/docs/es/network-config#ca-certificate-store). El predeterminado es `bundled,system` |232| `CLAUDE_CODE_CERT_STORE` | Lista separada por comas de fuentes de certificados de CA para conexiones TLS. `bundled` es el conjunto de CA de Mozilla incluido con Claude Code. `system` es el almacén de confianza del sistema operativo, que solo se lee en entornos de ejecución con `tls.getCACertificates`: el binario nativo, o Node 22.15 o posterior para instalaciones con npm. Consulta [Almacén de certificados de CA](/docs/es/network-config#ca-certificate-store). El valor predeterminado es `bundled,system` |

233| `CLAUDE_CODE_CHILD_SESSION` | Se establece en `1` en subprocesos que Claude Code genera a través de las herramientas Bash, PowerShell y Monitor, comandos [hook](/docs/es/hooks) y comandos [línea de estado](/docs/es/statusline). No se establece para subprocesos de [servidor MCP](/docs/es/mcp) stdio, que son de larga duración y sobreviven a la sesión que los generó. A diferencia de `CLAUDECODE`, esto solo se establece por Claude Code mismo cuando inicia un subproceso y no por extensiones IDE, por lo que distingue de manera confiable una sesión anidada de un `claude` de nivel superior lanzado en una terminal integrada de IDE. Un `claude` TUI interactivo anidado iniciado de esta manera se excluye automáticamente de `--resume`, `--continue`, historial de flecha hacia arriba y la lista `claude agents`. Las sesiones `claude -p` no interactivas aún persisten. Establezca `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` para anular esta exclusión. Requiere Claude Code v2.1.172 o posterior |233| `CLAUDE_CODE_CHILD_SESSION` | Se establece en `1` en los subprocesos que Claude Code genera mediante las herramientas Bash, PowerShell y Monitor, los comandos de [hook](/docs/es/hooks) y los comandos de la [línea de estado](/docs/es/statusline). No se establece para los subprocesos de [servidores MCP](/docs/es/mcp) stdio, que son de larga duración y sobreviven a la sesión que los generó. A diferencia de `CLAUDECODE`, solo la establece el propio Claude Code cuando inicia un subproceso y no las extensiones de IDE, por lo que distingue de forma fiable una sesión anidada de un `claude` de nivel superior iniciado en una terminal integrada de un IDE. Una TUI interactiva de `claude` anidada iniciada de esta manera se excluye automáticamente de `--resume`, `--continue`, el historial de flecha arriba y la lista de `claude agents`. Las sesiones no interactivas de `claude -p` siguen persistiendo. Establece `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` para sobrescribir esta exclusión. Requiere Claude Code v2.1.172 o posterior |

234| `CLAUDE_CODE_CLIENT_CERT` | Ruta al archivo de certificado de cliente para autenticación mTLS |234| `CLAUDE_CODE_CLIENT_CERT` | Ruta al archivo de certificado de cliente para la autenticación mTLS |

235| `CLAUDE_CODE_CLIENT_KEY` | Ruta al archivo de clave privada de cliente para autenticación mTLS |235| `CLAUDE_CODE_CLIENT_KEY` | Ruta al archivo de clave privada del cliente para la autenticación mTLS |

236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frase de contraseña para CLAUDE\_CODE\_CLIENT\_KEY cifrado (opcional) |236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frase de contraseña para CLAUDE\_CODE\_CLIENT\_KEY cifrada (opcional) |

237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Eliminado en v2.1.186 y ahora es un no-op. Anteriormente establecía un tiempo de espera separado para la fase de conexión, TLS y encabezado de respuesta de una solicitud de API de transmisión. Use `API_TIMEOUT_MS` para el tiempo de espera por solicitud. Para la fase de encabezado de respuesta de una solicitud de transmisión, consulte `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Se eliminó en v2.1.186 y ahora no tiene efecto. Anteriormente establecía un tiempo de espera independiente para la fase de conexión, TLS y encabezados de respuesta de una solicitud de API en streaming. Usa `API_TIMEOUT_MS` para el tiempo de espera por solicitud. Para la fase de encabezados de respuesta de una solicitud en streaming, consulta `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Anule la ruta del archivo de registro de depuración. A pesar del nombre, esta es una ruta de archivo, no un directorio. Requiere que el modo de depuración se habilite por separado a través de `--debug`, `/debug` o la variable de entorno `DEBUG`: establecer esta variable sola no habilita el registro. La bandera [`--debug-file`](/docs/es/cli-reference#cli-flags) hace ambas cosas a la vez. El valor predeterminado es `~/.claude/debug/<session-id>.txt` |238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Sobrescribe la ruta del archivo de registro de depuración. A pesar del nombre, es una ruta de archivo, no un directorio. Requiere que el modo de depuración se active por separado mediante `--debug`, `/debug` o la variable de entorno `DEBUG`: establecer solo esta variable no activa el registro. El flag [`--debug-file`](/docs/es/cli-reference#cli-flags) hace ambas cosas a la vez. El valor predeterminado es `~/.claude/debug/<session-id>.txt` |

239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Nivel de registro mínimo escrito en el archivo de registro de depuración. Valores: `verbose`, `debug` (predeterminado), `info`, `warn`, `error`. Establezca en `verbose` para incluir diagnósticos de alto volumen como salida completa de comandos de línea de estado, o aumente a `error` para reducir ruido |239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Nivel mínimo de registro que se escribe en el archivo de registro de depuración. Valores: `verbose`, `debug` (predeterminado), `info`, `warn`, `error`. Establécela en `verbose` para incluir diagnósticos de gran volumen, como la salida completa del comando de la línea de estado, o súbela a `error` para reducir el ruido |

240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Establezca en `1` para desabilitar el soporte de [ventana de contexto de 1M](/docs/es/model-config#extended-context). Cuando se establece, las variantes de modelo de 1M no están disponibles en el selector de modelo, y Claude Code mantiene sesiones en modelos con una ventana nativa de 1M, como [Sonnet 5.5](/docs/es/model-config#sonnet-5-5-and-sonnet-5-context-window) y los modelos Fable, a una ventana de 200K; consulte [Contexto extendido](/docs/es/model-config#extended-context) para cómo se aplica la retención. Útil para entornos empresariales con requisitos de cumplimiento. Para su papel en corregir la ventana para un ID de modelo no reconocido `[1m]`, consulte [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Establécela en `1` para desactivar la compatibilidad con la [ventana de contexto de 1M](/docs/es/model-config#extended-context). Cuando está establecida, las variantes de modelo de 1M no están disponibles en el selector de modelos y Claude Code limita las sesiones en modelos con una ventana nativa de 1M, como [Sonnet 5.5](/docs/es/model-config#sonnet-5-5-and-sonnet-5-context-window) y los modelos Fable, a una ventana de 200K; consulta [Contexto extendido](/docs/es/model-config#extended-context) para ver cómo se aplica esa limitación. Útil para entornos empresariales con requisitos de cumplimiento. Para su función al corregir la ventana de un ID de modelo `[1m]` no reconocido, consulta [Corregir la ventana para un ID de modelo de gateway o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |

241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Establezca en `1` para desabilitar [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) en Opus 4.6 y Sonnet 4.6 y volver al presupuesto de pensamiento fijo controlado por `MAX_THINKING_TOKENS`. No tiene efecto en [modelos Fable](/docs/es/model-config#extended-thinking), Sonnet 5 y posterior, u Opus 4.7 y posterior, que siempre usan razonamiento adaptativo |241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Establécela en `1` para desactivar el [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) en Opus 4.6 y Sonnet 4.6 y recurrir al presupuesto de pensamiento fijo controlado por `MAX_THINKING_TOKENS`. No tiene efecto en los [modelos Fable](/docs/es/model-config#extended-thinking), Sonnet 5 y posteriores, ni Opus 4.7 y posteriores, que siempre usan razonamiento adaptativo |

242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Establezca en `1` para evitar que Claude Code fusione bloques `env` de [configuración administrada](/docs/es/managed-settings#precedence-within-the-managed-tier) por clave en todas las fuentes de administrador, por lo que solo se aplica el bloque `env` de la fuente de mayor prioridad, como antes de v2.1.223. Establézcalo en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de configuración. Requiere Claude Code v2.1.223 o posterior |242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Establécela en `1` para evitar que Claude Code combine por clave los bloques `env` de la [configuración administrada](/docs/es/managed-settings#precedence-within-the-managed-tier) entre fuentes de administración, de modo que solo se aplique el bloque `env` completo de la fuente de mayor prioridad, como antes de v2.1.223. Establécela en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de la configuración. Requiere Claude Code v2.1.223 o posterior |

243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Establezca en `1` para desabilitar la [herramienta de asesor](/docs/es/advisor). El comando `/advisor` se vuelve no disponible, cualquier `advisorModel` configurado se ignora, y la bandera `--advisor` se acepta pero no tiene efecto, por lo que los scripts existentes que la pasan continúan funcionando sin errores |243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Establécela en `1` para desactivar la [herramienta advisor](/docs/es/advisor). El comando `/advisor` deja de estar disponible, se ignora cualquier `advisorModel` configurado y el flag `--advisor` se acepta pero no tiene efecto, por lo que los scripts existentes que lo pasan siguen funcionando sin errores |

244| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Establezca en `1` para desactivar [agentes de fondo y vista de agente](/docs/es/agent-view): `claude agents`, `--bg`, `/background` y el supervisor bajo demanda. Equivalente a la configuración [`disableAgentView`](/docs/es/settings-reference#disableagentview) |244| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Establécela en `1` para desactivar los [agentes en segundo plano y la vista de agentes](/docs/es/agent-view): `claude agents`, `--bg`, `/background` y el supervisor bajo demanda. Equivale al ajuste [`disableAgentView`](/docs/es/settings-reference#disableagentview) |

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

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

247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Establezca en `1` para desabilitar el procesamiento de archivos adjuntos. Las menciones de archivos con sintaxis `@` se envían como texto simple en lugar de expandirse en contenido de archivo |247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Establécela en `1` para desactivar el procesamiento de archivos adjuntos. Las menciones de archivos con la sintaxis `@` se envían como texto plano en lugar de expandirse al contenido del archivo |

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

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

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

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

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

253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Establezca en `1` para evitar que los comandos de shell de fondo en ejecución de una [sesión de fondo](/docs/es/agent-view), flujos de trabajo dinámicos, y, a partir de v2.1.198, subagentes de fondo cuando el [supervisor](/docs/es/agent-view#the-supervisor-process) detiene, reinicia o actualiza el proceso de esa sesión, en lugar de entregarlos al siguiente proceso de la sesión. Afecta solo esa entrega: enviar una sesión a segundo plano con `←` o [`/background`](/docs/es/agent-view#from-inside-a-session) aún lleva el trabajo en vuelo, y `CLAUDE_DISABLE_ADOPT` desactiva ambos. Requiere Claude Code v2.1.196 o posterior |253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Establécela en `1` para detener los comandos de shell en segundo plano en ejecución, los flujos de trabajo dinámicos y, a partir de v2.1.198, los subagentes en segundo plano de una [sesión en segundo plano](/docs/es/agent-view) cuando el [supervisor](/docs/es/agent-view#the-supervisor-process) detiene, reinicia o actualiza el proceso de esa sesión, en lugar de entregarlos al siguiente proceso de la sesión. Solo afecta a esa entrega: enviar una sesión a segundo plano con `←` o [`/background`](/docs/es/agent-view#from-inside-a-session) sigue trasladando el trabajo en curso, y `CLAUDE_DISABLE_ADOPT` desactiva ambas cosas. Requiere Claude Code v2.1.196 o posterior |

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

255| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establezca en `1` para desabilitar las [skills](/docs/es/skills) y flujos de trabajo incluidos con Claude Code: las skills y flujos de trabajo agrupados se eliminan completamente, mientras que los comandos integrados como `/init` permanecen escribibles pero se ocultan del modelo. `/doctor` permanece escribible como los comandos integrados; ocúltalo con `DISABLE_DOCTOR_COMMAND` en su lugar. Las skills de plugins, `.claude/skills/` y `.claude/commands/` no se ven afectadas. Equivalente a la configuración [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills) |255| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establécela en `1` para desactivar los [skills](/docs/es/skills) y flujos de trabajo incluidos con Claude Code: los skills y flujos de trabajo incluidos se eliminan por completo, mientras que los comandos integrados como `/init` se pueden seguir escribiendo pero quedan ocultos para el modelo. `/doctor` se puede seguir escribiendo como los comandos integrados; ocúltalo con `DISABLE_DOCTOR_COMMAND` en su lugar. Los skills de plugins, `.claude/skills/` y `.claude/commands/` no se ven afectados. Equivale al ajuste [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills) |

256| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Establezca en `1` para mantener las herramientas de navegador [Claude in Chrome](/docs/es/chrome) disponibles mientras omite la sección de Chrome del prompt del sistema y la [skill agrupada](/docs/es/skills#bundled-skills) `/claude-in-chrome`. Para hosts que incrustan Claude Code y suministran su propia guía de navegador. Requiere Claude Code v2.1.257 o posterior |256| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Establécela en `1` para mantener disponibles las herramientas de navegador de [Claude in Chrome](/docs/es/chrome) mientras se omiten la sección de Chrome del prompt del sistema y el [skill incluido](/docs/es/skills#bundled-skills) `/claude-in-chrome`. Para hosts que integran Claude Code y proporcionan su propia guía de navegador. Requiere Claude Code v2.1.257 o posterior |

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

258| `CLAUDE_CODE_DISABLE_CRON` | Establezca en `1` para desabilitar [tareas programadas](/docs/es/scheduled-tasks). La skill `/loop` y las herramientas cron se vuelven no disponibles y cualquier tarea ya programada deja de activarse, incluidas las tareas que ya se están ejecutando a mitad de sesión |258| `CLAUDE_CODE_DISABLE_CRON` | Establécela en `1` para desactivar las [tareas programadas](/docs/es/scheduled-tasks). El skill `/loop` y las herramientas cron dejan de estar disponibles y cualquier tarea ya programada deja de dispararse, incluidas las tareas que ya se están ejecutando a mitad de la sesión |

259| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Establezca en `1` para desactivar el límite de tiempo en solicitudes de [ruta crítica de eliminación](/docs/es/permission-modes#critical-paths). En modo `auto`, Claude Code envía estas eliminaciones al clasificador en su lugar, y en modo `bypassPermissions`, el prompt espera su respuesta. Establézcalo en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de configuración. Requiere Claude Code v2.1.281 o posterior |259| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Establécela en `1` para desactivar el límite de tiempo en las solicitudes de permiso de [eliminación de rutas críticas](/docs/es/permission-modes#critical-paths). En el modo `auto`, Claude Code envía entonces estas eliminaciones al clasificador, y en el modo `bypassPermissions` la solicitud espera tu respuesta. Establécela en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de la configuración. Requiere Claude Code v2.1.281 o posterior |

260| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Establécela en `1` para eliminar de las solicitudes a la API los encabezados de solicitud `anthropic-beta` de versiones preliminares, los campos del cuerpo que los acompañan y los campos beta del esquema de herramientas como `defer_loading` y `eager_input_streaming`. Úsala cuando un gateway proxy rechace solicitudes con un error `Unexpected value(s)` para el encabezado `anthropic-beta` o un error `Extra inputs are not permitted`. [Desactivar capacidades preliminares](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities) enumera lo que elimina la variable, incluido [MCP Tool Search](/docs/es/mcp#scale-with-mcp-tool-search), y lo que Claude Code sigue enviando |260| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Establécela en `1` para quitar de las solicitudes a la API los encabezados de solicitud `anthropic-beta` de versiones preliminares, los campos del cuerpo que los acompañan y los campos beta del esquema de herramientas, como `defer_loading` y `eager_input_streaming`. Úsala cuando un gateway proxy rechace solicitudes con un error `Unexpected value(s)` para el encabezado `anthropic-beta` o un error `Extra inputs are not permitted`. [Desactivar las capacidades preliminares](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities) enumera lo que elimina la variable, incluido [MCP Tool Search](/docs/es/mcp#scale-with-mcp-tool-search), y lo que Claude Code sigue enviando |

261| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Establezca en `1` para desabilitar los [subagentes Explore y Plan integrados](/docs/es/sub-agents#built-in-subagents). Claude explora con sus herramientas de búsqueda o el subagente de propósito general en su lugar, y [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) lee archivos directamente en lugar de lanzar agentes Explore y Plan. Los subagentes personalizados nombrados `Explore` o `Plan` no se ven afectados. Para eliminar cada tipo de subagente integrado en el Agent SDK o modo no interactivo, use `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` en su lugar. Requiere Claude Code v2.1.198 o posterior |261| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Establécela en `1` para desactivar los [subagentes Explore y Plan integrados](/docs/es/sub-agents#built-in-subagents). Claude explora con sus herramientas de búsqueda o con el subagente de propósito general en su lugar, y el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) lee los archivos directamente en lugar de lanzar los agentes Explore y Plan. Los subagentes personalizados llamados `Explore` o `Plan` no se ven afectados. Para eliminar todos los tipos de subagentes integrados en el Agent SDK o en modo no interactivo, usa `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` en su lugar. Requiere Claude Code v2.1.198 o posterior |

262| `CLAUDE_CODE_DISABLE_FAST_MODE` | Establezca en `1` para desabilitar [modo rápido](/docs/es/fast-mode) |262| `CLAUDE_CODE_DISABLE_FAST_MODE` | Establécela en `1` para desactivar el [modo rápido](/docs/es/fast-mode) |

263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Establezca en `1` para desabilitar las encuestas de calidad de sesión "¿Cómo está Claude?". Las encuestas también se desabilitarán cuando `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` esté establecido, a menos que `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` opte por volver a participar. Para establecer una tasa de muestreo en lugar de desabilitar completamente, use la configuración [`feedbackSurveyRate`](/docs/es/settings-reference#feedbacksurveyrate). Consulte [Encuestas de calidad de sesión](/docs/es/data-usage#session-quality-surveys) |263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Establécela en `1` para desactivar las encuestas de calidad de sesión "How is Claude doing?". Las encuestas también se desactivan cuando `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` están establecidas, a menos que `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` las vuelva a activar. Para establecer una tasa de muestreo en lugar de desactivarlas por completo, usa el ajuste [`feedbackSurveyRate`](/docs/es/settings-reference#feedbacksurveyrate). Consulta [Encuestas de calidad de sesión](/docs/es/data-usage#session-quality-surveys) |

264| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Establezca en `1` para desabilitar [checkpointing](/docs/es/checkpointing) de archivos. El comando `/rewind` no podrá restaurar cambios de código. Anula la configuración [`fileCheckpointingEnabled`](/docs/es/settings-reference#filecheckpointingenabled) |264| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Establécela en `1` para desactivar el [checkpointing](/docs/es/checkpointing) de archivos. El comando `/rewind` no podrá restaurar los cambios de código. Sobrescribe el ajuste [`fileCheckpointingEnabled`](/docs/es/settings-reference#filecheckpointingenabled) |

265| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Establezca en `1` para eliminar instrucciones de flujo de trabajo de commit y PR integradas y la instantánea de estado de git del contexto de Claude. Útil cuando se usan sus propias skills de flujo de trabajo de git. Tiene prioridad sobre la configuración [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) cuando se establece |265| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Establécela en `1` para quitar del contexto de Claude las instrucciones integradas del flujo de trabajo de commits y PR y la instantánea del estado de git. Útil cuando usas tus propios skills de flujo de trabajo de git. Tiene precedencia sobre el ajuste [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) cuando está establecida |

266| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Establezca en `1` para evitar la remapeo automático de Opus 4.0 y 4.1 a la versión actual de Opus en la API de Anthropic. Use cuando desee fijar intencionalmente un modelo más antiguo. El remapeo no se ejecuta en Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry |266| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Establécela en `1` para evitar la reasignación automática de Opus 4.0 y 4.1 a la versión actual de Opus en la API de Anthropic. Úsala cuando quieras fijar intencionalmente un modelo anterior. La reasignación no se ejecuta en Amazon Bedrock, Agent Platform de Google Cloud ni Microsoft Foundry |

267| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | Establezca en `1` para evitar que Claude Code en [Amazon Bedrock](/docs/es/amazon-bedrock#when-a-model-is-disabled-mid-session) y [Google Cloud's Agent Platform](/docs/es/google-vertex-ai#when-a-model-is-disabled-mid-session) cambie a un modelo más antiguo cuando su cuenta pierde acceso al modelo de una sesión a mitad de sesión; la solicitud rechazada falla de inmediato en su lugar. Una [cadena de modelo de alternativa](/docs/es/model-config#fallback-model-chains) que configure aún cambia en ese rechazo, y las [comprobaciones de modelo de inicio](/docs/es/amazon-bedrock#startup-model-checks) aún se retroceden al lanzamiento. Requiere Claude Code v2.1.285 o posterior |267| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | Establécela en `1` para evitar que Claude Code en [Amazon Bedrock](/docs/es/amazon-bedrock#when-a-model-is-disabled-mid-session) y [Agent Platform de Google Cloud](/docs/es/google-vertex-ai#when-a-model-is-disabled-mid-session) cambie a un modelo anterior cuando tu cuenta pierde el acceso al modelo de una sesión a mitad de la sesión; en su lugar, la solicitud rechazada falla de inmediato. Una [cadena de modelos de respaldo](/docs/es/model-config#fallback-model-chains) que configures sigue cambiando de modelo ante ese rechazo, y las [comprobaciones de modelo al inicio](/docs/es/amazon-bedrock#startup-model-checks) siguen recurriendo a un modelo de respaldo al iniciar. Requiere Claude Code v2.1.285 o posterior |

268| `CLAUDE_CODE_DISABLE_MOUSE` | Establezca en `1` para desabilitar el seguimiento del ratón en [renderizado de pantalla completa](/docs/es/fullscreen). El desplazamiento por teclado con `PgUp` y `PgDn` aún funciona. Use esto para mantener el comportamiento de copia al seleccionar nativo de su terminal |268| `CLAUDE_CODE_DISABLE_MOUSE` | Establécela en `1` para desactivar el seguimiento del mouse en el [renderizado de pantalla completa](/docs/es/fullscreen). El desplazamiento con el teclado mediante `PgUp` y `PgDn` sigue funcionando. Úsala para mantener el comportamiento nativo de copiar al seleccionar de tu terminal |

269| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Establezca en `1` para desabilitar el manejo de clics, arrastres y desplazamientos en [renderizado de pantalla completa](/docs/es/fullscreen) mientras mantiene el desplazamiento de rueda del ratón. Use esto cuando desee que el desplazamiento de rueda funcione dentro de Claude Code pero no desee que los clics posicionen el cursor, expandan la salida de herramientas o abran enlaces. `CLAUDE_CODE_DISABLE_MOUSE` tiene prioridad cuando ambos están establecidos. Requiere Claude Code v2.1.195 o posterior |269| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Establécela en `1` para desactivar el manejo de clics, arrastre y paso del puntero en el [renderizado de pantalla completa](/docs/es/fullscreen) manteniendo el desplazamiento con la rueda del mouse. Úsala cuando quieras que el desplazamiento con la rueda funcione dentro de Claude Code pero no quieras que los clics posicionen el cursor, expandan la salida de las herramientas ni abran enlaces. `CLAUDE_CODE_DISABLE_MOUSE` tiene precedencia cuando ambas están establecidas. Requiere Claude Code v2.1.195 o posterior |

270| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Establezca en `1` para evitar que Claude Code vuelva a leer el [certificado de cliente mTLS y la clave](/docs/es/network-config#mtls-authentication) cuando una solicitud de API falla con un error a nivel de conexión, como un reinicio de conexión o un error de protocolo de enlace TLS. Con la recarga deshabilitada, Claude Code carga archivos rotados solo cuando aplica configuración a continuación o en el siguiente inicio. Requiere Claude Code v2.1.232 o posterior |270| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Establécela en `1` para evitar que Claude Code vuelva a leer el [certificado y la clave de cliente mTLS](/docs/es/network-config#mtls-authentication) cuando una solicitud a la API falla con un error de nivel de conexión, como un restablecimiento de la conexión o un error de handshake TLS. Con la recarga desactivada, Claude Code carga los archivos rotados solo la próxima vez que aplica la configuración o en el siguiente inicio. Requiere Claude Code v2.1.232 o posterior |

271| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Establezca en cualquier valor no vacío, como `1`, para desabilitar el tráfico de red no esencial: actualizaciones automáticas, telemetría, informes de errores, el comando `/feedback`, [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), notas de lanzamiento, las [comprobaciones de insignia de estado de PR y MR](/docs/es/interactive-mode#pr-review-status) y comprobaciones de disponibilidad como la comprobación de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). También detiene las [ejecuciones de fondo de fuentes de comando de plugin](/docs/es/plugins/loading#when-a-command-source-re-runs), que son comandos locales en lugar de tráfico de red, porque pueden desencadenar instalaciones de dependencias. **Establecerlo en `0` o `false` aún desabilita este tráfico**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para permitirlo de nuevo. También desabilita la obtención de banderas de características, lo que hace que [Remote Control](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. La instalación automática del mercado de plugins oficial no está cubierta; desabilitela con `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. No afecta [descubrimiento de modelo de puerta de enlace](/docs/es/llm-gateway-connect#add-gateway-models-to-the-model-picker), que tiene su propio opt-in |271| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Establécela en cualquier valor no vacío, como `1`, para desactivar el tráfico de red no esencial: actualizaciones automáticas, telemetría, informes de errores, el comando `/feedback`, los [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), las notas de la versión, las comprobaciones de la [insignia de estado de PR y MR](/docs/es/interactive-mode#pr-review-status) y las comprobaciones de disponibilidad, como la del [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). También detiene las [ejecuciones en segundo plano de las fuentes `command` de plugins](/docs/es/plugins/loading#when-a-command-source-re-runs), que son comandos locales y no tráfico de red, porque pueden desencadenar instalaciones de dependencias. **Establecerla en `0` o `false` sigue desactivando este tráfico**, a diferencia de la mayoría de las variables de activación/desactivación; quita la variable para volver a permitirlo. También desactiva la obtención de feature flags, lo que hace que [Remote Control](/docs/es/remote-control#requirements) y las demás [funciones que necesitan la obtención de feature flags](#features-that-need-feature-flag-fetching) no estén disponibles. La instalación automática del marketplace oficial de plugins no está incluida; desactívala con `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. No afecta al [descubrimiento de modelos del gateway](/docs/es/llm-gateway-connect#add-gateway-models-to-the-model-picker), que tiene su propia activación opcional |

272| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Establezca en `1` para desabilitar la alternativa no transmitida cuando una solicitud de transmisión falla a mitad de transmisión. Los errores de transmisión se propagan a la capa de reintento en su lugar. Útil cuando una puerta de enlace o proxy causa que la alternativa produzca ejecución de herramientas duplicada |272| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Establécela en `1` para desactivar el respaldo sin streaming cuando una solicitud en streaming falla a mitad del stream. En su lugar, los errores de streaming se propagan a la capa de reintentos. Útil cuando un proxy o gateway hace que el respaldo produzca una ejecución duplicada de herramientas |

273| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Establezca en `1` para enviar la notificación de escritorio de la herramienta `PushNotification` incluso mientras está escribiendo en o enfocado en la terminal. De forma predeterminada, la herramienta omite tanto la notificación de escritorio como el [push móvil](/docs/es/remote-control#mobile-push-notifications) cuando detecta actividad de teclado reciente o enfoque de terminal. Esta variable desabilita solo esa verificación local, por lo que el servidor aún puede suprimir el push móvil cuando detecta que está activo. Requiere Claude Code v2.1.193 o posterior |273| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Establécela en `1` para enviar la notificación de escritorio de la herramienta `PushNotification` incluso mientras escribes en la terminal o esta tiene el foco. De forma predeterminada, la herramienta omite tanto la notificación de escritorio como la [notificación push móvil](/docs/es/remote-control#mobile-push-notifications) cuando detecta actividad reciente del teclado o el foco en la terminal. Esta variable desactiva solo esa comprobación local, por lo que el servidor aún puede suprimir la notificación push móvil cuando detecta que estás activo. Requiere Claude Code v2.1.193 o posterior |

274| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Establezca en `1` para desabilitar el registro automático del mercado de plugins oficial. Claude Code lee la variable cuando está a punto de registrar el mercado, generalmente durante el primer lanzamiento interactivo de una máquina. Si la variable está establecida en ese punto, Claude Code omite el registro permanentemente. Desestablecerla más tarde no deshace la omisión. Ejecute `claude plugin marketplace add anthropics/claude-plugins-official` para registrar el mercado en cualquier momento |274| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Establécela en `1` para desactivar el registro automático del marketplace oficial de plugins. Claude Code lee la variable cuando está a punto de registrar el marketplace, normalmente durante el primer inicio interactivo en una máquina. Si la variable está establecida en ese momento, Claude Code omite el registro de forma permanente. Quitar la variable más adelante no deshace la omisión. Ejecuta `claude plugin marketplace add anthropics/claude-plugins-official` para registrar el marketplace en cualquier momento |

275| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Establezca en `1` para evitar que Claude Code ejecute sus [hooks de Notification para solicitudes de permiso sin respuesta](/docs/es/hooks#notification) en sesiones donde Claude Code las envía a la devolución de llamada `canUseTool` del Agent SDK, que es cómo Claude Desktop y la extensión VS Code alojan Claude Code. No tiene efecto en sesiones de terminal. Requiere Claude Code v2.1.233 o posterior |275| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Establécela en `1` para evitar que Claude Code ejecute tus [hooks `Notification` para solicitudes de permiso sin responder](/docs/es/hooks#notification) en sesiones donde Claude Code las envía al callback `canUseTool` del Agent SDK, que es la forma en que Claude Desktop y la extensión de VS Code alojan Claude Code. No tiene efecto en sesiones de terminal. Requiere Claude Code v2.1.233 o posterior |

276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Establezca en `1` para omitir la carga de skills desde el directorio de skills administrado en todo el sistema. Útil para sesiones de contenedor o CI que no deben cargar skills aprovisionadas por operador |276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Establécela en `1` para omitir la carga de skills desde el directorio de skills administrados de todo el sistema. Útil para sesiones de contenedor o de CI que no deben cargar skills aprovisionados por el operador |

277| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Establezca en `1` para desactivar la verificación de [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) que niega los comandos integrados `cmd` `rd`, `rmdir`, `del` y `erase` en una [ruta del sistema](/docs/es/permission-modes#remove-item-in-powershell), como una raíz de unidad o su directorio de inicio. Claude Code ignora esta variable en un bloque `env` de archivo de configuración. Requiere Claude Code v2.1.283 o posterior |277| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Establécela en `1` para desactivar la comprobación de la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) que deniega los comandos integrados de `cmd` `rd`, `rmdir`, `del` y `erase` en una [ruta del sistema](/docs/es/permission-modes#remove-item-in-powershell), como la raíz de una unidad o tu directorio home. Claude Code ignora esta variable en el bloque `env` de un archivo de configuración. Requiere Claude Code v2.1.283 o posterior |

278| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Establezca en `1` para desactivar la verificación de [ruta crítica](/docs/es/permission-modes#critical-paths) para un `rm` recursivo cuyo objetivo es completamente la salida de una sustitución de comando, como `rm -rf "$(pwd)"`. Las otras verificaciones de ruta crítica siguen ejecutándose. Establézcalo en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de configuración. Requiere Claude Code v2.1.281 o posterior |278| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Establécela en `1` para evitar que Claude Code envíe el campo de salida estructurada `output_config.format` y el valor `anthropic-beta` que lo acompaña, para un [gateway de LLM](/docs/es/llm-gateway-protocol#feature-pass-through) cuyo servicio upstream los rechaza. Esto deja activadas las demás capacidades preliminares que [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/es/llm-gateway-protocol#disable-pre-release-capabilities) desactiva. Requiere Claude Code v2.1.288 o posterior |

279| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Establezca en `1` para desabilitar las actualizaciones automáticas del título de la terminal basadas en el contexto de la conversación. Esto también omite la solicitud de modelo pequeño/rápido de fondo que [genera un título de sesión](/docs/es/sessions#name-your-sessions) |279| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Establécela en `1` para desactivar la comprobación de [rutas críticas](/docs/es/permission-modes#critical-paths) para un `rm` recursivo cuyo destino es enteramente la salida de una sustitución de comandos, como `rm -rf "$(pwd)"`. Las demás comprobaciones de rutas críticas siguen ejecutándose. Establécela en el entorno que inicia Claude Code, ya que Claude Code ignora una copia entregada a través de un bloque `env` de la configuración. Requiere Claude Code v2.1.281 o posterior |

280| `CLAUDE_CODE_DISABLE_THINKING` | Establezca en `1` para omitir completamente el parámetro `thinking` de solicitudes de API. Esta es una opción de compatibilidad para proxies y puertas de enlace que rechazan el parámetro. En modelos que piensan de forma predeterminada, omitir el parámetro significa que el modelo aún puede pensar. Para desabilitar explícitamente [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) en la API de Anthropic, use `MAX_THINKING_TOKENS=0` en su lugar. Ninguna variable desactiva el pensamiento en Opus 5.5, Sonnet 5.5 o los modelos Fable, que no pueden tener el pensamiento desactivado. En [proveedores de terceros](/docs/es/third-party-integrations), `MAX_THINKING_TOKENS=0` asimismo omite el parámetro, por lo que las dos variables se comportan igual allí |280| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Establécela en `1` para desactivar las actualizaciones automáticas del título de la terminal basadas en el contexto de la conversación. Esto también omite la solicitud en segundo plano al modelo pequeño/rápido que [genera un título de sesión](/docs/es/sessions#name-your-sessions) |

281| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Establezca en `1` para omitir [auto-compactación](/docs/es/costs#reduce-token-usage) proactiva cuando Claude Code no reconoce el ID del modelo, como un alias de [puerta de enlace LLM](/docs/es/llm-gateway). Sin esta variable, Claude Code compacta en la ventana de contexto que asume para el ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` puede corregir la ventana asumida en su lugar; consulte [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) para cuándo se aplica cada variable. Requiere Claude Code v2.1.223 o posterior |281| `CLAUDE_CODE_DISABLE_THINKING` | Establécela en `1` para omitir por completo el parámetro `thinking` de las solicitudes a la API. Es una opción de compatibilidad para proxies y gateways que rechazan el parámetro. En los modelos que piensan de forma predeterminada, omitir el parámetro significa que el modelo aún puede pensar. Para desactivar explícitamente el [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) en la API de Anthropic, usa `MAX_THINKING_TOKENS=0` en su lugar. Ninguna de las dos variables desactiva el pensamiento en Opus 5.5, Sonnet 5.5 ni los modelos Fable, en los que no se puede desactivar el pensamiento. En [proveedores de terceros](/docs/es/third-party-integrations), `MAX_THINKING_TOKENS=0` también omite el parámetro, por lo que ambas variables se comportan igual allí |

282| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Establezca en `1` para desabilitar el desplazamiento virtual en [renderizado de pantalla completa](/docs/es/fullscreen) y renderizar cada mensaje en la transcripción. Use esto si el desplazamiento en modo de pantalla completa muestra regiones en blanco donde deberían aparecer mensajes |282| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Establécela en `1` para omitir la [compactación automática](/docs/es/costs#reduce-token-usage) proactiva cuando Claude Code no reconoce el ID del modelo, como un alias de un [gateway de LLM](/docs/es/llm-gateway). Sin esta variable, Claude Code compacta según la ventana de contexto que asume para el ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` puede corregir la ventana asumida en su lugar; consulta [Corregir la ventana para un ID de modelo de gateway o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id) para saber cuándo se aplica cada variable. Requiere Claude Code v2.1.223 o posterior |

283| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Establezca en `1` para desactivar la herramienta [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior). La herramienta [WebSearch](/docs/es/tools-reference#websearch-tool-behavior) permanece disponible. Requiere Claude Code v2.1.285 o posterior |283| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Establécela en `1` para desactivar el desplazamiento virtual en el [renderizado de pantalla completa](/docs/es/fullscreen) y renderizar todos los mensajes de la transcripción. Úsala si al desplazarte en el modo de pantalla completa aparecen regiones en blanco donde deberían aparecer mensajes |

284| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Establezca en `1` para iniciar comandos de [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) en Windows directamente en lugar de a través del lanzador `cmd.exe`. De forma predeterminada, el lanzador permite que un comando PowerShell [ejecutándose en segundo plano](/docs/es/tools-reference#background-commands) [se traslade a la siguiente sesión del proceso](/docs/es/agent-view#the-supervisor-process), como cuando [envía la sesión a segundo plano](/docs/es/agent-view#from-inside-a-session). Si establece la variable, un comando PowerShell enviado a segundo plano se detiene cuando el proceso de la sesión sale. Los comandos Bash no se ven afectados. Requiere Claude Code v2.1.269 o posterior |284| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Establécela en `1` para desactivar la herramienta [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior). La herramienta [WebSearch](/docs/es/tools-reference#websearch-tool-behavior) sigue disponible. Requiere Claude Code v2.1.285 o posterior |

285| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Establezca en `1` para desabilitar [flujos de trabajo](/docs/es/workflows#turn-workflows-off). Equivalente a la configuración [`disableWorkflows`](/docs/es/settings-reference#disableworkflows) |285| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Establécela en `1` para iniciar los comandos de la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) en Windows directamente en lugar de a través del lanzador `cmd.exe`. De forma predeterminada, el lanzador permite que un comando de PowerShell [que se ejecuta en segundo plano](/docs/es/tools-reference#background-commands) [pase al siguiente proceso de la sesión](/docs/es/agent-view#the-supervisor-process), por ejemplo cuando [envías la sesión a segundo plano](/docs/es/agent-view#from-inside-a-session). Si estableces la variable, un comando de PowerShell en segundo plano se detiene cuando termina el proceso de la sesión. Los comandos de Bash no se ven afectados. Requiere Claude Code v2.1.269 o posterior |

286| `CLAUDE_CODE_EFFORT_LEVEL` | Establezca el nivel de esfuerzo para modelos compatibles. Valores: `low`, `medium`, `high`, `xhigh`, `max` o `auto` para usar el predeterminado del modelo. Los niveles disponibles dependen del modelo. Tiene prioridad sobre `--effort`, `/effort` y las configuraciones `modelSettings` y `effortLevel`. Un tope [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) aún se aplica. Consulte [Ajustar nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) |286| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Establécela en `1` para desactivar los [flujos de trabajo](/docs/es/workflows#turn-workflows-off). Equivale al ajuste [`disableWorkflows`](/docs/es/settings-reference#disableworkflows) |

287| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Aceptado para compatibilidad con versiones anteriores y no tiene efecto. El modo automático está disponible de forma predeterminada en cada proveedor, incluidos Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y sesiones de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) con sesión iniciada. En v2.1.158 a través de v2.1.206, establecer esto en `1` era necesario para hacer que [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) estuviera disponible en esos proveedores |287| `CLAUDE_CODE_EFFORT_LEVEL` | Establece el nivel de esfuerzo para los modelos compatibles. Valores: `low`, `medium`, `high`, `xhigh`, `max` o `auto` para usar el valor predeterminado del modelo. Los niveles disponibles dependen del modelo. Tiene precedencia sobre `--effort`, `/effort` y los ajustes `modelSettings` y `effortLevel`. Un límite de [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) sigue aplicándose. Consulta [Ajustar el nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) |

288| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Anule la disponibilidad de [resumen de sesión](/docs/es/interactive-mode#session-recap). Establezca en `0` para forzar los resúmenes desactivados independientemente del toggle `/config`. Establezca en `1` para forzar los resúmenes activados cuando [`awaySummaryEnabled`](/docs/es/settings-reference#awaysummaryenabled) es `false`. Tiene prioridad sobre la configuración y el toggle `/config` |288| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Se acepta por compatibilidad con versiones anteriores y no tiene efecto. El modo automático está disponible de forma predeterminada en todos los proveedores, incluidos Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry y las sesiones del [Claude apps gateway](/docs/es/claude-apps-gateway) con sesión iniciada. De v2.1.158 a v2.1.206, era necesario establecer esta variable en `1` para que el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) estuviera disponible en esos proveedores |

289| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Establezca en `1` para actualizar el estado del plugin en límites de turno en [modo no interactivo](/docs/es/headless) después de que se complete una instalación de fondo. Desactivado de forma predeterminada porque la actualización cambia el prompt del sistema a mitad de sesión, lo que invalida [almacenamiento en caché de prompt](/docs/es/prompt-caching) para ese turno |289| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Sobrescribe la disponibilidad del [resumen de sesión](/docs/es/interactive-mode#session-recap). Establécela en `0` para forzar la desactivación de los resúmenes independientemente de la opción de `/config`. Establécela en `1` para forzar la activación de los resúmenes cuando [`awaySummaryEnabled`](/docs/es/settings-reference#awaysummaryenabled) es `false`. Tiene precedencia sobre el ajuste y la opción de `/config` |

290| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Establezca en `1` para enrutar la encuesta de calidad de sesión "¿Cómo está Claude?" a su propio [recopilador de OpenTelemetry](/docs/es/monitoring-usage) cuando el tráfico no esencial vinculado a Anthropic está bloqueado. Las calificaciones de encuesta se emiten solo como eventos OTEL a su recopilador configurado. Ningún dato de encuesta se envía a Anthropic en este modo. Se aplica cuando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` o `DO_NOT_TRACK` está establecido, y no tiene efecto de otra manera. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` y la política de comentarios del producto de la organización tienen prioridad |290| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Establécela en `1` para actualizar el estado de los plugins en los límites de turno en el [modo no interactivo](/docs/es/headless) después de que se complete una instalación en segundo plano. Desactivada de forma predeterminada porque la actualización cambia el prompt del sistema a mitad de la sesión, lo que invalida la [caché de prompts](/docs/es/prompt-caching) para ese turno |

291| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Controla si las entradas de llamadas de herramientas se transmiten desde la API mientras Claude las genera. Con esto desactivado, una entrada de herramienta grande como una escritura de archivo larga llega solo después de que Claude termina de generarla, lo que puede parecer que se cuelga. Habilitado de forma predeterminado en la API de Anthropic. En Amazon Bedrock y Google Cloud's Agent Platform, habilitado por modelo donde el contenedor implementado lo admite. Establezca en `0` para optar por no participar. Establezca en `1` para forzar cuando enrute a través de un proxy a través de `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL` o `ANTHROPIC_BEDROCK_BASE_URL`. Desactivado de forma predeterminada en Microsoft Foundry y conexiones de [puerta de enlace](/docs/es/llm-gateway) |291| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Establécela en `1` para enviar la encuesta de calidad de sesión "How is Claude doing?" a tu propio [recopilador de OpenTelemetry](/docs/es/monitoring-usage) cuando el tráfico no esencial dirigido a Anthropic está bloqueado. Las calificaciones de la encuesta se emiten solo como eventos OTEL a tu recopilador configurado. En este modo no se envían datos de la encuesta a Anthropic. Se aplica cuando se establece `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` o `DO_NOT_TRACK`, y no tiene efecto en caso contrario. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` y la política de comentarios sobre el producto de la organización tienen precedencia |

292| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Establezca en `1` para rellenar el selector `/model` desde el punto de conexión `/v1/models` de su puerta de enlace cuando `ANTHROPIC_BASE_URL` apunta a una puerta de enlace compatible con Anthropic como LiteLLM, Kong o un proxy interno. Desactivado de forma predeterminada porque las puertas de enlace respaldadas por una clave de API compartida mostrarían de otra manera a cada usuario cada modelo al que la clave puede acceder. Los modelos descubiertos aún se filtran por una lista de permitidos [`availableModels`](/docs/es/settings-reference#availablemodels) que la sesión recibe; entregue la lista a través de [MDM o un archivo de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya que [la entrega administrada por servidor no está disponible en configuraciones de puerta de enlace](/docs/es/server-managed-settings#platform-availability) |292| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Controla si las entradas de las llamadas a herramientas se transmiten desde la API a medida que Claude las genera. Con esto desactivado, una entrada de herramienta grande, como la escritura de un archivo largo, llega solo después de que Claude termina de generarla, lo que puede dar la impresión de que se colgó. Activada de forma predeterminada en la Anthropic API. En Amazon Bedrock y Google Cloud's Agent Platform, se activa por modelo cuando el contenedor implementado lo admite. Establécela en `0` para desactivarla. Establécela en `1` para forzar su activación cuando enrutas a través de un proxy mediante `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL` o `ANTHROPIC_BEDROCK_BASE_URL`. Desactivada de forma predeterminada en Microsoft Foundry y en las conexiones de [gateway](/docs/es/llm-gateway) |

293| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Eliminado en v2.1.142, cuando el predeterminado de [modo rápido](/docs/es/fast-mode) se movió de Opus 4.6 a Opus 4.7 |293| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Establécela en `1` para llenar el selector de `/model` desde el endpoint `/v1/models` de tu gateway cuando `ANTHROPIC_BASE_URL` apunta a un gateway compatible con Anthropic, como LiteLLM, Kong o un proxy interno. Desactivada de forma predeterminada porque, de lo contrario, los gateways respaldados por una clave de API compartida mostrarían a cada usuario todos los modelos a los que puede acceder la clave. Los modelos descubiertos se siguen filtrando según una lista de permitidos [`availableModels`](/docs/es/settings-reference#availablemodels) que reciba la sesión; entrega la lista mediante [MDM o un archivo de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya que [la entrega administrada por el servidor no está disponible en configuraciones de gateway](/docs/es/server-managed-settings#platform-availability) |

294| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Establezca en `false` para desactivar sugerencias de prompt, las predicciones atenuadas que aparecen en su entrada de prompt. Tiene prioridad sobre la configuración [`promptSuggestionEnabled`](/docs/es/settings-reference#promptsuggestionenabled), que es lo que el toggle **Sugerencias de prompt** en `/config` escribe. Claude Code también [pausa sugerencias mientras su cuenta está cerca o en su límite de uso](/docs/es/interactive-mode#when-claude-code-skips-suggestions). Establezca en `true` para mantenerlas activadas hasta que alcance el límite. Requiere Claude Code v2.1.238 o posterior. Consulte [Sugerencias de prompt](/docs/es/interactive-mode#prompt-suggestions) |294| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Eliminada en v2.1.142, cuando el valor predeterminado del [modo rápido](/docs/es/fast-mode) pasó de Opus 4.6 a Opus 4.7 |

295| `CLAUDE_CODE_ENABLE_TASKS` | Selecciona qué herramientas de seguimiento de tareas proporciona Claude Code en [sesiones que las tienen](/docs/es/tools-reference#task-tool-availability). De forma predeterminada, Claude Code proporciona las herramientas Task `TaskCreate`, `TaskUpdate`, `TaskGet` y `TaskList`. Establezca en `0` para obtener la herramienta legacy `TodoWrite` en su lugar. Consulte [Lista de tareas](/docs/es/interactive-mode#task-list) |295| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Establécela en `false` para desactivar las sugerencias de prompts, las predicciones en gris que aparecen en tu entrada de prompt. Tiene precedencia sobre el ajuste [`promptSuggestionEnabled`](/docs/es/settings-reference#promptsuggestionenabled), que es lo que escribe el interruptor **Prompt suggestions** de `/config`. Claude Code también [pausa las sugerencias cuando tu cuenta está cerca de su límite de uso o lo alcanzó](/docs/es/interactive-mode#when-claude-code-skips-suggestions). Establécela en `true` para mantenerlas activas hasta que alcances el límite. Requiere Claude Code v2.1.238 o posterior. Consulta [Sugerencias de prompts](/docs/es/interactive-mode#prompt-suggestions) |

296| `CLAUDE_CODE_ENABLE_TELEMETRY` | Establezca en `1` para habilitar la recopilación de datos de OpenTelemetry para métricas y registro. Requerido antes de configurar exportadores OTel. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Consulte [Monitoreo](/docs/es/monitoring-usage) |296| `CLAUDE_CODE_ENABLE_TASKS` | Selecciona qué herramientas de seguimiento de tareas proporciona Claude Code en las [sesiones que las tienen](/docs/es/tools-reference#task-tool-availability). De forma predeterminada, Claude Code proporciona las herramientas Task `TaskCreate`, `TaskUpdate`, `TaskGet` y `TaskList`. Establécela en `0` para obtener en su lugar la herramienta heredada `TodoWrite`. Consulta [Lista de tareas](/docs/es/interactive-mode#task-list) |

297| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Establezca en `1` para obtener las herramientas de seguimiento de tareas en cada modelo. Sin él, Claude Code las proporciona de forma predeterminada solo en los modelos enumerados en [Disponibilidad de herramienta Task](/docs/es/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` aún selecciona las herramientas Task o `TodoWrite`. Requiere Claude Code v2.1.233 o posterior |297| `CLAUDE_CODE_ENABLE_TELEMETRY` | Establécela en `1` para habilitar la recopilación de datos de OpenTelemetry para métricas y registros. Obligatoria antes de configurar los exportadores de OTel. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Consulta [Monitoreo](/docs/es/monitoring-usage) |

298| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tiempo en milisegundos para esperar después de que el bucle de consulta se vuelva inactivo antes de salir automáticamente. Útil para flujos de trabajo automatizados y scripts que usan modo SDK |298| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Establécela en `1` para obtener las herramientas de seguimiento de tareas en todos los modelos. Sin ella, Claude Code las proporciona de forma predeterminada solo en los modelos enumerados en [Disponibilidad de la herramienta Task](/docs/es/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` sigue seleccionando las herramientas Task o `TodoWrite`. Requiere Claude Code v2.1.233 o posterior |

299| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Establezca en `1` para habilitar [equipos de agentes](/docs/es/agent-teams). Los equipos de agentes son experimentales y están deshabilitados de forma predeterminada |299| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tiempo en milisegundos que se espera después de que el bucle de consultas queda inactivo antes de salir automáticamente. Útil para flujos de trabajo automatizados y scripts que usan el modo SDK |

300| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON para fusionar en el nivel superior de cada cuerpo de solicitud de API. Útil para pasar parámetros específicos del proveedor que Claude Code no expone directamente. Un valor exportado en su shell también se aplica a las [sesiones de fondo](/docs/es/agent-view) que distribuye con `claude agents` o `--bg`. Antes de v2.1.206, las sesiones de fondo ignoraban un valor exportado en shell y usaban cualquier copia que el proceso supervisor de fondo heredara |300| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Establécela en `1` para habilitar los [equipos de agentes](/docs/es/agent-teams). Los equipos de agentes son experimentales y están deshabilitados de forma predeterminada |

301| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Anule el límite de tokens predeterminado para lecturas de archivos. Útil cuando necesita leer archivos más grandes en su totalidad |301| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON que se combina en el nivel superior del cuerpo de cada solicitud a la API. Útil para pasar parámetros específicos del proveedor que Claude Code no expone directamente. Un valor exportado en tu shell también se aplica a las [sesiones en segundo plano](/docs/es/agent-view) que despachas con `claude agents` o `--bg`. Antes de v2.1.206, las sesiones en segundo plano ignoraban un valor exportado en el shell y usaban la copia que hubiera heredado el proceso supervisor en segundo plano |

302| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Establezca en `1` para forzar la persistencia de transcripción, historial de prompts y registro de `claude agents` incluso cuando este `claude` fue lanzado desde dentro de otra sesión de Claude Code. Use cuando un valor heredado de `CLAUDE_CODE_CHILD_SESSION`, por ejemplo de una sesión `screen` o un lanzador de fondo iniciado primero por la herramienta Bash de Claude Code, causa que una sesión genuina de nivel superior se clasifique erróneamente como anidada. A partir de v2.1.178, Claude Code detecta automáticamente el caso de tmux e ignora el marcador heredado, por lo que tmux ya no necesita esta variable. También se honra en v2.1.169 y anterior; no tiene efecto en v2.1.170 y v2.1.171, donde se eliminó la detección de sesión anidada que anula |302| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Sobrescribe el límite de tokens predeterminado para la lectura de archivos. Útil cuando necesitas leer archivos más grandes por completo |

303| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Establezca en `1` para forzar el renderizado de tachado para `~~text~~` en respuestas de Claude cuando su terminal lo admite pero no se detecta automáticamente, como sobre SSH sin `TERM_PROGRAM` reenviado. Sin esto, los terminales no detectados muestran los marcadores literales `~~` en lugar de renderizar el texto como tachado. Requiere Claude Code v2.1.186 o posterior |303| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Establécela en `1` para forzar la persistencia de transcripciones, el historial de prompts y el registro en `claude agents` incluso cuando este `claude` se inició desde dentro de otra sesión de Claude Code. Úsala cuando un valor heredado de `CLAUDE_CODE_CHILD_SESSION`, por ejemplo de una sesión de `screen` o de un lanzador en segundo plano iniciado primero por la herramienta Bash de Claude Code, hace que una sesión genuina de nivel superior se clasifique erróneamente como anidada. A partir de v2.1.178, Claude Code detecta automáticamente el caso de tmux e ignora el marcador heredado, por lo que tmux ya no necesita esta variable. También se respeta en v2.1.169 y anteriores; no tiene efecto en v2.1.170 ni en v2.1.171, donde se eliminó la detección de sesiones anidadas que sobrescribe |

304| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Establezca en `1` para forzar la habilitación del modo privado DEC 2026 [salida sincronizada](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) cuando su terminal lo admite pero no se detecta automáticamente. Útil para emuladores como Emacs `eat` que implementan BSU/ESU pero no responden a la sonda de capacidad. No tiene efecto bajo tmux. A diferencia de `CLAUDE_CODE_NO_FLICKER`, que cambia a [renderizado de pantalla completa](/docs/es/fullscreen), esto no cambia el renderizador |304| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Establécela en `1` para forzar la representación tachada de `~~text~~` en las respuestas de Claude cuando tu terminal la admite pero no se detecta automáticamente, por ejemplo a través de SSH sin reenviar `TERM_PROGRAM`. Sin esto, las terminales no detectadas muestran los marcadores `~~` literales en lugar de mostrar el texto tachado. Requiere Claude Code v2.1.186 o posterior |

305| `CLAUDE_CODE_FORK_SUBAGENT` | Controla [modo fork](/docs/es/sub-agents#turn-fork-mode-on-or-off), que permite que Claude genere [subagentes bifurcados](/docs/es/sub-agents#fork-the-current-conversation) él mismo y está activado de forma predeterminada solo en sesiones interactivas. Establezca en `1` para activarlo en `claude -p` y el Agent SDK también, o `0` para desactivarlo en cada tipo de sesión. Puede ejecutar `/subtask` independientemente de si el modo fork está activado. El predeterminado interactivo requiere Claude Code v2.1.232 o posterior; en versiones anteriores, establezca la variable en `1` para activar el modo fork |305| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Establécela en `1` para forzar la activación de la [salida sincronizada](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) del modo privado DEC 2026 cuando tu terminal la admite pero no se detecta automáticamente. Útil para emuladores como `eat` de Emacs que implementan BSU/ESU pero no responden al sondeo de capacidades. No tiene efecto bajo tmux. A diferencia de `CLAUDE_CODE_NO_FLICKER`, que cambia a la [representación en pantalla completa](/docs/es/fullscreen), esto no cambia el renderizador |

306| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Establezca en `1` para emitir bloques de texto y pensamiento de [subagente](/docs/es/sub-agents) en la salida `claude -p --output-format stream-json`, el mismo comportamiento que la bandera [`--forward-subagent-text`](/docs/es/cli-reference#cli-flags). Use la variable cuando un arnés invoca `claude` y no puede pasar la bandera él mismo. A diferencia de la bandera, que sale con un error fuera del modo no interactivo con salida stream-json, la variable se ignora allí para que las invocaciones anidadas sigan funcionando cuando se establece en todo el proceso. Requiere Claude Code v2.1.211 o posterior |306| `CLAUDE_CODE_FORK_SUBAGENT` | Controla el [modo fork](/docs/es/sub-agents#turn-fork-mode-on-or-off), que permite a Claude generar por sí mismo [subagentes bifurcados](/docs/es/sub-agents#fork-the-current-conversation) y está activado de forma predeterminada solo en las sesiones interactivas. Establécela en `1` para activarlo también en `claude -p` y en el Agent SDK, o en `0` para desactivarlo en todo tipo de sesión. Puedes ejecutar `/subtask` tanto si el modo fork está activado como si no. El valor predeterminado interactivo requiere Claude Code v2.1.232 o posterior; en versiones anteriores, establece la variable en `1` para activar el modo fork |

307| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | Establezca en `1` para enviar los [encabezados de sugerencia de puerta de enlace](/docs/es/llm-gateway-protocol#gateway-hint-headers), como `x-claude-code-request-class` y `x-claude-code-compaction`, en un proxy personalizado o un proveedor de terceros como Amazon Bedrock o Claude Platform on AWS. Establezca en `0` para dejar de enviarlos en cada conexión, incluida una conexión directa a la API de Anthropic, donde Claude Code los envía de forma predeterminada. Requiere Claude Code v2.1.273 o posterior |307| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Establécela en `1` para emitir los bloques de texto y de pensamiento de los [subagentes](/docs/es/sub-agents) en la salida de `claude -p --output-format stream-json`, el mismo comportamiento que el flag [`--forward-subagent-text`](/docs/es/cli-reference#cli-flags). Usa la variable cuando un harness invoca `claude` y no puede pasar el flag por sí mismo. A diferencia del flag, que termina con un error fuera del modo no interactivo con salida stream-json, la variable se ignora allí para que las invocaciones anidadas sigan funcionando cuando se establece para todo el proceso. Requiere Claude Code v2.1.211 o posterior |

308| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | Tiempo de espera en milisegundos para la solicitud de [descubrimiento de modelo de puerta de enlace](/docs/es/llm-gateway-protocol#model-discovery) que `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` activa (predeterminado: `3000`). Aumente cuando su puerta de enlace necesita más de tres segundos para responder `/v1/models` al inicio. Solo acepta dígitos simples; `0`, valores negativos y otros deletreos mantienen el predeterminado. Requiere Claude Code v2.1.269 o posterior |308| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | Establécela en `1` para enviar los [encabezados de sugerencia del gateway](/docs/es/llm-gateway-protocol#gateway-hint-headers), como `x-claude-code-request-class` y `x-claude-code-compaction`, en un proxy personalizado o en un proveedor externo como Amazon Bedrock o Claude Platform on AWS. Establécela en `0` para dejar de enviarlos en todas las conexiones, incluida una conexión directa a la Anthropic API, donde Claude Code los envía de forma predeterminada. Requiere Claude Code v2.1.273 o posterior |

309| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: ruta al ejecutable de Git Bash (`bash.exe`). Use cuando Git Bash está instalado pero no en su PATH. Si la ruta no existe o el archivo no se llama `bash.exe`, `sh.exe`, `bash` o `sh`, Claude Code ignora la variable y detecta automáticamente Git Bash como si no estuviera establecida, registrando una advertencia visible con `--debug`. Antes de v2.1.219, Claude Code salía al inicio cuando la ruta no existía, y usaba cualquier archivo existente como shell sin verificar que fuera bash o sh. Consulte [Configuración de Windows](/docs/es/setup#set-up-on-windows) |309| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | Tiempo de espera en milisegundos para la solicitud de [descubrimiento de modelos del gateway](/docs/es/llm-gateway-protocol#model-discovery) que activa `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` (predeterminado: `3000`). Auméntalo cuando tu gateway necesite más de tres segundos para responder a `/v1/models` al iniciar. Solo acepta dígitos simples; `0`, los valores negativos y otras formas de escritura mantienen el valor predeterminado. Requiere Claude Code v2.1.269 o posterior |

310| `CLAUDE_CODE_GLOB_HIDDEN` | Establezca en `false` para excluir dotfiles de resultados cuando Claude invoca la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Se incluye de forma predeterminada. No afecta la autocompletación de archivos `@`, `ls`, Grep o Read |310| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: ruta al ejecutable de Git Bash (`bash.exe`). Úsala cuando Git Bash está instalado pero no está en tu PATH. Si la ruta no existe o el archivo no se llama `bash.exe`, `sh.exe`, `bash` ni `sh`, Claude Code ignora la variable y detecta automáticamente Git Bash como si no estuviera establecida, y registra una advertencia visible con `--debug`. Antes de v2.1.219, Claude Code se cerraba al iniciar cuando la ruta no existía, y usaba cualquier archivo existente como shell sin comprobar que fuera bash o sh. Consulta [Configuración en Windows](/docs/es/setup#set-up-on-windows) |

311| `CLAUDE_CODE_GLOB_NO_IGNORE` | Establezca en `false` para hacer que la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior) respete patrones `.gitignore`. De forma predeterminada, Glob devuelve todos los archivos coincidentes, incluidos los ignorados por git. No afecta la autocompletación de archivos `@`, que tiene su propia configuración [`respectGitignore`](/docs/es/settings-reference#respectgitignore) |311| `CLAUDE_CODE_GLOB_HIDDEN` | Establécela en `false` para excluir los dotfiles de los resultados cuando Claude invoca la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Se incluyen de forma predeterminada. No afecta al autocompletado de archivos con `@`, a `ls`, a Grep ni a Read |

312| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Tiempo de espera en segundos para el descubrimiento de archivos de la herramienta Glob. El valor predeterminado es 20 segundos en la mayoría de plataformas y 60 segundos en WSL |312| `CLAUDE_CODE_GLOB_NO_IGNORE` | Establécela en `false` para que la [herramienta Glob](/docs/es/tools-reference#glob-tool-behavior) respete los patrones de `.gitignore`. De forma predeterminada, Glob devuelve todos los archivos coincidentes, incluidos los ignorados por Git. No afecta al autocompletado de archivos con `@`, que tiene su propio [ajuste `respectGitignore`](/docs/es/settings-reference#respectgitignore) |

313| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Cuántos minutos el trabajo de fondo puede mantener un objetivo activo esperando antes de que Claude Code [solicite a Claude que lo verifique](/docs/es/goal#background-work-defers-evaluation). Predeterminado `30`. Establezca `0` para desactivar las verificaciones. Dé minutos completos en dígitos simples, como máximo `10080`, que es una semana. Claude Code trata cualquier otro valor como no establecido y usa el predeterminado. Requiere Claude Code v2.1.234 o posterior |313| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Tiempo de espera en segundos para el descubrimiento de archivos de la herramienta Glob. El valor predeterminado es de 20 segundos en la mayoría de las plataformas y de 60 segundos en WSL |

314| `CLAUDE_CODE_HIDE_CWD` | Establezca en `1` para ocultar el directorio de trabajo en el logo de inicio. Útil para comparticiones de pantalla o grabaciones donde la ruta expone su nombre de usuario del SO |314| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Cuántos minutos puede el trabajo en segundo plano mantener en espera un objetivo activo antes de que Claude Code [le pida a Claude que lo revise](/docs/es/goal#background-work-defers-evaluation). Predeterminado: `30`. Establece `0` para desactivar las revisiones. Indica minutos enteros en dígitos simples, como máximo `10080`, que es una semana. Claude Code trata cualquier otro valor como no establecido y usa el valor predeterminado. Requiere Claude Code v2.1.234 o posterior |

315| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Anule la dirección de host utilizada para conectarse a la extensión IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |315| `CLAUDE_CODE_HIDE_CWD` | Establécela en `1` para ocultar el directorio de trabajo en el logotipo de inicio. Útil al compartir pantalla o en grabaciones donde la ruta expone tu nombre de usuario del sistema operativo |

316| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Establezca en `1` para omitir la instalación automática de extensiones IDE. Equivalente a establecer [`autoInstallIdeExtension`](/docs/es/settings-reference#autoinstallideextension) en `false` |316| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Sobrescribe la dirección de host que se usa para conectarse a la extensión del IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |

317| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establezca en `1` para omitir la validación de entradas de archivo de bloqueo IDE durante la conexión. Use cuando la auto-conexión no encuentra su IDE a pesar de que se está ejecutando |317| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Establécela en `1` para omitir la instalación automática de las extensiones del IDE. Equivale a establecer [`autoInstallIdeExtension`](/docs/es/settings-reference#autoinstallideextension) en `false` |

318| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Cuántos [subagentes](/docs/es/sub-agents#concurrent-subagent-limit) pueden estar ejecutándose en una sesión antes de que la herramienta Agent se niegue a generar otro (predeterminado: 20). Acepta un número entero positivo en dígitos simples; cualquier otra cosa se ignora, por lo que la variable puede ajustar el tope pero no deshabilitarlo. Requiere Claude Code v2.1.217 o posterior |318| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establécela en `1` para omitir la validación de las entradas del archivo de bloqueo del IDE durante la conexión. Úsala cuando la conexión automática no encuentra tu IDE a pesar de que está en ejecución |

319| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Anule el tamaño de la ventana de contexto que Claude Code asume para el modelo activo. A partir de v2.1.193, cómo se aplica depende de cómo Claude Code resuelve el ID del modelo; consulte [Corregir la ventana para un ID de modelo de puerta de enlace o personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Use esto cuando enrute a un modelo a través de `ANTHROPIC_BASE_URL` cuya ventana de contexto no coincida con el tamaño integrado para su nombre |319| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Cuántos [subagentes](/docs/es/sub-agents#concurrent-subagent-limit) pueden estar en ejecución en una sesión antes de que la herramienta Agent se niegue a generar otro (predeterminado: 20). Acepta un número entero positivo en dígitos simples; cualquier otra cosa se ignora, por lo que la variable puede ajustar el límite pero no desactivarlo. Requiere Claude Code v2.1.217 o posterior |

320| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Longitud máxima en caracteres de cada descripción de herramienta MCP e instrucciones de cada servidor MCP que Claude Code envía al modelo (predeterminado: 2048). Claude Code [trunca texto más largo](/docs/es/mcp#for-mcp-server-authors). Acepta un número entero positivo en dígitos simples. Cualquier otra cosa se ignora y se aplica el predeterminado. Requiere Claude Code v2.1.280 o posterior |320| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Sobrescribe el tamaño de la ventana de contexto que Claude Code supone para el modelo activo. A partir de v2.1.193, la forma en que se aplica depende de cómo Claude Code resuelve el ID del modelo; consulta [Corregir la ventana para un gateway o un ID de modelo personalizado](/docs/es/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Úsala cuando enrutas a un modelo a través de `ANTHROPIC_BASE_URL` cuya ventana de contexto no coincide con el tamaño integrado para su nombre |

321| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Establezca el número máximo de tokens de salida para la mayoría de solicitudes. Los valores predeterminados y los topes varían según el modelo; consulte [tokens de salida máximos](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code reduce un valor por encima del tope de un modelo al tope. Para un ID de modelo que Claude Code no puede resolver a un modelo que conoce, el predeterminado es 32000 y el tope es 128000. Aumentar este valor reduce la ventana de contexto efectiva disponible antes de que se active [auto-compactación](/docs/es/costs#reduce-token-usage) |321| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Longitud máxima en caracteres de cada descripción de herramienta MCP y de las instrucciones de cada servidor MCP que Claude Code envía al modelo (predeterminado: 2048). Claude Code [trunca el texto más largo](/docs/es/mcp#for-mcp-server-authors). Acepta un número entero positivo en dígitos simples. Cualquier otra cosa se ignora y se aplica el valor predeterminado. Requiere Claude Code v2.1.280 o posterior |

322| `CLAUDE_CODE_MAX_RETRIES` | Anule el número de veces para reintentar solicitudes de API fallidas (predeterminado: 10). Limitado a 15 a partir de v2.1.186; a partir de v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el predeterminado y elimina el tope. Para sesiones desatendidas que necesitan esperar a través de interrupciones más largas, establezca `CLAUDE_CODE_RETRY_WATCHDOG` en su lugar |322| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Establece el número máximo de tokens de salida para la mayoría de las solicitudes. Los valores predeterminados y los límites varían según el modelo; consulta [máximo de tokens de salida](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code reduce al límite un valor que supere el límite de un modelo. Para un ID de modelo que Claude Code no puede resolver a un modelo que conoce, el valor predeterminado es 32000 y el límite es 128000. Aumentar este valor reduce la ventana de contexto efectiva disponible antes de que se active la [compactación automática](/docs/es/costs#reduce-token-usage) |

323| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Eliminado en v2.1.224 y ahora es un no-op. Anteriormente limitaba el número total de [subagentes](/docs/es/sub-agents) que Claude podía generar con la herramienta Agent en una sesión (predeterminado: 200); generar más allá del tope falló con `Subagent spawn limit reached`. El [límite de subagente concurrente](/docs/es/sub-agents#concurrent-subagent-limit) y el [límite de profundidad](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) aún se aplican |323| `CLAUDE_CODE_MAX_RETRIES` | Sobrescribe el número de veces que se reintentan las solicitudes a la API fallidas (predeterminado: 10). Limitado a 15 a partir de v2.1.186; a partir de v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el valor predeterminado y elimina el límite. Para sesiones desatendidas que necesitan esperar durante interrupciones más largas, establece `CLAUDE_CODE_RETRY_WATCHDOG` en su lugar |

324| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | Número de [capas de subagente](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) permitidas debajo de la conversación principal (predeterminado: 3). En el predeterminado, los subagentes pueden generar sus propios subagentes, y un subagente en la tercera capa no puede generar más; establezca `1` para desactivar el anidamiento. En v2.1.217 a través de v2.1.218, el predeterminado era 1, por lo que un subagente no podía generar el suyo a menos que aumentara el límite; v2.1.219 aumentó el predeterminado a 3. Acepta un número entero positivo en dígitos simples; cualquier otra cosa se ignora, por lo que el límite puede ajustarse pero no eliminarse. Requiere Claude Code v2.1.217 o posterior |324| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Eliminada en v2.1.224 y ahora no tiene efecto. Anteriormente limitaba el número total de [subagentes](/docs/es/sub-agents) que Claude podía generar con la herramienta Agent en una sesión (predeterminado: 200); generar más allá del límite fallaba con `Subagent spawn limit reached`. El [límite de subagentes simultáneos](/docs/es/sub-agents#concurrent-subagent-limit) y el [límite de profundidad](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) se siguen aplicando |

325| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | Número de [capas de subagentes](/docs/es/sub-agents#let-subagents-spawn-their-own-subagents) permitidas por debajo de la conversación principal (predeterminado: 3). Con el valor predeterminado, los subagentes pueden generar sus propios subagentes, y un subagente en la tercera capa no puede generar más; establece `1` para desactivar el anidamiento. De v2.1.217 a v2.1.218, el valor predeterminado era 1, por lo que un subagente no podía generar los suyos a menos que aumentaras el límite; v2.1.219 aumentó el valor predeterminado a 3. Acepta un número entero positivo en dígitos simples; cualquier otra cosa se ignora, por lo que el límite se puede ajustar pero no eliminar. Requiere Claude Code v2.1.217 o posterior |

325| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Número máximo de herramientas de solo lectura y subagentes que pueden ejecutarse en paralelo (predeterminado: 10). Los valores más altos aumentan el paralelismo pero consumen más recursos |326| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Número máximo de herramientas de solo lectura y subagentes que pueden ejecutarse en paralelo (predeterminado: 10). Los valores más altos aumentan el paralelismo pero consumen más recursos |

326| `CLAUDE_CODE_MAX_TURNS` | Limite el número de turnos agentes cuando no se pasa un límite explícito. Equivalente a pasar [`--max-turns`](/docs/es/cli-reference#cli-flags), que tiene prioridad cuando ambos están establecidos. Un valor que no es un entero positivo se rechaza al inicio con un error en lugar de tratarse como sin tope |327| `CLAUDE_CODE_MAX_TURNS` | Limita el número de turnos agénticos cuando no se pasa un límite explícito. Equivale a pasar [`--max-turns`](/docs/es/cli-reference#cli-flags), que tiene precedencia cuando ambos están establecidos. Un valor que no sea un entero positivo se rechaza al iniciar con un error en lugar de tratarse como sin límite |

327| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Tope en el número total de llamadas [WebSearch](/docs/es/tools-reference#websearch-tool-behavior) que una sesión puede hacer (predeterminado: 200). Cuando Claude alcanza el tope, las llamadas WebSearch adicionales devuelven un aviso diciéndole que continúe con la información que ya ha reunido. Acepta un número entero positivo sin límite superior. Cualquier otra cosa se ignora y se aplica el predeterminado, por lo que el tope puede aumentarse pero no desactivarse. Requiere Claude Code v2.1.212 o posterior |328| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Límite del número total de llamadas a [WebSearch](/docs/es/tools-reference#websearch-tool-behavior) que puede hacer una sesión (predeterminado: 200). Cuando Claude alcanza el límite, las llamadas posteriores a WebSearch devuelven un aviso que le indica que continúe con la información que ya recopiló. Acepta un número entero positivo sin límite superior. Cualquier otra cosa se ignora y se aplica el valor predeterminado, por lo que el límite se puede aumentar pero no desactivar. Requiere Claude Code v2.1.212 o posterior |

328| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Establezca en `1` para generar servidores MCP stdio con solo un entorno de línea base segura más el `env` configurado del servidor, en lugar de heredar su entorno de shell |329| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Establécela en `1` para iniciar los servidores MCP stdio solo con un entorno base seguro más el `env` configurado del servidor, en lugar de heredar el entorno de tu shell |

329| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Tiempo transcurrido en milisegundos antes de que una llamada de herramienta MCP aún en ejecución [se mueva a una tarea de fondo](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) (predeterminado: 120000, o 2 minutos). Establezca en `0` para desactivar el envío automático a segundo plano. Requiere Claude Code v2.1.212 o posterior |330| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Tiempo transcurrido en milisegundos antes de que una llamada a herramienta MCP que sigue en ejecución [pase a una tarea en segundo plano](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) (predeterminado: 120000, o 2 minutos). Establécela en `0` para desactivar el paso automático a segundo plano. Requiere Claude Code v2.1.212 o posterior |

330| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Cuánto tiempo en milisegundos la primera vuelta de una sesión [no interactiva](/docs/es/headless) espera a que se conecten servidores MCP aún pendientes, en lugar de la [espera de primera vuelta](/docs/es/agent-sdk/mcp#connection-timing) predeterminada. Cuando se establece, la espera cubre cada servidor pendiente. Establezca en `0` para omitir la espera. Un servidor [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) mantiene su propia espera `MCP_TIMEOUT` independientemente del valor. Requiere Claude Code v2.1.274 o posterior |331| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Cuánto tiempo en milisegundos espera el primer turno de una sesión [no interactiva](/docs/es/headless) a los servidores MCP que todavía se están conectando, en lugar de la [espera del primer turno](/docs/es/agent-sdk/mcp#connection-timing) predeterminada. Cuando se establece, la espera abarca todos los servidores pendientes. Establécela en `0` para omitir la espera. Un servidor de [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) mantiene su propia espera de `MCP_TIMEOUT` independientemente del valor. Requiere Claude Code v2.1.274 o posterior |

331| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Tiempo de espera de inactividad en milisegundos para llamadas de herramientas MCP. Cuando un servidor MCP stdio, HTTP, SSE, WebSocket o [conector claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) no envía respuesta ni notificación de progreso durante este tiempo, la llamada de herramienta se aborta con un error en lugar de esperar el `MCP_TOOL_TIMEOUT` general. Anula los valores predeterminados por transporte de 300000 (5 minutos) para servidores de red y 1800000 (30 minutos) para servidores stdio. Establezca en `0` para desabilitar la verificación de inactividad. Los valores por debajo de 1000 se aumentan a un segundo, y el valor se limita al `MCP_TOOL_TIMEOUT` efectivo. Un `timeout` por servidor en `.mcp.json` de al menos 1000 aumenta la ventana de inactividad de ese servidor a al menos el valor `timeout`. No se aplica a servidores IDE o servidores en proceso de SDK. Requiere Claude Code v2.1.187 o posterior. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad |332| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Tiempo de espera por inactividad en milisegundos para las llamadas a herramientas MCP. Cuando un servidor MCP stdio, HTTP, SSE, WebSocket o de [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) no envía ninguna respuesta ni notificación de progreso durante este tiempo, la llamada a herramienta se aborta con un error en lugar de esperar al `MCP_TOOL_TIMEOUT` general. Sobrescribe los valores predeterminados por transporte de 300000 (5 minutos) para los servidores de red y de 1800000 (30 minutos) para los servidores stdio. Establécela en `0` para desactivar la comprobación de inactividad. Los valores inferiores a 1000 se elevan a un segundo, y el valor se limita al `MCP_TOOL_TIMEOUT` efectivo. Un `timeout` por servidor en `.mcp.json` de al menos 1000 eleva la ventana de inactividad de ese servidor al menos hasta el valor de `timeout`. No se aplica a los servidores del IDE ni a los servidores en proceso del SDK. Requiere Claude Code v2.1.187 o posterior. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera por inactividad |

332| `CLAUDE_CODE_MESSAGING_SOCKET` | Se establece por Claude Code, no por usted: en sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta la ruta de ese socket a hooks y comandos Bash cuando vincula el socket. En una sesión que comienza con mensajería activada, Claude Code vincula el socket antes de que se ejecute cualquier hook. Otras sesiones en la máquina entregan mensajes a esta ruta. Cada sesión exporta su propio socket en lugar de uno heredado de un padre, y los mensajes que llegan en él pasan a través de los [controles de entrada](/docs/es/cross-session-messaging#control-inbound-messages) de la sesión. Los bloques `env` de configuración no pueden establecerlo. Requiere Claude Code v2.1.224 o posterior |333| `CLAUDE_CODE_MESSAGING_SOCKET` | La establece Claude Code, no tú: en las sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta la ruta de ese socket a los hooks y a los comandos de Bash cuando vincula el socket. En una sesión que se inicia con la mensajería activada, Claude Code vincula el socket antes de que se ejecute cualquier hook. Otras sesiones de la máquina entregan mensajes a esta ruta. Cada sesión exporta su propio socket en lugar de uno heredado de un proceso padre, y los mensajes que llegan a él pasan por los [controles de entrada](/docs/es/cross-session-messaging#control-inbound-messages) de la sesión. Los bloques `env` de la configuración no pueden establecerla. Requiere Claude Code v2.1.224 o posterior |

333| `CLAUDE_CODE_MESSAGING_TOKEN` | Se establece por Claude Code, no por usted: en sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta este token por sesión a hooks y comandos Bash junto a `CLAUDE_CODE_MESSAGING_SOCKET`. Un script que publica en el socket puede enviar `{"type":"auth","token":"<token>"}` como su primera línea para probar que pertenece a la sesión. En Windows nativo, Claude Code requiere esta línea y cierra cualquier conexión que no se abra con una válida. Las [reglas de hijo propio](/docs/es/cross-session-messaging#the-sessions-inbox-socket) dicen cuándo Claude Code consulta el token. Cada sesión exporta su propio token, nunca uno heredado de una sesión padre. Los bloques `env` de configuración no pueden establecerlo. Requiere Claude Code v2.1.228 o posterior |334| `CLAUDE_CODE_MESSAGING_TOKEN` | La establece Claude Code, no tú: en las sesiones que vinculan un [socket de bandeja de entrada](/docs/es/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporta este token por sesión a los hooks y a los comandos de Bash junto con `CLAUDE_CODE_MESSAGING_SOCKET`. Un script que publica en el socket puede enviar `{"type":"auth","token":"<token>"}` como primera línea para demostrar que pertenece a la sesión. En Windows nativo, Claude Code exige esta línea y cierra cualquier conexión que no comience con una válida. Las [reglas de proceso hijo propio](/docs/es/cross-session-messaging#the-sessions-inbox-socket) indican cuándo consulta Claude Code el token. Cada sesión exporta su propio token, nunca uno heredado de una sesión padre. Los bloques `env` de la configuración no pueden establecerla. Requiere Claude Code v2.1.228 o posterior |

334| `CLAUDE_CODE_NATIVE_CURSOR` | Establezca en `1` para mostrar el cursor propio de la terminal en el símbolo de intercalación de entrada en lugar de un bloque dibujado. El cursor respeta la configuración de parpadeo, forma y enfoque de la terminal |335| `CLAUDE_CODE_NATIVE_CURSOR` | Establécela en `1` para mostrar el propio cursor de la terminal en el punto de inserción en lugar de un bloque dibujado. El cursor respeta la configuración de parpadeo, forma y foco de la terminal |

335| `CLAUDE_CODE_NEW_INIT` | Establezca en `1` para hacer que `/init` ejecute un flujo de configuración interactivo. El flujo pregunta qué archivos generar, incluidos CLAUDE.md, skills y hooks, antes de explorar la base de código y escribirlos. Sin esta variable, `/init` genera un CLAUDE.md automáticamente sin preguntar |336| `CLAUDE_CODE_NEW_INIT` | Establécela en `1` para que `/init` ejecute un flujo de configuración interactivo. El flujo pregunta qué archivos generar, incluidos CLAUDE.md, skills y hooks, antes de explorar la base de código y escribirlos. Sin esta variable, `/init` genera un CLAUDE.md automáticamente sin preguntar |

336| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Establezca en `1` para escribir la salida del terminal a través de un segundo descriptor de archivo no bloqueante, para que una terminal que deja de leer, como un panel de modo de control de tmux pausado o una conexión SSH estancada, no pueda congelar Claude Code a mitad de sesión. Se aplica en macOS, Linux y WSL cuando stdout es una terminal. Requiere Claude Code v2.1.261 o posterior |337| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Establécela en `1` para escribir la salida de la terminal a través de un segundo descriptor de archivo no bloqueante, de modo que una terminal que deja de leer, como un panel en modo de control de tmux en pausa o una conexión SSH detenida, no pueda congelar Claude Code a mitad de la sesión. Se aplica en macOS, Linux y WSL cuando stdout es una terminal. Requiere Claude Code v2.1.261 o posterior |

337| `CLAUDE_CODE_NO_FLICKER` | Establezca en `1` para habilitar [renderizado de pantalla completa](/docs/es/fullscreen), una vista previa de investigación que reduce el parpadeo y mantiene la memoria plana en conversaciones largas. Anula la configuración [`tui`](/docs/es/settings-reference#tui); también puede cambiar con `/tui fullscreen` |338| `CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES` | Limita cuántas veces Claude Code vuelve a enviar una [solicitud sin streaming](/docs/es/errors#streaming-response-ended-before-any-complete-data-was-received) cuando se agota su tiempo de espera. Con `0`, la solicitud falla la primera vez que se agota el tiempo de espera. No está establecida de forma predeterminada, por lo que `CLAUDE_CODE_MAX_RETRIES` limita estos reenvíos. Consulta [Ajustar el comportamiento de reintento](/docs/es/errors#tune-retry-behavior) para el tiempo de espera. Requiere Claude Code v2.1.285 o posterior |

338| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token de actualización de OAuth para autenticación de Claude.ai. Cuando se establece, `claude auth login` intercambia este token directamente en lugar de abrir un navegador. Requiere `CLAUDE_CODE_OAUTH_SCOPES`. Útil para aprovisionar autenticación en entornos automatizados |339| `CLAUDE_CODE_NO_FLICKER` | Establécela en `1` para habilitar la [representación en pantalla completa](/docs/es/fullscreen), una vista previa de investigación que reduce el parpadeo y mantiene estable el uso de memoria en conversaciones largas. Sobrescribe el ajuste [`tui`](/docs/es/settings-reference#tui); también puedes cambiar con `/tui fullscreen` |

339| `CLAUDE_CODE_OAUTH_SCOPES` | Alcances de OAuth separados por espacios con los que se emitió el token de actualización, como `"user:profile user:inference user:sessions:claude_code"`. Requerido cuando `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` está establecido |340| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token de actualización de OAuth para la autenticación de Claude.ai. Cuando se establece, `claude auth login` intercambia este token directamente en lugar de abrir un navegador. Requiere `CLAUDE_CODE_OAUTH_SCOPES`. Útil para aprovisionar la autenticación en entornos automatizados |

340| `CLAUDE_CODE_OAUTH_TOKEN` | Token de acceso de OAuth para autenticación de claude.ai. Alternativa a `/login` para SDK y entornos automatizados. Tiene prioridad sobre credenciales almacenadas en llavero. Genere uno con [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token). A menos que ejecute [`/login`](/docs/es/authentication#authentication-precedence), Claude Code usa el token que establece para toda la sesión. Para reemplazar un token expirado, genere uno nuevo y reinicie |341| `CLAUDE_CODE_OAUTH_SCOPES` | Alcances de OAuth separados por espacios con los que se emitió el token de actualización, como `"user:profile user:inference user:sessions:claude_code"`. Obligatoria cuando se establece `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` |

341| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Eliminado en v2.1.160 y ahora es un no-op. Anteriormente fijaba [modo rápido](/docs/es/fast-mode) a Claude Opus 4.6 en lugar del predeterminado actual. Opus 4.6 ya no admite modo rápido |342| `CLAUDE_CODE_OAUTH_TOKEN` | Token de acceso de OAuth para la autenticación de claude.ai. Alternativa a `/login` para el SDK y los entornos automatizados. Tiene precedencia sobre las credenciales almacenadas en el llavero. Genera uno con [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token). A menos que ejecutes [`/login`](/docs/es/authentication#authentication-precedence), Claude Code usa el token que estableciste durante toda la sesión. Para reemplazar un token caducado, genera uno nuevo y reinicia |

342| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Longitud máxima de atributos de OpenTelemetry que llevan contenido (respuestas del modelo, contenido de herramientas, prompts del sistema, cuerpos de API sin procesar), marcador de truncamiento incluido, en unidades de código UTF-16 (predeterminado: 61440, es decir, 60 KB). Aumente solo si su backend de telemetría acepta valores de atributo más grandes que 64 KB, o redúzcalo para reducir el volumen de telemetría. Requiere Claude Code v2.1.214 o posterior. Consulte [Monitoreo](/docs/es/monitoring-usage) |343| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Eliminada en v2.1.160 y ahora no tiene efecto. Anteriormente fijaba el [modo rápido](/docs/es/fast-mode) en Claude Opus 4.6 en lugar del valor predeterminado actual. Opus 4.6 ya no admite el modo rápido |

343| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Establezca en `1` para escribir errores de diagnóstico del exportador de OpenTelemetry en stderr. De forma predeterminada, estos errores solo aparecen con `--debug`, por lo que un exportador mal configurado como una colisión de puerto Prometheus falla silenciosamente de otra manera. Requiere Claude Code v2.1.179 o posterior. Consulte [Monitoreo](/docs/es/monitoring-usage) |344| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Longitud máxima de los atributos de OpenTelemetry que contienen contenido (respuestas del modelo, contenido de herramientas, prompts del sistema, cuerpos sin procesar de la API), incluido el marcador de truncamiento, en unidades de código UTF-16 (predeterminado: 61440, es decir, 60 KB). Auméntala solo si tu backend de telemetría acepta valores de atributo mayores de 64 KB, o redúcela para disminuir el volumen de telemetría. Requiere Claude Code v2.1.214 o posterior. Consulta [Monitoreo](/docs/es/monitoring-usage) |

344| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tiempo de espera en milisegundos para vaciar tramos de OpenTelemetry pendientes (predeterminado: 5000). Consulte [Monitoreo](/docs/es/monitoring-usage) |345| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Establécela en `1` para escribir en stderr los errores de diagnóstico del exportador de OpenTelemetry. De forma predeterminada, estos errores solo aparecen con `--debug`, por lo que, de lo contrario, un exportador mal configurado, como uno con una colisión de puertos de Prometheus, falla en silencio. Requiere Claude Code v2.1.179 o posterior. Consulta [Monitoreo](/docs/es/monitoring-usage) |

345| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo para actualizar encabezados dinámicos de OpenTelemetry en milisegundos (predeterminado: 1740000 / 29 minutos). Consulte [Encabezados dinámicos](/docs/es/monitoring-usage#dynamic-headers) |346| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Tiempo de espera en milisegundos para vaciar los spans de OpenTelemetry pendientes (predeterminado: 5000). Consulta [Monitoreo](/docs/es/monitoring-usage) |

346| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Tiempo de espera en milisegundos para que el exportador de OpenTelemetry termine al apagar (predeterminado: 2000). Aumente si se pierden métricas al salir. Consulte [Monitoreo](/docs/es/monitoring-usage) |347| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalo en milisegundos para actualizar los encabezados dinámicos de OpenTelemetry (predeterminado: 1740000 / 29 minutos). Consulta [Encabezados dinámicos](/docs/es/monitoring-usage#dynamic-headers) |

347| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Establezca en `1` para permitir que Claude Code ejecute el comando de actualización de su gestor de paquetes en segundo plano cuando hay una nueva versión disponible. Se aplica a instalaciones de Homebrew y WinGet. Otros gestores de paquetes continúan mostrando el comando de actualización sin ejecutarlo. Consulte [Actualizaciones automáticas](/docs/es/setup#auto-updates) |348| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Tiempo de espera en milisegundos para que el exportador de OpenTelemetry termine al apagarse (predeterminado: 2000). Auméntalo si se pierden métricas al salir. Consulta [Monitoreo](/docs/es/monitoring-usage) |

348| `CLAUDE_CODE_PERFORCE_MODE` | Establezca en `1` para habilitar la protección de escritura consciente de Perforce. Cuando se establece, Edit, Write y NotebookEdit fallan con una sugerencia `p4 edit <file>` si el archivo de destino carece del bit de escritura del propietario, que Perforce borra en archivos sincronizados hasta que `p4 edit` los abre. Esto evita que Claude Code evite el seguimiento de cambios de Perforce |349| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Establécela en `1` para permitir que Claude Code ejecute el comando de actualización de tu gestor de paquetes en segundo plano cuando haya una nueva versión disponible. Se aplica a las instalaciones con Homebrew y WinGet. Los demás gestores de paquetes siguen mostrando el comando de actualización sin ejecutarlo. Consulta [Actualizaciones automáticas](/docs/es/setup#auto-updates) |

349| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Anule el directorio raíz de plugins. A pesar del nombre, esto establece el directorio padre, no la caché en sí: los mercados y la caché de plugins viven en subdirectorios bajo esta ruta. El valor predeterminado es `~/.claude/plugins` |350| `CLAUDE_CODE_PERFORCE_MODE` | Establécela en `1` para habilitar la protección contra escritura compatible con Perforce. Cuando se establece, Edit, Write y NotebookEdit fallan con una sugerencia `p4 edit <file>` si el archivo de destino no tiene el bit de escritura del propietario, que Perforce borra en los archivos sincronizados hasta que `p4 edit` los abre. Esto evita que Claude Code eluda el seguimiento de cambios de Perforce |

350| `CLAUDE_CODE_PLUGIN_DIRS` | Directorios de plugins para cargar para la sesión, cada uno cargado de la manera que una bandera [`--plugin-dir`](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) lo carga. Separe múltiples rutas con `:` en Unix o `;` en Windows. Dé cada ruta como una ruta absoluta o comience con `~`, porque Claude Code omite rutas relativas. Requiere Claude Code v2.1.280 o posterior. Consulte [Cargar un plugin para una sesión](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session) |351| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sobrescribe el directorio raíz de los plugins. A pesar del nombre, establece el directorio padre, no la caché en sí: los marketplaces y la caché de plugins se encuentran en subdirectorios de esta ruta. El valor predeterminado es `~/.claude/plugins` |

351| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para clonar o actualizar un mercado de plugins (predeterminado: 120000). Aumente este valor para repositorios grandes o conexiones de red lentas. Consulte [Git clone agotó el tiempo de espera](/docs/es/plugins/troubleshooting#git-clone-timed-out-after-120s) |352| `CLAUDE_CODE_PLUGIN_DIRS` | Directorios de plugins que se cargan para la sesión, cada uno cargado del mismo modo en que lo carga un flag [`--plugin-dir`](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa varias rutas con `:` en Unix o con `;` en Windows. Indica cada ruta como ruta absoluta o iníciala con `~`, porque Claude Code omite las rutas relativas. Requiere Claude Code v2.1.280 o posterior. Consulta [Cargar un plugin para una sesión](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session) |

352| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establezca en `1` para omitir el intento de re-clonación y mantener el uso del checkout de mercado existente cuando una actualización de mercado no puede alcanzar o autenticarse en el remoto. Útil en entornos sin conexión o aislados donde la re-clonación fallaría de la misma manera. Consulte [Las actualizaciones del mercado siguen fallando en entornos sin conexión](/docs/es/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |353| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para clonar o actualizar un marketplace de plugins (predeterminado: 120000). Aumenta este valor para repositorios grandes o conexiones de red lentas. Consulta [Git clone timed out](/docs/es/plugins/troubleshooting#git-clone-timed-out-after-120s) |

353| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establezca en `1` para clonar fuentes de abreviatura de GitHub `owner/repo` sobre HTTPS en lugar de SSH. Se aplica a la instalación y actualización de plugins, y a `/plugin marketplace add` y `update`. Útil en ejecutores de CI, contenedores o cualquier entorno sin una clave SSH configurada para `github.com` |354| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establécela en `1` para omitir el intento de volver a clonar y seguir usando el checkout existente del marketplace cuando una actualización del marketplace no puede acceder al remoto o autenticarse en él. Útil en entornos sin conexión o aislados, donde volver a clonar fallaría de la misma manera. Consulta [Las actualizaciones del marketplace fallan en entornos sin conexión](/docs/es/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

354| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Ruta a uno o más directorios de semilla de plugins de solo lectura, separados por `:` en Unix o `;` en Windows. Use esto para agrupar un directorio de plugins pre-poblado en una imagen de contenedor. Claude Code registra mercados desde estos directorios al inicio y usa plugins pre-almacenados en caché sin re-clonar. Consulte [Pre-rellenar plugins para contenedores](/docs/es/plugins/org#seed-containers-and-ci) |355| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establécela en `1` para clonar las fuentes abreviadas `owner/repo` de GitHub mediante HTTPS en lugar de SSH. Se aplica a la instalación y actualización de plugins, y a `/plugin marketplace add` y `update`. Útil en runners de CI, contenedores o cualquier entorno sin una clave SSH configurada para `github.com` |

355| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Establezca en `1` para evitar que Claude Code pase `-ExecutionPolicy Bypass` cuando genera PowerShell para llamadas de herramientas, hooks y comandos de línea de estado, y respete la política de ejecución efectiva de la máquina en su lugar. De forma predeterminada, Claude Code evita la política de ejecución en el alcance del proceso para que los scripts `.ps1` e importaciones de módulos funcionen en instalaciones de Windows predeterminadas restringidas. El bypass de alcance de proceso nunca anula la Política de Grupo `MachinePolicy` o `UserPolicy` independientemente de esta configuración |356| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Ruta a uno o más directorios semilla de plugins de solo lectura, separados por `:` en Unix o por `;` en Windows. Úsala para incluir un directorio de plugins rellenado previamente en una imagen de contenedor. Claude Code registra los marketplaces de estos directorios al iniciar y usa los plugins almacenados previamente en caché sin volver a clonarlos. Consulta [Rellenar previamente plugins para contenedores](/docs/es/plugins/org#seed-containers-and-ci) |

356| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Techo en milisegundos en la espera inactiva de subagentes de fondo y flujos de trabajo después del turno final en [modo no interactivo](/docs/es/headless#background-tasks-at-exit) con la bandera `-p`. La espera inactiva comienza de nuevo cada vez que Claude toma un turno para manejar un resultado de fondo. Predeterminado: `600000`, o 10 minutos. Cuando la espera inactiva alcanza el techo, Claude Code deja de esperar a las tareas de fondo restantes y sale. Establezca en `0` para esperar indefinidamente. Este tope es separado del período de gracia de cinco segundos que se aplica a shells de fondo simples. Requiere Claude Code v2.1.182 o posterior |357| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Establécela en `1` para que Claude Code deje de pasar `-ExecutionPolicy Bypass` al iniciar PowerShell para llamadas a herramientas, hooks y comandos de la línea de estado, y respete en su lugar la directiva de ejecución efectiva de la máquina. De forma predeterminada, Claude Code omite la directiva de ejecución en el alcance del proceso para que los scripts `.ps1` y las importaciones de módulos funcionen en instalaciones de Windows con Restricted como valor predeterminado. La omisión en el alcance del proceso nunca sobrescribe `MachinePolicy` ni `UserPolicy` de la directiva de grupo, independientemente de este ajuste |

357| `CLAUDE_CODE_PROCESS_WRAPPER` | Lance los procesos que Claude Code inicia desde su propio binario, como el servicio de fondo que aloja sesiones de [vista de agente](/docs/es/agent-view), a través de un lanzador corporativo dado como un prefijo argv como `/opt/corp/launcher`. Establézcalo en el bloque `env` de configuración de usuario o [administrada](/docs/es/managed-settings), no como una exportación de shell, para que el servicio de fondo desconectado lo herede; la configuración de proyecto y local no puede establecerlo. Equivalente a la configuración [`processWrapper`](/docs/es/settings-reference#processwrapper), que requiere Claude Code v2.1.210 o posterior; esta variable tiene prioridad cuando ambas están establecidas. La extensión VS Code configura su propio lanzador por separado a través de su configuración `claudeProcessWrapper`. Se ignora en Windows. Consulte [Ejecutar Claude Code detrás de un lanzador corporativo](/docs/es/corporate-launcher) para el formato de valor, qué cubre el lanzador y el contrato que el lanzador debe satisfacer. Requiere Claude Code v2.1.208 o posterior |358| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Límite máximo en milisegundos de la espera inactiva de subagentes y flujos de trabajo en segundo plano después del último turno en [modo no interactivo](/docs/es/headless#background-tasks-at-exit) con el flag `-p`. La espera inactiva se reinicia cada vez que Claude toma un turno para gestionar un resultado en segundo plano. Predeterminado: `600000`, o 10 minutos. Cuando la espera inactiva alcanza el límite, Claude Code deja de esperar las tareas en segundo plano restantes y sale. Establécela en `0` para esperar indefinidamente. Este límite es independiente del período de gracia de cinco segundos que se aplica a los shells en segundo plano simples. Requiere Claude Code v2.1.182 o posterior |

358| `CLAUDE_CODE_PROJECT_DIR_NAME` | Establezca junto con `CLAUDE_CONFIG_DIR` para elegir el nombre del directorio `projects/` donde Claude Code almacena las transcripciones y memoria automática de esa sesión, en lugar de uno derivado de la ruta del directorio de trabajo. Por ejemplo, iniciar Claude Code con `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` almacena bajo `/srv/tenant-a/projects/work/`. Claude Code ignora esta variable cuando `CLAUDE_CONFIG_DIR` no está establecido, y la lee solo desde el entorno desde el que inicia `claude`, nunca desde un bloque `env` de [archivo de configuración](#in-settings-files). Consulte [Nombre el directorio del proyecto usted mismo](/docs/es/sessions#name-the-project-directory-yourself). Requiere Claude Code v2.1.234 o posterior |359| `CLAUDE_CODE_PROCESS_WRAPPER` | Inicia los procesos que Claude Code arranca desde su propio binario, como el servicio en segundo plano que aloja las sesiones de la [vista de agentes](/docs/es/agent-view), a través de un lanzador corporativo indicado como prefijo de argv, como `/opt/corp/launcher`. Establécela en el bloque `env` de la configuración de usuario o de la [configuración administrada](/docs/es/managed-settings), no como una exportación del shell, para que el servicio en segundo plano desacoplado la herede; la configuración de proyecto y local no puede establecerla. Equivale al [ajuste `processWrapper`](/docs/es/settings-reference#processwrapper), que requiere Claude Code v2.1.210 o posterior; esta variable tiene precedencia cuando ambos están establecidos. La extensión de VS Code configura su propio lanzador por separado mediante su ajuste `claudeProcessWrapper`. Se ignora en Windows. Consulta [Ejecutar Claude Code detrás de un lanzador corporativo](/docs/es/corporate-launcher) para conocer el formato del valor, qué cubre el lanzador y el contrato que debe cumplir el lanzador. Requiere Claude Code v2.1.208 o posterior |

359| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Establezca `5m` o `1h`, los únicos valores que Claude Code acepta, para elegir el [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) para la conversación principal: sus turnos interactivos, `-p` y SDK, más los ayudantes que se ejecutan en línea con ellos. Tiene prioridad sobre la configuración `promptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la anula. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Requiere Claude Code v2.1.242 o posterior |360| `CLAUDE_CODE_PROJECT_DIR_NAME` | Establécela junto con `CLAUDE_CONFIG_DIR` para elegir el nombre del directorio de `projects/` en el que Claude Code almacena las transcripciones y la memoria automática de esa sesión, en lugar de uno derivado de la ruta del directorio de trabajo. Por ejemplo, iniciar Claude Code con `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` las almacena en `/srv/tenant-a/projects/work/`. Claude Code ignora esta variable cuando `CLAUDE_CONFIG_DIR` no está establecida, y solo la lee del entorno desde el que inicias `claude`, nunca de un [bloque `env` de un archivo de configuración](#in-settings-files). Consulta [Nombrar tú mismo el directorio del proyecto](/docs/es/sessions#name-the-project-directory-yourself). Requiere Claude Code v2.1.234 o posterior |

360| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Establezca en `1` para propagar el contexto de rastreo W3C cuando `ANTHROPIC_BASE_URL` apunta a un proxy personalizado. La propagación cubre el encabezado `traceparent` en solicitudes de modelo y MCP HTTP y la variable de entorno `TRACEPARENT` para subprocesos Bash, PowerShell y hook. De forma predeterminada, la propagación está habilitada solo cuando se conecta directamente a la API de Anthropic. Agregado en v2.1.152. Consulte [Rastreos (beta)](/docs/es/monitoring-usage#traces-beta) |361| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Establece `5m` o `1h`, los únicos valores que acepta Claude Code, para elegir el [TTL de la caché de prompts](/docs/es/prompt-caching#cache-lifetime) de la conversación principal: tus turnos interactivos, de `-p` y del SDK, además de los auxiliares que se ejecutan en línea con ellos. Tiene precedencia sobre el ajuste `promptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la sobrescribe. La API factura las escrituras en caché de 1 hora a una tarifa más alta. Requiere Claude Code v2.1.242 o posterior |

361| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Se establece por plataformas host que incrustan Claude Code y administran el enrutamiento del proveedor de modelo en su nombre. Cuando se establece, Claude Code ignora variables de selección de proveedor, punto de conexión y autenticación como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` y `ANTHROPIC_API_KEY` en archivos de configuración, para que la configuración de usuario no pueda anular el enrutamiento del host. Claude Code también ignora claves de selección de modelo como `model`, `fallbackModel` y `modelOverrides` en [configuración administrada](/docs/es/managed-settings), cualquiera que sea la fuente administrada que las entregue, para que la configuración de modelo del host tenga prioridad sobre un pin de modelo administrado desactualizado. Claude Code también ignora variables de selección de modelo como `ANTHROPIC_MODEL` y la familia `ANTHROPIC_DEFAULT_*_MODEL` en un bloque `env` administrado; una lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) en configuración administrada aún se aplica a menos que el host suministre la suya. Claude Code también omite la opción de exclusión de telemetría automática que de otra manera aplica en proveedores de terceros como Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform y Microsoft Foundry, para que la telemetría siga la opción de exclusión estándar `DISABLE_TELEMETRY`. Consulte [Comportamientos predeterminados por proveedor de API](/docs/es/data-usage#default-behaviors-by-api-provider) |362| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Establécela en `1` para propagar el contexto de traza W3C cuando `ANTHROPIC_BASE_URL` apunta a un proxy personalizado. La propagación abarca el encabezado `traceparent` en las solicitudes al modelo y a MCP por HTTP, y la variable de entorno `TRACEPARENT` para los subprocesos de Bash, PowerShell y hooks. De forma predeterminada, la propagación solo está habilitada cuando hay una conexión directa a la Anthropic API. Agregada en v2.1.152. Consulta [Trazas (beta)](/docs/es/monitoring-usage#traces-beta) |

362| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Establezca en `1` para permitir que el proxy realice la resolución de DNS en lugar de la persona que llama. Opción de participación para entornos donde el proxy debe manejar la resolución de nombres de host |363| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | La establecen las plataformas host que integran Claude Code y administran el enrutamiento del proveedor de modelos en su nombre. Cuando se establece, Claude Code ignora las variables de selección de proveedor, de endpoint y de autenticación, como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` y `ANTHROPIC_API_KEY`, en los archivos de configuración, de modo que la configuración de usuario no pueda sobrescribir el enrutamiento del host. Claude Code también ignora las claves de selección de modelo, como `model`, `fallbackModel` y `modelOverrides`, en la [configuración administrada](/docs/es/managed-settings), sea cual sea la fuente administrada que las entregue, de modo que la configuración de modelos del host tenga precedencia sobre una fijación de modelo administrada desactualizada. Claude Code también ignora las variables de selección de modelo, como `ANTHROPIC_MODEL` y la familia `ANTHROPIC_DEFAULT_*_MODEL`, en un bloque `env` administrado; una lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) en la configuración administrada se sigue aplicando a menos que el host proporcione la suya. Claude Code también omite la exclusión automática de la telemetría que de otro modo aplica en proveedores externos como Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform y Microsoft Foundry, por lo que la telemetría sigue la exclusión estándar mediante `DISABLE_TELEMETRY`. Consulta [Comportamientos predeterminados por proveedor de API](/docs/es/data-usage#default-behaviors-by-api-provider) |

363| `CLAUDE_CODE_REMOTE` | Se establece automáticamente en `true` cuando Claude Code se ejecuta como una [sesión en la nube](/docs/es/claude-code-on-the-web). Lea esto desde un hook o script de configuración para detectar si está en una sesión en la nube |364| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Establécela en `1` para permitir que el proxy realice la resolución DNS en lugar del llamador. Opción para entornos en los que el proxy debe encargarse de la resolución de nombres de host |

364| `CLAUDE_CODE_REMOTE_SESSION_ID` | Se establece automáticamente en [sesiones en la nube](/docs/es/claude-code-on-the-web) al ID de la sesión actual. Lea esto para construir un enlace de vuelta a la transcripción de la sesión. Consulte [Enlace de salida de vuelta a la sesión](/docs/es/cloud-environments#link-output-back-to-the-session) |365| `CLAUDE_CODE_REMOTE` | Se establece automáticamente en `true` cuando Claude Code se ejecuta como una [sesión en la nube](/docs/es/claude-code-on-the-web). Léela desde un hook o un script de configuración para detectar si estás en una sesión en la nube |

365| `CLAUDE_CODE_RESTRICTED` | Establezca en `1` para iniciar la sesión en modo restringido, lo mismo que pasar [`--restricted`](/docs/es/cli-reference#cli-flags). Claude Code ignora esta variable en un bloque `env` de archivo de configuración. Requiere Claude Code v2.1.248 o posterior |366| `CLAUDE_CODE_REMOTE_SESSION_ID` | Se establece automáticamente en las [sesiones en la nube](/docs/es/claude-code-on-the-web) con el ID de la sesión actual. Léela para construir un enlace de vuelta a la transcripción de la sesión. Consulta [Enlazar la salida de vuelta a la sesión](/docs/es/cloud-environments#link-output-back-to-the-session) |

366| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Establécela en `1` para reanudar automáticamente si la sesión anterior terminó a mitad de un turno. Se usa en el modo SDK para que el modelo continúe sin que el SDK tenga que volver a enviar el prompt. Para desactivarla, elimina la variable o establécela en `0`. Para el panel de chat de VS Code, consulta [Continuar conversaciones después de recargar](/docs/es/vs-code#continue-conversations-after-a-reload) |367| `CLAUDE_CODE_RESTRICTED` | Establécela en `1` para iniciar la sesión en modo restringido, igual que al pasar [`--restricted`](/docs/es/cli-reference#cli-flags). Claude Code ignora esta variable en el bloque `env` de un archivo de configuración. Requiere Claude Code v2.1.248 o posterior |

367| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Edad máxima en milisegundos del último mensaje de transcripción para que una sesión que terminó a mitad de turno continúe automáticamente al reanudar. Cuando el último mensaje es más antiguo que este límite, Claude Code omite la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` y su mensaje de continuación `CLAUDE_CODE_RESUME_PROMPT`, y la sesión comienza inactiva para que continúe explícitamente. Sin establecer o `0` significa sin límite, excepto que un turno cuya última solicitud falló con un error de API se reanuda solo mientras ese error tiene menos de seis horas. Un valor positivo limita cada turno, incluidos los; un valor negativo o no numérico aplica un límite de una hora. Los scripts de generación para agentes de larga duración pueden establecer esto para que un reinicio contra una transcripción antigua no re-ejecute un prompt obsoleto. Claude Code establece un límite de una hora él mismo cuando reinicia una sesión de [vista de agente](/docs/es/agent-view) que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |368| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Establécela en `1` para reanudar automáticamente si la sesión anterior terminó a mitad de un turno. Se usa en el modo SDK para que el modelo continúe sin que el SDK tenga que volver a enviar el prompt. Para desactivarla, quita la variable o establécela en `0`. Para el panel de chat de VS Code, consulta [Continuar las conversaciones después de recargar](/docs/es/vs-code#continue-conversations-after-a-reload) |

368| `CLAUDE_CODE_RESUME_PROMPT` | Anule el mensaje de continuación que Claude Code envía a Claude cuando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continúa un turno interrumpido en lugar de reenviar su prompt, o cuando reanuda una [llamada de herramienta diferida](/docs/es/hooks#defer-a-tool-call-for-later) con `-p`. El valor predeterminado es `Continue from where you left off.`. Una cadena vacía usa el predeterminado |369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Antigüedad máxima en milisegundos del último mensaje de la transcripción para que una sesión que terminó a mitad de un turno continúe automáticamente al reanudarse. Cuando el último mensaje es más antiguo que este límite, Claude Code omite la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` y su mensaje de continuación `CLAUDE_CODE_RESUME_PROMPT`, y la sesión se inicia inactiva para que continúes explícitamente. Sin establecer o `0` significa sin límite, excepto que un turno cuya última solicitud falló con un error de la API solo se reanuda mientras ese error tenga menos de seis horas de antigüedad. Un valor positivo limita todos los turnos, incluidos esos; un valor negativo o no numérico aplica un límite de una hora. Los scripts que inician agentes de larga duración pueden establecerla para que un reinicio con una transcripción antigua no vuelva a ejecutar un prompt obsoleto. Claude Code establece por sí mismo un límite de una hora cuando reinicia una sesión de la [vista de agentes](/docs/es/agent-view) que falló y que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |

369| `CLAUDE_CODE_RETRY_WATCHDOG` | Establezca en `1` para sesiones desatendidas como arneses de evaluación, trabajos de CI o trabajadores remotos. Reintentos `429` y `529` errores de capacidad indefinidamente en lugar de fallar después de intentos de `CLAUDE_CODE_MAX_RETRIES`. Claude Code falla de inmediato cuando una solicitud de velocidad estándar obtiene un `429` que informa un límite de gasto o créditos de uso agotados, incluso uno de un [tope de gasto de puerta de enlace](/docs/es/errors#spend-limit-reached) que se reinicia en un horario. Antes de v2.1.239, el perro guardián reintentaba estos indefinidamente. Para solicitudes de modo rápido, consulte [Manejar límites de velocidad](/docs/es/fast-mode#handle-rate-limits). El perro guardián se retira hasta 5 minutos entre intentos, o hasta que se reinicie el límite cuando la respuesta lleva un tiempo de reinicio de límite de velocidad, por lo que una sesión que alcanza un límite de uso espera la ventana restante. En v2.1.199 o posterior, también aumenta el conteo de reintentos predeterminado para otros errores transitorios, como errores de servidor, tiempos de espera y conexiones caídas, a 300, aproximadamente tres horas de retroceso, y elimina el tope de 15 en `CLAUDE_CODE_MAX_RETRIES` si establece esa variable explícitamente. Requiere Claude Code v2.1.186 o posterior |370| `CLAUDE_CODE_RESUME_PROMPT` | Sobrescribe el mensaje de continuación que Claude Code envía a Claude cuando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continúa un turno interrumpido en lugar de volver a enviar su prompt, o cuando reanudas una [llamada a herramienta diferida](/docs/es/hooks#defer-a-tool-call-for-later) con `-p`. El valor predeterminado es `Continue from where you left off.`. Una cadena vacía usa el valor predeterminado |

370| `CLAUDE_CODE_SAFE_MODE` | Establezca en `1` para iniciar en modo seguro: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y sugerencia de archivos, servidores LSP y memoria automática no se cargan, para solucionar problemas de una configuración rota. La política de configuración administrada aún se aplica, incluidos hooks configurados por política, línea de estado y comandos de sugerencia de archivos; plugins administrados, skills administradas, CLAUDE.md administrado y servidores MCP configurados por política no lo hacen. Equivalente a pasar [`--safe-mode`](/docs/es/cli-reference#cli-flags). Los procesos secundarios generados directamente heredan la variable |371| `CLAUDE_CODE_RETRY_WATCHDOG` | Establécela en `1` para sesiones desatendidas, como harnesses de evaluación, trabajos de CI o workers remotos. Reintenta indefinidamente los errores de capacidad `429` y `529` en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que indica un límite de gasto o créditos de uso agotados, incluso uno procedente de un [límite de gasto del gateway](/docs/es/errors#spend-limit-reached) que se restablece según una programación. Antes de v2.1.239, el watchdog los reintentaba indefinidamente. Para las solicitudes en modo rápido, consulta [Gestionar los rate limits](/docs/es/fast-mode#handle-rate-limits). El watchdog espera hasta 5 minutos entre intentos, o hasta que se restablezca el límite cuando la respuesta incluye un tiempo de restablecimiento del rate limit, por lo que una sesión que alcanza un límite de uso espera a que termine la ventana restante. En v2.1.199 o posterior también aumenta a 300 el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones interrumpidas, lo que equivale aproximadamente a tres horas de espera, y elimina el límite de 15 de `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable explícitamente. Requiere Claude Code v2.1.186 o posterior |

371| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON que limita cuántas veces se pueden invocar scripts específicos por sesión cuando `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` está establecido. Las claves son subcadenas coincidentes contra el texto del comando; los valores son límites de llamadas enteras. Por ejemplo, `{"deploy.sh": 2}` permite que `deploy.sh` se llame como máximo dos veces. La coincidencia es basada en subcadenas, por lo que trucos de expansión de shell como `./scripts/deploy.sh $(evil)` aún cuentan contra el tope. El fan-out en tiempo de ejecución a través de `xargs` o `find -exec` no se detecta; esto es un control de defensa en profundidad |372| `CLAUDE_CODE_SAFE_MODE` | Establécela en `1` para iniciar en modo seguro: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y de sugerencia de archivos, servidores LSP y la memoria automática no se cargan, para solucionar problemas de una configuración dañada. La directiva de configuración administrada se sigue aplicando, incluidos los hooks, la línea de estado y los comandos de sugerencia de archivos configurados por directiva; los plugins administrados, los skills administrados, el CLAUDE.md administrado y los servidores MCP configurados por directiva no. Equivale a pasar [`--safe-mode`](/docs/es/cli-reference#cli-flags). Los procesos hijos iniciados directamente heredan la variable |

372| `CLAUDE_CODE_SCROLL_SPEED` | Establezca el multiplicador de desplazamiento de rueda del ratón en [renderizado de pantalla completa](/docs/es/fullscreen#mouse-wheel-scrolling). Acepta cualquier valor positivo hasta 20, incluidos valores fraccionarios por debajo de 1 como `0.5` para ralentizar el desplazamiento de trackpad y rueda amplificado en terminales que ya amplifican eventos de rueda. Establezca en `3` para coincidir con `vim` si su terminal envía un evento de rueda por muesca sin amplificación. Se ignora en la terminal IDE de JetBrains, donde Claude Code usa su propio manejo de desplazamiento |373| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON que limita cuántas veces se pueden invocar scripts específicos por sesión cuando se establece `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`. Las claves son subcadenas que se comparan con el texto del comando; los valores son límites de llamadas enteros. Por ejemplo, `{"deploy.sh": 2}` permite llamar a `deploy.sh` como máximo dos veces. La coincidencia se basa en subcadenas, por lo que los trucos de expansión del shell como `./scripts/deploy.sh $(evil)` siguen contando para el límite. No se detecta la multiplicación en tiempo de ejecución mediante `xargs` o `find -exec`; este es un control de defensa en profundidad |

373| `CLAUDE_CODE_SEND_FEEDBACK` | Establezca en `0` para desactivar [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior) para una sesión. Establezca en `1` para activarlo donde su cuenta ya tiene acceso; la variable no puede otorgar acceso en sí, y los otros interruptores que desactivan comentarios, como `DISABLE_FEEDBACK_COMMAND` y el valor `off` de la configuración [`feedbackDrafts`](/docs/es/settings-reference#feedbackdrafts), aún se aplican |374| `CLAUDE_CODE_SCROLL_SPEED` | Establece el multiplicador de desplazamiento de la rueda del mouse en la [representación en pantalla completa](/docs/es/fullscreen#mouse-wheel-scrolling). Acepta cualquier valor positivo hasta 20, incluidos valores fraccionarios menores que 1, como `0.5`, para ralentizar el desplazamiento acelerado del trackpad y de la rueda en terminales que ya amplifican los eventos de la rueda. Establécela en `3` para igualar a `vim` si tu terminal envía un evento de rueda por muesca sin amplificación. Se ignora en la terminal del IDE de JetBrains, donde Claude Code usa su propia gestión del desplazamiento |

374| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Anule el presupuesto de tiempo en milisegundos para hooks [SessionEnd](/docs/es/hooks#sessionend). El valor es también el tiempo de espera para cada hook que no establece su propio `timeout`. Se aplica a la salida de sesión, `/clear` y cambio de sesiones a través de `/resume` interactivo. De forma predeterminada, el presupuesto es 1.5 segundos, aumentado automáticamente al `timeout` por hook más alto configurado en archivos de configuración, hasta 60 segundos. Los tiempos de espera en hooks proporcionados por plugins no aumentan el presupuesto |375| `CLAUDE_CODE_SEND_FEEDBACK` | Establécela en `0` para desactivar los [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior) en una sesión. Establécela en `1` para activarlos cuando tu cuenta ya tiene acceso; la variable no puede conceder acceso por sí misma, y los demás interruptores que desactivan los comentarios, como `DISABLE_FEEDBACK_COMMAND` y el valor `off` del ajuste [`feedbackDrafts`](/docs/es/settings-reference#feedbackdrafts), se siguen aplicando |

375| `CLAUDE_CODE_SESSION_ID` | Se establece automáticamente al ID de sesión actual en subprocesos de herramienta Bash y PowerShell, subprocesos de [comando hook](/docs/es/hooks) y subprocesos de [servidor MCP](/docs/es/mcp) stdio. Para Bash, PowerShell y hooks, esto coincide con el campo `session_id` en la entrada JSON del hook y se actualiza en `/clear`. Un subproceso de servidor MCP retiene el ID con el que fue generado. En `--resume <session-id>` recibe el ID reanudado, coincidiendo con hooks y Bash. En `--continue` o `--resume` sin un ID explícito puede recibir el ID de inicio inicial en su lugar. Use para correlacionar scripts y herramientas externas con la sesión de Claude Code que los lanzó |376| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Sobrescribe el presupuesto de tiempo en milisegundos para los hooks [SessionEnd](/docs/es/hooks#sessionend). El valor también es el tiempo de espera de cada hook que no establece su propio `timeout`. Se aplica al salir de la sesión, a `/clear` y al cambiar de sesión mediante `/resume` interactivo. De forma predeterminada, el presupuesto es de 1.5 segundos, y se eleva automáticamente al `timeout` por hook más alto configurado en los archivos de configuración, hasta 60 segundos. Los tiempos de espera de los hooks proporcionados por plugins no elevan el presupuesto |

376| `CLAUDE_CODE_SHELL` | Establezca el shell que Claude Code usa para ejecutar comandos de herramienta Bash. Acepta una ruta a un binario `bash` o `zsh`, por ejemplo `/opt/homebrew/bin/bash`. Otros shells como `fish` no son compatibles. Si el valor no es una ruta `bash` o `zsh` funcional, Claude Code la ignora y vuelve a la detección automática. La detección automática usa su `$SHELL` cuando apunta a `bash` o `zsh`, de lo contrario elige el primer `zsh` funcional y luego `bash` encontrado en su `PATH` y ubicaciones de instalación estándar |377| `CLAUDE_CODE_SESSION_ID` | Se establece automáticamente con el ID de la sesión actual en los subprocesos de las herramientas Bash y PowerShell, en los subprocesos de los [comandos de hooks](/docs/es/hooks) y en los subprocesos de los [servidores MCP](/docs/es/mcp) stdio. Para Bash, PowerShell y los hooks, coincide con el campo `session_id` de la entrada JSON del hook y se actualiza con `/clear`. Un subproceso de servidor MCP conserva el ID con el que se inició. Con `--resume <session-id>` recibe el ID reanudado, igual que los hooks y Bash. Con `--continue` o `--resume` sin un ID explícito, es posible que reciba en su lugar el ID del inicio original. Úsala para correlacionar scripts y herramientas externas con la sesión de Claude Code que los inició |

377| `CLAUDE_CODE_SHELL_PREFIX` | Prefijo de comando que envuelve comandos de shell que Claude Code genera: llamadas de herramienta Bash, comandos [hook](/docs/es/hooks), comandos [línea de estado](/docs/es/statusline) y comandos de inicio de [servidor MCP](/docs/es/mcp) stdio. Los hooks de PowerShell y hooks de forma exec se ejecutan sin el prefijo. Útil para registro o auditoría. Establecer una ruta de ejecutable simple como `/path/to/logger.sh` ejecuta cada comando como `/path/to/logger.sh '<command>'`. El contenedor recibe la línea de comando como un argumento de shell único entre comillas en `$1`, por lo que el contenedor debe re-evaluar `$1` con un shell, por ejemplo `exec bash -c "$1"`. Tratar `$1` como una ruta de ejecutable simple rompe servidores MCP stdio que pasan argumentos como `npx -y <package>`. Para llamadas de herramienta Bash, `$1` contiene la invocación de shell completa que Claude Code ensambla, incluida la configuración del entorno, no solo el comando que Claude ejecutó |378| `CLAUDE_CODE_SHELL` | Establece el shell que Claude Code usa para ejecutar los comandos de la herramienta Bash. Acepta una ruta a un binario de `bash` o `zsh`, por ejemplo `/opt/homebrew/bin/bash`. No se admiten otros shells como `fish`. Si el valor no es una ruta de `bash` o `zsh` que funcione, Claude Code lo ignora y recurre a la detección automática. La detección automática usa tu `$SHELL` cuando apunta a `bash` o `zsh`; de lo contrario, elige el primer `zsh` y luego `bash` que funcione encontrado en tu `PATH` y en las ubicaciones de instalación estándar |

378| `CLAUDE_CODE_SIMPLE` | Establezca en `1` para ejecutar con un prompt del sistema mínimo y solo las herramientas Bash, lectura de archivos y edición de archivos. Las herramientas MCP de `--mcp-config` aún están disponibles. Desabilita el descubrimiento automático de hooks, skills, comandos personalizados, subagentes, plugins instalados, servidores MCP, memoria automática y CLAUDE.md. Las skills en un directorio que pasa con `--add-dir` aún se cargan. Los tokens de OAuth y las credenciales de llavero no se leen, por lo que la autenticación de Anthropic debe provenir de `ANTHROPIC_API_KEY` o un `apiKeyHelper` en `--settings`. Equivalente a pasar [`--bare`](/docs/es/headless#start-faster-with-bare-mode) |379| `CLAUDE_CODE_SHELL_PREFIX` | Prefijo de comando que envuelve los comandos de shell que inicia Claude Code: las llamadas a la herramienta Bash, los comandos de [hooks](/docs/es/hooks), los comandos de la [línea de estado](/docs/es/statusline) y los comandos de inicio de los [servidores MCP](/docs/es/mcp) stdio. Los hooks de PowerShell y los hooks en forma exec se ejecutan sin el prefijo. Útil para registro o auditoría. Establecer una ruta de ejecutable simple como `/path/to/logger.sh` ejecuta cada comando como `/path/to/logger.sh '<command>'`. El wrapper recibe la línea de comandos como un único argumento entrecomillado para el shell en `$1`, por lo que el wrapper debe volver a evaluar `$1` con un shell, por ejemplo `exec bash -c "$1"`. Tratar `$1` como una ruta de ejecutable simple rompe los servidores MCP stdio que pasan argumentos como `npx -y <package>`. Para las llamadas a la herramienta Bash, `$1` contiene la invocación completa del shell que arma Claude Code, incluida la configuración del entorno, no solo el comando que ejecutó Claude |

379| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Establezca en `1` para usar un prompt del sistema más corto y descripciones de herramientas abreviadas en cualquier modelo. Establezca en `0`, `false`, `no` u `off` para optar por no participar incluso en modelos donde el experimento o la configuración del servidor lo habilitaría de otra manera. El conjunto completo de herramientas, descubrimiento de hooks, servidores MCP y CLAUDE.md permanecen habilitados |380| `CLAUDE_CODE_SIMPLE` | Establécela en `1` para ejecutar con un prompt del sistema mínimo y solo las herramientas Bash, de lectura de archivos y de edición de archivos. Las herramientas MCP de `--mcp-config` siguen disponibles. Desactiva el descubrimiento automático de hooks, skills, comandos personalizados, subagentes, plugins instalados, servidores MCP, memoria automática y CLAUDE.md. Los skills de un directorio que pasas con `--add-dir` se siguen cargando. No se leen los tokens de OAuth ni las credenciales del llavero, por lo que la autenticación de Anthropic debe provenir de `ANTHROPIC_API_KEY` o de un `apiKeyHelper` en `--settings`. Equivale a pasar [`--bare`](/docs/es/headless#start-faster-with-bare-mode) |

380| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Omita la autenticación del lado del cliente para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), para puertas de enlace que firman solicitudes ellas mismas |381| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Establécela en `1` para usar un prompt del sistema más corto y descripciones de herramientas abreviadas en cualquier modelo. Establécela en `0`, `false`, `no` u `off` para excluirte incluso en los modelos en los que el experimento o la configuración del servidor la habilitarían de otro modo. El conjunto completo de herramientas, los hooks, los servidores MCP y el descubrimiento de CLAUDE.md siguen habilitados |

381| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Establezca en `1` para desactivar la caché en proceso de credenciales resueltas desde la cadena de proveedor de credenciales predeterminada de AWS, para que Claude Code resuelva la cadena en cada solicitud de API. Con la caché desactivada, un perfil respaldado por SSO solicita credenciales de IAM Identity Center en cada solicitud. Consulte [almacenamiento en caché de credenciales y tiempo de espera de resolución](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout). Requiere Claude Code v2.1.207 o posterior |382| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Omite la autenticación del lado del cliente para [Claude Platform on AWS](/docs/es/claude-platform-on-aws), para gateways que firman las solicitudes por sí mismos |

382| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Omita la autenticación de AWS para Amazon Bedrock (por ejemplo, cuando se usa una puerta de enlace LLM) |383| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Establécela en `1` para desactivar la caché en proceso de las credenciales resueltas desde la cadena de proveedores de credenciales predeterminada de AWS, de modo que Claude Code resuelva la cadena en cada solicitud a la API. Con la caché desactivada, un perfil respaldado por SSO solicita credenciales a IAM Identity Center en cada solicitud. Consulta [almacenamiento en caché de credenciales y tiempo de espera de resolución](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout). Requiere Claude Code v2.1.207 o posterior |

383| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Establezca en `1` para tratar una verificación de disponibilidad de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) fallida como disponible, para redes que bloquean la solicitud directa de la verificación a `api.anthropic.com`. Claude Code aún honra una respuesta "deshabilitado por su organización" |384| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Omite la autenticación de AWS para Amazon Bedrock (por ejemplo, al usar un gateway de LLM) |

384| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Establezca en `1` para omitir la verificación de disponibilidad de [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) del lado del cliente, para proxies que interceptan la solicitud de la verificación en lugar de rechazarla. La API aún rechaza solicitudes de modo rápido cuando su organización tiene modo rápido deshabilitado |385| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Establécela en `1` para tratar como disponible una comprobación fallida de disponibilidad del [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways), para redes que bloquean la solicitud directa de la comprobación a `api.anthropic.com`. Claude Code sigue respetando una respuesta de "disabled by your organization" |

385| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Omita la autenticación de Azure para Microsoft Foundry, para un proxy o puerta de enlace que inyecta su propio encabezado `Authorization`. Claude Code envía solicitudes sin una credencial de Azure y preserva el encabezado `Authorization` que suministra, por ejemplo a través de `ANTHROPIC_CUSTOM_HEADERS`. Se ignora cuando `ANTHROPIC_FOUNDRY_API_KEY` o `ANTHROPIC_FOUNDRY_AUTH_TOKEN` está establecido. Antes de v2.1.203, esta variable dejó al cliente de Microsoft Foundry incapaz de enviar solicitudes a menos que también se estableciera una clave de API |386| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Establécela en `1` para omitir la comprobación de disponibilidad del [modo rápido](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) del lado del cliente, para proxies que interceptan la solicitud de la comprobación en lugar de rechazarla. La API sigue rechazando las solicitudes en modo rápido cuando tu organización tiene el modo rápido deshabilitado |

386| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Omita la autenticación de AWS para Amazon Bedrock Mantle (por ejemplo, cuando se usa una puerta de enlace LLM) |387| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Omite la autenticación de Azure para Microsoft Foundry, para un proxy o gateway que inyecta su propio encabezado `Authorization`. Claude Code envía las solicitudes sin una credencial de Azure y conserva el encabezado `Authorization` que proporcionas, por ejemplo mediante `ANTHROPIC_CUSTOM_HEADERS`. Se ignora cuando se establece `ANTHROPIC_FOUNDRY_API_KEY` o `ANTHROPIC_FOUNDRY_AUTH_TOKEN`. Antes de v2.1.203, esta variable dejaba al cliente de Microsoft Foundry sin poder enviar solicitudes a menos que también se estableciera una clave de API |

387| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | Las [comprobaciones de modelo de inicio](/docs/es/amazon-bedrock#startup-model-checks) en [Amazon Bedrock](/docs/es/amazon-bedrock) y [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) recuerdan en esta máquina qué modelos encontraron que su cuenta no puede invocar, durante hasta un día. Establezca en `1` para desactivar esa memoria. Requiere Claude Code v2.1.285 o posterior |388| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Omite la autenticación de AWS para Amazon Bedrock Mantle (por ejemplo, al usar un gateway de LLM) |

388| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Establezca en `1` para omitir escribir historial de prompts y transcripciones de sesión en disco. Las sesiones iniciadas con esta variable establecida no aparecen en `--resume`, `--continue` o historial de flecha hacia arriba. Útil para sesiones de scripts efímeros |389| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | Las [comprobaciones de modelos al iniciar](/docs/es/amazon-bedrock#startup-model-checks) en [Amazon Bedrock](/docs/es/amazon-bedrock) y [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) recuerdan en esta máquina qué modelos encontraron que tu cuenta no puede invocar, durante un máximo de un día. Establécela en `1` para desactivar esa memoria. Requiere Claude Code v2.1.285 o posterior |

389| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Omita la autenticación de Google para Google Cloud's Agent Platform (por ejemplo, cuando se usa una puerta de enlace LLM) |390| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Establécela en `1` para omitir la escritura del historial de prompts y de las transcripciones de sesión en el disco. Las sesiones iniciadas con esta variable establecida no aparecen en `--resume`, `--continue` ni en el historial de la flecha hacia arriba. Útil para sesiones efímeras con scripts |

390| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Establezca en `1` para que una sesión iniciada con `--output-format stream-json` escriba un [mensaje de resultado que nombre por qué Claude Code se negó a iniciar](/docs/es/agent-sdk/typescript#startup_failure_reason) para fallos de inicio que de otra manera terminan solo con stderr. Requiere Claude Code v2.1.274 o posterior |391| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Omite la autenticación de Google para Google Cloud's Agent Platform (por ejemplo, al usar un gateway de LLM) |

391| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Número máximo de veces consecutivas que un hook [Stop](/docs/es/hooks#stop) o [SubagentStop](/docs/es/hooks#subagentstop) puede bloquear el final del turno antes de que Claude Code lo anule y termine el turno de todas formas (predeterminado: 8). Establezca en `0` para desabilitar el tope. Aumente esto si su hook legítimamente necesita más iteraciones para resolver |392| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Establécela en `1` para que una sesión iniciada con `--output-format stream-json` escriba un [mensaje de resultado que indique por qué Claude Code se negó a iniciar](/docs/es/agent-sdk/typescript#startup_failure_reason) para los fallos de inicio que de otro modo terminan solo con stderr. Requiere Claude Code v2.1.274 o posterior |

392| `CLAUDE_CODE_SUBAGENT_MODEL` | El modelo predeterminado para [subagentes](/docs/es/sub-agents#choose-a-model), compañeros de [equipo de agentes](/docs/es/agent-teams#specify-teammates-and-models) y agentes de [flujo de trabajo](/docs/es/workflows) que no se asignan un modelo de otra manera. Acepta un alias como `haiku` o un nombre de modelo completo. Dos fuentes tienen prioridad sobre él: un modelo que Claude pasa cuando genera el agente, y un campo `model` en la definición del agente, incluido `inherit`. Para cambiar eso, establezca [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/es/sub-agents#run-every-subagent-on-one-model). Consulte [Elegir un modelo](/docs/es/sub-agents#choose-a-model) para el orden completo. Establecerlo en `inherit` es lo mismo que dejarlo sin establecer. Antes de v2.1.251, esta variable anulaba tanto el modelo por invocación como el campo `model` de la definición |393| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Número máximo de veces consecutivas que un hook [Stop](/docs/es/hooks#stop) o [SubagentStop](/docs/es/hooks#subagentstop) puede impedir que el turno termine antes de que Claude Code lo sobrescriba y termine el turno de todos modos (predeterminado: 8). Establécela en `0` para desactivar el límite. Auméntala si tu hook necesita legítimamente más iteraciones para resolverse |

393| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Establezca en `1` para forzar un modelo en subagentes, compañeros de equipo y agentes de flujo de trabajo. [Ejecutar cada subagente en un modelo](/docs/es/sub-agents#run-every-subagent-on-one-model) dice cuál es ese modelo. Requiere Claude Code v2.1.257 o posterior |394| `CLAUDE_CODE_SUBAGENT_MODEL` | El modelo predeterminado para los [subagentes](/docs/es/sub-agents#choose-a-model), los compañeros de un [equipo de agentes](/docs/es/agent-teams#specify-teammates-and-models) y los agentes de [flujos de trabajo](/docs/es/workflows) a los que no se les asigna un modelo de otra manera. Acepta un alias como `haiku` o un nombre de modelo completo. Dos fuentes tienen precedencia sobre ella: un modelo que Claude pasa cuando genera el agente y un campo `model` en la definición del agente, incluido `inherit`. Para cambiar eso, establece [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/es/sub-agents#run-every-subagent-on-one-model). Consulta [Elegir un modelo](/docs/es/sub-agents#choose-a-model) para ver el orden completo. Establecerla en `inherit` equivale a dejarla sin establecer. Antes de v2.1.251, esta variable sobrescribía tanto el modelo por invocación como el campo `model` de la definición |

394| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Establezca `5m` o `1h`, los únicos valores que Claude Code acepta, para elegir el [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) para solicitudes fuera de la conversación principal, como [subagentes](/docs/es/sub-agents), flujos de trabajo y trabajo de fondo. Tiene prioridad sobre la configuración `subagentPromptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la anula. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Requiere Claude Code v2.1.242 o posterior |395| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Establécela en `1` para forzar un único modelo en los subagentes, los compañeros de equipo y los agentes de flujos de trabajo. [Ejecutar todos los subagentes en un modelo](/docs/es/sub-agents#run-every-subagent-on-one-model) indica cuál es ese modelo. Requiere Claude Code v2.1.257 o posterior |

395| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Establezca en `1` para eliminar credenciales de entornos de subproceso (herramienta Bash, hooks, servidores MCP stdio): credenciales de Anthropic y proveedor de nube, cualquier otra variable que Claude Code reconozca como credencial, y credenciales incrustadas en URLs de registro de paquetes. El proceso Claude padre mantiene estas credenciales para llamadas de API, pero los procesos secundarios no pueden leerlas, reduciendo la exposición a ataques de inyección de prompts que intentan exfiltrar secretos a través de expansión de shell. En v2.1.251 o posterior, el scrub también elimina variables de puntero de almacén de configuración propias de Claude Code (como `CLAUDE_CONFIG_DIR`), para que un proceso secundario no pueda ubicar un directorio de configuración reubicado. Deje el scrub sin establecer si un subproceso necesita estas variables. En Linux, esto también ejecuta subprocesos Bash en un espacio de nombres PID aislado para que no puedan leer entornos de procesos host a través de `/proc`; como efecto secundario, `ps`, `pgrep` y `kill` no pueden ver o señalar procesos host. `claude-code-action` establece esto automáticamente cuando `allowed_non_write_users` está configurado |396| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Establece `5m` o `1h`, los únicos valores que acepta Claude Code, para elegir el [TTL de la caché de prompts](/docs/es/prompt-caching#cache-lifetime) de las solicitudes fuera de la conversación principal, como los [subagentes](/docs/es/sub-agents), los flujos de trabajo y el trabajo en segundo plano. Tiene precedencia sobre el ajuste `subagentPromptCacheTtl` y sobre `ENABLE_PROMPT_CACHING_1H`, y `FORCE_PROMPT_CACHING_5M` la sobrescribe. La API factura las escrituras en caché de 1 hora a una tarifa más alta. Requiere Claude Code v2.1.242 o posterior |

396| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Establezca en `1` en modo no interactivo (la bandera `-p`) para esperar a que se complete la instalación del plugin antes de la primera consulta. Sin esto, los plugins se instalan en segundo plano y pueden no estar disponibles en el primer turno. Combine con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar la espera |397| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Establécela en `1` para eliminar las credenciales de los entornos de los subprocesos (herramienta Bash, hooks, servidores MCP stdio): las credenciales de Anthropic y de los proveedores de nube, cualquier otra variable que Claude Code reconozca como credencial y las credenciales incrustadas en las URL de los registros de paquetes. El proceso padre de Claude conserva estas credenciales para las llamadas a la API, pero los procesos hijos no pueden leerlas, lo que reduce la exposición a ataques de inyección de prompts que intentan exfiltrar secretos mediante la expansión del shell. En v2.1.251 o posterior, la limpieza también elimina las propias variables de Claude Code que apuntan al almacén de configuración (como `CLAUDE_CONFIG_DIR`), por lo que un proceso hijo no puede localizar un directorio de configuración reubicado. No establezcas la limpieza si un subproceso necesita estas variables. En Linux, esto también ejecuta los subprocesos de Bash en un espacio de nombres de PID aislado para que no puedan leer los entornos de los procesos del host mediante `/proc`; como efecto secundario, `ps`, `pgrep` y `kill` no pueden ver los procesos del host ni enviarles señales. `claude-code-action` la establece automáticamente cuando se configura `allowed_non_write_users` |

397| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la instalación sincrónica de plugins. Cuando se excede, Claude Code procede sin plugins e registra un error. Sin predeterminado: sin esta variable, la instalación sincrónica espera hasta completarse |398| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Establécela en `1` en modo no interactivo (el flag `-p`) para esperar a que se complete la instalación de plugins antes de la primera consulta. Sin esto, los plugins se instalan en segundo plano y es posible que no estén disponibles en el primer turno. Combínala con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` para limitar la espera |

398| `CLAUDE_CODE_SYNC_SKILLS` | Establezca en `1` en modo no interactivo con la bandera `-p` para hacer que Claude Code descargue las skills habilitadas para su cuenta de claude.ai en esa ejecución y espere la lista de ellas, hasta `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, antes de ejecutar la primera consulta. Las descargas en sí se completan en segundo plano, y Claude espera la descarga de una skill cuando la invoca. Requiere autenticación de claude.ai. Las sesiones de terminal donde inicia sesión con su cuenta de claude.ai [descargan estas skills](/docs/es/skills#where-synced-skills-load) en `~/.claude/skills/synced/` y se resincronizan aproximadamente cada 10 minutos sin esta variable, por lo que establézcala solo cuando una ejecución `-p` necesite sus skills actuales en su primera consulta. Antes de v2.1.273, las sesiones de terminal las descargaban solo en una ejecución `-p` con esta variable establecida. El nombre de carpeta `synced` está [reservado para esta descarga](/docs/es/skills#where-skills-live). Antes de v2.1.227, las skills se descargaban en `~/.claude/skills/` directamente. Claude Code aplica [reglas adicionales a las skills descargadas](/docs/es/skills#how-synced-skills-behave), como no ejecutar sus comandos `!` en su máquina |399| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la instalación síncrona de plugins. Cuando se supera, Claude Code continúa sin plugins y registra un error. Sin valor predeterminado: sin esta variable, la instalación síncrona espera hasta completarse |

399| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la resincronización de skills que se ejecuta a mitad de sesión cuando una aplicación construida en el [Agent SDK](/docs/es/agent-sdk/typescript#query-object) recarga skills (predeterminado: 30000). Cuando se excede, la recarga continúa con cualquiera de las skills que haya llegado, y las descargas restantes se completan en segundo plano |400| `CLAUDE_CODE_SYNC_SKILLS` | Establécela en `1` en modo no interactivo con el flag `-p` para que Claude Code descargue los skills habilitados para tu cuenta de claude.ai en esa ejecución y espere la lista de ellos, hasta `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, antes de ejecutar la primera consulta. Las descargas en sí terminan en segundo plano, y Claude espera la descarga de un skill cuando invoca ese skill. Requiere autenticación de claude.ai. Las sesiones de terminal en las que inicias sesión con tu cuenta de claude.ai [descargan estos skills](/docs/es/skills#where-synced-skills-load) en `~/.claude/skills/synced/` y los vuelven a sincronizar aproximadamente cada 10 minutos sin esta variable, así que establécela solo cuando una ejecución con `-p` necesite tus skills actuales en su primera consulta. Antes de v2.1.273, las sesiones de terminal los descargaban solo en una ejecución con `-p` con esta variable establecida. El nombre de carpeta `synced` está [reservado para esta descarga](/docs/es/skills#where-skills-live). Antes de v2.1.227, los skills se descargaban directamente en `~/.claude/skills/`. Claude Code aplica [reglas adicionales a los skills descargados](/docs/es/skills#how-synced-skills-behave), como no ejecutar sus comandos `!` en tu máquina |

400| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para que la primera consulta espere la lista de skills inicial cuando `CLAUDE_CODE_SYNC_SKILLS` está establecido (predeterminado: 5000). Cuando se excede, la primera consulta se ejecuta con cualquiera de las skills que haya llegado. Las descargas se completan en segundo plano de cualquier manera, y Claude espera la descarga de una skill cuando la invoca |401| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Tiempo de espera en milisegundos para la resincronización de skills que se ejecuta a mitad de la sesión cuando una aplicación creada con el [Agent SDK](/docs/es/agent-sdk/typescript#query-object) recarga los skills (predeterminado: 30000). Cuando se supera, la recarga continúa con los skills que hayan llegado, y las descargas restantes terminan en segundo plano |

401| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Establezca en `false` para desabilitar el resaltado de sintaxis en la salida de diff. Útil cuando los colores interfieren con su configuración de terminal. Para también desabilitar el resaltado en bloques de código y vistas previas de archivos, use la configuración [`syntaxHighlightingDisabled`](/docs/es/settings-reference#syntaxhighlightingdisabled) |402| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Tiempo de espera en milisegundos durante el cual la primera consulta espera la lista inicial de skills cuando se establece `CLAUDE_CODE_SYNC_SKILLS` (predeterminado: 5000). Cuando se supera, la primera consulta se ejecuta con los skills que hayan llegado. Las descargas terminan en segundo plano en cualquier caso, y Claude espera la descarga de un skill cuando invoca ese skill |

402| `CLAUDE_CODE_TASK_LIST_ID` | Comparta una lista de tareas entre sesiones. Establezca el mismo ID en múltiples instancias de Claude Code para coordinar en una lista de tareas compartida, en [sesiones que tienen las herramientas Task](/docs/es/tools-reference#task-tool-availability). Consulte [Lista de tareas](/docs/es/interactive-mode#task-list) |403| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Establécela en `false` para desactivar el resaltado de sintaxis en la salida de diff. Útil cuando los colores interfieren con la configuración de tu terminal. Para desactivar también el resaltado en los bloques de código y en las vistas previas de archivos, usa el ajuste [`syntaxHighlightingDisabled`](/docs/es/settings-reference#syntaxhighlightingdisabled) |

403| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Anule, en milisegundos, cuánto tiempo una sesión no interactiva espera al salir para que su [equipo de agentes](/docs/es/agent-teams) termine de desmantelarse. Acepta 1000 a 60000; un valor fuera de rango se ignora y se aplica el predeterminado de 10000. Requiere Claude Code v2.1.206 o posterior |404| `CLAUDE_CODE_TASK_LIST_ID` | Comparte una lista de tareas entre sesiones. Establece el mismo ID en varias instancias de Claude Code para coordinarte en una lista de tareas compartida, en las [sesiones que tienen las herramientas Task](/docs/es/tools-reference#task-tool-availability). Consulta [Lista de tareas](/docs/es/interactive-mode#task-list) |

404| `CLAUDE_CODE_TMPDIR` | Anule el directorio temporal utilizado para archivos temporales internos. Claude Code añade `/claude-{uid}/` a esta ruta en Unix, o `/claude/` en Windows. Predeterminado: `/tmp` en macOS, `os.tmpdir()` en Linux y Windows. En macOS y Linux, los subprocesos Bash [arenados](/docs/es/sandboxing) reciben un `$TMPDIR` de alternativa corta bajo el predeterminado del sistema cuando su anulación es una ruta larga, ya que algunas herramientas fallan cuando las rutas temporales se vuelven demasiado largas. Los comandos Bash no arenados heredan su `$TMPDIR` de shell cuando se establece. En Windows nativo, cuando su shell no establece `$TMPDIR`, un comando Bash que hace referencia a `$TMPDIR` recibe su anulación, o `%TEMP%` cuando no ha establecido una. Los archivos temporales propios de Claude Code siempre usan su anulación. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |405| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Sobrescribe, en milisegundos, cuánto tiempo espera una sesión no interactiva al salir a que su [equipo de agentes](/docs/es/agent-teams) termine de desmontarse. Acepta de 1000 a 60000; un valor fuera de rango se ignora y se aplica el valor predeterminado de 10000. Requiere Claude Code v2.1.206 o posterior |

405| `CLAUDE_CODE_TMUX_TRUECOLOR` | Establezca en cualquier valor no vacío, como `1`, para permitir la salida de truecolor de 24 bits dentro de tmux. **Establecerlo en `0` o `false` aún permite truecolor**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para restaurar el fijación de 256 colores. De forma predeterminada, Claude Code fija a 256 colores cuando `$TMUX` está establecido porque tmux no pasa a través de secuencias de escape de truecolor a menos que esté configurado. Establezca esto después de agregar `set -ga terminal-overrides ',*:Tc'` a su `~/.tmux.conf`. Consulte [Configuración de terminal](/docs/es/terminal-config) para otras configuraciones de tmux |406| `CLAUDE_CODE_TMPDIR` | Sobrescribe el directorio temporal que se usa para los archivos temporales internos. Claude Code agrega `/claude-{uid}/` a esta ruta en Unix, o `/claude/` en Windows. Predeterminado: `/tmp` en macOS, `os.tmpdir()` en Linux y Windows. En macOS y Linux, los subprocesos de Bash en [sandbox](/docs/es/sandboxing) reciben un `$TMPDIR` de respaldo corto dentro del valor predeterminado del sistema cuando tu sobrescritura es una ruta larga, ya que algunas herramientas fallan cuando las rutas temporales son demasiado largas. Los comandos de Bash sin sandbox heredan el `$TMPDIR` de tu shell cuando está establecido. En Windows nativo, cuando tu shell no establece `$TMPDIR`, un comando de Bash que hace referencia a `$TMPDIR` recibe tu sobrescritura, o `%TEMP%` cuando no estableciste una. Los propios archivos temporales de Claude Code siempre usan tu sobrescritura. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

406| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | En Linux y WSL, establezca en una lista separada por comas de los tipos de procesos que Claude Code [excluye del tope de memoria de herramientas](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), como `mcp` o `lsp`. Establezca `none` para limitar cada tipo, o `all-new` para limitar solo comandos de herramientas Bash, PowerShell y Monitor. Claude Code mantiene comandos de herramientas Bash, PowerShell y Monitor bajo el tope cualquiera que sea lo que enumere. Requiere Claude Code v2.1.246 o posterior |407| `CLAUDE_CODE_TMUX_TRUECOLOR` | Establécela en cualquier valor no vacío, como `1`, para permitir la salida truecolor de 24 bits dentro de tmux. **Establecerla en `0` o `false` sigue permitiendo truecolor**, a diferencia de la mayoría de las variables de activación y desactivación; quita la variable para restaurar la limitación a 256 colores. De forma predeterminada, Claude Code limita la salida a 256 colores cuando `$TMUX` está establecida porque tmux no transmite las secuencias de escape truecolor a menos que esté configurado para hacerlo. Establécela después de agregar `set -ga terminal-overrides ',*:Tc'` a tu `~/.tmux.conf`. Consulta [Configuración de la terminal](/docs/es/terminal-config) para otros ajustes de tmux |

407| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | En Linux y WSL, establezca en un tamaño como `4G` para [limitar la memoria que los comandos de herramientas Bash y PowerShell pueden usar](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), y comandos de herramientas Monitor en v2.1.246 o posterior. Escriba el tamaño en dígitos simples, solo para un número de bytes o con un sufijo `K`, `M`, `G` o `T`. Establezca `0` u `off` para desactivar el tope. Una vez que el primer proceso que Claude Code inicia ha activado o desactivado el tope, un valor cambiado tiene efecto la próxima vez que inicia `claude`. Requiere Claude Code v2.1.233 o posterior |408| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | En Linux y WSL, establécela en una lista separada por comas de los tipos de procesos que Claude Code [excluye del límite de memoria de herramientas](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), como `mcp` o `lsp`. Establece `none` para limitar todos los tipos, o `all-new` para limitar solo los comandos de las herramientas Bash, PowerShell y Monitor. Claude Code mantiene los comandos de las herramientas Bash, PowerShell y Monitor bajo el límite independientemente de lo que enumeres. Requiere Claude Code v2.1.246 o posterior |

408| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Plazo en milisegundos antes de que Claude Code cancele un diálogo que reenvía a un cliente remoto como un [Remote Control](/docs/es/remote-control) o host SDK, o el diálogo de aprobación para un [mensaje entre sesiones retenido](/docs/es/cross-session-messaging#control-inbound-messages); los prompts de permiso y las preguntas `AskUserQuestion` usan sus propios flujos y no se rigen por él. En Claude Code v2.1.236 o posterior, también limita el [prompt de consentimiento de créditos de uso de Fable](/docs/es/model-config#fable-and-usage-credits) a mitad de sesión en una sesión que puede estar ejecutándose desatendida. [Controlar mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages) y [sesiones no interactivas](/docs/es/cross-session-messaging#non-interactive-sessions) cubren las reglas de vencimiento de mensaje retenido completo, incluidos los casos donde el plazo no se aplica. Anula la configuración [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry). `0` o un valor negativo desabilita el plazo |409| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | En Linux y WSL, establécela en un tamaño como `4G` para [limitar la memoria que pueden usar los comandos de las herramientas Bash y PowerShell](/docs/es/tools-reference#memory-limit-on-linux-and-wsl), y los comandos de la herramienta Monitor en v2.1.246 o posterior. Escribe el tamaño en dígitos simples, solos para un número de bytes o con un sufijo `K`, `M`, `G` o `T`. Establece `0` u `off` para desactivar el límite. Una vez que el primer proceso que inicia Claude Code haya activado o desactivado el límite, un valor modificado entra en vigor la próxima vez que inicies `claude`. Requiere Claude Code v2.1.233 o posterior |

409| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Use [Claude Platform on AWS](/docs/es/claude-platform-on-aws) |410| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Plazo en milisegundos antes de que Claude Code cancele un diálogo que reenvía a un cliente remoto, como un host de [Remote Control](/docs/es/remote-control) o del SDK, o el diálogo de aprobación de un [mensaje entre sesiones retenido](/docs/es/cross-session-messaging#control-inbound-messages); las solicitudes de permiso y las preguntas de `AskUserQuestion` usan sus propios flujos y no se rigen por él. En Claude Code v2.1.236 o posterior, también limita la [solicitud de consentimiento de créditos de uso de Fable](/docs/es/model-config#fable-and-usage-credits) a mitad de la sesión en una sesión que puede estar ejecutándose desatendida. [Controlar los mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages) y [Sesiones no interactivas](/docs/es/cross-session-messaging#non-interactive-sessions) cubren las reglas completas de vencimiento de los mensajes retenidos, incluidos los casos en los que no se aplica el plazo. Sobrescribe el ajuste [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry). `0` o un valor negativo desactiva el plazo |

410| `CLAUDE_CODE_USE_BEDROCK` | Use [Amazon Bedrock](/docs/es/amazon-bedrock) |411| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Usa [Claude Platform on AWS](/docs/es/claude-platform-on-aws) |

411| `CLAUDE_CODE_USE_FOUNDRY` | Use [Microsoft Foundry](/docs/es/microsoft-foundry) |412| `CLAUDE_CODE_USE_BEDROCK` | Usa [Amazon Bedrock](/docs/es/amazon-bedrock) |

412| `CLAUDE_CODE_USE_MANTLE` | Use el punto de conexión [Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock |413| `CLAUDE_CODE_USE_FOUNDRY` | Usa [Microsoft Foundry](/docs/es/microsoft-foundry) |

413| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Establezca en `1` para descubrir comandos personalizados, subagentes y estilos de salida usando APIs de archivo de Node.js en lugar de ripgrep. Establezca esto si el binario ripgrep agrupado no está disponible o está bloqueado en su entorno. No afecta las herramientas Grep o búsqueda de archivos |414| `CLAUDE_CODE_USE_MANTLE` | Usa el [endpoint de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock |

414| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Controla la herramienta PowerShell. En Windows sin Git Bash, la herramienta está habilitada automáticamente; establezca en `0` para deshabilitarla. En Windows con Git Bash instalado, la herramienta está activada de forma predeterminada para cuentas de claude.ai y Console; establezca en `1` para habilitarla en sesiones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, o `0` para desactivarla. En Linux, macOS y WSL, establezca en `1` para habilitarla, que requiere `pwsh` en su `PATH`. Cuando está habilitada en Windows, Claude puede ejecutar comandos PowerShell de forma nativa en lugar de enrutarlos a través de Git Bash. Consulte [Herramienta PowerShell](/docs/es/tools-reference#powershell-tool) |415| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Establécela en `1` para descubrir comandos personalizados, subagentes y estilos de salida mediante las API de archivos de Node.js en lugar de ripgrep. Establécela si el binario de ripgrep incluido no está disponible o está bloqueado en tu entorno. No afecta a Grep ni a las herramientas de búsqueda de archivos |

415| `CLAUDE_CODE_USE_VERTEX` | Use [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |416| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Controla la herramienta PowerShell. En Windows sin Git Bash, la herramienta se habilita automáticamente; establécela en `0` para deshabilitarla. En Windows con Git Bash instalado, la herramienta está activada de forma predeterminada para las cuentas de claude.ai y de Console; establécela en `1` para habilitarla en las sesiones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, o en `0` para desactivarla. En Linux, macOS y WSL, establécela en `1` para habilitarla, lo que requiere `pwsh` en tu `PATH`. Cuando está habilitada en Windows, Claude puede ejecutar comandos de PowerShell de forma nativa en lugar de enrutarlos a través de Git Bash. Consulta [Herramienta PowerShell](/docs/es/tools-reference#powershell-tool) |

416| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | Establezca en el número de milisegundos que [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) mantiene la respuesta de cada URL recuperada en caché. El predeterminado es `900000`, que es 15 minutos. Solo acepta dígitos simples; `0`, un decimal o cualquier otro deletreo mantiene el predeterminado. Claude Code lee el valor una vez por lanzamiento, por lo que un cambio en un bloque `env` de configuración se aplica cuando inicia `claude` a continuación. Requiere Claude Code v2.1.233 o posterior |417| `CLAUDE_CODE_USE_VERTEX` | Usa [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) |

417| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | Límite superior en milisegundos en cuánto tiempo [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) espera a que se descargue una página, incluidos los redireccionamientos que sigue. Una descarga que no se ha completado para entonces falla con un error de plazo. El predeterminado es `300000`, que es cinco minutos. Establezca en `0` para eliminar el límite. Solo acepta dígitos simples; un decimal o cualquier otro deletreo mantiene el predeterminado. Requiere Claude Code v2.1.268 o posterior |418| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | Establécela en el número de milisegundos durante los que [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) mantiene en caché la respuesta de cada URL obtenida. El valor predeterminado es `900000`, que son 15 minutos. Solo acepta dígitos simples; `0`, un decimal o cualquier otra forma de escritura mantiene el valor predeterminado. Claude Code lee el valor una vez por inicio, por lo que un cambio en un bloque `env` de la configuración se aplica la próxima vez que inicies `claude`. Requiere Claude Code v2.1.233 o posterior |

418| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Cuántos agentes ejecuta una única ejecución de [flujo de trabajo](/docs/es/workflows) a la vez, de `1` a `256`. De forma predeterminada, una ejecución ejecuta hasta 16 agentes a la vez, menos cuando Claude Code tiene menos CPUs disponibles; las llamadas `agent()` en cola esperan un espacio libre. La transcripción de cada agente en ejecución permanece en la memoria de Claude Code, por lo que los valores más altos aumentan el uso de memoria. Solo acepta dígitos simples; los valores fuera de rango y otros deletreos mantienen el predeterminado. Requiere Claude Code v2.1.269 o posterior |419| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | Límite superior en milisegundos de cuánto tiempo espera [WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) a que se descargue una página, incluidas las redirecciones que sigue. Una descarga que no se haya completado para entonces falla con un error de plazo. El valor predeterminado es `300000`, que son cinco minutos. Establécela en `0` para eliminar el límite. Solo acepta dígitos simples; un decimal o cualquier otra forma de escritura mantiene el valor predeterminado. Requiere Claude Code v2.1.268 o posterior |

419| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Límite superior en milisegundos en cuánto tiempo un agente de [flujo de trabajo](/docs/es/workflows) espera a que comience la primera respuesta de un hermano con el mismo prefijo antes de enviar su propia primera solicitud. Cuando un fan-out inicia varios agentes que comparten un [prefijo de caché de prompt](/docs/es/workflows#prompt-caching-in-a-fan-out), Claude Code mantiene todos excepto el primer agente durante hasta este tiempo para que el resto lea el prefijo en caché en lugar de procesarlo sin caché. Predeterminado `5000`. Establezca en `0` para desabilitar la espera. Cuando `DISABLE_PROMPT_CACHING` está establecido, los agentes nunca esperan. Requiere Claude Code v2.1.229 o posterior |420| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Cuántos agentes ejecuta a la vez una sola ejecución de un [flujo de trabajo](/docs/es/workflows), de `1` a `256`. De forma predeterminada, una ejecución ejecuta hasta 16 agentes a la vez, menos cuando Claude Code tiene menos CPU disponibles; las llamadas a `agent()` en cola esperan a que haya un espacio libre. La transcripción de cada agente en ejecución permanece en la memoria de Claude Code, por lo que los valores más altos aumentan el uso de memoria. Solo admite dígitos simples; los valores fuera de rango y otras formas de escribirlos mantienen el valor predeterminado. Requiere Claude Code v2.1.269 o posterior |

420| `CLAUDE_CONFIG_DIR` | Anule el directorio de configuración (predeterminado: `~/.claude`). Toda la configuración, historial de sesiones y plugins se almacenan bajo esta ruta. Para credenciales, consulte [dónde Claude Code almacena credenciales](/docs/es/authentication#credential-management). Útil para ejecutar múltiples cuentas lado a lado: por ejemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |421| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Límite superior, en milisegundos, de cuánto tiempo espera un agente de un [flujo de trabajo](/docs/es/workflows) a que comience la primera respuesta de un agente hermano con el mismo prefijo antes de enviar su propia primera solicitud. Cuando una distribución en abanico inicia varios agentes que comparten un [prefijo de caché de prompts](/docs/es/workflows#prompt-caching-in-a-fan-out), Claude Code retiene a todos menos al primer agente hasta este tiempo para que el resto lea el prefijo almacenado en caché en lugar de que cada uno lo procese sin caché. Valor predeterminado: `5000`. Establécela en `0` para desactivar la espera. Cuando `DISABLE_PROMPT_CACHING` está establecida, los agentes nunca esperan. Requiere Claude Code v2.1.229 o posterior |

421| `CLAUDE_DISABLE_ADOPT` | Establezca en `1` para detener el trabajo de fondo en vuelo en lugar de llevarlo cuando envía una sesión a segundo plano presionando `←` o con [`/background`](/docs/es/agent-view#from-inside-a-session). Claude Code le solicita que confirme antes de enviar a segundo plano, luego detiene las tareas que de otra manera se llevarían. Requiere Claude Code v2.1.195 o posterior |422| `CLAUDE_CONFIG_DIR` | Sobrescribe el directorio de configuración (predeterminado: `~/.claude`). Toda la configuración, el historial de sesiones y los plugins se almacenan en esta ruta. Para las credenciales, consulta [dónde almacena Claude Code las credenciales](/docs/es/authentication#credential-management). Útil para ejecutar varias cuentas en paralelo: por ejemplo, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

422| `CLAUDE_EFFORT` | Se establece automáticamente en subprocesos de herramienta Bash y comandos hook al [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) en vigor cuando comienza el subproceso: `low`, `medium`, `high`, `xhigh` o `max`. Coincide con el campo `effort.level` pasado a [hooks](/docs/es/hooks). Solo se establece cuando el modelo actual admite el parámetro de esfuerzo |423| `CLAUDE_DISABLE_ADOPT` | Establécela en `1` para detener el trabajo en segundo plano en curso en lugar de conservarlo cuando envías una sesión a segundo plano presionando `←` o con [`/background`](/docs/es/agent-view#from-inside-a-session). Claude Code te pide confirmación antes de enviarla a segundo plano y luego detiene las tareas que de otro modo se conservarían. Requiere Claude Code v2.1.195 o posterior |

423| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Establezca en `1` para forzar la habilitación del perro guardián de inactividad de transmisión a nivel de byte, o establezca en `0` para forzar su deshabilitación. `0` también desactiva el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs) en las conexiones donde se ejecuta ese plazo. Cuando no está establecido, el perro guardián está habilitado de forma predeterminada para conexiones directas de API de Anthropic y [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y para respuestas de transmisión en conexiones de [puerta de enlace](/docs/es/gateways) alcanzadas a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`; antes de v2.1.222 no se ejecutaba en esas conexiones de puerta de enlace, por lo que el perro guardián a nivel de evento podría informar un estancamiento allí incluso mientras se llegaban pings de mantenimiento. Para tiempos de espera y cómo interactúan los temporizadores, consulte [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |424| `CLAUDE_EFFORT` | Se establece automáticamente en los subprocesos de la herramienta Bash y en los comandos de hooks con el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) vigente cuando se inicia el subproceso: `low`, `medium`, `high`, `xhigh` o `max`. Coincide con el campo `effort.level` que se pasa a los [hooks](/docs/es/hooks). Solo se establece cuando el modelo actual admite el parámetro de esfuerzo |

424| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Establezca en `1` para habilitar el perro guardián de inactividad de transmisión a nivel de byte en respuestas `vnd.amazon.eventstream` de Amazon Bedrock, que también habilita el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs) en solicitudes de transmisión de Bedrock. Desactivado de forma predeterminada. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |425| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Establécela en `1` para forzar la activación del watchdog de inactividad de streaming a nivel de bytes, o en `0` para forzar su desactivación. `0` también desactiva el [plazo del primer byte](/docs/es/network-config#streaming-idle-watchdogs) en las conexiones donde se aplica ese plazo. Cuando no está establecida, el watchdog está activado de forma predeterminada para las conexiones directas a la API de Anthropic y a [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y para las respuestas en streaming en conexiones a un [gateway](/docs/es/gateways) alcanzado mediante `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`; antes de v2.1.222 no se ejecutaba en esas conexiones a gateways, por lo que el watchdog a nivel de eventos podía informar de un bloqueo allí incluso mientras llegaban pings de keep-alive. Para los tiempos de espera y cómo interactúan los temporizadores, consulta [Watchdogs de inactividad de streaming](/docs/es/network-config#streaming-idle-watchdogs) |

425| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Establezca en `0` para forzar la deshabilitación del perro guardián de inactividad de transmisión a nivel de evento, o establezca en `1` para forzar su habilitación. Cuando no está establecido, el perro guardián está activado de forma predeterminada para todos los proveedores. Antes de v2.1.196, el predeterminado sin establecer estaba controlado por servidor en la API directa de Anthropic y desactivado en otros proveedores. Configure el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; para los otros temporizadores de estancamiento que se ejecutan junto a este, consulte [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |426| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Establécela en `1` para activar el watchdog de inactividad de streaming a nivel de bytes en las respuestas `vnd.amazon.eventstream` de Amazon Bedrock, lo que también activa el [plazo del primer byte](/docs/es/network-config#streaming-idle-watchdogs) en las solicitudes en streaming de Bedrock. Desactivada de forma predeterminada. Configura el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

426| `CLAUDE_ENV_FILE` | Ruta a un script de shell cuyo contenido Claude Code ejecuta antes de cada comando Bash en el mismo proceso de shell, para que las exportaciones en el archivo sean visibles para el comando. Use para persistir activación de virtualenv o conda entre comandos. También se rellena dinámicamente por hooks [SessionStart](/docs/es/hooks#persist-environment-variables), [Setup](/docs/es/hooks#setup), [CwdChanged](/docs/es/hooks#cwdchanged) y [FileChanged](/docs/es/hooks#filechanged) |427| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Establécela en `0` para forzar la desactivación del watchdog de inactividad de streaming a nivel de eventos, o en `1` para forzar su activación. Cuando no está establecida, el watchdog está activado de forma predeterminada para todos los proveedores. Antes de v2.1.196, el valor predeterminado sin establecer lo controlaba el servidor en la API directa de Anthropic y estaba desactivado en otros proveedores. Configura el tiempo de espera con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; para los otros temporizadores de bloqueo que se ejecutan junto con este, consulta [Watchdogs de inactividad de streaming](/docs/es/network-config#streaming-idle-watchdogs) |

427| `CLAUDE_JOB_DIR` | Se establece por Claude Code en cada [sesión de fondo](/docs/es/agent-view) en el directorio `~/.claude/jobs/<id>` de esa sesión. Los comandos de shell que la sesión ejecuta lo heredan. Escriba archivos de borrador en [`$CLAUDE_JOB_DIR/tmp`](/docs/es/agent-view#where-state-is-stored). Las llamadas `Write` y `Edit` de Claude allí no solicitan permiso, y el directorio se elimina cuando se elimina la sesión |428| `CLAUDE_ENV_FILE` | Ruta a un script de shell cuyo contenido Claude Code ejecuta antes de cada comando Bash en el mismo proceso de shell, de modo que las exportaciones del archivo sean visibles para el comando. Úsala para mantener la activación de virtualenv o conda entre comandos. También la rellenan dinámicamente los hooks [SessionStart](/docs/es/hooks#persist-environment-variables), [Setup](/docs/es/hooks#setup), [CwdChanged](/docs/es/hooks#cwdchanged) y [FileChanged](/docs/es/hooks#filechanged) |

428| `CLAUDE_PID` | Claude Code establece esto en su propio ID de proceso en los subprocesos que genera: comandos de herramientas Bash y PowerShell y comandos hook. En Linux, la integración de shell de la herramienta Bash lo usa para rechazar un patrón `pkill` que coincidiría con el proceso Claude Code en sí; consulte [la referencia de errores](/docs/es/errors#pkill-pattern-matches-the-claude-code-process). Léalo desde sus propios scripts para identificar o señalar deliberadamente el proceso Claude Code padre. Requiere Claude Code v2.1.214 o posterior |429| `CLAUDE_JOB_DIR` | Claude Code la establece en cada [sesión en segundo plano](/docs/es/agent-view) con el directorio `~/.claude/jobs/<id>` de esa sesión. Los comandos de shell que ejecuta la sesión la heredan. Escribe los archivos temporales en [`$CLAUDE_JOB_DIR/tmp`](/docs/es/agent-view#where-state-is-stored). Las llamadas `Write` y `Edit` de Claude allí no solicitan permiso, y el directorio se elimina cuando se elimina la sesión |

429| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefijo para nombres de sesión de [Remote Control](/docs/es/remote-control) generados automáticamente cuando no se proporciona un nombre explícito. El valor predeterminado es el nombre de host de su máquina, produciendo nombres como `myhost-graceful-unicorn`. La bandera CLI `--remote-control-session-name-prefix` establece el mismo valor para una única invocación |430| `CLAUDE_PID` | Claude Code la establece con su propio ID de proceso en los subprocesos que genera: los comandos de las herramientas Bash y PowerShell y los comandos de hooks. En Linux, la integración de shell de la herramienta Bash la usa para rechazar un patrón de `pkill` que coincidiría con el propio proceso de Claude Code; consulta [la referencia de errores](/docs/es/errors#pkill-pattern-matches-the-claude-code-process). Léela desde tus propios scripts para identificar o enviar señales deliberadamente al proceso padre de Claude Code. Requiere Claude Code v2.1.214 o posterior |

430| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Plazo en milisegundos para el primer byte de respuesta de una solicitud de transmisión, en las conexiones donde se ejecuta el [plazo de primer byte](/docs/es/network-config#streaming-idle-watchdogs). Para cómo Claude Code lo fija, el tiempo adicional que agrega para cuerpos de solicitud grandes y cómo elige el plazo cuando deja esto sin establecer, consulte [Sin respuesta de API](/docs/es/errors#no-response-from-api). Requiere Claude Code v2.1.242 o posterior |431| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefijo para los nombres de sesión de [Remote Control](/docs/es/remote-control) generados automáticamente cuando no se proporciona un nombre explícito. De forma predeterminada es el nombre de host de tu máquina, lo que produce nombres como `myhost-graceful-unicorn`. El flag de CLI `--remote-control-session-name-prefix` establece el mismo valor para una sola invocación |

431| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos antes de que los perros guardianes de inactividad de transmisión a nivel de evento y byte cierren una conexión estancada. Cuando establece esta variable explícitamente, el mínimo es `300000` (5 minutos); los valores más bajos se fijan silenciosamente al mínimo para absorber pausas de pensamiento extendido y almacenamiento en búfer de proxy, y el perro guardián a nivel de byte limita el valor a 30 minutos. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` tiene prioridad sobre esta variable para ese perro guardián. Para los valores predeterminados sin establecer por perro guardián, consulte [Perros guardianes de inactividad de transmisión](/docs/es/network-config#streaming-idle-watchdogs) |432| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Plazo en milisegundos para el primer byte de respuesta de una solicitud en streaming, en las conexiones donde se aplica el [plazo del primer byte](/docs/es/network-config#streaming-idle-watchdogs). Para saber cómo lo limita Claude Code, el tiempo adicional que agrega para cuerpos de solicitud grandes y cómo elige el plazo cuando no la estableces, consulta [No response from API](/docs/es/errors#no-response-from-api). Requiere Claude Code v2.1.242 o posterior |

432| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Eliminado en v2.1.260 y ahora es un no-op. Anteriormente limitaba cuánto tiempo un [comando de shell de fondo](/docs/es/interactive-mode#background-bash-commands) que un [subagente](/docs/es/sub-agents) iniciaba podía ejecutarse, en milisegundos, con un predeterminado de 60 minutos. Consulte [las reglas de vida útil del comando de fondo](/docs/es/tools-reference#background-commands) |433| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Tiempo de espera en milisegundos antes de que los watchdogs de inactividad de streaming a nivel de eventos y de bytes cierren una conexión bloqueada. Cuando estableces esta variable explícitamente, el mínimo es `300000` (5 minutos); los valores inferiores se ajustan silenciosamente para absorber pausas prolongadas de pensamiento y el almacenamiento en búfer de proxies, y el watchdog a nivel de bytes limita el valor a 30 minutos. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` tiene precedencia sobre esta variable para el watchdog a nivel de bytes. Para los valores predeterminados sin establecer de cada watchdog, consulta [Watchdogs de inactividad de streaming](/docs/es/network-config#streaming-idle-watchdogs) |

433| `DEBUG` | Establezca en `1` para habilitar el modo de depuración, equivalente a lanzar con [`--debug`](/docs/es/cli-reference#cli-flags). Los registros de depuración se escriben en `~/.claude/debug/<session-id>.txt`, o en la ruta establecida por `CLAUDE_CODE_DEBUG_LOGS_DIR`. Solo los valores verdaderos `1`, `true`, `yes` y `on` habilitan el modo de depuración, por lo que patrones de espacio de nombres como `DEBUG=express:*` establecidos para otras herramientas no lo desencadenan |434| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Se eliminó en v2.1.260 y ahora no tiene efecto. Anteriormente limitaba cuánto tiempo, en milisegundos, podía ejecutarse un [comando de shell en segundo plano](/docs/es/interactive-mode#background-bash-commands) iniciado por un [subagente](/docs/es/sub-agents), con un valor predeterminado de 60 minutos. Consulta [las reglas de duración de los comandos en segundo plano](/docs/es/tools-reference#background-commands) |

434| `DISABLE_AUTOUPDATER` | Establezca en `1` para desabilitar las actualizaciones automáticas de fondo. El manual `claude update` aún funciona. Use `DISABLE_UPDATES` para bloquear ambos |435| `DEBUG` | Establécela en `1` para activar el modo de depuración, equivalente a iniciar con [`--debug`](/docs/es/cli-reference#cli-flags). Los registros de depuración se escriben en `~/.claude/debug/<session-id>.txt`, o en la ruta establecida por `CLAUDE_CODE_DEBUG_LOGS_DIR`. Solo los valores verdaderos `1`, `true`, `yes` y `on` activan el modo de depuración, por lo que los patrones de espacios de nombres como `DEBUG=express:*` establecidos para otras herramientas no lo activan |

435| `DISABLE_AUTO_COMPACT` | Establezca en `1` para desabilitar la compactación automática cuando se acerca al límite de contexto. El comando manual `/compact` permanece disponible. Use cuando desee control explícito sobre cuándo ocurre la compactación. Anula la configuración [`autoCompactEnabled`](/docs/es/settings-reference#autocompactenabled) |436| `DISABLE_AUTOUPDATER` | Establécela en `1` para desactivar las actualizaciones automáticas en segundo plano. `claude update` manual sigue funcionando. Usa `DISABLE_UPDATES` para bloquear ambas |

436| `DISABLE_COMPACT` | Establezca en `1` para desabilitar toda la compactación: tanto la compactación automática como el comando manual `/compact` |437| `DISABLE_AUTO_COMPACT` | Establécela en `1` para desactivar la compactación automática al acercarse al límite de contexto. El comando manual `/compact` sigue disponible. Úsala cuando quieras un control explícito sobre cuándo se produce la compactación. Sobrescribe el ajuste [`autoCompactEnabled`](/docs/es/settings-reference#autocompactenabled) |

437| `DISABLE_COST_WARNINGS` | Establezca en `1` para desabilitar mensajes de advertencia de costo |438| `DISABLE_COMPACT` | Establécela en `1` para desactivar toda la compactación: tanto la compactación automática como el comando manual `/compact` |

438| `DISABLE_DOCTOR_COMMAND` | Establezca en `1` para ocultar la skill [`/doctor`](/docs/es/commands#all-commands) de verificación de configuración y su alias `/checkup`. Útil para implementaciones administradas donde los usuarios no deben ejecutar diagnósticos de configuración desde una sesión. No afecta el comando de terminal `claude doctor`. Antes de v2.1.205, esta variable ocultaba la pantalla de diagnósticos `/doctor` |439| `DISABLE_COST_WARNINGS` | Establécela en `1` para desactivar los mensajes de advertencia de costos |

439| `DISABLE_ERROR_REPORTING` | Establezca en cualquier valor no vacío, como `1`, para optar por no participar en informes de errores. **Establecerlo en `0` o `false` aún opta por no participar**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para volver a activar los informes de errores |440| `DISABLE_DOCTOR_COMMAND` | Establécela en `1` para ocultar el skill de revisión de configuración [`/doctor`](/docs/es/commands#all-commands) y su alias `/checkup`. Útil en despliegues administrados donde los usuarios no deberían ejecutar diagnósticos de configuración desde una sesión. No afecta al comando de terminal `claude doctor`. Antes de v2.1.205, esta variable ocultaba el comando de la pantalla de diagnóstico `/doctor` |

440| `DISABLE_EXTRA_USAGE_COMMAND` | Establezca en `1` para ocultar el comando `/usage-credits` que permite a los usuarios comprar uso adicional más allá de límites de velocidad |441| `DISABLE_ERROR_REPORTING` | Establécela en cualquier valor no vacío, como `1`, para excluirte del informe de errores. **Establecerla en `0` o `false` también te excluye**, a diferencia de la mayoría de las variables de activación/desactivación; elimina la variable para volver a activar el informe de errores |

441| `DISABLE_FEEDBACK_COMMAND` | Establezca en `1` para desabilitar el comando `/feedback` y [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior). También desabilita `/bug` y `/share`, que informan a través de la misma ruta; antes de v2.1.212 eran alias de `/feedback`, por lo que el comando se deshabilitaba bajo cada nombre. El nombre anterior `DISABLE_BUG_COMMAND` también se acepta |442| `DISABLE_EXTRA_USAGE_COMMAND` | Establécela en `1` para ocultar el comando `/usage-credits` que permite a los usuarios comprar uso adicional más allá de los rate limits |

442| `DISABLE_GROWTHBOOK` | Establezca en `1` o `true` para desabilitar la obtención de banderas de características de GrowthBook y usar valores predeterminados de código para cada bandera. Esto hace que [Remote Control](/docs/es/remote-control#requirements) y las otras [características que necesitan obtención de banderas de características](#features-that-need-feature-flag-fetching) no estén disponibles. Establecerlo en `0` o `false` deja la obtención activada. El registro de eventos de telemetría permanece activado a menos que `DISABLE_TELEMETRY` también esté establecido |443| `DISABLE_FEEDBACK_COMMAND` | Establécela en `1` para desactivar el comando `/feedback` y los [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior). También desactiva `/bug` y `/share`, que informan por la misma vía; antes de v2.1.212 eran alias de `/feedback`, por lo que el comando quedaba desactivado con todos sus nombres. También se acepta el nombre anterior `DISABLE_BUG_COMMAND` |

443| `DISABLE_INSTALLATION_CHECKS` | Establezca en `1` para desabilitar advertencias de instalación. Use solo cuando administre manualmente la ubicación de instalación, ya que esto puede enmascarar problemas con instalaciones estándar |444| `DISABLE_GROWTHBOOK` | Establécela en `1` o `true` para desactivar la obtención de feature flags de GrowthBook y usar los valores predeterminados del código para cada flag. Esto hace que [Remote Control](/docs/es/remote-control#requirements) y las demás [funciones que necesitan la obtención de feature flags](#features-that-need-feature-flag-fetching) no estén disponibles. Establecerla en `0` o `false` deja la obtención activada. El registro de eventos de telemetría sigue activado a menos que también se establezca `DISABLE_TELEMETRY` |

444| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Establezca en `1` para ocultar el comando `/install-github-app`. Ya está oculto cuando se usan proveedores de terceros (Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry) |445| `DISABLE_INSTALLATION_CHECKS` | Establécela en `1` para desactivar las advertencias de instalación. Úsala solo cuando administres manualmente la ubicación de instalación, ya que esto puede ocultar problemas con las instalaciones estándar |

445| `DISABLE_INTERLEAVED_THINKING` | Establezca en `1` para evitar enviar el encabezado beta de pensamiento intercalado. Útil cuando su puerta de enlace LLM o proveedor no admite [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |446| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Establécela en `1` para ocultar el comando `/install-github-app`. Ya está oculto cuando se usan proveedores de terceros (Amazon Bedrock, Agent Platform de Google Cloud o Microsoft Foundry) |

446| `DISABLE_LOGIN_COMMAND` | Establezca en `1` para ocultar el comando `/login`. Útil cuando la autenticación se maneja externamente a través de claves de API o `apiKeyHelper` |447| `DISABLE_INTERLEAVED_THINKING` | Establécela en `1` para evitar el envío del encabezado beta de pensamiento intercalado. Útil cuando tu gateway de LLM o proveedor no admite el [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

447| `DISABLE_LOGOUT_COMMAND` | Establezca en `1` para ocultar el comando `/logout` |448| `DISABLE_LOGIN_COMMAND` | Establécela en `1` para ocultar el comando `/login`. Útil cuando la autenticación se gestiona externamente mediante claves de API o `apiKeyHelper` |

448| `DISABLE_PROMPT_CACHING` | Establezca en `1` para desabilitar [almacenamiento en caché de prompt](/docs/es/prompt-caching#disable-prompt-caching) para todos los modelos (tiene prioridad sobre configuraciones por modelo) |449| `DISABLE_LOGOUT_COMMAND` | Establécela en `1` para ocultar el comando `/logout` |

449| `DISABLE_PROMPT_CACHING_FABLE` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para modelos Fable |450| `DISABLE_PROMPT_CACHING` | Establécela en `1` para desactivar la [caché de prompts](/docs/es/prompt-caching#disable-prompt-caching) para todos los modelos (tiene precedencia sobre la configuración por modelo) |

450| `DISABLE_PROMPT_CACHING_HAIKU` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para el [modelo Haiku predeterminado](/docs/es/prompt-caching#disable-prompt-caching), dondequiera que se ejecute |451| `DISABLE_PROMPT_CACHING_FABLE` | Establécela en `1` para desactivar la caché de prompts para los modelos Fable |

451| `DISABLE_PROMPT_CACHING_OPUS` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para el [modelo Opus predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |452| `DISABLE_PROMPT_CACHING_HAIKU` | Establécela en `1` para desactivar la caché de prompts para el [modelo Haiku predeterminado](/docs/es/prompt-caching#disable-prompt-caching), dondequiera que se ejecute |

452| `DISABLE_PROMPT_CACHING_SONNET` | Establezca en `1` para desabilitar el almacenamiento en caché de prompt para el [modelo Sonnet predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |453| `DISABLE_PROMPT_CACHING_OPUS` | Establécela en `1` para desactivar la caché de prompts para el [modelo Opus predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |

453| `DISABLE_TELEMETRY` | Establezca en cualquier valor no vacío, como `1`, para optar por no participar en telemetría. **Establecerlo en `0` o `false` aún opta por no participar**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para volver a activar la telemetría. Los eventos de telemetría no incluyen datos de usuario como código, rutas de archivo o comandos Bash. También desabilita [obtención de banderas de características](#features-that-need-feature-flag-fetching). Consulte [Desactivar telemetría para su organización](/docs/es/managed-settings#turn-telemetry-off-for-your-organization) |454| `DISABLE_PROMPT_CACHING_SONNET` | Establécela en `1` para desactivar la caché de prompts para el [modelo Sonnet predeterminado](/docs/es/prompt-caching#disable-prompt-caching) |

454| `DISABLE_UPDATES` | Establezca en `1` para bloquear todas las actualizaciones, incluido el manual `claude update` y `claude install`. Más estricto que `DISABLE_AUTOUPDATER`. Use cuando distribuya Claude Code a través de sus propios canales y los usuarios no deben auto-actualizar |455| `DISABLE_TELEMETRY` | Establécela en cualquier valor no vacío, como `1`, para excluirte de la telemetría. **Establecerla en `0` o `false` también te excluye**, a diferencia de la mayoría de las variables de activación/desactivación; elimina la variable para volver a activar la telemetría. Los eventos de telemetría no incluyen datos de usuario como código, rutas de archivos o comandos Bash. También desactiva la [obtención de feature flags](#features-that-need-feature-flag-fetching). Consulta [Desactivar la telemetría para tu organización](/docs/es/managed-settings#turn-telemetry-off-for-your-organization) |

455| `DISABLE_UPGRADE_COMMAND` | Establezca en `1` para ocultar el comando `/upgrade` |456| `DISABLE_UPDATES` | Establécela en `1` para bloquear todas las actualizaciones, incluidos `claude update` y `claude install` manuales. Más estricta que `DISABLE_AUTOUPDATER`. Úsala cuando distribuyas Claude Code a través de tus propios canales y los usuarios no deban actualizarlo por su cuenta |

456| `DO_NOT_TRACK` | Establezca en `1` para optar por no participar en telemetría, con el mismo efecto que `DISABLE_TELEMETRY`, incluido en [obtención de banderas de características](#features-that-need-feature-flag-fetching). Claude Code lee esta variable como un booleano estándar, por lo que `0` deja la telemetría activada, y la honra como la convención entre herramientas reconocida por muchas CLI de desarrollador |457| `DISABLE_UPGRADE_COMMAND` | Establécela en `1` para ocultar el comando `/upgrade` |

457| `ENABLE_BETA_TRACING_DETAILED` | Establezca en `1`, junto con `BETA_TRACING_ENDPOINT`, para activar [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta), que agrega atributos que llevan contenido y el tramo `claude_code.hook`. Las sesiones CLI interactivas también requieren que su organización esté en la lista blanca para el beta. Ambas variables se ignoran en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |458| `DO_NOT_TRACK` | Establécela en `1` para excluirte de la telemetría, con el mismo efecto que `DISABLE_TELEMETRY`, incluido sobre la [obtención de feature flags](#features-that-need-feature-flag-fetching). Claude Code lee esta variable como un booleano estándar, por lo que `0` deja la telemetría activada, y la respeta como la convención entre herramientas que reconocen muchas CLI para desarrolladores |

458| `ENABLE_CLAUDEAI_MCP_SERVERS` | Establezca en `false` para evitar que Claude Code obtenga [servidores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai). Habilitado de forma predeterminada para usuarios con sesión iniciada. Para desabilitar por proyecto u organización, establezca [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors) en configuración en su lugar |459| `ENABLE_BETA_TRACING_DETAILED` | Establécela en `1`, junto con `BETA_TRACING_ENDPOINT`, para activar el [rastreo beta detallado](/docs/es/monitoring-usage#traces-beta), que agrega atributos de span con contenido y el span `claude_code.hook`. Las sesiones interactivas de la CLI también requieren que tu organización esté en la lista de permitidos para la beta. Ambas variables se ignoran en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env) |

459| `ENABLE_PROMPT_CACHING_1H` | Establezca en `1` para solicitar un [TTL de caché de prompt](/docs/es/prompt-caching#cache-lifetime) de 1 hora en lugar del predeterminado de 5 minutos. Destinado a usuarios de clave de API, [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai), [Microsoft Foundry](/docs/es/microsoft-foundry) y [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Los usuarios de suscripción dentro del uso incluido reciben el TTL de 1 hora automáticamente en la [conversación principal](/docs/es/prompt-caching#which-ttl-each-request-gets). Los usuarios de suscripción que extraen [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) pueden establecerlo para mantener el TTL de 1 hora. Las escrituras de caché de 1 hora se facturan a una tasa más alta. Para elegir el TTL por depósito de solicitud en su lugar, use `CLAUDE_CODE_PROMPT_CACHE_TTL` y `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, que tienen prioridad sobre esta variable |460| `ENABLE_CLAUDEAI_MCP_SERVERS` | Establécela en `false` para que Claude Code deje de obtener los [servidores MCP de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai). Activada de forma predeterminada para los usuarios con sesión iniciada. Para desactivarla por proyecto o por organización, establece en su lugar [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors) en la configuración |

460| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Use `ENABLE_PROMPT_CACHING_1H` en su lugar |461| `ENABLE_PROMPT_CACHING_1H` | Establécela en `1` para solicitar un [TTL de caché de prompts](/docs/es/prompt-caching#cache-lifetime) de 1 hora en lugar de los 5 minutos predeterminados. Pensada para usuarios de clave de API, [Amazon Bedrock](/docs/es/amazon-bedrock), [Agent Platform de Google Cloud](/docs/es/google-vertex-ai), [Microsoft Foundry](/docs/es/microsoft-foundry) y [Claude Platform on AWS](/docs/es/claude-platform-on-aws). Los usuarios con suscripción dentro del uso incluido reciben automáticamente el TTL de 1 hora en la [conversación principal](/docs/es/prompt-caching#which-ttl-each-request-gets). Los usuarios con suscripción que consumen [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) pueden establecerla para mantener el TTL de 1 hora. Las escrituras en caché de 1 hora se facturan a una tarifa más alta. Para elegir el TTL por grupo de solicitudes, usa en su lugar `CLAUDE_CODE_PROMPT_CACHE_TTL` y `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, que tienen precedencia sobre esta variable |

461| `ENABLE_TOOL_SEARCH` | Controla [búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search). Sin establecer, Claude Code difiere todas las herramientas MCP de forma predeterminada. Aún las carga por adelantado en modelos de Google Cloud's Agent Platform anteriores a la generación Claude 4.5, en una implementación de Microsoft Foundry alojada en Azure, y cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte. `true` siempre difiere y envía el encabezado beta, excepto en esos mismos modelos de Agent Platform e implementaciones de Microsoft Foundry; las solicitudes fallan en proxies que no admiten `tool_reference`. `auto` carga por adelantado cuando las definiciones de herramientas caben dentro del 10% del contexto. `auto:N` establece un umbral personalizado, como `auto:5` para 5%. `false` carga todas las herramientas por adelantado. Un valor que establece usted mismo se ignora cuando `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` está establecido. Antes de v2.1.221, Claude Code deshabilitaba la búsqueda de herramientas para todos los modelos en Google Cloud's Agent Platform a menos que estableciera esta variable en `true` |462| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Obsoleta. Usa `ENABLE_PROMPT_CACHING_1H` en su lugar |

462| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Establezca en cualquier valor no vacío, como `1`, para hacer que Claude Code deje de reintentar en errores de sobrecarga repetida para cada modelo cuando no hay ningún modelo de alternativa configurado. **Establecerlo en `0` o `false` aún habilita esto**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para restaurar el comportamiento de reintento predeterminado. Sin él, Claude Code deja de reintentar de esta manera en modelos que reconoce como modelos Opus, Fable o Mythos cuando se autentica con una clave de API o un [proveedor de terceros](/docs/es/third-party-integrations) en lugar de una suscripción a Claude. En Claude Code v2.1.160 o posterior, Claude Code cambia a su [cadena de modelo de alternativa](/docs/es/model-config#fallback-model-chains) configurada en errores de sobrecarga repetida para cualquier modelo principal, por lo que esta variable no afecta el cambio a un modelo de alternativa |463| `ENABLE_TOOL_SEARCH` | Controla [MCP Tool Search](/docs/es/mcp#scale-with-mcp-tool-search). Sin establecer, Claude Code difiere todas las herramientas MCP de forma predeterminada. Aun así, las carga por adelantado en los modelos de Agent Platform de Google Cloud anteriores a la generación Claude 4.5, en un despliegue de Microsoft Foundry alojado en Azure y cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte. `true` siempre difiere y envía el encabezado beta, excepto en esos mismos modelos de Agent Platform y despliegues de Microsoft Foundry; las solicitudes fallan en proxies que no admiten `tool_reference`. `auto` carga por adelantado cuando las definiciones de herramientas caben dentro del 10% del contexto. `auto:N` establece un umbral personalizado, como `auto:5` para el 5%. `false` carga todas las herramientas por adelantado. Un valor que establezcas tú mismo se ignora cuando `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` está establecida. Antes de v2.1.221, Claude Code desactivaba la búsqueda de herramientas para todos los modelos en Agent Platform de Google Cloud a menos que establecieras esta variable en `true` |

463| `FORCE_AUTOUPDATE_PLUGINS` | Establezca en `1` para forzar actualizaciones automáticas de plugins incluso cuando el auto-actualizador principal está deshabilitado a través de `DISABLE_AUTOUPDATER` |464| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Establécela en cualquier valor no vacío, como `1`, para que Claude Code deje de reintentar ante errores de sobrecarga repetidos para cada modelo cuando no hay un modelo de respaldo configurado. **Establecerla en `0` o `false` también activa esto**, a diferencia de la mayoría de las variables de activación/desactivación; elimina la variable para restaurar el comportamiento de reintento predeterminado. Sin ella, Claude Code deja de reintentar de esta manera en los modelos que reconoce como Opus, Fable o Mythos cuando te autenticas con una clave de API o un [proveedor de terceros](/docs/es/third-party-integrations) en lugar de una suscripción a Claude. En Claude Code v2.1.160 o posterior, Claude Code cambia a tu [cadena de modelos de respaldo](/docs/es/model-config#fallback-model-chains) configurada ante errores de sobrecarga repetidos para cualquier modelo principal, por lo que esta variable no afecta al cambio a un modelo de respaldo |

464| `FORCE_HYPERLINK` | Establezca en `1` para habilitar hipervínculos OSC 8 clicables cuando su terminal los admite pero no se detectan automáticamente, o `0` para deshabilitarlos. Sin establecer, Claude Code habilita hipervínculos solo cuando detecta soporte de terminal. Claude Code analiza este valor como un número, no un booleano, por lo que un valor como `false`, `no` u `off` habilita hipervínculos en lugar de deshabilitarlos. El [distintivo de PR o solicitud de fusión](/docs/es/interactive-mode#pr-review-status) de pie de página se renderiza como un hipervínculo incluso cuando Claude Code no puede detectar soporte de terminal, como sobre SSH. Establezca `0` para renderizar el distintivo como texto simple |465| `FORCE_AUTOUPDATE_PLUGINS` | Establécela en `1` para forzar las actualizaciones automáticas de plugins incluso cuando el actualizador automático principal está desactivado mediante `DISABLE_AUTOUPDATER` |

465| `FORCE_PROMPT_CACHING_5M` | Establezca en `1` para forzar el TTL de caché de prompt de 5 minutos incluso cuando el TTL de 1 hora se aplicaría de otra manera. Anula `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H` y las configuraciones `promptCacheTtl` y `subagentPromptCacheTtl` |466| `FORCE_HYPERLINK` | Establécela en `1` para activar los hipervínculos OSC 8 en los que se puede hacer clic cuando tu terminal los admite pero no se detecta automáticamente, o en `0` para desactivarlos. Cuando no está establecida, Claude Code activa los hipervínculos solo cuando detecta que la terminal los admite. Claude Code interpreta este valor como un número, no como un booleano, por lo que un valor como `false`, `no` u `off` activa los hipervínculos en lugar de desactivarlos. La [insignia de PR o merge request](/docs/es/interactive-mode#pr-review-status) del pie de página se muestra como hipervínculo incluso cuando Claude Code no puede detectar que la terminal los admite, como a través de SSH. Establece `0` para mostrar la insignia como texto sin formato |

466| `HTTP_PROXY` | Especifique el servidor proxy HTTP para conexiones de red |467| `FORCE_PROMPT_CACHING_5M` | Establécela en `1` para forzar el TTL de caché de prompts de 5 minutos incluso cuando de otro modo se aplicaría el TTL de 1 hora. Sobrescribe `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H` y los ajustes `promptCacheTtl` y `subagentPromptCacheTtl` |

467| `HTTPS_PROXY` | Especifique el servidor proxy HTTPS para conexiones de red |468| `HTTP_PROXY` | Especifica el servidor proxy HTTP para las conexiones de red |

468| `IS_DEMO` | Establezca en cualquier valor no vacío, como `1`, para habilitar el modo de demostración: oculta su correo electrónico y nombre de organización del encabezado y la salida `/status`, y omite la incorporación. **Establecerlo en `0` o `false` aún habilita el modo de demostración**, a diferencia de la mayoría de variables de activación/desactivación; desestablezca la variable para desactivarlo. Útil cuando transmite o graba una sesión |469| `HTTPS_PROXY` | Especifica el servidor proxy HTTPS para las conexiones de red |

469| `MAX_MCP_OUTPUT_TOKENS` | Número máximo de tokens permitidos en respuestas de herramientas MCP. Claude Code muestra una advertencia cuando la salida excede 10,000 tokens. Las herramientas que declaran [`anthropic/maxResultSizeChars`](/docs/es/mcp#raise-the-limit-for-a-specific-tool) usan ese límite de caracteres para contenido de texto en su lugar, pero el contenido de imagen de esas herramientas aún está sujeto a esta variable (predeterminado: 25000) |470| `IS_DEMO` | Establécela en cualquier valor no vacío, como `1`, para activar el modo de demostración: oculta tu correo electrónico y el nombre de tu organización del encabezado y de la salida de `/status`, y omite la incorporación. **Establecerla en `0` o `false` también activa el modo de demostración**, a diferencia de la mayoría de las variables de activación/desactivación; elimina la variable para desactivarlo. Útil al transmitir o grabar una sesión |

470| `MAX_STRUCTURED_OUTPUT_RETRIES` | Número de intentos que Claude Code permite cuando la respuesta del modelo falla en la validación contra el [`--json-schema`](/docs/es/cli-reference#cli-flags) en modo no interactivo con la bandera `-p`; después de esos muchos intentos fallidos sin salida válida, la ejecución falla. El mismo tope se aplica cuando la salida estructurada de un subagente de [flujo de trabajo](/docs/es/workflows) falla en la validación. El valor predeterminado es 5, un primer intento más cuatro reintentos |471| `MAX_MCP_OUTPUT_TOKENS` | Número máximo de tokens permitidos en las respuestas de herramientas MCP. Claude Code muestra una advertencia cuando la salida supera los 10,000 tokens. Las herramientas que declaran [`anthropic/maxResultSizeChars`](/docs/es/mcp#raise-the-limit-for-a-specific-tool) usan en su lugar ese límite de caracteres para el contenido de texto, pero el contenido de imagen de esas herramientas sigue sujeto a esta variable (predeterminado: 25000) |

471| `MAX_THINKING_TOKENS` | Presupu esto de token fijo para [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code lo limita a un token por debajo de los tokens de salida máximos de la solicitud y nunca por debajo de 1,024. Consulte `CLAUDE_CODE_MAX_OUTPUT_TOKENS` para cómo se establece ese límite. Sin establecer y con el pensamiento habilitado, los modelos con [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) eligen su propia profundidad de pensamiento, y otros modelos usan el tope. Establezca en `0` para desabilitar el pensamiento en la API de Anthropic, excepto en Opus 5.5, Sonnet 5.5 y los modelos Fable, que no pueden tener el pensamiento deshabilitado. En [proveedores de terceros](/docs/es/third-party-integrations), `0` omite el parámetro `thinking` en su lugar. Con el pensamiento desactivado en la API de Anthropic, Claude Code envía esfuerzo `high` en lugar de un nivel más alto a modelos que sabe que [no aceptan esa combinación](/docs/es/errors#effort-isnt-available-with-thinking-turned-off), como Opus 5. Claude Code ignora valores distintos de cero en modelos de razonamiento adaptativo, excepto en los modelos donde `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` desactiva el razonamiento adaptativo |472| `MAX_STRUCTURED_OUTPUT_RETRIES` | Número de intentos que Claude Code permite cuando la respuesta del modelo no supera la validación contra el [`--json-schema`](/docs/es/cli-reference#cli-flags) en modo no interactivo con el flag `-p`; tras esa cantidad de intentos fallidos sin una salida válida, la ejecución falla. El mismo límite se aplica cuando la salida estructurada de un subagente de un [flujo de trabajo](/docs/es/workflows) no supera la validación. El valor predeterminado es 5: un primer intento más cuatro reintentos |

472| `MCP_CLIENT_SECRET` | Secreto de cliente de OAuth para servidores MCP que requieren [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials). Evita el prompt interactivo al agregar un servidor con `--client-secret` |473| `MAX_THINKING_TOKENS` | Presupuesto fijo de tokens para el [pensamiento extendido](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code lo limita a un token por debajo del máximo de tokens de salida de la solicitud y nunca por debajo de 1,024. Consulta `CLAUDE_CODE_MAX_OUTPUT_TOKENS` para saber cómo se establece ese límite. Cuando no está establecida y el pensamiento está activado, los modelos con [razonamiento adaptativo](/docs/es/model-config#adjust-effort-level) eligen su propia profundidad de pensamiento, y los demás modelos usan el límite. Establécela en `0` para desactivar el pensamiento en la API de Anthropic, excepto en Opus 5.5, Sonnet 5.5 y los modelos Fable, en los que no se puede desactivar el pensamiento. En [proveedores de terceros](/docs/es/third-party-integrations), `0` omite en su lugar el parámetro `thinking`. Con el pensamiento desactivado en la API de Anthropic, Claude Code envía el esfuerzo `high` en lugar de un nivel superior a los modelos que sabe que [no aceptan esa combinación](/docs/es/errors#effort-isnt-available-with-thinking-turned-off), como Opus 5. Claude Code ignora los valores distintos de cero en los modelos de razonamiento adaptativo, excepto en los modelos en los que `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` desactiva el razonamiento adaptativo |

473| `MCP_CONNECTION_NONBLOCKING` | Controla si el inicio espera a que se conecten los servidores MCP antes de la primera consulta. El inicio de MCP es no bloqueante de forma predeterminada: los servidores se conectan en segundo plano y sus herramientas se vuelven disponibles a medida que terminan. Establezca en `0` para hacer que Claude Code espere a que se conecten los servidores antes de la primera consulta. Los servidores configurados con [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral) aún hacen que el inicio espere independientemente, excepto cuando se sirven desde la [caché de descubrimiento](/docs/es/mcp#server-status-detail), ya que sus herramientas deben estar presentes cuando se construye el primer prompt. En modo no interactivo (`-p`) sin `--input-format stream-json`, Claude Code también espera a los servidores aún pendientes antes del primer turno independientemente de esta variable. Cuando pasa [`--mcp-config`](/docs/es/cli-reference#cli-flags) explícitamente, la espera tiene un plazo más largo; consulte esa entrada de bandera para la excepción de servidor en caché |474| `MCP_CLIENT_SECRET` | Secreto de cliente OAuth para los servidores MCP que requieren [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials). Evita la solicitud interactiva al agregar un servidor con `--client-secret` |

474| `MCP_CONNECT_TIMEOUT_MS` | Cuánto tiempo espera el inicio de MCP bloqueante, en milisegundos, para que se conecte el lote antes de tomar una instantánea de la lista de herramientas (predeterminado: 5000). Se aplica cuando `MCP_CONNECTION_NONBLOCKING=0` o para servidores marcados [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral). Los servidores aún pendientes en el plazo siguen conectándose en segundo plano. Distinto de `MCP_TIMEOUT`, que limita el intento de conexión de un servidor individual |475| `MCP_CONNECTION_NONBLOCKING` | Controla si el inicio espera a que los servidores MCP se conecten antes de la primera consulta. El inicio de MCP no es bloqueante de forma predeterminada: los servidores se conectan en segundo plano y sus herramientas quedan disponibles a medida que terminan. Establécela en `0` para que Claude Code espere a que los servidores se conecten antes de la primera consulta. Los servidores configurados con [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral) siguen haciendo que el inicio espere de todos modos, excepto cuando se sirven desde la [caché de descubrimiento](/docs/es/mcp#server-status-detail), ya que sus herramientas deben estar presentes cuando se construye el primer prompt. En modo no interactivo (`-p`) sin `--input-format stream-json`, Claude Code también espera a los servidores aún pendientes antes del primer turno, independientemente de esta variable. Cuando pasas [`--mcp-config`](/docs/es/cli-reference#cli-flags) explícitamente, la espera tiene un plazo más largo; consulta la entrada de ese flag para conocer la excepción de los servidores en caché |

475| `MCP_DISCOVERY_CACHE` | Activa o desactiva la [caché de descubrimiento de MCP](/docs/es/mcp#server-status-detail). Con la caché activada, un servidor HTTP o SSE remoto que ha usado antes puede mostrar el [estado `cached`](/docs/es/mcp#server-status-detail), y Claude Code se conecta en su primera llamada de herramienta en lugar de al inicio. La caché está desactivada de forma predeterminada a menos que un lanzamiento gradual la haya habilitado para su cuenta. Establezca en `1` para activarla, o `0` para mantenerla desactivada incluso cuando el lanzamiento la ha habilitado. Antes de v2.1.238, la caché estaba activada de forma predeterminada. El estado `cached` requiere Claude Code v2.1.221 o posterior |476| `MCP_CONNECT_TIMEOUT_MS` | Cuánto tiempo, en milisegundos, espera el inicio bloqueante de MCP al lote de conexiones antes de tomar una instantánea de la lista de herramientas (predeterminado: 5000). Se aplica cuando `MCP_CONNECTION_NONBLOCKING=0` o para los servidores marcados con [`alwaysLoad: true`](/docs/es/mcp#exempt-a-server-from-deferral). Los servidores que siguen pendientes al cumplirse el plazo continúan conectándose en segundo plano. Distinta de `MCP_TIMEOUT`, que limita el intento de conexión de un servidor individual |

476| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Edad máxima, en segundos, de una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) (predeterminado: 14400, o 4 horas). En un inicio donde la entrada es más antigua que eso, Claude Code la descarta y conecta el servidor al inicio, como lo hace con la caché desactivada. Claude Code limita el valor a 7 días. Antes de v2.1.238, el predeterminado era 86400, o 24 horas, y Claude Code no limitaba el valor |477| `MCP_DISCOVERY_CACHE` | Activa o desactiva la [caché de descubrimiento de MCP](/docs/es/mcp#server-status-detail). Con la caché activada, un servidor HTTP o SSE remoto que hayas usado antes puede mostrar el [estado `cached`](/docs/es/mcp#server-status-detail), y Claude Code lo conecta en su primera llamada a herramienta en lugar de al inicio. La caché está desactivada de forma predeterminada a menos que un lanzamiento gradual la haya activado para tu cuenta. Establécela en `1` para activarla, o en `0` para mantenerla desactivada incluso cuando el lanzamiento la haya activado. Antes de v2.1.238, la caché estaba activada de forma predeterminada. El estado `cached` requiere Claude Code v2.1.221 o posterior |

477| `MCP_DISCOVERY_CACHE_STRIKES` | En un inicio donde una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) es más antigua que `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code la actualiza en segundo plano. Esta variable establece cuántas actualizaciones seguidas pueden fallar antes de que Claude Code descarte la entrada y conecte el servidor en el siguiente inicio en su lugar (predeterminado: 1). Aumente si su conexión de red se cae ocasionalmente, para que una actualización fallida no descarte la entrada. Requiere Claude Code v2.1.238 o posterior |478| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Antigüedad máxima, en segundos, de una entrada de la [caché de descubrimiento](/docs/es/mcp#server-status-detail) (predeterminado: 14400, o 4 horas). En un inicio en el que la entrada es más antigua, Claude Code la descarta y conecta el servidor al inicio, como lo hace con la caché desactivada. Claude Code limita el valor a 7 días. Antes de v2.1.238, el valor predeterminado era 86400, o 24 horas, y Claude Code no limitaba el valor |

478| `MCP_DISCOVERY_CACHE_TTL_S` | Segundos durante los cuales Claude Code usa una entrada de [caché de descubrimiento](/docs/es/mcp#server-status-detail) sin actualizarla (predeterminado: 900). En un inicio donde la entrada es más antigua que eso, Claude Code aún la usa pero la actualiza en segundo plano. Una vez que la entrada es más antigua que `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code la descarta en su lugar. Claude Code limita el valor a `MCP_DISCOVERY_CACHE_MAX_STALE_S`, que es 4 horas de forma predeterminada. Antes de v2.1.238, Claude Code no limitaba el valor |479| `MCP_DISCOVERY_CACHE_STRIKES` | En un inicio en el que una entrada de la [caché de descubrimiento](/docs/es/mcp#server-status-detail) es más antigua que `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code la actualiza en segundo plano. Esta variable establece cuántas actualizaciones seguidas pueden fallar antes de que Claude Code descarte la entrada y conecte el servidor en el siguiente inicio (predeterminado: 1). Auméntala si tu conexión de red se cae ocasionalmente, para que una sola actualización fallida no descarte la entrada. Requiere Claude Code v2.1.238 o posterior |

480| `MCP_DISCOVERY_CACHE_TTL_S` | Segundos durante los cuales Claude Code usa una entrada de la [caché de descubrimiento](/docs/es/mcp#server-status-detail) sin actualizarla (predeterminado: 900). En un inicio en el que la entrada es más antigua, Claude Code la sigue usando pero la actualiza en segundo plano. Una vez que la entrada es más antigua que `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code la descarta. Claude Code limita el valor a `MCP_DISCOVERY_CACHE_MAX_STALE_S`, que es de 4 horas de forma predeterminada. Antes de v2.1.238, Claude Code no limitaba el valor |

479| `MCP_OAUTH_CALLBACK_PORT` | Puerto fijo para la devolución de llamada de redirección de OAuth, como alternativa a `--callback-port` al agregar un servidor MCP con [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials) |481| `MCP_OAUTH_CALLBACK_PORT` | Puerto fijo para la devolución de llamada de redirección de OAuth, como alternativa a `--callback-port` al agregar un servidor MCP con [credenciales preconfiguradas](/docs/es/mcp#use-pre-configured-oauth-credentials) |

480| `MCP_PROTOCOL_NEGOTIATION` | Solo en el [tiempo de ejecución del cliente MCP v2](/docs/es/mcp#mcp-client-runtimes), si Claude Code sondea servidores para la revisión del protocolo MCP 2026-07-28. Establezca `auto` para sondear servidores HTTP, conector de claude.ai y stdio; un servidor que no responda al sondeo se conecta en el protocolo anterior en su lugar, como siempre lo hacen los servidores SSE y WebSocket. Establezca `legacy` para omitir el sondeo para cada servidor. Sin la variable, Claude Code sondea servidores HTTP, y también sondea servidores de conector de claude.ai en sesiones donde [obtiene banderas de características](#features-that-need-feature-flag-fetching). Cualquier otro valor se ignora con una advertencia en el registro de depuración. Requiere Claude Code v2.1.221 o posterior |482| `MCP_PROTOCOL_NEGOTIATION` | Solo en el [entorno de ejecución del cliente MCP v2](/docs/es/mcp#mcp-client-runtimes), indica si Claude Code sondea los servidores para la revisión del protocolo MCP 2026-07-28. Establece `auto` para sondear los servidores HTTP, de conectores de claude.ai y stdio; un servidor que no responde al sondeo se conecta en su lugar con el protocolo anterior, como siempre hacen los servidores SSE y WebSocket. Establece `legacy` para omitir el sondeo en todos los servidores. Sin la variable, Claude Code sondea los servidores HTTP y también los servidores de conectores de claude.ai en las sesiones en las que [obtiene feature flags](#features-that-need-feature-flag-fetching). Cualquier otro valor se ignora con una advertencia en el registro de depuración. Requiere Claude Code v2.1.221 o posterior |

481| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP remotos (HTTP/SSE) para conectar en paralelo durante el inicio (predeterminado: 20) |483| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP remotos (HTTP/SSE) que se conectan en paralelo durante el inicio (predeterminado: 20) |

482| `MCP_SDK_GENERATION` | Fije qué [tiempo de ejecución del cliente MCP](/docs/es/mcp#mcp-client-runtimes) este proceso se conecta a servidores MCP con: `v1`, construido en MCP TypeScript SDK 1.x, o `v2`, construido en [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Sin la variable, Claude Code usa v2, comenzando con las versiones enumeradas en esa sección. En Claude Code v2.1.221 o posterior, el tiempo de ejecución v2 verifica el emisor que un servidor MCP de OAuth devuelve en su respuesta de autorización y falla el inicio de sesión con un error que comienza `Issuer mismatch in authorization response` cuando no coincide. El tiempo de ejecución v1 no ejecuta esta verificación. Si establece un valor no reconocido, Claude Code lo ignora y escribe una advertencia en el registro de depuración. Claude Code lee el valor una vez por proceso. Requiere Claude Code v2.1.218 o posterior |484| `MCP_SDK_GENERATION` | Fija el [entorno de ejecución del cliente MCP](/docs/es/mcp#mcp-client-runtimes) con el que este proceso se conecta a los servidores MCP: `v1`, basado en MCP TypeScript SDK 1.x, o `v2`, basado en [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Sin la variable, Claude Code usa v2, a partir de las versiones indicadas en esa sección. En Claude Code v2.1.221 o posterior, el entorno de ejecución v2 comprueba el emisor que devuelve un servidor OAuth de MCP en su respuesta de autorización y hace fallar el inicio de sesión con un error que comienza por `Issuer mismatch in authorization response` cuando no coincide. El entorno de ejecución v1 no realiza esta comprobación. Si estableces un valor no reconocido, Claude Code lo ignora y escribe una advertencia en el registro de depuración. Claude Code lee el valor una vez por proceso. Requiere Claude Code v2.1.218 o posterior |

483| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP locales (stdio) para conectar en paralelo durante el inicio (predeterminado: 3) |485| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Número máximo de servidores MCP locales (stdio) que se conectan en paralelo durante el inicio (predeterminado: 3) |

484| `MCP_TIMEOUT` | Tiempo de espera en milisegundos para el inicio del servidor MCP (predeterminado: 30000, o 30 segundos) |486| `MCP_TIMEOUT` | Tiempo de espera en milisegundos para el inicio del servidor MCP (predeterminado: 30000, o 30 segundos) |

485| `MCP_TOOL_TIMEOUT` | Tiempo de espera en milisegundos para la ejecución de herramientas MCP (predeterminado: 100000000, aproximadamente 28 horas). Para un servidor HTTP, SSE o conector de claude.ai, cada solicitud también agota el tiempo después de 60 segundos de forma predeterminada; establezca esta variable, o el `timeout` por servidor, por encima de 60000 para aumentar ese límite por solicitud. Un valor más bajo aún acorta el tiempo de espera general de ejecución de herramientas pero deja el límite por solicitud en 60 segundos. Los servidores Stdio y WebSocket no tienen temporizador por solicitud. Un campo `timeout` por servidor en `.mcp.json` anula esto para ese servidor. Un `timeout` por servidor de al menos 1000 también establece la ventana de inactividad mínima para las llamadas de herramientas de ese servidor, por lo que `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` nunca las aborta antes; este piso requiere Claude Code v2.1.203 o posterior. Para la variable env, los valores por debajo de 1000 se fijan a un segundo; para el campo por servidor, los valores por debajo de 1000 se ignoran |487| `MCP_TOOL_TIMEOUT` | Tiempo de espera en milisegundos para la ejecución de herramientas MCP (predeterminado: 100000000, unas 28 horas). Para un servidor HTTP, SSE o de conector de claude.ai, cada solicitud también agota su tiempo de espera tras 60 segundos de forma predeterminada; establece esta variable, o el `timeout` por servidor, por encima de 60000 para aumentar ese límite por solicitud. Un valor más bajo sigue acortando el tiempo de espera general de ejecución de la herramienta, pero deja el límite por solicitud en 60 segundos. Los servidores stdio y WebSocket no tienen temporizador por solicitud. Un campo `timeout` por servidor en `.mcp.json` sobrescribe esto para ese servidor. Un `timeout` por servidor de al menos 1000 también establece la ventana de inactividad mínima para las llamadas a herramientas de ese servidor, de modo que `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` nunca las cancela antes; este mínimo requiere Claude Code v2.1.203 o posterior. Para la variable de entorno, los valores inferiores a 1000 se elevan a un segundo; para el campo por servidor, los valores inferiores a 1000 se ignoran |

486| `NO_PROXY` | Lista de dominios e IPs a los que se emitirán solicitudes directamente, omitiendo el proxy |488| `NO_PROXY` | Lista de dominios e IP a los que las solicitudes se enviarán directamente, omitiendo el proxy |

487| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Límite estándar del SDK de OpenTelemetry en la longitud del valor del atributo. Claude Code limita los atributos de telemetría que llevan contenido al menor de este y `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, para que el marcador de truncamiento permanezca dentro del límite del SDK. Claude Code lee las variantes `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` y `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` de la misma manera, y el valor más pequeño establecido se aplica a todas las señales. Requiere Claude Code v2.1.214 o posterior. Consulte [Monitoreo](/docs/es/monitoring-usage#common-configuration-variables) |489| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Límite estándar del SDK de OpenTelemetry sobre la longitud de los valores de atributos. Claude Code limita los atributos de telemetría con contenido al menor entre este valor y `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, de modo que el marcador de truncamiento quede dentro del límite del SDK. Claude Code lee las variantes `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` y `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` de la misma manera, y el menor valor establecido se aplica a todas las señales. Requiere Claude Code v2.1.214 o posterior. Consulta [Monitoreo](/docs/es/monitoring-usage#common-configuration-variables) |

488| `OTEL_LOG_ASSISTANT_RESPONSES` | Establezca en `1` para incluir el texto de respuesta del modelo en eventos de registro de OpenTelemetry `assistant_response`. Sin establecer, Claude Code usa el valor de `OTEL_LOG_USER_PROMPTS` en su lugar. Establezca en `0` para mantener las respuestas redactadas incluso cuando `OTEL_LOG_USER_PROMPTS` está establecido. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Requiere Claude Code v2.1.193 o posterior. Consulte [Monitoreo](/docs/es/monitoring-usage#assistant-response-event) |490| `OTEL_LOG_ASSISTANT_RESPONSES` | Establécela en `1` para incluir el texto de respuesta del modelo en los eventos de registro `assistant_response` de OpenTelemetry. Cuando no está establecida, Claude Code usa en su lugar el valor de `OTEL_LOG_USER_PROMPTS`. Establécela en `0` para mantener las respuestas ocultas incluso cuando `OTEL_LOG_USER_PROMPTS` está establecida. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Requiere Claude Code v2.1.193 o posterior. Consulta [Monitoreo](/docs/es/monitoring-usage#assistant-response-event) |

489| `OTEL_LOG_MANAGED_SETTINGS` | Establezca en `1` para agregar la configuración administrada redactada, y un resumen SHA-256 de la configuración antes de la redacción, a eventos de registro de OpenTelemetry `managed_settings_resolved`. Deshabilitado de forma predeterminada. Establézcalo en su shell, configuración de usuario o configuración administrada; un valor en configuración de proyecto o local no lo activa. Requiere Claude Code v2.1.274 o posterior. Consulte [Monitoreo](/docs/es/monitoring-usage#managed-settings-resolved-event) |491| `OTEL_LOG_MANAGED_SETTINGS` | Establécela en `1` para agregar la configuración administrada con datos ocultos, y un resumen SHA-256 de la configuración antes de ocultar los datos, a los eventos de registro `managed_settings_resolved` de OpenTelemetry. Desactivada de forma predeterminada. Establécela en tu shell, en la configuración de usuario o en la configuración administrada; un valor en la configuración de proyecto o local no la activa. Requiere Claude Code v2.1.274 o posterior. Consulta [Monitoreo](/docs/es/monitoring-usage#managed-settings-resolved-event) |

490| `OTEL_LOG_RAW_API_BODIES` | Emita JSON de solicitud y respuesta de API de Anthropic Messages como eventos de registro `api_request_body` / `api_response_body`. Establezca en `1` para cuerpos en línea truncados en el límite de contenido, o `file:<dir>` para escribir cuerpos sin truncar en disco y emitir una ruta `body_ref` en su lugar. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` configura el límite de contenido, 60 KB de forma predeterminada. Deshabilitado de forma predeterminada; los cuerpos incluyen el historial de conversación completo. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Consulte [Monitoreo](/docs/es/monitoring-usage#api-request-body-event) |492| `OTEL_LOG_RAW_API_BODIES` | Emite el JSON de solicitud y respuesta de la API Messages de Anthropic como eventos de registro `api_request_body` / `api_response_body`. Establécela en `1` para cuerpos en línea truncados en el límite de contenido, o en `file:<dir>` para escribir cuerpos sin truncar en el disco y emitir en su lugar una ruta `body_ref`. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` configura el límite de contenido, 60 KB de forma predeterminada. Desactivada de forma predeterminada; los cuerpos incluyen todo el historial de la conversación. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Consulta [Monitoreo](/docs/es/monitoring-usage#api-request-body-event) |

491| `OTEL_LOG_TOOL_CONTENT` | Establezca en `1` para incluir contenido de herramientas en el evento de tramo de OpenTelemetry `tool.output`. Los atributos de tramo llevan contenido de herramientas bajo [sus propias puertas](/docs/es/monitoring-usage#new-context-gates). Requiere [rastreo](/docs/es/monitoring-usage#traces-beta). Deshabilitado de forma predeterminada para proteger datos sensibles. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), aparte de los valores desactivados que esa sección describe. Consulte [Monitoreo](/docs/es/monitoring-usage#tool-output-span-event) |493| `OTEL_LOG_TOOL_CONTENT` | Establécela en `1` para incluir el contenido de las herramientas en el evento de span `tool.output` de OpenTelemetry. Los atributos de span llevan el contenido de las herramientas bajo [sus propios controles](/docs/es/monitoring-usage#new-context-gates). Requiere [rastreo](/docs/es/monitoring-usage#traces-beta). Desactivada de forma predeterminada para proteger los datos confidenciales. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), salvo los valores de desactivación que describe esa sección. Consulta [Monitoreo](/docs/es/monitoring-usage#tool-output-span-event) |

492| `OTEL_LOG_TOOL_DETAILS` | Establezca en `1` para incluir argumentos de entrada de herramientas; nombres de servidores MCP; nombres de flujos de trabajo creados por el usuario; cadenas de error sin procesar en fallos de herramientas; la `category` de rechazo en eventos `api_refusal`; nombres reales de agentes, skills, plugins y servidores MCP en [métricas de costo y token](/docs/es/monitoring-usage#cost-counter); y otros detalles de herramientas en métricas, rastreos y registros de OpenTelemetry. Deshabilitado de forma predeterminada para proteger PII. Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), aparte de los valores desactivados que esa sección describe. Consulte [Monitoreo](/docs/es/monitoring-usage) |494| `OTEL_LOG_TOOL_DETAILS` | Establécela en `1` para incluir los argumentos de entrada de las herramientas; los nombres de los servidores MCP; los nombres de los flujos de trabajo creados por el usuario; las cadenas de error sin procesar en los fallos de herramientas; la `category` de rechazo en los eventos `api_refusal`; los nombres reales de agentes, skills, plugins y servidores MCP en las [métricas de costos y tokens](/docs/es/monitoring-usage#cost-counter); y otros detalles de las herramientas en las métricas, trazas y registros de OpenTelemetry. Desactivada de forma predeterminada para proteger la información de identificación personal. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), salvo los valores de desactivación que describe esa sección. Consulta [Monitoreo](/docs/es/monitoring-usage) |

493| `OTEL_LOG_USER_PROMPTS` | Establezca en `1` para incluir texto de prompt de usuario en rastreos y registros de OpenTelemetry. Deshabilitado de forma predeterminada (los prompts se redactan). Establézcalo en su shell, configuración de usuario o configuración administrada. Se ignora en [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), aparte de los valores desactivados que esa sección describe. Consulte [Monitoreo](/docs/es/monitoring-usage) |495| `OTEL_LOG_USER_PROMPTS` | Establécela en `1` para incluir el texto de los prompts del usuario en las trazas y registros de OpenTelemetry. Desactivada de forma predeterminada (los prompts se ocultan). Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), salvo los valores de desactivación que describe esa sección. Consulta [Monitoreo](/docs/es/monitoring-usage) |

494| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Establezca en `false` para excluir UUID de cuenta de atributos de métricas (predeterminado: incluido). Consulte [Monitoreo](/docs/es/monitoring-usage) |496| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Establécela en `false` para excluir el UUID de la cuenta de los atributos de las métricas (predeterminado: incluido). Consulta [Monitoreo](/docs/es/monitoring-usage) |

495| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Establezca en `true` para incluir el punto de entrada de sesión en atributos de métricas (predeterminado: excluido). Agregado en v2.1.152. Consulte [Monitoreo](/docs/es/monitoring-usage) |497| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Establécela en `true` para incluir el punto de entrada de la sesión en los atributos de las métricas (predeterminado: excluido). Se agregó en v2.1.152. Consulta [Monitoreo](/docs/es/monitoring-usage) |

496| `OTEL_METRICS_INCLUDE_REPOSITORY` | Establezca en `true` para etiquetar métricas y eventos de OpenTelemetry con atributos `vcs.*` que identifiquen el repositorio de la sesión (predeterminado: excluido). Requiere Claude Code v2.1.269 o posterior. Consulte [Atributos de repositorio](/docs/es/monitoring-usage#repository-attributes) |498| `OTEL_METRICS_INCLUDE_REPOSITORY` | Establécela en `true` para etiquetar las métricas y eventos de OpenTelemetry con atributos `vcs.*` que identifican el repositorio de la sesión (predeterminado: excluido). Requiere Claude Code v2.1.269 o posterior. Consulta [Atributos del repositorio](/docs/es/monitoring-usage#repository-attributes) |

497| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | A partir de v2.1.161, Claude Code adjunta claves `OTEL_RESOURCE_ATTRIBUTES` a etiquetas de punto de datos de métrica. Establezca en `false` para excluirlas (predeterminado: incluidas). Consulte [Monitoreo](/docs/es/monitoring-usage#multi-team-organization-support) |499| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | A partir de v2.1.161, Claude Code adjunta las claves de `OTEL_RESOURCE_ATTRIBUTES` a las etiquetas de los puntos de datos de las métricas. Establécela en `false` para excluirlas (predeterminado: incluidas). Consulta [Monitoreo](/docs/es/monitoring-usage#multi-team-organization-support) |

498| `OTEL_METRICS_INCLUDE_SESSION_ID` | Establezca en `false` para excluir ID de sesión de atributos de métricas (predeterminado: incluido). Consulte [Monitoreo](/docs/es/monitoring-usage) |500| `OTEL_METRICS_INCLUDE_SESSION_ID` | Establécela en `false` para excluir el ID de sesión de los atributos de las métricas (predeterminado: incluido). Consulta [Monitoreo](/docs/es/monitoring-usage) |

499| `OTEL_METRICS_INCLUDE_VERSION` | Establezca en `true` para incluir la versión de Claude Code en atributos de métricas (predeterminado: excluido). Consulte [Monitoreo](/docs/es/monitoring-usage) |501| `OTEL_METRICS_INCLUDE_VERSION` | Establécela en `true` para incluir la versión de Claude Code en los atributos de las métricas (predeterminado: excluida). Consulta [Monitoreo](/docs/es/monitoring-usage) |

500| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Anule el presupuesto de caracteres para metadatos de skills mostrados a la [herramienta Skill](/docs/es/skills#control-who-invokes-a-skill). El presupuesto se escala dinámicamente al 1% de la ventana de contexto, con un alternativa de 8,000 caracteres. Nombre heredado mantenido para compatibilidad hacia atrás |502| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Sobrescribe el presupuesto de caracteres para los metadatos de skills que se muestran a la [herramienta Skill](/docs/es/skills#control-who-invokes-a-skill). El presupuesto se escala dinámicamente al 1% de la ventana de contexto, con un valor de respaldo de 8,000 caracteres. Se mantiene el nombre heredado por compatibilidad con versiones anteriores |

501| `TASK_MAX_OUTPUT_LENGTH` | Eliminado en v2.1.277 y ahora es un no-op, junto con la herramienta `TaskOutput` que dimensionaba. Anteriormente establecía el número máximo de caracteres de la salida de una [tarea de fondo](/docs/es/tools-reference#background-commands) que la herramienta `TaskOutput` mantenía. Claude lee el archivo de salida de una tarea de fondo con `Read` en su lugar |503| `TASK_MAX_OUTPUT_LENGTH` | Se eliminó en v2.1.277 y ahora no tiene efecto, junto con la herramienta `TaskOutput` cuyo tamaño definía. Anteriormente establecía el número máximo de caracteres de la salida de una [tarea en segundo plano](/docs/es/tools-reference#background-commands) que conservaba la herramienta `TaskOutput`. Claude lee en su lugar el archivo de salida de una tarea en segundo plano con `Read` |

502| `USE_BUILTIN_RIPGREP` | Establezca en `0` para usar `rg` instalado en el sistema en lugar de `rg` incluido con Claude Code |504| `USE_BUILTIN_RIPGREP` | Establécela en `0` para usar el `rg` instalado en el sistema en lugar del `rg` incluido con Claude Code |

503| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Anule la región para Claude 3.5 Haiku cuando use Google Cloud's Agent Platform |505| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Sobrescribe la región para Claude 3.5 Haiku al usar Agent Platform de Google Cloud |

504| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Anule la región para Claude 3.5 Sonnet cuando use Google Cloud's Agent Platform |506| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Sobrescribe la región para Claude 3.5 Sonnet al usar Agent Platform de Google Cloud |

505| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Anule la región para Claude 3.7 Sonnet cuando use Google Cloud's Agent Platform |507| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Sobrescribe la región para Claude 3.7 Sonnet al usar Agent Platform de Google Cloud |

506| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Anule la región para Claude 4.0 Opus cuando use Google Cloud's Agent Platform |508| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Sobrescribe la región para Claude 4.0 Opus al usar Agent Platform de Google Cloud |

507| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Anule la región para Claude 4.0 Sonnet cuando use Google Cloud's Agent Platform |509| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Sobrescribe la región para Claude 4.0 Sonnet al usar Agent Platform de Google Cloud |

508| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Anule la región para Claude 4.1 Opus cuando use Google Cloud's Agent Platform |510| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Sobrescribe la región para Claude 4.1 Opus al usar Agent Platform de Google Cloud |

509| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Anule la región para Claude Opus 4.5 cuando use Google Cloud's Agent Platform |511| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Sobrescribe la región para Claude Opus 4.5 al usar Agent Platform de Google Cloud |

510| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Anule la región para Claude Sonnet 4.5 cuando use Google Cloud's Agent Platform |512| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Sobrescribe la región para Claude Sonnet 4.5 al usar Agent Platform de Google Cloud |

511| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Anule la región para Claude Opus 4.6 cuando use Google Cloud's Agent Platform |513| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Sobrescribe la región para Claude Opus 4.6 al usar Agent Platform de Google Cloud |

512| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Anule la región para Claude Sonnet 4.6 cuando use Google Cloud's Agent Platform |514| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Sobrescribe la región para Claude Sonnet 4.6 al usar Agent Platform de Google Cloud |

513| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Anule la región para Claude Opus 4.7 cuando use Google Cloud's Agent Platform |515| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Sobrescribe la región para Claude Opus 4.7 al usar Agent Platform de Google Cloud |

514| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Anule la región para Claude Opus 4.8 cuando use Google Cloud's Agent Platform |516| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Sobrescribe la región para Claude Opus 4.8 al usar Agent Platform de Google Cloud |

515| `VERTEX_REGION_CLAUDE_5_5_OPUS` | Anule la región para Claude Opus 5.5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.280 |517| `VERTEX_REGION_CLAUDE_5_5_OPUS` | Sobrescribe la región para Claude Opus 5.5 al usar Agent Platform de Google Cloud. Se agregó en v2.1.280 |

516| `VERTEX_REGION_CLAUDE_5_5_SONNET` | Anule la región para Claude Sonnet 5.5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.284 |518| `VERTEX_REGION_CLAUDE_5_5_SONNET` | Sobrescribe la región para Claude Sonnet 5.5 al usar Agent Platform de Google Cloud. Se agregó en v2.1.284 |

517| `VERTEX_REGION_CLAUDE_5_OPUS` | Anule la región para Claude Opus 5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.219 |519| `VERTEX_REGION_CLAUDE_5_OPUS` | Sobrescribe la región para Claude Opus 5 al usar Agent Platform de Google Cloud. Se agregó en v2.1.219 |

518| `VERTEX_REGION_CLAUDE_5_SONNET` | Anule la región para Claude Sonnet 5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.197 |520| `VERTEX_REGION_CLAUDE_5_SONNET` | Sobrescribe la región para Claude Sonnet 5 al usar Agent Platform de Google Cloud. Se agregó en v2.1.197 |

519| `VERTEX_REGION_CLAUDE_FABLE_5` | Anule la región para Claude Fable 5 cuando use Google Cloud's Agent Platform. Agregado en v2.1.170 |521| `VERTEX_REGION_CLAUDE_FABLE_5` | Sobrescribe la región para Claude Fable 5 al usar Agent Platform de Google Cloud. Se agregó en v2.1.170 |

520| `VERTEX_REGION_CLAUDE_FABLE_5_1` | Anule la región para Claude Fable 5.1 cuando use Google Cloud's Agent Platform. Agregado en v2.1.257 |522| `VERTEX_REGION_CLAUDE_FABLE_5_1` | Sobrescribe la región para Claude Fable 5.1 al usar Agent Platform de Google Cloud. Se agregó en v2.1.257 |

521| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Anule la región para Claude Haiku 4.5 cuando use Google Cloud's Agent Platform |523| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Sobrescribe la región para Claude Haiku 4.5 al usar Agent Platform de Google Cloud |

522 524 

523También se admiten variables estándar del exportador de OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` y variantes específicas de señal). Consulte [Monitoreo](/docs/es/monitoring-usage) para detalles de configuración.525También se admiten las variables estándar del exportador de OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` y las variantes específicas de cada señal). Consulta [Monitoreo](/docs/es/monitoring-usage) para ver los detalles de configuración.

524 526 

525Establezca `CLAUDE_CODE_ENABLE_TELEMETRY` y las variables de OpenTelemetry que activan la exportación, eligen su destino o capturan contenido en su shell, configuración de usuario o configuración administrada. Claude Code [las ignora en configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), aparte de los valores desactivados que esa sección describe. `OTEL_RESOURCE_ATTRIBUTES` y el intervalo de exportación, tiempo de espera y variables de compresión, como `OTEL_METRIC_EXPORT_INTERVAL`, aún se aplican desde configuración de proyecto y local.527Establece `CLAUDE_CODE_ENABLE_TELEMETRY` y las variables de OpenTelemetry que activan la exportación, eligen su destino o capturan contenido en tu shell, en la configuración de usuario o en la configuración administrada. Claude Code [las ignora en la configuración de proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env), salvo los valores de desactivación que describe esa sección. `OTEL_RESOURCE_ATTRIBUTES` y las variables de intervalo, tiempo de espera y compresión de la exportación, como `OTEL_METRIC_EXPORT_INTERVAL`, siguen aplicándose desde la configuración de proyecto y local.

526 528 

527<h2 id="features-that-need-feature-flag-fetching">529<h2 id="features-that-need-feature-flag-fetching">

528 Características que necesitan obtención de banderas de características530 Características que necesitan obtención de banderas de características

errors.md +120 −100

Details

187| `<model>'s safeguards flagged this message` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |187| `<model>'s safeguards flagged this message` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |

188| `<model>'s safeguards flagged this session` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |188| `<model>'s safeguards flagged this session` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |

189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |

190| `API Error: Output blocked by content filtering policy` | [Errores de solicitud](#output-blocked-by-content-filtering-policy) |

190| `Installation was killed before it could finish (exit code 137)` | [Errores de instalación](#installation-was-killed-before-it-could-finish) |191| `Installation was killed before it could finish (exit code 137)` | [Errores de instalación](#installation-was-killed-before-it-could-finish) |

191| `The connection dropped while downloading the update` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |192| `The connection dropped while downloading the update` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |

192| `Download timed out: exceeded the total deadline` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |193| `Download timed out: exceeded the total deadline` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |


402* Una [respuesta en streaming de Amazon Bedrock con un content-type inesperado](#bedrock-streaming-response-has-an-unexpected-content-type), porque el gateway o proxy que reescribe la respuesta reescribiría el reintento de la misma manera. Requiere Claude Code v2.1.208 o posterior.403* Una [respuesta en streaming de Amazon Bedrock con un content-type inesperado](#bedrock-streaming-response-has-an-unexpected-content-type), porque el gateway o proxy que reescribe la respuesta reescribiría el reintento de la misma manera. Requiere Claude Code v2.1.208 o posterior.

403* Un reintento sin streaming de una solicitud en streaming fallida que obtiene un estado de éxito pero [ningún mensaje de la API de Claude en el cuerpo](#api-returned-an-empty-or-malformed-response). Claude Code termina el turno con ese error.404* Un reintento sin streaming de una solicitud en streaming fallida que obtiene un estado de éxito pero [ningún mensaje de la API de Claude en el cuerpo](#api-returned-an-empty-or-malformed-response). Claude Code termina el turno con ese error.

404* Una solicitud que la verificación de políticas de tu organización rechazó, que aparece como una línea `API Error:` con el mensaje de denegación. Los administradores de tu organización configuran la verificación con [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), una función de Claude Enterprise, y el mensaje termina con las instrucciones que configuraron o, de forma predeterminada, te indica que te comuniques con ellos. Claude Code no reenvía la solicitud denegada al mismo modelo ni a un [modelo de respaldo](/docs/es/model-config#fallback-model-chains), porque la denegación se refiere al contenido de la solicitud y no al modelo. Antes de v2.1.239, Claude Code podía reenviar una solicitud denegada, sin streaming o en un modelo de respaldo configurado, antes de mostrarte la denegación.405* Una solicitud que la verificación de políticas de tu organización rechazó, que aparece como una línea `API Error:` con el mensaje de denegación. Los administradores de tu organización configuran la verificación con [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), una función de Claude Enterprise, y el mensaje termina con las instrucciones que configuraron o, de forma predeterminada, te indica que te comuniques con ellos. Claude Code no reenvía la solicitud denegada al mismo modelo ni a un [modelo de respaldo](/docs/es/model-config#fallback-model-chains), porque la denegación se refiere al contenido de la solicitud y no al modelo. Antes de v2.1.239, Claude Code podía reenviar una solicitud denegada, sin streaming o en un modelo de respaldo configurado, antes de mostrarte la denegación.

406* Una respuesta que el filtro de contenido de salida de la API bloqueó. Claude Code muestra [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) de inmediato y no reintenta ni reenvía esa solicitud.

405 407 

406<h3 id="what-you-see-while-claude-code-retries-or-waits">408<h3 id="what-you-see-while-claude-code-retries-or-waits">

407 Lo que ves mientras Claude Code reintenta o espera409 Lo que ves mientras Claude Code reintenta o espera


432| [`CLAUDE_CODE_MAX_RETRIES`](/docs/es/env-vars) | 10 | Número de reintentos. Limitado a 15 a partir de v2.1.186; a partir de v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el valor predeterminado y elimina el límite. Redúcelo para que los fallos aparezcan más rápido en scripts. |434| [`CLAUDE_CODE_MAX_RETRIES`](/docs/es/env-vars) | 10 | Número de reintentos. Limitado a 15 a partir de v2.1.186; a partir de v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` aumenta el valor predeterminado y elimina el límite. Redúcelo para que los fallos aparezcan más rápido en scripts. |

433| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars) | sin establecer | Establécelo en `1` en sesiones desatendidas, como trabajos de CI, para reintentar errores de capacidad `429` y `529` indefinidamente en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que reporta un límite de gasto o créditos de uso agotados, incluso uno de un [límite de gasto de un gateway](#spend-limit-reached) que se restablece según un calendario. Antes de v2.1.239, el watchdog los reintentaba indefinidamente. Para solicitudes en modo rápido, consulta [Handle rate limits](/docs/es/fast-mode#handle-rate-limits). En v2.1.199 o posterior, también aumenta el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones perdidas, a 300, aproximadamente tres horas de retroceso, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable explícitamente. |435| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars) | sin establecer | Establécelo en `1` en sesiones desatendidas, como trabajos de CI, para reintentar errores de capacidad `429` y `529` indefinidamente en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que reporta un límite de gasto o créditos de uso agotados, incluso uno de un [límite de gasto de un gateway](#spend-limit-reached) que se restablece según un calendario. Antes de v2.1.239, el watchdog los reintentaba indefinidamente. Para solicitudes en modo rápido, consulta [Handle rate limits](/docs/es/fast-mode#handle-rate-limits). En v2.1.199 o posterior, también aumenta el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones perdidas, a 300, aproximadamente tres horas de retroceso, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable explícitamente. |

434| [`API_TIMEOUT_MS`](/docs/es/env-vars) | 600000 | Tiempo de espera por solicitud en milisegundos. Auméntalo para redes lentas o proxies. También limita cuánto tiempo espera Claude Code los encabezados de respuesta, como se describe en [No response from API](#no-response-from-api). |436| [`API_TIMEOUT_MS`](/docs/es/env-vars) | 600000 | Tiempo de espera por solicitud en milisegundos. Auméntalo para redes lentas o proxies. También limita cuánto tiempo espera Claude Code los encabezados de respuesta, como se describe en [No response from API](#no-response-from-api). |

437| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/es/env-vars) | sin establecer | Límite de reenvíos de una [solicitud sin streaming](#streaming-response-ended-before-any-complete-data-was-received) cuyo tiempo de espera se agota. Al alcanzar el límite, la solicitud falla. Una respuesta de Claude que tarda en generarse más que el tiempo de espera vuelve a agotar el tiempo de espera en cada reenvío, así que establece un número bajo, como `0`, para que falle antes. El tiempo de espera de cada intento sin streaming se agota después de 300 segundos en una sesión local, o después de `API_TIMEOUT_MS` cuando estableces un valor positivo. Requiere Claude Code v2.1.285 o posterior. |

435| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/es/env-vars) | sin establecer | Plazo en milisegundos para el primer byte de respuesta de una solicitud en streaming. Requiere Claude Code v2.1.242 o posterior. Para saber cómo elige Claude Code el plazo cuando esta variable no está establecida, consulta [No response from API](#no-response-from-api). |438| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/es/env-vars) | sin establecer | Plazo en milisegundos para el primer byte de respuesta de una solicitud en streaming. Requiere Claude Code v2.1.242 o posterior. Para saber cómo elige Claude Code el plazo cuando esta variable no está establecida, consulta [No response from API](#no-response-from-api). |

436 439 

437<h2 id="server-errors">440<h2 id="server-errors">


1836 Errores de red y conexión1839 Errores de red y conexión

1837</h2>1840</h2>

1838 1841 

1839La mayoría de estos errores significan que una solicitud de red desde Claude Code no llegó a su destino, o algo entre Claude Code y la API alteró la respuesta en el camino de regreso; cuando una entrada también tiene una causa local, como una escritura de archivo fallida, su cuerpo lo indica. Generalmente se originan en su red local, proxy o firewall, o en la política de red del entorno en la nube.1842La mayoría de estos errores significan que una solicitud de red desde Claude Code no llegó a su destino, o que algo entre Claude Code y la API alteró la respuesta en el camino de regreso; cuando una entrada también tiene una causa local, como una escritura de archivo fallida, su cuerpo lo indica. Generalmente se originan en tu red local, proxy o firewall, o en la política de red del entorno en la nube.

1840 1843 

1841<h3 id="unable-to-connect-to-api">1844<h3 id="unable-to-connect-to-api">

1842 No se puede conectar a la API1845 Unable to connect to API

1843</h3>1846</h3>

1844 1847 

1845La conexión TCP a la API falló o nunca se completó. Para los códigos de error de conexión comunes, el nombre del mensaje indica el tipo de fallo y mantiene el código entre paréntesis:1848La conexión TCP a la API falló o nunca se completó. Para los códigos de error de conexión comunes, el mensaje indica el tipo de fallo y mantiene el código entre paréntesis:

1846 1849 

1847```text theme={null}1850```text theme={null}

1848Unable to connect to API. Check your internet connection1851Unable to connect to API. Check your internet connection


1856 1859 

1857Un código que Claude Code no reconoce aparece como `Unable to connect to API` seguido del código entre paréntesis. Algunos de estos mensajes pueden mostrar más de un código: `Connection refused` puede mostrar `ConnectionRefused` o `ECONNREFUSED`, por ejemplo, y `Can't reach the API server` puede mostrar `ENOTFOUND` o `FailedToOpenSocket`.1860Un código que Claude Code no reconoce aparece como `Unable to connect to API` seguido del código entre paréntesis. Algunos de estos mensajes pueden mostrar más de un código: `Connection refused` puede mostrar `ConnectionRefused` o `ECONNREFUSED`, por ejemplo, y `Can't reach the API server` puede mostrar `ENOTFOUND` o `FailedToOpenSocket`.

1858 1861 

1859Antes de v2.1.227, cada uno de estos mensajes codificados leía `Unable to connect to API` seguido del código, por ejemplo `Unable to connect to API (ECONNREFUSED)`.1862Antes de v2.1.227, cada uno de estos mensajes con código decía `Unable to connect to API` seguido del código, por ejemplo `Unable to connect to API (ECONNREFUSED)`.

1860 1863 

1861Las causas comunes incluyen no tener acceso a internet, una VPN que bloquea `api.anthropic.com`, o un proxy corporativo requerido que no está configurado.1864Las causas comunes incluyen no tener acceso a internet, una VPN que bloquea `api.anthropic.com`, o un proxy corporativo requerido que no está configurado.

1862 1865 

1863**Qué hacer:**1866**Qué hacer:**

1864 1867 

1865* Confirme que puede alcanzar el host de la API desde el mismo shell ejecutando `curl -I https://api.anthropic.com`. En Windows PowerShell use `curl.exe -I https://api.anthropic.com` para que no se use el alias `Invoke-WebRequest` integrado.1868* Confirma que puedes alcanzar el host de la API desde el mismo shell ejecutando `curl -I https://api.anthropic.com`. En Windows PowerShell usa `curl.exe -I https://api.anthropic.com` para que no se use el alias integrado `Invoke-WebRequest`.

1866* Si está detrás de un proxy corporativo, establezca `HTTPS_PROXY` antes de lanzar Claude Code y consulte [Configuración de red](/docs/es/network-config)1869* Si estás detrás de un proxy corporativo, establece `HTTPS_PROXY` antes de iniciar Claude Code y consulta [Configuración de red](/docs/es/network-config)

1867* Si enruta a través de una puerta de enlace LLM o relé, establezca [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) en su dirección. Consulte [Conectar Claude Code a una puerta de enlace LLM](/docs/es/llm-gateway-connect) para la configuración.1870* Si enrutas a través de un gateway LLM o un relé, establece [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) en su dirección. Consulta [Conectar Claude Code a un gateway LLM](/docs/es/llm-gateway-connect) para la configuración.

1868* Asegúrese de que su firewall permite los hosts enumerados en [Requisitos de acceso a la red](/docs/es/network-config#network-access-requirements)1871* Asegúrate de que tu firewall permita los hosts enumerados en [Requisitos de acceso a la red](/docs/es/network-config#network-access-requirements)

1869* Los fallos intermitentes se [reintentan automáticamente](#automatic-retries); los fallos persistentes apuntan a un problema de red local1872* Los fallos intermitentes se [reintentan automáticamente](#automatic-retries); los fallos persistentes apuntan a un problema de red local

1870 1873 

1871Si `curl` tiene éxito pero Claude Code aún falla, la causa suele ser algo entre el tiempo de ejecución y la red en lugar de la red misma:1874Si `curl` tiene éxito pero Claude Code sigue fallando, la causa suele ser algo entre el runtime y la red, no la red en sí:

1872 1875 

1873* Verifique si `ANTHROPIC_BASE_URL` está establecido ejecutando `echo $ANTHROPIC_BASE_URL`, o `echo $env:ANTHROPIC_BASE_URL` en PowerShell, y búsquelo en el bloque `env` de sus [archivos de configuración](/docs/es/settings). Cuando está establecido, Claude Code envía solicitudes de modelo a esa dirección en lugar de `api.anthropic.com`, por lo que un valor residual que apunta a un proxy local o puerta de enlace que ya no se ejecuta produce `Connection refused` aunque `curl` alcance la API. Elimínelo de su perfil de shell o configuración e inicie Claude Code desde una nueva terminal.1876* Verifica si `ANTHROPIC_BASE_URL` está establecida ejecutando `echo $ANTHROPIC_BASE_URL`, o `echo $env:ANTHROPIC_BASE_URL` en PowerShell, y búscala en el bloque `env` de tus [archivos de configuración](/docs/es/settings). Cuando está establecida, Claude Code envía las solicitudes al modelo a esa dirección en lugar de a `api.anthropic.com`, por lo que un valor residual que apunta a un proxy o gateway local que ya no se está ejecutando produce `Connection refused` aunque `curl` alcance la API. Elimínala de tu perfil de shell o de tu configuración e inicia Claude Code desde una nueva terminal.

1874* En Linux y WSL, verifique `/etc/resolv.conf` para un servidor de nombres inaccesible. WSL en particular puede heredar un resolutor roto del host.1877* En Linux y WSL, revisa `/etc/resolv.conf` en busca de un servidor de nombres inaccesible. WSL en particular puede heredar un resolvedor defectuoso del host.

1875* En macOS, un cliente VPN que fue desconectado o desinstalado puede dejar una interfaz de túnel o una regla de enrutamiento. Verifique `ifconfig` para interfaces `utun` obsoletas y elimine la extensión de red de la VPN en Configuración del Sistema.1878* En macOS, un cliente VPN que se desconectó o desinstaló puede dejar una interfaz de túnel o una regla de enrutamiento. Revisa `ifconfig` en busca de interfaces `utun` obsoletas y elimina la extensión de red de la VPN en Configuración del Sistema.

1876* Docker Desktop y tiempos de ejecución de contenedores similares pueden interceptar el tráfico saliente. Ciérrelos y reintente para descartar esto.1879* Docker Desktop y runtimes de contenedores similares pueden interceptar el tráfico saliente. Ciérralos y vuelve a intentarlo para descartar esta causa.

1877 1880 

1878<h3 id="unable-to-connect-to-anthropic-services">1881<h3 id="unable-to-connect-to-anthropic-services">

1879 No se puede conectar a los servicios de Anthropic1882 Unable to connect to Anthropic services

1880</h3>1883</h3>

1881 1884 

1882Durante la configuración de primera ejecución, Claude Code verifica que pueda alcanzar `api.anthropic.com` y `platform.claude.com` antes de mostrar el paso de inicio de sesión. Cuando alguna verificación falla, Claude Code imprime la razón y sale.1885Durante la configuración de la primera ejecución, Claude Code verifica que puede alcanzar `api.anthropic.com` y `platform.claude.com` antes de mostrar el paso de inicio de sesión. Cuando alguna de las verificaciones falla, Claude Code imprime el motivo y sale.

1883 1886 

1884```text theme={null}1887```text theme={null}

1885Unable to connect to Anthropic services1888Unable to connect to Anthropic services


1888A proxy is configured via HTTPS_PROXY. Check that it allows connections to the host above.1891A proxy is configured via HTTPS_PROXY. Check that it allows connections to the host above.

1889```1892```

1890 1893 

1891Claude Code envía la verificación a través de la misma [configuración de proxy](/docs/es/network-config) que las solicitudes de API y da a cada sonda 10 segundos. Cuando la sonda fallida pasó a través de un proxy, el mensaje nombra la variable de entorno que lo configuró, como `HTTPS_PROXY`. Antes de v2.1.222, la verificación usaba un transporte de proxy diferente sin tiempo de espera: detrás de una URL de proxy con el esquema `https://`, podría estancarse en `Checking connectivity...` indefinidamente y luego fallar aunque las solicitudes de API a través del mismo proxy tengan éxito.1894Claude Code envía la verificación a través de la misma [configuración de proxy](/docs/es/network-config) que las solicitudes a la API y da a cada sondeo 10 segundos. Cuando el sondeo fallido pasó por un proxy, el mensaje nombra la variable de entorno que lo configuró, como `HTTPS_PROXY`. Antes de v2.1.222, la verificación usaba un transporte de proxy diferente sin tiempo de espera: detrás de una URL de proxy con el esquema `https://`, podía quedarse detenida en `Checking connectivity...` indefinidamente y luego fallar aunque las solicitudes a la API a través del mismo proxy tuvieran éxito.

1892 1895 

1893Claude Code omite esta verificación cuando un [archivo de configuración administrado, política MDM o asistente de política](/docs/es/managed-settings) establece [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod) en `"gateway"`, o establece [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl) sin `forceLoginMethod`. Con cualquiera de estas configuraciones, Claude Code abre el paso de inicio de sesión en la pantalla **Cloud gateway** en lugar de un método de inicio de sesión de Anthropic. Claude Code también omite la verificación cuando existe una fuente de configuración administrada en la máquina pero no se puede leer, ya que esa fuente puede contener la configuración de la puerta de enlace. Antes de v2.1.247, Claude Code ejecutaba la verificación bajo esta configuración también, y salía con este error cuando los puntos finales de Anthropic eran inaccesibles.1896Claude Code omite esta verificación cuando un [archivo de configuración administrada, una política MDM o un asistente de políticas](/docs/es/managed-settings) establece [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod) en `"gateway"`, o establece [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl) sin `forceLoginMethod`. Con cualquiera de estas configuraciones, Claude Code abre el paso de inicio de sesión en la pantalla **Cloud gateway** en lugar de un método de inicio de sesión de Anthropic. Claude Code también omite la verificación cuando existe una fuente de configuración administrada en la máquina pero no se puede leer, ya que esa fuente puede contener la configuración del gateway. Antes de v2.1.247, Claude Code ejecutaba la verificación también con esta configuración, y salía con este error cuando los endpoints de Anthropic eran inaccesibles.

1894 1897 

1895**Qué hacer:**1898**Qué hacer:**

1896 1899 

1897* Si el mensaje nombra una variable de proxy, verifique que su valor apunte al proxy correcto y pida a su equipo de red que permita conexiones HTTPS a través de él al host en el mensaje. Consulte [Configuración de red](/docs/es/network-config).1900* Si el mensaje nombra una variable de proxy, verifica que su valor apunte al proxy correcto y pide a tu equipo de red que permita conexiones HTTPS a través de él hacia el host del mensaje. Consulta [Configuración de red](/docs/es/network-config).

1898* Trabaje a través de las verificaciones en [No se puede conectar a la API](#unable-to-connect-to-api). La prueba `curl` y la orientación de firewall allí se aplican a esta verificación también.1901* Revisa las comprobaciones de [Unable to connect to API](#unable-to-connect-to-api). La prueba con `curl` y las indicaciones sobre el firewall de esa sección también se aplican a esta verificación.

1899* Si su red está abierta y el fallo persiste, Claude Code puede no estar [disponible en su país](https://www.anthropic.com/supported-countries)1902* Si tu red está abierta y el fallo persiste, es posible que Claude Code no esté [disponible en tu país](https://www.anthropic.com/supported-countries)

1900 1903 

1901<h3 id="socket-is-closed">1904<h3 id="socket-is-closed">

1902 Socket is closed1905 Socket is closed

1903</h3>1906</h3>

1904 1907 

1905`Socket is closed` significa que la conexión que transportaba una respuesta de transmisión se cerró mientras la respuesta aún llegaba. La causa más común es un proxy corporativo en Windows que elimina un túnel establecido a mitad de la respuesta.1908`Socket is closed` significa que la conexión que transportaba una respuesta en streaming se cerró mientras la respuesta aún estaba llegando. La causa más común es un proxy corporativo en Windows que corta un túnel establecido a mitad de la respuesta.

1906 1909 

1907Dependiendo de cuán lejos haya progresado la respuesta, Claude Code reintenta la solicitud, mantiene lo que Claude produjo, o termina el turno. Consulte [Reintentos automáticos](#automatic-retries).1910Según cuánto haya avanzado la respuesta, Claude Code reintenta la solicitud, conserva lo que Claude produjo o termina el turno. Consulta [Reintentos automáticos](#automatic-retries).

1908 1911 

1909Antes de v2.1.214, Claude Code no reintentaba este fallo, y el turno se detenía con un error que contenía `Socket is closed`.1912Antes de v2.1.214, Claude Code no reintentaba este fallo, y el turno se detenía con un error que contenía `Socket is closed`.

1910 1913 

1911**Qué hacer:**1914**Qué hacer:**

1912 1915 

1913* Si ve este error, actualice a v2.1.214 o posterior con `claude update`, luego envíe su mensaje nuevamente1916* Si ves este error, actualiza a v2.1.214 o posterior con `claude update` y luego envía tu mensaje de nuevo

1914* Si los turnos siguen fallando detrás del mismo proxy después de actualizar, trabaje a través de [No se puede conectar a la API](#unable-to-connect-to-api) y verifique la configuración del proxy en [Configuración de red](/docs/es/network-config)1917* Si los turnos siguen fallando detrás del mismo proxy después de actualizar, revisa [Unable to connect to API](#unable-to-connect-to-api) y verifica la configuración del proxy en [Configuración de red](/docs/es/network-config)

1915 1918 

1916<h3 id="api-returned-an-empty-or-malformed-response">1919<h3 id="api-returned-an-empty-or-malformed-response">

1917 La API devolvió una respuesta vacía o malformada1920 API returned an empty or malformed response

1918</h3>1921</h3>

1919 1922 

1920Claude Code muestra este error cuando su reintento sin transmisión de una solicitud de transmisión fallida obtiene un estado de éxito HTTP pero el cuerpo no es un mensaje de API de Claude: comúnmente una página de error HTML o de inicio de sesión, un cuerpo vacío, o JSON en otro formato. Un proxy, puerta de enlace o página de inicio de sesión de red respondiendo en lugar de la API es la fuente habitual. Claude Code no reintenta la solicitud, y el turno termina con este error.1923Claude Code muestra este error cuando su reintento sin streaming de una solicitud en streaming fallida obtiene un estado HTTP de éxito pero el cuerpo no es un mensaje de la API de Claude: comúnmente una página HTML de error o de inicio de sesión, un cuerpo vacío o JSON en otro formato. La fuente habitual es un proxy, un gateway o una página de inicio de sesión de la red que responde en lugar de la API. Claude Code no reintenta la solicitud, y el turno termina con este error.

1921 1924 

1922```text theme={null}1925```text theme={null}

1923API returned an empty or malformed response (HTTP 200) — check for a proxy or gateway intercepting the request.1926API returned an empty or malformed response (HTTP 200) — check for a proxy or gateway intercepting the request.

1924```1927```

1925 1928 

1926Después de esa apertura, el mensaje informa lo que regresó y qué solicitud falló:1929Después de ese inicio, el mensaje informa lo que se recibió y qué solicitud falló:

1927 1930 

1928* Una cláusula `Response:` con el tipo de contenido, el tipo de cuerpo, como `body is an HTML page` o `empty body`, su tamaño en bytes, y si la respuesta llevaba un id de solicitud de Anthropic. Cuando la respuesta nombra un servidor reconocible, como `nginx` o `cloudflare`, o lleva encabezados intermediarios, como `cf-ray` o `via`, la cláusula también los enumera.1931* Una cláusula `Response:` con el tipo de contenido, el tipo de cuerpo, como `body is an HTML page` o `empty body`, su tamaño en bytes y si la respuesta incluía un id de solicitud de Anthropic. Cuando la respuesta nombra un servidor reconocible, como `nginx` o `cloudflare`, o incluye encabezados de intermediarios, como `cf-ray` o `via`, la cláusula también los enumera.

1929* Una oración que nombra el id de la solicitud de transmisión fallida y el fallo que desencadenó el reintento. Cuando una transmisión se había abierto antes del fallo, también informa cuántos eventos de transmisión llegaron y, si alguno lo hizo, cuánto tiempo la transmisión había estado en silencio cuando se realizó el intento.1932* Una oración que nombra el id de la solicitud en streaming fallida y el fallo que desencadenó el reintento. Cuando se había abierto un stream antes del fallo, también informa cuántos eventos del stream llegaron y, si llegó alguno, cuánto tiempo llevaba el stream en silencio cuando el intento falló.

1930 1933 

1931Antes de v2.1.234, el mensaje terminaba después de `intercepting the request`.1934Antes de v2.1.234, el mensaje terminaba después de `intercepting the request`.

1932 1935 

1933Antes de v2.1.271, una respuesta que llevaba un mensaje de API válido bajo un tipo de contenido que no es JSON como `text/plain` también terminaba el turno con este error. Algunas puertas de enlace LLM usan ese tipo de contenido para la respuesta sin transmisión.1936Antes de v2.1.271, una respuesta que incluía un mensaje de API válido con un tipo de contenido que no es JSON, como `text/plain`, también terminaba el turno con este error. Algunos gateways LLM usan ese tipo de contenido para la respuesta sin streaming.

1934 1937 

1935**Qué hacer:**1938**Qué hacer:**

1936 1939 

1937* Lea la cláusula `Response:` para ver qué sistema respondió. Un cuerpo HTML, sin id de solicitud de Anthropic, o un servidor nombrado como `nginx` o `cloudflare` significa que algo entre Claude Code y la API respondió en su lugar1940* Lee la cláusula `Response:` para ver qué sistema respondió. Un cuerpo HTML, la ausencia de id de solicitud de Anthropic o un servidor nombrado como `nginx` o `cloudflare` significan que algo entre Claude Code y la API respondió en su lugar

1938* Si enruta a través de una [puerta de enlace LLM](/docs/es/llm-gateway-connect#troubleshoot-gateway-errors), pruebe la ruta con una solicitud directa y corrija el salto que devuelve la respuesta que no es de API1941* Si enrutas a través de un [gateway LLM](/docs/es/llm-gateway-connect#troubleshoot-gateway-errors), prueba la ruta con una solicitud directa y corrige el salto que devuelve la respuesta que no es de la API

1939* En una red con una página de inicio de sesión, como Wi-Fi de invitados, complete el inicio de sesión en un navegador, luego reintente1942* En una red con página de inicio de sesión, como una Wi-Fi de invitados, completa el inicio de sesión en un navegador y luego vuelve a intentarlo

1940* Si solo la ruta sin transmisión a través de su puerta de enlace está rota, establezca [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1`](/docs/es/env-vars#variables) para desactivar este respaldo, excepto cuando el punto final de transmisión en sí devuelve `404`, donde Claude Code aún recurre al respaldo1943* Si solo está rota la ruta sin streaming a través de tu gateway, establece [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1`](/docs/es/env-vars#variables) para desactivar este respaldo, excepto cuando el propio endpoint de streaming devuelve `404`, caso en el que Claude Code sigue recurriendo al respaldo

1941 1944 

1942<h3 id="streaming-response-ended-before-any-complete-data-was-received">1945<h3 id="streaming-response-ended-before-any-complete-data-was-received">

1943 La respuesta de transmisión terminó antes de que se recibiera algún dato completo1946 Streaming response ended before any complete data was received

1944</h3>1947</h3>

1945 1948 

1946Una respuesta de transmisión de su proveedor de modelo se completó sin entregar ningún dato utilizable, por lo que Claude Code reenviló la solicitud sin transmisión para terminar el turno. Claude Code muestra la advertencia una vez por sesión, solo en sesiones interactivas. Antes de v2.1.239, Claude Code reintentaba silenciosamente sin transmisión.1949Una respuesta en streaming de tu proveedor de modelos se completó sin entregar ningún dato utilizable, por lo que Claude Code reenvió la solicitud sin streaming para terminar el turno. Claude Code muestra la advertencia una vez por sesión, solo en sesiones interactivas. Antes de v2.1.239, Claude Code reintentaba sin streaming de forma silenciosa.

1947 1950 

1948```text theme={null}1951```text theme={null}

1949Streaming response ended before any complete data was received. Retrying without streaming. If this keeps happening, check any proxy or gateway between Claude Code and your model provider.1952Streaming response ended before any complete data was received. Retrying without streaming. If this keeps happening, check any proxy or gateway between Claude Code and your model provider.

1950```1953```

1951 1954 

1952Claude Code envía cada solicitud afectada dos veces: el intento de transmisión vacío y el reintento. La causa habitual es un proxy o puerta de enlace que consume o transforma el cuerpo de la respuesta de transmisión en el camino de regreso.1955Claude Code envía cada solicitud afectada dos veces: el intento en streaming vacío y el reintento. La causa habitual es un proxy o gateway que consume o transforma el cuerpo de la respuesta en streaming en el camino de regreso.

1953 1956 

1954**Qué hacer:**1957**Qué hacer:**

1955 1958 

1956* Configure cualquier proxy o puerta de enlace entre Claude Code y su proveedor de modelo para pasar los cuerpos de respuesta de transmisión y sus encabezados sin modificar1959* Configura cualquier proxy o gateway entre Claude Code y tu proveedor de modelos para que deje pasar sin modificar los cuerpos de las respuestas en streaming y sus encabezados

1957* En [Amazon Bedrock](/docs/es/amazon-bedrock), consulte [Errores de transmisión detrás de una puerta de enlace o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy) para los requisitos de encabezado y cuerpo1960* En [Amazon Bedrock](/docs/es/amazon-bedrock), consulta [Errores de streaming detrás de un gateway o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy) para conocer los requisitos de encabezados y cuerpo

1958 1961 

1959<h3 id="bedrock-streaming-response-has-an-unexpected-content-type">1962<h3 id="bedrock-streaming-response-has-an-unexpected-content-type">

1960 La respuesta de transmisión de Bedrock tiene un content-type inesperado1963 La respuesta en streaming de Bedrock tiene un content-type inesperado

1961</h3>1964</h3>

1962 1965 

1963Una puerta de enlace o proxy entre Claude Code y [Amazon Bedrock](/docs/es/amazon-bedrock) está transformando el cuerpo de la respuesta de transmisión o su encabezado `Content-Type`. Amazon Bedrock transmite respuestas como `application/vnd.amazon.eventstream`. En lugar de decodificar un cuerpo que no puede leer, Claude Code rechaza una respuesta de transmisión exitosa que informa un content-type diferente. Claude Code no reintenta la solicitud.1966Un gateway o proxy entre Claude Code y [Amazon Bedrock](/docs/es/amazon-bedrock) está transformando el cuerpo de la respuesta en streaming o su encabezado `Content-Type`. Amazon Bedrock envía las respuestas en streaming como `application/vnd.amazon.eventstream`. En lugar de decodificar un cuerpo que no puede leer, Claude Code rechaza una respuesta en streaming exitosa que informa un content-type diferente. Claude Code no reintenta la solicitud.

1964 1967 

1965```text theme={null}1968```text theme={null}

1966Bedrock streaming response has content-type "text/event-stream"; expected "application/vnd.amazon.eventstream". A gateway or proxy between Claude Code and Bedrock is likely transforming the response body — Bedrock's binary event-stream format must be passed through unmodified. Set CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1 to suppress this check while the gateway is being fixed.1969Bedrock streaming response has content-type "text/event-stream"; expected "application/vnd.amazon.eventstream". A gateway or proxy between Claude Code and Bedrock is likely transforming the response body — Bedrock's binary event-stream format must be passed through unmodified. Set CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1 to suppress this check while the gateway is being fixed.

1967```1970```

1968 1971 

1969Antes de v2.1.208, la misma configuración incorrecta se presentaba como `API Error: Truncated event message received` después de que todo el cuerpo había sido almacenado en búfer.1972Antes de v2.1.208, la misma configuración incorrecta aparecía como `API Error: Truncated event message received` después de que toda la respuesta se había almacenado en búfer.

1970 1973 

1971**Qué hacer:**1974**Qué hacer:**

1972 1975 

1973* Configure la puerta de enlace para pasar el cuerpo de respuesta `InvokeModelWithResponseStream` y su encabezado `Content-Type` sin modificar. Un intermediario que reemite la transmisión como eventos enviados por el servidor es una causa común.1976* Configura el gateway para que deje pasar sin modificar el cuerpo de la respuesta de `InvokeModelWithResponseStream` y su encabezado `Content-Type`. Un intermediario que reemite el stream como eventos enviados por el servidor es una causa común.

1974* Establecer [`CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1`](/docs/es/env-vars) oculta este error, pero Claude Code no decodifica un cuerpo binario bajo un encabezado reescrito, por lo que esas solicitudes recurren a una ruta más lenta sin transmisión. Consulte [Errores de transmisión detrás de una puerta de enlace o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).1977* Establecer [`CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1`](/docs/es/env-vars) oculta este error, pero Claude Code no decodifica un cuerpo binario con un encabezado reescrito, por lo que esas solicitudes recurren a una ruta más lenta sin streaming. Consulta [Errores de streaming detrás de un gateway o proxy](/docs/es/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).

1975 1978 

1976<h3 id="ssl-certificate-errors">1979<h3 id="ssl-certificate-errors">

1977 Errores de certificado SSL1980 Errores de certificado SSL

1978</h3>1981</h3>

1979 1982 

1980Un proxy o dispositivo de seguridad en su red está interceptando el tráfico TLS con su propio certificado, y Claude Code no lo confía.1983Un proxy o dispositivo de seguridad de tu red está interceptando el tráfico TLS con su propio certificado, y Claude Code no confía en él.

1981 1984 

1982```text theme={null}1985```text theme={null}

1983Unable to connect to API: SSL certificate verification failed (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). The certificate comes from an authority Claude Code doesn't trust, usually a TLS-inspecting corporate proxy or a gateway signed by a private CA: set NODE_EXTRA_CA_CERTS to that CA bundle, or add it to the system certificate store · see https://code.claude.com/docs/en/network-config1986Unable to connect to API: SSL certificate verification failed (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). The certificate comes from an authority Claude Code doesn't trust, usually a TLS-inspecting corporate proxy or a gateway signed by a private CA: set NODE_EXTRA_CA_CERTS to that CA bundle, or add it to the system certificate store · see https://code.claude.com/docs/en/network-config

1984Unable to connect to API: Self-signed certificate detected (SELF_SIGNED_CERT_IN_CHAIN). The certificate comes from an authority Claude Code doesn't trust, usually a TLS-inspecting corporate proxy or a gateway signed by a private CA: set NODE_EXTRA_CA_CERTS to that CA bundle, or add it to the system certificate store · see https://code.claude.com/docs/en/network-config1987Unable to connect to API: Self-signed certificate detected (SELF_SIGNED_CERT_IN_CHAIN). The certificate comes from an authority Claude Code doesn't trust, usually a TLS-inspecting corporate proxy or a gateway signed by a private CA: set NODE_EXTRA_CA_CERTS to that CA bundle, or add it to the system certificate store · see https://code.claude.com/docs/en/network-config

1985```1988```

1986 1989 

1987Antes de v2.1.273, ambos mensajes terminaban en `Check your proxy or corporate SSL certificates`, sin el código OpenSSL o la sugerencia `NODE_EXTRA_CA_CERTS`.1990Antes de v2.1.273, ambos mensajes terminaban en `Check your proxy or corporate SSL certificates`, sin el código de OpenSSL ni la sugerencia de `NODE_EXTRA_CA_CERTS`.

1988 1991 

1989A partir de v2.1.199, un fallo de validación de certificado no se reintenta, por lo que este error aparece en el primer intento en lugar de después del [presupuesto de reintento](#automatic-retries) completo. Las versiones anteriores pasaban unos minutos reintentando antes de mostrarlo. Las condiciones TLS transitorias, como un tiempo de espera de protocolo de enlace, aún se reintentan.1992A partir de v2.1.199, un fallo de validación de certificado no se reintenta, por lo que este error aparece en el primer intento en lugar de después de agotar el [presupuesto de reintentos](#automatic-retries) completo. Las versiones anteriores pasaban unos minutos reintentando antes de mostrarlo. Las condiciones TLS transitorias, como un tiempo de espera agotado en el handshake, todavía se reintentan.

1990 1993 

1991Durante `/login` y la verificación de conectividad de inicio, el mismo fallo produce un mensaje diferente:1994Durante `/login` y la verificación de conectividad al inicio, el mismo fallo produce un mensaje diferente:

1992 1995 

1993```text theme={null}1996```text theme={null}

1994SSL certificate error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run `claude doctor` for details.1997SSL certificate error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run `claude doctor` for details.

1995```1998```

1996 1999 

1997En [Amazon Bedrock](/docs/es/amazon-bedrock), las solicitudes que Claude Code envía a AWS, como las llamadas de credencial de rol STS y SSO, descubrimiento de modelo, y las verificaciones del asistente de configuración, dependen de la misma configuración de certificado. Consulte [Errores de certificado detrás de un proxy que inspecciona TLS](/docs/es/amazon-bedrock#certificate-errors-behind-a-tls-inspecting-proxy).2000En [Amazon Bedrock](/docs/es/amazon-bedrock), las solicitudes que el propio Claude Code envía a AWS, como las llamadas de credenciales de rol de STS y SSO, el descubrimiento de modelos y las comprobaciones del asistente de configuración, dependen de la misma configuración de certificados. Consulta [Errores de certificado detrás de un proxy que inspecciona TLS](/docs/es/amazon-bedrock#certificate-errors-behind-a-tls-inspecting-proxy).

1998 2001 

1999**Qué hacer:**2002**Qué hacer:**

2000 2003 

2001* Exporte el paquete de CA de su organización y apunte Claude Code a él con `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`2004* Exporta el paquete de CA de tu organización y apunta Claude Code a él con `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`

2002* Consulte [Configuración de red](/docs/es/network-config#custom-ca-certificates) para obtener instrucciones de configuración completas2005* Consulta [Configuración de red](/docs/es/network-config#custom-ca-certificates) para ver las instrucciones de configuración completas

2003* No establezca `NODE_TLS_REJECT_UNAUTHORIZED=0`, que desactiva completamente la validación de certificados2006* No establezcas `NODE_TLS_REJECT_UNAUTHORIZED=0`, que desactiva por completo la validación de certificados

2004 2007 

2005<h3 id="host-not-allowed-in-a-cloud-session">2008<h3 id="host-not-allowed-in-a-cloud-session">

2006 Host no permitido en una sesión en la nube2009 Host no permitido en una sesión en la nube

2007</h3>2010</h3>

2008 2011 

2009Una solicitud HTTP saliente desde una sesión en la nube o rutina fue bloqueada por la política de red del entorno.2012La política de red del entorno bloqueó una solicitud HTTP saliente de una sesión en la nube o de una rutina.

2010 2013 

2011```text theme={null}2014```text theme={null}

2012HTTP 4032015HTTP 403

2013x-deny-reason: host_not_allowed2016x-deny-reason: host_not_allowed

2014```2017```

2015 2018 

2016También puede ver un certificado TLS que no coincide con el certificado real del destino. Las sesiones en la nube enrutan el tráfico saliente a través de un proxy que aplica la política de red, por lo que un certificado que no coincide significa que el proxy terminó la conexión, no el destino.2019También puedes ver un certificado TLS que no coincide con el certificado real del destino. Las sesiones en la nube enrutan el tráfico saliente a través de un proxy que aplica la política de red, por lo que un certificado que no coincide significa que el proxy terminó la conexión, no el destino.

2017 2020 

2018Este no es un problema de red del lado del cliente. Las sesiones en la nube y [rutinas](/docs/es/routines) se ejecutan dentro de una VM aislada cuyo tráfico saliente a través de la red de la sesión se filtra a la [lista de permitidos del entorno en la nube](/docs/es/cloud-environments); [las operaciones de GitHub](/docs/es/cloud-environments#github-proxy) y el tráfico del conector MCP usan canales separados, por lo que pueden seguir funcionando mientras otros hosts están bloqueados. El entorno **Default** usa acceso **Trusted**, que permite la [lista de permitidos predeterminada](/docs/es/cloud-environments#default-allowed-domains) de registros de paquetes, API de proveedores en la nube, registros de contenedores, y dominios de desarrollo comunes y bloquea otros dominios en esa ruta.2021No es un problema de red del lado del cliente. Las sesiones en la nube y las [rutinas](/docs/es/routines) se ejecutan dentro de una VM aislada cuyo tráfico saliente a través de la red de la sesión se filtra según la lista de permitidos del [entorno en la nube](/docs/es/cloud-environments); las [operaciones de GitHub](/docs/es/cloud-environments#github-proxy) y el tráfico de los conectores MCP usan canales separados, por eso pueden seguir funcionando mientras otros hosts están bloqueados. El entorno **Default** usa acceso **Trusted**, que permite la [lista de permitidos predeterminada](/docs/es/cloud-environments#default-allowed-domains) de registros de paquetes, API de proveedores de nube, registros de contenedores y dominios de desarrollo comunes, y bloquea otros dominios en esa ruta.

2019 2022 

2020**Qué hacer:**2023**Qué hacer:**

2021 2024 

2022Estos pasos cambian uno de sus propios entornos. Un [entorno compartido por la organización](/docs/es/cloud-environments#organization-shared-environments) se abre como solo lectura en el selector, así que pida a un Propietario que cambie su acceso de red desde la página **Cloud environments** en [configuración de administración](https://claude.ai/admin-settings).2025Estos pasos cambian uno de tus propios entornos. Un [entorno compartido por la organización](/docs/es/cloud-environments#organization-shared-environments) se abre como de solo lectura en el selector, así que pide a un Owner que cambie su acceso a la red desde la página **Cloud environments** en la [configuración de administración](https://claude.ai/admin-settings).

2023 2026 

2024* Abra su entorno para editar, ya sea desde el [formulario de la rutina](/docs/es/routines#environments-and-network-access) o desde el [selector de entorno](/docs/es/cloud-environments#configure-your-environment) donde inicia sesiones en la nube.2027* Abre tu entorno para editarlo, ya sea desde el [formulario de la rutina](/docs/es/routines#environments-and-network-access) o desde el [selector de entornos](/docs/es/cloud-environments#configure-your-environment) donde inicias sesiones en la nube.

2025* En el diálogo **Edit cloud environment**, cambie **Network access** de **Trusted** a **Custom**, luego agregue el dominio bloqueado a **Allowed domains**. Ingrese un dominio por línea. Marque **Also include default list of common package managers** para mantener la [lista de permitidos predeterminada](/docs/es/cloud-environments#default-allowed-domains) junto con sus dominios personalizados. Seleccione **Full** en su lugar si desea acceso sin restricciones.2028* En el diálogo **Edit environment**, cambia **Network access** de **Trusted** a **Custom** y luego agrega el dominio bloqueado a **Allowed domains**. Ingresa un dominio por línea. Marca **Also include default list of common package managers** para conservar la [lista de permitidos predeterminada](/docs/es/cloud-environments#default-allowed-domains) junto con tus dominios personalizados. Selecciona **Full** en su lugar si quieres acceso sin restricciones.

2026* Haga clic en **Save changes**. La siguiente ejecución usa la lista de permitidos actualizada. Para una sesión en la nube que ya está abierta, consulte [cuándo un cambio de acceso de red llega a sesiones existentes](/docs/es/cloud-environments#network-access).2029* Haz clic en **Save changes**. La siguiente ejecución usa la lista de permitidos actualizada. Para una sesión en la nube que ya está abierta, consulta [cuándo llega un cambio de acceso a la red a las sesiones existentes](/docs/es/cloud-environments#network-access).

2027 2030 

2028Consulte [Network access](/docs/es/cloud-environments#network-access) para niveles de acceso y la lista de permitidos predeterminada. Las sesiones de CLI locales no se ven afectadas por esta política.2031Consulta [Acceso a la red](/docs/es/cloud-environments#network-access) para conocer los niveles de acceso y la lista de permitidos predeterminada. Las sesiones locales de la CLI no se ven afectadas por esta política.

2029 2032 

2030<h3 id="the-proxy-refused-the-connection">2033<h3 id="the-proxy-refused-the-connection">

2031 El proxy rechazó la conexión2034 The proxy refused the connection

2032</h3>2035</h3>

2033 2036 

2034Ve este mensaje cuando Claude lee un [artefacto](/docs/es/artifacts) a través del proxy que estableció en `HTTPS_PROXY` o una [variable de proxy](/docs/es/network-config#environment-variables) relacionada. El contenido del artefacto proviene de `*.frame.claudeusercontent.com`, por lo que Claude Code primero envía al proxy una solicitud `CONNECT` pidiéndole que abra un túnel a ese host. Cuando el proxy rechaza, nada llega al host, y el mensaje lleva el estado HTTP del proxy:2037Ves este mensaje cuando Claude lee un [artefacto](/docs/es/artifacts) a través del proxy que estableciste en `HTTPS_PROXY` o en una [variable de proxy](/docs/es/network-config#environment-variables) relacionada. El contenido del artefacto proviene de `*.frame.claudeusercontent.com`, por lo que Claude Code primero envía al proxy una solicitud `CONNECT` pidiéndole que abra un túnel hacia ese host. Cuando el proxy se niega, nada llega al host, y el mensaje incluye el estado HTTP del proxy:

2035 2038 

2036```text theme={null}2039```text theme={null}

2037artifact content fetch failed (proxy refused the connection: HTTP 407)2040artifact content fetch failed (proxy refused the connection: HTTP 407)


2039the proxy refused the connection to the artifact's content host (HTTP 502)2042the proxy refused the connection to the artifact's content host (HTTP 502)

2040```2043```

2041 2044 

2042El estado es la respuesta del proxy a `CONNECT`. El host nunca respondió, por lo que cada estado apunta a una corrección diferente:2045El estado es la respuesta del proxy al `CONNECT`. El host nunca respondió, así que cada estado apunta a una solución diferente:

2043 2046 

2044* `HTTP 407`: el proxy requiere credenciales que no obtuvo. Póngalas en la URL del proxy, como muestra [Autenticación básica](/docs/es/network-config#basic-authentication).2047* `HTTP 407`: el proxy requiere credenciales que no recibió. Inclúyelas en la URL del proxy, como muestra [Autenticación básica](/docs/es/network-config#basic-authentication).

2045* `HTTP 403`: el proxy rechaza hacer un túnel a `*.frame.claudeusercontent.com`. Pida a quien ejecute el proxy que permita ese host, que [Requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) enumera.2048* `HTTP 403`: el proxy se niega a abrir un túnel hacia `*.frame.claudeusercontent.com`. Pide a quien administra el proxy que permita ese host, que figura en [Requisitos de acceso a la red](/docs/es/network-config#network-access-requirements).

2046* Cualquier otro estado, como `HTTP 502`: el proxy no abrió el túnel por su propia razón, como no poder alcanzar el host. Busque el estado en los registros del proxy.2049* Cualquier otro estado, como `HTTP 502`: el proxy no abrió el túnel por un motivo propio, como no poder alcanzar el host. Busca el estado en los registros del proxy.

2047* `unreadable reply` en lugar de un estado: lo que está en la dirección del proxy no respondió con una línea de estado HTTP. Verifique que la dirección sea un proxy HTTP.2050* `unreadable reply` en lugar de un estado: lo que hay en la dirección del proxy no respondió con una línea de estado HTTP. Verifica que la dirección corresponda a un proxy HTTP.

2048 2051 

2049**Qué hacer:**2052**Qué hacer:**

2050 2053 

2051* Verifique la dirección y las credenciales en la variable de proxy, como describe [Proxy configuration](/docs/es/network-config#proxy-configuration), luego ejecute `curl -x http://proxy.example.com:8080 -I https://api.anthropic.com` desde el shell en el que inicia Claude Code, usando su propia URL de proxy. En Windows PowerShell, ejecute `curl.exe`. Si esta sonda falla de la misma manera, corrija primero la configuración del proxy. Si tiene éxito, el rechazo es específico del host del artefacto.2054* Revisa la dirección y las credenciales en la variable de proxy, como se describe en [Configuración de proxy](/docs/es/network-config#proxy-configuration), y luego ejecuta `curl -x http://proxy.example.com:8080 -I https://api.anthropic.com` desde el shell en el que inicias Claude Code, usando tu propia URL de proxy. En Windows PowerShell, ejecuta `curl.exe`. Si esta prueba falla de la misma manera, corrige primero la configuración del proxy. Si tiene éxito, el rechazo es específico del host del artefacto.

2052* Si su red permite que Claude Code alcance el host del artefacto directamente, agregue `.frame.claudeusercontent.com` a [`NO_PROXY`](/docs/es/network-config#environment-variables). Mantenga la entrada estrecha: una entrada más amplia `.claudeusercontent.com` también omite el proxy para `bridge.claudeusercontent.com`, que las organizaciones con [lista de permitidos de IP](/docs/es/network-config#organization-ip-allowlists-and-proxy-egress) necesitan mantener en el proxy.2055* Si tu red permite que Claude Code alcance el host del artefacto directamente, agrega `.frame.claudeusercontent.com` a [`NO_PROXY`](/docs/es/network-config#environment-variables). Mantén la entrada así de acotada: una entrada más amplia como `.claudeusercontent.com` también omite el proxy para `bridge.claudeusercontent.com`, que las organizaciones con [listas de IP permitidas](/docs/es/network-config#organization-ip-allowlists-and-proxy-egress) necesitan mantener en el proxy.

2053 2056 

2054Antes de v2.1.238, Claude Code informaba un túnel rechazado como un error de red genérico.2057Antes de v2.1.238, Claude Code informaba un túnel rechazado como un error de red genérico.

2055 2058 


2057 El servicio de entornos en la nube devolvió una respuesta vacía o inesperada2060 El servicio de entornos en la nube devolvió una respuesta vacía o inesperada

2058</h3>2061</h3>

2059 2062 

2060Claude Code solicita su lista de [entornos en la nube](/docs/es/cloud-environments) en varios puntos, como cuando crea una sesión en la nube desde la CLI o ejecuta [`/remote-env`](/docs/es/cloud-environments#select-an-environment-from-the-cli). Cuando no puede leer la respuesta del servidor, muestra uno de estos mensajes:2063Claude Code solicita tu lista de [entornos en la nube](/docs/es/cloud-environments) en varios momentos, como cuando creas una sesión en la nube desde la CLI o ejecutas [`/remote-env`](/docs/es/cloud-environments#select-an-environment-from-the-cli). Cuando no puede leer la respuesta del servidor, muestra uno de estos mensajes:

2061 2064 

2062```text theme={null}2065```text theme={null}

2063The cloud environments service returned an empty response (HTTP 200 with no body). This is usually temporary — try again in a moment.2066The cloud environments service returned an empty response (HTTP 200 with no body). This is usually temporary — try again in a moment.


2065The cloud environments service returned a response in an unexpected format (HTTP 200 without a usable environments list). This is usually temporary — try again in a moment.2068The cloud environments service returned a response in an unexpected format (HTTP 200 without a usable environments list). This is usually temporary — try again in a moment.

2066```2069```

2067 2070 

2068El servidor aceptó la solicitud pero respondió con un cuerpo que no es la lista de entornos: vacío, no JSON, o JSON sin la lista. Esto generalmente acompaña una interrupción del lado del servicio y se resuelve por sí solo. Dependiendo de la superficie que solicitó la lista, Claude Code puede agregar un prefijo, como `couldn't list environments:` en el diálogo `/remote-env`.2071El servidor aceptó la solicitud pero respondió con un cuerpo que no es la lista de entornos: vacío, que no es JSON, o JSON sin la lista. Esto suele acompañar a una interrupción del lado del servicio y se resuelve por sí solo. Según la superficie que solicitó la lista, Claude Code puede agregar un prefijo, como `couldn't list environments:` en el diálogo de `/remote-env`.

2069 2072 

2070**Qué hacer:**2073**Qué hacer:**

2071 2074 

2072* Reintente la acción. Claude Code solicita la lista nuevamente cada vez2075* Vuelve a intentar la acción. Claude Code solicita la lista de nuevo cada vez

2073* Si el mensaje sigue apareciendo, verifique [status.claude.com](https://status.claude.com) para incidentes activos2076* Si el mensaje sigue apareciendo, consulta [status.claude.com](https://status.claude.com) para ver si hay incidentes activos

2074 2077 

2075Antes de v2.1.236, Claude Code mostraba un TypeError de JavaScript sin procesar en lugar de estos mensajes.2078Antes de v2.1.236, Claude Code mostraba un TypeError de JavaScript sin procesar en lugar de estos mensajes.

2076 2079 

2077<h3 id="couldnt-reconnect-to-your-remote-control-session">2080<h3 id="couldnt-reconnect-to-your-remote-control-session">

2078 No se pudo reconectar a su sesión de Remote Control2081 Couldn't reconnect to your Remote Control session

2079</h3>2082</h3>

2080 2083 

2081```text theme={null}2084```text theme={null}

2082Couldn't reconnect to your Remote Control session. Retry, or start a fresh session without --resume.2085Couldn't reconnect to your Remote Control session. Retry, or start a fresh session without --resume.

2083```2086```

2084 2087 

2085Reanudar con `claude --resume` o `claude --continue` se reconecta a la sesión de [Remote Control](/docs/es/remote-control) registrada en esa conversación. Este mensaje significa que la reconexión falló por una razón que puede ser temporal, como una interrupción de red o un error del servidor, por lo que Claude Code no puede confirmar si la sesión remota aún existe. Su sesión local sigue ejecutándose sin Remote Control.2088Al reanudar con `claude --resume` o `claude --continue`, Claude Code se vuelve a conectar a la sesión de [Remote Control](/docs/es/remote-control) registrada en esa conversación. Este mensaje significa que la reconexión falló por un motivo que puede ser temporal, como una interrupción de la red o un error del servidor, por lo que Claude Code no puede confirmar si la sesión remota todavía existe. Tu sesión local sigue ejecutándose sin Remote Control.

2086 2089 

2087**Qué hacer:**2090**Qué hacer:**

2088 2091 

2089* Ejecute `/remote-control` para reintentar la conexión2092* Ejecuta `/remote-control` para reintentar la conexión

2090* Inicie una nueva sesión con `claude --remote-control` para crear una nueva sesión de Remote Control2093* Inicia una nueva sesión con `claude --remote-control` para crear una nueva sesión de Remote Control

2091* Para otros mensajes de inicio de Remote Control, consulte [Solucionar problemas de Remote Control](/docs/es/remote-control#troubleshooting)2094* Para otros mensajes de inicio de Remote Control, consulta [Solución de problemas de Remote Control](/docs/es/remote-control#troubleshooting)

2092 2095 

2093Si el servidor informa en su lugar que la sesión anterior se ha ido, no ve este mensaje. Claude Code inicia una nueva sesión en su lugar o muestra [`Previous session is unavailable — run /remote-control to start a new one`](/docs/es/remote-control#previous-session-is-unavailable).2096Si el servidor informa en cambio que la sesión anterior ya no existe, no ves este mensaje. Claude Code inicia una nueva sesión en su lugar o muestra [`Previous session is unavailable — run /remote-control to start a new one`](/docs/es/remote-control#previous-session-is-unavailable).

2094 2097 

2095<h3 id="sessions-ended-while-this-machine-was-offline">2098<h3 id="sessions-ended-while-this-machine-was-offline">

2096 Las sesiones terminaron mientras esta máquina estaba sin conexión2099 Sessions ended while this machine was offline

2097</h3>2100</h3>

2098 2101 

2099Claude Code muestra este mensaje en la terminal que ejecuta [`claude remote-control`](/docs/es/remote-control#start-a-remote-control-session) después de que su máquina estuvo sin conexión el tiempo suficiente para que el servidor limpiara el entorno de Remote Control que su máquina estaba sirviendo. Las sesiones en ese entorno terminaron, y no puede reanudarlas. El recuento es el número de sesiones que terminaron.2102Claude Code muestra este mensaje en la terminal que ejecuta [`claude remote-control`](/docs/es/remote-control#start-a-remote-control-session) después de que tu máquina estuvo sin conexión el tiempo suficiente para que el servidor limpiara el entorno de Remote Control que tu máquina estaba atendiendo. Las sesiones de ese entorno terminaron y no puedes reanudarlas. El número indica cuántas sesiones terminaron.

2100 2103 

2101```text theme={null}2104```text theme={null}

21022 sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.21052 sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.


2104 2107 

2105**Qué hacer:**2108**Qué hacer:**

2106 2109 

2107* Cuando Claude Code enumera worktrees mantenidos bajo este mensaje, recoja cualquier trabajo no confirmado de ellos2110* Cuando Claude Code enumere worktrees conservados debajo de este mensaje, recupera de ellos cualquier trabajo sin confirmar

2108* Ejecute `claude remote-control` para iniciar un entorno nuevo2111* Ejecuta `claude remote-control` para iniciar un entorno nuevo

2109 2112 

2110<h3 id="couldnt-share-the-transcript">2113<h3 id="couldnt-share-the-transcript">

2111 No se pudo compartir la transcripción2114 Couldn't share the transcript

2112</h3>2115</h3>

2113 2116 

2114Después de que acepta compartir su transcripción de sesión desde un mensaje de encuesta, como la [encuesta de calidad de sesión](/docs/es/data-usage#session-quality-surveys), Claude Code la carga a Anthropic, o guarda un archivo local en su lugar en proveedores de terceros, en sesiones de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway), y cuando no hay credenciales de Anthropic disponibles. Este mensaje significa que el intercambio no se completó.2117Después de que aceptas compartir la transcripción de tu sesión desde una encuesta, como la [encuesta de calidad de la sesión](/docs/es/data-usage#session-quality-surveys), Claude Code la sube a Anthropic, o en su lugar guarda un archivo local en proveedores de terceros, en sesiones del [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway) y cuando no hay credenciales de Anthropic disponibles. Este mensaje significa que no se completó el envío.

2115 2118 

2116```text theme={null}2119```text theme={null}

2117Couldn't share the transcript.2120Couldn't share the transcript.

2118```2121```

2119 2122 

2120La carga debe ajustarse a un límite de 8 MiB. En una sesión larga, Claude Code progresivamente elimina partes del intercambio, la configuración del modelo de la última solicitud primero, luego la conversación estructurada y las transcripciones de subagentes, y muestra este mensaje cuando no se puede enviar ninguna versión reducida o un error de red o servidor detiene la carga. Cuando Claude Code guarda un archivo local en su lugar, el mensaje significa que no pudo escribir el archivo.2123La carga debe ajustarse a un límite de 8 MiB. En una sesión larga, Claude Code va descartando partes del contenido compartido, primero la configuración del modelo de la última solicitud y luego la conversación estructurada y las transcripciones de subagentes, y muestra este mensaje cuando no se puede enviar ninguna versión reducida o cuando un error de red o del servidor detiene la carga. Cuando Claude Code guarda un archivo local en su lugar, el mensaje significa que no pudo escribir el archivo.

2121 2124 

2122**Qué hacer:**2125**Qué hacer:**

2123 2126 

2124* Ejecute `/feedback` para enviar la transcripción con una descripción de lo que sucedió. Consulte [Reportar un error](#report-an-error) si `/feedback` no está disponible en su entorno2127* Ejecuta `/feedback` para enviar la transcripción con una descripción de lo que sucedió. Consulta [Reportar un error](#report-an-error) si `/feedback` no está disponible en tu entorno

2125* Si otras solicitudes también están fallando, verifique su conexión de red y consulte [No se puede conectar a la API](#unable-to-connect-to-api)2128* Si otras solicitudes también están fallando, revisa tu conexión de red y consulta [Unable to connect to API](#unable-to-connect-to-api)

2126 2129 

2127<h3 id="couldnt-send-feedback">2130<h3 id="couldnt-send-feedback">

2128 No se pudo enviar comentarios2131 Couldn't send feedback

2129</h3>2132</h3>

2130 2133 

2131Envió un informe desde el diálogo [`/feedback`, `/bug`, o `/share`](/docs/es/commands#all-commands) y la carga a Anthropic falló. El diálogo mantiene su texto para que pueda reintentar.2134Enviaste un informe desde el [diálogo de `/feedback`, `/bug` o `/share`](/docs/es/commands#all-commands) y la carga a Anthropic falló. El diálogo conserva tu texto para que puedas reintentar.

2132 2135 

2133```text theme={null}2136```text theme={null}

2134Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.2137Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.

2135```2138```

2136 2139 

2137El texto después del prefijo nombra lo que falló:2140El texto después del prefijo indica qué falló:

2138 2141 

2139* **`: not signed in. Run /login, then retry.`**: el diálogo se carga solo cuando Claude Code encontró credenciales de Anthropic cuando se abrió, y ninguna era utilizable en el momento en que envió. Por ejemplo, cerró sesión en esta máquina mientras tanto, o su inicio de sesión ya no pudo ser actualizado.2142* **`: not signed in. Run /login, then retry.`**: el diálogo solo sube el informe cuando Claude Code encontró credenciales de Anthropic al abrirse, y ninguna era utilizable en el momento del envío. Por ejemplo, cerraste sesión en esta máquina mientras tanto, o ya no se pudo renovar tu inicio de sesión.

2140* **Un paréntesis**: `(server returned <status>)` es el código de respuesta del servicio; `(request timed out)` y `(couldn't reach the service)` son fallos de red. Cuando Claude Code no puede nombrar una razón, el paréntesis está ausente.2143* **Un paréntesis**: `(server returned <status>)` es el código de respuesta del servicio; `(request timed out)` y `(couldn't reach the service)` son fallos de red. Cuando Claude Code no puede indicar un motivo, no aparece el paréntesis.

2141 2144 

2142En la [cola de borradores de comentarios](/docs/es/tools-reference#sendfeedback-tool-behavior), el mismo fallo termina con `The draft is still queued. Try again later.` en su lugar, y el borrador permanece en la cola para otro intento.2145En la [cola de borradores de comentarios](/docs/es/tools-reference#sendfeedback-tool-behavior), el mismo fallo termina en cambio con `The draft is still queued. Try again later.`, y el borrador permanece en la cola para otro intento.

2143 2146 

2144**Qué hacer:**2147**Qué hacer:**

2145 2148 

2146* Para la redacción no firmada, ejecute `/login` y envíe nuevamente2149* Si el mensaje indica que no iniciaste sesión, ejecuta `/login` y vuelve a enviar

2147* De lo contrario, envíe nuevamente; si otras solicitudes también están fallando, verifique su conexión de red y consulte [No se puede conectar a la API](#unable-to-connect-to-api)2150* De lo contrario, vuelve a enviar; si otras solicitudes también están fallando, revisa tu conexión de red y consulta [Unable to connect to API](#unable-to-connect-to-api)

2148* Si sigue fallando, presente el informe en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues), como dice el mensaje2151* Si sigue fallando, presenta el informe en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues), como indica el mensaje

2149 2152 

2150Antes de v2.1.281, cada envío falló con este mensaje una vez que un **Stop** de Remote Control o un mensaje urgente entre sesiones había llegado mientras el diálogo estaba abierto. En esas versiones, cierre el diálogo, reabralo, y envíe nuevamente.2153Antes de v2.1.281, todos los envíos fallaban con este mensaje una vez que llegaba un **Stop** de Remote Control o un mensaje urgente entre sesiones mientras el diálogo estaba abierto. En esas versiones, cierra el diálogo, vuelve a abrirlo y envía de nuevo.

2151 2154 

2152<h2 id="request-errors">2155<h2 id="request-errors">

2153 Errores de solicitud2156 Errores de solicitud


2865* Si tu solicitud no trataba sobre un tema de ciberseguridad, ejecuta `/feedback` para reportar el falso positivo2868* Si tu solicitud no trataba sobre un tema de ciberseguridad, ejecuta `/feedback` para reportar el falso positivo

2866* Para seguir trabajando en la misma sesión, presiona Esc dos veces o ejecuta `/rewind` para retroceder a un checkpoint anterior al turno que activó la marca, y luego adopta un enfoque diferente. Consulta [Checkpointing](/docs/es/checkpointing).2869* Para seguir trabajando en la misma sesión, presiona Esc dos veces o ejecuta `/rewind` para retroceder a un checkpoint anterior al turno que activó la marca, y luego adopta un enfoque diferente. Consulta [Checkpointing](/docs/es/checkpointing).

2867 2870 

2871<h3 id="output-blocked-by-content-filtering-policy">

2872 Output blocked by content filtering policy

2873</h3>

2874 

2875El filtro de contenido de salida de la API detuvo la respuesta que Claude estaba generando. El texto del mensaje proviene de la API:

2876 

2877```text theme={null}

2878API Error: Output blocked by content filtering policy

2879```

2880 

2881Claude Code muestra el error en cuanto llega el bloqueo y termina la solicitud ahí. No reintenta la solicitud, no la vuelve a enviar sin streaming ni cambia a un [modelo de respaldo](/docs/es/model-config#fallback-model-chains). Antes de v2.1.285, Claude Code podía volver a enviar y reintentar una solicitud bloqueada, a veces durante minutos, antes de mostrarte el error.

2882 

2883**Qué hacer:**

2884 

2885* Reformula tu último mensaje o adopta un enfoque diferente

2886* Para retroceder a un checkpoint anterior al turno que provocó el bloqueo, presiona Esc dos veces o ejecuta `/rewind`. Consulta [Checkpointing](/docs/es/checkpointing)

2887 

2868<h2 id="installation-errors">2888<h2 id="installation-errors">

2869 Errores de instalación2889 Errores de instalación

2870</h2>2890</h2>


4414 Teammate's agent definition was not restored4434 Teammate's agent definition was not restored

4415</h3>4435</h3>

4416 4436 

4417Claude envió un mensaje a un compañero de [equipo de agentes](/docs/es/agent-teams) detenido, y Claude Code lo reactivó sin volver a aplicar la [definición de subagente](/docs/es/agent-teams#use-subagent-definitions-for-teammates) desde la que fue generado, porque su archivo de definición provenía de una carpeta sin confianza guardada. El aviso sigue al informe de reanudación en el resultado de la herramienta del agente remitente:4437Claude envió un mensaje a un compañero de [equipo de agentes](/docs/es/agent-teams) detenido, y Claude Code lo reactivó sin volver a aplicar la [definición de subagente](/docs/es/agent-teams#use-subagent-definitions-for-teammates) desde la que fue generado. El aviso sigue al informe de reanudación en el resultado de la herramienta del agente remitente y nombra la razón. Cuando el archivo de definición provenía de una carpeta sin confianza guardada, dice:

4418 4438 

4419```text wrap theme={null}4439```text wrap theme={null}

4420Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.4440Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.


4467 Cross-session message was dropped at the recipient session's inbox4487 Cross-session message was dropped at the recipient session's inbox

4468</h3>4488</h3>

4469 4489 

4470Claude envió un [mensaje entre sesiones](/docs/es/cross-session-messaging) a otra de tus sesiones en esta máquina, y la bandeja de entrada de esa sesión lo descartó antes de que Claude en esa sesión lo leyera. La línea nombra la dirección del destinatario y, cuando el destinatario dio una razón, agrega la razón después de un guion:4490Claude envió un [mensaje entre sesiones](/docs/es/cross-session-messaging) a otra de tus sesiones en esta máquina, y la bandeja de entrada de esa sesión lo descartó antes de que Claude en esa sesión lo leyera. La línea nombra al destinatario y, cuando el destinatario dio una razón, agrega la razón después de un guion:

4471 4491 

4472```text wrap theme={null}4492```text wrap theme={null}

4473Cross-session message was dropped at the recipient session's inbox (recipient: uds:/tmp/cc-socks/13605.sock) and not delivered — its queue of undelivered peer messages was full. Claude was told not to resend right away.4493Cross-session message was dropped at the recipient session's inbox (recipient: uds:/tmp/cc-socks/13605.sock) and not delivered — its queue of undelivered peer messages was full. Claude was told not to resend right away.

hooks.md +574 −569

Details

1159 Eventos de hooks1159 Eventos de hooks

1160</h2>1160</h2>

1161 1161 

1162Cada evento corresponde a un punto en el ciclo de vida de Claude Code donde los hooks pueden ejecutarse. Las secciones siguientes están ordenadas para coincidir con el ciclo de vida: desde la configuración de la sesión a través del bucle agéntico hasta el final de la sesión. Cada sección describe cuándo se dispara el evento, qué matchers admite, la entrada JSON que recibe y cómo controlar el comportamiento a través de la salida.1162Cada evento corresponde a un punto del ciclo de vida de Claude Code en el que pueden ejecutarse hooks. Las secciones siguientes están ordenadas según el ciclo de vida: desde la configuración de la sesión, pasando por el bucle agéntico, hasta el final de la sesión. Cada sección describe cuándo se dispara el evento, qué matchers admite, la entrada JSON que recibe y cómo controlar el comportamiento mediante la salida.

1163 1163 

1164<h3 id="sessionstart">1164<h3 id="sessionstart">

1165 SessionStart1165 SessionStart

1166</h3>1166</h3>

1167 1167 

1168Se ejecuta cuando Claude Code inicia una nueva sesión o reanuda una sesión existente. Útil para cargar contexto de desarrollo como problemas existentes o cambios recientes en su base de código, o configurar variables de entorno. Para contexto estático que no requiere un script, use [CLAUDE.md](/docs/es/memory) en su lugar.1168Se ejecuta cuando Claude Code inicia una sesión nueva o reanuda una sesión existente. Es útil para cargar contexto de desarrollo, como issues existentes o cambios recientes en tu base de código, o para configurar variables de entorno. Para contexto estático que no requiere un script, usa [CLAUDE.md](/docs/es/memory) en su lugar.

1169 1169 

1170SessionStart se ejecuta en cada sesión, así que mantenga estos hooks rápidos. Solo se admiten hooks `type: "command"` y `type: "mcp_tool"`. Consulte [campos de hook de herramienta MCP](#mcp-tool-hook-fields) para saber cuándo se ejecutan los hooks `mcp_tool`.1170SessionStart se ejecuta en cada sesión, así que mantén estos hooks rápidos. Solo se admiten hooks `type: "command"` y `type: "mcp_tool"`. Consulta [Campos de hooks de herramientas MCP](#mcp-tool-hook-fields) para saber cuándo se ejecutan los hooks `mcp_tool`.

1171 1171 

1172El valor del matcher corresponde a cómo se inició la sesión:1172El valor del matcher corresponde a cómo se inició la sesión:

1173 1173 

1174| Matcher | Cuándo se dispara |1174| Matcher | Cuándo se dispara |

1175| :- | :- |1175| :- | :- |

1176| `startup` | Nueva sesión |1176| `startup` | Sesión nueva |

1177| `resume` | `--resume`, `--continue`, o `/resume` |1177| `resume` | `--resume`, `--continue` o `/resume` |

1178| `clear` | `/clear` |1178| `clear` | `/clear` |

1179| `compact` | Compactación automática o manual |1179| `compact` | Compactación automática o manual |

1180| `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) |1180| `fork` | Una sesión nueva bifurcada de una existente: `--fork-session` con `--resume` o `--continue`, la copia en segundo plano de `/fork`, `/branch` o una conversación que [mueves al segundo plano](/docs/es/agent-view#from-inside-a-session) |

1181 1181 

1182Antes de v2.1.214, las sesiones bifurcadas reportaban origen `"resume"`.1182Antes de la v2.1.214, las sesiones bifurcadas informaban el origen `"resume"`.

1183 1183 

1184Cuando 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.1184Cuando inicias una sesión interactiva, reanudas una conversación al arrancar con `--continue` o `--resume`, o ejecutas `/clear`, los hooks SessionStart se ejecutan en segundo plano. Puedes escribir de inmediato, y una conversación que reanudaste aparece sin esperar a los hooks. La primera respuesta de Claude sigue esperando a que los hooks terminen, para que su contexto llegue a Claude.

1185 1185 

1186Cuando 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.1186Cuando cambias de conversación con `/resume` dentro de una sesión, el cambio espera a que los hooks terminen. Si ejecutas `/clear` o cambias a otra conversación mientras los hooks en segundo plano todavía se están ejecutando, nada de lo que devuelvan se aplica a la sesión.

1187 1187 

1188La 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.1188La misma espera se aplica al arrancar, incluida una sesión reanudada: un prompt que envías mientras los hooks SessionStart todavía se están ejecutando no llega a Claude hasta que terminan.

1189 1189 

1190Durante cualquiera de las esperas, presione `Esc` para recuperar el prompt en la entrada sin enviarlo. Los hooks siguen ejecutándose.1190Durante cualquiera de las dos esperas, presiona `Esc` para devolver el prompt a la entrada sin enviarlo. Los hooks siguen ejecutándose.

1191 1191 

1192<h4 id="sessionstart-input">1192<h4 id="sessionstart-input">

1193 Entrada de SessionStart1193 Entrada de SessionStart

1194</h4>1194</h4>

1195 1195 

1196Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionStart reciben `source` y opcionalmente `model`, `agent_type`, y `session_title`:1196Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionStart reciben `source` y, opcionalmente, `model`, `agent_type` y `session_title`:

1197 1197 

1198| Campo | Descripción |1198| Campo | Descripción |

1199| :- | :- |1199| :- | :- |

1200| `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 |1200| `source` | Cómo se inició la sesión: `"startup"` para sesiones nuevas, `"resume"` para sesiones reanudadas, `"clear"` después de `/clear`, `"compact"` después de la compactación o `"fork"` para una sesión nueva bifurcada de una existente |

1201| `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 |1201| `model` | El identificador del modelo activo. Puede omitirse, por ejemplo después de `/clear` o cuando una sesión se restaura mediante la recuperación de conversaciones, así que comprueba que el campo exista antes de leerlo |

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

1203| `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 |1203| `session_title` | El título personalizado de la sesión, presente cuando hay uno definido, por ejemplo con `--name`, `/rename`, la salida `sessionTitle` de un hook o `renameSession()` del Agent SDK. Un hook que emite `sessionTitle` puede comprobar primero este campo para evitar sobrescribir un título personalizado existente |

1204 1204 

1205Una sesión que no ha nombrado aún puede tener un [título generado](/docs/es/sessions#name-your-sessions). Ese título no es un título personalizado y no aparece en `session_title`.1205Una sesión a la que no le has puesto nombre puede tener igualmente un [título generado](/docs/es/sessions#name-your-sessions). Ese título no es un título personalizado y no aparece en `session_title`.

1206 1206 

1207Cuando `source` es `"resume"` o `"fork"` y la transcripción contiene al menos una respuesta de Claude, los hooks SessionStart también reciben los cuatro campos siguientes. Su hook puede usarlos para reportar qué cuesta reanudar una conversación obsoleta antes de la primera solicitud, por ejemplo en un [`systemMessage`](#json-output). Estos campos requieren Claude Code v2.1.251 o posterior.1207Cuando `source` es `"resume"` o `"fork"` y la transcripción contiene al menos una respuesta de Claude, los hooks SessionStart también reciben los cuatro campos siguientes. Tu hook puede usarlos para informar cuánto cuesta reanudar una conversación antigua antes de la primera solicitud, por ejemplo en un [`systemMessage`](#json-output). Estos campos requieren Claude Code v2.1.251 o posterior.

1208 1208 

1209| Campo | Descripción |1209| Campo | Descripción |

1210| :- | :- |1210| :- | :- |

1211| `seconds_since_last_response` | Segundos de reloj de pared desde la última respuesta en la transcripción reanudada |1211| `seconds_since_last_response` | Segundos de tiempo real desde la última respuesta en la transcripción reanudada |

1212| `context_tokens` | Tokens que la primera solicitud de la sesión reanudada reenvía como su prompt |1212| `context_tokens` | Tokens que la primera solicitud de la sesión reanudada vuelve a enviar como su prompt |

1213| `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é |1213| `prompt_cache_likely_expired` | `true` cuando la última respuesta es más antigua que la [vida útil de la caché de prompts](/docs/es/prompt-caching#cache-lifetime) de la sesión o una compactación posterior reemplazó la conversación almacenada en caché |

1214| `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 |1214| `estimated_cache_write_usd` | Costo estimado en dólares estadounidenses de escribir `context_tokens` en la caché de prompts con el modelo de la sesión, sin incluir la respuesta |

1215 1215 

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

1217 1217 

1218```json theme={null}1218```json theme={null}

1219{1219{


1231```1231```

1232 1232 

1233<h4 id="sessionstart-decision-control">1233<h4 id="sessionstart-decision-control">

1234 Control de decisión de SessionStart1234 Control de decisiones de SessionStart

1235</h4>1235</h4>

1236 1236 

1237Claude Code agrega stdout que [trata como texto plano](#exit-code-0) al contexto de Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver estos campos específicos del evento:1237Claude Code agrega al contexto de Claude la stdout que [trata como texto plano](#exit-code-0). Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puedes devolver estos campos específicos del evento:

1238 1238 

1239| Campo | Descripción |1239| Campo | Descripción |

1240| :- | :- |1240| :- | :- |

1241| `additionalContext` | Cadena agregada al contexto de Claude al inicio de la conversación, antes del primer prompt. Consulte [Agregar contexto para Claude](#add-context-for-claude) para saber cómo se entrega el texto y qué poner en él |1241| `additionalContext` | Cadena agregada al contexto de Claude al inicio de la conversación, antes del primer prompt. Consulta [Agregar contexto para Claude](#add-context-for-claude) para saber cómo se entrega el texto y qué poner en él |

1242| `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 |1242| `initialUserMessage` | Cadena usada como primer mensaje de usuario de la sesión. Se aplica en [modo no interactivo](/docs/es/headless) con el flag `-p`, donde se convierte en el primer turno incluso si no se proporciona ningún prompt. Si se proporciona un prompt, este sigue como el siguiente turno. A diferencia de `additionalContext`, que se adjunta a un turno existente, esto crea el turno |

1243| `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"` |1243| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Úsalo para nombrar sesiones automáticamente a partir de la carpeta de inicio, la rama de git o el nombre del worktree. Se aplica cuando `source` es `"startup"`, `"resume"` o `"fork"`; se ignora con `"clear"` y `"compact"` |

1244| `watchPaths` | Matriz de rutas absolutas para observar eventos [FileChanged](#filechanged) durante esta sesión |1244| `watchPaths` | Array de rutas absolutas que se vigilan para eventos [FileChanged](#filechanged) durante esta sesión |

1245| `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 |1245| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a examinar los directorios de [skills](/docs/es/skills) y comandos después de que terminan los hooks SessionStart, de modo que los skills que instaló el hook están disponibles en la misma sesión, a partir del primer prompt |

1246 1246 

1247```json theme={null}1247```json theme={null}

1248{1248{


1254}1254}

1255```1255```

1256 1256 

1257Dado 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`.1257Como la stdout en texto plano ya llega a Claude para este evento, un hook que solo carga contexto puede imprimir directamente en stdout sin construir JSON. Usa la forma JSON cuando necesites combinar contexto con otros campos, como `sessionTitle`.

1258 1258 

1259Use `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:1259Usa `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/` solo aparecerían en la siguiente sesión. Este ejemplo sincroniza un repositorio compartido de skills y solicita el nuevo examen:

1260 1260 

1261```bash theme={null}1261```bash theme={null}

1262#!/bin/bash1262#!/bin/bash


1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1268```1268```

1269 1269 

1270La URL del repositorio es un marcador de posición; reemplácela con su propio repositorio de skills. Con el marcador de posición, el clon falla e imprime un mensaje `fatal:` a stderr. Stderr de un hook SessionStart que sale con 0 es solo informativo, por lo que la solicitud `reloadSkills` aún se aplica.1270La URL del repositorio es un marcador de posición; reemplázala por tu propio repositorio de skills. Con el marcador de posición, el clon falla e imprime un mensaje `fatal:` en stderr. La stderr de un hook SessionStart que sale con 0 es solo informativa, así que la solicitud `reloadSkills` se sigue aplicando.

1271 1271 

1272<h4 id="persist-environment-variables">1272<h4 id="persist-environment-variables">

1273 Persistir variables de entorno1273 Persistir variables de entorno

1274</h4>1274</h4>

1275 1275 

1276Los hooks SessionStart tienen acceso a la variable de entorno `CLAUDE_ENV_FILE`, que proporciona una ruta de archivo donde puede persistir variables de entorno para comandos Bash posteriores.1276Los hooks SessionStart tienen acceso a la variable de entorno `CLAUDE_ENV_FILE`, que proporciona una ruta de archivo donde puedes persistir variables de entorno para los comandos Bash posteriores.

1277 1277 

1278Para establecer variables de entorno individuales, escriba declaraciones `export` en `CLAUDE_ENV_FILE`. Use append (`>>`) para preservar variables establecidas por otros hooks:1278Para establecer variables de entorno individuales, escribe instrucciones `export` en `CLAUDE_ENV_FILE`. Usa la anexión (`>>`) para conservar las variables establecidas por otros hooks:

1279 1279 

1280```bash theme={null}1280```bash theme={null}

1281#!/bin/bash1281#!/bin/bash


1289exit 01289exit 0

1290```1290```

1291 1291 

1292Para capturar todos los cambios de entorno de comandos de configuración, compare las variables exportadas antes y después:1292Para capturar todos los cambios del entorno de los comandos de configuración, compara las variables exportadas antes y después:

1293 1293 

1294```bash theme={null}1294```bash theme={null}

1295#!/bin/bash1295#!/bin/bash


1309```1309```

1310 1310 

1311<Note>1311<Note>

1312 `CLAUDE_ENV_FILE` está disponible para hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), y [FileChanged](#filechanged). Otros tipos de hooks no tienen acceso a esta variable.1312 `CLAUDE_ENV_FILE` está disponible para los hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) y [FileChanged](#filechanged). Los demás tipos de hooks no tienen acceso a esta variable.

1313</Note>1313</Note>

1314 1314 

1315<h3 id="setup">1315<h3 id="setup">

1316 Setup1316 Setup

1317</h3>1317</h3>

1318 1318 

1319Se dispara solo cuando inicia Claude Code con `--init-only`, o con `--init` o `--maintenance` en [modo no interactivo](/docs/es/headless) con la bandera `-p`. No se dispara en el inicio normal. Úselo para instalación de dependencias única o limpieza programada que dispara explícitamente desde CI o scripts, separado del inicio de sesión normal. Para inicialización por sesión, use [SessionStart](#sessionstart) en su lugar.1319Se dispara solo cuando inicias Claude Code con `--init-only`, o con `--init` o `--maintenance` en [modo no interactivo](/docs/es/headless) con el flag `-p`. No se dispara en un inicio normal. Úsalo para la instalación única de dependencias o para limpiezas programadas que activas explícitamente desde CI o scripts, de forma separada del inicio normal de la sesión. Para la inicialización por sesión, usa [SessionStart](#sessionstart) en su lugar.

1320 1320 

1321El valor del matcher corresponde a la bandera CLI que disparó el hook:1321El valor del matcher corresponde al flag de la CLI que activó el hook:

1322 1322 

1323| Matcher | Cuándo se dispara |1323| Matcher | Cuándo se dispara |

1324| :- | :- |1324| :- | :- |

1325| `init` | `claude --init-only` o `claude -p --init` |1325| `init` | `claude --init-only` o `claude -p --init` |

1326| `maintenance` | `claude -p --maintenance` |1326| `maintenance` | `claude -p --maintenance` |

1327 1327 

1328Cuando ejecuta `claude --init-only`, Claude Code ejecuta hooks Setup y hooks `SessionStart` con el matcher `startup`, luego sale sin iniciar una conversación.1328Cuando ejecutas `claude --init-only`, Claude Code ejecuta los hooks Setup y los hooks `SessionStart` con el matcher `startup`, y luego sale sin iniciar una conversación.

1329 1329 

1330Cuando inicia o continúa una conversación con `-p`, también necesita proporcionar un prompt, como argumento o canalizando en stdin. Puede omitir el prompt cuando un hook `SessionStart` proporciona [`initialUserMessage`](#sessionstart-decision-control) o cuando reanuda una sesión con una [llamada de herramienta diferida](#defer-a-tool-call-for-later).1330Cuando inicias o continúas una conversación con `-p`, también necesitas proporcionar un prompt, como argumento o mediante una canalización por stdin. Puedes omitir el prompt cuando un hook `SessionStart` proporciona [`initialUserMessage`](#sessionstart-decision-control) o cuando reanudas una sesión con una [llamada a herramienta diferida](#defer-a-tool-call-for-later).

1331 1331 

1332En 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.1332Si tiene éxito, `--init-only` no imprime nada en la terminal. Para confirmar que los hooks se ejecutaron, inicia con `claude --debug-file <path> --init-only`, reemplazando `<path>` por la ubicación de un archivo de log, y revisa el registro en busca de las entradas de los hooks Setup y SessionStart.

1333 1333 

1334Debido 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.1334Como Setup no se dispara en cada inicio, un plugin que necesita una dependencia instalada no puede depender solo de Setup. El patrón práctico es comprobar la dependencia en el primer uso e instalarla si falta, por ejemplo con un hook o skill que compruebe `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecute `npm install` si no existe. Consulta el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data) para saber dónde almacenar las dependencias instaladas. Si distribuyes tu plugin a través de un marketplace, es posible que no necesites este patrón: Claude Code [instala automáticamente las dependencias de paquetes de Node.js aptas](/docs/es/plugins/loading#node-js-package-dependencies) cuando almacena el plugin en caché.

1335 1335 

1336<h4 id="setup-input">1336<h4 id="setup-input">

1337 Entrada de Setup1337 Entrada de Setup

1338</h4>1338</h4>

1339 1339 

1340Además de los [campos de entrada comunes](#common-input-fields), los hooks Setup reciben un campo `trigger` establecido en `"init"` o `"maintenance"`:1340Además de los [campos de entrada comunes](#common-input-fields), los hooks Setup reciben un campo `trigger` con el valor `"init"` o `"maintenance"`:

1341 1341 

1342```json theme={null}1342```json theme={null}

1343{1343{


1350```1350```

1351 1351 

1352<h4 id="setup-decision-control">1352<h4 id="setup-decision-control">

1353 Control de decisión de Setup1353 Control de decisiones de Setup

1354</h4>1354</h4>

1355 1355 

1356Los 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`.1356Los hooks Setup no pueden bloquear; la ejecución continúa con cualquier código de salida. Con cualquier código de salida, Claude Code descarta los [campos de salida JSON](#json-output) de un hook Setup, como `systemMessage`, `continue` y `hookSpecificOutput.additionalContext`. Con `-p`, la stdout, la 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 inicias con `--output-format stream-json --verbose`.

1357 1357 

1358Los 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).1358Los hooks Setup tienen acceso a `CLAUDE_ENV_FILE`. Las variables escritas en ese archivo persisten en los comandos Bash posteriores de la sesión, igual que en los [hooks SessionStart](#persist-environment-variables). Solo los hooks `type: "command"` se ejecutan en `Setup`. Un hook `type: "mcp_tool"` en `Setup` siempre se omite, como se describe en [Campos de hooks de herramientas MCP](#mcp-tool-hook-fields).

1359 1359 

1360<h3 id="instructionsloaded">1360<h3 id="instructionsloaded">

1361 InstructionsLoaded1361 InstructionsLoaded

1362</h3>1362</h3>

1363 1363 

1364Se dispara cuando se carga un archivo `CLAUDE.md` o `.claude/rules/*.md` en el contexto. Este evento se dispara al inicio de la sesión para archivos cargados con entusiasmo y nuevamente más tarde cuando se cargan archivos de forma perezosa, por ejemplo cuando Claude accede a un subdirectorio que contiene un `CLAUDE.md` anidado o cuando las reglas condicionales con frontmatter `paths:` coinciden. El hook no admite bloqueo o control de decisión. Se ejecuta de forma asincrónica con fines de observabilidad.1364Se dispara cuando un archivo `CLAUDE.md` o `.claude/rules/*.md` se carga en el contexto. Este evento se dispara al inicio de la sesión para los archivos cargados de forma anticipada y de nuevo más tarde cuando los archivos se cargan de forma diferida, por ejemplo cuando Claude accede a un subdirectorio que contiene un `CLAUDE.md` anidado o cuando coinciden reglas condicionales con frontmatter `paths:`. El hook no admite bloqueo ni control de decisiones. Se ejecuta de forma asíncrona con fines de observabilidad.

1365 1365 

1366Este evento no se dispara cuando Claude [lee `AGENTS.md` directamente](/docs/es/memory#agents-md) a través de la configuración **Instrucciones del proyecto**. Se dispara cuando un `CLAUDE.md` importa su `AGENTS.md`, con `load_reason` establecido en `include` como para cualquier otro archivo importado, y cuando `CLAUDE.md` es un enlace simbólico a él, como una carga normal de `CLAUDE.md`.1366Este evento no se dispara cuando Claude [lee `AGENTS.md` directamente](/docs/es/memory#agents-md) mediante el ajuste **Project instructions**. Sí se dispara cuando un `CLAUDE.md` importa tu `AGENTS.md`, con `load_reason` establecido en `include` como para cualquier otro archivo importado, y cuando `CLAUDE.md` es un enlace simbólico a él, como una carga normal de `CLAUDE.md`.

1367 1367 

1368El matcher se ejecuta contra `load_reason`. Por ejemplo, use `"matcher": "session_start"` para dispararse solo para archivos cargados al inicio de la sesión, o `"matcher": "path_glob_match|nested_traversal"` para dispararse solo para cargas perezosas.1368El matcher se evalúa contra `load_reason`. Por ejemplo, usa `"matcher": "session_start"` para dispararse solo con los archivos cargados al inicio de la sesión, o `"matcher": "path_glob_match|nested_traversal"` para dispararse solo con las cargas diferidas.

1369 1369 

1370<h4 id="instructionsloaded-input">1370<h4 id="instructionsloaded-input">

1371 Entrada de InstructionsLoaded1371 Entrada de InstructionsLoaded


1376| Campo | Descripción |1376| Campo | Descripción |

1377| :- | :- |1377| :- | :- |

1378| `file_path` | Ruta absoluta al archivo de instrucciones que se cargó |1378| `file_path` | Ruta absoluta al archivo de instrucciones que se cargó |

1379| `memory_type` | Alcance del archivo: `"User"`, `"Project"`, `"Local"`, o `"Managed"` |1379| `memory_type` | Alcance del archivo: `"User"`, `"Project"`, `"Local"` o `"Managed"` |

1380| `load_reason` | Por qué se cargó el archivo: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, o `"compact"`. El valor `"compact"` se dispara cuando los archivos de instrucciones se recargan después de un evento de compactación |1380| `load_reason` | Por qué se cargó el archivo: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` o `"compact"`. El valor `"compact"` se dispara cuando los archivos de instrucciones se vuelven a cargar después de un evento de compactación |

1381| `globs` | Patrones de glob de ruta del frontmatter `paths:` del archivo, si los hay. Presente solo para cargas `path_glob_match` |1381| `globs` | Patrones glob de rutas del frontmatter `paths:` del archivo, si los hay. Presente solo en las cargas `path_glob_match` |

1382| `trigger_file_path` | Ruta al archivo cuyo acceso disparó esta carga, para cargas perezosas |1382| `trigger_file_path` | Ruta al archivo cuyo acceso activó esta carga, en las cargas diferidas |

1383| `parent_file_path` | Ruta al archivo de instrucciones padre que incluyó este, para cargas `include` |1383| `parent_file_path` | Ruta al archivo de instrucciones padre que incluyó este, en las cargas `include` |

1384 1384 

1385```json theme={null}1385```json theme={null}

1386{1386{


1395```1395```

1396 1396 

1397<h4 id="instructionsloaded-decision-control">1397<h4 id="instructionsloaded-decision-control">

1398 Control de decisión de InstructionsLoaded1398 Control de decisiones de InstructionsLoaded

1399</h4>1399</h4>

1400 1400 

1401Los 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.1401Los hooks InstructionsLoaded no tienen control de decisiones. No pueden bloquear ni modificar la carga de instrucciones. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage` y `continue`. Usa este evento para registros de auditoría, seguimiento de cumplimiento u observabilidad.

1402 1402 

1403<h3 id="userpromptsubmit">1403<h3 id="userpromptsubmit">

1404 UserPromptSubmit1404 UserPromptSubmit

1405</h3>1405</h3>

1406 1406 

1407Se ejecuta cuando el usuario envía un prompt, antes de que Claude lo procese. Esto le permite agregar contexto adicional basado en el prompt/conversación, validar prompts o bloquear ciertos tipos de prompts.1407Se ejecuta cuando el usuario envía un prompt, antes de que Claude lo procese. Esto te permite

1408agregar contexto adicional según el prompt o la conversación, validar prompts o

1409bloquear ciertos tipos de prompts.

1408 1410 

1409Los hooks `UserPromptSubmit` tienen un tiempo de espera predeterminado de 30 segundos para tipos `command`, `http` y `mcp_tool`, más corto que el predeterminado de 600 segundos para esos tipos en la mayoría de otros eventos. Debido a que este hook se ejecuta antes de cada prompt y bloquea el procesamiento del modelo hasta que se completa, un hook atascado detiene la sesión. Si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.1411Los hooks `UserPromptSubmit` tienen un tiempo de espera predeterminado de 30 segundos para los tipos `command`, `http` y `mcp_tool`, más corto que el predeterminado de 600 segundos para esos tipos en la mayoría de los demás eventos. Como este hook se ejecuta antes de cada prompt y bloquea el procesamiento del modelo hasta que termina, un hook atascado detiene la sesión. Si tu hook necesita más tiempo, establece el campo `timeout` en la entrada del hook.

1410 1412 

1411Aparte 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ó.1413Salvo un hook de comando que ejecutas con [`async: true`](#run-hooks-in-the-background), un hook de comando, HTTP o de herramienta MCP de `UserPromptSubmit` que agota su tiempo de espera se cancela y su salida, incluido cualquier `additionalContext`, se descarta. El prompt sigue llegando a Claude sin ese contexto. La transcripción muestra un aviso que nombra el hook, el tiempo de espera que se agotó y que la salida se descartó.

1412 1414 

1413Un [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.1415Un [hook de callback del Agent SDK](/docs/es/agent-sdk/hooks) en `UserPromptSubmit` que agota su tiempo de espera bloquea el prompt con un mensaje que nombra el hook y el tiempo de espera, porque un callback ahí puede actuar como una barrera de políticas que no debe fallar en abierto. La sesión continúa. Antes de la v2.1.208, un tiempo de espera agotado de un callback en ese evento terminaba el turno con un error de ejecución.

1414 1416 

1415<h4 id="userpromptsubmit-input">1417<h4 id="userpromptsubmit-input">

1416 Entrada de UserPromptSubmit1418 Entrada de UserPromptSubmit

1417</h4>1419</h4>

1418 1420 

1419Ademá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.1421Ademá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 contrajo en un marcador de posición `[Pasted text #N]` llega expandido en su lugar. En las sesiones en las que Claude Code [marca el texto pegado para Claude](/docs/es/terminal-config#how-claude-treats-pasted-text), ese contenido expandido se ubica entre una línea `<pasted_content id="…">` y una línea `</pasted_content id="…">`, así que ten en cuenta esas líneas si tu hook analiza el prompt.

1420 1422 

1421Los hooks UserPromptSubmit también reciben `session_title` cuando la sesión tiene un título personalizado, con el mismo significado que el [campo `session_title` de SessionStart](#sessionstart-input).1423Los hooks UserPromptSubmit también reciben `session_title` cuando la sesión tiene un título personalizado, con el mismo significado que el [campo `session_title` de SessionStart](#sessionstart-input).

1422 1424 


1432```1434```

1433 1435 

1434<h4 id="userpromptsubmit-decision-control">1436<h4 id="userpromptsubmit-decision-control">

1435 Control de decisión de UserPromptSubmit1437 Control de decisiones de UserPromptSubmit

1436</h4>1438</h4>

1437 1439 

1438Los hooks `UserPromptSubmit` pueden controlar si se procesa un prompt de usuario y agregar contexto. Todos los [campos de salida JSON](#json-output) están disponibles.1440Los hooks `UserPromptSubmit` pueden controlar si se procesa un prompt del usuario y agregar contexto. Todos los [campos de salida JSON](#json-output) están disponibles.

1439 1441 

1440Hay dos formas de agregar contexto a la conversación en código de salida 0:1442Hay dos formas de agregar contexto a la conversación con el código de salida 0:

1441 1443 

1442* **Stdout de texto plano**: Claude Code agrega stdout que [trata como texto plano](#exit-code-0) al contexto de Claude1444* **Stdout en texto plano**: Claude Code agrega al contexto de Claude la stdout que [trata como texto plano](#exit-code-0)

1443* **JSON con `additionalContext`**: use el formato JSON a continuación para más control. El campo `additionalContext` se agrega como contexto1445* **JSON con `additionalContext`**: usa el formato JSON siguiente para tener más control. El campo `additionalContext` se agrega como contexto

1444 1446 

1445Ningún canal produce una entrada de transcripción visible. El stdout plano y el valor `additionalContext` se inyectan cada uno como un recordatorio del sistema que comienza con el nombre del hook; Claude lee ambos. Para confirmar la entrega, verifique el [registro de depuración](#debug-hooks).1447Ninguno de los dos canales produce una entrada visible en la transcripción. La stdout en texto plano y el valor de `additionalContext` se inyectan cada uno como un recordatorio del sistema que comienza con el nombre del hook; Claude lee ambos. Para confirmar la entrega, revisa el [registro de depuración](#debug-hooks).

1446 1448 

1447Para bloquear un prompt, devuelva un objeto JSON con `decision` establecido en `"block"`:1449Para bloquear un prompt, devuelve un objeto JSON con `decision` establecido en `"block"`:

1448 1450 

1449| Campo | Descripción |1451| Campo | Descripción |

1450| :- | :- |1452| :- | :- |

1451| `decision` | `"block"` detiene el prompt antes de que llegue a Claude. Omita para permitir que el prompt continúe |1453| `decision` | `"block"` detiene el prompt antes de que llegue a Claude. Omítelo para permitir que el prompt continúe |

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

1453| `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. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

1454| `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. Úsalo para nombrar sesiones automáticamente según el contenido del prompt |

1455| `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) |1457| `suppressOriginalPrompt` | Si es `true` cuando el hook bloquea el prompt, deja el texto del prompt fuera del mensaje de bloqueo. Consulta [Lo que deja un prompt bloqueado](#what-a-blocked-prompt-leaves-behind) |

1456 1458 

1457Un 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.1459Un hook que bloquea saliendo con 2 se encamina igual que `reason`: el mensaje de bloqueo muestra el texto de stderr al usuario y no se agrega al contexto.

1458 1460 

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

1460{1462{


1470```1472```

1471 1473 

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

1473 Lo que un prompt bloqueado deja atrás1475 Lo que deja un prompt bloqueado

1474</h4>1476</h4>

1475 1477 

1476Un 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.1478Un prompt bloqueado nunca llega a Claude, pero su texto no se elimina de todas partes. De forma predeterminada, el mensaje de bloqueo que se muestra 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 disco. Para dejar el texto fuera del mensaje, imprime JSON con `"suppressOriginalPrompt": true` dentro de `hookSpecificOutput`. Esto funciona tanto si el hook bloquea con `decision: "block"` como si lo hace saliendo con 2. Un hook que sale con 2 y no imprime JSON siempre incluye el texto del prompt en su mensaje de bloqueo.

1477 1479 

1478`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).1480`suppressOriginalPrompt` solo cambia el mensaje de bloqueo. El texto enviado puede seguir apareciendo en archivos locales, como la transcripción de la sesión y tu historial de prompts, así que un hook de bloqueo no es una forma de mantener un secreto fuera del disco. Para limitar o eliminar esos archivos, consulta [Almacenamiento en texto plano](/docs/es/claude-directory#plaintext-storage) y [Borrar datos locales](/docs/es/claude-directory#clear-local-data).

1479 1481 

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

1481 UserPromptExpansion1483 UserPromptExpansion

1482</h3>1484</h3>

1483 1485 

1484Se 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`.1486Se ejecuta cuando un comando escrito por el usuario se expande en un prompt antes de llegar a Claude. Úsalo para impedir la invocación directa de comandos específicos, inyectar contexto para un skill en particular o registrar qué comandos invocan los usuarios. Por ejemplo, un hook que coincide con `deploy` puede bloquear `/deploy` a menos que exista un archivo de aprobación, o un hook que coincide con un skill de revisión puede anexar la lista de verificación de revisión del equipo como `additionalContext`.

1485 1487 

1486Este 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 evita `PreToolUse`. `UserPromptExpansion` se dispara en esa ruta directa.

1487 1489 

1488Coincide en `command_name`. Deje el matcher vacío para dispararse en cada comando de tipo prompt.1490Coincide con `command_name`. Deja el matcher vacío para dispararse con cada comando de tipo prompt.

1489 1491 

1490<h4 id="userpromptexpansion-input">1492<h4 id="userpromptexpansion-input">

1491 Entrada de UserPromptExpansion1493 Entrada de UserPromptExpansion

1492</h4>1494</h4>

1493 1495 

1494Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptExpansion reciben `expansion_type`, `command_name`, `command_args`, `command_source` y la cadena `prompt` original. El campo `expansion_type` es `slash_command` para skills y comandos personalizados, o `mcp_prompt` para prompts del servidor MCP.1496Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptExpansion reciben `expansion_type`, `command_name`, `command_args`, `command_source` y la cadena `prompt` original. El campo `expansion_type` es `slash_command` para skills y comandos personalizados, o `mcp_prompt` para los prompts de servidores MCP.

1495 1497 

1496```json theme={null}1498```json theme={null}

1497{1499{


1509```1511```

1510 1512 

1511<h4 id="userpromptexpansion-decision-control">1513<h4 id="userpromptexpansion-decision-control">

1512 Control de decisión de UserPromptExpansion1514 Control de decisiones de UserPromptExpansion

1513</h4>1515</h4>

1514 1516 

1515Los hooks `UserPromptExpansion` pueden bloquear la expansión o agregar contexto. Todos los [campos de salida JSON](#json-output) están disponibles.1517Los hooks `UserPromptExpansion` pueden bloquear la expansión o agregar contexto. Todos los [campos de salida JSON](#json-output) están disponibles.

1516 1518 

1517| Campo | Descripción |1519| Campo | Descripción |

1518| :- | :- |1520| :- | :- |

1519| `decision` | `"block"` evita que el comando se expanda. Omita para permitir que continúe |1521| `decision` | `"block"` impide que el comando se expanda. Omítelo para permitir que continúe |

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

1521| `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. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

1522 1524 

1523Un hook que bloquea saliendo 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 encamina igual que `reason`: el mensaje de bloqueo muestra el texto de stderr al usuario.

1524 1526 

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

1526{1528{


1537 MessageDisplay1539 MessageDisplay

1538</h3>1540</h3>

1539 1541 

1540Se ejecuta mientras un mensaje del asistente se transmite a la pantalla. Claude Code muestra el mensaje en incrementos: cada vez que un lote de líneas recién completadas está listo para renderizar, el hook se ejecuta una vez con esas líneas y Claude Code renderiza el texto de reemplazo del hook en su lugar. Un mensaje largo produce varias llamadas; un mensaje corto puede producir solo una.1542Se ejecuta mientras un mensaje del asistente se transmite a la pantalla. Claude Code muestra el mensaje en incrementos: cada vez que un lote de líneas recién completadas está listo para renderizarse, el hook se ejecuta una vez con esas líneas y Claude Code renderiza el texto de reemplazo del hook en su lugar. Un mensaje largo produce varias llamadas; un mensaje corto puede producir solo una.

1541 1543 

1542Use MessageDisplay para:1544Usa MessageDisplay para:

1543 1545 

1544* eliminar markdown para una visualización mínima1546* quitar el markdown para una visualización mínima

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

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

1547 1549 

1548Claude 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 tu hook devuelve, así que mantén el hook rápido. Si el hook falla o se agota su tiempo de espera, Claude Code muestra el texto original. El tiempo de espera predeterminado de este evento es de 10 segundos; si tu hook necesita más tiempo, establece el campo `timeout` en la entrada del hook.

1549 1551 

1550MessageDisplay es solo para visualización: el texto de reemplazo cambia solo lo que se renderiza en pantalla. La transcripción y lo que Claude ve mantienen el texto original, por lo que Claude nunca ve el reemplazo, y el modo detallado muestra el original. El hook recibe solo texto de mensaje del asistente, por lo que los resultados de herramientas y el texto que escribe se renderiza sin cambios.1552MessageDisplay es solo de visualización: el texto de reemplazo cambia solo lo que se renderiza en pantalla. La transcripción y lo que ve Claude conservan el texto original, así que Claude nunca ve el reemplazo, y el modo detallado muestra el original. El hook recibe solo el texto de los mensajes del asistente, por lo que los resultados de herramientas y el texto que escribes se renderizan sin cambios.

1551 1553 

1552MessageDisplay 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 con cada mensaje del asistente que transmite texto; los mensajes sin texto, como las respuestas que solo contienen llamadas a herramientas, no lo activan.

1553 1555 

1554En 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.1556En las ejecuciones no interactivas, incluidas las 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 única llamada llega después de que el mensaje se completa y lleva el texto completo del mensaje: `index` es `0`, `final` es `true` y `delta` contiene el mensaje entero. Un hook que recopila el texto de `delta` de cada mensaje recibe el mismo texto total en ambos modos.

1555 1557 

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

1557 Entrada de MessageDisplay1559 Entrada de MessageDisplay

1558</h4>1560</h4>

1559 1561 

1560Además de los [campos de entrada comunes](#common-input-fields), los hooks MessageDisplay reciben identificadores para el turno y el mensaje, la posición de esta llamada dentro del mensaje y el nuevo texto en `delta`. Los límites de lotes dependen de cómo se transmite el texto, así que use `index` y `final` para rastrear el progreso a través de un mensaje en lugar de esperar que las líneas se agrupen de una manera particular.1562Además de los [campos de entrada comunes](#common-input-fields), los hooks MessageDisplay reciben identificadores del turno y del mensaje, la posición de esta llamada dentro del mensaje y el texto nuevo en `delta`. Los límites de los lotes dependen de cómo se transmite el texto, así que usa `index` y `final` para seguir el progreso a lo largo de un mensaje en lugar de esperar que las líneas se agrupen de una forma particular.

1561 1563 

1562| Campo | Descripción |1564| Campo | Descripción |

1563| :- | :- |1565| :- | :- |

1564| `turn_id` | UUID del turno actual |1566| `turn_id` | UUID del turno actual |

1565| `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 está mostrando. Es estable en todos los lotes del mismo mensaje. No es el id `msg_…` de la API, así que no se puede correlacionar con los ids de los mensajes de la transcripción |

1566| `index` | Índice basado en cero de este lote dentro del mensaje |1568| `index` | Índice, con base cero, de este lote dentro del mensaje |

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

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

1569 1571 

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

1571{1573{


1589 1591 

1590| Campo | Descripción |1592| Campo | Descripción |

1591| :- | :- |1593| :- | :- |

1592| `displayContent` | Texto mostrado en lugar del delta. Omítalo para mostrar el original |1594| `displayContent` | Texto que se muestra en lugar del delta. Omítelo para mostrar el original |

1593 1595 

1594Los 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 decisiones. No pueden bloquear el mensaje ni 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`.

1595 1597 

1596Este 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`.1598Este ejemplo quita el formato markdown de las respuestas de Claude para una visualización en texto plano. El script lee cada lote desde stdin, elimina los marcadores de negrita y las comillas invertidas del código en línea de `delta`, y devuelve el resultado como `displayContent`.

1597 1599 

1598<Tabs>1600<Tabs>

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

1600 Registre un hook de comando para el evento en su archivo de configuración:1602 Registra un hook de comando para el evento en tu archivo de configuración:

1601 1603 

1602 ```json theme={null}1604 ```json theme={null}

1603 {1605 {


1617 }1619 }

1618 ```1620 ```

1619 1621 

1620 Guarde este script en `.claude/hooks/plain-display.sh` en su proyecto y hágalo ejecutable con `chmod +x`:1622 Guarda este script en `.claude/hooks/plain-display.sh` en tu proyecto y hazlo ejecutable con `chmod +x`:

1621 1623 

1622 ```bash theme={null}1624 ```bash theme={null}

1623 #!/bin/bash1625 #!/bin/bash


1626 </Tab>1628 </Tab>

1627 1629 

1628 <Tab title="Windows (PowerShell)">1630 <Tab title="Windows (PowerShell)">

1629 Registre un hook de comando que ejecute el script a través de PowerShell:1631 Registra un hook de comando que ejecute el script mediante PowerShell:

1630 1632 

1631 ```json theme={null}1633 ```json theme={null}

1632 {1634 {


1652 }1654 }

1653 ```1655 ```

1654 1656 

1655 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.1657 El flag `-NoProfile` omite la carga de tu perfil de PowerShell para que el hook arranque rápido, y `-ExecutionPolicy Bypass` permite que PowerShell ejecute el archivo de script local.

1656 1658 

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

1658 1660 

1659 ```powershell theme={null}1661 ```powershell theme={null}

1660 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json1662 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json


1669 </Tab>1671 </Tab>

1670</Tabs>1672</Tabs>

1671 1673 

1672Los lotes sin markdown pasan sin cambios. Si el script falla, por ejemplo porque falta `jq`, Claude Code muestra el texto original y solo nota el fallo en [salida de depuración](#debug-hooks), no en la sesión.1674Los lotes sin markdown pasan sin cambios. Si el script falla, por ejemplo porque falta `jq`, Claude Code muestra el texto original y anota el fallo solo en la [salida de depuración](#debug-hooks), no en la sesión.

1673 1675 

1674<h3 id="pretooluse">1676<h3 id="pretooluse">

1675 PreToolUse1677 PreToolUse

1676</h3>1678</h3>

1677 1679 

1678Se ejecuta después de que Claude crea parámetros de herramienta y antes de procesar la llamada de herramienta. Coincide en cualquier nombre de herramienta excepto `EndConversation`: herramientas integradas como `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, y `ExitPlanMode`, y cualquier [nombre de herramienta MCP](#match-mcp-tools).1680Se ejecuta después de que Claude crea los parámetros de la herramienta y antes de procesar la llamada a herramienta. Coincide con cualquier nombre de herramienta excepto `EndConversation`: herramientas integradas como `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion` y `ExitPlanMode`, y cualquier [nombre de herramienta MCP](#match-mcp-tools).

1679 1681 

1680Para 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 disco, sin importar qué lo escribió, usa [FileChanged](#filechanged) en lugar de hacer coincidir por nombre las herramientas de edición de archivos. A diferencia de PreToolUse, Claude Code ejecuta los hooks FileChanged después del cambio, y no tienen control de decisiones, así que no pueden bloquear la escritura.

1681 1683 

1682<Warning>1684<Warning>

1683 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.1685 PreToolUse solo se ejecuta cuando Claude llama a una herramienta. Los archivos que [referencias con `@` en tu prompt](/docs/es/common-workflows#reference-files-and-directories) se agregan sin ninguna llamada a herramienta: Claude Code inserta su contenido mientras construye el prompt, así que no se dispara ningún hook PreToolUse para ellos, incluidos los hooks que coinciden con `Read`. Para bloquear rutas específicas de las referencias con `@`, usa una [regla de denegación de `Read`](/docs/es/permissions#read-and-edit) en su lugar.

1684 1686 

1685 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).

1686</Warning>1688</Warning>

1687 1689 

1688Use [control de decisión PreToolUse](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada de herramienta.1690Usa el [control de decisiones de PreToolUse](#pretooluse-decision-control) para permitir, denegar, preguntar o diferir la llamada a herramienta.

1689 1691 

1690Un [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.1692Un [hook de callback del Agent SDK](/docs/es/agent-sdk/hooks) en `PreToolUse` que supera su tiempo de espera bloquea la llamada a herramienta, y Claude recibe un resultado de error que nombra el tiempo de espera. Una denegación explícita devuelta por otro hook sigue teniendo precedencia.

1691 1693 

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

1693 Entrada de PreToolUse1695 Entrada de PreToolUse

1694</h4>1696</h4>

1695 1697 

1696Ademá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`.

1697 1699 

1698Para 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.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 indica de dónde proviene la definición del servidor. Los valores de `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 e indica cómo tratar uno que no reconozcas. Basa 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.

1699 1701 

1700Para las herramientas de archivo `Write`, `Edit`, y `Read`, `tool_input.file_path` siempre es absoluto:1702Para las herramientas de archivos `Write`, `Edit` y `Read`, `tool_input.file_path` siempre es absoluta:

1701 1703 

1702* Claude Code expande `~` y rutas relativas antes de que se ejecuten los hooks, por lo que un hook que coincide en rutas no puede ser eludido a través de `~` o un deletreo relativo de la misma ruta1704* Claude Code expande `~` y las rutas relativas antes de que se ejecuten los hooks, así que un hook que coincide con rutas no se puede eludir mediante `~` o una forma relativa de escribir la misma ruta

1703* En Windows, la ruta llega con separadores de barra invertida, incluso cuando su hook se ejecuta bajo Git Bash donde `$PWD` se ve como `/c/project`1705* En Windows, la ruta llega con separadores de barra invertida, incluso cuando tu hook se ejecuta en Git Bash, donde `$PWD` se ve como `/c/project`

1704* Una comparación escrita con barras diagonales, como una verificación `/src/`, nunca coincide con una ruta de barra invertida, y la llamada de herramienta continúa como si el hook no tuviera nada que bloquear1706* Una comparación escrita con barras diagonales, como una comprobación de `/src/`, nunca coincide con una ruta con barras invertidas, y la llamada a herramienta continúa como si el hook no tuviera nada que bloquear

1705* Normalice separadores antes de comparar: `FILE_PATH="${FILE_PATH//\\//}"` en Bash, o `file_path.replace("\\", "/")` en Python, luego coincida con un segmento de ruta como `/src/` en lugar de anclar con `^`, ya que la ruta es absoluta1707* Normaliza los separadores antes de comparar: `FILE_PATH="${FILE_PATH//\\//}"` en Bash, o `file_path.replace("\\", "/")` en Python, y luego haz coincidir un segmento de ruta como `/src/` en lugar de anclar con `^`, ya que la ruta es absoluta

1706 1708 

1707Una llamada `Write` en Windows entrega:1709Una llamada a `Write` en Windows entrega:

1708 1710 

1709```json theme={null}1711```json theme={null}

1710{1712{


1718}1720}

1719```1721```

1720 1722 

1721Los campos `tool_input` dependen de la herramienta:1723Los campos de `tool_input` dependen de la herramienta:

1722 1724 

1723<a id="bash" />1725<a id="bash" />

1724 1726 


1726 Bash1728 Bash

1727</h5>1729</h5>

1728 1730 

1729Ejecuta comandos de shell.1731Ejecuta comandos del shell.

1730 1732 

1731| Campo | Tipo | Ejemplo | Descripción |1733| Campo | Tipo | Ejemplo | Descripción |

1732| :- | :- | :- | :- |1734| :- | :- | :- | :- |

1733| `command` | string | `"npm test"` | El comando de shell a ejecutar |1735| `command` | string | `"npm test"` | El comando del shell que se ejecutará |

1734| `description` | string | `"Run test suite"` | Descripción opcional de lo que hace el comando |1736| `description` | string | `"Run test suite"` | Descripción opcional de lo que hace el comando |

1735| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos. Los valores por encima del [máximo](/docs/es/tools-reference#bash-tool-behavior) se reducen al máximo en lugar de ser rechazados |1737| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos. Los valores por encima del [máximo](/docs/es/tools-reference#bash-tool-behavior) se reducen al máximo en lugar de rechazarse |

1736| `run_in_background` | boolean | `false` | Si se ejecuta el comando en segundo plano |1738| `run_in_background` | boolean | `false` | Si el comando se ejecuta en segundo plano |

1737 1739 

1738Cuando un comando Bash cambia archivos en un repositorio Git, Claude Code puede registrar qué cambió. Registra los cambios en cada modo de permiso cuando la configuración [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled) activa el registro; la entrada de esa configuración dice qué archivos pueden establecerla. De lo contrario, solo los registra en modo automático y modo `bypassPermissions`, y solo cuando Claude Code dirige a Claude a editar archivos a través de Bash. Establezca `bashEditDiffEnabled` en `false` para desactivar el registro. Los comandos de fondo y los comandos de solo lectura no llevan diff.1740Cuando un comando Bash cambia archivos en un repositorio Git, Claude Code puede registrar lo que cambió. Registra los cambios en todos los modos de permisos cuando el ajuste [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled) activa el registro; la entrada de ese ajuste indica qué archivos pueden establecerlo. De lo contrario, solo los registra en modo automático y en modo `bypassPermissions`, y solo cuando Claude Code indica a Claude que edite archivos mediante Bash. Establece `bashEditDiffEnabled` en `false` para desactivar el registro. Los comandos en segundo plano y los comandos de solo lectura no llevan diff.

1739 1741 

1740Su [hook PostToolUse](#posttooluse) luego recibe los archivos cambiados en `tool_response.bashEditDiff`. La lista cubre qué cambió bajo el repositorio mientras se ejecutaba el comando. Los archivos que Git ignora y los archivos en submódulos no se enumeran. Requiere Claude Code v2.1.269 o posterior.1742Tu [hook PostToolUse](#posttooluse) recibe entonces los archivos modificados en `tool_response.bashEditDiff`. La lista cubre lo que cambió dentro del repositorio mientras se ejecutaba el comando. Los archivos que Git ignora y los archivos de los submódulos no se incluyen. Requiere Claude Code v2.1.269 o posterior.

1741 1743 

1742<Note>1744<Note>

1743 La lista es mejor esfuerzo y en beta pública. Claude Code puede perder un cambio, incluir un archivo que otro proceso cambió al mismo tiempo, o detenerse en sus límites de tamaño. La forma del campo puede cambiar. Use la lista para encontrar qué revisar, no para hacer cumplir una política.1745 La lista es de mejor esfuerzo y está en beta pública. Claude Code puede pasar por alto un cambio, incluir un archivo que otro proceso cambió al mismo tiempo o detenerse en sus límites de tamaño. La forma del campo puede cambiar. Usa la lista para encontrar qué revisar, no para aplicar una política.

1744</Note>1746</Note>

1745 1747 

1746`changedFiles` y `files` enumeran qué cambió el comando; los campos restantes dicen qué tan completa y confiable es esa lista.1748`changedFiles` y `files` enumeran lo que cambió el comando; los campos restantes indican qué tan completa y qué tan fiable es esa lista.

1747 1749 

1748| Campo | Tipo | Ejemplo | Descripción |1750| Campo | Tipo | Ejemplo | Descripción |

1749| :- | :- | :- | :- |1751| :- | :- | :- | :- |

1750| `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 |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` sea mayor que cero |

1751| `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 modificados, para mostrar. `created` o `deleted` es `true` para un archivo que el comando agregó o eliminó |

1752| `moreFiles` | number | `2` | Recuento de archivos cambiados sin diff en `files` |1754| `moreFiles` | number | `2` | Cantidad de archivos modificados sin diff en `files` |

1753| `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 obtener |

1754| `skipped` | boolean | `true` | Se establece para un comando Git que mueve el árbol de trabajo, como `git checkout` o `git stash`, por lo que Claude Code no toma diff |1756| `skipped` | boolean | `true` | Se establece para un comando de Git que mueve el árbol de trabajo, como `git checkout` o `git stash`, de modo que Claude Code no obtiene ningún diff |

1755| `shared` | boolean | `true` | Se establece cuando otra llamada de herramienta Bash, como la de un subagente, se ejecutó en el mismo repositorio al mismo tiempo, por lo que algunos cambios enumerados pueden ser de ese comando |1757| `shared` | boolean | `true` | Se establece cuando otra llamada a la herramienta Bash, como la de un subagente, se ejecutó en el mismo repositorio al mismo tiempo, por lo que algunos cambios enumerados pueden ser de ese comando |

1756 1758 

1757<a id="powershell" />1759<a id="powershell" />

1758 1760 


1760 PowerShell1762 PowerShell

1761</h5>1763</h5>

1762 1764 

1763Ejecuta comandos de PowerShell. Consulte la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) para disponibilidad por plataforma.1765Ejecuta comandos de PowerShell. Consulta la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool) para conocer la disponibilidad por plataforma.

1764 1766 

1765Los campos coinciden con la herramienta Bash, con la cadena de comando en `command`:1767Los campos coinciden con los de la herramienta Bash, con la cadena del comando en `command`:

1766 1768 

1767| Campo | Tipo | Ejemplo | Descripción |1769| Campo | Tipo | Ejemplo | Descripción |

1768| :- | :- | :- | :- |1770| :- | :- | :- | :- |

1769| `command` | string | `"Get-ChildItem -Recurse"` | El comando de PowerShell a ejecutar |1771| `command` | string | `"Get-ChildItem -Recurse"` | El comando de PowerShell que se ejecutará |

1770| `description` | string | `"List files recursively"` | Descripción opcional de lo que hace el comando |1772| `description` | string | `"List files recursively"` | Descripción opcional de lo que hace el comando |

1771| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos |1773| `timeout` | number | `120000` | Tiempo de espera opcional en milisegundos |

1772| `run_in_background` | boolean | `false` | Si se ejecuta el comando en segundo plano |1774| `run_in_background` | boolean | `false` | Si el comando se ejecuta en segundo plano |

1773 1775 

1774Coincida con `Bash|PowerShell` en hooks que inspeccionan comandos de shell, para que cubran ambas herramientas:1776Haz coincidir `Bash|PowerShell` en los hooks que inspeccionan comandos del shell, para que cubran ambas herramientas:

1775 1777 

1776* En Windows, dondequiera que la herramienta PowerShell esté habilitada, Claude trata PowerShell como el shell principal y enruta comandos de shell a través de él.1778* En Windows, dondequiera que la herramienta PowerShell esté habilitada, Claude trata PowerShell como el shell principal y encamina los comandos del shell a través de él.

1777* En Windows sin Git Bash, la herramienta se habilita automáticamente y Claude Code no registra la herramienta Bash en absoluto.1779* En Windows sin Git Bash, la herramienta se habilita automáticamente y Claude Code no registra la herramienta Bash en absoluto.

1778* Un hook que coincide solo con `Bash` nunca se dispara allí.1780* Un hook que solo coincide con `Bash` nunca se dispara ahí.

1779 1781 

1780<h5 id="write">1782<h5 id="write">

1781 Write1783 Write


1785 1787 

1786| Campo | Tipo | Ejemplo | Descripción |1788| Campo | Tipo | Ejemplo | Descripción |

1787| :- | :- | :- | :- |1789| :- | :- | :- | :- |

1788| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo a escribir |1790| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo que se escribirá |

1789| `content` | string | `"file content"` | Contenido a escribir en el archivo |1791| `content` | string | `"file content"` | Contenido que se escribirá en el archivo |

1790 1792 

1791<h5 id="edit">1793<h5 id="edit">

1792 Edit1794 Edit


1796 1798 

1797| Campo | Tipo | Ejemplo | Descripción |1799| Campo | Tipo | Ejemplo | Descripción |

1798| :- | :- | :- | :- |1800| :- | :- | :- | :- |

1799| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo a editar |1801| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo que se editará |

1800| `old_string` | string | `"original text"` | Texto a encontrar y reemplazar |1802| `old_string` | string | `"original text"` | Texto que se buscará y reemplazará |

1801| `new_string` | string | `"replacement text"` | Texto de reemplazo |1803| `new_string` | string | `"replacement text"` | Texto de reemplazo |

1802| `replace_all` | boolean | `false` | Si se reemplazan todas las ocurrencias |1804| `replace_all` | boolean | `false` | Si se reemplazan todas las apariciones |

1803 1805 

1804<h5 id="read">1806<h5 id="read">

1805 Read1807 Read

1806</h5>1808</h5>

1807 1809 

1808Lee contenidos de archivo.1810Lee el contenido de archivos.

1809 1811 

1810| Campo | Tipo | Ejemplo | Descripción |1812| Campo | Tipo | Ejemplo | Descripción |

1811| :- | :- | :- | :- |1813| :- | :- | :- | :- |

1812| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo a leer |1814| `file_path` | string | `"/path/to/file.txt"` | Ruta absoluta al archivo que se leerá |

1813| `offset` | number | `10` | Número de línea opcional para comenzar a leer desde |1815| `offset` | number | `10` | Número de línea opcional desde el que empezar a leer |

1814| `limit` | number | `50` | Número opcional de líneas a leer |1816| `limit` | number | `50` | Número opcional de líneas que se leerán |

1815 1817 

1816<h5 id="glob">1818<h5 id="glob">

1817 Glob1819 Glob

1818</h5>1820</h5>

1819 1821 

1820Encuentra archivos que coinciden con un patrón glob.1822Busca archivos que coinciden con un patrón glob.

1821 1823 

1822| Campo | Tipo | Ejemplo | Descripción |1824| Campo | Tipo | Ejemplo | Descripción |

1823| :- | :- | :- | :- |1825| :- | :- | :- | :- |

1824| `pattern` | string | `"**/*.ts"` | Patrón glob para hacer coincidir archivos contra |1826| `pattern` | string | `"**/*.ts"` | Patrón glob con el que comparar los archivos |

1825| `path` | string | `"/path/to/dir"` | Directorio opcional para buscar. Por defecto es el directorio de trabajo actual |1827| `path` | string | `"/path/to/dir"` | Directorio opcional en el que buscar. De forma predeterminada, el directorio de trabajo actual |

1826 1828 

1827<h5 id="grep">1829<h5 id="grep">

1828 Grep1830 Grep

1829</h5>1831</h5>

1830 1832 

1831Busca contenidos de archivo con expresiones regulares.1833Busca en el contenido de archivos con expresiones regulares.

1832 1834 

1833| Campo | Tipo | Ejemplo | Descripción |1835| Campo | Tipo | Ejemplo | Descripción |

1834| :- | :- | :- | :- |1836| :- | :- | :- | :- |

1835| `pattern` | string | `"TODO.*fix"` | Patrón de expresión regular a buscar |1837| `pattern` | string | `"TODO.*fix"` | Patrón de expresión regular que se buscará |

1836| `path` | string | `"/path/to/dir"` | Archivo o directorio opcional para buscar en |1838| `path` | string | `"/path/to/dir"` | Archivo o directorio opcional en el que buscar |

1837| `glob` | string | `"*.ts"` | Patrón glob opcional para filtrar archivos |1839| `glob` | string | `"*.ts"` | Patrón glob opcional para filtrar archivos |

1838| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, o `"count"`. Por defecto es `"files_with_matches"` |1840| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"` o `"count"`. De forma predeterminada, `"files_with_matches"` |

1839| `-i` | boolean | `true` | Búsqueda insensible a mayúsculas y minúsculas |1841| `-i` | boolean | `true` | Búsqueda sin distinguir mayúsculas de minúsculas |

1840| `multiline` | boolean | `false` | Habilitar coincidencia multilínea |1842| `multiline` | boolean | `false` | Habilita la coincidencia multilínea |

1841 1843 

1842<h5 id="webfetch">1844<h5 id="webfetch">

1843 WebFetch1845 WebFetch


1847 1849 

1848| Campo | Tipo | Ejemplo | Descripción |1850| Campo | Tipo | Ejemplo | Descripción |

1849| :- | :- | :- | :- |1851| :- | :- | :- | :- |

1850| `url` | string | `"https://example.com/api"` | URL para obtener contenido de |1852| `url` | string | `"https://example.com/api"` | URL de la que obtener el contenido |

1851| `prompt` | string | `"Extract the API endpoints"` | Prompt a ejecutar en el contenido obtenido |1853| `prompt` | string | `"Extract the API endpoints"` | Prompt que se ejecutará sobre el contenido obtenido |

1852 1854 

1853<h5 id="websearch">1855<h5 id="websearch">

1854 WebSearch1856 WebSearch


1859| Campo | Tipo | Ejemplo | Descripción |1861| Campo | Tipo | Ejemplo | Descripción |

1860| :- | :- | :- | :- |1862| :- | :- | :- | :- |

1861| `query` | string | `"react hooks best practices"` | Consulta de búsqueda |1863| `query` | string | `"react hooks best practices"` | Consulta de búsqueda |

1862| `allowed_domains` | array | `["docs.example.com"]` | Opcional: incluir solo resultados de estos dominios |1864| `allowed_domains` | array | `["docs.example.com"]` | Opcional: incluye solo resultados de estos dominios |

1863| `blocked_domains` | array | `["spam.example.com"]` | Opcional: excluir resultados de estos dominios |1865| `blocked_domains` | array | `["spam.example.com"]` | Opcional: excluye resultados de estos dominios |

1864 1866 

1865<h5 id="agent">1867<h5 id="agent">

1866 Agent1868 Agent


1870 1872 

1871| Campo | Tipo | Ejemplo | Descripción |1873| Campo | Tipo | Ejemplo | Descripción |

1872| :- | :- | :- | :- |1874| :- | :- | :- | :- |

1873| `prompt` | string | `"Find all API endpoints"` | La tarea para que el agente realice |1875| `prompt` | string | `"Find all API endpoints"` | La tarea que realizará el agente |

1874| `description` | string | `"Find API endpoints"` | Descripción breve de la tarea |1876| `description` | string | `"Find API endpoints"` | Descripción breve de la tarea |

1875| `subagent_type` | string | `"Explore"` | Tipo de agente especializado a usar |1877| `subagent_type` | string | `"Explore"` | Tipo de agente especializado que se usará |

1876| `model` | string | `"sonnet"` | Alias de modelo opcional para anular el predeterminado |1878| `model` | string | `"sonnet"` | Alias de modelo opcional para sobrescribir el predeterminado |

1877 1879 

1878Cuando una llamada Agent en primer plano se completa, su [hook PostToolUse](#posttooluse) recibe el resultado del subagente y la telemetría de ejecución en `tool_response`. Lea estos campos para inspeccionar la ejecución; para resúmenes de tokens y costos en subagentes, use los [contadores de tokens y costos](/docs/es/monitoring-usage#token-counter) filtrados a `query_source` `"subagent"`, ya que `totalTokens` y `usage` cubren solo la solicitud final:1880Cuando una llamada a Agent en primer plano termina, tu [hook PostToolUse](#posttooluse) recibe el resultado del subagente y la telemetría de la ejecución en `tool_response`. Lee estos campos para inspeccionar la ejecución; para totales de tokens y costos entre subagentes, usa los [contadores de tokens y costos](/docs/es/monitoring-usage#token-counter) filtrados por `query_source` `"subagent"`, ya que `totalTokens` y `usage` cubren solo la solicitud final:

1879 1881 

1880| Campo | Tipo | Ejemplo | Descripción |1882| Campo | Tipo | Ejemplo | Descripción |

1881| :- | :- | :- | :- |1883| :- | :- | :- | :- |

1882| `status` | string | `"completed"` | `"completed"` para subagentes en primer plano, `"async_launched"` para subagentes en segundo plano. Los subagentes se ejecutan en segundo plano de forma predeterminada, por lo que una llamada a Agent que omite `run_in_background` también produce `"async_launched"` |1884| `status` | string | `"completed"` | `"completed"` para subagentes en primer plano, `"async_launched"` para subagentes en segundo plano. Los subagentes se ejecutan en segundo plano de forma predeterminada, así que una llamada a Agent que omite `run_in_background` también produce `"async_launched"` |

1883| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador para la ejecución del subagente |1885| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificador de la ejecución del subagente |

1884| `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 por `SubagentHandback`, una nota breve sobre esa entrega en su lugar |

1885| `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 con el que empezó el subagente, que puede diferir del modelo solicitado |

1886| `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 usados en orden, con las repeticiones consecutivas contraídas; se establece solo cuando el modelo se cambió a mitad de la ejecución. Requiere Claude Code v2.1.212 o posterior |

1887| `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 |1889| `totalTokens` | number | `12450` | Cantidad de tokens de la solicitud final a la API del subagente: tokens de entrada, de salida y de caché combinados. No es un total de toda la ejecución |

1888| `totalDurationMs` | number | `48211` | Duración de reloj de pared de la ejecución del subagente |1890| `totalDurationMs` | number | `48211` | Duración en tiempo real de la ejecución del subagente |

1889| `totalToolUseCount` | number | `7` | Recuento de llamadas de herramienta que hizo el subagente |1891| `totalToolUseCount` | number | `7` | Cantidad de llamadas a herramientas que hizo el subagente |

1890| `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 a la API: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1891 1893 

1892En 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 mediante esa herramienta en lugar de devolverlo como texto. El campo `content` de su resultado `completed` lleva entonces una nota breve sobre esa entrega en lugar del informe en sí. Para leer el informe, haz coincidir un hook `PreToolUse` o `PostToolUse` con `SubagentHandback` y lee `tool_input.message`.

1893 1895 

1894Para 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`.1896Para los subagentes en segundo plano, la herramienta devuelve cuando la tarea pasa a segundo plano, así que `tool_response` no lleva campos de uso: un inicio en segundo plano devuelve de inmediato, y una tarea en primer plano que Claude Code pasa a segundo plano a mitad de la ejecución devuelve en esa transición. Tiene `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` y `resolvedModel`.

1895 1897 

1896En 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.1898En una respuesta `completed`, `resolvedModel` nombra el modelo con el que empezó el subagente, que puede diferir del valor de `model` en `tool_input`, por ejemplo cuando se aplica `availableModels` u otra sobrescritura. En una respuesta `async_launched`, `resolvedModel` nombra el modelo en uso cuando el agente pasó a segundo plano, de modo que un cambio ocurrido antes de pasar a segundo plano se refleja ahí. `modelsUsed` y el comportamiento de `resolvedModel` en el momento de pasar a segundo plano requieren Claude Code v2.1.212 o posterior.

1897 1899 

1898<a id="askuserquestion" />1900<a id="askuserquestion" />

1899 1901 


1901 AskUserQuestion1903 AskUserQuestion

1902</h5>1904</h5>

1903 1905 

1904Hace al usuario una a cuatro preguntas de opción múltiple.1906Hace al usuario de una a cuatro preguntas de opción múltiple.

1905 1907 

1906| Campo | Tipo | Ejemplo | Descripción |1908| Campo | Tipo | Ejemplo | Descripción |

1907| :- | :- | :- | :- |1909| :- | :- | :- | :- |

1908| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Preguntas a presentar, cada una con una cadena `question`, `header` corto, matriz `options`, y bandera `multiSelect` opcional |1910| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Preguntas que se presentarán, cada una con una cadena `question`, un `header` breve, un array `options` y un flag `multiSelect` opcional |

1909| `answers` | object | `{"Which framework?": "React"}` | Opcional. Asigna texto de pregunta a la etiqueta de opción seleccionada. Las respuestas de selección múltiple unen etiquetas con comas. Claude no establece este campo; suministrarlo a través de `updatedInput` para responder programáticamente |1911| `answers` | object | `{"Which framework?": "React"}` | Opcional. Asigna el texto de la pregunta a la etiqueta de la opción seleccionada. Las respuestas de selección múltiple unen las etiquetas con comas. Claude no establece este campo; proporciónalo mediante `updatedInput` para responder de forma programática |

1910 1912 

1911<h5 id="exitplanmode">1913<h5 id="exitplanmode">

1912 ExitPlanMode1914 ExitPlanMode

1913</h5>1915</h5>

1914 1916 

1915Presenta 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.1917Presenta 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 disco antes de llamar a la herramienta, así que el `tool_input` literal del modelo suele estar vacío. Claude Code inyecta el contenido del plan y la ruta del archivo antes de pasar la entrada a los hooks.

1916 1918 

1917| Campo | Tipo | Ejemplo | Descripción |1919| Campo | Tipo | Ejemplo | Descripción |

1918| :- | :- | :- | :- |1920| :- | :- | :- | :- |

1919| `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. Se inyecta desde el archivo del plan en disco |

1920| `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. Se inyecta |

1921| `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 |1923| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Obsoleto. Claude Code acepta el campo pero lo ignora. Antes de la v2.1.205, llevaba los permisos basados en prompts que Claude solicitaba para implementar el plan |

1922 1924 

1923En `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 los campos `plan` y `filePath`, que contienen el plan aprobado, además de flags de estado internos. Lee `tool_response.plan` para obtener el contenido del plan en lugar de volver a leer el archivo desde el disco.

1924 1926 

1925<h4 id="pretooluse-decision-control">1927<h4 id="pretooluse-decision-control">

1926 Control de decisión de PreToolUse1928 Control de decisiones de PreToolUse

1927</h4>1929</h4>

1928 1930 

1929Los 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.1931Los hooks `PreToolUse` pueden controlar si una llamada a herramienta continúa. A diferencia de otros hooks que usan un campo `decision` de nivel superior, PreToolUse devuelve su decisión dentro de un objeto `hookSpecificOutput`. Esto le da un control más rico: cuatro resultados (permitir, denegar, preguntar o diferir) además de la capacidad de modificar la entrada de la herramienta antes de la ejecución.

1930 1932 

1931| Campo | Descripción |1933| Campo | Descripción |

1932| :- | :- |1934| :- | :- |

1933| `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 |1935| `permissionDecision` | `"allow"` omite la solicitud de permiso, excepto para las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) y para `AskUserQuestion` y `ExitPlanMode`, que necesitan [`updatedInput` emparejado con él](#allow-with-updatedinput). `"deny"` impide la llamada a herramienta. `"ask"` pide al usuario que confirme. `"defer"` sale de forma controlada para que la herramienta pueda reanudarse más tarde. Las [reglas de denegación y de pregunta](/docs/es/permissions#manage-permissions) se siguen evaluando independientemente de lo que devuelva el hook |

1934| `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 en la solicitud de permiso. Cuando Claude Code [deniega la llamada](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs) en una ejecución `-p` en la que nadie puede responder a esa solicitud, Claude lee el motivo en el resultado de la herramienta. Para `"deny"`, se muestra a Claude. Para `"allow"` y `"defer"`, se escribe solo en el [registro de depuración](#debug-hooks) |

1935| `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#foreground-commands-that-move-to-the-background) 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 todo el objeto de entrada, así que incluye los campos sin cambios junto con los modificados. Claude Code evalúa las reglas de permisos y la [aptitud para pasar automáticamente a segundo plano](/docs/es/tools-reference#foreground-commands-that-move-to-the-background) de un comando Bash contra la entrada que devuelve tu hook, no contra la entrada que envió Claude. Combínalo con `"allow"` para aprobar automáticamente, o con `"ask"` para mostrar la entrada modificada al usuario. Para `"defer"`, se ignora |

1936| `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"`. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

1937 1939 

1938Cuando múltiples hooks PreToolUse devuelven decisiones diferentes, la precedencia es `deny` > `defer` > `ask` > `allow`.1940Cuando varios hooks PreToolUse devuelven decisiones diferentes, la precedencia es `deny` > `defer` > `ask` > `allow`.

1939 1941 

1940Un 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.1942Un hook que bloquea saliendo con 2 se encamina igual que `"deny"`: Claude ve el mensaje de stderr como el motivo de la denegación.

1941 1943 

1942Cuando 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.1944Cuando un hook devuelve `"ask"`, la solicitud de permiso que se muestra al usuario incluye una etiqueta que identifica de dónde proviene el hook: `[settings]` para un hook de cualquier archivo de configuración o del frontmatter de un agente, `[plugin:<name>]` para el hook de un plugin, o `[skill]` para un hook del frontmatter de un skill. Esto ayuda a los usuarios a entender qué fuente de configuración está solicitando la confirmación.

1943 1945 

1944Un `"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.1946El `"ask"` de un hook también fuerza una solicitud de permiso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): el clasificador todavía puede denegar la llamada a herramienta, pero no puede aprobarla en silencio. Antes de la v2.1.211, el clasificador podía aprobar un comando Bash que se ejecutaba fuera del [sandbox](/docs/es/sandboxing) sin mostrar la solicitud que pedía el hook; el clasificador seguía aplicando sus propias reglas de seguridad a ese comando, y un `"deny"` de un hook siempre se respetaba.

1945 1947 

1946```json theme={null}1948```json theme={null}

1947{1949{


1959 1961 

1960<span id="allow-with-updatedinput" />1962<span id="allow-with-updatedinput" />

1961 1963 

1962En [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.1964En [modo no interactivo](/docs/es/headless) con el flag `-p`, Claude Code ofrece `AskUserQuestion` y `ExitPlanMode` solo cuando la ejecución tiene un [host de permisos](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs) que reciba la solicitud, 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 desde stdin, recopila la respuesta mediante tu propia interfaz y la devuelve en `updatedInput` para que la herramienta se ejecute sin pedir nada. Devolver solo `"allow"` no es suficiente para estas herramientas. Para `AskUserQuestion`, devuelve el array `questions` original y agrega un objeto [`answers`](#askuserquestion) que asigne el texto de cada pregunta a la respuesta elegida.

1963 1965 

1964A 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.1966Una herramienta MCP cuyo servidor la marca con [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) es más estricta: un hook no puede omitir su solicitud de aprobación con `"allow"`, con o sin `updatedInput`, porque Claude Code no puede confirmar que el hook recopiló la interacción que la herramienta necesita.

1965 1967 

1966<Note>1968<Note>

1967 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.1969 PreToolUse usaba anteriormente los campos de nivel superior `decision` y `reason`, pero están obsoletos para este evento. Usa `hookSpecificOutput.permissionDecision` y `hookSpecificOutput.permissionDecisionReason` en su lugar. Los valores obsoletos `"approve"` y `"block"` se asignan a `"allow"` y `"deny"`, respectivamente. Otros eventos como PostToolUse y Stop siguen usando `decision` y `reason` de nivel superior como su formato actual.

1968</Note>1970</Note>

1969 1971 

1970<h4 id="defer-a-tool-call-for-later">1972<h4 id="defer-a-tool-call-for-later">

1971 Diferir una llamada de herramienta para más tarde1973 Diferir una llamada a herramienta para más tarde

1972</h4>1974</h4>

1973 1975 

1974`"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.1976`"defer"` está pensado para integraciones que ejecutan `claude -p` como subproceso y leen su salida JSON, como una aplicación del Agent SDK o una interfaz personalizada construida sobre Claude Code. Permite que ese proceso que llama pause a Claude en una llamada a herramienta, recopile la entrada mediante su propia interfaz y reanude donde lo dejó. Claude Code respeta este valor solo en [modo no interactivo](/docs/es/headless) con el flag `-p`. En las sesiones interactivas, registra una advertencia e ignora el resultado del hook.

1975 1977 

1976La 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í:1978La herramienta `AskUserQuestion` es el caso típico: Claude quiere preguntarle algo al usuario, pero no hay ninguna terminal en la que responder. Una ejecución `-p` ofrece `AskUserQuestion` solo cuando tiene un [host de permisos](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), como una herramienta MCP que pasas con `--permission-prompt-tool`, así que inicia la ejecución con uno. El recorrido completo funciona así:

1977 1979 

19781. Claude llama a `AskUserQuestion`. Se dispara el hook `PreToolUse`.19801. Claude llama a `AskUserQuestion`. Se dispara el hook `PreToolUse`.

19792. 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 a herramienta pendiente queda conservada en la transcripción.

19803. 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 que llama lee `deferred_tool_use` del resultado del SDK, muestra la pregunta en su propia interfaz y espera una respuesta.

19814. 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.19834. El proceso que llama ejecuta `claude -p --resume <session-id>` con el mismo host de permisos. La misma llamada a herramienta vuelve a disparar `PreToolUse`.

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

1983 1985 

1984El 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`, el `name` y el `input` de la herramienta. El `input` son los parámetros que Claude generó para la llamada a herramienta, capturados antes de la ejecución:

1985 1987 

1986```json theme={null}1988```json theme={null}

1987{1989{


1997}1999}

1998```2000```

1999 2001 

2000No hay límite de tiempo de espera o reintento. La sesión permanece en el disco hasta que la reanude, sujeta al barrido de retención [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays), que elimina archivos de sesión después de 30 días de forma predeterminada, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically). Si la respuesta no está lista cuando reanuda, el hook puede devolver `"defer"` nuevamente y el proceso sale de la misma manera. El proceso de llamada controla cuándo romper el bucle devolviendo finalmente `"allow"` o `"deny"` del hook.2002No hay tiempo de espera ni límite de reintentos. La sesión permanece en disco hasta que la reanudas, sujeta a la limpieza de retención de [`cleanupPeriodDays`](/docs/es/settings-reference#cleanupperioddays), que elimina los archivos de sesión después de 30 días de forma predeterminada, según las [reglas de limpieza de retención](/docs/es/claude-directory#cleaned-up-automatically). Si la respuesta no está lista cuando reanudas, el hook puede devolver `"defer"` de nuevo y el proceso sale de la misma forma. El proceso que llama controla cuándo romper el bucle devolviendo finalmente `"allow"` o `"deny"` desde el hook.

2001 2003 

2002`"defer"` solo funciona cuando Claude hace una única llamada de herramienta en el turno. Si Claude hace varias llamadas de herramienta a la vez, `"defer"` se ignora con una advertencia y la herramienta procede a través del flujo de permiso normal. La restricción existe porque reanudar solo puede re-ejecutar una herramienta: no hay forma de diferir una llamada de un lote sin dejar las otras sin resolver.2004`"defer"` solo funciona cuando Claude hace una única llamada a herramienta en el turno. Si Claude hace varias llamadas a herramientas a la vez, `"defer"` se ignora con una advertencia y la herramienta continúa por el flujo de permisos normal. La restricción existe porque la reanudación solo puede volver a ejecutar una herramienta: no hay forma de diferir una llamada de un lote sin dejar las demás sin resolver.

2003 2005 

2004Si 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 reanudas, el proceso sale con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` antes de que se dispare el hook. Esto ocurre cuando un servidor MCP que proporcionaba la herramienta no está conectado en la sesión reanudada. El payload `deferred_tool_use` se sigue incluyendo para que puedas identificar qué herramienta desapareció.

2005 2007 

2006<Note>2008<Note>

2007 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.2009 Para reanudar una sesión diferida en modo plan, pasa [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) junto con `--resume` para que Claude Code pueda presentar el plan para su aprobación. Si pasas ciertos otros flags de inicio, la ejecución reanudada no vuelve al modo plan; consulta [Reanudar en modo plan con `-p`](/docs/es/sessions#resume-in-plan-mode-with-p). Requiere Claude Code v2.1.246 o posterior.

2008 2010 

2009 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).2011 Cuando reanudas con `-p`, Claude Code no restaura ningún otro modo de permisos almacenado. Inicia la ejecución en el modo de permisos en el que se iniciaría una nueva ejecución `claude -p`, así que vuelve a pasar `--permission-mode` o `--dangerously-skip-permissions` si la sesión diferida usaba alguno. Cuando reanudas con `claude --resume <session-id>` sin `-p`, Claude Code restaura el modo de permisos almacenado, con las excepciones enumeradas en [modo de permisos al reanudar](/docs/es/sessions#permission-mode-on-resume).

2010</Note>2012</Note>

2011 2013 

2012<h3 id="permissionrequest">2014<h3 id="permissionrequest">

2013 PermissionRequest2015 PermissionRequest

2014</h3>2016</h3>

2015 2017 

2016Se ejecuta cuando Claude Code está a punto de pedirte permiso para usar una herramienta. En las sesiones que no pueden mostrar una solicitud, como los subagentes en segundo plano en el [modo no interactivo](/docs/es/headless), Claude Code ejecuta igualmente estos hooks, y si ningún hook devuelve una decisión, deniega la llamada a herramienta. Para una llamada que llega a un `--permission-prompt-tool` o al [callback `canUseTool`](/docs/es/agent-sdk/permissions) del Agent SDK, los hooks se ejecutan junto con tu host, y se aplica el que decida primero.2018Se ejecuta cuando Claude Code está a punto de pedirte permiso para usar una herramienta. En las sesiones que no pueden mostrar una solicitud, como los subagentes en segundo plano en [modo no interactivo](/docs/es/headless), Claude Code sigue ejecutando estos hooks y, si ningún hook devuelve una decisión, deniega la llamada a herramienta. Para una llamada que llega a un `--permission-prompt-tool` o al [callback `canUseTool`](/docs/es/agent-sdk/permissions) del Agent SDK, los hooks se ejecutan junto con tu host, y se aplica la decisión del que decida primero.

2017Usa el [control de decisiones de PermissionRequest](#permissionrequest-decision-control) para permitir o denegar en nombre del usuario.2019Usa el [control de decisiones de PermissionRequest](#permissionrequest-decision-control) para permitir o denegar en nombre del usuario.

2018 2020 

2019Use 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.2021Usa este evento cuando necesites una señal en el momento en que Claude pide permiso para usar una herramienta. Claude Code ejecuta un hook [Notification](#notification) con el tipo `permission_prompt` solo después de que la solicitud ha esperado unos seis segundos.

2020 2022 

2021Claude 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`.2023Claude Code no ejecuta hooks PermissionRequest para la [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en el sandbox. Para obtener una señal de esa solicitud, usa el tipo de notificación `permission_prompt`.

2022 2024 

2023Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2025Coincide con el nombre de la herramienta, con los mismos valores que PreToolUse.

2024 2026 

2025<h4 id="permissionrequest-input">2027<h4 id="permissionrequest-input">

2026 Entrada de PermissionRequest2028 Entrada de PermissionRequest

2027</h4>2029</h4>

2028 2030 

2029Los hooks PermissionRequest reciben campos `tool_name` e `tool_input` como los hooks PreToolUse, pero sin `tool_use_id`. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input). Una matriz `permission_suggestions` opcional contiene las [actualizaciones de permiso](#permission-update-entries) que Claude Code sugiere para esta solicitud, como agregar una regla de permiso o cambiar el modo de permiso.2031Los hooks PermissionRequest reciben los campos `tool_name` y `tool_input` como los hooks PreToolUse, pero sin `tool_use_id`. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input). Un array opcional `permission_suggestions` contiene las [actualizaciones de permisos](#permission-update-entries) que Claude Code sugiere para esta solicitud, como agregar una regla de permiso o cambiar el modo de permisos.

2030 2032 

2031La matriz `permission_suggestions` no es una lista exacta de las opciones que ve, porque cada diálogo de permiso construye sus propias opciones. Algunos diálogos, como el de ediciones de archivo, no leen la matriz en absoluto y derivan sus opciones de la solicitud en sí. Un diálogo que sí la lee aún puede retener una opción cuya sugerencia permanece en la matriz, por ejemplo cuando [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) oculta opciones de guardado de reglas. También puede ofrecer opciones que no tienen entrada de sugerencia, como [**Sí, y cambiar a modo automático**](/docs/es/permission-modes#switch-permission-modes), que cambia el modo de permiso directamente en lugar de a través de una actualización de permiso.2033El array `permission_suggestions` no es una lista exacta de las opciones que ves, porque cada diálogo de permisos construye sus propias opciones. Algunos diálogos, como el de las ediciones de archivos, no leen el array en absoluto y derivan sus opciones de la propia solicitud. Un diálogo que sí lo lee puede seguir ocultando una opción cuya sugerencia permanece en el array, por ejemplo cuando [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) oculta las opciones para guardar reglas. También puede ofrecer opciones que no tienen ninguna entrada de sugerencia, como [**Yes, and switch to auto mode**](/docs/es/permission-modes#switch-permission-modes), que cambia el modo de permisos directamente en lugar de hacerlo mediante una actualización de permisos.

2032 2034 

2033Los hooks PreToolUse se ejecutan antes de cada llamada de herramienta, independientemente de si necesita permiso. Los hooks PermissionRequest se ejecutan solo cuando Claude Code está a punto de pedirle permiso, o cuando de otro modo auto-negaría una llamada que no puede solicitar. Ninguno de los dos eventos se dispara para [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior).2035Los hooks PreToolUse se ejecutan antes de cada llamada a herramienta, necesite o no permiso. Los hooks PermissionRequest se ejecutan solo cuando Claude Code está a punto de pedirte permiso, o cuando de otro modo denegaría automáticamente una llamada que no puede mostrar una solicitud. Ninguno de los dos eventos se dispara para [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior).

2034 2036 

2035```json theme={null}2037```json theme={null}

2036{2038{


2056```2058```

2057 2059 

2058<h4 id="permissionrequest-decision-control">2060<h4 id="permissionrequest-decision-control">

2059 Control de decisión de PermissionRequest2061 Control de decisiones de PermissionRequest

2060</h4>2062</h4>

2061 2063 

2062Los 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: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, tu script de hook puede devolver un objeto `decision` con estos campos específicos del evento:

2063 2065 

2064| Campo | Descripción |2066| Campo | Descripción |

2065| :- | :- |2067| :- | :- |

2066| `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 |2068| `behavior` | `"allow"` concede el permiso, `"deny"` lo deniega. Las [reglas de denegación y de pregunta](/docs/es/permissions#manage-permissions) se siguen evaluando, así que un hook que devuelve `"allow"` no sobrescribe una regla de denegación que coincida |

2067| `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 |2069| `updatedInput` | Solo para `"allow"`: modifica los parámetros de entrada de la herramienta antes de la ejecución. Reemplaza todo el objeto de entrada, así que incluye los campos sin cambios junto con los modificados. La entrada modificada se vuelve a evaluar contra las reglas de denegación y de pregunta |

2068| `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` | Solo para `"allow"`: array de [entradas de actualización de permisos](#permission-update-entries) que se aplicarán, como agregar una regla de permiso o cambiar el modo de permisos de la sesión |

2069| `message` | Para `"deny"` solo: dice a Claude por qué se negó el permiso |2071| `message` | Solo para `"deny"`: le dice a Claude por qué se denegó el permiso |

2070| `interrupt` | Para `"deny"` solo: si es `true`, detiene a Claude |2072| `interrupt` | Solo para `"deny"`: si es `true`, detiene a Claude |

2071 2073 

2072Un hook que sale con 2 sin un objeto `decision` deja el flujo de permiso sin cambios, y su stderr se descarta. Solo el objeto `decision` puede otorgar o negar la solicitud.2074Un hook que sale con 2 sin un objeto `decision` deja el flujo de permisos sin cambios, y su stderr se descarta. Solo el objeto `decision` puede conceder o denegar la solicitud.

2073 2075 

2074```json theme={null}2076```json theme={null}

2075{2077{


2086```2088```

2087 2089 

2088<h4 id="permission-update-entries">2090<h4 id="permission-update-entries">

2089 Entradas de actualización de permiso2091 Entradas de actualización de permisos

2090</h4>2092</h4>

2091 2093 

2092El campo de salida `updatedPermissions` y el campo de entrada [`permission_suggestions`](#permissionrequest-input) ambos usan la misma matriz de objetos de entrada. Cada entrada tiene un `type` que determina sus otros campos, y un `destination` que controla dónde se escribe el cambio.2094El campo de salida `updatedPermissions` y el [campo de entrada `permission_suggestions`](#permissionrequest-input) usan el mismo array de objetos de entrada. Cada entrada tiene un `type` que determina sus demás campos, y un `destination` que controla dónde se escribe el cambio.

2093 2095 

2094| `type` | Campos | Efecto |2096| `type` | Campos | Efecto |

2095| :- | :- | :- |2097| :- | :- | :- |

2096| `addRules` | `rules`, `behavior`, `destination` | Agrega reglas de permiso. `rules` es una matriz de objetos `{toolName, ruleContent?}`. Omita `ruleContent` para hacer coincidir toda la herramienta. `behavior` es `"allow"`, `"deny"`, o `"ask"` |2098| `addRules` | `rules`, `behavior`, `destination` | Agrega reglas de permisos. `rules` es un array de objetos `{toolName, ruleContent?}`. Omite `ruleContent` para coincidir con toda la herramienta. `behavior` es `"allow"`, `"deny"` o `"ask"` |

2097| `replaceRules` | `rules`, `behavior`, `destination` | Reemplaza todas las reglas del `behavior` dado en el `destination` con las `rules` proporcionadas |2099| `replaceRules` | `rules`, `behavior`, `destination` | Reemplaza todas las reglas del `behavior` indicado en el `destination` con las `rules` proporcionadas |

2098| `removeRules` | `rules`, `behavior`, `destination` | Elimina reglas coincidentes del `behavior` dado |2100| `removeRules` | `rules`, `behavior`, `destination` | Elimina las reglas que coinciden del `behavior` indicado |

2099| `setMode` | `mode`, `destination` | Cambia el modo de permiso. Los modos válidos son `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, y `manual` como alias para `default`. El alias `manual` requiere Claude Code v2.1.200 o posterior |2101| `setMode` | `mode`, `destination` | Cambia el modo de permisos. Los modos válidos son `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan` y `manual` como alias de `default`. El alias `manual` requiere Claude Code v2.1.200 o posterior |

2100| `addDirectories` | `directories`, `destination` | Agrega directorios de trabajo. `directories` es una matriz de cadenas de ruta |2102| `addDirectories` | `directories`, `destination` | Agrega directorios de trabajo. `directories` es un array de cadenas de rutas |

2101| `removeDirectories` | `directories`, `destination` | Elimina directorios de trabajo |2103| `removeDirectories` | `directories`, `destination` | Elimina directorios de trabajo |

2102 2104 

2103<Note>2105<Note>

2104 `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).2106 `setMode` con `bypassPermissions` solo surte efecto si iniciaste la sesión con el modo bypass ya disponible: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` o `permissions.defaultMode: "bypassPermissions"` en la [configuración de usuario, de `--settings` o administrada](/docs/es/settings-reference#permissions-defaultmode). De lo contrario, la actualización no tiene efecto. La actualización tampoco tiene efecto cuando [`permissions.disableBypassPermissionsMode`](/docs/es/permissions#managed-settings) deshabilita el modo, o cuando la sesión se inicia en [modo restringido](/docs/es/cli-reference#cli-flags).

2105 2107 

2106 `bypassPermissions` nunca se persiste como `defaultMode` independientemente de `destination`.2108 `bypassPermissions` nunca se persiste como `defaultMode`, independientemente de `destination`.

2107</Note>2109</Note>

2108 2110 

2109El campo `destination` en cada entrada determina si el cambio permanece en memoria o persiste en un archivo de configuración.2111El campo `destination` de cada entrada determina si el cambio permanece en memoria o se persiste en un archivo de configuración.

2110 2112 

2111| `destination` | Escribe en |2113| `destination` | Escribe en |

2112| :- | :- |2114| :- | :- |

2113| `session` | solo en memoria, descartado cuando termina la sesión |2115| `session` | solo en memoria, se descarta cuando termina la sesión |

2114| `localSettings` | `.claude/settings.local.json` |2116| `localSettings` | `.claude/settings.local.json` |

2115| `projectSettings` | `.claude/settings.json` |2117| `projectSettings` | `.claude/settings.json` |

2116| `userSettings` | `~/.claude/settings.json` |2118| `userSettings` | `~/.claude/settings.json` |

2117 2119 

2118Un hook puede hacer eco de una de las `permission_suggestions` que recibió como su propia salida `updatedPermissions`.2120Un hook puede devolver una de las `permission_suggestions` que recibió como su propia salida `updatedPermissions`.

2119 2121 

2120<h3 id="posttooluse">2122<h3 id="posttooluse">

2121 PostToolUse2123 PostToolUse

2122</h3>2124</h3>

2123 2125 

2124Se ejecuta inmediatamente después de que una herramienta se completa exitosamente.2126Se ejecuta inmediatamente después de que una herramienta se completa correctamente.

2125 2127 

2126Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2128Coincide con el nombre de la herramienta, con los mismos valores que PreToolUse.

2127 2129 

2128Coincida más ampliamente cuando el nombre de la herramienta no es el filtro correcto:2130Usa una coincidencia más amplia cuando el nombre de la herramienta no sea el filtro adecuado:

2129 2131 

2130* Para ejecutar un hook después de que cualquier herramienta se complete exitosamente, omita el `matcher` o establézcalo en `"*"`. Su hook puede entonces descubrir qué cambió por sí mismo, por ejemplo ejecutando `git status --porcelain`, que también enumera archivos sin seguimiento que `git diff` pierde. Para llamadas de herramienta que fallan, agregue el mismo hook bajo [PostToolUseFailure](#posttoolusefailure).2132* Para ejecutar un hook después de que cualquier herramienta se complete correctamente, omite el `matcher` o establécelo en `"*"`. Tu hook puede entonces descubrir por sí mismo qué cambió, por ejemplo ejecutando `git status --porcelain`, que también lista los archivos sin seguimiento que `git diff` no muestra. Para las llamadas a herramientas que fallan, agrega el mismo hook en [PostToolUseFailure](#posttoolusefailure).

2131* Para ejecutar un hook cuando un archivo específico cambia en el disco, sin importar qué lo escribió, use [FileChanged](#filechanged). Claude Code no ejecuta un hook `PostToolUse` que coincida con `Edit|Write` cuando un comando `Bash` o un proceso fuera de Claude Code reescribe el mismo archivo.2133* Para ejecutar un hook cuando un archivo específico cambia en disco, sin importar qué lo escribió, usa [FileChanged](#filechanged). Claude Code no ejecuta un hook `PostToolUse` que coincide con `Edit|Write` cuando un comando `Bash` o un proceso fuera de Claude Code reescribe el mismo archivo.

2132 2134 

2133<h4 id="posttooluse-input">2135<h4 id="posttooluse-input">

2134 Entrada de PostToolUse2136 Entrada de PostToolUse

2135</h4>2137</h4>

2136 2138 

2137Los 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).2139Los hooks `PostToolUse` se activan después de que una herramienta ya se ejecutó correctamente. La entrada incluye tanto `tool_input`, los argumentos enviados a la herramienta, como `tool_response`, el resultado que devolvió. El esquema exacto de ambos depende de la herramienta. Las rutas de `tool_input` de las herramientas de archivos llegan en el mismo formato que para [PreToolUse](#pretooluse-input): siempre absolutas, con los separadores nativos de la plataforma, es decir, barras invertidas en Windows. Para una herramienta MCP, la entrada también incluye el objeto [`mcp_server`](#pretooluse-input).

2138 2140 

2139```json theme={null}2141```json theme={null}

2140{2142{


2159 2161 

2160| Campo | Descripción |2162| Campo | Descripción |

2161| :- | :- |2163| :- | :- |

2162| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a prompts de permiso y hooks PreToolUse |2164| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a solicitudes de permiso y a hooks PreToolUse |

2163 2165 

2164<h4 id="posttooluse-decision-control">2166<h4 id="posttooluse-decision-control">

2165 Control de decisión de PostToolUse2167 Control de decisiones de PostToolUse

2166</h4>2168</h4>

2167 2169 

2168Los hooks `PostToolUse` pueden proporcionar retroalimentación a Claude después de la ejecución de la herramienta. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:2170Los hooks `PostToolUse` pueden proporcionar retroalimentación a Claude después de la ejecución de la herramienta. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, tu script de hook puede devolver estos campos específicos del evento:

2169 2171 

2170| Campo | Descripción |2172| Campo | Descripción |

2171| :- | :- |2173| :- | :- |

2172| `decision` | `"block"` agrega el `reason` junto al resultado de la herramienta. Claude aún ve la salida original; para reemplazarla, use `updatedToolOutput` |2174| `decision` | `"block"` agrega el `reason` junto al resultado de la herramienta. Claude sigue viendo la salida original; para reemplazarla, usa `updatedToolOutput` |

2173| `reason` | Explicación mostrada a Claude cuando `decision` es `"block"` |2175| `reason` | Explicación que se muestra a Claude cuando `decision` es `"block"` |

2174| `additionalContext` | Cadena agregada al contexto de Claude junto con el resultado de la herramienta. Consulte [Agregar contexto para Claude](#add-context-for-claude) |2176| `additionalContext` | Cadena que se agrega al contexto de Claude junto con el resultado de la herramienta. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

2175| `classifierContext` | Nota breve sobre el resultado de esta llamada para el clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en lugar de para Claude. Consulte [Anotar un resultado para el clasificador de modo automático](#annotate-a-result-for-the-auto-mode-classifier). Requiere Claude Code v2.1.236 o posterior |2177| `classifierContext` | Nota breve sobre el resultado de esta llamada destinada al clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en lugar de a Claude. Consulta [Anotar un resultado para el clasificador del modo automático](#annotate-a-result-for-the-auto-mode-classifier). Requiere Claude Code v2.1.236 o posterior |

2176| `updatedToolOutput` | Reemplaza la salida de la herramienta con el valor proporcionado antes de que se envíe a Claude. El valor debe coincidir con la forma de salida de la herramienta |2178| `updatedToolOutput` | Reemplaza la salida de la herramienta con el valor proporcionado antes de enviarla a Claude. El valor debe coincidir con la forma de salida de la herramienta |

2177| `updatedMCPToolOutput` | Reemplaza la salida para [herramientas MCP](#match-mcp-tools) solo. Prefiera `updatedToolOutput`, que funciona para todas las herramientas |2179| `updatedMCPToolOutput` | Reemplaza la salida solo para [herramientas MCP](#match-mcp-tools). Es preferible `updatedToolOutput`, que funciona para todas las herramientas |

2178 2180 

2179El ejemplo a continuación reemplaza la salida de una llamada `Bash`. El valor de reemplazo coincide con la forma de salida de la herramienta `Bash`:2181El siguiente ejemplo reemplaza la salida de una llamada a `Bash`. El valor de reemplazo coincide con la forma de salida de la herramienta `Bash`:

2180 2182 

2181```json theme={null}2183```json theme={null}

2182{2184{


2194```2196```

2195 2197 

2196<Warning>2198<Warning>

2197 `updatedToolOutput` solo cambia lo que Claude ve. La herramienta ya se ha ejecutado en el momento en que se dispara el hook, por lo que cualquier archivo escrito, comando ejecutado o solicitud de red enviada ya ha tenido efecto. La telemetría como tramos de herramientas OpenTelemetry y eventos de análisis también captura la salida original antes de que se ejecute el hook. Para evitar o modificar una llamada de herramienta antes de que se ejecute, use un hook [PreToolUse](#pretooluse) en su lugar.2199 `updatedToolOutput` solo cambia lo que ve Claude. La herramienta ya se ejecutó cuando se activa el hook, por lo que cualquier archivo escrito, comando ejecutado o solicitud de red enviada ya surtió efecto. La telemetría, como los spans de herramientas de OpenTelemetry y los eventos de análisis, también captura la salida original antes de que se ejecute el hook. Para impedir o modificar una llamada a herramienta antes de que se ejecute, usa en su lugar un hook [PreToolUse](#pretooluse).

2198 2200 

2199 El valor de reemplazo debe coincidir con la forma de salida de la herramienta. Las herramientas integradas devuelven objetos estructurados en lugar de cadenas simples. Por ejemplo, `Bash` devuelve un objeto con campos `stdout`, `stderr`, `interrupted`, e `isImage`. Para herramientas integradas, un valor que no coincida con el esquema de salida de la herramienta se ignora y se usa la salida original. La salida de herramientas MCP se pasa sin validación de esquema. Eliminar detalles de error que Claude necesita puede hacer que continúe con una suposición falsa.2201 El valor de reemplazo debe coincidir con la forma de salida de la herramienta. Las herramientas integradas devuelven objetos estructurados en lugar de cadenas simples. Por ejemplo, `Bash` devuelve un objeto con los campos `stdout`, `stderr`, `interrupted` e `isImage`. Para las herramientas integradas, un valor que no coincide con el esquema de salida de la herramienta se ignora y se usa la salida original. La salida de las herramientas MCP se pasa sin validación de esquema. Eliminar detalles de errores que Claude necesita puede hacer que proceda con una suposición falsa.

2200</Warning>2202</Warning>

2201 2203 

2202<h4 id="annotate-a-result-for-the-auto-mode-classifier">2204<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2203 Anotar un resultado para el clasificador de modo automático2205 Anotar un resultado para el clasificador del modo automático

2204</h4>2206</h4>

2205 2207 

2206Devuelva `classifierContext` para enviar una nota breve sobre el resultado de la llamada de herramienta al clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en lugar de a Claude. El clasificador [nunca recibe resultados de herramientas en sí](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que este campo es la forma admitida de decirle algo sobre lo que devolvió una llamada antes de que revise acciones posteriores. El campo requiere Claude Code v2.1.236 o posterior.2208Devuelve `classifierContext` para enviar una nota breve sobre el resultado de la llamada a herramienta al clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en lugar de a Claude. El clasificador [nunca recibe los resultados de las herramientas en sí](/docs/es/permission-modes#how-the-classifier-evaluates-actions), por lo que este campo es la forma admitida de comunicarle algo sobre lo que devolvió una llamada antes de que revise acciones posteriores. El campo requiere Claude Code v2.1.236 o posterior.

2207 2209 

2208El ejemplo a continuación dice al clasificador de dónde vino la salida de una consulta:2210El siguiente ejemplo le indica al clasificador de dónde provino la salida de una consulta:

2209 2211 

2210```json theme={null}2212```json theme={null}

2211{2213{


2216}2218}

2217```2219```

2218 2220 

2219Cuánto peso da el clasificador a la nota depende de dónde configuró el hook:2221El peso que el clasificador le da a la nota depende de dónde configuraste el hook:

2220 2222 

2221* **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ón2223* **Hooks configurados en Claude Code**: para los hooks de archivos de configuración, plugins, skills y frontmatter de agentes, el clasificador trata la nota como contexto no verificado proporcionado por la aplicación. La nota nunca establece la intención del usuario y, si afirma que aprobaste o solicitaste algo, el clasificador contrasta esa afirmación con tus propios mensajes en la conversación

2222* **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 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 considerar como intención del usuario una declaración del usuario transmitida en la nota. Esa declaración puede satisfacer un requisito de consentimiento que el clasificador aceptaría de un mensaje que envíes, pero nunca levanta un bloqueo que tu 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 verificada

2223 2225 

2224Claude Code aplica estos límites al entregar la nota:2226Claude Code aplica estos límites al entregar la nota:

2225 2227 

2226* **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 de una llamada a herramienta a 2000 caracteres y trunca el resto. El límite se comparte entre todos los hooks que responden a esa llamada

2227* **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 síncronas**: 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

2228* **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 las consultas de solo lectura, como las lecturas de archivos y las búsquedas. Claude Code descarta una nota adjunta a una de esas llamadas

2229* **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 salida2231* **Interacción con reescrituras**: cuando la nota describe una salida que estás reemplazando con `updatedToolOutput`, devuelve ambos campos en la misma respuesta del hook. Claude Code descarta la nota si esa reescritura se rechaza o si la reescritura de otro hook la reemplaza. Claude Code entrega una nota que devuelves sin reescritura incluso cuando otro hook reescribe la salida

2230 2232 

2231<Warning>2233<Warning>

2232 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.2234 El clasificador lee el contenido que colocas en `classifierContext` como información de la aplicación que aloja la sesión, así que no copies en él salida de herramientas no confiable ni texto de terceros. Limita la nota a una afirmación breve sobre esta única llamada, como un dato sobre su origen o una declaración del usuario al respecto; no uses el campo para entregar mensajes no relacionados ni un flujo de eventos.

2233</Warning>2235</Warning>

2234 2236 

2235<h3 id="posttoolusefailure">2237<h3 id="posttoolusefailure">

2236 PostToolUseFailure2238 PostToolUseFailure

2237</h3>2239</h3>

2238 2240 

2239Se ejecuta cuando una herramienta que comenzó a ejecutarse falla: la herramienta lanzó un error, o una herramienta MCP devolvió un resultado de error. Úselo para registrar fallos, enviar alertas o proporcionar retroalimentación correctiva a Claude.2241Se ejecuta cuando falla una herramienta que comenzó a ejecutarse: la herramienta lanzó un error o una herramienta MCP devolvió un resultado de error. Úsalo para registrar fallas, enviar alertas o proporcionar retroalimentación correctiva a Claude.

2240 2242 

2241Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2243Coincide con el nombre de la herramienta, con los mismos valores que PreToolUse.

2242 2244 

2243<Note>2245<Note>

2244 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).2246 Este evento no se activa para llamadas a herramientas rechazadas antes de la ejecución: un nombre de herramienta desconocido, una entrada que no supera la validación de esquema o la validación específica de la herramienta, o una denegación de permiso. Los rechazos de validación se devuelven como resultados `tool_use_error` y ocurren antes de que se ejecuten los hooks, por lo que no activan ni `PreToolUse` ni `PostToolUseFailure`. Las denegaciones de permiso activan `PreToolUse` pero no este evento; consulta [PermissionDenied](#permissiondenied).

2245</Note>2247</Note>

2246 2248 

2247<h4 id="posttoolusefailure-input">2249<h4 id="posttoolusefailure-input">

2248 Entrada de PostToolUseFailure2250 Entrada de PostToolUseFailure

2249</h4>2251</h4>

2250 2252 

2251Los hooks PostToolUseFailure reciben los mismos campos `tool_name` e `tool_input` que PostToolUse, junto con información de error como campos de nivel superior. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input). Por ejemplo, un comando `npm test` fallido podría entregar:2253Los hooks PostToolUseFailure reciben los mismos campos `tool_name` y `tool_input` que PostToolUse, junto con información del error como campos de nivel superior. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input). Por ejemplo, un comando `npm test` fallido podría entregar:

2252 2254 

2253```json theme={null}2255```json theme={null}

2254{2256{


2272| Campo | Descripción |2274| Campo | Descripción |

2273| :- | :- |2275| :- | :- |

2274| `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ó |

2275| `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. Es verdadero cuando la falla llegó a Claude Code como una cancelación en lugar de como un error informado por la herramienta. Cancelar una herramienta en ejecución no activa este hook; en su lugar, el resultado de la herramienta contiene el mensaje de interrupción |

2276| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a prompts de permiso y hooks PreToolUse |2278| `duration_ms` | Opcional. Tiempo de ejecución de la herramienta en milisegundos. Excluye el tiempo dedicado a solicitudes de permiso y a hooks PreToolUse |

2277 2279 

2278La 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 la falla. Basa tu hook en `tool_name`, `is_interrupt` y la primera línea `Exit code N`; trata el resto de la cadena como texto para mostrar, no como un formato estable.

2279 2281 

2280* 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 terminó produce una primera línea `Exit code N`, seguida de cualquier salida que haya producido el comando como un solo bloque con stdout y stderr intercalados

2281* 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* Un payload también puede contener un mensaje de falla simple sin línea de código de salida, cuando Claude Code no pudo iniciar el proceso del shell

2282* 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`2284* Claude Code trunca por el medio las cadenas largas alrededor de un marcador `... [N characters truncated] ...` y puede insertar líneas propias, como `Command timed out after 2m 0s`

2283 2285 

2284<h4 id="posttoolusefailure-decision-control">2286<h4 id="posttoolusefailure-decision-control">

2285 Control de decisión de PostToolUseFailure2287 Control de decisiones de PostToolUseFailure

2286</h4>2288</h4>

2287 2289 

2288Los hooks `PostToolUseFailure` pueden proporcionar contexto a Claude después de un fallo de herramienta. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:2290Los hooks `PostToolUseFailure` pueden proporcionar contexto a Claude después de una falla de herramienta. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, tu script de hook puede devolver estos campos específicos del evento:

2289 2291 

2290| Campo | Descripción |2292| Campo | Descripción |

2291| :- | :- |2293| :- | :- |

2292| `additionalContext` | Cadena agregada al contexto de Claude junto con el error. Consulte [Agregar contexto para Claude](#add-context-for-claude) |2294| `additionalContext` | Cadena que se agrega al contexto de Claude junto con el error. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

2293 2295 

2294```json theme={null}2296```json theme={null}

2295{2297{


2304 PostToolBatch2306 PostToolBatch

2305</h3>2307</h3>

2306 2308 

2307Se 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.2309Se ejecuta una vez después de que se haya resuelto cada llamada a herramienta de un lote, antes de que Claude Code envíe la siguiente solicitud al modelo. `PostToolUse` se activa una vez por herramienta, lo que significa que se activa de forma concurrente cuando Claude hace llamadas a herramientas en paralelo. `PostToolBatch` se activa exactamente una vez con el lote completo, por lo que es el lugar adecuado para inyectar contexto que depende del conjunto de herramientas que se ejecutaron en lugar de una sola herramienta. No hay matcher para este evento.

2308 2310 

2309<h4 id="posttoolbatch-input">2311<h4 id="posttoolbatch-input">

2310 Entrada de PostToolBatch2312 Entrada de PostToolBatch

2311</h4>2313</h4>

2312 2314 

2313Además de los [campos de entrada comunes](#common-input-fields), los hooks PostToolBatch reciben `tool_calls`, una matriz que describe cada llamada de herramienta en el lote:2315Además de los [campos de entrada comunes](#common-input-fields), los hooks PostToolBatch reciben `tool_calls`, un arreglo que describe cada llamada a herramienta del lote:

2314 2316 

2315```json theme={null}2317```json theme={null}

2316{2318{


2336}2338}

2337```2339```

2338 2340 

2339`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.2341`tool_response` contiene el mismo contenido que el modelo recibe en el bloque `tool_result` correspondiente. El valor es una cadena serializada o un arreglo 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 del contenido sin procesar del archivo. Las respuestas pueden ser grandes, así que analiza solo los campos que necesitas.

2340 2342 

2341<Note>2343<Note>

2342 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.2344 La forma de `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 serializado de `tool_result` que ve el modelo.

2343</Note>2345</Note>

2344 2346 

2345<h4 id="posttoolbatch-decision-control">2347<h4 id="posttoolbatch-decision-control">

2346 Control de decisión de PostToolBatch2348 Control de decisiones de PostToolBatch

2347</h4>2349</h4>

2348 2350 

2349Los hooks `PostToolBatch` pueden inyectar contexto para Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:2351Los hooks `PostToolBatch` pueden inyectar contexto para Claude. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, tu script de hook puede devolver estos campos específicos del evento:

2350 2352 

2351| Campo | Descripción |2353| Campo | Descripción |

2352| :- | :- |2354| :- | :- |

2353| `additionalContext` | Cadena de contexto inyectada una vez antes de la siguiente llamada del modelo. Consulte [Agregar contexto para Claude](#add-context-for-claude) para detalles de entrega, qué poner en él y cómo las sesiones reanudadas manejan valores pasados |2355| `additionalContext` | Cadena de contexto inyectada una vez antes de la siguiente llamada al modelo. Consulta [Agregar contexto para Claude](#add-context-for-claude) para conocer los detalles de entrega, qué incluir y cómo las sesiones reanudadas manejan los valores anteriores |

2354 2356 

2355```json theme={null}2357```json theme={null}

2356{2358{


2361}2363}

2362```2364```

2363 2365 

2364Devolver `decision: "block"` o `continue: false` detiene el bucle agéntico antes de la siguiente llamada del modelo. El mensaje de bloqueo viene del JSON `reason` o `stopReason`, o de stderr en salida 2. Lo ve como una advertencia en la transcripción, y permanece en la conversación, por lo que Claude lo ve cuando la conversación continúa.2366Devolver `decision: "block"` o `continue: false` detiene el bucle agéntico antes de la siguiente llamada al modelo. El mensaje de bloqueo proviene del `reason` o `stopReason` del JSON, o de stderr con el código de salida 2. Lo ves como una advertencia en la transcripción y permanece en la conversación, por lo que Claude lo ve cuando la conversación continúa.

2365 2367 

2366<h3 id="permissiondenied">2368<h3 id="permissiondenied">

2367 PermissionDenied2369 PermissionDenied

2368</h3>2370</h3>

2369 2371 

2370Se 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.2372Se ejecuta cuando el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) deniega una llamada a herramienta, incluso cuando la deniega sin un veredicto del clasificador porque [una verificación de seguridad independiente 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 pudo analizar. Este hook solo se activa en modo automático: no se ejecuta cuando deniegas manualmente un cuadro de diálogo de permisos, cuando un hook `PreToolUse` bloquea una llamada ni cuando coincide una regla `deny`. Úsalo para registrar denegaciones, ajustar la configuración o indicarle al modelo que puede reintentar la llamada a herramienta.

2371 2373 

2372Coincide en el nombre de la herramienta, los mismos valores que PreToolUse.2374Coincide con el nombre de la herramienta, con los mismos valores que PreToolUse.

2373 2375 

2374<h4 id="permissiondenied-input">2376<h4 id="permissiondenied-input">

2375 Entrada de PermissionDenied2377 Entrada de PermissionDenied

2376</h4>2378</h4>

2377 2379 

2378Además de los [campos de entrada comunes](#common-input-fields), los hooks PermissionDenied reciben `tool_name`, `tool_input`, `tool_use_id`, y `reason`. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input).2380Además de los [campos de entrada comunes](#common-input-fields), los hooks PermissionDenied reciben `tool_name`, `tool_input`, `tool_use_id` y `reason`. Para una herramienta MCP, también reciben el objeto [`mcp_server`](#pretooluse-input).

2379 2381 

2380```json theme={null}2382```json theme={null}

2381{2383{


2396 2398 

2397| Campo | Descripción |2399| Campo | Descripción |

2398| :- | :- |2400| :- | :- |

2399| `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` |2401| `reason` | El motivo de la denegación. Para un veredicto del clasificador, en la mayoría de las sesiones nombra la regla que coincidió entre corchetes, como `[Data Exfiltration]`; consulta [Revisar denegaciones](/docs/es/auto-mode-config#review-denials) para ver 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 clasificador no estaba disponible, es el texto fijo `Classifier unavailable` |

2400 2402 

2401<h4 id="permissiondenied-decision-control">2403<h4 id="permissiondenied-decision-control">

2402 Control de decisión de PermissionDenied2404 Control de decisiones de PermissionDenied

2403</h4>2405</h4>

2404 2406 

2405Los hooks PermissionDenied pueden decirle al modelo que puede reintentar la llamada de herramienta denegada. Devuelva un objeto JSON con `hookSpecificOutput.retry` establecido en `true`:2407Los hooks PermissionDenied pueden indicarle al modelo que puede reintentar la llamada a herramienta denegada. Devuelve un objeto JSON con `hookSpecificOutput.retry` establecido en `true`:

2406 2408 

2407```json theme={null}2409```json theme={null}

2408{2410{


2413}2415}

2414```2416```

2415 2417 

2416Cuando `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.2418Cuando `retry` es `true`, Claude Code agrega un mensaje a la conversación que le indica al modelo que puede reintentar la llamada a herramienta. Claude Code no revierte la denegación en sí. Si tu hook no devuelve JSON, o devuelve `retry: false`, la denegación se mantiene y el modelo recibe el mensaje de rechazo original.

2417 2419 

2418Claude 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.2420Claude Code ignora `retry: true` cuando el clasificador no produjo [ningún veredicto sobre la acción](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action): su respuesta no se pudo analizar, o una verificación de seguridad independiente del modo automático rechazó la propia solicitud del clasificador. Para esas denegaciones, Claude Code ya le indica al modelo en el mensaje de rechazo si debe reintentar más tarde o continuar.

2419 2421 

2420<h3 id="notification">2422<h3 id="notification">

2421 Notification2423 Notification

2422</h3>2424</h3>

2423 2425 

2424Se ejecuta cuando Claude Code envía notificaciones. Coincide en el tipo de notificación. Omita el matcher para ejecutar hooks para todos los tipos de notificación.2426Se ejecuta cuando Claude Code envía notificaciones. Coincide con el tipo de notificación. Omite el matcher para ejecutar hooks para todos los tipos de notificación.

2425 2427 

2426Recibe estos eventos de hook incluso con notificaciones de escritorio desactivadas: la configuración `preferredNotifChannel`, incluida `notifications_disabled`, cambia solo cómo se le alerta, no si su hook se ejecuta.2428Recibes estos eventos de hook incluso con las notificaciones de escritorio desactivadas: el ajuste `preferredNotifChannel`, incluido `notifications_disabled`, solo cambia cómo se te alerta, no si tu hook se ejecuta.

2427 2429 

2428| Matcher | Cuándo se dispara |2430| Matcher | Cuándo se activa |

2429| :- | :- |2431| :- | :- |

2430| `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 |2432| `permission_prompt` | Claude necesita que apruebes el uso de una herramienta o la [solicitud de red](/docs/es/sandboxing#network-isolation) de un comando en el sandbox, y la solicitud lleva esperando unos seis segundos |

2431| `idle_prompt` | Claude terminó de responder hace aproximadamente 60 segundos y no ha escrito desde entonces |2433| `idle_prompt` | Claude terminó de responder hace unos 60 segundos y no has escrito nada desde entonces |

2432| `auth_success` | La autenticación se completa |2434| `auth_success` | Se completa la autenticación |

2433| `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 has escrito nada durante unos seis segundos |

2434| `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 te pide abrir una URL en el navegador y no has escrito nada durante unos seis segundos |

2435| `elicitation_complete` | Un servidor MCP reporta que una [elicitación de modo URL](#elicitation-input) está completa |2437| `elicitation_complete` | Un servidor MCP informa que una [elicitación en modo URL](#elicitation-input) está completa |

2436| `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 MCP de vuelta al servidor |

2437| `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 |2439| `agent_needs_input` | Una sesión en segundo plano comienza a esperar tu entrada mientras la [vista de agentes](/docs/es/agent-view) está abierta en una terminal. También se activa cuando una sesión de terminal te muestra una [pregunta de configuración de terminal de un compañero de un equipo de agentes](/docs/es/agent-teams#choose-a-display-mode) o el aviso del modo automático sobre [cargos por solicitudes del clasificador](/docs/es/auto-mode-classifier-billing) y no has escrito nada durante unos seis segundos |

2438| `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 |2440| `agent_completed` | Una sesión en segundo plano termina o falla. Se activa solo mientras la [vista de agentes](/docs/es/agent-view) está abierta en una terminal |

2439| `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 tu tarea después de que un límite de uso de claude.ai la pausó: en el restablecimiento, o antes cuando algo que haces en Claude Code durante la espera, como agregar créditos de uso, mejorar tu plan o cambiar de modelo, vuelve a habilitar el uso, con la [excepción del ajuste de modelo](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) |

2440| `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 |2442| `quota_auto_resume_stale` | Un límite de uso de claude.ai se restableció mientras tu computadora estuvo suspendida durante más de unos 30 minutos. Claude Code espera a que presiones `Enter` en lugar de continuar. Después de una suspensión más corta, continúa y activa `quota_auto_resume_fired` en su lugar |

2441| `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** |2443| `quota_auto_resume_disabled` | Claude Code termina su espera por un límite de uso de claude.ai sin continuar tu tarea: se desactivó [`autoContinueAtUsageLimit`](/docs/es/settings-reference#autocontinueatusagelimit) o el restablecimiento se alejó más de 24 horas durante una espera que Claude Code inició por su cuenta, la tarea continuada siguió alcanzando el límite, o la continuación se bloqueó antes de llegar al modelo. No se activa cuando presionas `Esc` o `Ctrl+C`, ni cuando eliges **Don't continue automatically** |

2442 2444 

2443Los tipos `quota_auto_resume_fired`, `quota_auto_resume_stale`, y `quota_auto_resume_disabled` requieren Claude Code v2.1.234 o posterior.2445Los tipos `quota_auto_resume_fired`, `quota_auto_resume_stale` y `quota_auto_resume_disabled` requieren Claude Code v2.1.234 o posterior.

2444 2446 

2445En sesiones de terminal, `permission_prompt` para una solicitud de red de un comando en sandbox requiere Claude Code v2.1.246 o posterior.2447En sesiones de terminal, `permission_prompt` para la solicitud de red de un comando en el sandbox requiere Claude Code v2.1.246 o posterior.

2446 2448 

2447`agent_needs_input` para una pregunta de configuración de terminal de un compañero requiere Claude Code v2.1.248 o posterior.2449`agent_needs_input` para la pregunta de configuración de terminal de un compañero requiere Claude Code v2.1.248 o posterior.

2448 2450 

2449<Note>2451<Note>

2450 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:2452 Los tipos `permission_prompt`, `idle_prompt`, `elicitation_dialog` y `elicitation_url_dialog` comparten su temporización con las notificaciones de escritorio, por lo que en las sesiones de terminal solo los ves cuando parece que estás lejos de la terminal:

2451 2453 

2452 * 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.2454 * Espera `permission_prompt` una vez que no hayas escrito nada durante unos seis segundos. El temporizador comienza cuando aparece la solicitud de permiso, y cada pulsación de tecla lo aplaza. Para ejecutar un hook inmediatamente cuando Claude pide permiso para usar una herramienta, usa [PermissionRequest](#permissionrequest) en su lugar.

2453 * 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.2455 * Espera `idle_prompt` unos 60 segundos después de que Claude termine de responder, y solo si no has escrito nada desde entonces y ningún agente en segundo plano, como un [subagente](/docs/es/sub-agents) en segundo plano, sigue en ejecución. Claude Code no envía `idle_prompt` mientras espera a que se restablezca un límite de uso de claude.ai. Cuando la espera termina por sí sola, se activa en su lugar uno de los tipos `quota_auto_resume_*`.

2454 * 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.2456 * Espera `elicitation_dialog` para un formulario de elicitación, o `elicitation_url_dialog` para una solicitud de URL del navegador, una vez que no hayas escrito nada durante unos seis segundos. Ambos comparten el mismo umbral de seis segundos que `permission_prompt`: el temporizador comienza cuando aparece el cuadro de diálogo, y cada pulsación de tecla lo aplaza.

2455 2457 

2456 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.2458 Una solicitud de permiso o elicitación que llega mientras otro cuadro de diálogo está en pantalla mantiene el mismo umbral de seis segundos, contado desde que llega la solicitud. Su notificación puede llegarte mientras la solicitud sigue esperando detrás del cuadro de diálogo abierto.

2457</Note>2459</Note>

2458 2460 

2459Claude 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:2461Claude Code temporiza `permission_prompt` de forma diferente en las sesiones en las que envía solicitudes de permiso al [callback `canUseTool`](/docs/es/agent-sdk/user-input) del Agent SDK, que es como Claude Desktop y la extensión de VS Code alojan Claude Code:

2460 2462 

2461* Espere `permission_prompt` aproximadamente seis segundos después de que Claude solicita permiso. Claude Code no lo difiere mientras escribe.2463* Espera `permission_prompt` unos seis segundos después de que Claude pida permiso. Claude Code no lo aplaza mientras escribes.

2462* Si usted o un hook [PermissionRequest](#permissionrequest) responden antes, Claude Code no ejecuta `permission_prompt`.2464* Si tú o un hook [PermissionRequest](#permissionrequest) responden antes, Claude Code no ejecuta `permission_prompt`.

2463* Establezca [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/es/env-vars) en `1` para desactivar `permission_prompt` en estas sesiones.2465* Establece [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/es/env-vars) en `1` para desactivar `permission_prompt` en estas sesiones.

2464 2466 

2465Antes de v2.1.233, `permission_prompt` no se disparaba en estas sesiones.2467Antes de v2.1.233, `permission_prompt` no se activaba en estas sesiones.

2466 2468 

2467Use matchers separados para ejecutar diferentes manejadores dependiendo del tipo de notificación. Esta configuración dispara un script de alerta específico de permiso cuando Claude necesita aprobación de permiso y una notificación diferente cuando Claude ha estado inactivo:2469Usa matchers separados para ejecutar distintos manejadores según el tipo de notificación. Esta configuración activa un script de alerta específico de permisos cuando Claude necesita aprobación de permisos y una notificación diferente cuando Claude ha estado inactivo:

2468 2470 

2469```json theme={null}2471```json theme={null}

2470{2472{


2497 Entrada de Notification2499 Entrada de Notification

2498</h4>2500</h4>

2499 2501 

2500Además de los [campos de entrada comunes](#common-input-fields), los hooks Notification reciben `message` con el texto de notificación, un `title` opcional, y `notification_type` que indica qué tipo se disparó.2502Además de los [campos de entrada comunes](#common-input-fields), los hooks Notification reciben `message` con el texto de la notificación, un `title` opcional y `notification_type`, que indica qué tipo se activó.

2501 2503 

2502```json theme={null}2504```json theme={null}

2503{2505{


2511}2513}

2512```2514```

2513 2515 

2514Los 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.2516Los hooks Notification no pueden bloquear ni modificar notificaciones. Claude Code descarta sus campos `systemMessage` y `continue`, pero sigue emitiendo [`terminalSequence`](#emit-terminal-notifications), que es en lo que se basa el ejemplo de notificación de escritorio. Los hooks Notification están pensados para efectos secundarios, como reenviar la notificación a un servicio externo.

2515 2517 

2516<h3 id="subagentstart">2518<h3 id="subagentstart">

2517 SubagentStart2519 SubagentStart

2518</h3>2520</h3>

2519 2521 

2520Se 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.2522Se 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 en proceso de un [equipo de agentes](/docs/es/agent-teams) maneja un mensaje nuevo. Admite matchers para filtrar por nombre de tipo de agente. Para los agentes integrados, es el nombre del agente, como `general-purpose`, `Explore` o `Plan`. Para los [subagentes personalizados](/docs/es/sub-agents), es el campo `name` del frontmatter del agente, no el nombre del archivo.

2521 2523 

2522Para 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$`.2524Para los subagentes incluidos en un [plugin](/docs/es/plugins/overview), el tipo de agente es el identificador con ámbito del plugin, como `my-plugin:reviewer`, no el nombre simple del frontmatter. Los dos puntos colocan un nombre con ámbito de plugin en la ruta de expresión regular, así que ancla el matcher con `^` y `$` para una coincidencia exacta: `^my-plugin:reviewer$`.

2523 2525 

2524<h4 id="subagentstart-input">2526<h4 id="subagentstart-input">

2525 Entrada de SubagentStart2527 Entrada de SubagentStart

2526</h4>2528</h4>

2527 2529 

2528Además de los [campos de entrada comunes](#common-input-fields), los hooks SubagentStart reciben `agent_id` con el identificador único para el subagente y `agent_type` con el nombre del agente que el matcher filtra.2530Además de los [campos de entrada comunes](#common-input-fields), los hooks SubagentStart reciben `agent_id` con el identificador único del subagente y `agent_type` con el nombre del agente sobre el que filtra el matcher.

2529 2531 

2530```json theme={null}2532```json theme={null}

2531{2533{


2538}2540}

2539```2541```

2540 2542 

2541Los 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:2543Los 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, puedes devolver:

2542 2544 

2543| Campo | Descripción |2545| Campo | Descripción |

2544| :- | :- |2546| :- | :- |

2545| `additionalContext` | Cadena agregada al contexto del subagente al inicio de su conversación, antes de su primer prompt. Consulte [Agregar contexto para Claude](#add-context-for-claude) |2547| `additionalContext` | Cadena que se agrega al contexto del subagente al comienzo de su conversación, antes de su primer prompt. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

2546 2548 

2547```json theme={null}2549```json theme={null}

2548{2550{


2553}2555}

2554```2556```

2555 2557 

2556Cuando el hook se ejecuta nuevamente para el mismo subagente, Claude Code inyecta el contexto devuelto solo cuando el contexto del subagente no contiene ya la copia de una ejecución anterior. La copia inyectada al inicio permanece en su lugar, dejando el [caché de prompt](/docs/es/prompt-caching#subagents-and-the-cache) del subagente intacto. Después de que la [compactación automática](/docs/es/sub-agents#auto-compaction) descarta esa copia, Claude Code inyecta el contexto de la siguiente ejecución nuevamente.2558Cuando el hook se vuelve a ejecutar para el mismo subagente, Claude Code inyecta el contexto devuelto solo cuando el contexto del subagente aún no contiene la copia de una ejecución anterior. La copia inyectada al inicio permanece en su lugar, lo que mantiene intacta la [caché de prompts](/docs/es/prompt-caching#subagents-and-the-cache) del subagente. Después de que la [compactación automática](/docs/es/sub-agents#auto-compaction) descarta esa copia, Claude Code vuelve a inyectar el contexto de la siguiente ejecución.

2557 2559 

2558<h3 id="subagentstop">2560<h3 id="subagentstop">

2559 SubagentStop2561 SubagentStop

2560</h3>2562</h3>

2561 2563 

2562Se ejecuta cuando un subagente de Claude Code ha terminado de responder. Coincide en el tipo de agente, los mismos valores que SubagentStart.2564Se ejecuta cuando un subagente de Claude Code terminó de responder. Coincide con el tipo de agente, con los mismos valores que SubagentStart.

2563 2565 

2564<h4 id="subagentstop-input">2566<h4 id="subagentstop-input">

2565 Entrada de SubagentStop2567 Entrada de SubagentStop

2566</h4>2568</h4>

2567 2569 

2568Ademá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.2570Ademá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 que se usa para el filtrado del matcher. `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 anidada `subagents/`. El campo `last_assistant_message` contiene el contenido de texto de la respuesta final del subagente, para que los hooks puedan acceder a él sin analizar el archivo de transcripción.

2569 2571 

2570No 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.2572No todos los eventos SubagentStop provienen de un subagente que Claude generó. Claude Code también ejecuta agentes internos para algunas de sus propias funciones, como las [sugerencias de prompts](/docs/es/interactive-mode#prompt-suggestions) y las [preguntas laterales con `/btw`](/docs/es/interactive-mode#side-questions-with-%2Fbtw), y SubagentStop también se activa cuando uno de ellos termina. Para esos eventos, `agent_type` es el nombre del agente con el que se ejecuta la propia sesión, como uno establecido con [`--agent`](/docs/es/cli-reference#cli-flags) o con el [ajuste `agent`](/docs/es/settings-reference#agent), y una cadena vacía cuando la sesión se ejecuta sin uno.

2571 2573 

2572Un `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.2574Un `matcher` que nombra tipos de agente no coincide con un `agent_type` vacío. Un hook cuyo matcher se omite, es `""` o `"*"`, o es una expresión regular que coincide con una cadena vacía, también se ejecuta para eventos con un `agent_type` vacío.

2573 2575 

2574En 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`.2576En 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 detenerse. El campo `last_assistant_message` contiene entonces 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 con `SubagentHandback` recibe como `tool_input.message`.

2575 2577 

2576Los 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.2578Los hooks SubagentStop también reciben los arreglos `background_tasks` y `session_crons` descritos en [Entrada de Stop](#stop-input). Ambos arreglos tienen como ámbito la sesión principal, no el subagente.

2577 2579 

2578```json theme={null}2580```json theme={null}

2579{2581{


2592}2594}

2593```2595```

2594 2596 

2595Los 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.2597Los hooks SubagentStop usan el mismo formato de control de decisiones que los [hooks Stop](#stop-decision-control), incluido `hookSpecificOutput.additionalContext` con `hookEventName` establecido en `"SubagentStop"`, para retroalimentación que no es de error y que mantiene al subagente en ejecución. Devolver `decision: "block"` con un `reason` mantiene al subagente en ejecución y le entrega `reason` como su siguiente instrucción. Un hook que bloquea al terminar con código 2 entrega su mensaje de stderr de la misma manera. Para inyectar contexto en la sesión principal después de que un subagente regresa, usa en su lugar un hook [`PostToolUse`](#posttooluse) sobre la herramienta `Agent`.

2596 2598 

2597<h3 id="taskcreated">2599<h3 id="taskcreated">

2598 TaskCreated2600 TaskCreated

2599</h3>2601</h3>

2600 2602 

2601Se ejecuta cuando se está creando una tarea a través de la herramienta `TaskCreate`. Úselo para hacer cumplir convenciones de nomenclatura, requerir descripciones de tareas o evitar que se creen ciertas tareas. En una [sesión sin las herramientas Task](/docs/es/tools-reference#task-tool-availability), este evento no se dispara.2603Se ejecuta cuando se está creando una tarea mediante la herramienta `TaskCreate`. Úsalo para aplicar convenciones de nomenclatura, exigir descripciones de tareas o impedir que se creen ciertas tareas. En una [sesión sin las herramientas Task](/docs/es/tools-reference#task-tool-availability), este evento no se activa.

2602 2604 

2603Los hooks TaskCreated no admiten matchers y se disparan en cada ocurrencia.2605Los hooks TaskCreated no admiten matchers y se activan en cada ocurrencia.

2604 2606 

2605<h4 id="taskcreated-input">2607<h4 id="taskcreated-input">

2606 Entrada de TaskCreated2608 Entrada de TaskCreated

2607</h4>2609</h4>

2608 2610 

2609Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCreated reciben `task_id`, `task_subject`, y opcionalmente `task_description`, `teammate_name`, y `team_name`.2611Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCreated reciben `task_id`, `task_subject` y, opcionalmente, `task_description`, `teammate_name` y `team_name`.

2610 2612 

2611```json theme={null}2613```json theme={null}

2612{2614{


2626| :- | :- |2628| :- | :- |

2627| `task_id` | Identificador de la tarea que se está creando |2629| `task_id` | Identificador de la tarea que se está creando |

2628| `task_subject` | Título de la tarea |2630| `task_subject` | Título de la tarea |

2629| `task_description` | Descripción detallada de la tarea. Puede estar ausente |2631| `task_description` | Descripción detallada de la tarea. Puede no estar presente |

2630| `teammate_name` | Nombre del compañero que está creando la tarea. Puede estar ausente |2632| `teammate_name` | Nombre del compañero que crea la tarea. Puede no estar presente |

2631| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |2633| `team_name` | Obsoleto. Nombre del equipo derivado de la sesión; se eliminará en una versión futura |

2632 2634 

2633<h4 id="taskcreated-decision-control">2635<h4 id="taskcreated-decision-control">

2634 Control de decisión de TaskCreated2636 Control de decisiones de TaskCreated

2635</h4>2637</h4>

2636 2638 

2637Un hook TaskCreated puede bloquear la creación de dos formas. De cualquier forma, Claude Code elimina la tarea y devuelve su mensaje a Claude como el error de la herramienta. Claude Code ignora `continue: false` de este evento y Claude sigue trabajando.2639Un hook TaskCreated puede bloquear la creación de dos maneras. En cualquier caso, Claude Code elimina la tarea y devuelve tu mensaje a Claude como el error de la herramienta. Claude Code ignora `continue: false` de este evento y Claude sigue trabajando.

2638 2640 

2639* **Código de salida 2**: Claude Code devuelve el texto stderr como el mensaje.2641* **Código de salida 2**: Claude Code devuelve el texto de stderr como mensaje.

2640* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code devuelve `reason` como el mensaje.2642* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code devuelve `reason` como mensaje.

2641 2643 

2642Este ejemplo bloquea tareas cuyos asuntos no siguen el formato requerido:2644Este ejemplo bloquea las tareas cuyos asuntos no siguen el formato requerido:

2643 2645 

2644```bash theme={null}2646```bash theme={null}

2645#!/bin/bash2647#!/bin/bash


2658 TaskCompleted2660 TaskCompleted

2659</h3>2661</h3>

2660 2662 

2661Se 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.2663Se ejecuta cuando una tarea se está marcando como completada. Se activa en dos situaciones: cuando cualquier agente marca explícitamente una tarea como completada mediante la herramienta TaskUpdate, o cuando un compañero de un [equipo de agentes](/docs/es/agent-teams) termina su turno con tareas en curso. Úsalo para aplicar criterios de finalización, como exigir que pasen las pruebas o las verificaciones de lint antes de que una tarea pueda cerrarse.

2662 2664 

2663Los hooks TaskCompleted no admiten matchers y se disparan en cada ocurrencia.2665Los hooks TaskCompleted no admiten matchers y se activan en cada ocurrencia.

2664 2666 

2665<h4 id="taskcompleted-input">2667<h4 id="taskcompleted-input">

2666 Entrada de TaskCompleted2668 Entrada de TaskCompleted

2667</h4>2669</h4>

2668 2670 

2669Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCompleted reciben `task_id`, `task_subject`, y opcionalmente `task_description`, `teammate_name`, y `team_name`.2671Además de los [campos de entrada comunes](#common-input-fields), los hooks TaskCompleted reciben `task_id`, `task_subject` y, opcionalmente, `task_description`, `teammate_name` y `team_name`.

2670 2672 

2671```json theme={null}2673```json theme={null}

2672{2674{


2687| :- | :- |2689| :- | :- |

2688| `task_id` | Identificador de la tarea que se está completando |2690| `task_id` | Identificador de la tarea que se está completando |

2689| `task_subject` | Título de la tarea |2691| `task_subject` | Título de la tarea |

2690| `task_description` | Descripción detallada de la tarea. Puede estar ausente |2692| `task_description` | Descripción detallada de la tarea. Puede no estar presente |

2691| `teammate_name` | Nombre del compañero que está completando la tarea. Puede estar ausente |2693| `teammate_name` | Nombre del compañero que completa la tarea. Puede no estar presente |

2692| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |2694| `team_name` | Obsoleto. Nombre del equipo derivado de la sesión; se eliminará en una versión futura |

2693 2695 

2694<h4 id="taskcompleted-decision-control">2696<h4 id="taskcompleted-decision-control">

2695 Control de decisión de TaskCompleted2697 Control de decisiones de TaskCompleted

2696</h4>2698</h4>

2697 2699 

2698Los hooks TaskCompleted admiten dos formas de controlar la finalización de tareas:2700Los hooks TaskCompleted admiten dos formas de controlar la finalización de tareas:

2699 2701 

2700* **Código de salida 2**: la tarea no se marca como completada y el mensaje stderr se devuelve al modelo como retroalimentación.2702* **Código de salida 2**: la tarea no se marca como completada y el mensaje de stderr se devuelve al modelo como retroalimentación.

2701* **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.2703* **JSON `{"continue": false, "stopReason": "..."}`**: cuando el evento lo activó un compañero que terminaba su turno, detiene al compañero por completo, igual que el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario. Cuando el evento lo activó la herramienta `TaskUpdate`, Claude Code ignora `continue: false`; el código de salida 2 sigue bloqueando la finalización.

2702 2704 

2703Este ejemplo ejecuta pruebas y bloquea la finalización de tareas si fallan:2705Este ejemplo ejecuta pruebas y bloquea la finalización de la tarea si fallan:

2704 2706 

2705```bash theme={null}2707```bash theme={null}

2706#!/bin/bash2708#!/bin/bash


2720 Stop2722 Stop

2721</h3>2723</h3>

2722 2724 

2723Se ejecuta cuando el agente principal de Claude Code ha terminado de responder. No se ejecuta si la detención ocurrió debido a una interrupción del usuario. Los errores de API disparan [StopFailure](#stopfailure) en su lugar.2725Se ejecuta cuando el agente principal de Claude Code terminó de responder. No se ejecuta si

2726la detención se produjo por una interrupción del usuario. Los errores de la API activan

2727[StopFailure](#stopfailure) en su lugar.

2724 2728 

2725<Tip>2729<Tip>

2726 El comando [`/goal`](/docs/es/goal) es un atajo integrado para un hook Stop con alcance de sesión basado en prompt. Úselo cuando quiera que Claude siga trabajando hacia una condición sin escribir configuración de hook.2730 El comando [`/goal`](/docs/es/goal) es un atajo integrado para un hook Stop basado en prompts con ámbito de sesión. Úsalo cuando quieras que Claude siga trabajando hacia una condición sin escribir configuración de hooks.

2727</Tip>2731</Tip>

2728 2732 

2729<h4 id="stop-input">2733<h4 id="stop-input">

2730 Entrada de Stop2734 Entrada de Stop

2731</h4>2735</h4>

2732 2736 

2733Ademá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 stop. Verifica este valor o procesa la transcripción para evitar bloquear por una condición que nunca se resolverá. Claude Code aplica un límite de 8 continuaciones consecutivas: después de que los hooks stop continuaron el turno ocho veces seguidas, Claude Code sobrescribe el siguiente bloqueo y termina el turno. Para aumentar el límite, establece [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/es/env-vars).

2734 2738 

2735El 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.2739El campo `last_assistant_message` contiene el contenido de texto de la respuesta final de Claude, para que los hooks puedan acceder a él sin analizar el archivo de transcripción. Para los hooks que actúan sobre el turno recién completado, como los hooks de lectura en voz alta o de notificación, usa este campo en lugar de leer `transcript_path`: no se garantiza que el archivo de transcripción incluya el mensaje final en el momento de Stop en todas las versiones.

2736 2740 

2737Las 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.2741Los arreglos `background_tasks` y `session_crons` permiten a los hooks distinguir entre "la sesión terminó" y "la sesión está en pausa esperando que un trabajo en segundo plano la reactive". Ambos arreglos están presentes cuando el registro de tareas es accesible y están vacíos cuando no hay nada en curso ni programado.

2738 2742 

2739Cada entrada en `background_tasks` describe una tarea en vuelo y usa estos campos:2743Cada entrada de `background_tasks` describe una tarea en curso y usa estos campos:

2740 2744 

2741| Campo | Descripción |2745| Campo | Descripción |

2742| :- | :- |2746| :- | :- |

2743| `id` | Identificador de tarea |2747| `id` | Identificador de la tarea |

2744| `type` | Etiqueta de tipo de tarea amigable como `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, o `MCP task`. Cada etiqueta identifica qué característica de Claude Code creó la tarea. Vuelve al discriminante sin procesar para tipos no reconocidos |2748| `type` | Etiqueta legible del tipo de tarea, como `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` o `MCP task`. Cada etiqueta identifica qué función de Claude Code creó la tarea. Recurre al discriminante sin procesar para tipos no reconocidos |

2745| `status` | Estado actual de la tarea |2749| `status` | Estado actual de la tarea |

2746| `description` | Descripción de texto libre, limitada a 1000 caracteres con un marcador `… [+N chars]` en cadena cuando se recorta |2750| `description` | Descripción de texto libre, limitada a 1000 caracteres con un marcador `… [+N chars]` dentro de la cadena cuando se recorta |

2747| `command` | Línea de comando de shell, limitada a 1000 caracteres. Presente solo para tareas `shell` |2751| `command` | Línea de comando del shell, limitada a 1000 caracteres. Presente solo para tareas `shell` |

2748| `agent_type` | Nombre de tipo de subagente. Presente solo para tareas `subagent` |2752| `agent_type` | Nombre del tipo de subagente. Presente solo para tareas `subagent` |

2749| `server` | Nombre del servidor MCP. Presente solo para tareas `monitor` y `MCP task` |2753| `server` | Nombre del servidor MCP. Presente solo para tareas `monitor` y `MCP task` |

2750| `tool` | Nombre de herramienta MCP. Presente solo para tareas `monitor` y `MCP task` |2754| `tool` | Nombre de la herramienta MCP. Presente solo para tareas `monitor` y `MCP task` |

2751| `name` | Nombre del flujo de trabajo. Presente solo para tareas `workflow` |2755| `name` | Nombre del workflow. Presente solo para tareas `workflow` |

2752 2756 

2753Cada entrada en `session_crons` describe un despertar programado con alcance de sesión, originario de `CronCreate`, `ScheduleWakeup`, y `/loop`:2757Cada entrada de `session_crons` describe una reactivación programada con ámbito de sesión, procedente de `CronCreate`, `ScheduleWakeup` y `/loop`:

2754 2758 

2755| Campo | Descripción |2759| Campo | Descripción |

2756| :- | :- |2760| :- | :- |

2757| `id` | Identificador de tarea cron |2761| `id` | Identificador de la tarea cron |

2758| `schedule` | Expresión cron, por ejemplo `0 9 * * 1-5` |2762| `schedule` | Expresión cron, por ejemplo `0 9 * * 1-5` |

2759| `recurring` | `false` para despertares únicos cuya programación codifica un único tiempo de disparo, `true` para tareas que se disparan nuevamente en cada coincidencia |2763| `recurring` | `false` para reactivaciones únicas cuya programación codifica un solo momento de activación, `true` para tareas que se vuelven a activar en cada coincidencia |

2760| `prompt` | Prompt enviado cuando se dispara el cron, limitado a 1000 caracteres con el mismo marcador `… [+N chars]` |2764| `prompt` | Prompt enviado cuando se activa el cron, limitado a 1000 caracteres con el mismo marcador `… [+N chars]` |

2761 2765 

2762Este ejemplo muestra una entrada de Stop con una tarea de shell en vuelo y un cron recurrente:2766Este ejemplo muestra una entrada de Stop con una tarea de shell en curso y un cron recurrente:

2763 2767 

2764```json theme={null}2768```json theme={null}

2765{2769{


2791```2795```

2792 2796 

2793<h4 id="stop-decision-control">2797<h4 id="stop-decision-control">

2794 Control de decisión de Stop2798 Control de decisiones de Stop

2795</h4>2799</h4>

2796 2800 

2797Los hooks `Stop` y `SubagentStop` pueden controlar si Claude continúa. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, su script de hook puede devolver estos campos específicos del evento:2801Los hooks `Stop` y `SubagentStop` pueden controlar si Claude continúa. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, tu script de hook puede devolver estos campos específicos del evento:

2798 2802 

2799| Campo | Descripción |2803| Campo | Descripción |

2800| :- | :- |2804| :- | :- |

2801| `decision` | `"block"` evita que Claude se detenga. Omita para permitir que Claude se detenga |2805| `decision` | `"block"` impide que Claude se detenga. Omítelo para permitir que Claude se detenga |

2802| `reason` | Requerido cuando `decision` es `"block"`. Le dice a Claude por qué debería continuar |2806| `reason` | Obligatorio cuando `decision` es `"block"`. Le indica a Claude por qué debe continuar |

2803| `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 para Claude que no es de error. La conversación continúa para que Claude pueda actuar en consecuencia, pero a diferencia de `decision: "block"` se muestra en la transcripción como retroalimentación del hook en lugar de como un error del hook |

2804 2808 

2805Un 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.2809Un hook que bloquea al terminar con código 2 se enruta igual que `reason`: Claude recibe el mensaje de stderr como la explicación de por qué debe continuar.

2806 2810 

2807```json theme={null}2811```json theme={null}

2808{2812{


2811}2815}

2812```2816```

2813 2817 

2814Use `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:2818Usa `additionalContext` cuando el hook funciona según lo previsto y le da orientación a Claude, como "ejecuta el conjunto de pruebas antes de terminar". Mantiene la conversación en marcha a través de las mismas protecciones contra bucles que `decision: "block"`, es decir, la entrada `stop_hook_active` y el límite de 8 continuaciones consecutivas, pero la transcripción lo etiqueta como `Stop hook feedback` y no se muestra ninguna notificación de error del hook:

2815 2819 

2816```json theme={null}2820```json theme={null}

2817{2821{


2826 StopFailure2830 StopFailure

2827</h3>2831</h3>

2828 2832 

2829Se ejecuta en lugar de [Stop](#stop) cuando el turno termina debido a un error de API. Claude Code ignora la salida y el código de salida del hook, aparte de [`terminalSequence`](#emit-terminal-notifications). Úselo para registrar fallos, enviar alertas o tomar acciones de recuperación cuando Claude no puede completar una respuesta debido a límites de velocidad, problemas de autenticación u otros errores de API.2833Se ejecuta en lugar de [Stop](#stop) cuando el turno termina debido a un error de la API. Claude Code ignora la salida y el código de salida del hook, excepto [`terminalSequence`](#emit-terminal-notifications). Úsalo para registrar fallas, enviar alertas o tomar medidas de recuperación cuando Claude no puede completar una respuesta debido a rate limits, problemas de autenticación u otros errores de la API.

2830 2834 

2831<h4 id="stopfailure-input">2835<h4 id="stopfailure-input">

2832 Entrada de StopFailure2836 Entrada de StopFailure

2833</h4>2837</h4>

2834 2838 

2835Ademá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.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 el filtrado del matcher.

2836 2840 

2837| Campo | Descripción |2841| Campo | Descripción |

2838| :- | :- |2842| :- | :- |

2839| `error` | Tipo de error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, o `unknown` |2843| `error` | Tipo de error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` o `unknown` |

2840| `error_details` | Detalles adicionales sobre el error, cuando esté disponible |2844| `error_details` | Detalles adicionales sobre el error, cuando están disponibles |

2841| `last_assistant_message` | El texto de error renderizado mostrado en la conversación. A diferencia de `Stop` y `SubagentStop`, donde este campo contiene la salida conversacional de Claude, para `StopFailure` contiene la cadena de error de la API en sí, como `"API Error: Rate limit reached"` |2845| `last_assistant_message` | El texto de error renderizado que se muestra en la conversación. A diferencia de `Stop` y `SubagentStop`, donde este campo contiene la salida conversacional de Claude, para `StopFailure` contiene la propia cadena de error de la API, como `"API Error: Rate limit reached"` |

2842 2846 

2843```json theme={null}2847```json theme={null}

2844{2848{


2852}2856}

2853```2857```

2854 2858 

2855Los hooks StopFailure no tienen control de decisión. Se ejecutan solo para propósitos de notificación y registro.2859Los hooks StopFailure no tienen control de decisiones. Se ejecutan solo con fines de notificación y registro.

2856 2860 

2857<h3 id="teammateidle">2861<h3 id="teammateidle">

2858 TeammateIdle2862 TeammateIdle

2859</h3>2863</h3>

2860 2864 

2861Se 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.2865Se ejecuta cuando un compañero de un [equipo de agentes](/docs/es/agent-teams) está a punto de quedar inactivo después de terminar su turno. Úsalo para aplicar controles de calidad antes de que un compañero deje de trabajar, como exigir que pasen las verificaciones de lint o verificar que existan los archivos de salida.

2862 2866 

2863Los hooks TeammateIdle no admiten matchers y se disparan en cada ocurrencia.2867Los hooks TeammateIdle no admiten matchers y se activan en cada ocurrencia.

2864 2868 

2865<h4 id="teammateidle-input">2869<h4 id="teammateidle-input">

2866 Entrada de TeammateIdle2870 Entrada de TeammateIdle


2882 2886 

2883| Campo | Descripción |2887| Campo | Descripción |

2884| :- | :- |2888| :- | :- |

2885| `teammate_name` | Nombre del compañero que está a punto de quedarse inactivo |2889| `teammate_name` | Nombre del compañero que está a punto de quedar inactivo |

2886| `team_name` | Deprecado. Nombre de equipo derivado de sesión; se eliminará en una versión futura |2890| `team_name` | Obsoleto. Nombre del equipo derivado de la sesión; se eliminará en una versión futura |

2887 2891 

2888<h4 id="teammateidle-decision-control">2892<h4 id="teammateidle-decision-control">

2889 Control de decisión de TeammateIdle2893 Control de decisiones de TeammateIdle

2890</h4>2894</h4>

2891 2895 

2892Los 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:

2893 2897 

2894* **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 de stderr como retroalimentación y sigue trabajando en lugar de quedar inactivo.

2895* **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 al compañero por completo, igual que el comportamiento del hook `Stop`. El `stopReason` se muestra al usuario.

2896 2900 

2897Este 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 quede inactivo:

2898 2902 

2899```bash theme={null}2903```bash theme={null}

2900#!/bin/bash2904#!/bin/bash


2911 ConfigChange2915 ConfigChange

2912</h3>2916</h3>

2913 2917 

2914Se 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.2918Se ejecuta cuando un archivo de configuración cambia durante una sesión. Úsalo para auditar cambios de configuración, aplicar políticas de seguridad o bloquear modificaciones no autorizadas a los archivos de configuración.

2915 2919 

2916Claude 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.2920Claude Code ejecuta los hooks ConfigChange cuando cambia un archivo de configuración, un archivo de política administrada o un archivo de skill. Para la política administrada, solo los ejecuta cuando cambia `managed-settings.json` o un archivo en `managed-settings.d/`. Aplica la [configuración administrada por el servidor](/docs/es/server-managed-settings) y los cambios en las preferencias administradas de macOS o en la política del registro de Windows sin ejecutarlos. En WSL con [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings), también aplica un archivo de configuración administrada del lado de Windows que cambió en su sondeo de políticas sin ejecutarlos.

2917 2921 

2918El matcher filtra en la fuente de configuración:2922El matcher filtra según el origen de la configuración:

2919 2923 

2920| Matcher | Cuándo se dispara |2924| Matcher | Cuándo se activa |

2921| :- | :- |2925| :- | :- |

2922| `user_settings` | `~/.claude/settings.json` cambia |2926| `user_settings` | Cambia `~/.claude/settings.json` |

2923| `project_settings` | `.claude/settings.json` cambia |2927| `project_settings` | Cambia `.claude/settings.json` |

2924| `local_settings` | `.claude/settings.local.json` cambia |2928| `local_settings` | Cambia `.claude/settings.local.json` |

2925| `policy_settings` | `managed-settings.json` o un archivo en `managed-settings.d/` cambia |2929| `policy_settings` | Cambia `managed-settings.json` o un archivo en `managed-settings.d/` |

2926| `skills` | Un archivo de skill en `.claude/skills/` cambia |2930| `skills` | Cambia un archivo de skill en `.claude/skills/` |

2927 2931 

2928Este ejemplo registra todos los cambios de configuración para auditoría de seguridad:2932Este ejemplo registra todos los cambios de configuración para auditorías de seguridad:

2929 2933 

2930```json theme={null}2934```json theme={null}

2931{2935{


2949 Entrada de ConfigChange2953 Entrada de ConfigChange

2950</h4>2954</h4>

2951 2955 

2952Además de los [campos de entrada comunes](#common-input-fields), los hooks ConfigChange reciben `source` y opcionalmente `file_path`. El campo `source` indica qué tipo de configuración cambió, y `file_path` proporciona la ruta al archivo específico que se modificó.2956Además de los [campos de entrada comunes](#common-input-fields), los hooks ConfigChange reciben `source` y, opcionalmente, `file_path`. El campo `source` indica qué tipo de configuración cambió, y `file_path` proporciona la ruta del archivo específico que se modificó.

2953 2957 

2954```json theme={null}2958```json theme={null}

2955{2959{


2963```2967```

2964 2968 

2965<h4 id="configchange-decision-control">2969<h4 id="configchange-decision-control">

2966 Control de decisión de ConfigChange2970 Control de decisiones de ConfigChange

2967</h4>2971</h4>

2968 2972 

2969Los 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.2973Los hooks ConfigChange pueden impedir que los cambios de configuración surtan efecto. Usa el código de salida 2 o un `decision` en JSON para impedir el cambio. Cuando se bloquea, la nueva configuración no se aplica a la sesión en ejecución.

2970 2974 

2971| Campo | Descripción |2975| Campo | Descripción |

2972| :- | :- |2976| :- | :- |

2973| `decision` | `"block"` evita que el cambio de configuración se aplique. Omita para permitir el cambio |2977| `decision` | `"block"` impide que se aplique el cambio de configuración. Omítelo para permitir el cambio |

2974| `reason` | Aceptado pero nunca mostrado |2978| `reason` | Se acepta, pero nunca se muestra |

2975 2979 

2976```json theme={null}2980```json theme={null}

2977{2981{


2980}2984}

2981```2985```

2982 2986 

2983Los 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).2987Los cambios de `policy_settings` no se pueden bloquear. Los hooks siguen activándose para los orígenes `policy_settings` cuando cambia un archivo de configuración administrada en la máquina, así que puedes usarlos para registrar esas ediciones, pero cualquier decisión de bloqueo se ignora. Esto garantiza que la configuración administrada por la empresa siempre surta efecto. Claude Code no ejecuta hooks `ConfigChange` cuando llega o se actualiza la [configuración administrada por el servidor](/docs/es/server-managed-settings).

2984 2988 

2985Claude 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 según 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 ni a ti ni a Claude, ya sea que bloquees con `reason` o con stderr y código de salida 2. Claude Code solo escribe una línea en el registro de depuración.

2986 2990 

2987<h3 id="cwdchanged">2991<h3 id="cwdchanged">

2988 CwdChanged2992 CwdChanged

2989</h3>2993</h3>

2990 2994 

2991Se ejecuta cuando un comando de shell en la conversación principal cambia el directorio de trabajo, por ejemplo cuando Claude ejecuta un comando `cd`. Úselo para reaccionar a cambios de directorio: recargar variables de entorno, activar cadenas de herramientas específicas del proyecto o ejecutar scripts de configuración automáticamente. Se empareja con [FileChanged](#filechanged) para herramientas como [direnv](https://direnv.net/) que administran el entorno por directorio.2995Se ejecuta cuando un comando de shell en la conversación principal cambia el directorio de trabajo, por ejemplo cuando Claude ejecuta un comando `cd`. Úsalo para reaccionar a los cambios de directorio: recargar variables de entorno, activar cadenas de herramientas específicas del proyecto o ejecutar scripts de configuración automáticamente. Se combina con [FileChanged](#filechanged) para herramientas como [direnv](https://direnv.net/) que administran el entorno por directorio.

2992 2996 

2993Los hooks CwdChanged tienen acceso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Las variables escritas en ese archivo persisten en comandos Bash posteriores hasta el siguiente evento CwdChanged, cuando Claude Code las borra.2997Los hooks CwdChanged tienen acceso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Las variables escritas en ese archivo persisten en los comandos Bash posteriores hasta el siguiente evento CwdChanged, cuando Claude Code las borra.

2994 2998 

2995CwdChanged no admite matchers y se dispara en cada ocurrencia.2999CwdChanged no admite matchers y se activa en cada ocurrencia.

2996 3000 

2997<h4 id="cwdchanged-input">3001<h4 id="cwdchanged-input">

2998 Entrada de CwdChanged3002 Entrada de CwdChanged


3015 Salida de CwdChanged3019 Salida de CwdChanged

3016</h4>3020</h4>

3017 3021 

3018Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks CwdChanged pueden devolver `watchPaths` para establecer dinámicamente qué rutas de archivo [FileChanged](#filechanged) observa:3022Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks CwdChanged pueden devolver `watchPaths` para establecer dinámicamente qué rutas de archivo vigila [FileChanged](#filechanged):

3019 3023 

3020| Campo | Descripción |3024| Campo | Descripción |

3021| :- | :- |3025| :- | :- |

3022| `watchPaths` | Matriz de rutas absolutas. Reemplaza la lista de observación dinámica actual. Las rutas de su configuración `matcher` siempre se observan. Devolver una matriz vacía borra la lista dinámica, que es típico al entrar en un nuevo directorio |3026| `watchPaths` | Arreglo de rutas absolutas. Reemplaza la lista de vigilancia dinámica actual. Las rutas de tu configuración de `matcher` siempre se vigilan. Devolver un arreglo vacío borra la lista dinámica, lo cual es habitual al entrar en un directorio nuevo |

3023 3027 

3024Los hooks CwdChanged no tienen control de decisión. No pueden bloquear el cambio de directorio.3028Los hooks CwdChanged no tienen control de decisiones. No pueden bloquear el cambio de directorio.

3025 3029 

3026Claude Code lee `watchPaths` y `systemMessage` de su salida JSON y descarta `continue`. En sesiones interactivas, muestra el `systemMessage` como una breve notificación de terminal. El mensaje no llega al flujo de mensajes del SDK.3030Claude Code lee `watchPaths` y `systemMessage` de su salida JSON y descarta `continue`. En las sesiones interactivas, muestra el `systemMessage` como una breve notificación en la terminal. El mensaje no llega al flujo de mensajes del SDK.

3027 3031 

3028<h3 id="directoryadded">3032<h3 id="directoryadded">

3029 DirectoryAdded3033 DirectoryAdded

3030</h3>3034</h3>

3031 3035 

3032Se 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.3036Se ejecuta después de que agregas un directorio de trabajo a mitad de sesión con el comando `/add-dir`, o después de que un cliente del SDK agrega uno con la solicitud de control `register_repo_root`. Úsalo para preparar un repositorio recién agregado, por ejemplo instalando sus dependencias.

3033 3037 

3034Claude Code no dispara este evento cuando:3038Claude Code no activa este evento cuando:

3035 3039 

3036* Pasa un directorio con la bandera de inicio `--add-dir`; [SessionStart](#sessionstart) cubre esos directorios3040* Pasas un directorio con el flag de inicio `--add-dir`; [SessionStart](#sessionstart) cubre esos directorios

3037* Agrega un directorio en la pestaña Workspace `/permissions`3041* Agregas un directorio en la pestaña Workspace de `/permissions`

3038* Agrega un directorio que ya es un directorio de trabajo o está dentro de uno3042* Agregas un directorio que ya es un directorio de trabajo o que está dentro de uno

3039 3043 

3040Claude Code se dispara DirectoryAdded después de actualizar el estado de sandbox y permiso, por lo que las herramientas en sandbox ya ven el nuevo directorio cuando se ejecuta su hook. Los comandos del hook en sí se ejecutan sin sandbox.3044Claude Code activa DirectoryAdded después de actualizar el estado del sandbox y de los permisos, por lo que las herramientas en el sandbox ya ven el nuevo directorio cuando se ejecuta tu hook. Los comandos de los hooks en sí se ejecutan fuera del sandbox.

3041 3045 

3042Claude Code no espera el hook: la adición se completa inmediatamente, y el hook se ejecuta en segundo plano con el tiempo de espera predeterminado de 600 segundos.3046Claude Code no espera al hook: la adición se completa inmediatamente y el hook se ejecuta en segundo plano con el tiempo de espera predeterminado de 600 segundos.

3043 3047 

3044El matcher filtra en cómo se agregó el directorio:3048El matcher filtra según cómo se agregó el directorio:

3045 3049 

3046| Matcher | Cuándo se dispara |3050| Matcher | Cuándo se activa |

3047| :- | :- |3051| :- | :- |

3048| `slash_command` | Agrega un directorio con `/add-dir` |3052| `slash_command` | Agregas un directorio con `/add-dir` |

3049| `register_repo_root` | Un cliente del 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` |

3050 3054 

3051<h4 id="directoryadded-input">3055<h4 id="directoryadded-input">


3057| Campo | Descripción |3061| Campo | Descripción |

3058| :- | :- |3062| :- | :- |

3059| `directory` | Ruta absoluta del directorio que se agregó |3063| `directory` | Ruta absoluta del directorio que se agregó |

3060| `source` | Cómo se agregó el directorio, `"slash_command"` para `/add-dir` o `"register_repo_root"` para la solicitud de control del SDK |3064| `source` | Cómo se agregó el directorio: `"slash_command"` para `/add-dir` o `"register_repo_root"` para la solicitud de control del SDK |

3061 3065 

3062```json theme={null}3066```json theme={null}

3063{3067{


3070}3074}

3071```3075```

3072 3076 

3073Los hooks DirectoryAdded no tienen control de decisión. No pueden bloquear la adición, que ya se ha completado cuando se ejecuta el hook. Claude Code descarta el campo `continue` de su salida JSON y muestra el resto diferente por fuente:3077Los hooks DirectoryAdded no tienen control de decisiones. No pueden bloquear la adición, que ya se completó cuando se ejecuta el hook. Claude Code descarta el campo `continue` de su salida JSON y presenta el resto de forma diferente según el origen:

3074 3078 

3075* `slash_command`: Claude Code entrega el `systemMessage` del hook a Claude como contexto en el siguiente turno de conversación, en lugar de mostrárselo. Un recuento de hooks fallidos aparece en la transcripción. La salida de fallo completo va al registro de depuración3079* `slash_command`: Claude Code entrega el `systemMessage` del hook a Claude como contexto en el siguiente turno de la conversación, en lugar de mostrártelo a ti. En la transcripción aparece un recuento de hooks fallidos. La salida completa de las fallas va al registro de depuración

3076* `register_repo_root`: Claude Code escribe la salida `systemMessage` y la salida de fallo solo en el registro de depuración3080* `register_repo_root`: Claude Code escribe la salida de `systemMessage` y la salida de las fallas solo en el registro de depuración

3077 3081 

3078<h3 id="filechanged">3082<h3 id="filechanged">

3079 FileChanged3083 FileChanged

3080</h3>3084</h3>

3081 3085 

3082Se 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.3086Se ejecuta cuando un archivo vigilado cambia en disco. Claude Code detecta los cambios con un observador del sistema de archivos, no inspeccionando las llamadas a herramientas, por lo que ejecuta el hook sin importar qué cambió el archivo: una llamada a la herramienta `Edit` o `Write`, un script que Claude ejecuta con `Bash` o un proceso completamente ajeno a Claude Code. Un uso común es recargar variables de entorno cuando cambian los archivos de configuración del proyecto.

3083 3087 

3084El `matcher` para este evento sirve dos roles:3088El `matcher` de este evento cumple dos funciones:

3085 3089 

3086* **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 vigilancia**: el valor se divide por `|` y cada segmento se registra como un nombre de archivo literal en el directorio de trabajo, así que `".envrc|.env"` vigila exactamente esos dos archivos. Los patrones de expresiones regulares no sirven aquí: un valor como `^\.env` vigilaría un archivo llamado literalmente `^\.env`.

3087* **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.3091* **Filtrar qué hooks se ejecutan**: cuando cambia un archivo vigilado, el mismo valor filtra qué grupos de hooks se ejecutan usando las [reglas de matcher](#matcher-patterns) estándar contra el nombre base del archivo que cambió.

3088 3092 

3089Este 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:3093Este ejemplo normaliza los finales de línea en `data.csv` después de cualquier cambio, incluido un comando `Bash` o un script externo que reescribe el archivo:

3090 3094 

3091```json theme={null}3095```json theme={null}

3092{3096{


3106}3110}

3107```3111```

3108 3112 

3109El hook lee la ruta absoluta del archivo cambiado del campo `file_path` de la [entrada JSON](#filechanged-input) en stdin. Su guardia `grep` prueba lo mismo que `perl` elimina, un CR al final de una línea, por lo que la ejecución después de una normalización sale sin tocar el archivo. Una guardia más suelta se repite para siempre, porque `perl -i` reescribe el archivo incluso cuando no sustituye nada y Claude Code ejecuta el hook nuevamente después de cada reescritura. Guarde este script en `/path/to/normalize-line-endings.sh` y hágalo ejecutable:3113El hook lee la ruta absoluta del archivo que cambió del campo `file_path` de la [entrada JSON](#filechanged-input) en stdin. Su verificación con `grep` comprueba lo mismo que elimina `perl`, un CR al final de una línea, así que la ejecución posterior a una normalización termina sin tocar el archivo. Una verificación más laxa entra en un bucle infinito, porque `perl -i` reescribe el archivo incluso cuando no sustituye nada y Claude Code vuelve a ejecutar el hook después de cada reescritura. Guarda este script en `/path/to/normalize-line-endings.sh` y hazlo ejecutable:

3110 3114 

3111```bash theme={null}3115```bash theme={null}

3112#!/bin/bash3116#!/bin/bash


3116fi3120fi

3117```3121```

3118 3122 

3119Para 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.3123Para confirmar que el hook funciona, pídele 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 de línea LF.

3120 3124 

3121Para 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 `*`.3125Para vigilar archivos que no puedes nombrar de antemano, devuelve [`watchPaths`](#filechanged-output) desde un hook para actualizar la lista de vigilancia dinámicamente. Claude Code inicia el observador solo cuando algo nombra un archivo que vigilar, así que inicializa 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 sigue filtrando qué grupos de hooks se ejecutan cuando cambia un archivo vigilado, así que deja sin matcher el grupo que maneja las rutas dinámicas: así coincide con todos los archivos vigilados y no agrega nada a la lista de vigilancia. Un matcher `"*"` también coincide con todos los archivos, pero Claude Code lo registra en la lista de vigilancia como cualquier otro valor, como un archivo literal llamado `*`.

3122 3126 

3123Los 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 los comandos Bash posteriores hasta el siguiente evento [CwdChanged](#cwdchanged), cuando Claude Code las borra.

3124 3128 

3125<h4 id="filechanged-input">3129<h4 id="filechanged-input">

3126 Entrada de FileChanged3130 Entrada de FileChanged


3130 3134 

3131| Campo | Descripción |3135| Campo | Descripción |

3132| :- | :- |3136| :- | :- |

3133| `file_path` | Ruta absoluta al archivo que cambió |3137| `file_path` | Ruta absoluta del archivo que cambió |

3134| `event` | Qué sucedió: `"change"` para un archivo modificado, `"add"` para un archivo creado, o `"unlink"` para un archivo eliminado |3138| `event` | Qué ocurrió: `"change"` para un archivo modificado, `"add"` para un archivo creado o `"unlink"` para un archivo eliminado |

3135 3139 

3136```json theme={null}3140```json theme={null}

3137{3141{


3148 Salida de FileChanged3152 Salida de FileChanged

3149</h4>3153</h4>

3150 3154 

3151Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks FileChanged pueden devolver `watchPaths` para actualizar dinámicamente qué rutas de archivo se observan:3155Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, los hooks FileChanged pueden devolver `watchPaths` para actualizar dinámicamente qué rutas de archivo se vigilan:

3152 3156 

3153| Campo | Descripción |3157| Campo | Descripción |

3154| :- | :- |3158| :- | :- |

3155| `watchPaths` | Matriz de rutas absolutas. Reemplaza la lista de observación dinámica actual. Las rutas de su configuración `matcher` siempre se observan. Úselo cuando su script de hook descubra archivos adicionales para observar basándose en el archivo cambiado |3159| `watchPaths` | Arreglo de rutas absolutas. Reemplaza la lista de vigilancia dinámica actual. Las rutas de tu configuración de `matcher` siempre se vigilan. Úsalo cuando tu script de hook descubra archivos adicionales que vigilar en función del archivo que cambió |

3156 3160 

3157Los hooks FileChanged no tienen control de decisión. No pueden bloquear el cambio de archivo que ocurre.3161Los hooks FileChanged no tienen control de decisiones. No pueden impedir que se produzca el cambio del archivo.

3158 3162 

3159Claude Code lee `watchPaths` y `systemMessage` de su salida JSON y descarta `continue`. En sesiones interactivas, muestra el `systemMessage` como una breve notificación de terminal. El mensaje no llega al flujo de mensajes del SDK.3163Claude Code lee `watchPaths` y `systemMessage` de su salida JSON y descarta `continue`. En las sesiones interactivas, muestra el `systemMessage` como una breve notificación en la terminal. El mensaje no llega al flujo de mensajes del SDK.

3160 3164 

3161<h3 id="worktreecreate">3165<h3 id="worktreecreate">

3162 WorktreeCreate3166 WorktreeCreate

3163</h3>3167</h3>

3164 3168 

3165Se 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.3169Se ejecuta cuando se está creando un worktree, ya sea desde `claude --worktree`, desde un [subagente que usa `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 predeterminado de git, lo que te permite usar un sistema de control de versiones diferente, como SVN, Perforce o Mercurial.

3166 3170 

3167Debido 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.3171Como el hook reemplaza por completo el comportamiento predeterminado, [`.worktreeinclude`](/docs/es/worktrees#copy-gitignored-files-into-worktrees) no se procesa. Si necesitas copiar archivos de configuración locales como `.env` en el nuevo worktree, hazlo dentro de tu script de hook.

3168 3172 

3169El hook debe devolver la ruta al directorio del worktree creado. Claude Code usa esta ruta como el directorio de trabajo para la sesión aislada. Consulte [salida de WorktreeCreate](#worktreecreate-output) para saber cómo cada tipo de hook devuelve la ruta.3173El hook debe devolver la ruta del directorio del worktree creado. Claude Code usa esta ruta como directorio de trabajo para la sesión aislada. Consulta [Salida de WorktreeCreate](#worktreecreate-output) para ver cómo devuelve la ruta cada tipo de hook.

3170 3174 

3171Claude Code actúa sobre el éxito del hook y la ruta devuelta, y descarta `systemMessage` y `continue`.3175Claude Code actúa según el éxito del hook y la ruta devuelta, y descarta `systemMessage` y `continue`.

3172 3176 

3173Este ejemplo crea una copia de trabajo SVN e imprime la ruta para que Claude Code la use. Reemplace la URL del repositorio con la suya:3177Este ejemplo crea una copia de trabajo de SVN e imprime la ruta para que Claude Code la use. Reemplaza la URL del repositorio por la tuya:

3174 3178 

3175```json theme={null}3179```json theme={null}

3176{3180{


3189}3193}

3190```3194```

3191 3195 

3192El 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, extrae una copia nueva en un directorio nuevo e imprime la ruta del directorio. El `echo` de la última línea es lo que Claude Code lee como la ruta del worktree. Redirige cualquier otra salida a stderr para que no interfiera con la ruta.

3193 3197 

3194<h4 id="worktreecreate-input">3198<h4 id="worktreecreate-input">

3195 Entrada de WorktreeCreate3199 Entrada de WorktreeCreate

3196</h4>3200</h4>

3197 3201 

3198Además de los [campos de entrada comunes](#common-input-fields), los hooks WorktreeCreate reciben el campo `name`. Este es un identificador slug para el nuevo worktree, ya sea especificado por el usuario o generado automáticamente, por ejemplo `bold-oak-a3f2`.3202Además de los [campos de entrada comunes](#common-input-fields), los hooks WorktreeCreate reciben el campo `name`. Es un identificador tipo slug para el nuevo worktree, especificado por el usuario o generado automáticamente, por ejemplo `bold-oak-a3f2`.

3199 3203 

3200```json theme={null}3204```json theme={null}

3201{3205{


3211 Salida de WorktreeCreate3215 Salida de WorktreeCreate

3212</h4>3216</h4>

3213 3217 

3214Los 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:3218Los hooks WorktreeCreate no usan el modelo estándar de decisión de permitir/bloquear. En su lugar, el éxito o el fallo del hook determina el resultado. El hook debe devolver la ruta al directorio del worktree creado:

3215 3219 

3216* **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"`): imprime la ruta como la última línea no vacía de stdout. Claude Code elimina los códigos de escape ANSI antes de leer esa línea, por lo que se ignoran los banners de inicio del shell impresos antes de tu `echo`. Redirige cualquier otra salida del hook a stderr.

3217* **Hooks HTTP** (`type: "http"`): devuelva `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.3221* **Hooks HTTP** (`type: "http"`): devuelve `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.

3218 3222 

3219Si el hook falla o no produce una ruta, la creación del worktree falla con un error.3223Si el hook falla o no produce ninguna ruta, la creación del worktree falla con un error.

3220 3224 

3221Claude Code resuelve una ruta relativa contra el directorio en el que se ejecutó el hook, colapsando cualquier segmento `.` o `..` en él. Si la ruta resultante no es un directorio en el que Claude Code pueda entrar, la sesión imprime un error que nombra la ruta y sale con código 1.3225Claude Code resuelve una ruta relativa respecto al directorio en el que se ejecutó el hook, colapsando cualquier segmento `.` o `..` que contenga. Si la ruta resultante no es un directorio al que Claude Code pueda entrar, la sesión imprime un error que indica la ruta y termina con el código 1.

3222 3226 

3223Claude Code rechaza una ruta absoluta que contiene segmentos `.` o `..`, y cualquier ruta que pase a través de un enlace simbólico por debajo de la raíz del repositorio, porque un enlace simbólico comprometido en el repositorio podría redirigir el worktree fuera de él. El error nombra el componente rechazado. Devuelva una ruta normalizada que no pase a través de un enlace simbólico dentro del repositorio. Antes de v2.1.216, la creación del worktree seguía la ruta del hook sin este cribado.3227Claude Code rechaza una ruta absoluta que contenga segmentos `.` o `..`, y cualquier ruta que pase por un enlace simbólico debajo de la raíz del repositorio, porque un enlace simbólico confirmado en el repositorio podría redirigir el worktree fuera de él. El error indica el componente rechazado. Devuelve una ruta normalizada que no pase por un enlace simbólico dentro del repositorio. Antes de v2.1.216, la creación del worktree seguía la ruta del hook sin esta verificación.

3224 3228 

3225<h3 id="worktreeremove">3229<h3 id="worktreeremove">

3226 WorktreeRemove3230 WorktreeRemove

3227</h3>3231</h3>

3228 3232 

3229Se ejecuta cuando se está eliminando un worktree. Este es el homólogo de limpieza de [WorktreeCreate](#worktreecreate). El evento se dispara cuando:3233Se ejecuta cuando se está eliminando un worktree. Es la contraparte de limpieza de [WorktreeCreate](#worktreecreate). El evento se dispara cuando:

3230 3234 

3231* sale de una sesión `--worktree` y elige eliminarla3235* sales de una sesión `--worktree` y eliges eliminarlo

3232* un subagente con `isolation: "worktree"` termina3236* un subagente con `isolation: "worktree"` termina

3233* elimina una [sesión de fondo](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree creó el hook3237* eliminas una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree creó el hook

3234 3238 

3235Para 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 los worktrees basados en git, Claude Code se encarga de la limpieza automáticamente con `git worktree remove`. Si configuraste un hook WorktreeCreate, combínalo con un hook WorktreeRemove para controlar la limpieza de los worktrees que crea:

3236 3240 

3237* **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.3241* **Sin hook WorktreeRemove**: cuando sales de una sesión `--worktree` y eliges eliminarlo, Claude Code recurre a `git worktree remove --force` sobre la ruta que devolvió tu hook WorktreeCreate, de modo que se elimina un worktree que git reconoce. Un worktree que git no reconoce, por ejemplo uno que tu hook creó con un sistema de control de versiones distinto de git, permanece en el disco. Para saber qué hace la eliminación de una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) con un worktree creado por un hook, consulta las reglas de eliminación de agent view.

3238* **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* **El hook termina con 0**: el worktree se considera eliminado. Claude Code no lee nada más del hook, así que asegúrate de que tu hook haya eliminado el directorio.

3239* **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).3243* **El hook termina con un código distinto de cero**: la eliminación falla si el directorio en `worktree_path` sigue existiendo después, y el worktree permanece en el disco sin recurrir a git. Un hook que eliminó el directorio antes de terminar con un código distinto de cero se considera eliminado. Para saber cómo se informa el fallo, consulta [Entrada de WorktreeRemove](#worktreeremove-input).

3240 3244 

3241Claude 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 que pertenezca a un worktree creado por un hook, porque solo conoce la ruta que devolvió tu hook WorktreeCreate. Si tu hook WorktreeCreate crea una rama, elimínala en tu hook WorktreeRemove.

3242 3246 

3243Claude 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`.

3244 3248 

3245Para 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.3249Al eliminar una sesión en segundo plano, Claude Code verifica la ruta del worktree almacenada antes de ejecutar el hook y rechaza una ruta que sea un enlace simbólico o que pase por uno debajo de la raíz del repositorio. El hook se ejecuta para un worktree que todavía contiene archivos solo cuando confirmas la eliminación en [agent view](/docs/es/agent-view#what-deleting-a-session-removes); para ese tipo de worktree, [`claude rm`](/docs/es/agent-view#manage-sessions-from-the-shell) conserva la sesión y el worktree. Antes de v2.1.216, el hook se ejecutaba sobre la ruta almacenada sin estas comprobaciones.

3246 3250 

3247Claude 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:

3248 3252 


3279}3283}

3280```3284```

3281 3285 

3282El 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 termina con un código distinto de cero y el directorio en `worktree_path` sigue existiendo después, la eliminación falla:

3283 3287 

3284* 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 su stderr van al [registro de depuración](#debug-hooks).

3285* 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.3289* Si estabas eliminando una sesión en segundo plano, la sesión también permanece. El mensaje de rechazo en [agent view](/docs/es/agent-view#what-deleting-a-session-removes) informa cómo terminó el hook, como `exited 1`, cita el inicio de su stderr e indica si volver a eliminar la sesión elimina el directorio de todos modos.

3286 3290 

3287<h3 id="precompact">3291<h3 id="precompact">

3288 PreCompact3292 PreCompact


3290 3294 

3291Se ejecuta antes de que Claude Code esté a punto de ejecutar una operación de compactación.3295Se ejecuta antes de que Claude Code esté a punto de ejecutar una operación de compactación.

3292 3296 

3293El valor del matcher indica si la compactación fue disparada manualmente o automáticamente:3297El valor del matcher indica si la compactación se activó de forma manual o automática:

3294 3298 

3295| Matcher | Cuándo se dispara |3299| Matcher | Cuándo se dispara |

3296| :- | :- |3300| :- | :- |

3297| `manual` | `/compact` |3301| `manual` | `/compact` |

3298| `auto` | Compactación automática cuando la conversación alcanza la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) |3302| `auto` | Compactación automática cuando la conversación alcanza la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) |

3299 3303 

3300Salga 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"`.3304Termina con el código 2 para bloquear la compactación. Para un `/compact` manual, el mensaje de stderr se muestra al usuario. También puedes bloquear devolviendo JSON con `"decision": "block"`.

3301 3305 

3302Bloquear 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.3306Bloquear la compactación automática tiene efectos distintos según cuándo se dispare. Si la compactación se activó 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 se activó para recuperarse de un error de límite de contexto ya devuelto por la API, el error subyacente aparece y la solicitud actual falla.

3303 3307 

3304Claude Code descarta los campos `systemMessage` y `continue` de un hook PreCompact.3308Claude Code descarta los campos `systemMessage` y `continue` de un hook PreCompact.

3305 3309 


3324 PostCompact3328 PostCompact

3325</h3>3329</h3>

3326 3330 

3327Se 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. Usa este evento para reaccionar al nuevo estado compactado, por ejemplo para registrar el resumen generado o actualizar un estado externo. Claude Code descarta los campos `systemMessage` y `continue` de un hook PostCompact.

3328 3332 

3329Los mismos valores de matcher se aplican que para `PreCompact`:3333Se aplican los mismos valores de matcher que para `PreCompact`:

3330 3334 

3331| Matcher | Cuándo se dispara |3335| Matcher | Cuándo se dispara |

3332| :- | :- |3336| :- | :- |

3333| `manual` | Después de `/compact` |3337| `manual` | Después de `/compact` |

3334| `auto` | Después de compactación automática cuando la conversación alcanza la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) |3338| `auto` | Después de la compactación automática cuando la conversación alcanza la [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) |

3335 3339 

3336<h4 id="postcompact-input">3340<h4 id="postcompact-input">

3337 Entrada de PostCompact3341 Entrada de PostCompact

3338</h4>3342</h4>

3339 3343 

3340Además de los [campos de entrada comunes](#common-input-fields), los hooks PostCompact reciben `trigger` y `compact_summary`. El campo `compact_summary` contiene el resumen de conversación generado por la operación de compactación.3344Además de los [campos de entrada comunes](#common-input-fields), los hooks PostCompact reciben `trigger` y `compact_summary`. El campo `compact_summary` contiene el resumen de la conversación generado por la operación de compactación.

3341 3345 

3342```json theme={null}3346```json theme={null}

3343{3347{


3350}3354}

3351```3355```

3352 3356 

3353Los hooks PostCompact no tienen control de decisión. No pueden afectar el resultado de la compactación pero pueden realizar tareas de seguimiento.3357Los hooks PostCompact no tienen control de decisión. No pueden afectar el resultado de la compactación, pero pueden realizar tareas posteriores.

3354 3358 

3355<h3 id="premodelswitch">3359<h3 id="premodelswitch">

3356 PreModelSwitch3360 PreModelSwitch

3357</h3>3361</h3>

3358 3362 

3359Se 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.3363Se ejecuta antes de que Claude Code aplique un cambio de modelo que tú o un cliente solicitaron. Úsalo para bloquear un cambio, requerir confirmación o mostrar lo que costará el cambio antes de que ocurra.

3360 3364 

3361PreModelSwitch 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:

3362 3366 

3363* `/model <name>` y el selector `/model`3367* `/model <name>` y el selector de `/model`

3364* El selector de modelo `Option+P` o `Alt+P`3368* El selector de modelo de `Option+P` o `Alt+P`

3365* La configuración Model en `/config`3369* El ajuste Model en `/config`

3366* Activar [modo rápido](/docs/es/fast-mode) cuando eso cambia el modelo de la sesión3370* Activar el [modo rápido](/docs/es/fast-mode) cuando eso cambia el modelo de la sesión

3367* 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)3371* Una solicitud `set_model`, o un cambio de modelo en una solicitud `apply_flag_settings`, desde un host del [Agent SDK](/docs/es/agent-sdk/typescript#query-object) o desde [Remote Control](/docs/es/remote-control)

3368 3372 

3369Claude 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.3373Claude Code no ejecuta los hooks PreModelSwitch para los cambios que hace por su cuenta, como un [respaldo automático de modelo](/docs/es/model-config#automatic-model-fallback) o la restauración del modelo cuando reanudas una sesión. Esos cambios solo llegan a [PostModelSwitch](#postmodelswitch).

3370 3374 

3371Claude 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 con el nombre canónico del modelo al que cambia la sesión, ignorando cualquier sufijo `[1m]`. Un alias como `opus`, un ID de modelo con fecha y un ID específico de un proveedor, como un ID de modelo de Amazon Bedrock, coinciden todos con el único nombre canónico al que se resuelven, por lo que `claude-opus-5` cubre todas las formas de escribir Opus 5.

3372 3376 

3373Cuando 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.3377Cuando Claude Code no puede determinar un nombre canónico para el destino, por ejemplo un ID de modelo personalizado que solo conoce tu [gateway de LLM](/docs/es/llm-gateway), ejecuta todos los hooks PreModelSwitch sin importar el matcher. Por lo tanto, un hook que bloquea debe comprobar `to_model` en su entrada en lugar de depender solo del matcher.

3374 3378 

3375Escriba 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:3379Escribe 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 además comprueba `to_model` en la entrada del hook, de modo que rechaza un cambio a Opus 4.6 terminando con el código 2 y deja pasar cualquier otro destino:

3376 3380 

3377<Tabs>3381<Tabs>

3378 <Tab title="macOS/Linux">3382 <Tab title="macOS/Linux">

3379 El comando verifica `to_model` con `jq`:3383 El comando comprueba `to_model` con `jq`:

3380 3384 

3381 ```json theme={null}3385 ```json theme={null}

3382 {3386 {


3398 </Tab>3402 </Tab>

3399 3403 

3400 <Tab title="Windows (PowerShell)">3404 <Tab title="Windows (PowerShell)">

3401 Registre un hook de comando que ejecute un script a través de PowerShell:3405 Registra un hook de comando que ejecute un script mediante PowerShell:

3402 3406 

3403 ```json theme={null}3407 ```json theme={null}

3404 {3408 {


3425 }3429 }

3426 ```3430 ```

3427 3431 

3428 Guarde este script en `.claude/hooks/block-opus-46.ps1` en su proyecto:3432 Guarda este script en `.claude/hooks/block-opus-46.ps1` en tu proyecto:

3429 3433 

3430 ```powershell theme={null}3434 ```powershell theme={null}

3431 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3435 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3438 </Tab>3442 </Tab>

3439</Tabs>3443</Tabs>

3440 3444 

3441Para confirmar que el hook funciona, ejecute `/model claude-opus-4-6` desde una sesión que ejecuta un modelo diferente. Claude Code mantiene el modelo actual e informa que un hook PreModelSwitch bloqueó el cambio, con su mensaje como la razón.3445Para confirmar que el hook funciona, ejecuta `/model claude-opus-4-6` desde una sesión que use un modelo diferente. Claude Code mantiene el modelo actual e informa que un hook PreModelSwitch bloqueó el cambio, con tu mensaje como motivo.

3442 3446 

3443<h4 id="premodelswitch-input">3447<h4 id="premodelswitch-input">

3444 Entrada de PreModelSwitch3448 Entrada de PreModelSwitch

3445</h4>3449</h4>

3446 3450 

3447Ademá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.3451Además de los [campos de entrada comunes](#common-input-fields), los hooks PreModelSwitch reciben los campos de esta tabla. Los últimos cinco describen lo que cuesta volver a enviar la conversación al nuevo modelo, de modo que un hook puede mostrar esa cifra antes de que ocurra el cambio.

3448 3452 

3449| Campo | Tipo | Descripción |3453| Campo | Tipo | Descripción |

3450| :- | :- | :- |3454| :- | :- | :- |

3451| `from_model` | string | ID de modelo del que cambia el cambio |3455| `from_model` | string | ID del modelo desde el que se cambia |

3452| `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 del modelo al que se cambia. El matcher se compara con el nombre canónico de este modelo |

3453| `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 indicó la solicitud: un alias como `opus`, un ID de modelo completo, o `null` cuando la solicitud era para el modelo predeterminado |

3454| `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 |3458| `source` | string | De dónde vino la solicitud: `"command"` para `/model <name>`, el ajuste Model en `/config` o la activación del 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 del Agent SDK o desde Remote Control |

3455| `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 vuelve a enviar como su prompt: los tokens de entrada, de lectura de caché, de creación de caché y de salida de la última respuesta en la conversación principal, combinados. `0` antes de la primera respuesta |

3456| `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 la caché de prompts del modelo actual probablemente sigue caliente, lo que significa que el cambio la pierde |

3457| `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"` |3461| `cache_ttl` | string | [Duración de la caché de prompts](/docs/es/prompt-caching#cache-lifetime) que Claude Code solicita para esta sesión: `"5m"` o `"1h"` |

3458| `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 la caché de prompts de `to_model` a la tarifa de `cache_ttl`, sin incluir la siguiente respuesta. Es posible que el servidor no necesite volver a almacenar en caché todo el contexto, así que trátalo como una estimación |

3459| `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 calculó Claude Code el precio de `estimated_cache_write_usd`: `"configured"` con las tarifas propias de tu organización cuando las ha configurado, `"catalog"` con el precio de lista, o `"default"` cuando `to_model` no tiene un precio conocido y Claude Code asumió una tarifa predeterminada |

3460 3464 

3461Este ejemplo muestra la entrada para `/model opus` en una sesión que ejecuta Sonnet 5:3465Este ejemplo muestra la entrada para `/model opus` en una sesión que usa Sonnet 5:

3462 3466 

3463```json theme={null}3467```json theme={null}

3464{3468{


3482 Control de decisión de PreModelSwitch3486 Control de decisión de PreModelSwitch

3483</h4>3487</h4>

3484 3488 

3485Los 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 dejar que continúe. El código de salida 2 o un `decision: "block"` de nivel superior cancela el cambio.

3486 3490 

3487Para 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 un control más preciso, devuelve `permissionDecision` y `permissionDecisionReason` en un objeto `hookSpecificOutput`, como en [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` acepta `"allow"`, `"deny"` y `"ask"`. No acepta `"defer"`, `updatedInput` ni `additionalContext`. La siguiente tabla describe ambos campos:

3488 3492 

3489| Campo | Descripción |3493| Campo | Descripción |

3490| :- | :- |3494| :- | :- |

3491| `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 la caché de prompts está caliente](/docs/es/prompt-caching#switching-models). `"deny"` cancela el cambio. `"ask"` pide al usuario que lo confirme |

3492| `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"` |3496| `permissionDecisionReason` | Para `"deny"`, se muestra al usuario como el motivo por el que se bloqueó el cambio, o se devuelve como el error de una solicitud `set_model`. Para `"ask"`, se muestra en la solicitud de confirmación. Se ignora para `"allow"` |

3493 3497 

3494Solo `/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.3498Solo `/model` en una sesión interactiva puede mostrar la solicitud de `"ask"`. En todas las demás superficies, incluido el modo no interactivo con el flag `-p`, `/config` y las solicitudes `set_model`, Claude Code trata `"ask"` como un rechazo.

3495 3499 

3496Este 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`:

3497 3501 


3505}3509}

3506```3510```

3507 3511 

3508Cuando múltiples hooks PreModelSwitch devuelven decisiones diferentes, la precedencia es `deny` > `ask` > `allow`.3512Cuando varios hooks PreModelSwitch devuelven decisiones diferentes, la precedencia es `deny` > `ask` > `allow`.

3509 3513 

3510Claude Code muestra al usuario cualquier `systemMessage` que devuelva su hook independientemente de la decisión, por lo que un hook de informe de costo puede devolver `{"systemMessage": "..."}` y salir con 0.3514Claude Code muestra al usuario cualquier `systemMessage` que devuelva tu hook, independientemente de la decisión, por lo que un hook que informe del costo puede devolver `{"systemMessage": "..."}` y terminar con 0.

3511 3515 

3512Un 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), en cambio, un hook de comando cuyo tiempo de espera se agota deja que la llamada a herramienta continúe. El tiempo de espera predeterminado para este evento es de 30 segundos. `PreModelSwitch` solo ejecuta hooks `command`, `http` y `mcp_tool`, por lo que los valores predeterminados de `prompt` y `agent` no se aplican.

3513 3517 

3514Un 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).3518Un hook que termina 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).

3515 3519 

3516<h3 id="postmodelswitch">3520<h3 id="postmodelswitch">

3517 PostModelSwitch3521 PostModelSwitch

3518</h3>3522</h3>

3519 3523 

3520Se ejecuta después de que el modelo de la sesión cambia. Úselo para dar orientación específica del modelo a Claude sin editar cada CLAUDE.md, por ejemplo una instrucción de toda la organización que se aplica en ciertos modelos.3524Se ejecuta después de que cambia el modelo de la sesión. Úsalo para dar a Claude indicaciones específicas del modelo sin editar cada CLAUDE.md, por ejemplo una instrucción para toda la organización que se aplique en ciertos modelos.

3521 3525 

3522PostModelSwitch 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 cambió. Claude Code ejecuta los hooks PostModelSwitch después de cualquiera de estos cambios:

3523 3527 

3524* Un cambio que usted o un cliente solicitó3528* Un cambio que tú o un cliente solicitaron

3525* Un [fallback de modelo automático](/docs/es/model-config#automatic-model-fallback), que cambia el modelo de la sesión3529* Un [respaldo automático de modelo](/docs/es/model-config#automatic-model-fallback), que cambia el modelo de la sesión

3526* Una configuración como [`opusplan`](/docs/es/model-config#opusplan-model-setting) entrando o saliendo del modo de plan3530* Un ajuste como [`opusplan`](/docs/es/model-config#opusplan-model-setting) al entrar o salir del modo plan

3527* Claude Code restaurando el modelo cuando reanuda una sesión3531* Claude Code restaurando el modelo cuando reanudas una sesión

3528 3532 

3529Claude 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.3533Claude Code no ejecuta los hooks PostModelSwitch cuando un modelo de una [cadena de modelos de respaldo](/docs/es/model-config#fallback-model-chains) atiende un turno, porque esa sustitución dura un turno y deja sin cambios el modelo de la sesión.

3530 3534 

3531El 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 lo compara con el nombre canónico del modelo al que cambió la sesión.

3532 3536 

3533Este ejemplo agrega orientación siempre que el modelo de la sesión cambia a cualquier modelo Opus:3537Este ejemplo agrega indicaciones siempre que el modelo de la sesión cambia a cualquier modelo Opus:

3534 3538 

3535```json theme={null}3539```json theme={null}

3536{3540{


3550}3554}

3551```3555```

3552 3556 

3553Para confirmar que el hook funciona, cambie a un modelo Opus desde una sesión que ejecuta un modelo diferente, por ejemplo ejecute `/model opus` desde una sesión Sonnet, luego pregunte a Claude qué orientación tiene sobre el modelo actual.3557Para confirmar que el hook funciona, cambia a un modelo Opus desde una sesión que use un modelo diferente, por ejemplo ejecuta `/model opus` desde una sesión de Sonnet, y luego pregúntale a Claude qué indicaciones tiene sobre el modelo actual.

3554 3558 

3555<h4 id="postmodelswitch-input">3559<h4 id="postmodelswitch-input">

3556 Entrada de PostModelSwitch3560 Entrada de PostModelSwitch

3557</h4>3561</h4>

3558 3562 

3559Los 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.3563Los hooks PostModelSwitch reciben los mismos campos que [PreModelSwitch](#premodelswitch-input), con `hook_event_name` establecido en `"PostModelSwitch"` y dos valores más de `source`: `"auto"` para un respaldo automático u otro cambio que Claude Code hizo por su cuenta, y `"resume"` para el modelo restaurado cuando reanudas una sesión.

3560 3564 

3561`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 el ajuste de modelo guardado que restauró Claude Code.

3562 3566 

3563<h4 id="postmodelswitch-decision-control">3567<h4 id="postmodelswitch-decision-control">

3564 Control de decisión de PostModelSwitch3568 Control de decisión de PostModelSwitch

3565</h4>3569</h4>

3566 3570 

3567Claude Code toma su [stdout de texto plano](#exit-code-0) del hook en salida 0, o `additionalContext` de salida JSON, y lo entrega a Claude con la siguiente solicitud después del cambio. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puede devolver:3571Claude Code toma la [salida stdout en texto plano](#exit-code-0) de tu hook al terminar con 0, o `additionalContext` de la salida JSON, y la entrega a Claude con la siguiente solicitud después del cambio. Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puedes devolver:

3568 3572 

3569| Campo | Descripción |3573| Campo | Descripción |

3570| :- | :- |3574| :- | :- |

3571| `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. Consulta [Agregar contexto para Claude](#add-context-for-claude) |

3572 3576 

3573Si 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.3577Si el hook no ha terminado en los cinco segundos posteriores a que envíes el siguiente prompt, Claude Code envía esa solicitud sin la salida y la adjunta a la solicitud siguiente. Si el modelo cambia varias veces antes de la siguiente solicitud, Claude Code entrega solo la salida correspondiente al modelo de destino del último cambio.

3574 3578 

3575<h3 id="sessionend">3579<h3 id="sessionend">

3576 SessionEnd3580 SessionEnd

3577</h3>3581</h3>

3578 3582 

3579Se 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.3583Se ejecuta cuando termina una sesión de Claude Code. Es útil para tareas de limpieza, registrar estadísticas

3584de la sesión o guardar el estado de la sesión. Admite matchers para filtrar por motivo de salida.

3580 3585 

3581El campo `reason` en la entrada del hook indica por qué terminó la sesión:3586El campo `reason` en la entrada del hook indica por qué terminó la sesión:

3582 3587 

3583| Razón | Descripción |3588| Motivo | Descripción |

3584| :- | :- |3589| :- | :- |

3585| `clear` | Sesión borrada con comando `/clear` |3590| `clear` | Sesión borrada con el comando `/clear` |

3586| `resume` | Sesión cambiada a través de `/resume` interactivo |3591| `resume` | Sesión cambiada mediante `/resume` interactivo |

3587| `logout` | Usuario cerró sesión |3592| `logout` | El usuario cerró sesión |

3588| `prompt_input_exit` | Usuario salió mientras la entrada de prompt era visible |3593| `prompt_input_exit` | El usuario salió mientras la entrada del prompt estaba visible |

3589| `other` | Otras razones de salida |3594| `other` | Otros motivos de salida |

3590| `bypass_permissions_disabled` | Eliminado en v2.1.234; Claude Code no lo envía. Elimine de sus matchers `SessionEnd` |3595| `bypass_permissions_disabled` | Eliminado en v2.1.234; Claude Code no lo envía. Quítalo de tus matchers de `SessionEnd` |

3591 3596 

3592<h4 id="sessionend-input">3597<h4 id="sessionend-input">

3593 Entrada de SessionEnd3598 Entrada de SessionEnd

3594</h4>3599</h4>

3595 3600 

3596Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionEnd reciben un campo `reason` que indica por qué terminó la sesión. Consulte la [tabla de razones](#sessionend) anterior para todos los valores.3601Además de los [campos de entrada comunes](#common-input-fields), los hooks SessionEnd reciben un campo `reason` que indica por qué terminó la sesión. Consulta la [tabla de motivos](#sessionend) anterior para ver todos los valores.

3597 3602 

3598```json theme={null}3603```json theme={null}

3599{3604{


3605}3610}

3606```3611```

3607 3612 

3608Los 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`.3613Los hooks SessionEnd no tienen control de decisión. No pueden bloquear la finalización de la sesión, pero pueden realizar tareas de limpieza. Claude Code descarta sus [campos de salida JSON](#json-output), como `systemMessage`.

3609 3614 

3610Los 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:3615Los hooks SessionEnd tienen un tiempo de espera predeterminado de 1.5 segundos. Se aplica cuando sales, ejecutas `/clear` o cambias de sesión con `/resume` interactivo. Puedes darle más tiempo a un hook de dos maneras:

3611 3616 

3612* **`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.3617* **`timeout` por hook**: establece `timeout` en la configuración de ese hook. El presupuesto total aumenta automáticamente hasta igualar el `timeout` por hook más alto de tus archivos de configuración, hasta 60 segundos. Si aumentas el presupuesto de esta manera, un hook sin su propio `timeout` sigue conservando el valor predeterminado. Los tiempos de espera establecidos en hooks proporcionados por plugins no aumentan el presupuesto.

3613* **`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`.3618* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: establece esta variable de entorno en milisegundos para sobrescribir el presupuesto explícitamente. El valor que establezcas también se convierte en el tiempo de espera de cada hook sin su propio `timeout`.

3614 3619 

3615Este ejemplo establece el presupuesto en 5 segundos:3620Este ejemplo establece el presupuesto en 5 segundos:

3616 3621 


3618CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3623CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

3619```3624```

3620 3625 

3621Antes de v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` solo aumentaba el presupuesto general, y un hook sin su propio `timeout` aún se cancelaba después de 1.5 segundos.3626Antes de v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` solo aumentaba el presupuesto total, y un hook sin su propio `timeout` se seguía cancelando después de 1.5 segundos.

3622 3627 

3623<h3 id="elicitation">3628<h3 id="elicitation">

3624 Elicitation3629 Elicitation

3625</h3>3630</h3>

3626 3631 

3627Se ejecuta cuando un servidor MCP solicita entrada del usuario a mitad de tarea. De forma predeterminada, Claude Code muestra un diálogo interactivo para que el usuario responda. Los hooks pueden interceptar esta solicitud y responder programáticamente, omitiendo completamente el diálogo.3632Se ejecuta cuando un servidor MCP solicita información al usuario en mitad de una tarea. De forma predeterminada, Claude Code muestra un cuadro de diálogo interactivo para que el usuario responda. Los hooks pueden interceptar esta solicitud y responder de forma programática, omitiendo el cuadro de diálogo por completo.

3628 3633 

3629El campo matcher coincide contra el nombre del servidor MCP.3634El campo matcher se compara con el nombre del servidor MCP.

3630 3635 

3631<h4 id="elicitation-input">3636<h4 id="elicitation-input">

3632 Entrada de Elicitation3637 Entrada de Elicitation

3633</h4>3638</h4>

3634 3639 

3635Además de los [campos de entrada comunes](#common-input-fields), los hooks Elicitation reciben `mcp_server_name`, `message`, y campos opcionales `mode`, `url`, `elicitation_id`, y `requested_schema`.3640Además de los [campos de entrada comunes](#common-input-fields), los hooks Elicitation reciben `mcp_server_name`, `message` y los campos opcionales `mode`, `url`, `elicitation_id` y `requested_schema`.

3636 3641 

3637Para elicitación de modo formulario, el caso más común:3642Para la elicitación en modo formulario, el caso más común:

3638 3643 

3639```json theme={null}3644```json theme={null}

3640{3645{


3654}3659}

3655```3660```

3656 3661 

3657Para elicitación de modo URL, utilizada para autenticación basada en navegador:3662Para la elicitación en modo URL, usada para la autenticación basada en el navegador:

3658 3663 

3659```json theme={null}3664```json theme={null}

3660{3665{


3673 Salida de Elicitation3678 Salida de Elicitation

3674</h4>3679</h4>

3675 3680 

3676Para responder programáticamente sin mostrar el diálogo, devuelva un objeto JSON con `hookSpecificOutput`:3681Para responder de forma programática sin mostrar el cuadro de diálogo, devuelve un objeto JSON con `hookSpecificOutput`:

3677 3682 

3678```json theme={null}3683```json theme={null}

3679{3684{


3689 3694 

3690| Campo | Valores | Descripción |3695| Campo | Valores | Descripción |

3691| :- | :- | :- |3696| :- | :- | :- |

3692| `action` | `accept`, `decline`, `cancel` | Si aceptar, rechazar o cancelar la solicitud |3697| `action` | `accept`, `decline`, `cancel` | Si se acepta, rechaza o cancela la solicitud |

3693| `content` | object | Valores de campo de formulario a enviar. Solo se usa cuando `action` es `accept` |3698| `content` | object | Valores de los campos del formulario que se envían. Solo se usa cuando `action` es `accept` |

3694 3699 

3695El código de salida 2 niega la elicitación. Claude Code no muestra su mensaje stderr en ningún lugar.3700El código de salida 2 deniega la elicitación. Claude Code no muestra tu mensaje de stderr en ningún lugar.

3696 3701 

3697Claude Code actúa sobre `hookSpecificOutput` de la salida JSON de un hook Elicitation y descarta `systemMessage` y `continue`.3702Claude Code actúa según `hookSpecificOutput` de la salida JSON de un hook Elicitation y descarta `systemMessage` y `continue`.

3698 3703 

3699<h3 id="elicitationresult">3704<h3 id="elicitationresult">

3700 ElicitationResult3705 ElicitationResult

3701</h3>3706</h3>

3702 3707 

3703Se ejecuta después de que un usuario responde a una elicitación de MCP. Los hooks pueden observar, modificar o bloquear la respuesta antes de que se devuelva al servidor MCP.3708Se ejecuta después de que un usuario responde a una elicitación de MCP. Los hooks pueden observar, modificar o bloquear la respuesta antes de que se envíe de vuelta al servidor MCP.

3704 3709 

3705El campo matcher coincide contra el nombre del servidor MCP.3710El campo matcher se compara con el nombre del servidor MCP.

3706 3711 

3707<h4 id="elicitationresult-input">3712<h4 id="elicitationresult-input">

3708 Entrada de ElicitationResult3713 Entrada de ElicitationResult

3709</h4>3714</h4>

3710 3715 

3711Además de los [campos de entrada comunes](#common-input-fields), los hooks ElicitationResult reciben `mcp_server_name`, `action`, y campos opcionales `mode`, `elicitation_id`, y `content`.3716Además de los [campos de entrada comunes](#common-input-fields), los hooks ElicitationResult reciben `mcp_server_name`, `action` y los campos opcionales `mode`, `elicitation_id` y `content`.

3712 3717 

3713```json theme={null}3718```json theme={null}

3714{3719{


3728 Salida de ElicitationResult3733 Salida de ElicitationResult

3729</h4>3734</h4>

3730 3735 

3731Para anular la respuesta del usuario, devuelva un objeto JSON con `hookSpecificOutput`:3736Para sobrescribir la respuesta del usuario, devuelve un objeto JSON con `hookSpecificOutput`:

3732 3737 

3733```json theme={null}3738```json theme={null}

3734{3739{


3742 3747 

3743| Campo | Valores | Descripción |3748| Campo | Valores | Descripción |

3744| :- | :- | :- |3749| :- | :- | :- |

3745| `action` | `accept`, `decline`, `cancel` | Anula la acción del usuario |3750| `action` | `accept`, `decline`, `cancel` | Sobrescribe la acción del usuario |

3746| `content` | object | Anula los valores del campo de formulario. Solo significativo cuando `action` es `accept` |3751| `content` | object | Sobrescribe los valores de los campos del formulario. Solo tiene sentido cuando `action` es `accept` |

3747 3752 

3748El código de salida 2 bloquea la respuesta, cambiando la acción efectiva a `decline`. Claude Code no muestra su mensaje stderr en ningún lugar.3753El código de salida 2 bloquea la respuesta y cambia la acción efectiva a `decline`. Claude Code no muestra tu mensaje de stderr en ningún lugar.

3749 3754 

3750Claude Code actúa sobre `hookSpecificOutput` de la salida JSON de un hook ElicitationResult y descarta `systemMessage` y `continue`.3755Claude Code actúa según `hookSpecificOutput` de la salida JSON de un hook ElicitationResult y descarta `systemMessage` y `continue`.

3751 3756 

3752<h2 id="prompt-based-hooks">3757<h2 id="prompt-based-hooks">

3753 Hooks basados en prompts3758 Hooks basados en prompts

keybindings.md +27 −1

Details

68| `EffortSlider` | Deslizador de esfuerzo abierto por `/effort` |68| `EffortSlider` | Deslizador de esfuerzo abierto por `/effort` |

69| `Select` | Componentes genéricos de selección/lista |69| `Select` | Componentes genéricos de selección/lista |

70| `Plugin` | Diálogo de plugins (examinar, descubrir, administrar) |70| `Plugin` | Diálogo de plugins (examinar, descubrir, administrar) |

71| `Pane` | Un panel dibujado por un [mod](/docs/es/plugins/mods/interface#know-which-keys-your-mod-can-receive) tiene el foco del teclado |

72| `PaneField` | Un campo de entrada o de selección en el panel de un mod tiene el foco del teclado |

71| `Agents` | [Vista de agentes](/docs/es/agent-view) (`claude agents`) |73| `Agents` | [Vista de agentes](/docs/es/agent-view) (`claude agents`) |

72| `Scroll` | Desplazamiento de conversación y selección de texto en modo pantalla completa |74| `Scroll` | Desplazamiento de conversación y selección de texto en modo pantalla completa |

73 75 


596 598 

597Esto también funciona para vinculaciones de acordes. Desvinculación de cada acorde que comparte un prefijo libera ese prefijo para su uso como una vinculación de tecla única. Un acorde en cualquier contexto activo mantiene su prefijo reservado, por lo que debe desvinculación de cada acorde en el contexto que lo define.599Esto también funciona para vinculaciones de acordes. Desvinculación de cada acorde que comparte un prefijo libera ese prefijo para su uso como una vinculación de tecla única. Un acorde en cualquier contexto activo mantiene su prefijo reservado, por lo que debe desvinculación de cada acorde en el contexto que lo define.

598 600 

599Claude Code vincula estos acordes predeterminados en el prefijo `ctrl+x`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, y `ctrl+x tab` en `Chat`, `ctrl+x ctrl+b` en `Task`, y `ctrl+x b` en `DiffPanel`. El acorde `ctrl+x enter` requiere v2.1.247 o posterior, `ctrl+x b`, `ctrl+x ctrl+a`, y `ctrl+x tab` requieren v2.1.260 o posterior, y `ctrl+x ctrl+s` requiere v2.1.275 o posterior.601Claude Code vincula estos acordes predeterminados en el prefijo `ctrl+x`, por contexto:

602 

603* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s` y `ctrl+x tab`

604* `Task`: `ctrl+x ctrl+b`

605* `DiffPanel`: `ctrl+x b`

606* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down` y `ctrl+x x`

607* `PaneField`: `ctrl+x x`

608 

609El acorde `ctrl+x enter` requiere v2.1.247 o posterior, `ctrl+x b`, `ctrl+x ctrl+a` y `ctrl+x tab` requieren v2.1.260 o posterior, y `ctrl+x ctrl+s` requiere v2.1.275 o posterior.

600 610 

601Para reclamar `ctrl+x` en sí mismo como una vinculación de tecla única, desvinculación de todos ellos:611Para reclamar `ctrl+x` en sí mismo como una vinculación de tecla única, desvinculación de todos ellos:

602 612 


615 "ctrl+x b": null625 "ctrl+x b": null

616 }626 }

617 },627 },

628 {

629 "context": "Pane",

630 "bindings": {

631 "ctrl+x left": null,

632 "ctrl+x right": null,

633 "ctrl+x up": null,

634 "ctrl+x down": null,

635 "ctrl+x x": null

636 }

637 },

638 {

639 "context": "PaneField",

640 "bindings": {

641 "ctrl+x x": null

642 }

643 },

618 {644 {

619 "context": "Chat",645 "context": "Chat",

620 "bindings": {646 "bindings": {

Details

245| [Gestión de contexto](https://platform.claude.com/docs/en/build-with-claude/context-editing) | El encabezado beta de gestión de contexto se empareja con el campo de cuerpo `context_management` | `400` con `Extra inputs are not permitted`. Común cuando un gateway acepta solicitudes con formato Anthropic pero las reenvía a Amazon Bedrock | Reenvía ambos, o [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |245| [Gestión de contexto](https://platform.claude.com/docs/en/build-with-claude/context-editing) | El encabezado beta de gestión de contexto se empareja con el campo de cuerpo `context_management` | `400` con `Extra inputs are not permitted`. Común cuando un gateway acepta solicitudes con formato Anthropic pero las reenvía a Amazon Bedrock | Reenvía ambos, o [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

246| [Contexto extendido](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) y [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Solo encabezados beta, sin campo de cuerpo | Silenciosamente no disponible cuando se elimina el encabezado; el proveedor ascendente nunca ve la solicitud de capacidad | Reenvíe `anthropic-beta` textualmente |246| [Contexto extendido](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) y [pensamiento intercalado](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Solo encabezados beta, sin campo de cuerpo | Silenciosamente no disponible cuando se elimina el encabezado; el proveedor ascendente nunca ve la solicitud de capacidad | Reenvíe `anthropic-beta` textualmente |

247| Campos de [herramienta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) beta | Los encabezados beta relacionados con herramientas se emparejan con campos de esquema de herramienta como `strict` y `defer_loading` | `400` nombrando el campo de esquema de herramienta no reconocido cuando el cuerpo pasa sin su encabezado | Reenvíe ambos, o [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |247| Campos de [herramienta](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) beta | Los encabezados beta relacionados con herramientas se emparejan con campos de esquema de herramienta como `strict` y `defer_loading` | `400` nombrando el campo de esquema de herramienta no reconocido cuando el cuerpo pasa sin su encabezado | Reenvíe ambos, o [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

248| [Esfuerzo](https://platform.claude.com/docs/en/build-with-claude/effort) y [salidas estructuradas](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | El campo de cuerpo `output_config` lleva el esfuerzo, el formato de salida estructurada y la configuración de presupuesto de tarea; cada uno se empareja con su propio encabezado beta | `400` que nombra `output_config`, a menudo `Extra inputs are not permitted`, en proveedores ascendentes Amazon Bedrock y Agent Platform de Google Cloud | Reenvía el campo y sus encabezados juntos, o haz que los desarrolladores establezcan [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities), que elimina la configuración de formato y de presupuesto de tarea, pero no el esfuerzo |248| [Esfuerzo](https://platform.claude.com/docs/en/build-with-claude/effort) y [salidas estructuradas](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | El campo de cuerpo `output_config` lleva el esfuerzo, el formato de salida estructurada y la configuración de presupuesto de tarea; cada uno se empareja con su propio encabezado beta | `400` que nombra `output_config`, a menudo `Extra inputs are not permitted`, en proveedores ascendentes Amazon Bedrock y Agent Platform de Google Cloud | Reenvía el campo y sus encabezados juntos, o haz que los desarrolladores establezcan [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities), que elimina la configuración de formato y de presupuesto de tarea, pero no el esfuerzo. Para eliminar solo el formato, pueden establecer [`CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1`](/docs/es/env-vars) en su lugar, lo que requiere v2.1.288 o posterior |

249| [Almacenamiento en caché de solicitudes](/docs/es/prompt-caching) | Sin emparejamiento beta. Claude Code adjunta marcadores `cache_control` a bloques `system` y a entradas `messages`, incluidas entradas `role: "system"` añadidas a mitad de conversación | Sin error: la conversación se factura como entrada sin caché en cada turno, visible como `input_tokens` alto con poca o ninguna actividad de caché en `usage` | Reenvíe `cache_control` sin cambios dondequiera que aparezca, y no convierta bloques de forma `system` o contenido de mensaje a cadenas simples |249| [Almacenamiento en caché de solicitudes](/docs/es/prompt-caching) | Sin emparejamiento beta. Claude Code adjunta marcadores `cache_control` a bloques `system` y a entradas `messages`, incluidas entradas `role: "system"` añadidas a mitad de conversación | Sin error: la conversación se factura como entrada sin caché en cada turno, visible como `input_tokens` alto con poca o ninguna actividad de caché en `usage` | Reenvíe `cache_control` sin cambios dondequiera que aparezca, y no convierta bloques de forma `system` o contenido de mensaje a cadenas simples |

250| [Conteo de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Sin emparejamiento beta; utiliza el punto final `count_tokens` | Sin error: Claude Code vuelve a un estimado basado en caracteres, así que `/context` muestra conteos aproximados | Exponga el punto final para conteos de tokens exactos |250| [Conteo de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Sin emparejamiento beta; utiliza el punto final `count_tokens` | Sin error: Claude Code vuelve a un estimado basado en caracteres, así que `/context` muestra conteos aproximados | Exponga el punto final para conteos de tokens exactos |

251 251 

mcp.md +7 −9

Details

1481 Requerir aprobación para una herramienta específica1481 Requerir aprobación para una herramienta específica

1482</h2>1482</h2>

1483 1483 

1484Si está construyendo un servidor MCP, puede marcar una herramienta como que requiere aprobación explícita en cada llamada estableciendo `_meta["anthropic/requiresUserInteraction"]` en `true` en la entrada de respuesta `tools/list` de la herramienta. El valor debe ser el booleano JSON `true`; cualquier otro valor se ignora.1484Si estás construyendo un servidor MCP, puedes marcar una herramienta como que requiere aprobación explícita en cada llamada estableciendo `_meta["anthropic/requiresUserInteraction"]` en `true` en la entrada de respuesta `tools/list` de la herramienta. El valor debe ser el booleano JSON `true`; cualquier otro valor se ignora.

1485 1485 

1486Claude Code muestra el aviso de permiso de esa herramienta en cada llamada, incluso en los [modos de permiso](/docs/es/permissions#permission-modes) `acceptEdits`, `auto` y `bypassPermissions`, y no ofrece una opción "no volver a preguntar" para ella. Las [reglas de permiso](/docs/es/permissions#permission-rule-syntax) que coinciden con la herramienta tampoco omiten el aviso. En modo `dontAsk`, que nunca solicita confirmación, Claude Code deniega la llamada en su lugar.1486Claude Code muestra la solicitud de permiso de esa herramienta en cada llamada, incluso en los [modos de permisos](/docs/es/permissions#permission-modes) `acceptEdits`, `auto` y `bypassPermissions`, y no ofrece una opción "no volver a preguntar" para ella. Las [reglas de permisos](/docs/es/permissions#permission-rule-syntax) que coinciden con la herramienta tampoco omiten la solicitud. En modo `dontAsk`, que nunca pide confirmación, Claude Code deniega la llamada en su lugar.

1487 1487 

1488El aviso tiene que llegar a una persona. En modo no interactivo con [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags), un resultado `allow` de la herramienta de aviso de permiso para una herramienta marcada se convierte en una denegación con el mensaje `MCP tool requires user interaction; not supported via --permission-prompt-tool`. La devolución de llamada [`canUseTool`](/docs/es/agent-sdk/permissions) del Agent SDK sí recibe estas llamadas y puede aprobarlas, porque se espera que su aplicación SDK muestre estas llamadas a un usuario.1488La solicitud tiene que llegar a una persona. En modo no interactivo con [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags), un resultado `allow` de la herramienta de solicitud de permisos para una herramienta marcada se convierte en una denegación con el mensaje `MCP tool requires user interaction; not supported via --permission-prompt-tool`. La [devolución de llamada `canUseTool`](/docs/es/agent-sdk/permissions) del Agent SDK sí recibe estas llamadas y puede aprobarlas, porque se espera que tu aplicación SDK se las muestre a un usuario.

1489 1489 

1490Utilice esto para herramientas cuyo aviso de permiso es en sí el punto, como un paso de consentimiento o concesión de acceso donde la aprobación automática significaría que ningún humano nunca estuvo de acuerdo. Otras herramientas del mismo servidor mantienen su comportamiento de permiso normal.1490Usa esto para herramientas cuya solicitud de permiso es en sí el objetivo, como un paso de consentimiento o de concesión de acceso donde la aprobación automática significaría que ningún humano estuvo de acuerdo. Otras herramientas del mismo servidor mantienen su comportamiento de permisos normal.

1491 1491 

1492La siguiente entrada `tools/list` marca una herramienta como que siempre requiere aprobación.1492La siguiente entrada `tools/list` marca una herramienta como que siempre requiere aprobación.

1493 1493 


1501}1501}

1502```1502```

1503 1503 

1504La anotación `anthropic/requiresUserInteraction` requiere Claude Code v2.1.199 o posterior. Las versiones anteriores la ignoran y aplican el flujo de permiso estándar.1504Algunas superficies, como [Remote Control](/docs/es/remote-control) y las aplicaciones construidas sobre el [Agent SDK](/docs/es/agent-sdk/overview), normalmente te permiten aprobar llamadas a herramientas con un toque. Para una herramienta marcada con esta anotación, Claude Code retiene la acción de un toque y, en su lugar, muestra la solicitud de permiso completa de la herramienta, por lo que la aprobación sigue viniendo de una persona que responde a la solicitud y no de un toque.

1505 1505 

1506Algunas superficies, como [Remote Control](/docs/es/remote-control) y aplicaciones construidas en el [Agent SDK](/docs/es/agent-sdk/overview), normalmente le permiten aprobar llamadas de herramientas con un toque. Para una herramienta marcada con esta anotación, Claude Code retiene la acción de un toque y muestra el aviso de permiso completo de la herramienta en su lugar, por lo que la aprobación sigue viniendo de una persona respondiendo al aviso en lugar de un toque.1506Claude Code retiene la aprobación de un toque de la misma manera para cualquier solicitud de permiso que solo el diálogo de la terminal pueda renderizar completamente, como una que incluye una advertencia de seguridad o una opción de permitir siempre que la superficie remota no puede mostrar. Respondes esa solicitud en el diálogo de la terminal en lugar de desde Remote Control. Requiere Claude Code v2.1.214 o posterior.

1507 

1508Claude Code retiene la aprobación de un toque de la misma manera para cualquier solicitud de permiso que solo el diálogo de terminal pueda renderizar completamente, como una que lleva una advertencia de seguridad u una opción de permitir siempre que la superficie remota no puede mostrar. Usted responde esa solicitud en el diálogo de terminal en lugar de desde Remote Control. Requiere Claude Code v2.1.214 o posterior.

1509 1507 

1510<h2 id="respond-to-mcp-elicitation-requests">1508<h2 id="respond-to-mcp-elicitation-requests">

1511 Responder a solicitudes de elicitación de MCP1509 Responder a solicitudes de elicitación de MCP


1516Los servidores pueden solicitar información de dos formas:1514Los servidores pueden solicitar información de dos formas:

1517 1515 

1518* **Modo de formulario**: Claude Code muestra un diálogo con campos de formulario definidos por el servidor (por ejemplo, una solicitud de nombre de usuario y contraseña). Complete los campos y envíe.1516* **Modo de formulario**: Claude Code muestra un diálogo con campos de formulario definidos por el servidor (por ejemplo, una solicitud de nombre de usuario y contraseña). Complete los campos y envíe.

1519* **Modo de URL**: Claude Code pregunta si desea abrir un enlace en su navegador y lo abre cuando usted acepta. Los servidores utilizan este modo para un flujo que se completa fuera de la terminal, como el inicio de sesión.1517* **Modo de URL**: Claude Code pregunta si deseas abrir un enlace en tu navegador. Los servidores utilizan este modo para un flujo que se completa fuera de la terminal, como el inicio de sesión.

1520 1518 

1521En modo de URL, Claude Code pasa la URL como argumento de línea de comandos al controlador de URL de su sistema y limita la longitud de ese argumento. Cuando la URL, una vez escapada para la línea de comandos, supera ese límite, solo puede rechazar la solicitud. Cada carácter que necesita escaparse, como `%` o `&`, cuenta cuatro veces hacia el límite: su propio carácter más tres caracteres de escape. Una URL sin ninguno de ellos alcanza el límite en aproximadamente 8.000 caracteres. Una URL construida en gran medida con escapes de porcentaje, donde cada tercer carácter es un `%`, lo alcanza en aproximadamente 4.000.1519En modo de URL, Claude Code pasa la URL como argumento de línea de comandos al controlador de URL de su sistema y limita la longitud de ese argumento. Cuando la URL, una vez escapada para la línea de comandos, supera ese límite, solo puede rechazar la solicitud. Cada carácter que necesita escaparse, como `%` o `&`, cuenta cuatro veces hacia el límite: su propio carácter más tres caracteres de escape. Una URL sin ninguno de ellos alcanza el límite en aproximadamente 8.000 caracteres. Una URL construida en gran medida con escapes de porcentaje, donde cada tercer carácter es un `%`, lo alcanza en aproximadamente 4.000.

1522 1520 

model-config.md +4 −3

Details

794 794 

795<span id="context-window-behind-a-gateway" />795<span id="context-window-behind-a-gateway" />

796 796 

797Si estableces `ANTHROPIC_BASE_URL` en un [gateway de LLM](/docs/es/llm-gateway) u otro proxy, Claude Code da a cada modelo que reconoce la misma ventana de contexto que tiene el modelo en la Anthropic API. Fable 5.1, Fable 5, Sonnet 5 y posteriores, y Opus 4.7 y posteriores obtienen la ventana de 1M sin variante `[1m]` que seleccionar, y un modelo que alcanza 1M solo mediante su variante `[1m]`, como Opus 4.6, se ejecuta a 200K sin ella. Claude Code no puede detectar un límite inferior que imponga el gateway o el servidor detrás de él. Si tu gateway rechaza solicitudes de más de 200K tokens, ejecuta [`/autocompact 200k`](#set-the-auto-compact-window) para que las sesiones se compacten en ese límite.797Si estableces `ANTHROPIC_BASE_URL` en un [gateway de LLM](/docs/es/llm-gateway) u otro proxy, Claude Code da a cada modelo que reconoce la misma ventana de contexto que tiene el modelo en la Anthropic API. Fable 5.1, Fable 5, Sonnet 5 y posteriores, y Opus 4.7 y posteriores obtienen la ventana de 1M sin variante `[1m]` que seleccionar, y un modelo que alcanza 1M solo mediante su variante `[1m]`, como Opus 4.6, se ejecuta a 200K sin ella. Claude Code no puede detectar un límite inferior que imponga el gateway o el servidor detrás de él. Si tu gateway rechaza solicitudes de más de 200K tokens, establece [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](/docs/es/env-vars) en el entorno que inicia Claude Code, para que las sesiones en todos los modelos [se compacten en ese límite](#set-the-auto-compact-window).

798 798 

799Para desactivar el contexto de 1M, establece `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code elimina las variantes de modelo de 1M del selector de modelos. En los modelos con una ventana nativa de 1M, como Sonnet 5 y los modelos Fable, también trata el modelo como si tuviera una ventana de contexto de 200K:799Para desactivar el contexto de 1M, establece `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code elimina las variantes de modelo de 1M del selector de modelos. En los modelos con una ventana nativa de 1M, como Sonnet 5 y los modelos Fable, también trata el modelo como si tuviera una ventana de contexto de 200K:

800 800 


840 Establecer la ventana de auto-compactación840 Establecer la ventana de auto-compactación

841</h3>841</h3>

842 842 

843Puede establecer la ventana de auto-compactación en tres lugares:843Puedes establecer la ventana de compactación automática en estos lugares:

844 844 

845* **Para esta sesión y las posteriores**: ejecute `/autocompact` con un valor, como `/autocompact 500k`. Claude Code lo guarda en la configuración de usuario como [`autoCompactWindow`](/docs/es/settings-reference#autocompactwindow) y lo aplica a la sesión actual; si un [ámbito de configuración](/docs/es/settings#settings-precedence) de mayor prioridad, como la configuración administrada, establece la clave, el comando guarda su valor pero la sesión mantiene la ventana de ese ámbito, y el comando lo indica. Ejecute `/autocompact auto` para volver a la ventana ajustada para su modelo.845* **Para el modelo actual, en esta sesión y las posteriores**: ejecuta `/autocompact` con un valor, como `/autocompact 500k`. Claude Code lo guarda en tu configuración de usuario bajo el modelo actual en [`modelSettings`](/docs/es/settings-reference#modelsettings) y lo aplica a la sesión actual. Si un [alcance de configuración](/docs/es/settings#settings-precedence) de mayor prioridad, como la configuración administrada, establece su propia ventana para ese modelo o para todos los modelos, el comando guarda tu valor pero la sesión mantiene la ventana de ese alcance, y el comando lo indica. Ejecuta `/autocompact auto` para volver a la ventana ajustada para tu modelo. Antes de v2.1.288, el comando guardaba una sola ventana para todos los modelos, como el ajuste de nivel superior `autoCompactWindow`.

846* **Para todos los modelos**: establece [`autoCompactWindow`](/docs/es/settings-reference#autocompactwindow) en un archivo de configuración, como `"autoCompactWindow": 200000` en `~/.claude/settings.json`. Una ventana que hayas guardado para un modelo con `/autocompact` tiene precedencia sobre esta clave en el mismo archivo para ese modelo.

846* **Para un lanzamiento**: pase [`--autocompact`](/docs/es/cli-reference#cli-flags) al iniciar Claude Code. La bandera anula su configuración guardada para ese lanzamiento sin cambiarla, y `claude --autocompact auto` ejecuta la sesión en la ventana ajustada incluso si su configuración guardada tiene un valor. A diferencia de `/autocompact`, la bandera no es anulada por un ámbito de configuración de mayor prioridad, como la configuración administrada.847* **Para un lanzamiento**: pase [`--autocompact`](/docs/es/cli-reference#cli-flags) al iniciar Claude Code. La bandera anula su configuración guardada para ese lanzamiento sin cambiarla, y `claude --autocompact auto` ejecuta la sesión en la ventana ajustada incluso si su configuración guardada tiene un valor. A diferencia de `/autocompact`, la bandera no es anulada por un ámbito de configuración de mayor prioridad, como la configuración administrada.

847* **En scripts y entornos en la nube**: establezca [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/es/env-vars). Mientras esté establecida, tiene precedencia sobre el comando, la bandera y la configuración, y `/autocompact` reporta la anulación en lugar de cambiar la ventana.848* **En scripts y entornos en la nube**: establezca [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/es/env-vars). Mientras esté establecida, tiene precedencia sobre el comando, la bandera y la configuración, y `/autocompact` reporta la anulación en lugar de cambiar la ventana.

848 849 

Details

578 578 

579Si establece el modo `dontAsk`, Claude Code deniega automáticamente cada llamada de herramienta que de otro modo le solicitaría. Claude aún ejecuta acciones que no necesitan aprobación en modo Manual, como lecturas de archivos dentro de sus directorios de trabajo y [comandos Bash de solo lectura](/docs/es/permissions#read-only-commands), además de acciones que coinciden con sus reglas `permissions.allow` y llamadas aprobadas por un [hook PreToolUse](/docs/es/permissions#extend-permissions-with-hooks). Utilice este modo para canalizaciones de CI o entornos restringidos donde predefine qué puede hacer Claude; la sesión nunca espera entrada. La barra de estado muestra `⏵⏵ don't ask on` mientras este modo está activo.579Si establece el modo `dontAsk`, Claude Code deniega automáticamente cada llamada de herramienta que de otro modo le solicitaría. Claude aún ejecuta acciones que no necesitan aprobación en modo Manual, como lecturas de archivos dentro de sus directorios de trabajo y [comandos Bash de solo lectura](/docs/es/permissions#read-only-commands), además de acciones que coinciden con sus reglas `permissions.allow` y llamadas aprobadas por un [hook PreToolUse](/docs/es/permissions#extend-permissions-with-hooks). Utilice este modo para canalizaciones de CI o entornos restringidos donde predefine qué puede hacer Claude; la sesión nunca espera entrada. La barra de estado muestra `⏵⏵ don't ask on` mientras este modo está activo.

580 580 

581Claude Code deniega llamadas que coincidan con sus [reglas `ask`](/docs/es/permissions#manage-permissions) explícitas en lugar de solicitar. También deniega la herramienta integrada `AskUserQuestion` incluso si sus reglas de permitir coinciden, y hace lo mismo con las herramientas de conector [que su organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) en sesiones donde esa configuración llega a Claude Code. Deniega las herramientas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) de la misma manera, porque su tarjeta de aprobación necesita una respuesta que este modo nunca recopila; esto requiere Claude Code v2.1.199 o posterior.581Claude Code deniega las llamadas que coinciden con tus [reglas `ask`](/docs/es/permissions#manage-permissions) explícitas en lugar de pedir confirmación. También deniega la herramienta integrada `AskUserQuestion` incluso si tus reglas de permitir coinciden con ella, y hace lo mismo con las herramientas de conector [que tu organización estableció en `ask`](/docs/es/mcp#organization-controls-on-connector-tools) en sesiones donde ese ajuste llega a Claude Code. Deniega las herramientas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) de la misma manera, porque su tarjeta de aprobación necesita una respuesta que este modo nunca recopila.

582 582 

583Las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), como `rm -rf /` y `rm -rf ~`, se deniegan incluso cuando una regla de permitir coincide con ellas o un hook `PreToolUse` las permite.583Las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), como `rm -rf /` y `rm -rf ~`, se deniegan incluso cuando una regla de permitir coincide con ellas o un hook `PreToolUse` las permite.

584 584 

Details

371| `workspaceFolder` | No | Ruta de carpeta de espacio de trabajo para el servidor |371| `workspaceFolder` | No | Ruta de carpeta de espacio de trabajo para el servidor |

372| `startupTimeout` | No | Milisegundos para esperar el inicio, un entero positivo |372| `startupTimeout` | No | Milisegundos para esperar el inicio, un entero positivo |

373| `shutdownTimeout` | No | Milisegundos para esperar un apagado elegante, un entero positivo. Cuando se agota el tiempo de espera, Claude Code termina el proceso del servidor. Cuando no se establece, no se aplica tiempo de espera |373| `shutdownTimeout` | No | Milisegundos para esperar un apagado elegante, un entero positivo. Cuando se agota el tiempo de espera, Claude Code termina el proceso del servidor. Cuando no se establece, no se aplica tiempo de espera |

374| `requestTimeout` | No | Milisegundos para esperar a que el servidor responda una solicitud, un entero positivo. El valor predeterminado es `60000`, por lo que una solicitud que el servidor nunca responde falla después de 60 segundos. Requiere v2.1.288 o posterior |

374| `restartOnCrash` | No | Si reiniciar el servidor después de que se bloquee. Por defecto es `true`. Establezca en `false` para dejar un servidor bloqueado detenido en lugar de reiniciarlo |375| `restartOnCrash` | No | Si reiniciar el servidor después de que se bloquee. Por defecto es `true`. Establezca en `false` para dejar un servidor bloqueado detenido en lugar de reiniciarlo |

375| `maxRestarts` | No | Intentos de reinicio antes de rendirse, cero o más |376| `maxRestarts` | No | Intentos de reinicio antes de rendirse, cero o más |

376| `diagnostics` | No | Si insertar diagnósticos en contexto después de ediciones. Por defecto es `true` |377| `diagnostics` | No | Si insertar diagnósticos en contexto después de ediciones. Por defecto es `true` |

Details

377 Comparte tu mod377 Comparte tu mod

378</h2>378</h2>

379 379 

380Un mod es un plugin, así que le asignas la versión en el manifiesto y las personas lo instalan y actualizan con los comandos de `/plugin`. Para dárselo a otras personas, [agrégalo a un marketplace](/docs/es/plugins/publish).380Un mod es un plugin, así que le asignas la versión en el manifiesto y las personas lo instalan y actualizan con los comandos de `/plugin`. La forma de compartirlo depende de a quién va dirigido:

381 

382* **Unas pocas personas**: envíales el directorio del plugin o un `.zip` de él. Consulta [Compartir un plugin sin un marketplace](/docs/es/plugins/publish#share-a-plugin-without-a-marketplace)

383* **Tu equipo**: inclúyelo en [tu propio marketplace](/docs/es/plugins/publish#publish-through-your-own-marketplace), como un repositorio privado con un directorio para cada plugin. Para agregar ese marketplace para todas las personas que trabajan en un repositorio, [regístralo en la configuración del repositorio](/docs/es/plugins/host-marketplace#register-the-marketplace-for-everyone-in-a-repository)

384* **Toda tu organización**: un administrador puede [instalar los mods de tu organización](/docs/es/plugins/mods/admin#install-your-organizations-mods) mediante la configuración administrada

385* **Cualquier persona**: haz público el repositorio de tu marketplace o [envía el plugin al directorio de Anthropic](/docs/es/plugins/publish#submit-to-anthropics-directory)

381 386 

382Antes de hacerlo, revisa el `name` del plugin: `claude plugin validate` rechaza un nombre que [parece uno de los propios de Anthropic](/docs/es/plugins/manifest-reference#name), como uno que empieza con `claude-`. Los eventos y métodos pueden cambiar entre versiones, así que tu README es el lugar para indicar con qué versión de Claude Code hiciste las pruebas.387Antes de hacerlo, revisa el `name` del plugin: `claude plugin validate` rechaza un nombre que [parece uno de los propios de Anthropic](/docs/es/plugins/manifest-reference#name), como uno que empieza con `claude-`. Los eventos y métodos pueden cambiar entre versiones, así que tu README es el lugar para indicar con qué versión de Claude Code hiciste las pruebas.

383 388 

Details

531| Arriba y Abajo | Se mueven entre controles mientras tu dibujo cabe. Cuando el panel o la banda tiene más filas de las que puede mostrar, lo desplazan. |531| Arriba y Abajo | Se mueven entre controles mientras tu dibujo cabe. Cuando el panel o la banda tiene más filas de las que puede mostrar, lo desplazan. |

532| Enter | Pulsa el `Button` con el foco, envía el `Input` con el foco o elige en un `Select` |532| Enter | Pulsa el `Button` con el foco, envía el `Input` con el foco o elige en un `Select` |

533| La tecla de acceso rápido de un botón | Pulsa ese botón. Mientras un `Input` tiene el foco, toda tecla imprimible va al campo. |533| La tecla de acceso rápido de un botón | Pulsa ese botón. Mientras un `Input` tiene el foco, toda tecla imprimible va al campo. |

534| Re Pág, Av Pág, Inicio y Fin | Desplazan tu panel o banda cuando tiene más filas de las que puede mostrar |

535| Ctrl+X y luego una flecha | Cambia el tamaño de tu panel. Izquierda o Arriba le da más espacio, y Derecha o Abajo lo devuelve. |

536| Ctrl+X y luego X | Cierra tu panel, incluso mientras uno de sus campos tiene el foco |

534| Esc | Devuelve el foco del teclado al prompt. Con `closeOnEscape: true`, también cierra el panel. |537| Esc | Devuelve el foco del teclado al prompt. Con `closeOnEscape: true`, también cierra el panel. |

535 538 

536Un mod no puede asignar Tab ni las flechas a ninguna otra cosa, así que un juego se controla con `w`, `a`, `s` y `d`.539Un mod no puede asignar Tab ni las flechas a ninguna otra cosa, así que un juego se controla con `w`, `a`, `s` y `d`.

plugins/publish.md +26 −11

Details

145 Enviar al directorio de Anthropic145 Enviar al directorio de Anthropic

146</h2>146</h2>

147 147 

148El directorio de Anthropic es el catálogo que las personas exploran en claude.ai y en Cowork para agregar plugins y conectores. Un listado allí llega a personas en claude.ai, en Cowork y en Claude Code. Usted envía desde el portal de desarrolladores en [claude.ai/directory/manage](https://claude.ai/directory/manage); [Prepare for review](https://claude.com/docs/directory/publish#prepare-for-review) en claude.com describe qué sucede con cada versión antes de que se publique.148El [directorio de Anthropic](https://claude.ai/directory) es el catálogo que las personas exploran en claude.ai y en Cowork para agregar plugins y conectores. Un listado allí llega a personas en claude.ai, en Cowork y en Claude Code. Envías desde el portal de desarrolladores en [claude.ai/directory/manage](https://claude.ai/directory/manage), y [Submit a plugin](https://claude.com/docs/plugins/submit#submit-a-plugin) en claude.com te guía por el portal.

149 149 

150El envío requiere un plan de claude.ai de pago. En Pro y Max usted envía desde su propia cuenta. En Team y Enterprise, un Owner puede enviar, y en Enterprise un Owner también puede otorgar el permiso de **Directory** a otros miembros a través de un rol personalizado en **Organization settings > Roles**. Consulte [Confirm you can submit to the directory](https://claude.com/docs/directory/publish#confirm-you-can-submit-to-the-directory).150El marketplace oficial de Anthropic, `claude-plugins-official`, no acepta envíos a través del portal de directorio. Si trabajas con un contacto de socio de Anthropic, pregúntale sobre un listado en el marketplace oficial.

151 151 

152Los pasos de envío, las comprobaciones que cada versión debe pasar y qué sucede después de que publica se documentan en claude.com, porque son los mismos sin importar en qué superficie estén sus usuarios:152Para enviar un plugin:

153 153 

154* [Publish to the directory](https://claude.com/docs/directory/publish#before-you-submit-to-the-directory): qué puede enviar y quién puede enviarlo154<Steps>

155* [Submit a plugin](https://claude.com/docs/plugins/submit#submit-a-plugin): los pasos del portal y [updating a published plugin](https://claude.com/docs/plugins/submit#update-a-published-plugin)155 <Step title="Confirma que puedes enviar">

156* [Plugin pre-submission checklist](https://claude.com/docs/plugins/pre-submission-checklist#run-the-checks-before-you-submit): las comprobaciones a ejecutar y corregir antes de enviar156 El envío requiere un plan de claude.ai de pago. En Pro y Max envías desde tu propia cuenta. En Team y Enterprise, un Owner puede enviar, y en Enterprise un Owner también puede otorgar el permiso de **Directory** a otros miembros a través de un rol personalizado en **Organization settings > Roles**. Consulta [Confirm you can submit to the directory](https://claude.com/docs/directory/publish#confirm-you-can-submit-to-the-directory).

157* [Move an earlier submission to the developer portal](https://claude.com/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal): qué hacer si envió un plugin a través de uno de los formularios de envío anteriores, antes de que existiera el portal157 </Step>

158 158 

159Antes de abrir el portal, valide localmente y compruebe cuál de sus componentes se carga fuera de Claude Code:159 <Step title="Valida el plugin localmente">

160 Ejecuta `claude plugin validate ./your-plugin --strict` en tu shell. Reemplaza `./your-plugin` con la ruta a tu directorio de plugin. El comando detecta errores de manifiesto localmente; [plugin validate](/docs/es/plugins/cli-reference#plugin-validate) enumera qué archivos lee cada ejecución. El portal aplica reglas de directorio adicionales que la CLI no comprueba, por lo que una ejecución local limpia no garantiza una validación de portal limpia.

160 161 

161* **Ejecute `claude plugin validate ./your-plugin --strict` en su shell**: reemplace `./your-plugin` con la ruta a su directorio de plugin. El comando detecta errores de manifiesto localmente; [plugin validate](/docs/es/plugins/cli-reference#plugin-validate) enumera qué archivos lee cada ejecución. El portal aplica reglas de directorio adicionales que la CLI no comprueba, por lo que una ejecución local limpia no garantiza una validación de portal limpia.162 La [plugin pre-submission checklist](https://claude.com/docs/plugins/pre-submission-checklist#run-the-checks-before-you-submit) en claude.com contiene las comprobaciones a ejecutar y corregir antes de enviar.

162* **Compruebe qué se carga dónde**: algunos componentes de plugin son solo de Claude Code y no se cargan en claude.ai o en Cowork. La [component support table](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app) enumera cada componente por aplicación, para que sepa qué obtendrán los usuarios fuera de Claude Code.163 </Step>

164 

165 <Step title="Comprueba qué se carga dónde">

166 Algunos componentes de plugin son solo de Claude Code y no se cargan en claude.ai o en Cowork. La [component support table](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app) enumera cada componente por aplicación, para que sepas qué obtendrán los usuarios fuera de Claude Code.

167 </Step>

163 168 

164El marketplace oficial de Anthropic, `claude-plugins-official`, no acepta envíos a través del portal de directorio. Si trabaja con un contacto de socio de Anthropic, pregúnteles sobre un listado en el marketplace oficial.169 <Step title="Envía en el portal de desarrolladores">

170 Abre el portal de desarrolladores en [claude.ai/directory/manage](https://claude.ai/directory/manage) y sigue [Submit a plugin](https://claude.com/docs/plugins/submit#submit-a-plugin) en claude.com.

171 </Step>

172</Steps>

173 

174El resto del proceso está documentado en claude.com:

175 

176* [Prepare for review](https://claude.com/docs/directory/publish#prepare-for-review): qué sucede con cada versión antes de que se publique

177* [Update a published plugin](https://claude.com/docs/plugins/submit#update-a-published-plugin): cómo una nueva versión llega a las personas que tienen tu plugin

178* [Submit your plugin, and your MCP server as a connector](https://claude.com/docs/directory/publish#submit-your-plugin-and-your-mcp-server-as-a-connector): qué puedes enviar

179* [Move an earlier submission to the developer portal](https://claude.com/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal): qué hacer si envió un plugin a través de uno de los formularios de envío anteriores, antes de que existiera el portal

165 180 

166<h3 id="how-a-listed-plugin-reaches-claude-code-users">181<h3 id="how-a-listed-plugin-reaches-claude-code-users">

167 Cómo un plugin listado llega a los usuarios de Claude Code182 Cómo un plugin listado llega a los usuarios de Claude Code

routines.md +2 −2

Details

402 Pase el cursor sobre el entorno en la lista y haga clic en el icono de configuración que aparece a la derecha.402 Pase el cursor sobre el entorno en la lista y haga clic en el icono de configuración que aparece a la derecha.

403 </Step>403 </Step>

404 404 

405 <Step title="Cambie el nivel de acceso a la red">405 <Step title="Cambia el nivel de acceso a la red">

406 En el diálogo **Edit cloud environment**, cambie **Network access** a **Custom** e ingrese sus dominios en **Allowed domains**. Marque **Also include default list of common package managers** para mantener la [lista de permitidos predeterminada](/docs/es/cloud-environments#default-allowed-domains) junto con sus dominios personalizados. Seleccione **Full** en su lugar para acceso sin restricciones.406 En el diálogo **Edit environment**, cambia **Network access** a **Custom** e ingresa tus dominios en **Allowed domains**. Marca **Also include default list of common package managers** para mantener la [lista de permitidos predeterminada](/docs/es/cloud-environments#default-allowed-domains) junto con tus dominios personalizados. Selecciona **Full** en su lugar para tener acceso sin restricciones.

407 </Step>407 </Step>

408 408 

409 <Step title="Guardar">409 <Step title="Guardar">

sandboxing.md +2 −4

Details

459 Enmascarar credenciales459 Enmascarar credenciales

460</h3>460</h3>

461 461 

462Cuando enmascaras una credencial, Claude Code muestra a los comandos aislados en el sandbox un marcador por sesión llamado centinela, y el [proxy del sandbox](#network-isolation) sustituye el valor real en las solicitudes salientes a los hosts que permitas. Una entrada `deny` de [Proteger credenciales](#protect-credentials), en cambio, bloquea la credencial. En el caso de los archivos en macOS, Claude Code [bloquea el archivo en su lugar](#mask-credential-files) en lugar de enmascararlo.462Cuando enmascaras una credencial, Claude Code muestra a los comandos aislados en el sandbox un marcador por sesión llamado centinela, y el [proxy del sandbox](#network-isolation) sustituye el valor real en las solicitudes salientes a los hosts que permitas. Una entrada `deny` de [Proteger credenciales](#protect-credentials), en cambio, bloquea la credencial. En el caso de los archivos en macOS, Claude Code [bloquea el archivo en su lugar](#mask-credential-files) en lugar de enmascararlo. La referencia de [`sandbox.credentials`](/docs/es/settings-reference#sandbox-credentials) enumera todos los campos.

463 

464Enmascarar variables de entorno requiere Claude Code v2.1.199 o posterior. La referencia de [`sandbox.credentials`](/docs/es/settings-reference#sandbox-credentials) enumera todos los campos.

465 463 

466El enmascaramiento requiere lo siguiente:464El enmascaramiento requiere lo siguiente:

467 465 


620En una regla `WebFetch(domain:...)`, el sandbox respeta dos formas de comodín: un `*.` inicial, como `*.example.com`, y un `*` solo. La forma `*` sola requiere Claude Code v2.1.186 o posterior. Un comodín en cualquier otra posición, como `WebFetch(domain:example.*)`, sigue coincidiendo con las solicitudes de fetch pero no tiene efecto en los comandos en el sandbox.618En una regla `WebFetch(domain:...)`, el sandbox respeta dos formas de comodín: un `*.` inicial, como `*.example.com`, y un `*` solo. La forma `*` sola requiere Claude Code v2.1.186 o posterior. Un comodín en cualquier otra posición, como `WebFetch(domain:example.*)`, sigue coincidiendo con las solicitudes de fetch pero no tiene efecto en los comandos en el sandbox.

621 619 

622<Note>620<Note>

623 El proxy integrado aplica la lista de permitidos según el nombre de host solicitado y, de forma predeterminada, no termina ni inspecciona el tráfico TLS. El ajuste experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate), disponible en Claude Code v2.1.199 y posterior, hace que el proxy integrado termine TLS por sí mismo, lo cual requieren las [entradas de credenciales `mask`](#mask-credentials). Consulta [Limitaciones de seguridad](#security-limitations) para conocer las implicaciones del comportamiento predeterminado, y [Configuración de proxy personalizado](#custom-proxy-configuration) si tu modelo de amenazas requiere inspección de TLS.621 El proxy integrado aplica la lista de permitidos según el nombre de host solicitado y, de forma predeterminada, no termina ni inspecciona el tráfico TLS. El ajuste experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) hace que el proxy integrado termine TLS por sí mismo, lo cual requieren las [entradas de credenciales `mask`](#mask-credentials). Consulta [Limitaciones de seguridad](#security-limitations) para conocer las implicaciones del comportamiento predeterminado, y [Configuración de proxy personalizado](#custom-proxy-configuration) si tu modelo de amenazas requiere inspección de TLS.

624</Note>622</Note>

625 623 

626<h4 id="hosts-outside-your-allowed-domains">624<h4 id="hosts-outside-your-allowed-domains">

sessions.md +1 −1

Details

299 Elimine datos de sesión299 Elimine datos de sesión

300</h3>300</h3>

301 301 

302Las transcripciones envejecen bajo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically). Para eliminar las transcripciones de un proyecto y el estado relacionado más pronto, ejecute [`claude project purge`](/docs/es/claude-directory#clear-local-data). Si elimina una [sesión en segundo plano](/docs/es/agent-view) con [`claude rm <id>`](/docs/es/agent-view#what-deleting-a-session-removes), su transcripción permanece en el disco y sigue siendo accesible a través de `claude --resume`.302Las transcripciones envejecen bajo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically). Para eliminar las transcripciones de un proyecto y el estado relacionado más pronto, ejecuta [`claude purge`](/docs/es/claude-directory#clear-local-data). Si eliminas una [sesión en segundo plano](/docs/es/agent-view) con [`claude rm <id>`](/docs/es/agent-view#what-deleting-a-session-removes), su transcripción permanece en el disco y sigue siendo accesible a través de `claude --resume`.

303 303 

304<h3 id="name-the-project-directory-yourself">304<h3 id="name-the-project-directory-yourself">

305 Nombre el directorio del proyecto usted mismo305 Nombre el directorio del proyecto usted mismo

Details

708| [`modelOverrides`](#modeloverrides) | [Asigna los ID de modelo](/docs/es/model-config#override-model-ids-per-version) a los ID de tu proveedor, como los ARN de Bedrock | Modelo y respuestas | Any file |708| [`modelOverrides`](#modeloverrides) | [Asigna los ID de modelo](/docs/es/model-config#override-model-ids-per-version) a los ID de tu proveedor, como los ARN de Bedrock | Modelo y respuestas | Any file |

709| [`modelPicker`](#modelpicker) | Elige qué modelos muestra el [selector de `/model`](/docs/es/model-config#available-models), en tu propio orden y con tus propias etiquetas | Modelo y respuestas | User or managed |709| [`modelPicker`](#modelpicker) | Elige qué modelos muestra el [selector de `/model`](/docs/es/model-config#available-models), en tu propio orden y con tus propias etiquetas | Modelo y respuestas | User or managed |

710| [`modelPricing`](#modelpricing) | Reporta el gasto con las tarifas contratadas por tu organización en lugar del precio de lista | Modelo y respuestas | Managed |710| [`modelPricing`](#modelpricing) | Reporta el gasto con las tarifas contratadas por tu organización en lugar del precio de lista | Modelo y respuestas | Managed |

711| [`modelSettings`](#modelsettings) | Guarda un [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) por modelo, o limita el esfuerzo de un modelo | Modelo y respuestas | Any file |711| [`modelSettings`](#modelsettings) | Guarda un [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) o una [ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) por modelo, o limita el esfuerzo de un modelo | Modelo y respuestas | Any file |

712| [`otelHeadersHelper`](#otelheadershelper) | Genera encabezados rotativos de [OpenTelemetry](/docs/es/monitoring-usage#dynamic-headers) con tu propio comando | Autenticación y proveedores | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | Genera encabezados rotativos de [OpenTelemetry](/docs/es/monitoring-usage#dynamic-headers) con tu propio comando | Autenticación y proveedores | Any file |

713| [`outputStyle`](#outputstyle) | Cambia el rol, el tono y el formato de salida de Claude con un [estilo de salida](/docs/es/output-styles) | Modelo y respuestas | Any file |713| [`outputStyle`](#outputstyle) | Cambia el rol, el tono y el formato de salida de Claude con un [estilo de salida](/docs/es/output-styles) | Modelo y respuestas | Any file |

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


1282Para limitar el esfuerzo de un modelo en lugar de establecer su nivel, agregue un campo [`maxEffortLevel`](#maxeffortlevel) a la entrada de ese modelo. El campo requiere Claude Code v2.1.267 o posterior.1282Para limitar el esfuerzo de un modelo en lugar de establecer su nivel, agregue un campo [`maxEffortLevel`](#maxeffortlevel) a la entrada de ese modelo. El campo requiere Claude Code v2.1.267 o posterior.

1283 1283 

1284* **Alcance**: [`Cualquier archivo`](#scopes)1284* **Alcance**: [`Cualquier archivo`](#scopes)

1285* **Tipo**: objeto que asigna un nombre de modelo a un objeto con un campo `effortLevel`, uno de `"low"`, `"medium"`, `"high"` u `"xhigh"`, un campo [`maxEffortLevel`](#maxeffortlevel) o ambos1285* **Tipo**: objeto que asigna un nombre de modelo a un objeto con cualquiera de estos campos:

1286 * `effortLevel`: uno de `"low"`, `"medium"`, `"high"` o `"xhigh"`

1287 * [`maxEffortLevel`](#maxeffortlevel): el nivel de esfuerzo más alto con el que puede ejecutarse el modelo

1288 * `autoCompactWindow`: un número de tokens de `100000` a `1000000`, o `"auto"` para la ventana ajustada para el modelo. [`/autocompact`](/docs/es/model-config#set-the-auto-compact-window) guarda aquí. Para ese modelo, el valor tiene precedencia sobre un [`autoCompactWindow`](#autocompactwindow) de nivel superior en el mismo archivo de configuración. Requiere Claude Code v2.1.288 o posterior

1286* **Predeterminado**: sin establecer1289* **Predeterminado**: sin establecer

1287 1290 

1288Claude Code escribe cada entrada bajo el nombre canónico del modelo, como `claude-opus-5-5`, y coincide con el alias de ese modelo, con sufijo de fecha, `[1m]` e IDs específicos del proveedor reconocidos a la misma entrada.1291Claude Code escribe cada entrada bajo el nombre canónico del modelo, como `claude-opus-5-5`, y coincide con el alias de ese modelo, con sufijo de fecha, `[1m]` e IDs específicos del proveedor reconocidos a la misma entrada.


2478 `sandbox.credentials.envVars`2481 `sandbox.credentials.envVars`

2479</h3>2482</h3>

2480 2483 

2481Protege variables de entorno de los comandos en sandbox. Con `"mode": "deny"`, Claude Code elimina la variable del entorno de los comandos en sandbox. Con `"mode": "mask"`, los comandos en sandbox ven un valor centinela por sesión, y el proxy del sandbox sustituye el valor real en las solicitudes salientes a los `injectHosts` de esa entrada, para que herramientas como `gh` y `npm` sigan autenticándose sin tener nunca la credencial real. `"mode": "mask"` requiere Claude Code v2.1.199 o posterior.2484Protege variables de entorno de los comandos en sandbox. Con `"mode": "deny"`, Claude Code elimina la variable del entorno de los comandos en sandbox. Con `"mode": "mask"`, los comandos en sandbox ven un valor centinela por sesión, y el proxy del sandbox sustituye el valor real en las solicitudes salientes a los `injectHosts` de esa entrada, para que herramientas como `gh` y `npm` sigan autenticándose sin tener nunca la credencial real.

2482 2485 

2483* **Scope**: [`Any file`](#scopes). Claude Code descarta las entradas `mask` del `.claude/settings.json` del proyecto y del `.claude/settings.local.json` local.2486* **Scope**: [`Any file`](#scopes). Claude Code descarta las entradas `mask` del `.claude/settings.json` del proyecto y del `.claude/settings.local.json` local.

2484* **Type**: array de objetos, cada uno con `name` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara para variables de entorno](#mask-fields-for-environment-variables) opcionales2487* **Type**: array de objetos, cada uno con `name` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara para variables de entorno](#mask-fields-for-environment-variables) opcionales


2499}2502}

2500```2503```

2501 2504 

2502El `name` debe comenzar con una letra o un guion bajo y contener solo letras, dígitos y guiones bajos. Claude Code combina los arrays de todos los alcances de configuración que carga la sesión y aplica `deny` cuando la misma variable aparece con ambos modos. [Proteger credenciales](/docs/es/sandboxing#protect-credentials) cubre lo que sigue aplicándose de las fuentes que excluyes con `--setting-sources`. Las entradas `mask` requieren Claude Code v2.1.199 o posterior.2505El `name` debe comenzar con una letra o un guion bajo y contener solo letras, dígitos y guiones bajos. Claude Code combina los arrays de todos los alcances de configuración que carga la sesión y aplica `deny` cuando la misma variable aparece con ambos modos. [Proteger credenciales](/docs/es/sandboxing#protect-credentials) cubre lo que sigue aplicándose de las fuentes que excluyes con `--setting-sources`.

2503 2506 

2504La sustitución `mask` solo se realiza a través del proxy del sandbox, así que establece [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba con HTTP simple; consulta [Enmascarar credenciales](/docs/es/sandboxing#mask-credentials). Claude Code acepta pero ignora los campos `mask` en una entrada `deny`.2507La sustitución `mask` solo se realiza a través del proxy del sandbox, así que establece [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba con HTTP simple; consulta [Enmascarar credenciales](/docs/es/sandboxing#mask-credentials). Claude Code acepta pero ignora los campos `mask` en una entrada `deny`.

2505 2508 


2525| `onExtractNoMatch` | `"warn"`, `"deny"` o `"error"`; predeterminado `"warn"`. En una entrada con `decode`, solo se acepta `"warn"` | Qué sucede cuando `extract` no coincide con nada. `warn` deja pasar la variable sin enmascarar, `deny` la elimina dentro del sandbox y `error` detiene la configuración del sandbox hasta que corrijas la configuración. Requiere v2.1.224 o posterior |2528| `onExtractNoMatch` | `"warn"`, `"deny"` o `"error"`; predeterminado `"warn"`. En una entrada con `decode`, solo se acepta `"warn"` | Qué sucede cuando `extract` no coincide con nada. `warn` deja pasar la variable sin enmascarar, `deny` la elimina dentro del sandbox y `error` detiene la configuración del sandbox hasta que corrijas la configuración. Requiere v2.1.224 o posterior |

2526| `decode` | la cadena `"jwt"` | Verifica que todo el valor sea un JWT y lo reemplaza con un token falso estructuralmente válido, para que el código dentro del sandbox que decodifica el token siga funcionando; el proxy sustituye todo el token real en el tráfico saliente. Un valor que no se verifica pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |2529| `decode` | la cadena `"jwt"` | Verifica que todo el valor sea un JWT y lo reemplaza con un token falso estructuralmente válido, para que el código dentro del sandbox que decodifica el token siga funcionando; el proxy sustituye todo el token real en el tráfico saliente. Un valor que no se verifica pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |

2527| `maskClaims` | array de strings, al menos un nombre de claim; requiere `decode` | Enmascara solo los claims de nivel superior indicados del payload del JWT decodificado y reconstruye el token en torno al payload modificado, para que los demás claims sigan siendo legibles. Cuando ningún claim indicado coincide, la variable pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |2530| `maskClaims` | array de strings, al menos un nombre de claim; requiere `decode` | Enmascara solo los claims de nivel superior indicados del payload del JWT decodificado y reconstruye el token en torno al payload modificado, para que los demás claims sigan siendo legibles. Cuando ningún claim indicado coincide, la variable pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |

2528| `injectHosts` | array de strings, cada uno un host que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) también admite | Restringe los hosts en los que el proxy del sandbox sustituye el valor real. Si no está establecido, el proxy lo sustituye en las solicitudes a todos los hosts de `sandbox.network.allowedDomains`. Escribe un destino IPv6 como la dirección comprimida sin corchetes, como `"::1"`, no en la forma entre corchetes; consulta [Destinos IPv6 en `injectHosts`](/docs/es/sandboxing#ipv6-destinations-in-injecthosts). Requiere v2.1.199 o posterior |2531| `injectHosts` | array de strings, cada uno un host que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) también admite | Restringe los hosts en los que el proxy del sandbox sustituye el valor real. Si no está establecido, el proxy lo sustituye en las solicitudes a todos los hosts de `sandbox.network.allowedDomains`. Escribe un destino IPv6 como la dirección comprimida sin corchetes, como `"::1"`, no en la forma entre corchetes; consulta [Destinos IPv6 en `injectHosts`](/docs/es/sandboxing#ipv6-destinations-in-injecthosts) |

2529 2532 

2530Esto enmascara solo la contraseña dentro de `DATABASE_URL`, elimina la variable si el patrón no coincide con nada y enmascara un JWT en `SERVICE_JWT` dejando legibles todos los claims excepto `api_key`:2533Esto enmascara solo la contraseña dentro de `DATABASE_URL`, elimina la variable si el patrón no coincide con nada y enmascara un JWT en `SERVICE_JWT` dejando legibles todos los claims excepto `api_key`:

2531 2534 


2556 `sandbox.credentials.allowPlaintextInject`2559 `sandbox.credentials.allowPlaintextInject`

2557</h3>2560</h3>

2558 2561 

2559Permite la sustitución `mask` en solicitudes HTTP simples además de en HTTPS con terminación TLS. En HTTP simple, la identidad del servidor de destino no se verifica y la credencial viaja en texto plano, así que deja esto desactivado fuera de redes de prueba de confianza. Requiere Claude Code v2.1.199 o posterior.2562Permite la sustitución `mask` en solicitudes HTTP simples además de en HTTPS con terminación TLS. En HTTP simple, la identidad del servidor de destino no se verifica y la credencial viaja en texto plano, así que deja esto desactivado fuera de redes de prueba de confianza.

2560 2563 

2561* **Scope**: [`User or managed`](#scopes)2564* **Scope**: [`User or managed`](#scopes)

2562* **Type**: Boolean2565* **Type**: Boolean


2574}2577}

2575```2578```

2576 2579 

2577Requiere Claude Code v2.1.199 o posterior.

2578 

2579<h3 id="sandbox-credentials-awspairs">2580<h3 id="sandbox-credentials-awspairs">

2580 `sandbox.credentials.awsPairs`2581 `sandbox.credentials.awsPairs`

2581</h3>2582</h3>


2919}2920}

2920```2921```

2921 2922 

2922Cuando más de una fuente respetada lo establece, Claude Code usa el valor de la fuente con mayor precedencia: la configuración administrada, luego el flag `--settings` y luego la configuración de usuario. Requiere Claude Code v2.1.199 o posterior.2923Cuando más de una fuente respetada lo establece, Claude Code usa el valor de la fuente con mayor precedencia: la configuración administrada, luego el flag `--settings` y luego la configuración de usuario.

2923 2924 

2924<span id="context-and-memory" />2925<span id="context-and-memory" />

2925 2926 


2967}2968}

2968```2969```

2969 2970 

2970Establézcalo con el comando [`/autocompact`](/docs/es/commands#all-commands), que escribe esta clave en la configuración del usuario. [Establecer la ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) cubre cómo interactúan el comando, la bandera, la variable y la configuración.2971El comando [`/autocompact`](/docs/es/commands#all-commands) guarda una ventana para el modelo actual en [`modelSettings`](#modelsettings), que tiene prioridad sobre esta clave en el mismo archivo para ese modelo. [Establecer la ventana de compactación automática](/docs/es/model-config#set-the-auto-compact-window) cubre cómo interactúan el comando, el flag, la variable y el ajuste.

2971 2972 

2972<h3 id="automemorydirectory">2973<h3 id="automemorydirectory">

2973 `autoMemoryDirectory`2974 `autoMemoryDirectory`

setup.md +5 −5

Details

45 <Tab title="Instalación nativa (recomendado)">45 <Tab title="Instalación nativa (recomendado)">

46 **macOS, Linux, WSL:**46 **macOS, Linux, WSL:**

47 47 

48 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}48 ```bash theme={null}

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 **Windows PowerShell:**52 **Windows PowerShell:**

53 53 

54 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}54 ```powershell theme={null}

55 irm https://claude.ai/install.ps1 | iex55 irm https://claude.ai/install.ps1 | iex

56 ```56 ```

57 57 

58 **Windows CMD:**58 **Windows CMD:**

59 59 

60 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}60 ```batch theme={null}

61 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd61 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

62 ```62 ```

63 63 


75 </Tab>75 </Tab>

76 76 

77 <Tab title="Homebrew">77 <Tab title="Homebrew">

78 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}78 ```bash theme={null}

79 brew install --cask claude-code79 brew install --cask claude-code

80 ```80 ```

81 81 


87 </Tab>87 </Tab>

88 88 

89 <Tab title="WinGet">89 <Tab title="WinGet">

90 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}90 ```powershell theme={null}

91 winget install Anthropic.ClaudeCode91 winget install Anthropic.ClaudeCode

92 ```92 ```

93 93 

skills.md +5 −4

Details

198 Resuelve skills que comparten un nombre198 Resuelve skills que comparten un nombre

199</h3>199</h3>

200 200 

201Cuando dos skills comparten un nombre de directorio o archivo, de dónde vino cada una decide cuál ejecuta `/name`. Para un nombre establecido por el campo frontmatter `name`, consulta [Cómo una skill obtiene su nombre de comando](#how-a-skill-gets-its-command-name). La tabla cubre las ubicaciones enterprise, personal, proyecto, anidada, plugin y claude.ai, skills agrupadas y archivos de comando:201Cuando dos skills comparten un nombre de directorio o archivo, de dónde vino cada uno decide cuál ejecuta `/name`. Para un nombre establecido por el campo `name` del frontmatter, consulta [Cómo un skill obtiene su nombre de comando](#how-a-skill-gets-its-command-name). La tabla cubre las ubicaciones enterprise, personal, proyecto, anidada, plugin y claude.ai, los skills incluidos, los comandos integrados y los archivos de comando:

202 202 

203| Mismo nombre en | Cuál ejecuta |203| Mismo nombre en | Cuál ejecuta |

204| :- | :- |204| :- | :- |

205| Dos de enterprise, personal y proyecto | Enterprise sobre personal, y personal sobre proyecto. Con `deploy` en ambos `~/.claude/skills/` y el `.claude/skills/` del proyecto, `/deploy` ejecuta el personal |205| Dos de enterprise, personal y proyecto | Enterprise sobre personal, y personal sobre proyecto. Con `deploy` en ambos `~/.claude/skills/` y el `.claude/skills/` del proyecto, `/deploy` ejecuta el personal |

206| Cualquiera de esas ubicaciones y una [skill agrupada](#bundled-skills) | Tu skill reemplaza el comando agrupado, pero no sus alias. Una skill `code-review` de proyecto reemplaza `/code-review`, y el alias agrupado `/review` nunca ejecuta tu skill |206| Cualquiera de esas ubicaciones y una [skill agrupada](#bundled-skills) | Tu skill reemplaza el comando agrupado, pero no sus alias. Una skill `code-review` de proyecto reemplaza `/code-review`, y el alias agrupado `/review` nunca ejecuta tu skill |

207| Cualquiera de esas ubicaciones y un [comando integrado](/docs/es/commands) | En una sesión de terminal local, tu skill reemplaza el comando integrado, pero no sus alias. Un skill `usage` de proyecto reemplaza `/usage`, y el alias integrado `/cost` sigue ejecutando el comando integrado |

207| Una skill y un archivo en `.claude/commands/` | La skill |208| Una skill y un archivo en `.claude/commands/` | La skill |

208| Una skill raíz de proyecto y una skill anidada | Ambas cargan. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |209| Una skill raíz de proyecto y una skill anidada | Ambas cargan. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |

209| Una skill de plugin y una skill en cualquiera de las ubicaciones anteriores | Ambas cargan, porque las skills de plugin están en el espacio de nombres como `/plugin-name:skill-name` |210| Una skill de plugin y una skill en cualquiera de las ubicaciones anteriores | Ambas cargan, porque las skills de plugin están en el espacio de nombres como `/plugin-name:skill-name` |


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

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

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

419| `effort` | No | [Nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) cuando este skill está activo. Anula el nivel de esfuerzo de la sesión. Por defecto: hereda de la sesión. Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo. |420| `effort` | No | [Nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) cuando este skill está activo. Sobrescribe el nivel de esfuerzo de la sesión. Cuando lo omites, el nivel proviene del [orden de resolución del esfuerzo](/docs/es/model-config#adjust-effort-level). Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo. |

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

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

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


664 665 

665Si invocas un skill con argumentos pero ningún marcador de posición en el contenido del skill recibe uno, Claude Code añade `ARGUMENTS: <your input>` al final del contenido del skill para que Claude aún vea lo que escribiste. Un marcador de posición es `$ARGUMENTS`, una forma indexada como `$1`, o un argumento nombrado. Un marcador de posición indexado sin argumento en su posición permanece como texto literal y no cuenta como recibiendo uno. Un marcador de posición nombrado cuenta incluso cuando su posición no tiene argumento, porque se expande a una cadena vacía.666Si invocas un skill con argumentos pero ningún marcador de posición en el contenido del skill recibe uno, Claude Code añade `ARGUMENTS: <your input>` al final del contenido del skill para que Claude aún vea lo que escribiste. Un marcador de posición es `$ARGUMENTS`, una forma indexada como `$1`, o un argumento nombrado. Un marcador de posición indexado sin argumento en su posición permanece como texto literal y no cuenta como recibiendo uno. Un marcador de posición nombrado cuenta incluso cuando su posición no tiene argumento, porque se expande a una cadena vacía.

666 667 

667También puedes apilar varios skills al inicio de un mensaje. Escribir `/write-tests /fix-issue 123` carga ambos skills y pasa el texto final `123` como `$ARGUMENTS` a cada uno de ellos. Antes de v2.1.199, solo el primer skill se cargaba y recibía `/fix-issue 123` como texto de argumento literal.668También puedes apilar varios skills al inicio de un mensaje. Escribir `/write-tests /fix-issue 123` carga ambos skills y pasa el texto final `123` como `$ARGUMENTS` a cada uno de ellos.

668 669 

669Claude Code expande el primer skill más hasta cinco más apilados después de él. La expansión se detiene en el primer token que no es un skill invocable por el usuario en línea, por lo que un skill que se ejecuta como un [subagente bifurcado](#run-skills-in-a-subagent), como [`/code-review`](/docs/es/code-review#review-a-diff-locally), o uno cuyos argumentos pueden en sí mismos comenzar con un comando slash, como `/loop`, también termina la ejecución allí. Ese token y todo lo que viene después se convierte en el texto de argumento para cada skill expandido. `/code-review` se ejecuta como un subagente bifurcado desde v2.1.218; en versiones anteriores se ejecutaba en línea y se apilaba.670Claude Code expande el primer skill más hasta cinco más apilados después de él. La expansión se detiene en el primer token que no es un skill invocable por el usuario en línea, por lo que un skill que se ejecuta como un [subagente bifurcado](#run-skills-in-a-subagent), como [`/code-review`](/docs/es/code-review#review-a-diff-locally), o uno cuyos argumentos pueden en sí mismos comenzar con un comando slash, como `/loop`, también termina la ejecución allí. Ese token y todo lo que viene después se convierte en el texto de argumento para cada skill expandido. `/code-review` se ejecuta como un subagente bifurcado desde v2.1.218; en versiones anteriores se ejecutaba en línea y se apilaba.

670 671 


923 924 

924El menú `/skills` etiqueta el estado `"user-invocable-only"` como `user-only`.925El menú `/skills` etiqueta el estado `"user-invocable-only"` como `user-only`.

925 926 

926A partir de v2.1.199, `"off"` también oculta la skill de las listas de comandos anunciadas a clientes de [Remote Control](/docs/es/remote-control) y a llamadores de [Agent SDK](/docs/es/agent-sdk/skills#discover-available-commands), además del menú `/` del terminal. Invocar una skill oculta por su nombre completo aún devuelve el error `skillOverrides` en lugar de ejecutarla.927`"off"` también oculta el skill de las listas de comandos que se anuncian a los clientes de [Remote Control](/docs/es/remote-control) y a quienes llaman al [Agent SDK](/docs/es/agent-sdk/skills#discover-available-commands), además del menú `/` de la terminal. Invocar un skill oculto por su nombre completo devuelve el error de `skillOverrides` en lugar de ejecutarlo.

927 928 

928Una skill que está ausente de `skillOverrides` se trata como `"on"`. El ejemplo a continuación colapsa una skill a su nombre y desactiva otra por completo:929Una skill que está ausente de `skillOverrides` se trata como `"on"`. El ejemplo a continuación colapsa una skill a su nombre y desactiva otra por completo:

929 930 

sub-agents.md +2 −2

Details

986 986 

987Cuando algo [corta la respuesta de un subagente a mitad de flujo](/docs/es/errors#the-response-above-may-be-incomplete), y la respuesta parcial contiene texto pero sin llamadas a herramientas, Claude Code pide al subagente que continúe en lugar de terminar la ejecución. Esto sucede también en sesiones interactivas. La ejecución termina en el error solo una vez que esas continuaciones se agotan.987Cuando algo [corta la respuesta de un subagente a mitad de flujo](/docs/es/errors#the-response-above-may-be-incomplete), y la respuesta parcial contiene texto pero sin llamadas a herramientas, Claude Code pide al subagente que continúe en lugar de terminar la ejecución. Esto sucede también en sesiones interactivas. La ejecución termina en el error solo una vez que esas continuaciones se agotan.

988 988 

989A partir de v2.1.199, un subagente cuya ejecución termina en un error de API, como un límite de uso o un error de servidor repetido, reporta esa falla de vuelta a Claude en lugar de devolver el texto de error como si fueran los hallazgos del subagente. Lo que Claude recibe depende de dónde se ejecutó el subagente:989Un subagente cuya ejecución termina en un error de API, como un límite de uso o un error de servidor repetido, reporta esa falla de vuelta a Claude. Lo que Claude recibe depende de dónde se ejecutó el subagente:

990 990 

991* **Primer plano**: si un rate limit, sobrecarga o error de servidor corta un subagente que ya produjo salida de texto, la herramienta Agent devuelve esa salida parcial con una nota de que el subagente fue cortado y no completó su tarea. Un subagente que no produjo nada, o cuya única salida fueron llamadas a herramientas, falla con [`Agent terminated early due to an API error`](/docs/es/errors#agent-terminated-early-due-to-an-api-error), seguido del detalle del error. En v2.1.199, un rate limit, sobrecarga o error de servidor que cortó la forma de solo llamadas a herramientas devolvió en su lugar un resultado parcial vacío que contenía solo la nota de corte.991* **Primer plano**: si un rate limit, sobrecarga o error de servidor corta un subagente que ya produjo salida de texto, la herramienta Agent devuelve esa salida parcial con una nota de que el subagente fue cortado y no completó su tarea. Un subagente que no produjo nada, o cuya única salida fueron llamadas a herramientas, falla con [`Agent terminated early due to an API error`](/docs/es/errors#agent-terminated-early-due-to-an-api-error), seguido del detalle del error. En v2.1.199, un rate limit, sobrecarga o error de servidor que cortó la forma de solo llamadas a herramientas devolvió en su lugar un resultado parcial vacío que contenía solo la nota de corte.

992* **Segundo plano**: el subagente se marca como fallido, y el mensaje que Claude recibe cuando termina nombra el error de API e incluye la última salida del subagente, por lo que el trabajo parcial no se pierde.992* **Segundo plano**: el subagente se marca como fallido, y el mensaje que Claude recibe cuando termina nombra el error de API e incluye la última salida del subagente, por lo que el trabajo parcial no se pierde.


1188 1188 

1189Reanudar inicia una nueva ejecución del agente bajo el mismo ID, por lo que un subagente que ya había fallado o se completó se muestra como en ejecución de nuevo en la lista de tareas y en los eventos de tarea del Agent SDK. Antes de v2.1.205, mantenía su estado anterior fallido o completado mientras la ejecución reanudada estaba trabajando.1189Reanudar inicia una nueva ejecución del agente bajo el mismo ID, por lo que un subagente que ya había fallado o se completó se muestra como en ejecución de nuevo en la lista de tareas y en los eventos de tarea del Agent SDK. Antes de v2.1.205, mantenía su estado anterior fallido o completado mientras la ejecución reanudada estaba trabajando.

1190 1190 

1191A partir de v2.1.199, `SendMessage` verifica que un nombre aún se refiera al mismo agente que alcanzó anteriormente en la conversación. Si un agente más nuevo ha tomado el nombre, como un agente en segundo plano re-generado que lo reutilizó, Claude Code rechaza el envío en lugar de entregarlo al agente incorrecto, y el error reporta qué agente alcanza ahora el nombre para que Claude pueda redirigirse. Para alcanzar el agente anterior mientras aún se está ejecutando, Claude lo dirige por el ID de agente que recibió cuando generó ese agente. La verificación está limitada a la conversación actual y se reinicia en `/clear`.1191`SendMessage` verifica que un nombre aún se refiera al mismo agente que alcanzó anteriormente en la conversación. Si un agente más nuevo ha tomado el nombre, como un agente en segundo plano re-generado que lo reutilizó, Claude Code rechaza el envío en lugar de entregarlo al agente incorrecto, y el error reporta qué agente alcanza ahora el nombre para que Claude pueda redirigirse. Para alcanzar el agente anterior mientras aún se está ejecutando, Claude lo dirige por el ID de agente que recibió cuando generó ese agente. La verificación está limitada a la conversación actual y se reinicia en `/clear`.

1192 1192 

1193Un subagente trata los mensajes del agente que lo lanzó como dirección de tarea normal, incluyendo correcciones de curso a mitad de tarea, y actúa sobre ellos dentro de sus propios ajustes de permisos. Dos límites se mantienen independientemente de quién envió el mensaje: ningún mensaje de ningún agente cuenta como tu aprobación para una solicitud de permiso pendiente, y ningún mensaje de agente puede cambiar los ajustes de permisos, `CLAUDE.md` o configuración de un subagente. Solo el sistema de permisos o tus propios mensajes pueden otorgar aprobación.1193Un subagente trata los mensajes del agente que lo lanzó como dirección de tarea normal, incluyendo correcciones de curso a mitad de tarea, y actúa sobre ellos dentro de sus propios ajustes de permisos. Dos límites se mantienen independientemente de quién envió el mensaje: ningún mensaje de ningún agente cuenta como tu aprobación para una solicitud de permiso pendiente, y ningún mensaje de agente puede cambiar los ajustes de permisos, `CLAUDE.md` o configuración de un subagente. Solo el sistema de permisos o tus propios mensajes pueden otorgar aprobación.

1194 1194 

ultrareview.md +1 −5

Details

134| - | - | - |134| - | - | - |

135| Pro | 3 ejecuciones gratuitas | facturado como [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |135| Pro | 3 ejecuciones gratuitas | facturado como [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |

136| Max | 3 ejecuciones gratuitas | facturado como [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |136| Max | 3 ejecuciones gratuitas | facturado como [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |

137| Team y Enterprise | ninguno | facturado como [créditos de uso](https://support.claude.com/es/articles/12429409-extra-usage-for-paid-claude-plans) |

138 137 

139* **Ejecuciones gratuitas**: las tres ejecuciones de Pro y Max son una asignación única por cuenta y no se renuevan.138* **Ejecuciones gratuitas**: las tres ejecuciones de Pro y Max son una asignación única por cuenta y no se renuevan.

140* **Costo por revisión**: después de usar las ejecuciones gratuitas, típicamente entre $5 y $25 en créditos de uso dependiendo del tamaño del cambio, coincidiendo con la estimación que muestra el diálogo de lanzamiento antes de cada ejecución.139* **Costo por revisión**: después de usar las ejecuciones gratuitas, típicamente entre $5 y $25 en créditos de uso dependiendo del tamaño del cambio, coincidiendo con la estimación que muestra el diálogo de lanzamiento antes de cada ejecución.

141* **Cuándo se cuenta una ejecución**: una vez que la sesión en la nube comienza. Una revisión que detenga temprano o que no se complete correctamente sigue utilizando una ejecución gratuita; una revisión pagada se factura solo por la porción que se ejecutó.140* **Cuándo se cuenta una ejecución**: una vez que la sesión en la nube comienza. Una revisión que detenga temprano o que no se complete correctamente sigue utilizando una ejecución gratuita; una revisión pagada se factura solo por la porción que se ejecutó.

142 141 

143Debido a que ultrareview siempre se factura como créditos de uso fuera de las ejecuciones gratuitas, su cuenta u organización debe tener los créditos de uso habilitados antes de poder lanzar una revisión pagada. Si los créditos de uso no están habilitados, Claude Code bloquea el lanzamiento, y cómo activarlos depende de su acceso de facturación:142Debido a que ultrareview siempre se factura como créditos de uso fuera de las ejecuciones gratuitas, tu cuenta u organización debe tener los créditos de uso activados antes de poder lanzar una revisión pagada. Si los créditos de uso no están activados, Claude Code bloquea el lanzamiento. Si puedes administrar la facturación de tu cuenta, Claude Code te vincula a la configuración de facturación donde puedes activar los créditos de uso.

144 

145* Si puede administrar la facturación de su cuenta, Claude Code le vincula a la configuración de facturación donde puede activar los créditos de uso.

146* En planes Team y Enterprise, los miembros sin acceso de facturación envían una solicitud desde la CLI pidiendo a su administrador que active los créditos de uso.

147 143 

148También puede ejecutar `/usage-credits` para verificar o cambiar su configuración de créditos de uso.144También puede ejecutar `/usage-credits` para verificar o cambiar su configuración de créditos de uso.

149 145