Claude Code compactou a sessão sozinho após 1 hora parado: como desligar a idle compaction
Voltar para o Blog
Artigoclaude codetroubleshootingagente de programacaodev tools

Claude Code compactou a sessão sozinho após 1 hora parado: como desligar a idle compaction

Mafra3 de novembro de 20265 min de leitura

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çãoO que a doc diz
Ondeterminal 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-compactautoCompactEnabled ligado
Cache de promptconversa no TTL de uma hora
Tamanhocontexto chegou ao limite de 200.000 tokens (configurável)
Tempo paradocerca 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.

Fluxograma: reconhecer o aviso Compacted after an hour idle, abrir /config, desligar com idleCompaction false ou elevar o limite com CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS; em versão antiga, DISABLE_AUTO_COMPACT
Do aviso ao ajuste. Fonte: documentação oficial do Claude Code (settings-reference e env-vars).

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.

Gostou deste artigo?
Compartilhe conhecimento com sua rede.
// Leia também

Artigos relacionados