TL;DR Ejecuta
/autocompact. Te dice tu ventana y de dónde sale:default for this model,from settingsofrom CLAUDE_CODE_AUTO_COMPACT_WINDOW. Si no es la del modelo y no sabes quién la cambió,/autocompact autola devuelve a su sitio.
La ventana de auto-compact es cuánto puede llenarse el contexto antes de que Claude Code resuma la conversación solo. El umbral real es el mínimo entre esa ventana y el contexto máximo de tu modelo, así que subirla por encima del modelo no te da nada.
Lo interesante no es el número. Es que hay cuatro sitios capaces de fijarlo, uno de ellos gana a los otros tres sin decir nada en ninguna parte, y solo existe una pantalla donde ves cuál mandó.
Resultado:
> /autocompact
Auto-compact window: 200k tokens (from CLAUDE_CODE_AUTO_COMPACT_WINDOW)
Esa coletilla entre paréntesis es todo el tip. Si dice from CLAUDE_CODE_AUTO_COMPACT_WINDOW y tú no pusiste esa variable, alguien decidió por ti: un .zshrc de hace meses, el script de arranque de tu equipo, la imagen de un contenedor.
Cuatro sitios, y uno gana sin avisar
1. Nada. Si no tocas nada, Claude Code usa la ventana que tiene afinada para tu modelo. Aparece como default for this model.
2. El comando /autocompact 500k. Lo guarda en tus settings de usuario bajo la clave autoCompactWindow y lo aplica ya a la sesión actual. Si un scope de mayor prioridad, por ejemplo los managed settings de tu empresa, tiene esa clave, el comando guarda tu valor pero la sesión se queda con el del scope, y te lo dice en pantalla. Es la misma jerarquía que ya viste en cuando CLAUDE.md, skills y MCP chocan.
3. El flag --autocompact 500k al arrancar. Pisa tu ajuste guardado durante ese arranque sin modificarlo. Y al revés que el comando, a este no le puede un scope superior: el flag manda aunque los managed settings digan otra cosa.
4. La variable CLAUDE_CODE_AUTO_COMPACT_WINDOW. Mientras esté puesta gana al comando, al flag y al ajuste. Y /autocompact deja de cambiar nada: pasa a informarte del override.
Los formatos no son iguales en los cuatro. El comando y el flag aceptan 200000, 500k, 1M y hasta 200 como atajo de doscientos mil, y rechazan lo que se salga de 100K a 1M con un error explícito:
claude --autocompact 50
# error: option '--autocompact <auto|tokens>' argument '50' is invalid.
# It must be 'auto', or between 100k and 1M (e.g. 500k, 200000, or 200 as shorthand)
La variable de entorno solo entiende el entero pelado. Le pasé banana y Claude Code arrancó sin una sola queja. Ese es el problema de fondo: la que gana a las demás es la única que no valida nada.
Por qué es mejor que no la decidas tú
Aquí es donde la intuición falla. Uno piensa que bajar la ventana ahorra tokens, porque compacta antes y la conversación pesa menos en cada petición. El propio Claude Code dice lo contrario, con estas palabras dentro de /autocompact:
The auto setting picks a window tuned for your model and is strongly recommended for the best cost and performance.
Y si detecta que la has sobrescrito, por settings o por variable, añade el aviso:
Overriding auto may result in high token usage, especially when resuming long sessions.
Compactar antes significa compactar más veces, y cada compactación es una llamada extra que resume la conversación entera. Al reanudar sesiones largas eso se acumula. Por eso el valor de este tip no es elegir mejor número: es descubrir que tienes uno puesto sin saberlo.
Si lo que quieres es controlar el momento de la compactación en vez del tamaño de la ventana, la palanca es otra: el porcentaje de umbral con CLAUDE_AUTOCOMPACT_PCT_OVERRIDE, que ya está en el tip del contexto de 1M. Y si lo que te preocupa es qué se pierde al compactar, eso vive en qué sobrevive a un /compact.
Cómo dejarlo en su sitio
1. Pregunta quién manda
/autocompact
Lee la coletilla del final. Si pone default for this model, no tienes nada que hacer.
2. Si la fuente es una variable de entorno, encuéntrala
env | grep AUTO_COMPACT
Mira también tu .zshrc, tu .bashrc y cualquier script de arranque del proyecto. La variable gana desde donde esté.
3. Devuélvela a la del modelo
/autocompact auto
Ojo: si el override viene de la variable de entorno, el comando te lo dirá pero no podrá cambiarlo. Ahí toca borrar la variable y reabrir la sesión.
Referencia
| Dónde | Alcance | Formatos que acepta | Prioridad |
|---|---|---|---|
CLAUDE_CODE_AUTO_COMPACT_WINDOW |
Proceso y scripts | Solo entero pelado (200000) |
Gana a todo lo demás |
--autocompact |
Un arranque | 200000, 500k, 1M, 200, auto |
Gana al ajuste y a los managed settings |
/autocompact |
Sesión actual y siguientes | 200000, 500k, 1M, 200, auto |
Cede ante un scope superior |
autoCompactWindow en settings |
Según el scope del archivo | Entero de tokens | La base sobre la que mandan los anteriores |
| Sin configurar | Todo | No aplica | La ventana afinada para tu modelo |
Etiquetas de origen que puede mostrarte el comando: auto, from settings, from CLAUDE_CODE_AUTO_COMPACT_WINDOW, default for this model y default for an unrecognized model, esta última típica de un gateway o un ID de modelo que Claude Code no reconoce. Si la ventana configurada supera el contexto del modelo, añade · capped to X by model.
Docs oficiales: Model configuration, set the auto-compact window