Codex compacta o contexto com 55% de uso: por que acontece e como contornar
Voltar para o Blog
Artigocodexagente de programaçãodev toolstroubleshooting

Codex compacta o contexto com 55% de uso: por que acontece e como contornar

Mafra18 de outubro de 20264 min de leitura

O indicador de contexto do Codex mostra 55% de uso, sobra quase metade da janela, e mesmo assim aparece Compacting... no meio da tarefa. Não é impressão: o contador que decide a compactação não é o mesmo número que a interface mostra, e nele o raciocínio antigo do modelo entra duas vezes.

Este guia explica de onde vem a diferença, como reconhecer o caso e o que dá para configurar hoje para a compactação parar de te pegar no meio do trabalho. Tudo foi conferido no código-fonte do repositório openai/codex, na tag rust-v0.163.0 (estável atual) e na main, em 18/10/2026.

Por que o Codex compacta o contexto com 55% de uso?

Porque o contador de compactação soma uma estimativa do raciocínio antigo por cima do total que o servidor já informou, e esse total já inclui esse raciocínio. O resultado passa do limite muito antes da barra encher.

Trecho de codex-rs/core/src/context_manager/history.rs:

if server_reasoning_included {
    last_tokens.saturating_add(items_after_last_model_generated_tokens)
} else {
    last_tokens
        .saturating_add(self.get_non_last_reasoning_items_tokens())
        .saturating_add(items_after_last_model_generated_tokens)
}

O Codex só deixa de somar a estimativa quando o servidor avisa, pelo header x-reasoning-included, que o raciocínio já está no total. Nas reproduções publicadas na issue #53913, esse header não veio nem na conexão nem nos metadados da resposta. Sem ele, cada item de raciocínio criptografado das rodadas anteriores é estimado a partir do tamanho do conteúdo e somado de novo.

Quanto isso infla a conta

Os números abaixo foram reconstruídos pelos próprios autores das issues, com a soma fechando exatamente no gatilho da compactação:

CasoBarra mostravaEstimativa somada de novoContador de compactaçãoLimite
#53309, janela de 1M configurada459.164 (cerca de 55%)324.498788.399784.800
#53913, janela de 500k255.367 (54%)200.147455.514450.000

Outros relatos na mesma issue, entre 15 e 17/10/2026, mostram compactação com 56%, 65% e 66% de uso, inclusive no Codex CLI 0.163.0. Todos com gpt-6.1-sol em esforço high ou maior.

Fluxograma: o Codex compacta longe do limite porque conta o raciocínio antigo duas vezes; baixe o esforço de raciocínio, compacte você com /compact antes de uma tarefa longa; se não quer parar no meio, ligue a compactação no fim do turno
Do sintoma ao contorno, em três passos e um ramo.

Como saber se é esse o problema?

Três sinais juntos: a compactação começa bem abaixo de 90% na barra, a sessão é longa e o esforço de raciocínio está em high ou acima. Confira a versão e o esforço:

codex --version
grep -E 'model_reasoning_effort|model_auto_compact_token_limit|model_context_window' ~/.codex/config.toml

Quanto mais longa a conversa e mais alto o esforço, mais itens de raciocínio se acumulam, e maior a parcela contada duas vezes. Sessão curta ou esforço baixo quase não sente o bug.

Aumentar o model_auto_compact_token_limit resolve?

Não. O valor configurado é limitado a 90% da janela de contexto, então colocar um número maior não empurra o gatilho para frente. Trecho de codex-rs/protocol/src/openai_models.rs:

let context_limit = self
    .resolved_context_window()
    .map(|context_window| (context_window * 9) / 10);
...
config_limit.map_or(context_limit, |limit| std::cmp::min(limit, context_limit))

Um dos relatos (#54825) testou até o maior inteiro de 64 bits e o limite efetivo continuou em 90%. Também não existe chave no config.toml para desligar a compactação automática.

Como contornar a compactação prematura no Codex?

Dá para reduzir a conta dobrada e escolher o momento em que a compactação acontece. São três ajustes, do mais simples ao mais fino.

1. Baixe o esforço de raciocínio

A estimativa cresce com o tamanho do raciocínio guardado, então menos raciocínio por resposta significa menos conta dobrada. No ~/.codex/config.toml:

model_reasoning_effort = "medium"

Ou troque só na sessão com /model. Deixe high para o trecho que precisa, não para a conversa inteira.

2. Compacte você, na pausa certa

O pior da compactação automática é cair no meio de uma tarefa longa. Antes de pedir uma mudança grande, rode:

/compact

Você escolhe o momento, a tarefa começa só com o resumo no contexto e a chance de ela ser interrompida cai.

3. Ligue a compactação no fim do turno

O Codex tem uma chave que compacta depois da resposta final, quando você está entre uma tarefa e outra, em vez de esperar o gatilho do meio do trabalho:

model_post_turn_compact_threshold_percent = 70

O valor é a porcentagem da janela útil que dispara essa compactação, de 0 a 100. Zero ou ausente desliga. Ela usa o mesmo contador inflado, então não corrige a conta; o que muda é a hora: a compactação passa a acontecer na pausa, não no meio da próxima tarefa.

Quando sai a correção oficial?

Ainda não saiu. A issue #53309 está aberta desde 12/10/2026, e o mesmo trecho que soma a estimativa segue na main em 18/10, sem PR de correção da OpenAI ligado a ela. Acompanhe a issue e, quando a correção entrar numa versão estável, volte o esforço para o nível que você usava.

Antes de compactar, vale olhar o que de fato ocupa o contexto. Na Verboo Code, o /context mostra isso, e o /compact roda quando você decide.

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

Artigos relacionados