Claude Code: cómo evitar sesiones lentas y costosas
Cada turno reenvía todo el contexto y una sesión larga se ralentiza. Usa /context, elimina el coste fijo y aplica clear y compact con intención.
Cómo evitar que una sesión larga de Claude Code se vuelva lenta y costosa
Una sesión larga de Claude Code se vuelve lenta y costosa porque cada turno vuelve a enviar todo el contexto, y ese contexto no deja de crecer. La solución es aplicar una higiene estricta y en un orden fijo. Ejecute /context para ver qué está ocupando la ventana, elimine los elementos por los que paga en cada solicitud, use /clear entre tareas no relacionadas y /compact con una instrucción dentro de una misma tarea larga. Trabaje en sesiones continuas, porque una caché de prompts fría convierte una lectura barata en una reescritura completa de todo lo que ha dicho.
La razón por la que el contador sigue avanzando se explica en el contador de tokens de una sesión de agente.
Lee /context antes de cambiar nada
No adivines qué ocupa la ventana. Claude Code te lo indicará.
/context [all] muestra el uso actual del contexto como una cuadrícula de colores, con sugerencias de optimización para herramientas que consumen mucho contexto y para la acumulación excesiva de memoria; all amplía el desglose por elemento en modo de pantalla completa. Lee el resultado como cinco categorías.
- El prompt del sistema. Las instrucciones del propio arnés de Claude Code. Son fijas durante la sesión.
- Las definiciones de herramientas. El esquema de cada herramienta que el agente puede invocar, incluidos todos los servidores MCP (Model Context Protocol) conectados.
- Los archivos de memoria.
CLAUDE.mdy la memoria automática, cargados al inicio de la sesión. - Los archivos y los resultados de las herramientas. Cada archivo leído y todo lo que imprimen tus comandos.
- El historial de mensajes. Tus turnos y sus respuestas.
Las tres primeras suponen un coste fijo en cada solicitud durante toda la sesión. Las dos últimas crecen. Reduce el coste fijo una vez, al principio; gestiona continuamente la parte que crece.
Dos cadenas indican que la ventana está llena:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.La primera es un límite estricto y la solicitud se rechaza; el error correspondiente de la API (application programming interface) es Prompt is too long. La segunda es una ventana de compactación, que puede estar por debajo de la ventana de contexto real en un modelo de 1 million tokens. Las solicitudes siguen funcionando después de ese límite, por lo que es una advertencia y no un rechazo.
En un plan de pago, /usage añade la otra mitad. Señala comportamientos como un contexto largo o fallos de caché y atribuye el uso reciente a habilidades, subagentes y servidores MCP individuales. Si indica que la cuota ya se ha agotado, qué ventana de límite estás esperando determina si reducir el contexto te ayuda ahora o si necesitas otra vía para volver a trabajar.
CLAUDE.md es un coste permanente, así que manténgalo conciso
Su CLAUDE.md se carga al inicio de la sesión y permanece en el contexto. Si contiene un procedimiento de despliegue detallado, esos tokens siguen presentes mientras corrige un error tipográfico en un archivo de pruebas. La documentación de Anthropic recomienda incluir sólo lo esencial y mantener el archivo por debajo de 200 líneas.
Mueva los procedimientos a las skills. Una skill se carga sólo cuando se invoca, así que un flujo de trabajo que ejecuta dos veces por semana no consume nada los demás días. Las skills tienen su propio presupuesto después de una compactación: sus cuerpos se vuelven a inyectar, con un límite de 5,000 tokens por skill y 25,000 en total; las más antiguas se descartan primero. El truncamiento conserva el inicio del archivo, así que coloque las instrucciones más importantes cerca del principio de SKILL.md.
Lo que sobrevive a una compactación determina dónde debe estar una instrucción.
- El prompt del sistema y el estilo de salida no cambian, porque no forman parte del historial de mensajes.
- El
CLAUDE.mdraíz del proyecto, las reglas sin ámbito y la memoria automática se vuelven a inyectar desde el disco. - Una regla con frontmatter
paths:se pierde hasta que se vuelva a leer un archivo coincidente. - Un
CLAUDE.mdanidado en un subdirectorio se pierde hasta que se vuelva a leer un archivo de ese subdirectorio. - Los hooks siguen ejecutándose, porque un hook se ejecuta como código; sólo el contexto que un hook añadió antes se resume junto con el resto de la conversación.
Por tanto, una regla de la que dependa debe estar en el CLAUDE.md raíz del proyecto: Claude Code elimina primero las salidas antiguas de las herramientas y después resume, por lo que las instrucciones de las primeras partes de la conversación pueden perderse. Edite la memoria con /memory. Claude Code conserva la copia que cargó al inicio de la sesión, así que un recorte durante la sesión mantiene la caché del prompt y no se aplica hasta el siguiente /clear, /compact o reinicio. La pérdida de contexto es sólo una de las razones por las que una regla deja de seguirse, así que cuando la regla siga claramente en la ventana y aun así se ignore, analice las demás causas antes de reescribirla.
/clear entre tareas, /compact dentro de una
Estos dos comandos parecen intercambiables, pero tienen costos muy distintos.
/clear [name] inicia una conversación nueva con el contexto vacío. No envía ninguna solicitud, por lo que no tiene costo. Pase un nombre para etiquetar la conversación anterior en el selector de /resume; /reset y /new son alias. Úselo en cuanto cambie a una tarea no relacionada, porque de lo contrario la tarea anterior se volvería a enviar y a facturar en cada mensaje de la nueva.
/compact [instructions] libera contexto y mantiene la misma conversación: resume el historial hasta ese momento y lo reemplaza. Úselo dentro de una tarea larga en la que todavía necesite continuidad.
Proporcione siempre una instrucción a /compact. Un /compact sin argumentos resume usando un prompt predeterminado que no sabe qué parte del trabajo todavía necesita. Uno con instrucciones conserva esa información:
/compact focus on the auth bug fix
/compact keep only the plan and the diffSi compacta por el mismo motivo cada vez, coloque una instrucción permanente en el CLAUDE.md de su proyecto, bajo un encabezado # Compact instructions. En una sesión nueva, /compact muestra Not enough messages to compact., lo que significa que la conversación tiene muy pocos turnos para resumir. Esto puede ocurrir incluso con el contexto lleno, cuando un único pegado grande lo ocupó.
Aquí se confunden dos costos. La solicitud de resumen comparte su prefijo, por lo que lee la caché existente en lugar de volver a procesar el historial, y la mayor parte del tiempo se dedica a generar el resumen. Compactar un contexto grande sigue siendo una solicitud grande, porque la conversación que se resume es la entrada. El turno posterior a la compactación no es la parte lenta: reconstruye la caché para un prompt mucho más corto.
Existen dos comandos más económicos. /rewind revierte el código y la conversación a un punto de control. Para una ruta que quiere abandonar por completo, es mejor que compactar porque trunca hasta un prefijo que ya está en la caché. /recap añade un resumen como salida del comando en lugar de reemplazar el historial, por lo que el prefijo en caché permanece intacto.
Cuando la compactación automática se ejecuta una y otra vez, muestra esto:
Autocompact is thrashing: the context refilled to the limit...La compactación se completó correctamente, pero un archivo o la salida de una herramienta volvió a llenar la ventana varias veces seguidas, por lo que Claude Code dejó de reintentarlo. Para recuperarse, lea el archivo sobredimensionado por rangos de líneas, ejecute /compact con un enfoque que descarte la salida grande, traslade ese trabajo a un subagente o use /clear si la conversación anterior ya terminó.
Los servidores MCP tienen una sobrecarga fija
Cada servidor MCP al que se conecta se añade a todas las solicitudes durante toda la sesión. Se paga ese coste aunque no se utilice.
Claude Code reduce este efecto. De forma predeterminada, las definiciones de las herramientas MCP se cargan de forma diferida, por lo que sólo los nombres de las herramientas entran en el contexto hasta que Claude utiliza una herramienta concreta. Ejecute /context para comprobar el coste real de sus servidores y /mcp disable <name> para quitar uno que no vaya a utilizar hoy. Si ejecuta sus propios servidores MCP en un VPS, el mismo cálculo limita cuántas herramientas debe exponer un servidor.
Hágalo al principio de la sesión. Mientras las definiciones permanezcan diferidas, conectar o desconectar un servidor sólo añade contenido a la conversación y la caché se conserva. Si las definiciones se cargan en el prefijo porque la búsqueda de herramientas está deshabilitada, no está disponible o se encuentra por debajo de su umbral auto, el mismo cambio hace que la siguiente solicitud vuelva a leerlo todo.
Filtre la salida detallada de las herramientas antes de que entre en el contexto
El resultado de una herramienta es una entrada, y se vuelve a enviar en cada turno posterior. Una ejecución de prueba que genera 20,000 tokens de salida no tiene un coste único: se vuelve a pagar en cada turno hasta que sale de la ventana.
Filtre en el origen. Un hook que reduce la ejecución de prueba a sus fallos antes de que Claude la reciba convierte esa salida extensa en unos cientos de tokens, tanto en este turno como en cada reenvío posterior:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Los hooks nunca entran en el contexto, porque se ejecutan como código. Haga esto con cualquier herramienta cuya salida ocupe más de una pantalla. La misma lógica se aplica a un archivo de 3,000 líneas: solicite el intervalo de líneas que necesita, porque el archivo completo permanece en la ventana una vez que llega.
Delimite lo que lee el agente y delegue el trabajo que genera mucho ruido
Un prompt que especifica el archivo y el síntoma hace que el agente lea ese archivo. Una solicitud abierta para ordenar el proyecto hace que lea todo lo que el agente considere relevante, y cada una de esas lecturas permanece en la ventana de contexto.
Delegue el trabajo que genera mucha salida a un subagente. Las ejecuciones de pruebas y el procesamiento de registros consumen contexto real; un subagente mantiene esa salida en su propia ventana y devuelve sólo un resumen. La contrapartida es que el subagente crea su propia caché, sin aciertos en la primera llamada, y aplica la duración de cinco minutos de la caché incluso con una suscripción. La delegación protege de forma fiable el contexto principal. No siempre reduce el número total de tokens.
El reloj de la caché: trabaje en sesiones continuas
La caché de prompts es lo que hace asequible el reenvío. Escribir el prefijo cuesta 1.25x la tarifa base de entrada, o 2x con la duración de una hora. Leerlo de nuevo cuesta 0.1x en Haiku 5.5, 0.05x en Opus 5.5 y Sonnet 5.5 ($0.20 y $0.10 por millón de tokens), y 0.025x en Fable 5.1 ($0.25 por millón). Cada uso actualiza la entrada sin coste adicional, por lo que el tiempo empieza a contar desde el último uso. Estos multiplicadores indican la estructura de la factura, pero no su importe, así que combínelos con el coste real de un millón de tokens para convertir una ventana de contexto completa en una cifra en dólares.
La duración que obtiene depende del método de autenticación. Por eso es incorrecto afirmar de forma general que "la caché caduca después de cinco minutos".
- Con una suscripción de Claude, Claude Code solicita automáticamente la duración de una hora.
- Cuando supera el límite de su plan y empieza a usar créditos de consumo, ese uso se factura, por lo que la duración vuelve a ser de cinco minutos.
- Con una clave de API o un proveedor de nube, se mantiene en cinco minutos. Establecer
promptCacheTtlen1ho enENABLE_PROMPT_CACHING_1H=1activa la duración de una hora, yFORCE_PROMPT_CACHING_5M=1la fuerza de nuevo a cinco minutos.
El consejo sobre el ritmo es el mismo en ambos casos: trabaje en sesiones continuas, porque una pausa superior a la duración de la caché hace que el siguiente turno vuelva a escribir todo el prefijo acumulado. Una sesión desconectada de Claude Code en tmux no cuesta nada mientras está inactiva, y lo que se pierde durante ese tiempo es la caché activa.
Algunas acciones descartan la caché aunque continúe trabajando: cambiar de modelo, cambiar el nivel de esfuerzo en modelos antiguos, activar el modo rápido, conectar o desconectar un servidor MCP o denegar una herramienta completa cuando las definiciones de herramientas se cargan al principio, activar o desactivar un plugin que añade herramientas, compactar, eliminar imágenes antiguas cuando una conversación contiene demasiadas y actualizar Claude Code. En Opus 5.5, Sonnet 5.5, Haiku 5.5 y Fable 5.1, con una clave de API o una suscripción, cambiar el nivel de esfuerzo ahora conserva la caché. /model suele causar confusión, porque cada modelo tiene su propia caché. Por eso la siguiente solicitud lee todo el historial sin aciertos de caché, aunque el contenido sea idéntico. Esa nueva lectura se factura según las tarifas del modelo de destino como una escritura nueva de caché. Por tanto, cambiar a Fable a mitad de una sesión factura todo el historial acumulado según las tarifas publicadas de escritura de caché de Fable: $12.50 por millón de tokens con la duración de cinco minutos o $20 con la duración de una hora, igual que en Fable 5 y Fable 5.1.
Editar archivos, editar CLAUDE.md, invocar skills y comandos, ejecutar /recap, retroceder y generar un subagente conservan la caché. Su alcance se limita a una máquina y un directorio, por lo que dos sesiones en directorios diferentes no comparten la caché. Este alcance depende del CLI, no de la cuenta. Por eso nada de esto se transfiere a la aplicación de escritorio de Claude, que en Linux es una instalación beta independiente junto al CLI.
Para comprobar si la caché funciona, lea current_usage. cache_creation_input_tokens se escribió con la tarifa de escritura de caché; cache_read_input_tokens se sirvió con la tarifa de lectura de caché del modelo, entre el 2.5% y el 10% de la tarifa estándar de entrada según el modelo. Una proporción alta entre lecturas y creaciones es normal. Si la creación se mantiene alta en cada turno, algo del prefijo cambia continuamente.
¿Una ventana de contexto más grande resuelve este problema?
En parte. Todos los modelos actuales (Fable 5.1, Opus 5.5, Sonnet 5.5 y Haiku 5.5) utilizan una ventana de contexto de 1 million tokens, y la compactación funciona de la misma manera con el límite más alto. La estructura de costes no cambia, porque el prompt completo se vuelve a enviar y se factura en cada turno. Una ventana más grande determina cuándo se ve obligado a intervenir; la higiene determina el coste. Si el problema es la factura y no el límite, qué plan de Claude se adapta a su forma de trabajar determina si gasta dólares o la asignación del plan.
La edición y la compactación del contexto en la API son funciones distintas
Si está creando su propio agente con la API de Messages, no existen comandos con barra y debe implementar esta función usted mismo. Reserve presupuesto para ese trabajo desde el principio, porque las asignaciones gratuitas de la API no cubrirán sus tokens. Los usuarios nuevos reciben una pequeña cantidad de créditos gratuitos para probar la API, y la asignación permanente que Anthropic publica (50 horas gratuitas al día por organización en la página de precios, 1,550 al mes en la documentación) cubre el tiempo de los contenedores de ejecución de código, que se factura por separado de los tokens. Cada turno vuelve a enviar el historial sin recortar y factura todo: a la tarifa de lectura de caché mientras el prefijo está en caché, y a la tarifa completa de entrada o con una prima por escritura en caché cuando no lo está. El proveedor sobre el que construya determina ese cálculo antes de aplicar cualquier recorte. Por tanto, si la elección sigue abierta, calcule el costo de la misma carga de trabajo en ambas API en lugar de comparar las tarifas anunciadas por token. Dos funciones del servidor realizan este trabajo, y no son la misma función.
La edición del contexto elimina selectivamente contenido específico del historial de la conversación a medida que crece, y reemplaza cada resultado eliminado por texto de marcador para que Claude sepa que algo fue eliminado. Es una función beta: envíe anthropic-beta: context-management-2025-06-27 y configure las estrategias en context_management.edits. clear_tool_uses_20250919 elimina los resultados de las herramientas y clear_thinking_20251015 administra los bloques de razonamiento. Su trigger tiene como valor predeterminado 100,000 tokens de entrada, keep se establece en los últimos 3 usos de herramientas y clear_tool_inputs en false, por lo que las entradas se conservan y sólo se eliminan los resultados.
La compactación genera un resumen y reemplaza con él todo el historial de la conversación. Está disponible en dos funciones beta. La compactación por umbral se ejecuta dentro de las solicitudes normales: envíe anthropic-beta: compact-2026-01-12 y use el tipo de edición compact_20260112. El activador tiene como valor predeterminado {"type": "input_tokens", "value": 150000}, y el valor debe ser como mínimo 50,000. La compactación bajo demanda permite que su código decida cuándo ejecutarla: envíe anthropic-beta: compact-2026-09-04 con un "compaction": {"type": "summarize"} de nivel superior, y la respuesta contendrá únicamente el bloque de resumen. La descripción general de compactación de Anthropic recomienda usar la compactación bajo demanda siempre que esté disponible.
La compactación por umbral tiene una regla de transferencia que puede romper agentes sin que resulte evidente. La respuesta comienza con un bloque de contenido compaction que contiene el resumen, seguido del bloque de texto normal. Debe devolver ese bloque en las solicitudes posteriores; la API eliminará entonces todos los bloques de contenido anteriores. En la práctica, añada response.content completo, no sólo el texto. La compactación bajo demanda funciona al contrario: elimine usted mismo los mensajes resumidos, coloque el bloque devuelto al principio de messages y envíelo exactamente como se devolvió, incluida la firma.
La documentación de Anthropic denomina a la compactación del lado del servidor la estrategia principal para administrar el contexto en conversaciones de larga duración, y a la edición del contexto la opción para controlar con más precisión qué se elimina. Compruebe primero la compatibilidad del modelo. Todos los modelos actuales admiten ambos tipos de compactación, incluido Haiku 5.5; el claude-haiku-4-5 anterior no los admite, y cada página de compactación contiene la lista vigente. Ninguna de estas funciones beta controla el /compact propio de Claude Code, que su documentación describe como una solicitud de resumen independiente que el cliente envía con su historial.
FAQ
¿Por qué mi sesión de Claude Code se vuelve más lenta y costosa cuanto más tiempo permanece abierta?
Porque la conversación completa se vuelve a enviar en cada turno. Por eso, una pregunta de una línea en una sesión abierta todo el día incluye todo lo ocurrido durante ese día. El almacenamiento en caché de prompts mantiene bajo ese coste mientras la caché está activa: una lectura cuesta 0.1x de la tarifa base de entrada en Haiku 5.5, 0.05x en Opus 5.5 y Sonnet 5.5, y 0.025x en Fable 5.1. Cuando un turno no encuentra una entrada en la caché, el mismo prefijo se vuelve a escribir a 1.25x, o a 2x con la duración de una hora. Ejecute /context para ver qué está ocupando la ventana y consulte qué se factura en una sesión de Claude Code para conocer el mecanismo.
¿Cuál es la diferencia entre /clear y /compact en Claude Code?
/clear inicia una conversación nueva con el contexto vacío. No envía ninguna solicitud, por lo que no tiene coste, y es la opción adecuada entre tareas no relacionadas. /compact conserva la misma conversación y reemplaza el historial por un resumen, por lo que es la opción adecuada dentro de una tarea larga. Indique un objetivo, como en /compact keep only the plan and the diff, porque esa instrucción determina qué información se conserva.
¿Cómo puedo ver qué está consumiendo la ventana de contexto de Claude Code?
Ejecute /context o /context all para obtener el desglose completo por elemento. Muestra el prompt del sistema, las definiciones de herramientas, los servidores MCP, los archivos de memoria y el historial en una cuadrícula de colores. También incluye sugerencias para las herramientas que consumen mucho contexto y para el exceso de datos en la memoria. En un plan de pago, /usage también atribuye el uso reciente a skills, subagentes y servidores MCP concretos.
¿Debo usar una ventana de contexto de 1 millón de tokens en lugar de compactar?
Una ventana más grande retrasa el problema, pero no lo resuelve. Todos los modelos actuales (Fable 5.1, Opus 5.5, Sonnet 5.5 y Haiku 5.5) usan una ventana de contexto de 1 millón de tokens, y la compactación funciona igual en ella. Cada turno sigue reenviando el prompt completo y se sigue facturando por él, por lo que una conversación de 400,000 tokens resulta costosa tanto si cabe como si no.
¿Cuál es la diferencia entre la edición de contexto y la compactación en Claude API?
La edición de contexto elimina de forma selectiva el contenido antiguo, principalmente los resultados de herramientas, y deja texto de marcador de posición donde estaba cada elemento para que Claude sepa que se eliminó. La compactación genera un resumen y reemplaza con él todo el historial. La documentación de Anthropic denomina la compactación la estrategia principal para las conversaciones de larga duración y presenta la edición de contexto como la opción de control más preciso. Ambas son funciones beta con sus propias cabeceras y ambas son independientes de /compact de Claude Code.