SpyBara
Go Premium

Documentation 2026-07-28 23:57 UTC to 2026-07-29 07:01 UTC

2 files changed +63 −63. View all changes and history on the product overview
2026
Wed 29 07:01 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

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

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