Você voltou para uma sessão longa do Claude Code depois de uma hora longe e o Claude parece ter esquecido detalhes que estavam na conversa. Não foi esquecimento: é a idle compaction, que troca a conversa inteira por um resumo quando a sessão fica parada. Para desligar, coloque "idleCompaction": false no settings.json (Claude Code 2.1.290 ou mais novo) ou use a linha Idle compaction do /config (2.1.302 ou mais novo).
O que é a idle compaction do Claude Code e quando ela dispara?
É uma compactação automática que roda quando você se afasta da sessão. Segundo a referência de settings, ela vem ligada por padrão e só age quando todas as condições abaixo são verdadeiras:
| Condição | O que a doc diz |
|---|---|
| Onde | terminal interativo, painel de chat da extensão do VS Code ou aba Code do app desktop (sessão na sua máquina ou por SSH) |
| Auto-compact | autoCompactEnabled ligado |
| Cache de prompt | conversa no TTL de uma hora |
| Tamanho | contexto chegou ao limite de 200.000 tokens (configurável) |
| Tempo parado | cerca de uma hora desde a última requisição, com o computador acordado |
A intenção, explicada por um mantenedor na issue anthropics/claude-code #106402, é evitar uma cobrança grande ao retomar a sessão depois que o cache expirou. A consequência é que o Claude continua a partir de um resumo, não da conversa completa.
Como saber se a sua sessão foi compactada sozinha?
Procure o aviso no terminal. A doc cita uma linha que começa com Compacted while idle, before the prompt cache expired. No VS Code e no app desktop o texto é parecido e termina com a instrução de desligar. Quem abriu a issue #106402 viu esta variação:
Compacted after an hour idle, using a summary written while you were away · turn off with "idleCompaction": false in settings.json
Se você viu esse aviso, o contexto detalhado daquela sessão foi substituído e não volta. A compactação não pode ser desfeita dentro da sessão.
Como desligar a idle compaction?
Há dois caminhos documentados, e o resultado é o mesmo.
Pelo /config: abra o /config numa sessão de terminal e mude a linha Idle compaction. A escolha vai para o seu settings de usuário e vale na hora. A linha exige Claude Code 2.1.302 ou mais novo.
Pelo settings.json: a chave vale em qualquer arquivo de settings e exige a versão 2.1.290 ou mais nova.
{
"idleCompaction": false
}
Se a linha não aparece no /config mesmo na versão certa, a doc aponta duas causas: outra fonte de settings define a chave (managed settings, a flag --settings ou um arquivo de projeto ou local, que sobrescrevem o seu de usuário), ou, antes da 2.1.314, o Claude Code não conseguiu buscar as feature flags e, nesse caso, a idle compaction nem roda.
E se eu só quiser que ela dispare mais tarde?
Mude o limite de tamanho com a variável CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS. O padrão é 200000, valores abaixo de 100000 sobem para 100000, e qualquer coisa que não seja um número inteiro positivo é ignorada. A variável também exige a 2.1.290 ou mais nova.
{
"env": {
"CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "600000"
}
}
O exemplo da doc usa 150000, para baixar o limite. Subir o número, como acima, só faz diferença se a sua janela de contexto for maior que 200 mil (como o opus[1m] do caso da issue). Numa janela de 200K, o auto-compact normal age antes de chegar lá.
E em uma versão antiga que ignora a chave?
Desligue o auto-compact inteiro. A doc diz que, ao desligar autoCompactEnabled, a idle compaction desliga junto. Para uma sessão só, use a variável de ambiente:
DISABLE_AUTO_COMPACT=1 claude
O custo é perder também a compactação automática normal perto do limite de contexto. O /compact manual continua funcionando. Para desligar tudo, inclusive o manual, existe DISABLE_COMPACT=1, que raramente é o que você quer.
A idle compaction age com agentes em segundo plano rodando?
Segundo um usuário, sim. Na issue #106402, o autor relata uma revisão de código em agente de segundo plano que começou às 08:54 e ainda gravava arquivos às 13:48. A sessão principal ficou sem chamada ao modelo desde as 12:06, então, ao mandar uma mensagem às 13:47, ela compactou em 207.101 tokens e caiu para cerca de 24 mil. O relato é de uma execução só, na versão 2.1.304, e o próprio autor avisa que não repetiu o teste. A resposta oficial na issue foi que a compactação pode ser desligada nas configurações.
A leitura prática: se você deixa agentes longos trabalhando em segundo plano enquanto a sessão principal guarda contexto que vai precisar quando eles voltarem, desligue a idle compaction antes de começar. A doc de contexto afirma que agentes em segundo plano continuam rodando depois de uma compactação, mas o resumo é o que a sessão principal passa a ter de memória.
Como compactar por escolha própria, sem esperar o automático?
Rode /compact quando você decidir que a conversa já cumpriu o papel. O resumo sai sob o seu controle e pode receber instruções do que preservar. A Verboo Code tem o mesmo comando no terminal, com tutorial em /compact na Verboo Code.
Na Verboo Code você decide quando compactar com o /compact, e os tokens são ilimitados: manter uma sessão longa aberta não pesa na sua cota.



