SpyBara
Go Premium

Documentation 2026-07-28 23:57 UTC to 2026-07-29 19:02 UTC

5 files changed +622 −63. View all changes and history on the product overview
2026
Wed 29 19:02 Tue 28 23:57 Mon 27 21:02 Sun 26 19:02 Sat 25 21:59 Fri 24 23:01 Thu 23 23:57 Wed 22 23:59 Tue 21 23:00 Mon 20 23:01 Sat 18 16:02 Fri 17 22:57 Thu 16 22:59 Wed 15 22:00 Tue 14 23:01 Mon 13 23:57 Sat 11 19:03 Fri 10 17:00 Thu 9 23:58 Wed 8 16:02 Tue 7 16:02 Mon 6 23:57 Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01

claude-apps-gateway.md +353 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Puerta de enlace de aplicaciones Claude para Amazon Bedrock, Claude Platform en AWS, Google Cloud y Microsoft Foundry

6 

7> Ejecute Claude Code a través de Amazon Bedrock, Claude Platform en AWS, Google Cloud o Microsoft Foundry detrás de una puerta de enlace autohospedada con inicio de sesión SSO, acceso a modelos por grupo y telemetría OTLP.

8 

9<Note>

10 La puerta de enlace de aplicaciones Claude está diseñada para organizaciones que deben —o prefieren— enrutar la inferencia a través de su propio proveedor de nube, por ejemplo para cumplir con los requisitos de [residencia de datos](/docs/es/claude-apps-gateway-deploy#compliance-posture). Si no tiene este requisito y desea acceso a otras características como aprovisionamiento SCIM o Claude Code en web y dispositivos móviles, Claude Enterprise puede ser una mejor opción. Consulte la página de [disponibilidad de características](/docs/es/feature-availability) para una comparación completa de todos los métodos de implementación.

11</Note>

12 

13Claude apps gateway es un servicio autohospedado que se sitúa entre los clientes de Claude Code de sus desarrolladores y su proveedor de modelos. Los desarrolladores inician sesión con su proveedor de identidad corporativo (IdP) en lugar de mantener claves API o credenciales de nube. La puerta de enlace mantiene la credencial ascendente, aplica el acceso a modelos y [configuraciones administradas](/docs/es/permissions#managed-settings) por grupo de IdP, y retransmite la telemetría de uso a su propia pila de observabilidad.

14 

15Se incluye en el binario `claude`, por lo que el mismo ejecutable que ejecuta Claude Code en una computadora portátil ejecuta el servidor de puerta de enlace con `claude gateway --config gateway.yaml`.

16 

17Esta página cubre:

18 

19* [Por qué Claude apps gateway](#why-claude-apps-gateway), qué agrega sobre ejecutar el suyo propio, y cuándo algo más se ajusta mejor

20* Un [inicio rápido](#quickstart) con [requisitos previos](#prerequisites) que lleva una puerta de enlace de cero a un desarrollador que ha iniciado sesión

21* [Conectar desarrolladores](#connect-developers), incluida la configuración de la URL de la puerta de enlace a través de configuraciones administradas

22* [Disponibilidad y limitaciones](#availability-and-limitations) que cubre qué características de Claude Code funcionan a través de la puerta de enlace y qué soporta el servidor

23 

24Las páginas complementarias profundizan más. La [referencia de configuración](/docs/es/claude-apps-gateway-config) cubre todas las opciones en el archivo YAML que escribe el inicio rápido, y la [guía de implementación](/docs/es/claude-apps-gateway-deploy) cubre la configuración por IdP, la implementación en Kubernetes y Cloud Run, y las operaciones.

25 

26<h2 id="why-claude-apps-gateway">

27 Por qué puerta de enlace de aplicaciones Claude

28</h2>

29 

30La [descripción general de la puerta de enlace](/docs/es/gateways) cubre qué hace una puerta de enlace y por qué ejecutaría una. La puerta de enlace de aplicaciones Claude es la propia puerta de enlace de Anthropic, integrada en el binario `claude` y probada junto con cada lanzamiento de Claude Code, por lo que reenvía los encabezados y campos de solicitud que Claude Code envía sin que los operadores mantengan una lista de permitidos separada. Una vez implementada, le proporciona:

31 

32* **Credenciales**: la clave API ascendente o la credencial de nube vive solo en su infraestructura. Los desarrolladores se autentican con SSO corporativo y reciben tokens portadores de corta duración, por lo que la desvinculación ocurre en su IdP. Desaprovisione un usuario y su acceso a la puerta de enlace expira dentro de la duración de la sesión, una hora por defecto.

33* **Control de acceso**: sus grupos de IdP se asignan a listas de permitidos de modelos y políticas de [configuración administrada](/docs/es/permissions#managed-settings). La puerta de enlace aplica el acceso a modelos del lado del servidor, rechazando solicitudes de modelos no otorgados, y selecciona la política de configuración administrada de cada grupo, que la CLI aplica en el [nivel de configuración administrada](/docs/es/settings#settings-precedence). Diferentes equipos obtienen diferentes modelos, herramientas y permisos, y un desarrollador no puede anular lo que su política bloquea.

34* **Entrega de configuración**: la puerta de enlace entrega la configuración administrada a los clientes conectados por sí misma, reemplazando la [configuración administrada por servidor](/docs/es/server-managed-settings) de la consola de administrador de claude.ai.

35* **Telemetría**: cada destino configurado, como Datadog, Splunk o ClickHouse, recibe [métricas del Protocolo OpenTelemetry (OTLP)](/docs/es/monitoring-usage) con recuentos de tokens, modelo, identidad del usuario y latencia por defecto, con registros y trazas como activaciones opcionales por destino.

36* **Enrutamiento ascendente**: los clientes hablan la API de Mensajes de Anthropic a la puerta de enlace, y la puerta de enlace traduce para cada ascendente, ya sea Amazon Bedrock, [Plataforma Claude en AWS](/docs/es/claude-platform-on-aws), Plataforma de Agentes de Google Cloud, Microsoft Foundry, o la API de Anthropic, con conmutación por error entre ellos. Puede cambiar regiones, proveedores u orden de conmutación por error sin que los desarrolladores lo noten o reconfiguren.

37 

38<Frame>

39 <img src="https://mintcdn.com/claude-code/st9_ZQOFsZa3cKFl/images/claude-gateway-architecture.svg?fit=max&auto=format&n=st9_ZQOFsZa3cKFl&q=85&s=560770d8f49bbd6f1ca7090ed1f13c03" alt="Diagrama que muestra clientes de Claude Code conectándose sobre HTTPS con tokens portadores a una puerta de enlace de aplicaciones Claude autohospedada dentro de su infraestructura, que inicia sesión de usuarios contra su IdP, almacena estado de autenticación en PostgreSQL, retransmite telemetría a su recopilador OTLP, y reenvía inferencia a Amazon Bedrock, Plataforma Claude en AWS, Google Cloud, Microsoft Foundry o la API de Anthropic" width="760" height="320" data-path="images/claude-gateway-architecture.svg" />

40</Frame>

41 

42<Note>

43 El plano de datos de la puerta de enlace no envía nada a la infraestructura de Anthropic a menos que la API de Anthropic sea un ascendente configurado. Usted controla dónde van la telemetría, los registros de auditoría, la configuración administrada y la identidad de IdP de sus desarrolladores, y la puerta de enlace no envía ninguno de ellos a Anthropic. Para el tráfico restante que el proceso de CLI puede enviar y cómo cerrarlo, consulte [Postura de cumplimiento](/docs/es/claude-apps-gateway-deploy#compliance-posture).

44</Note>

45 

46Para ver qué características de Claude Code funcionan a través de la puerta de enlace y qué soporta el servidor en sí, consulte [Disponibilidad y limitaciones](#availability-and-limitations) a continuación. Para decisiones como costo, derivación, ejecutar múltiples puertas de enlace y plataformas sin servidor, consulte la [guía de implementación](/docs/es/claude-apps-gateway-deploy#deployment).

47 

48<h3 id="other-gateway-implementations">

49 Otras implementaciones de puerta de enlace

50</h3>

51 

52Si ya ejecuta una puerta de enlace LLM o puerta de enlace API que cumple con sus necesidades, continúe usándola; [Otras puertas de enlace LLM](/docs/es/llm-gateway) cubre la configuración de Claude Code contra ella.

53 

54La [referencia del protocolo de puerta de enlace](/docs/es/llm-gateway-protocol) documenta el contrato que Claude Code espera de cualquier puerta de enlace: los puntos finales que llama, los encabezados y campos de cuerpo a reenviar, y qué deja de funcionar cuando se eliminan. Una puerta de enlace de aplicaciones Claude en ejecución sirve un superconjunto de ese contrato en `GET /protocol`, agregando los puntos finales específicos de la puerta de enlace de aplicaciones Claude para inicio de sesión SSO, entrega de configuración administrada y telemetría. Obténgalo con `curl https://claude-gateway.internal.example.com/protocol` desde cualquier puerta de enlace implementada, como la que produce el [inicio rápido](#quickstart) a continuación.

55 

56Los cambios importantes en el protocolo se anuncian con anticipación, pero no se garantiza compatibilidad hacia atrás indefinida.

57 

58<h2 id="quickstart">

59 Inicio rápido

60</h2>

61 

62Este inicio rápido recorre la ruta mínima: registre un cliente OAuth en su IdP, escriba un `gateway.yaml`, ejecute la puerta de enlace junto con Postgres con Docker Compose, y verifique el inicio de sesión de extremo a extremo. Utiliza un ascendente de Amazon Bedrock; la Plataforma de Claude en AWS, la Plataforma de Agentes de Google Cloud, Microsoft Foundry, y la API de Anthropic son igualmente compatibles intercambiando el bloque `upstreams` como se muestra en la [referencia de configuración](/docs/es/claude-apps-gateway-config#upstreams). Al final tiene una puerta de enlace a la que un desarrollador puede `/login`.

63 

64<Note>

65 **Implemente en su red privada.** Claude Code solo se conecta a una puerta de enlace cuya dirección es privada. Esta es una protección de seguridad, porque una puerta de enlace confiable puede insertar configuración que ejecute comandos en máquinas de desarrolladores. Coloque la puerta de enlace detrás de un equilibrador de carga interno o VPN y asígnele un nombre de host que se resuelva solo a direcciones IP privadas.

66 

67 Los puntos finales de puerta de enlace pública operados por Anthropic son la excepción: `/login` los acepta sobre `https://`. Estos son un conjunto pequeño y fijo de puertas de enlace que el propio Anthropic opera; no son una opción de implementación que pueda seleccionar o configurar. La lista se compila en Claude Code, por lo que ninguna configuración puede agregar un nombre de host a ella y ninguna puerta de enlace que aloje califica para la exención. {/* min-version: 2.1.206 */}Antes de v2.1.206, `/login` rechazaba esos puntos finales como cualquier otra dirección pública.

68</Note>

69 

70<h3 id="prerequisites">

71 Requisitos previos

72</h3>

73 

74Tenga estos en lugar antes de comenzar:

75 

76| Lo que necesita | Detalles |

77| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

78| Claude Code v2.1.195 o posterior | El subcomando `claude gateway` y el flujo de inicio de sesión de la puerta de enlace se envían en v2.1.195. Las compilaciones públicas anteriores no las incluyen. Tanto la máquina que ejecuta el servidor de puerta de enlace como la máquina de cada desarrollador deben estar en v2.1.195 o posterior; ejecute `claude update` para obtener la última versión. {/* min-version: 2.1.198 */}La [Plataforma de Claude en AWS ascendente](/docs/es/claude-apps-gateway-config#claude-platform-on-aws) requiere Claude Code v2.1.198 o posterior en el servidor de puerta de enlace. |

79| Proveedor de identidad OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, o Dex, u otro IdP compatible con OIDC como PingFederate. La puerta de enlace ejecuta el descubrimiento OIDC estándar y el flujo de código de autorización contra ella. SAML y LDAP no son compatibles. |

80| PostgreSQL 14 o posterior | Respalda el flujo de inicio de sesión del dispositivo, donde la devolución de llamada del navegador escribe y la CLI de sondeo lee, más contadores de límite de velocidad. Cualquier Postgres administrado funciona, incluido el nivel más pequeño. Sin límites de gasto configurados, la puerta de enlace almacena algunos KB de estado de autenticación de corta duración; con [límites de gasto](/docs/es/claude-apps-gateway-spend-limits), también mantiene tablas de gasto, auditoría e identidad duraderas que deben respaldarse. TLS a través de `?sslmode=require` se recomienda. |

81| Ascendente de modelo | Credenciales de Amazon Bedrock, credenciales de Plataforma de Claude en AWS, credenciales de Google Cloud, un recurso de Microsoft Foundry, o una clave API de Anthropic. Se admiten múltiples ascendentes con conmutación por error. |

82| HTTPS | La puerta de enlace debe ser accesible sobre `https://` desde computadoras portátiles de desarrolladores y desde cualquier navegador utilizado para el inicio de sesión; la puerta de enlace sirve la página de verificación del dispositivo en el mismo oyente. Proporcione un certificado TLS a través de `listen.tls`, o ejecute detrás de una entrada que termina TLS y establezca `listen.public_url`. Un origen `http://` simple se acepta solo en loopback, para desarrollo local. |

83| Dirección de red privada | En `/login`, Claude Code requiere que el nombre de host o la dirección IP de la puerta de enlace se resuelvan solo a direcciones privadas: RFC 1918, CGNAT `100.64.0.0/10`, ULA IPv6 `fc00::/7`, o loopback para desarrollo local. La verificación se ejecuta en cada IP resuelta, por lo que si alguna dirección a la que se resuelve el nombre es pública, `/login` rechaza la URL. Si las máquinas de desarrolladores enrutan HTTPS a través de un proxy corporativo, el inicio de sesión también requiere que el host del proxy se resuelva a direcciones privadas; si no es así, agregue el host de la puerta de enlace a `NO_PROXY` para que la CLI se conecte directamente. {/* min-version: 2.1.206 */}Los puntos finales de puerta de enlace operados por Anthropic son exentos de las verificaciones de dirección privada y proxy: `/login` los acepta sobre `https://` por coincidencia exacta de nombre de host, por lo que el requisito de red privada se aplica solo a una puerta de enlace que aloje usted mismo. Antes de v2.1.206, `/login` rechazaba un punto final operado por Anthropic como cualquier otra dirección pública. |

84| Tiempo de ejecución de Linux | El servidor de puerta de enlace solo se ejecuta en el binario nativo de Linux. macOS funciona para desarrollo local. Windows no es compatible como plataforma de servidor. |

85 

86El servidor de puerta de enlace requiere el binario `claude` nativo; descargue una versión fija como se describe en [Instalar Claude Code](/docs/es/setup). El servidor utiliza características de tiempo de ejecución que no están disponibles cuando Claude Code se ejecuta bajo Node. Si ve `requires the native binary` al arrancar, cambie a uno de los métodos de instalación independientes.

87 

88<h3 id="steps">

89 Pasos

90</h3>

91 

92<Steps>

93 <Step title="Registre un cliente OAuth en su IdP">

94 Decida primero el nombre de host de la puerta de enlace, porque el URI de redirección debe coincidir con él. Cree una nueva aplicación web OIDC y establezca el URI de redirección en `https://claude-gateway.<your-domain>/oauth/callback`, donde el host es el mismo valor que establece como [`listen.public_url`](/docs/es/claude-apps-gateway-config#listen) en el paso 3. Anote el `client_id` y `client_secret`. Las instrucciones por IdP están en [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup).

95 </Step>

96 

97 <Step title="Aprovisione una base de datos PostgreSQL">

98 Cualquier Postgres 14 o posterior funciona, incluido el nivel administrado más pequeño. La puerta de enlace ejecuta sus propias migraciones de esquema al arrancar, por lo que el usuario de la base de datos necesita permiso `CREATE TABLE`. Si su política de seguridad prohíbe DDL de roles de aplicación, pre-cree el esquema en su lugar; consulte [`store`](/docs/es/claude-apps-gateway-config#store).

99 </Step>

100 

101 <Step title="Escriba gateway.yaml">

102 Los secretos se leen a través de la expansión `${ENV_VAR}` para que el archivo en sí pueda vivir en control de versiones. Use un nombre de host `public_url` que se resuelva a una IP privada en su red, porque `/login` rechaza direcciones públicas. La configuración mínima tiene cinco secciones, y todos los demás campos tienen un valor predeterminado:

103 

104 ```yaml gateway.yaml theme={null}

105 listen:

106 host: 0.0.0.0

107 port: 8080

108 # Requerido detrás de cualquier proxy que termina TLS. Utilizado para el IdP

109 # redirect_uri y el documento de descubrimiento.

110 public_url: https://claude-gateway.internal.example.com

111 

112 oidc:

113 issuer: https://login.example.com # debe servir /.well-known/openid-configuration

114 client_id: 0oa1example2

115 client_secret: ${OIDC_CLIENT_SECRET}

116 allowed_email_domains: [example.com] # rechazar id_tokens fuera de su organización

117 userinfo_fallback: true # para IdPs cuyo id_token omite email/groups; inofensivo de otra manera

118 

119 session:

120 jwt_secret: ${GATEWAY_JWT_SECRET} # openssl rand -base64 32

121 ttl_hours: 1 # también limita la latencia de revocación en desaprovisionamiento de IdP

122 

123 store:

124 postgres_url: ${GATEWAY_POSTGRES_URL} # agregue ?sslmode=require para Postgres administrado

125 

126 upstreams:

127 - provider: bedrock

128 region: us-east-1

129 auth: {} # vacío: cadena de credenciales predeterminada de AWS

130 # (IRSA, rol de tarea EC2/ECS, variables de entorno, ~/.aws)

131 

132 # Los modelos se traducen por ascendente automáticamente. El catálogo integrado

133 # asigna claude-opus-4-8 a us.anthropic.claude-opus-4-8 y así sucesivamente para cada

134 # modelo Claude compatible con Bedrock. Establezca false y agregue una lista `models:` para

135 # exponer solo modelos específicos.

136 auto_include_builtin_models: true

137 ```

138 

139 Esta configuración es suficiente para un bucle de inicio de sesión funcional con el catálogo de modelos predeterminado de Bedrock. Una vez que se ejecute, agregue RBAC por grupo y configuración administrada a través de [`managed.policies`](/docs/es/claude-apps-gateway-config#managed), distribución de telemetría a través de [`telemetry`](/docs/es/claude-apps-gateway-config#telemetry), y conmutación por error de múltiples ascendentes, ARNs de rendimiento aprovisionado, o regiones no estadounidenses a través de [`models`](/docs/es/claude-apps-gateway-config#models).

140 

141 <Note>

142 El ascendente de Bedrock necesita un principal de AWS con `bedrock:InvokeModel` y `bedrock:InvokeModelWithResponseStream` en los ARNs `inference-profile/us.anthropic.*` y los ARNs `foundation-model/anthropic.*` subyacentes, y acceso a modelos habilitado en la consola de Bedrock para los modelos Claude que desea. Suministre la credencial con IRSA en EKS, un rol de tarea de ECS, o un perfil de instancia de EC2 en lugar de claves estáticas. La [referencia `upstreams`](/docs/es/claude-apps-gateway-config#upstreams) tiene los detalles completos de IAM, la matriz de credenciales entre nubes, y los bloques `auth` para los otros proveedores.

143 </Note>

144 </Step>

145 

146 <Step title="Ejecútelo">

147 Construya una imagen de contenedor alrededor del binario `claude` que cumpla con los [requisitos de imagen](/docs/es/claude-apps-gateway-deploy#container-image), luego ejecútela junto con Postgres:

148 

149 ```yaml docker-compose.yaml theme={null}

150 services:

151 gateway:

152 image: <your-registry>/claude-gateway:<version>

153 ports: ["8080:8080"]

154 volumes: ["./gateway.yaml:/etc/claude/gateway.yaml:ro"]

155 environment:

156 OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}

157 GATEWAY_JWT_SECRET: ${GATEWAY_JWT_SECRET}

158 GATEWAY_POSTGRES_URL: postgres://gw:pw@postgres/gateway

159 # Credenciales de AWS: en producción, omita estas y use un rol de instancia.

160 # Para pruebas locales de Compose, pase las suyas propias:

161 AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}

162 AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}

163 AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN}

164 depends_on:

165 postgres:

166 condition: service_healthy

167 postgres:

168 image: postgres:16-alpine

169 environment: { POSTGRES_USER: gw, POSTGRES_PASSWORD: pw, POSTGRES_DB: gateway }

170 healthcheck:

171 test: ["CMD-SHELL", "pg_isready -U gw"]

172 interval: 5s

173 volumes: ["pgdata:/var/lib/postgresql/data"]

174 volumes: { pgdata: }

175 ```

176 

177 La puerta de enlace es un único binario de Linux que lee la configuración, ejecuta el descubrimiento OIDC contra su IdP, aplica sus migraciones de esquema de Postgres, construye clientes ascendentes, e inicia la escucha. El arranque es de cierre fallido para la configuración, la conexión de Postgres con un tiempo de espera de 5 segundos, el descubrimiento OIDC, y la construcción del cliente ascendente. Si alguno de esos es inaccesible o está mal configurado, la puerta de enlace sale con un error en lugar de servir tráfico en un estado degradado.

178 

179 Un arranque exitoso no valida la ruta de inferencia, porque las credenciales de instancia de Bedrock y Agent Platform se resuelven en la primera solicitud, no al arrancar.

180 

181 Observe stderr para la secuencia de arranque. Las líneas de registro utilizan el formato `[gateway] <timestamp> <level> <message>`, los eventos de auditoría son JSON de una sola línea con un campo `evt`, y un banner de inicio, omitido a continuación, se imprime entre las líneas de migración y escucha. Debería ver, en orden:

182 

183 ```text theme={null}

184 {"ts":"2026-06-10T17:03:21.114Z","evt":"config.load","path":"/etc/claude/gateway.yaml","sha256":"…"}

185 [gateway] 2026-06-10T17:03:21.408Z info migration 1 applied

186 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080

187 ```

188 

189 Si el arranque sale antes de la línea `claude gateway listening on`, la última línea de stderr nombra el problema:

190 

191 * un Postgres inaccesible

192 * un rol de Postgres sin permiso DDL

193 * un documento de descubrimiento OIDC inaccesible o inválido

194 * una violación del esquema de configuración con la ruta del campo ofensivo

195 

196 Corrija y reinicie.

197 

198 Si ya tiene una entrada que termina TLS, omita Compose y ejecute el binario directamente con `claude gateway --config gateway.yaml`. Establezca `public_url` en el origen de la entrada y vincule `listen` a una dirección de loopback o interna del clúster.

199 </Step>

200 

201 <Step title="Verifique la superficie de autenticación">

202 Tres verificaciones confirman que la puerta de enlace puede autenticar a un usuario real antes de entregársela a un desarrollador.

203 

204 Los ejemplos utilizan la URL pública de la puerta de enlace; para la configuración local de Compose sin una entrada, sustituya `http://localhost:8080` en las dos primeras verificaciones. La tercera verificación abre `verification_uri_complete`, que se construye a partir de `public_url`, por lo que para Compose local establezca `public_url: http://localhost:8080` en `gateway.yaml`, y agregue `http://localhost:8080/oauth/callback` como un segundo URI de redirección en el cliente OAuth del paso 1, porque la puerta de enlace construye el `redirect_uri` de IdP a partir de `public_url`. El enlace de verificación luego se abre en su navegador local.

205 

206 En Windows PowerShell, ejecute `curl.exe`; el `curl` simple es un alias para `Invoke-WebRequest` y rechaza estas banderas.

207 

208 Primero, obtenga el documento de descubrimiento, que confirma que la puerta de enlace está activa, la configuración es válida, y todas las verificaciones de arranque pasaron:

209 

210 ```bash theme={null}

211 curl -s https://claude-gateway.internal.example.com/.well-known/oauth-authorization-server | jq

212 ```

213 

214 ```json theme={null}

215 {

216 "issuer": "https://claude-gateway.internal.example.com",

217 "device_authorization_endpoint": "…/oauth/device_authorization",

218 "token_endpoint": "…/oauth/token",

219 "grant_types_supported": ["urn:ietf:params:oauth:grant-type:device_code", "refresh_token"]

220 }

221 ```

222 

223 La respuesta incluye campos adicionales, como `response_types_supported` y `scopes_supported`.

224 

225 Segundo, solicite una autorización de dispositivo, que confirma que el flujo de inicio de sesión del dispositivo funciona y Postgres es accesible y escribible:

226 

227 ```bash theme={null}

228 curl -s -X POST https://claude-gateway.internal.example.com/oauth/device_authorization | jq

229 ```

230 

231 ```json theme={null}

232 {

233 "device_code": "…",

234 "user_code": "WDJB-MJHT",

235 "verification_uri": "https://claude-gateway.internal.example.com/device",

236 "verification_uri_complete": "https://claude-gateway.internal.example.com/device?user_code=WDJB-MJHT",

237 "expires_in": 600,

238 "interval": 5

239 }

240 ```

241 

242 Tercero, pruebe la rama del navegador abriendo `verification_uri_complete` en un navegador y confirmando el código. Debería ser redirigido a la página de inicio de sesión de su IdP, y después de iniciar sesión, aterrizar de nuevo en la puerta de enlace con una confirmación de inicio de sesión.

243 

244 Use la primera verificación fallida para localizar el problema:

245 

246 * **Primera verificación falla**: el arranque no se completó; verifique stderr

247 * **Segunda verificación falla**: Postgres no es accesible desde la puerta de enlace o el rol no puede escribir; verifique la cadena de conexión y los permisos

248 * **Tercera verificación no llega al IdP**: verifique que el URI de redirección de IdP coincida exactamente con `https://<gateway>/oauth/callback`

249 * **Tercera verificación llega al IdP pero rebota con un error**: lea el registro de auditoría de la puerta de enlace, que registra cada rechazo de autenticación con la razón, como `email domain not allowed`

250 </Step>

251 

252 <Step title="Inicie sesión de un desarrollador">

253 Este último paso ocurre en una máquina de desarrollador, no en el servidor. Establezca `forceLoginMethod` en `"gateway"` y `forceLoginGatewayUrl` en la `public_url` de su puerta de enlace en el [archivo de configuración administrada](/docs/es/settings#settings-files) de esa máquina, luego ejecute `/login`, presione Intro en la pantalla **Cloud gateway**, y complete el inicio de sesión del navegador. [Establezca la URL de la puerta de enlace](#set-the-gateway-url) a continuación cubre la distribución de ambas claves a escala.

254 </Step>

255</Steps>

256 

257<h2 id="connect-developers">

258 Conectar desarrolladores

259</h2>

260 

261Los desarrolladores se conectan desde sus propias computadoras portátiles con un inicio de sesión de navegador, usando su cuenta de trabajo corporativa. No necesitan una cuenta de claude.ai, una clave API, o una suscripción, porque las solicitudes al modelo van a través de la puerta de enlace usando la credencial ascendente de la organización. La conexión es impulsada por la [configuración administrada del lado del cliente](/docs/es/claude-apps-gateway-config#client-side-managed-settings) que inserta a través de MDM, por lo que no hay configuración manual en el lado del desarrollador; esta sección cubre lo que configura el administrador.

262 

263La CLI toma la huella digital del certificado TLS de hoja de la puerta de enlace en la primera conexión y la fija por nombre de host. Publique la huella digital SHA-256 esperada junto con la URL de la puerta de enlace para que los desarrolladores tengan algo con lo que comparar. Obtenga la huella digital del archivo de certificado con `openssl x509 -noout -fingerprint -sha256 -in cert.pem`; el indicador `/login` muestra los primeros 16 caracteres del resumen como hexadecimal minúscula sin separadores.

264 

265Cuando el certificado rota, cada desarrollador ve el indicador de confianza nuevamente, por lo que trate las rotaciones como un evento planificado y republique la huella digital.

266 

267Una vez conectado, el [selector de modelos](/docs/es/model-config) muestra los modelos en la lista de permitidos `availableModels` del desarrollador, la configuración administrada se aplica al inicio y se actualiza cada hora, y la telemetría se enruta a su recopilador. Las sesiones se actualizan silenciosamente antes de la expiración de `ttl_hours`, y una actualización fallida después del desaprovisionamiento de IdP solicita un nuevo inicio de sesión.

268 

269<h3 id="set-the-gateway-url">

270 Establecer la URL de la puerta de enlace

271</h3>

272 

273Establezca ambas claves en el archivo de [configuración administrada](/docs/es/settings#settings-files) por sistema operativo que implementa a través de MDM o directamente en el disco, y `/login` abre directamente en la pantalla **Cloud gateway** con la URL rellenada:

274 

275```json theme={null}

276{

277 "forceLoginMethod": "gateway",

278 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

279}

280```

281 

282El desarrollador presiona Intro para conectarse. El indicador de huella digital TLS de primera conexión aún aparece.

283 

284No hay opción de puerta de enlace en el selector de inicio de sesión para que un desarrollador seleccione manualmente, y `forceLoginGatewayUrl` se ignora en los archivos de configuración propios de un desarrollador. `forceLoginMethod` solo, sin una URL, deja al desarrollador en un mensaje "Contacte a su administrador de TI". Ambas claves pertenecen al archivo que inserta en máquinas, no en el bloque `managed.policies[].cli` de la puerta de enlace, que solo llega a clientes que ya están conectados.

285 

286<h3 id="ci-pipelines-and-remote-machines">

287 Canalizaciones de CI y máquinas remotas

288</h3>

289 

290No hay flujo de token de servicio para canalizaciones desatendidas. El inicio de sesión de la puerta de enlace siempre ejecuta el flujo de dispositivo del navegador, por lo que un trabajo de CI sin un desarrollador para aprobar el inicio de sesión no puede autenticarse; configure esos contra su proveedor directamente.

291 

292Una vez que un desarrollador ha iniciado sesión, cada invocación de Claude Code en esa máquina usa la sesión de la puerta de enlace, incluidas las ejecuciones no interactivas de `claude -p` y sesiones iniciadas por el SDK del Agente, y la [política de la puerta de enlace se aplica a todas ellas](/docs/es/claude-apps-gateway-config#managed).

293 

294El flujo de dispositivo separa la CLI de sondeo de la aprobación del navegador, por lo que una caja de desarrollo remota sin pantalla aún funciona: el desarrollador ejecuta `/login` sobre SSH en la máquina remota y abre el enlace de verificación en el navegador en su computadora portátil.

295 

296<h3 id="what’s-enforced-on-developers">

297 Qué se aplica en los desarrolladores

298</h3>

299 

300Estas garantías se aplican a cada sesión de puerta de enlace conectada.

301 

302* **Acceso a modelos**: las solicitudes de modelos que la política no otorga devuelven 400, y el selector `/model` se filtra a la lista de permitidos `availableModels` de la política. Establezca [`enforceAvailableModels: true`](/docs/es/model-config#default-model-behavior) en la política para que la opción Predeterminado se resuelva a un modelo dentro de `availableModels` en lugar de al predeterminado integrado de Claude Code; sin él, Predeterminado permanece seleccionable y se rechaza en el tiempo de solicitud si ese modelo no se otorga.

303* **Destino de telemetría**: cuando se configura [reenvío de telemetría](/docs/es/claude-apps-gateway-config#telemetry), el punto final de exportación OTLP se fija a la puerta de enlace, y la configuración insertada por la puerta de enlace anula las variables `OTEL_*` configuradas localmente.

304* **Credenciales**: el token de la puerta de enlace es la única credencial de la sesión. `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_API_KEY`, `apiKeyHelper`, y cualquier inicio de sesión anterior de claude.ai se ignoran mientras se conecta, por lo que los desarrolladores no necesitan cerrar sesión de claude.ai primero.

305* **Configuración administrada**: las claves bloqueadas no se pueden anular localmente. La CLI aplica la política al inicio y en cada sondeo cada hora.

306* **Inicio**: las sesiones conectadas salen al inicio con un error después de aproximadamente 10 segundos cuando la puerta de enlace es inaccesible, en lugar de iniciarse sin su configuración.

307* **Desaprovisionamiento**: una sesión cuyo usuario está deshabilitado en el IdP expira dentro de `ttl_hours` cuando la siguiente actualización falla.

308 

309<h3 id="what-the-organization-can-see">

310 Qué puede ver la organización

311</h3>

312 

313La telemetría de uso lleva la identidad del desarrollador, recuentos de tokens, modelo y latencia al recopilador de la organización. La puerta de enlace no registra ni almacena contenido de indicación o finalización. Si se recopila telemetría más rica como registros y trazas, que puede incluir comandos y rutas de archivo, es la [opción por destino](/docs/es/claude-apps-gateway-config#telemetry) de la organización.

314 

315<h2 id="availability-and-limitations">

316 Disponibilidad y limitaciones

317</h2>

318 

319La tabla cubre qué características de Claude Code funcionan cuando los desarrolladores se conectan a través de la puerta de enlace, y qué soporta el servidor de puerta de enlace en sí. Donde algo no es compatible, la columna Notas proporciona la alternativa.

320 

321La puerta de enlace entrega los valores [`anthropic-beta`](https://platform.claude.com/docs/es/api/beta-headers) que la CLI envía a cada ascendente, por lo que los operadores no mantienen una lista de permitidos de beta. Para Amazon Bedrock, que ignora el encabezado, la puerta de enlace mueve los valores al campo `anthropic_beta` del cuerpo de la solicitud; los otros ascendentes reciben el encabezado como se envía.

322 

323El conjunto de beta de sesión de puerta de enlace de la CLI omite betas solo de primera parte y la beta de ttl de caché extendido, por lo que esas filas a continuación muestran como no disponibles.

324 

325| Característica | Estado | Notas |

326| ---------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

327| Reenvío de inferencia (Amazon Bedrock, Claude Platform en AWS, Agent Platform de Google Cloud, Microsoft Foundry, Anthropic) | Disponible | Con traducción de modelos por ascendente y conmutación por error. El ascendente de Amazon Bedrock utiliza el punto final `bedrock-runtime` y la cadena de credenciales predeterminada de AWS; el [punto final Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock no es un ascendente compatible. El [ascendente Claude Platform en AWS](/docs/es/claude-apps-gateway-config#claude-platform-on-aws) requiere Claude Code v2.1.198 o posterior en el servidor de puerta de enlace. |

328| Acceso a modelos y configuración administrada por grupo de IdP | Disponible | El acceso a modelos se aplica del lado del servidor; la configuración administrada se entrega por grupo de IdP y se aplica por la CLI en el [nivel de configuración administrada](/docs/es/settings#settings-precedence) |

329| Distribución de telemetría (OTLP/HTTP) | Disponible | Identidad marcada por exportación; ambas codificaciones protobuf y JSON |

330| Proveedores de identidad OIDC | Disponible | Cualquier IdP compatible con OIDC; la puerta de enlace ejecuta el descubrimiento OIDC estándar y el flujo de código de autorización. Consulte [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup) para la configuración por IdP |

331| Límites de gasto por usuario y por grupo | Disponible | Consulte [Límites de gasto](/docs/es/claude-apps-gateway-spend-limits) |

332| Búsqueda web del lado del servidor | No disponible | La CLI no puede ver qué proveedor ascendente enruta la puerta de enlace, por lo que no puede verificar la compatibilidad de búsqueda web y deshabilita WebSearch en sesiones de puerta de enlace |

333| Almacenamiento en caché de indicación estándar | Disponible | Los puntos de interrupción `cache_control` se reenvían a cada ascendente |

334| TTL de caché de 1 hora | No disponible | La CLI omite la beta de ttl de caché extendido en sesiones de puerta de enlace, porque no todos los ascendentes a los que la puerta de enlace puede enrutar soportan el TTL de 1 hora, por lo que el almacenamiento en caché de indicación a través de la puerta de enlace utiliza el TTL de 5 minutos; consulte la nota de encabezado de beta anterior |

335| Modo automático | Disponible | Sigue las [reglas del proveedor de terceros](/docs/es/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry): solo los modelos elegibles en proveedores de terceros pueden usarlo. {/* min-version: 2.1.207 */}Antes de v2.1.207, el modo automático en sesiones de puerta de enlace requería establecer `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, entregable a través del bloque `env` de política administrada |

336| Optimizaciones solo de primera parte como alcance de caché global y herramientas eficientes en tokens | No disponible | La CLI no las habilita en sesiones de puerta de enlace; consulte la nota de encabezado de beta anterior |

337| OTLP/gRPC | No compatible | OTLP sobre HTTP solo |

338| SAML, LDAP y otra autenticación no OIDC | No compatible | Solo OIDC. Frente con un puente OIDC si es necesario |

339| Multi-inquilino (múltiples emisores OIDC) | No compatible | Un emisor por puerta de enlace. Ejecute instancias separadas |

340| Servidor Windows | No compatible | Implemente en Linux. macOS solo para desarrollo local |

341| Gráfico Helm | No disponible | La puerta de enlace se ejecuta como un Deployment sin estado estándar; consulte la [guía de implementación](/docs/es/claude-apps-gateway-deploy#kubernetes) |

342| Interfaz de usuario de administrador | No disponible | La configuración es el archivo YAML; reimplemente para cambiarlo |

343 

344<h2 id="next-steps">

345 Próximos pasos

346</h2>

347 

348El inicio rápido lo deja con una configuración mínima ejecutándose bajo Docker Compose. Para llevarlo más lejos:

349 

350* Expanda `gateway.yaml` más allá de la configuración mínima, por ejemplo para agregar RBAC por grupo, conmutación por error de múltiples ascendentes, o destinos de telemetría. La [referencia de configuración](/docs/es/claude-apps-gateway-config) cubre cada opción.

351* Pase de Compose a una implementación de producción en Kubernetes o Cloud Run, configure su IdP correctamente, y revise el modelo de seguridad. La [guía de implementación y operaciones](/docs/es/claude-apps-gateway-deploy) cubre la configuración por IdP, los requisitos de imagen de contenedor, sondeos de salud y solución de problemas.

352* Coloque límites de gasto en desarrolladores individuales o grupos para que una carga de trabajo descontrolada no pueda consumir todo su compromiso. [Límites de gasto](/docs/es/claude-apps-gateway-spend-limits) cubre la API de administrador y cómo funciona la aplicación.

353* Para un ejemplo completo trabajado en Google Cloud, con Cloud Run, Cloud SQL y Secret Manager, consulte [Implementar en Google Cloud](/docs/es/claude-apps-gateway-on-gcp).

corporate-launcher.md +142 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Ejecutar Claude Code detrás de un lanzador corporativo

6 

7> Enrute los procesos que Claude Code inicia desde su propio binario, incluido el servicio de fondo y cada sesión de vista de agente, a través de un lanzador requerido con CLAUDE_CODE_PROCESS_WRAPPER.

8 

9Algunas organizaciones requieren que cada proceso en una estación de trabajo se inicie a través de un lanzador obligatorio. El lanzador aplica la zona de pruebas, los controles de red o la inyección de credenciales en las que depende la postura de seguridad de la empresa, y un binario que se inicia sin ella es una violación de política.

10 

11`CLAUDE_CODE_PROCESS_WRAPPER` inicia cada proceso que Claude Code lanza desde su propio binario a través de su lanzador: el servicio de fondo, cada sesión que aloja en [vista de agente](/docs/es/agent-view), y los relanzamientos de Claude Code después de una actualización. Establézcalo en la ruta absoluta de su lanzador, y Claude Code ejecuta el lanzador con el comando de Claude Code como sus argumentos.

12 

13Un lanzador que envuelve el comando `claude` en su `PATH` no puede alcanzar estos procesos, porque se inician desde la ruta directa del binario sin buscar `claude`.

14 

15<Note>

16 `CLAUDE_CODE_PROCESS_WRAPPER` requiere Claude Code v2.1.208 o posterior. Las versiones anteriores ignoran la variable e inician cada proceso sin envolver.

17</Note>

18 

19<h2 id="what-the-launcher-covers">

20 Qué cubre el lanzador

21</h2>

22 

23Con `CLAUDE_CODE_PROCESS_WRAPPER` establecido, Claude Code inicia cada uno de los siguientes procesos a través de su lanzador:

24 

25* El servicio de fondo que `claude agents` y las sesiones de fondo inician bajo demanda.

26* El host de terminal y la sesión de Claude Code dentro de cada fila de vista de agente, incluidas las sesiones de espera en caliente que el servicio mantiene listas.

27* Las sesiones que el servicio reinicia después de una actualización o un bloqueo.

28* El relanzamiento que Claude Code realiza de sí mismo para terminar de instalar una actualización, incluida la acción de reinicio para actualización de la vista de agente.

29 

30En Windows, la variable se ignora: el contrato del lanzador depende de `exec`, que Windows no admite. Una máquina Windows con la variable establecida ejecuta cada proceso sin envolver y continúa funcionando, y la única señal es una advertencia en el [registro de depuración](/docs/es/troubleshooting). Si su política de lanzador cubre Windows, la variable no la satisface allí: cuente las máquinas Windows como sin envolver cuando planifique el despliegue.

31 

32<h3 id="processes-that-start-outside-the-launcher">

33 Procesos que se inician fuera del lanzador

34</h3>

35 

36Tres procesos nunca se inician a través del lanzador:

37 

38* Un [servicio de fondo instalado](/docs/es/agent-view#the-supervisor-process): `launchd` o `systemd` inicia ese proceso desde su archivo de unidad. `/status` y `claude daemon status` advierten cuando esto se aplica, y las sesiones que el servicio genera aún se inician a través del lanzador una vez que el servicio se reinicia con la variable en su configuración.

39* Una sesión que usted inicia usted mismo en una terminal, que se ejecuta como la invocó. Para cubrir estas sesiones, coloque un script llamado `claude` en un directorio anterior en `PATH` que ejecute su lanzador con el binario real; no reemplace el enlace simbólico administrado. Los auto-generados no consultan `PATH`, por lo que los dos lanzadores nunca se apilan.

40* El primer proceso de un enlace profundo `claude-cli://`, que el controlador de protocolo del sistema operativo inicia directamente. Todo lo que esa sesión inicia en el fondo después se ejecuta a través del lanzador. Para cerrar completamente este camino, [evite el registro del controlador](/docs/es/deep-links#registration-and-supported-platforms) con la configuración `disableDeepLinkRegistration`.

41 

42<h3 id="helper-process-names-in-process-monitors">

43 Nombres de procesos auxiliares en monitores de procesos

44</h3>

45 

46Con un lanzador configurado, `ps` y Activity Monitor muestran el nombre binario versionado para los procesos auxiliares de fondo en lugar de las etiquetas `claude bg-pty-host` y `claude bg-spare` de Claude Code, porque el `exec` del lanzador reconstruye la lista de argumentos. El cambio de nombre es un efecto secundario, no un ocultamiento: los procesos son de otra manera sin cambios, y Claude Code identifica sus propios procesos por ruta binaria, nunca por nombre de visualización.

47 

48<h2 id="set-up-the-launcher">

49 Configurar el lanzador

50</h2>

51 

52<Steps>

53 <Step title="Escribir el script del lanzador">

54 Cree un script ejecutable en una ruta absoluta, como `/opt/corp/launcher`. Claude Code lo ejecuta con el comando completo de Claude Code como sus argumentos, y el script debe terminar llamando a `exec "$@"` para que se reemplace a sí mismo con Claude Code:

55 

56 ```bash theme={null}

57 #!/bin/sh

58 # La configuración de su organización: ingrese a la zona de pruebas, aplique

59 # controles de red o inyecte credenciales.

60 exec "$@"

61 ```

62 

63 Hágalo ejecutable con `chmod +x`. La porción de configuración es lo que su lanzador debe hacer antes de que Claude Code se ejecute; [el contrato del lanzador](#the-launcher-contract) a continuación enumera las reglas que el script debe seguir.

64 

65 <Note>

66 Si anteriormente reemplazó el enlace simbólico `~/.local/bin/claude` con su lanzador, restaure el enlace simbólico original en el mismo cambio. Un enlace simbólico reemplazado hace que la primera sesión envuelta inicie el servicio de fondo a través de ambos lanzadores a la vez, y coloca la instalación en un estado administrado externamente: `/doctor` lo reporta, la actualización automática deja el archivo en su lugar, y la limpieza de versiones antiguas permanece deshabilitada hasta que el instalador administre esa ruta nuevamente.

67 </Note>

68 </Step>

69 

70 <Step title="Establecer CLAUDE_CODE_PROCESS_WRAPPER en configuración">

71 Establezca la variable en el bloque `env` de un archivo de configuración para que el servicio de fondo desacoplado la herede. Una `export` de shell no es suficiente: el servicio de fondo se inicia bajo demanda, sobrevive a su shell y nunca vuelve a leer perfiles de shell.

72 

73 Para una máquina, agréguelo a `~/.claude/settings.json`. Para implementarlo en cada máquina de su organización, coloque el mismo bloque en [configuración administrada](/docs/es/permissions#managed-settings):

74 

75 ```json theme={null}

76 {

77 "env": {

78 "CLAUDE_CODE_PROCESS_WRAPPER": "/opt/corp/launcher"

79 }

80 }

81 ```

82 

83 Cuando más de una fuente establece la variable, el valor de configuración administrada anula tanto `~/.claude/settings.json` como un valor exportado en el shell, por lo que los usuarios no pueden apuntar auto-generados a un lanzador diferente.

84 

85 La configuración de proyecto y local no puede establecer esta variable. Un archivo confirmado en un repositorio no debe poder poner un binario frente a cada proceso de Claude Code en la máquina, por lo que `CLAUDE_CODE_PROCESS_WRAPPER` en `.claude/settings.json` o `.claude/settings.local.json` se ignora, con una advertencia en el [registro de depuración](/docs/es/troubleshooting).

86 </Step>

87 

88 <Step title="Reiniciar el servicio de fondo y sus sesiones">

89 Un servicio de fondo en ejecución y cualquier sesión `claude` abierta leen la variable una vez al inicio, por lo que continúan lanzando procesos sin envolver hasta que se reinician. Ejecute `claude daemon stop --any` para detener el servicio bajo demanda; el siguiente comando que lo necesite, como `claude agents`, inicia uno envuelto. Un [servicio instalado](/docs/es/agent-view#the-supervisor-process) toma `claude daemon stop` sin `--any`. Luego reinicie sus sesiones `claude` abiertas.

90 

91 En máquinas que no puede reiniciar manualmente, la primera sesión iniciada después del empuje de configuración retira automáticamente un servicio bajo demanda sin envolver restante. Una máquina donde no se inicia ninguna sesión nueva mantiene su servicio sin envolver hasta que lo haga, y un servicio instalado siempre necesita el reinicio en este paso.

92 </Step>

93 

94 <Step title="Verificar">

95 Ejecute `/status` en una sesión: la entrada Self-exec muestra el comando de lanzamiento resuelto y advierte cuando el servicio de fondo en ejecución no coincide con él. `claude daemon status` imprime la misma información desde el shell, incluido después de que desestablezca la variable, cuando `/status` ya no muestra la entrada.

96 </Step>

97</Steps>

98 

99<h2 id="the-launcher-contract">

100 El contrato del lanzador

101</h2>

102 

103Cuando el lanzador no puede ejecutarse, Claude Code se niega a iniciar el proceso en lugar de iniciarlo sin envolver. En Windows, [la variable se ignora](#what-the-launcher-covers) y los procesos se inician sin envolver. Claude Code mantiene el script a estas reglas:

104 

105* **Terminar con `exec "$@"`**. Un lanzador que bifurca un hijo y sale deja un proceso de Claude Code huérfano que el servicio de fondo no puede rastrear. La vista de agente marca tal sesión como fallida con un mensaje que nombra el lanzador, y el servicio recoge lo que el lanzador dejó atrás.

106* **No reordene, absorba o anteponga argumentos.** El primer argumento es el binario de Claude Code y todo después de él es su argv.

107* **Pase cada variable de entorno heredada a través de `exec`.** Agregar variables, como credenciales inyectadas, está bien; descartar las heredadas no.

108 * Los tokens de autenticación por sesión, la selección de modelo y proveedor, y `CLAUDE_CODE_PROCESS_WRAPPER` en sí viajan en el entorno heredado, por lo que un lanzador que lo reconstruye desde una lista de permitidos rompe las sesiones que inicia, y `/status` reporta una falta de coincidencia del lanzador.

109 * Si el lanzador debe entrar en un espacio de nombres o zona de pruebas que reinicia el entorno, vuelva a exportar el entorno heredado dentro de él textualmente.

110* **Alcance `exec` dentro de aproximadamente tres segundos cada vez que se ejecute el lanzador.** Un envío de fondo frío ejecuta el lanzador dos veces en serie antes del primer byte de salida, así que haga trabajo lento como un intercambio de inicio de sesión único de manera perezosa o desde un caché.

111 * Un lanzador que se ejecuta mucho más allá del presupuesto se trata como un inicio estancado y se reinicia.

112* **Tolere ser invocado desde dentro de sí mismo.** Claude Code aplica el lanzador a cada auto-generado anidado, por lo que un lanzador que adquiere un recurso exclusivo debe detectar que ya lo posee.

113* **No escriba en la terminal antes de que Claude Code se inicie.** Cualquier cosa impresa antes del `exec` se reporta como la causa del bloqueo si la sesión muere antes de inicializarse.

114 

115<h3 id="format-of-the-claude_code_process_wrapper-value">

116 Formato del valor `CLAUDE_CODE_PROCESS_WRAPPER`

117</h3>

118 

119Para la mayoría de los lanzadores, el valor es solo la ruta absoluta del script, como `/opt/corp/launcher`.

120 

121Para pasar argumentos de su lanzador, escríbalos después de la ruta. Claude Code analiza el valor como una lista de argumentos, no como un comando de shell:

122 

123* El espacio en blanco separa tokens, y las comillas dobles agrupan un token que contiene espacios.

124* Un valor que comienza con `[` se lee como una matriz de cadenas JSON, como `["/opt/corp/launcher", "--profile", "cc"]`.

125* La sintaxis de shell no funciona: no hay expansión de variables ni globbing, y un operador sin comillas como `;`, `|`, `&`, o `$(` se rechaza como un error de configuración en lugar de reinterpretarse.

126 

127Cuando el valor no se puede usar, Claude Code se niega a iniciar el proceso afectado y [reporta la razón](/docs/es/errors#claude_code_process_wrapper-launcher-errors).

128 

129<h2 id="relationship-to-claude_code_shell_prefix">

130 Relación con `CLAUDE_CODE_SHELL_PREFIX`

131</h2>

132 

133`CLAUDE_CODE_PROCESS_WRAPPER` envuelve los propios procesos de Claude Code y pasa el comando como tokens argv separados para que el lanzador `exec`. [`CLAUDE_CODE_SHELL_PREFIX`](/docs/es/env-vars) envuelve los comandos de shell que Claude Code ejecuta en su nombre, como llamadas de herramienta Bash, hooks, y los comandos que inician servidores MCP de stdio, y pasa cada uno como una única cadena entrecomillada de shell en `$1` para que el contenedor vuelva a evaluar. Un lanzador escrito para uno no funciona como el otro.

134 

135<h2 id="related-resources">

136 Recursos relacionados

137</h2>

138 

139* [Vista de agente](/docs/es/agent-view): las sesiones de fondo y el proceso supervisor que cubre el lanzador

140* [Variables de entorno](/docs/es/env-vars): la entrada de referencia `CLAUDE_CODE_PROCESS_WRAPPER`

141* [Configuración administrada](/docs/es/permissions#managed-settings): entregar el bloque `env` en toda una flota

142* [Referencia de errores del lanzador](/docs/es/errors#claude_code_process_wrapper-launcher-errors): los mensajes de rechazo y cómo recuperarse

devcontainer.md +25 −25

Details

12 12 

13<Warning>13<Warning>

14 Aunque el contenedor de desarrollo proporciona protecciones sustanciales, ningún sistema es completamente inmune a todos los ataques.14 Aunque el contenedor de desarrollo proporciona protecciones sustanciales, ningún sistema es completamente inmune a todos los ataques.

15 Cuando se ejecuta con `--dangerously-skip-permissions`, los contenedores de desarrollo no previenen que un proyecto malicioso exfiltre cualquier cosa accesible dentro del contenedor, incluyendo las credenciales de Claude Code almacenadas en [`~/.claude`](/es/claude-directory).15 Cuando se ejecuta con `--dangerously-skip-permissions`, los contenedores de desarrollo no previenen que un proyecto malicioso exfiltre cualquier cosa accesible dentro del contenedor, incluyendo las credenciales de Claude Code almacenadas en [`~/.claude`](/docs/es/claude-directory).

16 Solo usa contenedores de desarrollo cuando desarrolles con repositorios de confianza, y monitorea las actividades de Claude.16 Solo usa contenedores de desarrollo cuando desarrolles con repositorios de confianza, y monitorea las actividades de Claude.

17 Evita montar secretos del host como `~/.ssh` o archivos de credenciales en la nube en el contenedor; prefiere tokens con alcance de repositorio o de corta duración.17 Evita montar secretos del host como `~/.ssh` o archivos de credenciales en la nube en el contenedor; prefiere tokens con alcance de repositorio o de corta duración.

18</Warning>18</Warning>


20<Accordion title="Cómo funcionan los contenedores de desarrollo con tu editor">20<Accordion title="Cómo funcionan los contenedores de desarrollo con tu editor">

21 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagrama que muestra un editor en el host conectándose a un contenedor de desarrollo Docker. Claude Code, la terminal y las herramientas de compilación se ejecutan dentro del contenedor. El repositorio del host está montado en bind en el contenedor como el espacio de trabajo." width="640" height="300" data-path="images/devcontainer-architecture.svg" />21 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagrama que muestra un editor en el host conectándose a un contenedor de desarrollo Docker. Claude Code, la terminal y las herramientas de compilación se ejecutan dentro del contenedor. El repositorio del host está montado en bind en el contenedor como el espacio de trabajo." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

22 22 

23 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagrama que muestra un editor en el host conectándose a un contenedor de desarrollo Docker. Claude Code, la terminal y las herramientas de compilación se ejecutan dentro del contenedor. El repositorio del host está montado en bind en el contenedor como el espacio de trabajo." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />23 <img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=a0a340b1f2afc6a590696102c8acaaca" className="hidden dark:block" alt="Diagrama que muestra un editor en el host conectándose a un contenedor de desarrollo Docker. Claude Code, la terminal y las herramientas de compilación se ejecutan dentro del contenedor. El repositorio del host está montado en bind en el contenedor como el espacio de trabajo." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

24 24 

25 Un contenedor de desarrollo se ejecuta como un contenedor Docker, ya sea en tu máquina o en un host en la nube como GitHub Codespaces. Un editor que admita la especificación Dev Containers, como VS Code, GitHub Codespaces, un IDE de JetBrains o Cursor, se conecta a ese contenedor: navegas y editas archivos en el editor como de costumbre, pero la terminal integrada, los servidores de lenguaje y las herramientas de compilación se ejecutan dentro del contenedor en lugar de en tu host. Los editores sin soporte para contenedores de desarrollo, como Vim simple, no son parte de este flujo de trabajo.25 Un contenedor de desarrollo se ejecuta como un contenedor Docker, ya sea en tu máquina o en un host en la nube como GitHub Codespaces. Un editor que admita la especificación Dev Containers, como VS Code, GitHub Codespaces, un IDE de JetBrains o Cursor, se conecta a ese contenedor: navegas y editas archivos en el editor como de costumbre, pero la terminal integrada, los servidores de lenguaje y las herramientas de compilación se ejecutan dentro del contenedor en lugar de en tu host. Los editores sin soporte para contenedores de desarrollo, como Vim simple, no son parte de este flujo de trabajo.

26 26 

27 Claude Code se ejecuta dentro del contenedor, por lo que ve los mismos archivos, dependencias y herramientas que el resto de la cadena de herramientas de tu proyecto. En VS Code puedes usar el [panel de extensión de Claude Code](/es/vs-code) o ejecutar `claude` en la terminal integrada; ambos se ejecutan dentro del contenedor y comparten la misma configuración de `~/.claude`.27 Claude Code se ejecuta dentro del contenedor, por lo que ve los mismos archivos, dependencias y herramientas que el resto de la cadena de herramientas de tu proyecto. En VS Code puedes usar el [panel de extensión de Claude Code](/docs/es/vs-code) o ejecutar `claude` en la terminal integrada; ambos se ejecutan dentro del contenedor y comparten la misma configuración de `~/.claude`.

28</Accordion>28</Accordion>

29 29 

30<h2 id="add-claude-code-to-your-dev-container">30<h2 id="add-claude-code-to-your-dev-container">


75Lo que ves en la solicitud de autenticación depende de tu proveedor:75Lo que ves en la solicitud de autenticación depende de tu proveedor:

76 76 

77* **Anthropic**: inicia sesión a través de un navegador con tu cuenta de Claude o Anthropic Console77* **Anthropic**: inicia sesión a través de un navegador con tu cuenta de Claude o Anthropic Console

78* **[Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry](/es/third-party-integrations)**: Claude Code usa tus credenciales del proveedor de nube, sin solicitud de navegador78* **[Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry](/docs/es/third-party-integrations)**: Claude Code usa tus credenciales del proveedor de nube, sin solicitud de navegador

79 79 

80Para proveedores de nube, pasa credenciales al contenedor como variables de entorno a través de `containerEnv`, un secreto de Codespaces, o la identidad de carga de trabajo de tu nube en lugar de montar archivos de credenciales desde el host. Consulta [Amazon Bedrock](/es/amazon-bedrock), [Google Cloud's Agent Platform](/es/google-vertex-ai) o [Microsoft Foundry](/es/microsoft-foundry) para la cadena de credenciales que Claude Code lee.80Para proveedores de nube, pasa credenciales al contenedor como variables de entorno a través de `containerEnv`, un secreto de Codespaces, o la identidad de carga de trabajo de tu nube en lugar de montar archivos de credenciales desde el host. Consulta [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry) para la cadena de credenciales que Claude Code lee.

81 81 

82Consulta [Elige tu proveedor de API](/es/admin-setup#choose-your-api-provider) para decidir qué camino se ajusta a tu organización.82Consulta [Elige tu proveedor de API](/docs/es/admin-setup#choose-your-api-provider) para decidir qué camino se ajusta a tu organización.

83 83 

84<Note>84<Note>

85 Si el inicio de sesión del navegador se completa pero la devolución de llamada nunca llega al contenedor, copia el código mostrado en el navegador y pégalo en la solicitud `Paste code here if prompted` en la terminal. Esto puede suceder cuando el reenvío de puertos del editor no enruta la devolución de llamada de localhost.85 Si el inicio de sesión del navegador se completa pero la devolución de llamada nunca llega al contenedor, copia el código mostrado en el navegador y pégalo en la solicitud `Paste code here if prompted` en la terminal. Esto puede suceder cuando el reenvío de puertos del editor no enruta la devolución de llamada de localhost.


89 Persistir autenticación y configuración entre reconstrucciones89 Persistir autenticación y configuración entre reconstrucciones

90</h2>90</h2>

91 91 

92De forma predeterminada, el directorio de inicio del contenedor se descarta en la reconstrucción, por lo que los ingenieros deben iniciar sesión nuevamente cada vez. Claude Code almacena su token de autenticación, configuración de usuario e historial de sesión en [`~/.claude`](/es/claude-directory). Monta un volumen nombrado en esa ruta para mantener este estado entre reconstrucciones.92De forma predeterminada, el directorio de inicio del contenedor se descarta en la reconstrucción, por lo que los ingenieros deben iniciar sesión nuevamente cada vez. Claude Code almacena su token de autenticación, configuración de usuario e historial de sesión en [`~/.claude`](/docs/es/claude-directory). Monta un volumen nombrado en esa ruta para mantener este estado entre reconstrucciones.

93 93 

94El siguiente ejemplo monta un volumen en el directorio de inicio del usuario `node`:94El siguiente ejemplo monta un volumen en el directorio de inicio del usuario `node`:

95 95 


99]99]

100```100```

101 101 

102Reemplaza `/home/node` con el directorio de inicio del `remoteUser` de tu contenedor. Si montas el volumen en algún lugar que no sea `~/.claude`, establece [`CLAUDE_CONFIG_DIR`](/es/env-vars) en la ruta de montaje para que Claude Code lea y escriba allí.102Reemplaza `/home/node` con el directorio de inicio del `remoteUser` de tu contenedor. Si montas el volumen en algún lugar que no sea `~/.claude`, establece [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) en la ruta de montaje para que Claude Code lea y escriba allí.

103 103 

104Para aislar el estado por proyecto en lugar de compartir un volumen en todos los repositorios, incluye la variable `${devcontainerId}` en el nombre de la fuente. La [configuración de referencia](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) usa `source=claude-code-config-${devcontainerId}` para este propósito.104Para aislar el estado por proyecto en lugar de compartir un volumen en todos los repositorios, incluye la variable `${devcontainerId}` en el nombre de la fuente. La [configuración de referencia](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) usa `source=claude-code-config-${devcontainerId}` para este propósito.

105 105 

106En GitHub Codespaces, `~/.claude` persiste entre detener e iniciar un codespace, pero aún se borra cuando reconstruyes el contenedor, por lo que el montaje de volumen anterior también se aplica allí. Para llevar la autenticación entre codespaces, almacena `ANTHROPIC_API_KEY` o un `CLAUDE_CODE_OAUTH_TOKEN` de [`claude setup-token`](/es/authentication#generate-a-long-lived-token) como un [secreto de Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces hace que los secretos estén disponibles como variables de entorno dentro del contenedor automáticamente.106En GitHub Codespaces, `~/.claude` persiste entre detener e iniciar un codespace, pero aún se borra cuando reconstruyes el contenedor, por lo que el montaje de volumen anterior también se aplica allí. Para llevar la autenticación entre codespaces, almacena `ANTHROPIC_API_KEY` o un `CLAUDE_CODE_OAUTH_TOKEN` de [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token) como un [secreto de Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces hace que los secretos estén disponibles como variables de entorno dentro del contenedor automáticamente.

107 107 

108<h2 id="enforce-organization-policy">108<h2 id="enforce-organization-policy">

109 Aplicar política organizacional109 Aplicar política organizacional


111 111 

112Un contenedor de desarrollo es un lugar conveniente para aplicar la política organizacional, porque la misma imagen y configuración se ejecutan en la máquina de cada ingeniero.112Un contenedor de desarrollo es un lugar conveniente para aplicar la política organizacional, porque la misma imagen y configuración se ejecutan en la máquina de cada ingeniero.

113 113 

114Claude Code lee `/etc/claude-code/managed-settings.json` en Linux y lo aplica con la máxima precedencia en la [jerarquía de configuración](/es/settings#how-scopes-interact), por lo que los valores allí anulan cualquier cosa que un ingeniero establezca en `~/.claude` o en el directorio `.claude/` del proyecto. Copia el archivo en su lugar desde tu Dockerfile:114Claude Code lee `/etc/claude-code/managed-settings.json` en Linux y lo aplica con la máxima precedencia en la [jerarquía de configuración](/docs/es/settings#how-scopes-interact), por lo que los valores allí anulan cualquier cosa que un ingeniero establezca en `~/.claude` o en el directorio `.claude/` del proyecto. Copia el archivo en su lugar desde tu Dockerfile:

115 115 

116```dockerfile Dockerfile theme={null}116```dockerfile Dockerfile theme={null}

117RUN mkdir -p /etc/claude-code117RUN mkdir -p /etc/claude-code

118COPY managed-settings.json /etc/claude-code/managed-settings.json118COPY managed-settings.json /etc/claude-code/managed-settings.json

119```119```

120 120 

121Debido a que el Dockerfile vive en el repositorio, cualquiera con acceso de escritura puede cambiar o eliminar este paso. Para la política que los ingenieros no pueden eludir editando archivos del repositorio, entrega la configuración administrada a través de [configuración administrada por servidor](/es/server-managed-settings) o tu MDM en su lugar. Consulta [archivos de configuración administrada](/es/settings#settings-files) para las claves disponibles y las otras rutas de entrega.121Debido a que el Dockerfile vive en el repositorio, cualquiera con acceso de escritura puede cambiar o eliminar este paso. Para la política que los ingenieros no pueden eludir editando archivos del repositorio, entrega la configuración administrada a través de [configuración administrada por servidor](/docs/es/server-managed-settings) o tu MDM en su lugar. Consulta [archivos de configuración administrada](/docs/es/settings#settings-files) para las claves disponibles y las otras rutas de entrega.

122 122 

123Para establecer [variables de entorno](/es/env-vars) que se apliquen a cada sesión de Claude Code en el contenedor, agrégalas a `containerEnv` en tu `devcontainer.json`. El siguiente ejemplo rechaza la telemetría y el informe de errores e impide que Claude Code se actualice automáticamente después de la instalación:123Para establecer [variables de entorno](/docs/es/env-vars) que se apliquen a cada sesión de Claude Code en el contenedor, agrégalas a `containerEnv` en tu `devcontainer.json`. El siguiente ejemplo rechaza la telemetría y el informe de errores e impide que Claude Code se actualice automáticamente después de la instalación:

124 124 

125```json devcontainer.json theme={null}125```json devcontainer.json theme={null}

126"containerEnv": {126"containerEnv": {


131 131 

132La Característica Dev Container siempre instala la última versión de Claude Code. Para fijar una versión específica de Claude Code para compilaciones reproducibles, instálala desde tu Dockerfile con `npm install -g @anthropic-ai/claude-code@X.Y.Z` en lugar de usar la característica, y establece `DISABLE_AUTOUPDATER` como se muestra arriba.132La Característica Dev Container siempre instala la última versión de Claude Code. Para fijar una versión específica de Claude Code para compilaciones reproducibles, instálala desde tu Dockerfile con `npm install -g @anthropic-ai/claude-code@X.Y.Z` en lugar de usar la característica, y establece `DISABLE_AUTOUPDATER` como se muestra arriba.

133 133 

134Para la lista completa de controles de política incluyendo reglas de permiso, restricciones de herramientas y listas blancas de servidores MCP, consulta [Configurar Claude Code para tu organización](/es/admin-setup).134Para la lista completa de controles de política incluyendo reglas de permiso, restricciones de herramientas y listas blancas de servidores MCP, consulta [Configurar Claude Code para tu organización](/docs/es/admin-setup).

135 135 

136Para hacer que [servidores MCP](/es/mcp) estén disponibles dentro del contenedor, defínelos en [alcance de proyecto](/es/mcp#mcp-installation-scopes) en un archivo `.mcp.json` en la raíz del repositorio para que se verifiquen junto con tu configuración de contenedor de desarrollo. Instala cualquier binario del que dependan los servidores stdio locales en tu Dockerfile, y agrega dominios de servidor remoto a tu lista blanca de red.136Para hacer que [servidores MCP](/docs/es/mcp) estén disponibles dentro del contenedor, defínelos en [alcance de proyecto](/docs/es/mcp#mcp-installation-scopes) en un archivo `.mcp.json` en la raíz del repositorio para que se verifiquen junto con tu configuración de contenedor de desarrollo. Instala cualquier binario del que dependan los servidores stdio locales en tu Dockerfile, y agrega dominios de servidor remoto a tu lista blanca de red.

137 137 

138<h2 id="restrict-network-egress">138<h2 id="restrict-network-egress">

139 Restringir salida de red139 Restringir salida de red

140</h2>140</h2>

141 141 

142Puedes limitar el tráfico saliente del contenedor solo a los dominios que Claude Code necesita. Consulta [Requisitos de acceso de red](/es/network-config#network-access-requirements) para los dominios de inferencia y autenticación, y [Servicios de telemetría](/es/data-usage#telemetry-services) para las conexiones opcionales de telemetría e informe de errores y cómo deshabilitarlas.142Puedes limitar el tráfico saliente del contenedor solo a los dominios que Claude Code necesita. Consulta [Requisitos de acceso de red](/docs/es/network-config#network-access-requirements) para los dominios de inferencia y autenticación, y [Servicios de telemetría](/docs/es/data-usage#telemetry-services) para las conexiones opcionales de telemetría e informe de errores y cómo deshabilitarlas.

143 143 

144El contenedor de referencia incluye un script [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) que bloquea todo el tráfico saliente excepto los dominios que Claude Code y tus herramientas de desarrollo necesitan. Ejecutar un firewall dentro de un contenedor requiere permisos adicionales, por lo que la referencia agrega las capacidades `NET_ADMIN` y `NET_RAW` a través de `runArgs`. El script de firewall y estas capacidades no son requeridas para Claude Code en sí: puedes dejarlas fuera y confiar en tus propios controles de red en su lugar.144El contenedor de referencia incluye un script [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) que bloquea todo el tráfico saliente excepto los dominios que Claude Code y tus herramientas de desarrollo necesitan. Ejecutar un firewall dentro de un contenedor requiere permisos adicionales, por lo que la referencia agrega las capacidades `NET_ADMIN` y `NET_RAW` a través de `runArgs`. El script de firewall y estas capacidades no son requeridas para Claude Code en sí: puedes dejarlas fuera y confiar en tus propios controles de red en su lugar.

145 145 


151 151 

152Omitir solicitudes de permiso elimina tu oportunidad de revisar llamadas de herramientas antes de que se ejecuten. Claude aún puede modificar cualquier archivo en el espacio de trabajo montado en bind, que aparece directamente en tu host, y alcanzar cualquier cosa que la política de red del contenedor permita. Empareja esta bandera con las [restricciones de salida de red](#restrict-network-egress) anteriores para limitar lo que una sesión omitida puede alcanzar.152Omitir solicitudes de permiso elimina tu oportunidad de revisar llamadas de herramientas antes de que se ejecuten. Claude aún puede modificar cualquier archivo en el espacio de trabajo montado en bind, que aparece directamente en tu host, y alcanzar cualquier cosa que la política de red del contenedor permita. Empareja esta bandera con las [restricciones de salida de red](#restrict-network-egress) anteriores para limitar lo que una sesión omitida puede alcanzar.

153 153 

154Si deseas menos solicitudes sin deshabilitar las comprobaciones de seguridad, considera [modo automático](/es/permission-modes#eliminate-prompts-with-auto-mode) en su lugar, que tiene un clasificador que revisa las acciones antes de que se ejecuten. Para prevenir que los ingenieros usen `--dangerously-skip-permissions` en absoluto, establece `permissions.disableBypassPermissionsMode` en `"disable"` en [configuración administrada](/es/settings#permission-settings).154Si deseas menos solicitudes sin deshabilitar las comprobaciones de seguridad, considera [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en su lugar, que tiene un clasificador que revisa las acciones antes de que se ejecuten. Para prevenir que los ingenieros usen `--dangerously-skip-permissions` en absoluto, establece `permissions.disableBypassPermissionsMode` en `"disable"` en [configuración administrada](/docs/es/settings#permission-settings).

155 155 

156<h2 id="try-the-reference-container">156<h2 id="try-the-reference-container">

157 Prueba el contenedor de referencia157 Prueba el contenedor de referencia


193 193 

194Una vez que Claude Code se ejecuta en tu contenedor de desarrollo, las páginas a continuación cubren el resto de un despliegue organizacional: elegir una ruta de autenticación, entregar política administrada fuera del repositorio, monitorear el uso y entender qué almacena y envía Claude Code.194Una vez que Claude Code se ejecuta en tu contenedor de desarrollo, las páginas a continuación cubren el resto de un despliegue organizacional: elegir una ruta de autenticación, entregar política administrada fuera del repositorio, monitorear el uso y entender qué almacena y envía Claude Code.

195 195 

196* [Configurar Claude Code para tu organización](/es/admin-setup): elige un proveedor de autenticación, decide cómo la política llega a los dispositivos y planifica el despliegue196* [Configurar Claude Code para tu organización](/docs/es/admin-setup): elige un proveedor de autenticación, decide cómo la política llega a los dispositivos y planifica el despliegue

197* [Configuración administrada por servidor](/es/server-managed-settings): entrega política administrada desde la consola de administrador de Claude.ai para que los ingenieros no puedan eludirla editando archivos del repositorio197* [Configuración administrada por servidor](/docs/es/server-managed-settings): entrega política administrada desde la consola de administrador de Claude.ai para que los ingenieros no puedan eludirla editando archivos del repositorio

198* [Monitorear el uso y auditar la actividad](/es/monitoring-usage): exporta métricas de OpenTelemetry y revisa lo que tu equipo está ejecutando198* [Monitorear el uso y auditar la actividad](/docs/es/monitoring-usage): exporta métricas de OpenTelemetry y revisa lo que tu equipo está ejecutando

199* [Requisitos de acceso de red](/es/network-config#network-access-requirements): la lista completa de dominios para proxies y firewalls199* [Requisitos de acceso de red](/docs/es/network-config#network-access-requirements): la lista completa de dominios para proxies y firewalls

200* [Servicios de telemetría y opción de exclusión](/es/data-usage#telemetry-services): qué envía Claude Code de forma predeterminada y las variables de entorno que lo deshabilitan200* [Servicios de telemetría y opción de exclusión](/docs/es/data-usage#telemetry-services): qué envía Claude Code de forma predeterminada y las variables de entorno que lo deshabilitan

201* [Explorar el directorio `.claude`](/es/claude-directory): qué contiene el montaje de volumen, incluyendo credenciales, configuración e historial de sesión201* [Explorar el directorio `.claude`](/docs/es/claude-directory): qué contiene el montaje de volumen, incluyendo credenciales, configuración e historial de sesión

202* [Entornos sandbox](/es/sandbox-environments): compara contenedores de desarrollo con el sandbox Bash integrado, contenedores personalizados y máquinas virtuales202* [Entornos sandbox](/docs/es/sandbox-environments): compara contenedores de desarrollo con el sandbox Bash integrado, contenedores personalizados y máquinas virtuales

203* [Modelo de seguridad](/es/security): cómo encajan el sistema de permisos de Claude Code, el sandboxing y las protecciones contra inyección de solicitudes203* [Modelo de seguridad](/docs/es/security): cómo encajan el sistema de permisos de Claude Code, el sandboxing y las protecciones contra inyección de solicitudes

204* [Modos de permiso](/es/permission-modes): el rango completo desde modo de plan hasta modo automático hasta omisión, y cuándo usar cada uno204* [Modos de permiso](/docs/es/permission-modes): el rango completo desde modo de plan hasta modo automático hasta omisión, y cuándo usar cada uno

llm-gateway.md +64 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Otras puertas de enlace LLM

6 

7> Enrute Claude Code a través de una puerta de enlace LLM que su organización ya ejecuta. Cubre la conexión de Claude Code a una puerta de enlace, el despliegue de una para su organización, y qué envía Claude Code a una puerta de enlace.

8 

9Esta sección cubre el uso de un producto de puerta de enlace que su organización ya ejecuta, en lugar de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway). Para saber qué es una puerta de enlace, cómo se sitúa entre Claude Code y su proveedor, y cómo elegir entre puerta de enlace de aplicaciones Claude y otro producto, consulte la [descripción general de puertas de enlace](/docs/es/gateways).

10 

11<Note>

12 * Si es un desarrollador que se conecta a una puerta de enlace existente: [conecte Claude Code a su puerta de enlace](/docs/es/llm-gateway-connect)

13 * Si es un administrador que despliega una puerta de enlace para su organización: [despliegue y distribuya una puerta de enlace](/docs/es/llm-gateway-rollout)

14 * Si está configurando un producto de puerta de enlace: la [referencia del protocolo de puerta de enlace](/docs/es/llm-gateway-protocol)

15</Note>

16 

17Cualquier puerta de enlace que exponga un [formato de API compatible](/docs/es/llm-gateway-protocol#api-formats) funciona. Anthropic no respalda, mantiene ni audita productos de puerta de enlace de terceros, y no admite enrutar Claude Code a modelos que no sean de Claude a través de ninguna puerta de enlace. Despliegue la puerta de enlace siguiendo su propia documentación, luego complete el lado de Claude Code con los [pasos de despliegue a continuación](#roll-out-a-gateway).

18 

19<h2 id="what-a-gateway-provides">

20 Qué proporciona una puerta de enlace

21</h2>

22 

23Una puerta de enlace le da a su organización un lugar para gestionar:

24 

25* **Credenciales**: la clave del proveedor permanece del lado del servidor; los desarrolladores tienen credenciales de puerta de enlace en su lugar

26* **Seguimiento de uso**: atribuya el uso por desarrollador o equipo, independientemente de qué proveedor sirva la solicitud

27* **Controles de costos**: aplique presupuestos y límites de velocidad en un solo lugar

28* **Registro de auditoría**: registre cada solicitud de modelo para cumplimiento normativo

29* **Cambio de proveedor**: cambie el proveedor en la configuración de la puerta de enlace, sin tocar máquinas de desarrolladores

30 

31Todos estos excepto el cambio de proveedor se aplican si el upstream es la API de Anthropic o un [proveedor en la nube](/docs/es/third-party-integrations). El cambio de proveedor sin reconfigurar máquinas de desarrolladores también depende de que la puerta de enlace exponga un único [punto final en formato Anthropic](/docs/es/llm-gateway-protocol#api-formats) independientemente del upstream; una puerta de enlace que exponga el formato propio de un proveedor vincula la configuración del cliente a ese proveedor.

32 

33El compromiso es que la puerta de enlace se convierte en infraestructura que su organización opera. Claude Code añade capacidades con cada lanzamiento, y una puerta de enlace que no las reenvía rompe las características correspondientes, por lo que el producto de puerta de enlace necesita mantenerse actualizado a medida que Claude Code evoluciona. La [referencia del protocolo de puerta de enlace](/docs/es/llm-gateway-protocol) cubre qué reenviar.

34 

35<h2 id="roll-out-a-gateway">

36 Desplegar una puerta de enlace

37</h2>

38 

39Cuando esté listo para desplegar una puerta de enlace LLM a su organización, la secuencia es la misma sin importar qué producto de puerta de enlace elija:

40 

411. Despliegue la puerta de enlace y déle su credencial de proveedor, para que pueda autenticar las solicitudes que reenvía.

422. Emita a cada desarrollador una credencial de puerta de enlace, para que el uso se atribuya al desarrollador y la desvinculación revoque una credencial.

433. Distribuya la configuración a través de un [archivo de configuración administrada](/docs/es/settings#settings-files) y su herramienta de secretos, para que cada máquina reciba la URL base y una credencial. Cuando ambas se distribuyen, los desarrolladores no configuran nada. Si no tiene distribución de configuración en su lugar, los desarrolladores siguen la [página de conexión](/docs/es/llm-gateway-connect) para establecer las variables ellos mismos.

444. Haga que cada desarrollador [verifique la configuración en Claude Code](/docs/es/llm-gateway-connect#check-for-an-existing-configuration), para que los problemas de distribución salgan a la superficie antes de que dependan de la puerta de enlace.

45 

46[Despliegue una puerta de enlace LLM para su organización](/docs/es/llm-gateway-rollout) camina cada paso y muestra los archivos de configuración a distribuir en cada uno. La puerta de enlace es una parte de la configuración de la organización; para aplicación de políticas, visibilidad de uso y decisiones de manejo de datos, consulte [Configure Claude Code para su organización](/docs/es/admin-setup).

47 

48<h2 id="subscriptions-and-gateways">

49 Suscripciones y puertas de enlace

50</h2>

51 

52Mientras una [variable de credencial de puerta de enlace](/docs/es/llm-gateway-connect#set-the-credential-variable) o `apiKeyHelper` está activa, la suscripción de claude.ai de un desarrollador no se usa: la credencial reemplaza el inicio de sesión de suscripción para esa sesión, y los límites de uso de la suscripción no se aplican. Ese tráfico se factura por token a quien sea propietario de la credencial que la puerta de enlace reenvía, como la cuenta de Consola de Anthropic de su organización, o su cuenta de Amazon Bedrock, Agent Platform de Google Cloud o Foundry de Microsoft cuando la puerta de enlace enruta allí.

53 

54[`ANTHROPIC_BASE_URL`](/docs/es/llm-gateway-connect#set-the-base-url-and-credential) es la variable que apunta Claude Code a la puerta de enlace. Establecer solo esa variable, sin una credencial de puerta de enlace, no reemplaza la suscripción. Las solicitudes aún se enrutan a través de la puerta de enlace, pero un inicio de sesión de claude.ai guardado permanece como la credencial activa, por lo que sus límites de uso y facturación se aplican. Las puertas de enlace que pasan este tráfico a Anthropic deben reenviar la capacidad OAuth en `anthropic-beta`; consulte la [referencia de encabezados de solicitud](/docs/es/llm-gateway-protocol#request-headers).

55 

56<h2 id="related-pages">

57 Páginas relacionadas

58</h2>

59 

60* [Descripción general de puertas de enlace](/docs/es/gateways): cómo funciona una puerta de enlace y cómo elegir entre puerta de enlace de aplicaciones Claude y otro producto

61* [Puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway): puerta de enlace autohospedada de Anthropic con inicio de sesión SSO y telemetría OTLP

62* [Conecte Claude Code a una puerta de enlace LLM](/docs/es/llm-gateway-connect): establezca la URL base y la credencial en su propia máquina, con configuración por superficie y una tabla de solución de problemas

63* [Despliegue una puerta de enlace LLM para su organización](/docs/es/llm-gateway-rollout): la lista de verificación del administrador para desplegar una puerta de enlace, emitir credenciales de desarrollador y distribuir configuración administrada

64* [Referencia del protocolo de puerta de enlace](/docs/es/llm-gateway-protocol): qué envía Claude Code a una puerta de enlace, para operadores que configuran una, cubriendo puntos finales, encabezados a reenviar y paso a través de características

prompt-caching.md +38 −38

Details

20 20 

21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Cuatro turnos mostrados como barras horizontales crecientes. La solicitud de cada turno contiene todo del turno anterior más el intercambio más reciente añadido al final. En los turnos dos y tres, el prefijo sin cambios se lee del caché y solo se procesa el nuevo intercambio. En el turno cuatro, el prompt del sistema cambió, por lo que el prefijo ya no coincide y toda la solicitud se reprocesa y se escribe." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Cuatro turnos mostrados como barras horizontales crecientes. La solicitud de cada turno contiene todo del turno anterior más el intercambio más reciente añadido al final. En los turnos dos y tres, el prefijo sin cambios se lee del caché y solo se procesa el nuevo intercambio. En el turno cuatro, el prompt del sistema cambió, por lo que el prefijo ya no coincide y toda la solicitud se reprocesa y se escribe." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />

22 22 

23<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=7434a04e08187edd26ec6c3dd332f624" className="hidden dark:block" alt="Cuatro turnos mostrados como barras horizontales crecientes. La solicitud de cada turno contiene todo del turno anterior más el intercambio más reciente añadido al final. En los turnos dos y tres, el prefijo sin cambios se lee del caché y solo se procesa el nuevo intercambio. En el turno cuatro, el prompt del sistema cambió, por lo que el prefijo ya no coincide y toda la solicitud se reprocesa y se escribe." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="Cuatro turnos mostrados como barras horizontales crecientes. La solicitud de cada turno contiene todo del turno anterior más el intercambio más reciente añadido al final. En los turnos dos y tres, el prefijo sin cambios se lee del caché y solo se procesa el nuevo intercambio. En el turno cuatro, el prompt del sistema cambió, por lo que el prefijo ya no coincide y toda la solicitud se reprocesa y se escribe." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />

24 24 

25Para aprovechar al máximo la coincidencia de prefijos, Claude Code ordena cada solicitud para que el contenido que rara vez cambia entre turnos venga primero:25Para aprovechar al máximo la coincidencia de prefijos, Claude Code ordena cada solicitud para que el contenido que rara vez cambia entre turnos venga primero:

26 26 


32 32 

33Un cambio en la capa de conversación deja el prompt del sistema y el contexto del proyecto en caché. Un cambio en el prompt del sistema invalida todo, porque todo el contenido posterior ahora se encuentra detrás de un prefijo diferente. La tercera columna proporciona desencadenantes comunes en lugar de una lista exhaustiva, y las secciones a continuación cubren el conjunto completo, incluido contenido como el estilo de salida que se fija al inicio de la sesión.33Un cambio en la capa de conversación deja el prompt del sistema y el contexto del proyecto en caché. Un cambio en el prompt del sistema invalida todo, porque todo el contenido posterior ahora se encuentra detrás de un prefijo diferente. La tercera columna proporciona desencadenantes comunes en lugar de una lista exhaustiva, y las secciones a continuación cubren el conjunto completo, incluido contenido como el estilo de salida que se fija al inicio de la sesión.

34 34 

35La regla de coincidencia de prefijos explica la mayoría de los comportamientos en esta página. [Plan mode](/es/permission-modes#analyze-before-you-edit-with-plan-mode) y [skill loading](/es/skills), por ejemplo, añaden sus instrucciones como mensajes de conversación, por lo que el prefijo en caché permanece intacto.35La regla de coincidencia de prefijos explica la mayoría de los comportamientos en esta página. [Plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) y [skill loading](/docs/es/skills), por ejemplo, añaden sus instrucciones como mensajes de conversación, por lo que el prefijo en caché permanece intacto.

36 36 

37Dos ajustes no son parte del texto del prompt en absoluto, por lo que no aparecen en la tabla de capas, pero ambos son parte de la clave de caché:37Dos ajustes no son parte del texto del prompt en absoluto, por lo que no aparecen en la tabla de capas, pero ambos son parte de la clave de caché:

38 38 


49 49 

50El almacenamiento en caché ocurre del lado del servidor, en cualquier infraestructura que sirva su modelo. Dónde es eso depende de cómo se autentique:50El almacenamiento en caché ocurre del lado del servidor, en cualquier infraestructura que sirva su modelo. Dónde es eso depende de cómo se autentique:

51 51 

52* **Clave de API, suscripción de Claude, o [Claude Platform on AWS](/es/claude-platform-on-aws)**: el caché vive en la infraestructura de Anthropic, accedido a través de la [Claude API](https://platform.claude.com/docs)52* **Clave de API, suscripción de Claude, o [Claude Platform on AWS](/docs/es/claude-platform-on-aws)**: el caché vive en la infraestructura de Anthropic, accedido a través de la [Claude API](https://platform.claude.com/docs)

53* **Amazon Bedrock o Google Cloud's Agent Platform**: el caché vive en la infraestructura de servicio de su proveedor de nube53* **Amazon Bedrock o Google Cloud's Agent Platform**: el caché vive en la infraestructura de servicio de su proveedor de nube

54* **Microsoft Foundry**: las solicitudes se enrutan a la infraestructura de Anthropic54* **Microsoft Foundry**: las solicitudes se enrutan a la infraestructura de Anthropic

55* **`ANTHROPIC_BASE_URL` personalizado o [LLM gateway](/es/llm-gateway)**: el caché vive donde se reenvíen sus solicitudes, y si el almacenamiento en caché funciona depende de la puerta de enlace55* **`ANTHROPIC_BASE_URL` personalizado o [LLM gateway](/docs/es/llm-gateway)**: el caché vive donde se reenvíen sus solicitudes, y si el almacenamiento en caché funciona depende de la puerta de enlace

56 56 

57Para lo que cada proveedor almacena y procesa, vea [data usage](/es/data-usage). Dondequiera que viva el caché, las entradas expiran después de un período de inactividad, y [Cache lifetime](#cache-lifetime) a continuación cubre el TTL y cómo extenderlo.57Para lo que cada proveedor almacena y procesa, vea [data usage](/docs/es/data-usage). Dondequiera que viva el caché, las entradas expiran después de un período de inactividad, y [Cache lifetime](#cache-lifetime) a continuación cubre el TTL y cómo extenderlo.

58 58 

59<h2 id="actions-that-invalidate-the-cache">59<h2 id="actions-that-invalidate-the-cache">

60 Acciones que invalidan el caché60 Acciones que invalidan el caché


75 Cambiar de modelo75 Cambiar de modelo

76</h3>76</h3>

77 77 

78Cada modelo tiene su propio caché. Cambiar con [`/model`](/es/model-config#setting-your-model) significa que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché, aunque el contenido sea idéntico.78Cada modelo tiene su propio caché. Cambiar con [`/model`](/docs/es/model-config#setting-your-model) significa que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché, aunque el contenido sea idéntico.

79 79 

80La [configuración de modelo `opusplan`](/es/model-config#opusplan-model-setting) se resuelve a Opus durante el modo de plan y Sonnet durante la ejecución, por lo que cada alternancia de modo de plan es un cambio de modelo e inicia un caché nuevo.80La [configuración de modelo `opusplan`](/docs/es/model-config#opusplan-model-setting) se resuelve a Opus durante el modo de plan y Sonnet durante la ejecución, por lo que cada alternancia de modo de plan es un cambio de modelo e inicia un caché nuevo.

81 81 

82El [respaldo automático de modelo](/es/model-config#automatic-model-fallback) en Fable 5 también es un cambio de modelo. Cuando un clasificador de seguridad marca una solicitud, Claude Code la vuelve a ejecutar en el modelo Opus predeterminado y la sesión continúa allí.82El [respaldo automático de modelo](/docs/es/model-config#automatic-model-fallback) en Fable 5 también es un cambio de modelo. Cuando un clasificador de seguridad marca una solicitud, Claude Code la vuelve a ejecutar en el modelo Opus predeterminado y la sesión continúa allí.

83 83 

84<h3 id="changing-effort-level">84<h3 id="changing-effort-level">

85 Cambiar el nivel de esfuerzo85 Cambiar el nivel de esfuerzo

86</h3>86</h3>

87 87 

88El caché se indexa por [nivel de esfuerzo](/es/model-config#adjust-effort-level) así como por modelo, por lo que cambiar con `/effort` significa que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché. Una vez que una conversación ha comenzado, Claude Code muestra un diálogo de confirmación antes de aplicar un cambio de esfuerzo que invalidaría el caché. Un cambio que se resuelve al mismo nivel ya en vigor, como establecer explícitamente el valor predeterminado del modelo, omite el diálogo y mantiene el caché.88El caché se indexa por [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) así como por modelo, por lo que cambiar con `/effort` significa que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché. Una vez que una conversación ha comenzado, Claude Code muestra un diálogo de confirmación antes de aplicar un cambio de esfuerzo que invalidaría el caché. Un cambio que se resuelve al mismo nivel ya en vigor, como establecer explícitamente el valor predeterminado del modelo, omite el diálogo y mantiene el caché.

89 89 

90<h3 id="turning-on-fast-mode">90<h3 id="turning-on-fast-mode">

91 Activar el modo rápido91 Activar el modo rápido

92</h3>92</h3>

93 93 

94Habilitar [modo rápido](/es/fast-mode) añade un encabezado de solicitud que forma parte de la clave de caché, por lo que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché. Esos tokens de entrada sin caché se facturan a [tasas de modo rápido](/es/fast-mode#understand-the-cost-tradeoff), por lo que activarlo al inicio de una sesión cuesta menos que activarlo profundamente en una larga. Habilitar el modo rápido desde un modelo que no es Opus también [cambia su modelo](#switching-models), lo que inicia un caché nuevo por sí solo.94Habilitar [modo rápido](/docs/es/fast-mode) añade un encabezado de solicitud que forma parte de la clave de caché, por lo que la siguiente solicitud lee todo el historial de conversación sin aciertos de caché. Esos tokens de entrada sin caché se facturan a [tasas de modo rápido](/docs/es/fast-mode#understand-the-cost-tradeoff), por lo que activarlo al inicio de una sesión cuesta menos que activarlo profundamente en una larga. Habilitar el modo rápido desde un modelo que no es Opus también [cambia su modelo](#switching-models), lo que inicia un caché nuevo por sí solo.

95 95 

96El costo se aplica una vez por conversación. Después del primer turno de modo rápido, Claude Code sigue enviando el encabezado y varía solo la configuración de velocidad de la solicitud, que no forma parte de la clave de caché. Desactivar el modo rápido, la [reversión automática a velocidad estándar](/es/fast-mode#handle-rate-limits) después de un límite de velocidad, y activarlo nuevamente más tarde mantienen el caché. `/clear` y `/compact` restablecen esto, ya que reconstruyen el caché en esos puntos de todas formas.96El costo se aplica una vez por conversación. Después del primer turno de modo rápido, Claude Code sigue enviando el encabezado y varía solo la configuración de velocidad de la solicitud, que no forma parte de la clave de caché. Desactivar el modo rápido, la [reversión automática a velocidad estándar](/docs/es/fast-mode#handle-rate-limits) después de un límite de velocidad, y activarlo nuevamente más tarde mantienen el caché. `/clear` y `/compact` restablecen esto, ya que reconstruyen el caché en esos puntos de todas formas.

97 97 

98<h3 id="connecting-or-disconnecting-an-mcp-server">98<h3 id="connecting-or-disconnecting-an-mcp-server">

99 Conectar o desconectar un servidor MCP99 Conectar o desconectar un servidor MCP

100</h3>100</h3>

101 101 

102Las definiciones de herramientas se encuentran en la capa del prompt del sistema, por lo que el caché se invalida cuando el conjunto de definiciones de herramientas en la solicitud cambia entre turnos. Alternar la [herramienta de asesor](/es/advisor) es una excepción: su definición se encuentra después del punto de ruptura de caché, por lo que habilitar o deshabilitar `/advisor` mantiene el prefijo en caché intacto. Si un cambio de [servidor MCP](/es/mcp) hace esto depende de si sus herramientas se difieren por [búsqueda de herramientas](/es/mcp#scale-with-mcp-tool-search) o se cargan en el prefijo:102Las definiciones de herramientas se encuentran en la capa del prompt del sistema, por lo que el caché se invalida cuando el conjunto de definiciones de herramientas en la solicitud cambia entre turnos. Alternar la [herramienta de asesor](/docs/es/advisor) es una excepción: su definición se encuentra después del punto de ruptura de caché, por lo que habilitar o deshabilitar `/advisor` mantiene el prefijo en caché intacto. Si un cambio de [servidor MCP](/docs/es/mcp) hace esto depende de si sus herramientas se difieren por [búsqueda de herramientas](/docs/es/mcp#scale-with-mcp-tool-search) o se cargan en el prefijo:

103 103 

104* **Herramientas diferidas**, el valor predeterminado en modelos compatibles: un servidor que se conecta, desconecta o cambia su lista de herramientas solo añade contenido nuevo y no perturba nada ya almacenado en caché.104* **Herramientas diferidas**, el valor predeterminado en modelos compatibles: un servidor que se conecta, desconecta o cambia su lista de herramientas solo añade contenido nuevo y no perturba nada ya almacenado en caché.

105* **Herramientas cargadas en el prefijo**: cualquier cambio en ellas invalida el caché. Esto sucede cuando [la búsqueda de herramientas no está disponible o está deshabilitada](/es/mcp#configure-tool-search), como en Google Cloud's Agent Platform o con una puerta de enlace `ANTHROPIC_BASE_URL` personalizada. También sucede para un servidor o herramienta marcada [`alwaysLoad`](/es/mcp#exempt-a-server-from-deferral), y para definiciones mantenidas al frente por [carga basada en umbral](/es/mcp#configure-tool-search).105* **Herramientas cargadas en el prefijo**: cualquier cambio en ellas invalida el caché. Esto sucede cuando [la búsqueda de herramientas no está disponible o está deshabilitada](/docs/es/mcp#configure-tool-search), como en Google Cloud's Agent Platform o con una puerta de enlace `ANTHROPIC_BASE_URL` personalizada. También sucede para un servidor o herramienta marcada [`alwaysLoad`](/docs/es/mcp#exempt-a-server-from-deferral), y para definiciones mantenidas al frente por [carga basada en umbral](/docs/es/mcp#configure-tool-search).

106 106 

107Cuando las herramientas se cargan en el prefijo, la causa más común de una invalidación es un servidor que se conecta o desconecta a mitad de sesión, lo que puede suceder sin ninguna acción de su parte: el proceso de un servidor stdio sale, una sesión HTTP expira, o un servidor [se reconecta automáticamente después de una falla transitoria](/es/mcp#automatic-reconnection). Un servidor conectado también puede enviar una [actualización de herramienta dinámica](/es/mcp#dynamic-tool-updates) que cambia su lista de herramientas.107Cuando las herramientas se cargan en el prefijo, la causa más común de una invalidación es un servidor que se conecta o desconecta a mitad de sesión, lo que puede suceder sin ninguna acción de su parte: el proceso de un servidor stdio sale, una sesión HTTP expira, o un servidor [se reconecta automáticamente después de una falla transitoria](/docs/es/mcp#automatic-reconnection). Un servidor conectado también puede enviar una [actualización de herramienta dinámica](/docs/es/mcp#dynamic-tool-updates) que cambia su lista de herramientas.

108 108 

109Editar su configuración de MCP no cambia el caché por sí solo. La nueva configuración entra en vigor solo después de un reinicio, que es cuando el servidor se conecta o desconecta.109Editar su configuración de MCP no cambia el caché por sí solo. La nueva configuración entra en vigor solo después de un reinicio, que es cuando el servidor se conecta o desconecta.

110 110 


112 Habilitar o deshabilitar un plugin112 Habilitar o deshabilitar un plugin

113</h3>113</h3>

114 114 

115Los [plugins](/es/plugins) agrupan varios tipos de componentes, y el costo de un cambio depende de qué componentes proporciona el plugin. Skills, commands, agents, hooks, servidores LSP, monitores y temas nunca invalidan el caché: cualquier cosa que agreguen a la solicitud se añade después de la conversación existente, por lo que la siguiente solicitud paga por el contenido nuevo pero aún lee todo lo anterior desde el caché.115Los [plugins](/docs/es/plugins) agrupan varios tipos de componentes, y el costo de un cambio depende de qué componentes proporciona el plugin. Skills, commands, agents, hooks, servidores LSP, monitores y temas nunca invalidan el caché: cualquier cosa que agreguen a la solicitud se añade después de la conversación existente, por lo que la siguiente solicitud paga por el contenido nuevo pero aún lee todo lo anterior desde el caché.

116 116 

117La excepción es un plugin que proporciona [servidores MCP](/es/plugins-reference#mcp-servers). Habilitar o deshabilitar uno sigue las mismas reglas que [conectar o desconectar un servidor MCP](#connecting-or-disconnecting-an-mcp-server): el caché sobrevive cuando las herramientas del servidor se difieren, y la siguiente solicitud vuelve a leer toda la conversación cuando se cargan en el prefijo.117La excepción es un plugin que proporciona [servidores MCP](/docs/es/plugins-reference#mcp-servers). Habilitar o deshabilitar uno sigue las mismas reglas que [conectar o desconectar un servidor MCP](#connecting-or-disconnecting-an-mcp-server): el caché sobrevive cuando las herramientas del servidor se difieren, y la siguiente solicitud vuelve a leer toda la conversación cuando se cargan en el prefijo.

118 118 

119Los cambios de plugin se aplican cuando ejecuta [`/reload-plugins`](/es/discover-plugins#apply-plugin-changes-without-restarting) o inicia una nueva sesión. El costo, ya sean anuncios añadidos o una relectura completa, se muestra en el primer turno después de la recarga, no cuando ejecuta `/plugin install`, `/plugin enable`, o `/plugin disable`. {/* min-version: 2.1.163 */}A partir de v2.1.163, cuando una recarga activaría la relectura completa, `/reload-plugins` muestra una advertencia y no aplica la recarga. Pase `--force` para aplicar de todas formas.119Los cambios de plugin se aplican cuando ejecuta [`/reload-plugins`](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) o inicia una nueva sesión. El costo, ya sean anuncios añadidos o una relectura completa, se muestra en el primer turno después de la recarga, no cuando ejecuta `/plugin install`, `/plugin enable`, o `/plugin disable`. {/* min-version: 2.1.163 */}A partir de v2.1.163, cuando una recarga activaría la relectura completa, `/reload-plugins` muestra una advertencia y no aplica la recarga. Pase `--force` para aplicar de todas formas.

120 120 

121Deshabilitar un plugin que habilitó anteriormente en la sesión restaura la forma de solicitud anterior. Si ese prefijo aún está dentro de su [vida útil de caché](#cache-lifetime), la siguiente solicitud lee la entrada de caché más antigua en lugar de reconstruir.121Deshabilitar un plugin que habilitó anteriormente en la sesión restaura la forma de solicitud anterior. Si ese prefijo aún está dentro de su [vida útil de caché](#cache-lifetime), la siguiente solicitud lee la entrada de caché más antigua en lugar de reconstruir.

122 122 


124 Denegar una herramienta completa124 Denegar una herramienta completa

125</h3>125</h3>

126 126 

127Agregar un nombre de herramienta simple como `Bash` o `WebFetch` como una [regla de denegación](/es/permissions#manage-permissions) elimina esa herramienta del contexto de Claude por completo. Las definiciones de herramientas integradas se cargan en la capa del prompt del sistema, por lo que agregar o eliminar una de estas reglas a mitad de sesión invalida el caché. El cambio entra en vigor en el siguiente turno, ya sea que lo agregue a través de `/permissions` o [editando un archivo de configuración directamente](/es/settings#when-edits-take-effect).127Agregar un nombre de herramienta simple como `Bash` o `WebFetch` como una [regla de denegación](/docs/es/permissions#manage-permissions) elimina esa herramienta del contexto de Claude por completo. Las definiciones de herramientas integradas se cargan en la capa del prompt del sistema, por lo que agregar o eliminar una de estas reglas a mitad de sesión invalida el caché. El cambio entra en vigor en el siguiente turno, ya sea que lo agregue a través de `/permissions` o [editando un archivo de configuración directamente](/docs/es/settings#when-edits-take-effect).

128 128 

129Solo una regla de denegación que coincida en la posición del nombre de la herramienta tiene este efecto: un nombre de herramienta simple, la forma equivalente `Bash(*)`, o un [glob de nombre de herramienta](/es/permissions#tool-name-wildcards) como `"*"`. Un glob que coincida solo con herramientas MCP, como `"mcp__*"`, elimina esas herramientas de la misma manera pero deja el caché intacto cuando las herramientas coincidentes se [difieren](#connecting-or-disconnecting-an-mcp-server), el valor predeterminado, ya que las definiciones diferidas nunca estuvieron en el prefijo en caché. Las reglas de denegación con alcance como `Bash(rm *)`, y todas las reglas de permitir y preguntar, no cambian qué herramientas ve Claude. Claude Code las verifica cuando Claude intenta una llamada, dejando el prefijo intacto.129Solo una regla de denegación que coincida en la posición del nombre de la herramienta tiene este efecto: un nombre de herramienta simple, la forma equivalente `Bash(*)`, o un [glob de nombre de herramienta](/docs/es/permissions#tool-name-wildcards) como `"*"`. Un glob que coincida solo con herramientas MCP, como `"mcp__*"`, elimina esas herramientas de la misma manera pero deja el caché intacto cuando las herramientas coincidentes se [difieren](#connecting-or-disconnecting-an-mcp-server), el valor predeterminado, ya que las definiciones diferidas nunca estuvieron en el prefijo en caché. Las reglas de denegación con alcance como `Bash(rm *)`, y todas las reglas de permitir y preguntar, no cambian qué herramientas ve Claude. Claude Code las verifica cuando Claude intenta una llamada, dejando el prefijo intacto.

130 130 

131<h3 id="compacting-the-conversation">131<h3 id="compacting-the-conversation">

132 Compactar la conversación132 Compactar la conversación

133</h3>133</h3>

134 134 

135[Compaction](/es/context-window#what-survives-compaction) reemplaza su historial de mensajes con un resumen. Por diseño, esto invalida la capa de conversación, ya que la siguiente solicitud tiene un historial nuevo y más corto que no comparte un prefijo con el anterior. Claude Code reutiliza la capa del prompt del sistema y recarga el contexto del proyecto desde el disco, que solo tiene aciertos de caché si CLAUDE.md y la memoria no han cambiado desde que comenzó la sesión.135[Compaction](/docs/es/context-window#what-survives-compaction) reemplaza su historial de mensajes con un resumen. Por diseño, esto invalida la capa de conversación, ya que la siguiente solicitud tiene un historial nuevo y más corto que no comparte un prefijo con el anterior. Claude Code reutiliza la capa del prompt del sistema y recarga el contexto del proyecto desde el disco, que solo tiene aciertos de caché si CLAUDE.md y la memoria no han cambiado desde que comenzó la sesión.

136 136 

137Para producir el resumen, Claude Code envía una solicitud única con el mismo prompt del sistema, herramientas e historial que su conversación, más una instrucción de resumen añadida como un mensaje de usuario final. Porque comparte su prefijo, esa solicitud lee el caché existente en lugar de reprocesar el historial completo. La mayoría del tiempo de compactación se dedica a generar el resumen, no a una pérdida de caché. El turno que sigue reconstruye el caché de conversación solo para el resumen mucho más corto, por lo que el turno posterior a la compactación no es la parte lenta.137Para producir el resumen, Claude Code envía una solicitud única con el mismo prompt del sistema, herramientas e historial que su conversación, más una instrucción de resumen añadida como un mensaje de usuario final. Porque comparte su prefijo, esa solicitud lee el caché existente en lugar de reprocesar el historial completo. La mayoría del tiempo de compactación se dedica a generar el resumen, no a una pérdida de caché. El turno que sigue reconstruye el caché de conversación solo para el resumen mucho más corto, por lo que el turno posterior a la compactación no es la parte lenta.

138 138 


144 Actualizar Claude Code144 Actualizar Claude Code

145</h3>145</h3>

146 146 

147Una nueva versión de Claude Code típicamente actualiza el prompt del sistema o las definiciones de herramientas, por lo que la primera solicitud después de una actualización reconstruye el caché desde el principio. [Auto-update](/es/setup#auto-updates) descarga nuevas versiones en segundo plano pero las aplica en el siguiente lanzamiento, nunca a mitad de sesión, por lo que ve esto como un primer turno sin caché después de reiniciar en lugar de una sorpresa durante una sesión. Establezca `DISABLE_AUTOUPDATER=1` para controlar cuándo se aplican las actualizaciones.147Una nueva versión de Claude Code típicamente actualiza el prompt del sistema o las definiciones de herramientas, por lo que la primera solicitud después de una actualización reconstruye el caché desde el principio. [Auto-update](/docs/es/setup#auto-updates) descarga nuevas versiones en segundo plano pero las aplica en el siguiente lanzamiento, nunca a mitad de sesión, por lo que ve esto como un primer turno sin caché después de reiniciar en lugar de una sorpresa durante una sesión. Establezca `DISABLE_AUTOUPDATER=1` para controlar cuándo se aplican las actualizaciones.

148 148 

149<Note>149<Note>

150 [Reanudar una sesión](/es/sessions#resume-a-session) después de una actualización reprocesa todo el historial de conversación sin aciertos de caché, ya que el historial ahora se encuentra detrás de un prompt del sistema diferente. El costo se escala con la duración de la conversación reanudada, por lo que el primer turno de vuelta a una sesión larga puede ser la solicitud más costosa que envíe.150 [Reanudar una sesión](/docs/es/sessions#resume-a-session) después de una actualización reprocesa todo el historial de conversación sin aciertos de caché, ya que el historial ahora se encuentra detrás de un prompt del sistema diferente. El costo se escala con la duración de la conversación reanudada, por lo que el primer turno de vuelta a una sesión larga puede ser la solicitud más costosa que envíe.

151</Note>151</Note>

152 152 

153<h2 id="actions-that-keep-the-cache">153<h2 id="actions-that-keep-the-cache">


177 177 

178Sus archivos CLAUDE.md de raíz de proyecto y nivel de usuario se leen una vez al inicio de la sesión y se mantienen en memoria. Editarlos a mitad de sesión no invalida el caché, pero la edición tampoco se aplica. Claude continúa trabajando con la versión que se cargó al inicio de la sesión. El nuevo contenido se carga en el siguiente `/clear`, `/compact`, o reinicio.178Sus archivos CLAUDE.md de raíz de proyecto y nivel de usuario se leen una vez al inicio de la sesión y se mantienen en memoria. Editarlos a mitad de sesión no invalida el caché, pero la edición tampoco se aplica. Claude continúa trabajando con la versión que se cargó al inicio de la sesión. El nuevo contenido se carga en el siguiente `/clear`, `/compact`, o reinicio.

179 179 

180[Archivos CLAUDE.md anidados en subdirectorios](/es/memory) y [reglas con frontmatter `paths:`](/es/memory#path-specific-rules) se cargan más tarde, cuando Claude lee por primera vez un archivo coincidente. Editar uno antes de que se cargue sí tiene efecto. Después de que se carga, el contenido es parte del historial de conversación, por lo que una edición a mitad de sesión no lo cambia retroactivamente.180[Archivos CLAUDE.md anidados en subdirectorios](/docs/es/memory) y [reglas con frontmatter `paths:`](/docs/es/memory#path-specific-rules) se cargan más tarde, cuando Claude lee por primera vez un archivo coincidente. Editar uno antes de que se cargue sí tiene efecto. Después de que se carga, el contenido es parte del historial de conversación, por lo que una edición a mitad de sesión no lo cambia retroactivamente.

181 181 

182<h3 id="changing-output-style">182<h3 id="changing-output-style">

183 Cambiar el estilo de salida183 Cambiar el estilo de salida

184</h3>184</h3>

185 185 

186[Output style](/es/output-styles) es parte del prompt del sistema, que Claude Code lee una vez al inicio de la sesión. Cambiarlo a través de `/config` o la configuración `outputStyle` a mitad de sesión no invalida el caché, pero el cambio tampoco se aplica. Claude continúa usando el estilo que se cargó al inicio de la sesión. El nuevo estilo se carga en el siguiente `/clear` o reinicio.186[Output style](/docs/es/output-styles) es parte del prompt del sistema, que Claude Code lee una vez al inicio de la sesión. Cambiarlo a través de `/config` o la configuración `outputStyle` a mitad de sesión no invalida el caché, pero el cambio tampoco se aplica. Claude continúa usando el estilo que se cargó al inicio de la sesión. El nuevo estilo se carga en el siguiente `/clear` o reinicio.

187 187 

188<h3 id="changing-permission-mode">188<h3 id="changing-permission-mode">

189 Cambiar el modo de permiso189 Cambiar el modo de permiso

190</h3>190</h3>

191 191 

192Cambiar entre [permission modes](/es/permission-modes), como de predeterminado a aceptar ediciones, no cambia el prompt del sistema o las definiciones de herramientas, por lo que los cambios de modo son seguros para el caché. La excepción es el modo de plan con la configuración de modelo [`opusplan`](/es/model-config#opusplan-model-setting), que cambia el modelo entre Opus y Sonnet cuando entra o sale del modo de plan. Eso hace que el cambio de modo sea un [cambio de modelo](#switching-models).192Cambiar entre [permission modes](/docs/es/permission-modes), como de predeterminado a aceptar ediciones, no cambia el prompt del sistema o las definiciones de herramientas, por lo que los cambios de modo son seguros para el caché. La excepción es el modo de plan con la configuración de modelo [`opusplan`](/docs/es/model-config#opusplan-model-setting), que cambia el modelo entre Opus y Sonnet cuando entra o sale del modo de plan. Eso hace que el cambio de modo sea un [cambio de modelo](#switching-models).

193 193 

194<h3 id="invoking-skills-and-commands">194<h3 id="invoking-skills-and-commands">

195 Invocar skills y comandos195 Invocar skills y comandos

196</h3>196</h3>

197 197 

198[Skills](/es/skills) y [commands](/es/commands) inyectan sus instrucciones como mensajes de usuario en el punto de invocación. Nada anterior en la conversación cambia.198[Skills](/docs/es/skills) y [commands](/docs/es/commands) inyectan sus instrucciones como mensajes de usuario en el punto de invocación. Nada anterior en la conversación cambia.

199 199 

200<h3 id="running-/recap">200<h3 id="running-/recap">

201 Ejecutar `/recap`201 Ejecutar `/recap`

202</h3>202</h3>

203 203 

204[`/recap`](/es/interactive-mode#session-recap) genera un resumen para mostrar en su terminal. A diferencia de `/compact`, añade el resumen como salida de comando en lugar de reemplazar su historial de mensajes, por lo que el prefijo en caché permanece intacto.204[`/recap`](/docs/es/interactive-mode#session-recap) genera un resumen para mostrar en su terminal. A diferencia de `/compact`, añade el resumen como salida de comando en lugar de reemplazar su historial de mensajes, por lo que el prefijo en caché permanece intacto.

205 205 

206<h3 id="rewinding-the-conversation">206<h3 id="rewinding-the-conversation">

207 Rewind de la conversación207 Rewind de la conversación

208</h3>208</h3>

209 209 

210[`/rewind`](/es/checkpointing) trunca su conversación de vuelta a un turno anterior. El historial restante es el mismo contenido del que se construyó el caché en ese punto, y las capas del prompt del sistema y contexto del proyecto no cambian, por lo que la siguiente solicitud acierta la entrada de caché anterior. Cada turno desde entonces ha leído a través de ese prefijo, que mantuvo la entrada activa incluso si el turno original fue hace más tiempo que el TTL.210[`/rewind`](/docs/es/checkpointing) trunca su conversación de vuelta a un turno anterior. El historial restante es el mismo contenido del que se construyó el caché en ese punto, y las capas del prompt del sistema y contexto del proyecto no cambian, por lo que la siguiente solicitud acierta la entrada de caché anterior. Cada turno desde entonces ha leído a través de ese prefijo, que mantuvo la entrada activa incluso si el turno original fue hace más tiempo que el TTL.

211 211 

212Restaurar puntos de control de archivo junto con la conversación no tiene efecto separado en el caché. El contenido del archivo entra en contexto solo cuando Claude lo lee, igual que [editar archivos en su repositorio](#editing-files-in-your-repository).212Restaurar puntos de control de archivo junto con la conversación no tiene efecto separado en el caché. El contenido del archivo entra en contexto solo cuando Claude lo lee, igual que [editar archivos en su repositorio](#editing-files-in-your-repository).

213 213 


239 Anular el TTL239 Anular el TTL

240</h3>240</h3>

241 241 

242Establezca `FORCE_PROMPT_CACHING_5M=1` para forzar el TTL de cinco minutos independientemente de la autenticación. Esto es útil cuando está depurando el comportamiento del caché, comparando los dos TTL, o anulando un `ENABLE_PROMPT_CACHING_1H` establecido en [managed settings](/es/settings#settings-files).242Establezca `FORCE_PROMPT_CACHING_5M=1` para forzar el TTL de cinco minutos independientemente de la autenticación. Esto es útil cuando está depurando el comportamiento del caché, comparando los dos TTL, o anulando un `ENABLE_PROMPT_CACHING_1H` establecido en [managed settings](/docs/es/settings#settings-files).

243 243 

244<h2 id="cache-scope">244<h2 id="cache-scope">

245 Alcance del caché245 Alcance del caché


249 249 

250Las sesiones que ejecuta en paralelo en el mismo directorio construyen prefijos coincidentes y leen el caché del otro. Las sesiones secuenciales comparten el prefijo solo cuando la instantánea de estado de git al inicio coincide, ya que el prompt del sistema también captura rama y commits recientes.250Las sesiones que ejecuta en paralelo en el mismo directorio construyen prefijos coincidentes y leen el caché del otro. Las sesiones secuenciales comparten el prefijo solo cuando la instantánea de estado de git al inicio coincide, ya que el prompt del sistema también captura rama y commits recientes.

251 251 

252El caché de API subyacente es más amplio. Los cachés están aislados entre organizaciones, y en algunos proveedores, [entre espacios de trabajo dentro de una organización](https://platform.claude.com/docs/es/build-with-claude/prompt-caching#cache-storage-and-sharing). Dentro de esos límites, cualquier dos solicitudes con el mismo modelo y prefijo leen el mismo caché. Para llamadores de Agent SDK que ejecutan flotas de procesos automatizados, vea [mejorar el almacenamiento en caché de prompts entre usuarios y máquinas](/es/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) para suprimir las secciones por máquina del prompt del sistema y compartir el caché entre máquinas.252El caché de API subyacente es más amplio. Los cachés están aislados entre organizaciones, y en algunos proveedores, [entre espacios de trabajo dentro de una organización](https://platform.claude.com/docs/es/build-with-claude/prompt-caching#cache-storage-and-sharing). Dentro de esos límites, cualquier dos solicitudes con el mismo modelo y prefijo leen el mismo caché. Para llamadores de Agent SDK que ejecutan flotas de procesos automatizados, vea [mejorar el almacenamiento en caché de prompts entre usuarios y máquinas](/docs/es/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) para suprimir las secciones por máquina del prompt del sistema y compartir el caché entre máquinas.

253 253 

254<h2 id="check-cache-performance">254<h2 id="check-cache-performance">

255 Verificar el rendimiento del caché255 Verificar el rendimiento del caché

256</h2>256</h2>

257 257 

258El rendimiento del caché se muestra como dos recuentos de tokens que la API reporta en cada respuesta. La forma más directa de verlos en vivo es un [script de statusline](/es/statusline) que lee el objeto `current_usage`:258El rendimiento del caché se muestra como dos recuentos de tokens que la API reporta en cada respuesta. La forma más directa de verlos en vivo es un [script de statusline](/docs/es/statusline) que lee el objeto `current_usage`:

259 259 

260| Campo | Significado |260| Campo | Significado |

261| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |261| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |


264 264 

265Una alta relación de lectura a creación significa que el almacenamiento en caché está funcionando bien. Si la creación permanece alta turno tras turno, algo está cambiando en su prefijo. La sección [acciones que invalidan el caché](#actions-that-invalidate-the-cache) enumera las causas usuales.265Una alta relación de lectura a creación significa que el almacenamiento en caché está funcionando bien. Si la creación permanece alta turno tras turno, algo está cambiando en su prefijo. La sección [acciones que invalidan el caché](#actions-that-invalidate-the-cache) enumera las causas usuales.

266 266 

267Para visibilidad en toda una organización, el exportador de OpenTelemetry reporta tokens de lectura y creación de caché por usuario y sesión. Vea [Monitor usage](/es/monitoring-usage) para la referencia de métrica y atributo de evento.267Para visibilidad en toda una organización, el exportador de OpenTelemetry reporta tokens de lectura y creación de caché por usuario y sesión. Vea [Monitor usage](/docs/es/monitoring-usage) para la referencia de métrica y atributo de evento.

268 268 

269<h2 id="subagents-and-the-cache">269<h2 id="subagents-and-the-cache">

270 Subagentes y el caché270 Subagentes y el caché

271</h2>271</h2>

272 272 

273Un [subagent](/es/sub-agents) inicia su propia conversación con su propio prompt del sistema y conjunto de herramientas, separado del padre. Construye su propio caché, comenzando sin aciertos de caché en su primera llamada y calentándose a través de sus propios turnos. Los subagentes usan el TTL de cinco minutos incluso en una suscripción, ya que el TTL automático de una hora se aplica a la conversación principal.273Un [subagent](/docs/es/sub-agents) inicia su propia conversación con su propio prompt del sistema y conjunto de herramientas, separado del padre. Construye su propio caché, comenzando sin aciertos de caché en su primera llamada y calentándose a través de sus propios turnos. Los subagentes usan el TTL de cinco minutos incluso en una suscripción, ya que el TTL automático de una hora se aplica a la conversación principal.

274 274 

275El caché del padre no se ve afectado. Desde el lado del padre, la llamada y resultado del subagente se añaden a la conversación, dejando el prefijo del padre intacto.275El caché del padre no se ve afectado. Desde el lado del padre, la llamada y resultado del subagente se añaden a la conversación, dejando el prefijo del padre intacto.

276 276 

277Un [fork](/es/sub-agents#fork-the-current-conversation), por el contrario, hereda el prompt del sistema del padre, herramientas e historial de conversación exactamente, por lo que su primera solicitud lee el caché del padre. La llamada de resumen de compactación descrita en [Compactar la conversación](#compacting-the-conversation) usa el mismo enfoque de compartir prefijo.277Un [fork](/docs/es/sub-agents#fork-the-current-conversation), por el contrario, hereda el prompt del sistema del padre, herramientas e historial de conversación exactamente, por lo que su primera solicitud lee el caché del padre. La llamada de resumen de compactación descrita en [Compactar la conversación](#compacting-the-conversation) usa el mismo enfoque de compartir prefijo.

278 278 

279<h2 id="disable-prompt-caching">279<h2 id="disable-prompt-caching">

280 Desactivar el almacenamiento en caché de prompts280 Desactivar el almacenamiento en caché de prompts


290| `DISABLE_PROMPT_CACHING_OPUS` | Desactivar solo para Opus |290| `DISABLE_PROMPT_CACHING_OPUS` | Desactivar solo para Opus |

291| `DISABLE_PROMPT_CACHING_FABLE` | Desactivar solo para Fable |291| `DISABLE_PROMPT_CACHING_FABLE` | Desactivar solo para Fable |

292 292 

293Para establecer la política de almacenamiento en caché en toda una organización, coloque cualquiera de estas o las [variables de TTL](#cache-lifetime) en el bloque `env` de [configuración administrada](/es/settings#settings-files). Para uso normal, deje el almacenamiento en caché habilitado.293Para establecer la política de almacenamiento en caché en toda una organización, coloque cualquiera de estas o las [variables de TTL](#cache-lifetime) en el bloque `env` de [configuración administrada](/docs/es/settings#settings-files). Para uso normal, deje el almacenamiento en caché habilitado.

294 294 

295<h2 id="related-resources">295<h2 id="related-resources">

296 Recursos relacionados296 Recursos relacionados

297</h2>297</h2>

298 298 

299* [Lecciones de construir Claude Code: El almacenamiento en caché de prompts lo es todo](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything): la justificación del diseño para el modo de plan, carga de herramientas diferida, y compactación299* [Lecciones de construir Claude Code: El almacenamiento en caché de prompts lo es todo](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything): la justificación del diseño para el modo de plan, carga de herramientas diferida, y compactación

300* [Explorar la ventana de contexto](/es/context-window): qué se carga en contexto y cuándo300* [Explorar la ventana de contexto](/docs/es/context-window): qué se carga en contexto y cuándo

301* [Reducir el uso de tokens](/es/costs#reduce-token-usage): estrategias más allá del almacenamiento en caché para gestionar el tamaño del contexto301* [Reducir el uso de tokens](/docs/es/costs#reduce-token-usage): estrategias más allá del almacenamiento en caché para gestionar el tamaño del contexto

302* [Rastrear y reducir costos](/es/agent-sdk/cost-tracking): seguimiento de tokens de caché y configuración de TTL para llamadores de Agent SDK302* [Rastrear y reducir costos](/docs/es/agent-sdk/cost-tracking): seguimiento de tokens de caché y configuración de TTL para llamadores de Agent SDK

303* [Almacenamiento en caché de prompts](https://platform.claude.com/docs/es/build-with-claude/prompt-caching): el mecanismo de API subyacente, puntos de interrupción, y precios303* [Almacenamiento en caché de prompts](https://platform.claude.com/docs/es/build-with-claude/prompt-caching): el mecanismo de API subyacente, puntos de interrupción, y precios