|

Resolvendo o problema de travamento do Claude Code: 6 causas principais e a verdade sobre como revivê-lo enviando mensagens

Quem já usou o Claude Code certamente já se deparou com esta cena: uma linha aparece no terminal com a mensagem "Symbioting… (3m 12s · ↓ 5.7k tokens)", a barra de progresso parece congelada e, por vários minutos, nada acontece. Você tenta enviar um "Ainda está aí?", e, para sua surpresa, o Claude retoma o trabalho imediatamente, concluindo a tarefa.

Essa experiência bizarra de "travamento seguido de ressurreição via mensagem" parece mágica, mas, na verdade, é o resultado de uma sobreposição de falhas no protocolo de streaming da Anthropic, mecanismos de timeout e gerenciamento de contexto. Este artigo, baseado na documentação oficial de solução de problemas do Claude Code e em discussões nos GitHub Issues #25979, #24688, #39718, #25286, #25539 e #51659, explica as causas reais desses travamentos e apresenta 7 métodos de recuperação e 5 estratégias de prevenção.

Valor central: Ao terminar de ler, você entenderá o significado por trás de cada verbo do spinner, por que enviar uma mensagem às vezes "ressuscita" o modelo, quando é obrigatório reiniciar com Ctrl+C e como reduzir a taxa de travamentos a quase zero.

claude-code-stuck-hanging-troubleshooting-guide-pt-pt 图示

Decifrando os indicadores de status do Claude Code

Para diagnosticar problemas de "travamento", o primeiro passo é entender a linha de status que o Claude Code exibe no terminal. O exemplo Symbioting… (3m 12s · ↓ 5.7k tokens) parece misterioso, mas é uma informação estruturada onde cada parte tem um significado claro.

Campo Valor de exemplo Significado
Verbo do Spinner Symbioting… Descrição antropomórfica da fase atual (customizável desde a v2.1.23)
Tempo de espera 3m 12s Tempo total decorrido desde o início desta rodada
Seta de fluxo ou ↓ indica recebimento de dados da API, ↑ indica envio
Contagem de tokens 5.7k tokens Quantidade de tokens baixados/enviados até o momento

O Claude Code possui 187 verbos de spinner padrão; Befuddling, Ruminating, Accomplishing e Symbioting são apenas alguns deles. Eles existem apenas para tornar a experiência de espera mais dinâmica e não possuem diferenças técnicas. A partir da versão 2.1.23, foi introduzida a opção de configuração spinnerVerbs, e a comunidade já criou pacotes com mais de 1900 verbos personalizados.

Para determinar se o Claude Code realmente travou, o segredo não está no verbo, mas em duas coisas: se o tempo continua aumentando e se a contagem de tokens continua mudando. Se após 3m 12s o tempo passa para 3m 42s, mas a contagem de tokens permanece em 5.7k, você pode concluir que a resposta em streaming estagnou.

Se você utiliza a API do Claude no Brasil através de serviços proxy de API como o APIYI (apiyi.com), o significado dos campos na linha de status é exatamente o mesmo que o oficial, e você pode usar o mesmo método de diagnóstico para localizar o problema.

As 6 principais causas do Claude Code travar

Ao entender os indicadores de status, você pode comparar com o comportamento real para localizar a causa raiz. As 6 causas abaixo estão ordenadas pela frequência de ocorrência e cobrem mais de 90% dos casos reais relatados no rastreador de Issues do GitHub.

claude-code-stuck-hanging-troubleshooting-guide-pt-pt 图示

Causa raiz 1: Interrupção silenciosa da resposta em streaming da API

Esta é a causa mais comum e oculta, correspondente ao Issue #25979 do GitHub. O cliente HTTP do Claude Code não possui um mecanismo de read timeout. Assim que a API upstream para de enviar pacotes durante a transmissão, o processo fica preso no estado de kernel epoll_wait aguardando novos dados. O spinner na interface continua girando, mas a contagem de tokens não aumenta. Causas comuns incluem instabilidade de rede transfronteiriça, multiplexação de tmux, ou quedas de conexão SSH de longa duração.

