Três pull requests já mesclados na branch principal do repositório openai/codex revelam a direção da reformulação no gerenciamento da janela de contexto do Codex: quando uma sessão ultrapassa o limite da janela, o sistema deixa de gerar um resumo para comprimir o histórico e passa a ativar diretamente uma janela totalmente nova para continuar o trabalho. As capacidades relacionadas ficam todas atrás da feature flag `Feature::TokenBudget`, ainda não lançada oficialmente.
A abordagem atual é a compressão por resumo. Quando a janela está quase cheia, o sistema pede ao servidor para condensar a conversa anterior em um resumo e usá-lo no lugar do histórico original. Esse método tem dois custos fixos: gerar o resumo em si consome tokens, e a compressão tem perdas — convenções de interface, nomes de caminhos, decisões fechadas algumas rodadas antes podem ser apagadas no processo de condensação. Quem já rodou tarefas longas com o Codex conhece bem esse segundo modo de falha: o modelo esquece uma regra combinada duas horas antes e ainda assim responde com toda a confiança.
O modelo pode pedir uma folha nova por conta própria
O primeiro passo é o PR #27488, mesclado em 11 de junho, intitulado "Add new context window tool". Ele adiciona a ferramenta `new_context`, disponível apenas para o próprio modelo, descrita pelo autor como uma "escape hatch" para quando a janela atual se torna inviável.
A solicitação é registrada em `AutoCompactWindow` e consumida logo após a amostragem; a solicitação seguinte na mesma rodada já cai na janela nova. O ponto de partida da nova janela é um checkpoint de compressão sem resumo, que mantém apenas o contexto inicial — o histórico de conversa anterior não é levado adiante.
A limpeza manual passa a seguir o mesmo caminho
O segundo passo é o PR #29743, mesclado em 23 de junho. Ele unifica a compressão manual e a automática em um único ciclo de vida, `compact_token_budget`: com o token budget ativado, a compressão deixa de pedir um resumo ao servidor e passa a carregar localmente um contexto inicial totalmente novo.
Os detalhes técnicos desse passo escondem certa contenção: o comportamento visível externamente é preservado, os hooks de compact continuam disparando normalmente, o evento de ciclo de vida `ContextCompaction` continua sendo emitido. Ou seja, clientes que dependem desses eventos não precisam mudar nada — o que muda é a implementação por baixo.
A parte recuperada fica a cargo do histórico e das notas
Os dois primeiros passos resolvem apenas o "descartar"; o PR #39827, mesclado em 21 de agosto, é que completa o "recuperar". A descrição desse PR é direta: sessões com token budget precisam de uma forma de restaurar o contexto de conversa anterior e preservar o estado de trabalho entre trocas de janela.
Ele adiciona dois grupos de ferramentas. As ferramentas de histórico cuidam de listar janelas e entradas, ler uma entrada específica e buscar no conteúdo da sessão; as ferramentas de notas cuidam de listar, ler, buscar, anexar e escrever notas persistentes. As chamadas passam pelo backend do Codex, exigem o provedor OpenAI e autenticação de backend, e também ficam atrás da feature flag `features.token_budget.use_history_notes_history`.
No plano técnico, foram criadas várias limitações de taxa: a saída é tratada de forma consciente de truncamento, e os parâmetros das requisições têm limites definidos. Os comentários da revisão automática se concentram no teto de 10 mil tokens para resultados em texto puro, nos limites de parâmetros para operações com notas e na sugestão de um lançamento em fases.
O que está sendo trocado, no fundo
Compressão por resumo e troca de janela com recuperação são, no fundo, duas estratégias de memória diferentes. A primeira é uma compressão implícita e com perdas: o modelo não sabe o que perdeu, nem tem como recuperar. A segunda é um reinício explícito e sem estado: o modelo sabe exatamente que o conteúdo antigo ainda existe em algum lugar e vai buscá-lo quando precisar.
O custo também muda de lugar. A falha da compressão com perdas acontece silenciosamente; a falha da troca de janela vira "deveria ter buscado e não buscou" ou "buscou, mas não encontrou o certo". A primeira é difícil de depurar, a segunda pelo menos aparece no log. Para agentes que executam tarefas longas, uma falha observável é muito mais fácil de lidar do que uma falha silenciosa.
A economia é o ganho do outro lado. Um resumo exige uma chamada extra ao modelo, um custo que se repete várias vezes em sessões longas; a troca de janela não gera essa chamada, e a recuperação só ocorre quando necessário, entrada por entrada. Para usuários intensos que esgotam a cota diariamente, essa é uma economia concreta.
Vale deixar claro o ritmo: um PR mesclado não significa recurso lançado. As três mudanças ainda estão atrás de feature flags, e a revisão automática continua sugerindo um lançamento em fases. Da primeira versão da ferramenta em junho até o complemento de histórico e notas em agosto, a OpenAI já passou mais de dois meses lapidando esse caminho — quando o interruptor será ligado, e para quem, os registros do repositório ainda não respondem.
Fontes: três pull requests já mesclados no repositório openai/codex, CocoLoop, comentários de revisão automática no GitHub; nomes de ferramentas, nomes de feature flags e status de mesclagem foram conferidos item a item pelos registros do repositório.