Compactação de contexto apagou o código do agente: como salvar os artefatos antes

A compactação de contexto resume as mensagens antigas pra caber mais conversa na janela, e o preço disso aparece depois: o agente entrega o resultado, mas não consegue mais reproduzir o script que rodou. Foi o que Simon Willison relatou em 12/09/2026, com um agente que trabalhou 27 minutos, devolveu GPX e GeoJSON e depois não entregou o Python usado. A rotina que resolve é simples: pedir o código no mesmo prompt da tarefa, baixar os arquivos assim que aparecem e guardar o registro fora da thread, antes de a sessão esticar.
Fala aí, beleza? Um agente consegue trabalhar quase meia hora, entregar exatamente o que você pediu e, alguns turnos depois, não conseguir mais te mostrar o código que ele mesmo rodou
Foi o que aconteceu num caso público de 12/09/2026: o agente ficou 27 minutos na tarefa, devolveu arquivos GPX e GeoJSON prontos pra download e, quando o autor pediu uma cópia do script Python usado, não veio nada
O motivo apontado por ele: a thread tinha sido compactada
Esse post pega esse episódio e transforma em rotina de trabalho: pedir o código junto do resultado, exportar os arquivos na hora e registrar o que foi executado antes de a sessão crescer demais
O que aconteceu no caso das rotas de corrida
O relato é do Simon Willison e a tarefa era bem direta
Ele pediu, em um prompt único, rotas de corrida de 5K e 10K em loop saindo da casa dele, usando dados do OpenStreetMap
O ambiente era o ChatGPT Work rodando GPT-6 Astra
O agente trabalhou por 27 minutos e entregou o pedido em dois formatos: uma visualização embutida na interface e arquivos GPX e GeoJSON pra baixar
Até aqui, entrega redonda
Quando ele perguntou COMO a rota tinha sido criada, o sistema respondeu que usou Nominatim pra localizar o endereço e Overpass pra baixar vias e trilhas do OpenStreetMap, calculando os loops localmente
Uma resposta de alto nível, resumo do método
Agora a parte chata: o código executado e os detalhes exatos do que foi feito não ficaram visíveis na interface do ChatGPT
Ele critica essa falta de transparência como um problema do produto, e isso é opinião dele, não descrição oficial
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 116 aulas
- 4 projetos
- 9h 23min
Quando pediu a cópia do código Python, o ChatGPT não conseguiu fornecer
Aqui vale o cuidado: a causa apontada (thread compactada) é hipótese do autor do relato, não confirmação da OpenAI
E a fonte não afirma que os arquivos GPX e GeoJSON sumiram, só o código
Ah, e o mapa exibido na interface veio de uma skill de visualização que, segundo o relato, gerou um arquivo HTML dentro da pasta /workspace da sessão, nomeado a partir da localidade (El Granada), pra embutir na UI
Que ChatGPT Work é esse?
Parada rápida pra situar quem não acompanhou
O ChatGPT Work é um agente dentro do ChatGPT que reúne informação de apps, arquivos e web pra produzir entregáveis: planilhas, slides, docs, web apps
Ele acompanha projetos complexos por horas, quebrando a tarefa em etapas, planejando, executando e pausando pra aprovação
Ou seja: é justamente o tipo de sessão longa em que a conversa cresce muito, beleza?
Por que o código pode sumir depois que a conversa é compactada
Vamos ao porquê antes do como
O sintoma é sempre o mesmo: o agente entrega o resultado, você pede o script que gerou aquilo e recebe um resumo do método em vez do código
A explicação mais plausível está em como a compactação funciona, e vale repetir que, no caso das rotas, essa ligação é hipótese do Willison, não confirmação da OpenAI
A OpenAI documenta compaction na API como forma de reduzir o tamanho do contexto preservando o estado necessário pros turnos seguintes
No Claude Code a lógica é a mesma: o comando /compact resume as mensagens mais antigas preservando contexto importante
Repara na palavra chave aí: resume
Resumo preserva o estado necessário pra continuar, não a transcrição literal do que passou
Uma analogia de aproximação: é como ata de reunião
A ata guarda as decisões, não guarda cada frase que foi dita na sala
Se depois você quiser a frase exata, com vírgula e tudo, a ata não resolve
Isso explica o mecanismo, mas não fecha o diagnóstico do caso público: ninguém confirmou oficialmente que foi a compactação que levou o script embora
Mesmo assim, a conclusão prática é dura e simples: o turno em que o agente entrega é o único momento em que você tem certeza de que o material está ali, inteiro, citável
Depois disso, é torcida
O que ter pronto antes de disparar uma tarefa longa
Nada de setup complicado, é organização mesmo
- Uma pasta local de destino pros arquivos que vão sair da sessão, criada ANTES de começar (nada de procurar onde salvar com o download já na tela)
- Um arquivo de registro simples, texto puro, onde você cola o prompt original, o que o agente disse que usou e o caminho dos arquivos baixados
- A decisão prévia de quais artefatos você quer: código, dados brutos, visualização, ou os três
Esse último ponto é o que mais gente pula
Se você não decidiu antes o que quer levar embora, você vai decidir depois, e depois pode ser tarde
No Claude Code tem um item extra que ajuda muito: o CLAUDE.md na raiz do projeto
Ele sobrevive à compactação, porque depois do /compact o Claude relê o arquivo do disco e reinjeta na sessão
A recomendação oficial é manter esse arquivo abaixo de 200 linhas
Então ele não é lugar pra despejar log: é lugar pra regra durável do projeto, tipo padrão de código, comandos do projeto e o que nunca deve ser feito
Se você já usa hooks no Claude Code, aquelas automações que rodam antes e depois do agente editar, esse mesmo raciocínio se aplica: quanto mais coisa vive em disco e menos coisa vive só na conversa, menos você depende da memória da sessão
Como salvar o código e os arquivos do agente antes da compactação
A rotina abaixo é o que transforma o susto do caso das rotas em processo
- Peça o código no MESMO prompt da tarefa, não depois
Em vez de só descrever o objetivo, feche o pedido com a exigência do artefato
Faça X.
Além do resultado, me entregue:
1) o script completo que você executou, em bloco de código
2) a lista das fontes de dados e endpoints usados
3) os arquivos gerados disponíveis para download
O erro comum deste passo: achar que dá pra perguntar depois
Foi exatamente isso que falhou no relato das rotas: o pedido do Python veio tarde
- Baixe os arquivos assim que eles aparecem
GPX, GeoJSON, HTML de visualização, CSV, o que for
Baixou, joga na pasta de destino que você criou antes
O erro comum deste passo: tratar o histórico da conversa como backup
Histórico é interface, não é o seu disco
- Peça a listagem do que foi executado enquanto a resposta ainda está fresca
No caso público, a resposta de método veio boa (Nominatim pra geocodificar, Overpass pra baixar vias e trilhas, cálculo dos loops feito localmente)
Um resumo assim já é ouro pra reconstruir depois, mesmo sem o código
O erro comum deste passo: aceitar só o resumo e não pedir o passo a passo com nomes de ferramenta e parâmetros
- Cole o que importa em arquivo fora da thread
Abre o editor, cria registro.md na pasta do projeto e cola: prompt original, script recebido, método relatado, caminhos dos arquivos
Leva 30 segundos
O erro comum deste passo: deixar pra fazer ‘quando terminar o projeto’
- No Claude Code, use
/compactcom instrução em vez de esperar a compactação acontecer sozinha
O comando aceita instrução junto, e a referência oficial de slash commands traz esse exemplo:
/compact Focus on the API changes
Assim você orienta o que precisa ser preservado no resumo
O erro comum deste passo: compactar sem instrução nenhuma e torcer pra que o resumo tenha guardado justo a parte que você ia precisar
- Mantenha o contexto durável no
CLAUDE.md
Tudo que precisa valer pra sessão inteira mora ali, porque o arquivo é relido do disco depois da compactação
O erro comum deste passo: usar o arquivo como diário da sessão e estourar as 200 linhas recomendadas
Recuperação: o que ainda dá pra tentar quando a sessão já esticou
Se a conversa já foi compactada e você percebeu tarde, ainda tem o que tentar
Cuidado importante: o que vem abaixo é Claude Code, com documentação oficial, e não se transfere pra outros produtos
Detalhe de um produto não vale como instrução de outro
- Abra o menu de checkpoints
Use /rewind, ou aperte Esc duas vezes com o campo de prompt vazio
O menu de checkpointing oferece seis opções: restaurar código e conversa, restaurar conversa, restaurar código, resumir a partir daqui, resumir até aqui e cancelar
O erro comum deste passo: confundir restaurar código com restaurar conversa e desfazer trabalho bom sem querer
- Saiba os limites antes de contar com isso
O checkpointing só rastreia arquivos editados dentro da sessão atual
Ele não rebobina arquivos symlinked nem hard-linked
E pode falhar com ‘No files were restored’ se os snapshots já expiraram, já que a retenção é controlada por cleanupPeriodDays
O erro comum deste passo: tratar checkpoint como controle de versão
Não é, e nunca foi 🙂
- Vá atrás do transcript no disco
O Claude Code grava as sessões em arquivos .jsonl:
~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
Se a variável $CLAUDE_CONFIG_DIR estiver definida, o caminho passa a ser $CLAUDE_CONFIG_DIR/projects/
E o --resume aceita o caminho absoluto do arquivo .jsonl da sessão
O erro comum deste passo: procurar o transcript pela pasta do projeto em vez do diretório de sessões codificado
Quando a compactação é aliada e quando ela custa caro
Não é vilã, beleza? Compactar é o que deixa a sessão longa continuar existindo
O problema é aplicar a mesma postura pros dois tipos de tarefa
| Cenário | O que a compactação faz | Risco real |
|---|---|---|
| Exploração longa (investigar, ler, comparar, decidir) | Resume o caminho e libera espaço pra seguir | Baixo: o que interessa é a decisão, não a transcrição |
| Tarefa que gera artefato reaproveitável (script, dataset, arquivo exportável) | Resume o intermediário junto com o resto | Alto: o código que gerou o resultado pode não voltar |
A régua é essa: se o valor da sessão está no RACIOCÍNIO, resumir ajuda
Se o valor está num ARTEFATO, o artefato precisa sair da conversa antes
Do lado de quem constrói em cima da API, dá pra controlar isso com mais precisão
A Anthropic expõe a compactação server-side ativando a estratégia compact_20260112 em context_management.edits, com o detalhe de que o bloco de compactação precisa ser devolvido nas requisições seguintes pra conversa continuar
Isso está em beta e disponível pra Claude 4.6 e posteriores
Tem também a estratégia clear_tool_uses_20250919 do context editing, que limpa resultados de ferramenta quando o contexto passa do limite configurado
Perceba a diferença de postura: uma coisa é você escolher o que some, outra é descobrir depois que sumiu
E o autor do relato vai além, defendendo que qualquer sistema de LLM que use compactação deveria preservar o texto pré-compactação e expor esse texto via chamadas de ferramenta do agente
Isso é opinião e recomendação dele, não política de produto de ninguém
Mas é uma opinião que faz sentido pra quem já perdeu script
Vale lembrar que esse tipo de comportamento aparece mais em tarefa longa de agente do que em geração de trecho de código, e é por isso que benchmark de agente vs código não medem a mesma coisa
O que eu vi montando agente por prompt no ChatGPT
Meu caso é outro, mas a lição bate no mesmo prego
No vídeo eu mostro o ChatGPT montando um agente de IA a partir de um prompt, e a primeira coisa que aconteceu foi ele me devolver só o código dentro da conversa
Nesse formato não funciona bem
Precisei pedir explicitamente o arquivo salvo
Reformulei o pedido pra algo do tipo ‘crie o arquivo e me disponibilize para download’, e só assim consegui tirar o artefato da conversa e levar pra ferramenta onde ele seria usado
E olha, nem sempre funciona de primeira: em um dos casos deu erro e eu tive que repetir a solicitação até o arquivo ser gerado
Enquanto ele montava o arquivo, eu acompanhava a execução
Isso não é frescura: é pra conferir se o processo REALMENTE concluiu antes de baixar
Tem também o caso do arquivo que baixa mas nem abre na ferramenta de destino
Quando isso rolou, a saída foi voltar ao chat e pedir a reformulação da estrutura
Outra coisa que apanhei: mandar arquivo demais como base faz o modelo se perder e começar a gerar saída com elemento que não existe
Nos meus testes, três arquivos de base foi o limite que rolou bem, acima disso ele começou a se perder
Ah, e o agente gerado veio com o valor de memória em 5 na tela, que era o padrão ali
Manter uma conversa já ‘treinada’ com material de base funciona como fábrica de rascunho reaproveitável, isso é mto massa
Mas sempre sobra ajuste manual depois, sem fórmula mágica
Importante ser honesto aqui: o vídeo não trata de compactação nem de perda de contexto por parte do agente
A experiência dele é sobre extrair o resultado da conversa em forma de arquivo antes de seguir
E é exatamente esse o ponto de contato com o caso das rotas: quanto mais a sessão carrega, mais cedo vale extrair o artefato
No vídeo você vê o pedido sendo reformulado até o arquivo sair pra download, e o que muda na prática quando o resultado deixa de ser texto na tela e vira arquivo no disco
Conclusão
Recapitulando o que importa
Compactação de contexto existe pra reduzir o tamanho do contexto preservando o estado necessário pros turnos seguintes, e isso é útil em sessão longa
O custo aparece quando o valor da tarefa está num artefato: no caso público, 27 minutos de trabalho, GPX e GeoJSON entregues e o script Python que não voltou
A regra de bolso cabe numa linha: o artefato só é seu quando está fora da thread
Próximo passo bem concreto pra sua próxima tarefa longa
Peça o código e os arquivos no MESMO turno da entrega, baixe na hora, cole o método relatado num arquivo de registro e só depois continue a conversa
Se for Claude Code, compacte você mesmo com instrução em vez de esperar, e deixe o durável no CLAUDE.md
Faça o teste na próxima sessão comprida e me conta se mudou o seu dia 😀
até o próximo post!
Perguntas frequentes
Por que a compactação de contexto apaga o código que o agente gerou?
Porque a compactação resume as mensagens mais antigas pra reduzir o tamanho do contexto, preservando só o estado necessário pra continuar a conversa. O código literal não faz parte desse resumo, então some junto com a transcrição original. Foi essa a hipótese apontada por Simon Willison quando o ChatGPT não conseguiu devolver o script Python das rotas de corrida.
Dá pra recuperar o código depois que a thread foi compactada?
No caso relatado, o ChatGPT não conseguiu fornecer o Python usado, e o próprio Willison aponta a compactação da thread como causa provável, sem confirmação da OpenAI. A fonte também não confirma se existe algum jeito oficial de reverter isso no ChatGPT. Por isso a recomendação é pedir o código no mesmo prompt da tarefa, antes de qualquer compactação acontecer.
O Claude Code tem alguma proteção contra perder contexto na compactação?
Sim, o CLAUDE.md na raiz do projeto sobrevive à compactação porque o Claude relê o arquivo do disco e reinjeta na sessão depois do /compact. A recomendação oficial é manter esse arquivo abaixo de 200 linhas, guardando regra durável do projeto, não log de execução. Ainda assim, isso não substitui salvar o código gerado durante a tarefa.
Qual a diferença entre /compact e /rewind no Claude Code?
O /compact resume as mensagens mais antigas preservando contexto importante, e aceita instrução junto, tipo /compact Focus on the API changes. Já o /rewind (ou Esc duas vezes com o prompt vazio) abre um menu de checkpoints com seis opções: restaurar código e conversa, restaurar conversa, restaurar código, resumir a partir daqui, resumir até aqui e cancelar. São ferramentas diferentes: uma reduz contexto pra frente, a outra volta no tempo.
O checkpointing do Claude Code recupera qualquer arquivo editado pelo agente?
Não totalmente. O checkpointing só rastreia arquivos editados dentro da sessão atual, não rebobina arquivos symlinked ou hard-linked. Também pode falhar com a mensagem ‘No files were restored’ se os snapshots já expiraram, já que a retenção é controlada pelo parâmetro cleanupPeriodDays.
Existe compactação também na API da Anthropic, fora do Claude Code?
Sim, a Anthropic tem a estratégia compact_20260112 em context_management.edits na Messages API, ainda em beta e disponível pra Claude 4.6 e versões posteriores. Ela exige que o bloco de compactação seja devolvido nas requisições seguintes pra continuar a conversa. Também existe a clear_tool_uses_20250919, que limpa resultados de ferramenta quando o contexto passa do limite configurado.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Bateu o limite de uso do Claude Code? Como retomar a tarefa sem refazer tudo
Bateu o limite de uso do Claude Code? Veja como retomar a tarefa de onde parou com /usage, CLAUDE.md e --continue, sem refazer nada.
Como pagar o Claude Code no Brasil: cartão, dólar, IOF e quanto fica em reais
Claude Code preço Brasil na prática: câmbio, IOF de 3,5% e quanto fica na fatura. Planos Pro e Max convertidos em reais e como pagar com cartão.
Como instalar uma skill no Claude Code: passo a passo
Saiba como instalar skill no Claude Code: use a pasta pessoal para todas as sessões ou a pasta de projeto para versionar. Frontmatter YAML é obrigatório.