Causa raiz 2: Payload de invocação de ferramenta muito grande dispara reset de conexão

Corresponde ao Issue #39718. Quando o modelo solicita que o Claude Code execute uma ferramenta que gera uma saída massiva (por exemplo, Write em um arquivo de centenas de milhares de linhas), a conexão HTTP subjacente é redefinida pelo SO após 5 minutos sem transmissão de dados válidos. Como o Claude Code não captura esse erro, a interface mantém o estado de spinner. Esse tipo de travamento geralmente ocorre exatamente após 5 minutos.

Causa raiz 3: Thrashing de compactação automática

Quando a janela de contexto do Claude Code está quase cheia, a compactação automática é acionada. Se um arquivo muito grande ou a saída de uma ferramenta for lida de volta para o contexto logo após ser compactada, isso causará ciclos repetidos de compactação, fazendo com que o sistema pare e exiba o aviso Autocompact is thrashing. Antes do aviso aparecer, a interface parece travada.

Causa raiz 4: Uso de contexto acima de 80%

A documentação oficial afirma claramente que, quando o contexto excede 80%, o tempo de resposta se deteriora significativamente, manifestando-se em alguns cenários como uma falta de resposta prolongada. A característica desse "falso travamento" é que a contagem de tokens ainda aumenta lentamente, mas a uma velocidade muito inferior ao normal.

Causa raiz 5: Configurações anômalas causam travamento na inicialização

Corresponde aos Issues #31049, #29652, etc. Por exemplo, a configuração enableAllProjectMcpServers: true carregando muitos servidores MCP locais, ou additionalDirectories definida com prefixos de caminho anômalos como //C:/, fará com que o Claude Code trave durante a inicialização. Esse travamento geralmente ocorre nos primeiros segundos ao abrir uma nova sessão.

Causa raiz 6: Resíduo na linha de status (resposta concluída, mas UI não atualizada)

Corresponde ao Issue #25539. Em algumas versões, o Claude já retornou o resultado completo, mas o spinner da interface do terminal não foi limpo, parecendo ainda estar processando. Se você pressionar Enter ou enviar uma mensagem, o Claude começará imediatamente uma nova rodada de trabalho — ele não travou, a interface apenas "mentiu".

Ao investigar, recomendo verificar primeiro se a contagem de tokens está aumentando. Se você estiver usando o serviço proxy de API da APIYI (apiyi.com), pode verificar simultaneamente nos logs da plataforma se a solicitação já retornou 200 OK, fazendo uma validação cruzada com o estado da interface do Claude Code.

Por que enviar uma mensagem pode "ressuscitar" o Claude Code?

Muitas pessoas notam um milagre de engenharia "estranho": o Claude Code trava por 3 minutos, você envia um "ainda está aí?" ou simplesmente pressiona Enter, e ele continua o trabalho exatamente de onde parou. Esse fenômeno pode ser explicado no nível do protocolo.

A primeira categoria é o resíduo na linha de status (Causa raiz 6). O Claude, na verdade, já concluiu a resposta, mas a interface não limpou o spinner. Nesse momento, sua nova mensagem é tratada diretamente como o próximo prompt, parecendo uma "ressurreição", quando na verdade é apenas a continuação do fluxo.

A segunda categoria é o travamento na resposta em streaming (Causa raiz 1). Ao receber uma nova entrada, o Claude Code fecha ativamente o estado de hang atual, limpa a solicitação incompleta e inicia uma nova solicitação HTTP. A nova solicitação é enviada com o histórico completo da sessão, e o modelo continua a responder a partir do ponto de interrupção, por isso parece que ele "continuou o trabalho".

A terceira categoria ocorre quando um servidor MCP ou uma invocação de ferramenta está esperando uma resposta downstream. A nova mensagem é roteada pelo Claude Code como uma nova decisão de invocação de ferramenta, contornando indiretamente a chamada que travou.

