Claude Code sessão lenta ou cara como resolver
Evite o aumento de custo e latência no Claude Code. Use /context para monitorar tokens e comandos para limpar o histórico e otimizar o uso de prompt cache.
Como evitar que sessões longas do Claude Code fiquem lentas e caras
Uma sessão longa do Claude Code fica lenta e cara porque cada turno reenvia todo o contexto, e esse contexto apenas cresce. A solução é manter a higiene em uma ordem específica. Execute /context para ver o que está ocupando o histórico, remova os itens pelos quais você paga em cada requisição, use /clear entre tarefas não relacionadas e /compact com uma instrução dentro de uma única tarefa longa. Trabalhe em períodos contínuos, pois um prompt cache frio transforma uma leitura barata em uma reescrita completa de tudo o que foi dito.
O motivo de o consumo ocorrer é explicado em o medidor de tokens por trás de uma sessão de agente.
Leia o /context antes de alterar qualquer coisa
Não tente adivinhar o que preenche a janela. O Claude Code informará.
O /context [all] exibe o uso atual do contexto como uma grade colorida, com sugestões de otimização para ferramentas com muito contexto e excesso de memória; o all expande o detalhamento por item no modo tela cheia. Leia o resultado como cinco categorias.
- O system prompt. As instruções de harness do próprio Claude Code. Fixas para a sessão.
- Tool definitions. O schema de cada ferramenta que o agente pode chamar, incluindo todos os servidores MCP (Model Context Protocol) conectados.
- Memory files.
CLAUDE.mde memória automática, carregados no início da sessão. - Files and tool results. Cada arquivo lido e tudo o que seus comandos imprimiram de volta.
- Message history. Suas interações e as respostas dele.
Os três primeiros são um custo fixo, pago em cada requisição durante a sessão. Os dois últimos crescem. Reduza o custo fixo uma vez, no início; gerencie a parte crescente continuamente.
Duas strings indicam que a janela está cheia:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.A primeira é um limite rígido, e a requisição é recusada; o erro de API correspondente é Prompt is too long. A segunda é uma janela de compactação, que pode estar abaixo da janela de contexto real do modelo em um modelo de 1 milhão de tokens. Requisições ainda funcionam após ela, portanto, essa é um aviso em vez de uma recusa.
Em um plano pago, o /usage adiciona a outra metade, sinalizando comportamentos como contexto longo ou cache misses e atribuindo o uso recente a skills individuais, subagents e servidores MCP.
CLAUDE.md é um custo permanente, mantenha-o enxuto
Seu CLAUDE.md é carregado no contexto no início da sessão e permanece lá. Se ele contiver um procedimento de deployment detalhado, esses tokens estarão presentes enquanto você corrige um erro de digitação em um arquivo de teste. A orientação da Anthropic é incluir apenas o essencial e manter o arquivo com menos de 200 linhas.
Mova procedimentos para skills. Uma skill é carregada apenas quando invocada; portanto, um workflow que você executa duas vezes por semana não consome recursos nos outros dias. Skills possuem orçamento próprio após uma compactação: o conteúdo é reinjetado, com limite de 5.000 tokens por skill e 25.000 no total, descartando os mais antigos primeiro. A truncagem preserva o início do arquivo, portanto, coloque as instruções mais importantes no topo do SKILL.md.
O que sobrevive a uma compactação determina onde uma instrução deve ficar.
- O system prompt e o estilo de saída não mudam, pois não fazem parte do histórico de mensagens.
- O
CLAUDE.mdna raiz do projeto, as regras sem escopo e a memória automática são reinjetados do disco. - Uma regra com frontmatter
paths:é perdida até que um arquivo correspondente seja lido novamente. - Um
CLAUDE.mdaninhado em um subdiretório é perdido até que um arquivo nesse subdiretório seja lido novamente. - Hooks não são afetados, pois um hook executa como código e nunca entra no contexto.
Portanto, uma regra da qual você depende deve estar no CLAUDE.md da raiz do projeto: o Claude Code limpa primeiro as saídas de ferramentas mais antigas e depois resume, então instruções do início da conversa podem ser perdidas. Edite a memória com /memory. O Claude Code mantém a cópia carregada no início da sessão, então um corte no meio da sessão mantém o prompt cache e só é aplicado no próximo /clear, /compact ou reinício.
/clear entre tarefas, /compact dentro de uma
Estes dois comandos parecem intercambiáveis, mas possuem custos muito diferentes.
/clear [name] inicia uma nova conversa com contexto vazio. Ele não envia nenhuma requisição, portanto não tem custo. Passe um nome para rotular a conversa anterior no seletor /resume; /reset e /new são aliases. Use este comando ao mudar para uma tarefa não relacionada, pois, caso contrário, a tarefa antiga será reenviada e cobrada novamente em cada mensagem da nova.
/compact [instructions] libera o contexto mantendo a mesma conversa: ele resume o histórico atual e o substitui. Use este comando dentro de uma tarefa longa onde a continuidade ainda é necessária.
Sempre forneça uma instrução para o /compact. Um comando /compact puro utiliza um prompt padrão que não sabe qual parte do trabalho você ainda precisa. Um comando com instrução mantém o contexto necessário:
/compact focus on the auth bug fix
/compact keep only the plan and the diffSe você compactar pelo mesmo motivo sempre, adicione uma instrução fixa no CLAUDE.md do seu projeto sob um cabeçalho # Compact instructions. Em uma nova sessão, o /compact imprime Not enough messages to compact., o que significa que ainda não há histórico.
Dois custos podem causar confusão aqui. A requisição de sumarização compartilha seu prefixo, então ela lê o cache existente em vez de reprocessar o histórico; a maior parte do tempo é gasta gerando o resumo. Compactar um contexto grande ainda é uma requisição grande, pois a conversa sendo sumarizada é a entrada. O turno após a compactação não é a parte lenta: ele reconstrói o cache para um prompt muito menor.
Existem dois comandos mais baratos. O /rewind [description] reverte o código e a conversa para um checkpoint; para um caminho que você deseja abandonar totalmente, ele é melhor que o compactar, pois trunca o histórico para um prefixo que já está em cache. O /recap anexa um resumo como saída do comando em vez de substituir o histórico, mantendo o prefixo em cache intacto.
A compactação automática repetitiva imprime isto:
Autocompact is thrashing: the context refilled to the limit...A compactação foi bem-sucedida, mas a saída de um arquivo ou ferramenta preencheu a janela várias vezes seguidas, então o Claude Code parou de tentar. Recupere lendo o arquivo grande em intervalos de linha, executando /compact com um foco que descarte a saída grande, movendo esse trabalho para um subagent, ou /clear se a conversa anterior estiver finalizada.
Servidores MCP possuem overhead fixo
Cada servidor MCP conectado adiciona carga a cada requisição durante toda a sessão. O custo ocorre independentemente de você chamar a ferramenta ou não.
O Claude Code mitiga isso. Por padrão, as definições de ferramentas MCP são adiadas, então apenas os nomes das ferramentas entram no contexto até que o Claude utilize uma ferramenta específica. Execute /context para ver o custo real dos seus servidores, e /mcp disable <name> para remover um que você não usará hoje. Se você executar seus próprios servidores MCP em um VPS, a mesma lógica limita a quantidade de ferramentas que um servidor deve expor.
Faça isso no início de uma sessão. Enquanto as definições forem adiadas, conectar ou desconectar um servidor apenas adiciona informações à conversa, e o cache é mantido. Quando as definições são carregadas no prefixo — porque a busca de ferramentas está desativada ou um servidor está isento de adiamento — a mesma alteração faz com que a próxima requisição releia tudo.
Filtre a saída de ferramentas verbosas antes de entrar no contexto
O resultado de uma ferramenta é um input, e o input é reenviado em cada turno subsequente. Uma execução de teste que gera 20.000 tokens de saída não é um custo único: você paga novamente por isso em cada turno até que o conteúdo saia da janela de contexto.
Filtre na origem. Um hook que reduz a execução de um teste apenas aos erros antes que o Claude os veja transforma esse bloco de saída em apenas algumas centenas de tokens, tanto neste turno quanto em cada reenvio:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Hooks nunca entram no contexto, pois são executados como código. Faça isso para qualquer ferramenta cuja saída ultrapasse o limite da tela. A mesma lógica se aplica a um arquivo de 3.000 linhas: solicite apenas o intervalo de linhas necessário, pois o arquivo inteiro permanece na janela de contexto após o recebimento.
Defina o escopo de leitura do agente e delegue tarefas ruidosas
Um prompt que especifica um arquivo fará a leitura apenas desse arquivo. Um pedido genérico para organizar o projeto fará a leitura de tudo o que o agente considerar relevante, e cada uma dessas leituras ocupará espaço na janela de contexto.
Delegue tarefas verbosas para um subagente. Execuções de testes e o processamento de logs consomem muito contexto; um subagente mantém essa saída em sua própria janela e retorna apenas um resumo. O tradeoff: um subagente constrói seu próprio cache, que não possui hits na primeira chamada, e utiliza o tempo de vida de cache de cinco minutos mesmo em assinaturas. A delegação protege o seu contexto principal de forma confiável. Ela nem sempre reduz o total de tokens.
O clock do cache: trabalhe em períodos
O prompt caching torna o reenvio acessível: 0.1x a taxa de entrada base para leitura do prefixo, contra 1.25x para escrita, ou 2x para escrita com lifetime de uma hora. Cada uso renova a entrada sem custo adicional, portanto o cronômetro reinicia a partir do último uso.
O lifetime que você recebe depende de como você se autentica; é por isso que a afirmação genérica "seu cache expira após cinco minutos" está incorreta.
- Em uma assinatura Claude, o Claude Code solicita o lifetime de uma hora automaticamente.
- Quando você ultrapassa o limite do seu plano e utiliza créditos de uso, você é cobrado por esse uso, então o tempo cai para cinco minutos.
- Em uma API key ou provedor de nuvem, o tempo permanece em cinco minutos.
ENABLE_PROMPT_CACHING_1H=1opta pelo lifetime de uma hora, eFORCE_PROMPT_CACHING_5M=1força o retorno para cinco minutos.
O conselho sobre o ritmo é o mesmo para ambos os casos: trabalhe em períodos contínuos, pois um intervalo de ociosidade que exceda o lifetime fará com que sua próxima execução reescreva todo o prefixo acumulado. Uma sessão do Claude Code desvinculada no tmux não custa nada enquanto ociosa, e o cache aquecido é o que o tempo de ociosidade preserva.
Algumas ações descartam o cache enquanto você ainda está trabalhando: trocar de modelo, alterar o nível de esforço, ativar o fast mode, conectar ou desconectar um servidor MCP, habilitar ou desabilitar um plugin, negar uma ferramenta inteira, compactar e atualizar o Claude Code. /model é a surpresa comum, pois cada modelo possui seu próprio cache; assim, a próxima requisição lerá todo o histórico sem hits de cache, mesmo que o conteúdo seja idêntico.
Editar arquivos, editar CLAUDE.md, invocar skills e comandos, executar /recap, fazer rewind e iniciar um subagent mantêm o cache. O escopo é limitado a uma máquina e um diretório; portanto, duas sessões em diretórios diferentes não compartilham o cache entre si.
Para verificar se o caching está funcionando, leia current_usage. cache_creation_input_tokens foi escrita na taxa de escrita do cache; cache_read_input_tokens foi servida a aproximadamente um décimo da taxa de entrada padrão. Um alto ratio de leitura para criação indica um estado saudável. Se a criação permanecer alta turno após turno, algo em seu prefixo está mudando constantemente.
Um context window maior resolve isso?
Parcialmente. Vários modelos atuais suportam um context window de 1 milhão de tokens, e a compactação funciona da mesma forma no limite superior. A economia não muda, pois o prompt completo ainda é reenviado e cobrado em cada turno. Um context window maior define quando você é forçado a agir; a higiene define o custo. Se o problema for o valor cobrado em vez do limite de tokens, qual plano do Claude se adapta ao seu fluxo de trabalho decide se você gastará dólares ou a cota do plano.
Edição de contexto e compactação na API são coisas diferentes
Se você estiver construindo seu próprio agente na Messages API, comandos de barra (slash commands) não existem e você deve implementá-los manualmente. Dois recursos do lado do servidor realizam essa função, e eles não são o mesmo recurso.
Edição de contexto remove seletivamente conteúdos específicos do histórico da conversa conforme ele cresce, substituindo cada item removido por um texto de placeholder para que o Claude saiba que algo foi excluído. É uma versão beta: envie anthropic-beta: context-management-2025-06-27 e configure as estratégias em context_management.edits. clear_tool_uses_20250919 limpa resultados de ferramentas (tool results), e clear_thinking_20251015 gerencia blocos de pensamento (thinking blocks). O trigger tem como padrão 100.000 tokens de entrada, o keep os últimos 3 usos de ferramentas, e o clear_tool_inputs é definido como false, garantindo que as entradas permaneçam e apenas os resultados sejam removidos.
Compactação gera um resumo e substitui todo o histórico da conversa por ele. Também é uma versão beta: envie anthropic-beta: compact-2026-01-12 e use o tipo de edição compact_20260112. O gatilho padrão é {"type": "input_tokens", "value": 150000}, e o valor deve ser de no mínimo 50.000.
A compactação possui uma regra de transferência que quebra agentes silenciosamente. A resposta começa com um bloco de conteúdo compaction contendo o resumo, seguido pelo bloco de texto normal. Você deve reenviar esse bloco em requisições posteriores, e a API então descartará todos os blocos de conteúdo anteriores a ele. Na prática: anexe o conteúdo completo de response.content, não apenas o texto.
A documentação da Anthropic define a compactação no lado do servidor como a estratégia principal para gerenciar o contexto em conversas longas, e a edição de contexto como a opção para controle refinado sobre o que é removido. Verifique o suporte do modelo primeiro. Os modelos atuais Opus, Sonnet e Fable suportam compactação; claude-haiku-4-5 não suporta, e a página de compactação contém a lista atualizada. Nenhuma das betas controla o /compact do Claude Code, que sua documentação descreve como uma requisição de sumarização única enviada pelo cliente.
FAQ
Por que minha sessão do Claude Code fica mais lenta e cara quanto mais tempo ela dura?
Porque a conversa inteira é enviada novamente em cada turno. Uma pergunta de uma linha em uma sessão aberta o dia todo carrega todo o histórico do dia. O prompt caching mantém o custo baixo enquanto o cache estiver ativo, a 0.1x da taxa de input base para leitura; quando um turno não encontra o cache, o mesmo prefixo é reescrito a 1.25x. Execute /context para ver o que está ocupando a janela, e leia o que compõe a cobrança de uma sessão do Claude Code para entender o mecanismo.
Qual é a diferença entre /clear e /compact no Claude Code?
O /clear inicia uma nova conversa com contexto vazio. Ele não envia nenhuma requisição, portanto não tem custo, sendo a escolha correta para tarefas não relacionadas. O /compact mantém a mesma conversa e substitui o histórico por um resumo, sendo a escolha correta dentro de uma única tarefa longa. Forneça um foco, como em /compact keep only the plan and the diff, pois a instrução define o que será mantido.
Como vejo o que está consumindo a janela de contexto do meu Claude Code?
Execute /context, ou /context all para o detalhamento completo por item. Ele exibe o system prompt, definições de ferramentas, servidores MCP, arquivos de memória e o histórico em uma grade colorida, com sugestões para ferramentas com muito contexto e excesso de memória. Em planos pagos, o /usage também atribui o uso recente a skills, subagents e servidores MCP individuais.
Devo usar uma janela de contexto de 1 milhão de tokens em vez de compactar?
Uma janela maior apenas adia o problema em vez de resolvê-lo. Vários modelos atuais suportam uma janela de contexto de 1 milhão de tokens, incluindo Opus 4.8 e Sonnet 5, e a compactação funciona da mesma forma neles. Cada turno ainda reenvia o prompt completo e ainda gera cobrança; portanto, uma conversa de 400.000 tokens é cara independentemente de caber ou não no limite.
Qual é a diferença entre context editing e compaction na Claude API?
O context editing limpa seletivamente o conteúdo antigo, principalmente resultados de ferramentas, deixando um texto de placeholder onde cada um estava para que o Claude saiba que foi removido. A compaction gera um resumo e substitui o histórico completo por ele. A documentação da Anthropic define a compaction como a estratégia principal para conversas longas e posiciona o context editing como a opção de ajuste fino. Ambos são betas com seus próprios headers, e ambos são independentes do /compact do Claude Code.