É importante ressaltar que enviar uma mensagem não é uma solução mágica. Quando o travamento ocorre porque o processo subjacente já está em um estado de espera irrecuperável (como na fase final da Causa raiz 2), enviar uma mensagem apenas coloca a mensagem na fila de entrada, mas ela não será processada; nesse caso, é necessário usar Ctrl+C ou fechar o terminal. Para cenários que utilizam o serviço proxy de API da APIYI (apiyi.com), a taxa de sucesso da "ressurreição" por mensagem é maior, pois a plataforma de proxy geralmente libera conexões expiradas mais rapidamente do que os endpoints oficiais.

7 Métodos para Recuperar o Claude Code quando ele Trava

Diferentes causas raiz exigem diferentes abordagens de recuperação. A tabela abaixo organiza os 7 métodos mais eficazes por "nível de intrusão", do mais leve ao mais pesado, para facilitar sua decisão.

claude-code-stuck-hanging-troubleshooting-guide-pt-pt 图示

Método Comando Causa Raiz Aplicável Perde Contexto?
Enviar uma mensagem Digitar texto diretamente Causa 1 / 6 Não
Interromper operação Ctrl+C Causa 1 / 2 / 3 Não
Diagnóstico /doctor Qualquer, use primeiro Não
Compactar contexto /compact Causa 3 / 4 Parte do histórico vira resumo
Limpar sessão /clear Causa 4 (grave) Sim
Fechar e retomar claude --resume Causa 1 / 2 (grave) Não
Forçar encerramento kill -9 <pid> Causa 1 / 2 (irrecuperável) Perde rodada atual

A recomendação de operação é "do mais leve para o mais pesado". Primeiro, tente pressionar Enter ou enviar uma mensagem qualquer; se não funcionar, use Ctrl+C para cancelar a rodada atual. Se o terminal não responder de jeito nenhum, feche-o e use claude --resume para recuperar a sessão.

O comando /doctor é a ferramenta de diagnóstico oficial recomendada pela Anthropic. Ele verifica de uma só vez a instalação, o arquivo de configurações, a lista de servidores MCP, o uso da janela de contexto e outros indicadores críticos, geralmente fornecendo sugestões de reparo específicas. Se o resultado indicar Context: 87%, é quase certo que a causa é a 4, e o uso de /compact resolverá o problema imediatamente.

Para tarefas longas, recomendo incluir o /compact periodicamente no seu fluxo de trabalho para manter o uso da janela de contexto abaixo de 60%. Além disso, ao realizar a invocação do modelo via APIYI (apiyi.com), você pode solicitar cotas independentes para o processo principal do Claude Code e para os servidores MCP, facilitando a identificação da origem de eventuais falhas.

5 Melhores Práticas para Prevenir Travamentos no Claude Code

Resolver problemas apenas depois que eles acontecem é apagar incêndio; fluxos de trabalho realmente estáveis dependem de prevenção. As 5 práticas abaixo, baseadas na análise de causa raiz de vários Issues no GitHub, podem reduzir a taxa de travamentos a quase zero.

claude-code-stuck-hanging-troubleshooting-guide-pt-pt 图示

A primeira é a leitura fragmentada de arquivos grandes. Ler arquivos de mais de 1MB diretamente quase certamente sobrecarregará a janela de contexto. Mude para uma abordagem de dois passos: primeiro use ls -la para verificar o tamanho e, em seguida, use Read com os parâmetros offset/limit para ler em partes, evitando a causa raiz 4.

A segunda é delegar tarefas complexas para subagentes. Os subagentes do Claude Code possuem janelas de contexto independentes. Ao delegar tarefas como a geração de muitos arquivos ou reescrita de código em lote para um subagente, você evita que o contexto principal seja sobrecarregado na raiz.

A terceira é desativar servidores MCP suspeitos. Cada servidor MCP adicionado aumenta o risco de travamento na inicialização. Mantenha apenas os MCPs que você usa diariamente nas configurações e desative o restante para reduzir significativamente a causa raiz 5.

A quarta é definir timeouts para o modelo principal e de leitura. Uma prática comum na comunidade é definir STREAM_READ_TIMEOUT_MS para 120 segundos e adicionar um processo watchdog externo para monitorar se o JSONL parou de crescer, matando e reiniciando o processo automaticamente caso necessário. Isso é extremamente eficaz contra a causa raiz 1.

A quinta é usar uma rota de API estável. Chamadas transfronteiriças, conexões domésticas e o uso de tmux aumentam a probabilidade de interrupção no streaming. Uma solução simples é usar um serviço proxy de API como o APIYI (apiyi.com) para invocar modelos da série Claude. Isso permite que a conexão TCP de longa duração passe por nós de trânsito estáveis, reduzindo a frequência da causa raiz 1.

Equipes que implementam essas 5 medidas relatam que a frequência de travamentos cai de 5-10 vezes por semana para menos de 1, e o tempo médio de recuperação por incidente cai de 5-10 minutos para apenas alguns segundos.

Perguntas Frequentes

Q1: Os verbos no spinner significam que o Claude está fazendo coisas diferentes?

Não. Os 187 verbos padrão são apenas frases antropomórficas escolhidas aleatoriamente e não têm relação com o estado real do Claude. Para julgar o status, observe a contagem de tokens e o tempo de espera.

Q2: Perco o contexto após um Ctrl+C?

Não. O Ctrl+C apenas cancela a rodada atual que não foi concluída; toda a sessão permanece intacta. Se o Ctrl+C não responder, você pode pressionar novamente ou fechar o terminal e usar claude --resume para recuperar a sessão.

Q3: É comum travar ao usar o Claude Code no Brasil?

A rede transfronteiriça é um dos principais gatilhos para interrupções de streaming. Recomendamos usar um serviço proxy de API como o APIYI (apiyi.com) para invocar modelos Claude, permitindo que nós de trânsito estáveis mantenham a conexão de longa duração com a Anthropic, o que reduzirá significativamente a probabilidade de travamentos.

Q4: O que fazer ao ver `Autocompact is thrashing`?

Pare a tarefa atual imediatamente e use um comando de compactação com foco, como /compact keep only the plan and the diff, para limpar grandes blocos de saída bruta do contexto. Se ainda assim falhar, inicie uma nova sessão ou altere a leitura de arquivos grandes para o modo de subagente.

Q5: Posso alterar os verbos do spinner?

Sim. Adicione o campo spinnerVerbs em ~/.claude/settings.json. Os modos podem ser default, append ou replace, combinados com um array de strings. A comunidade possui pacotes com 88 temas e mais de 1900 verbos que você pode aplicar diretamente.

Resumo

A essência do travamento do Claude Code reside na sobreposição de problemas nos subsistemas de protocolo de streaming, gerenciamento de contexto e integração MCP em cenários críticos. Ao entender os 4 campos do indicador de status, memorizar as 6 causas raiz e os 7 métodos de recuperação, você transforma o que parece ser um "mistério inexplicável" em uma "falha conhecida".

Nossa recomendação prática é transformar os métodos de recuperação em memória muscular: primeiro envie uma mensagem, depois use Ctrl+C, em seguida execute /doctor e, por fim, feche o terminal e use claude --resume. Combinando isso com um serviço proxy de API estável e 5 práticas de prevenção — como manter o contexto abaixo de 80%, delegar arquivos grandes para subagentes e utilizar o APIYI (apiyi.com) para uma conexão estável — a grande maioria dos cenários de travamento pode ser resolvida em poucos segundos.


Autor: Equipe Técnica APIYI
Contato: Obtenha acesso a toda a linha de modelos Claude e suporte estável de serviço proxy de API para Claude Code via APIYI apiyi.com
Data de atualização: 13/05/2026

Similar Posts