API Error: Connection lost mid-response — causas e solução do erro de conexão perdida renomeado na v2.1.227
O Claude Code para no meio da resposta e mostra API Error: Connection lost mid-response. The response above may be incomplete. Pesquisar essa frase exata devolve pouca coisa porque o nome é relativamente novo: a referência oficial de erros diz que, antes da v2.1.227, Connection lost mid-response aparecia como Connection closed mid-response, e que ao mesmo tempo Response stalled mid-stream virou The response stopped arriving e Connection closed while thinking, before producing a response virou Connection lost before a response was produced. O fenômeno já existia; só a palavra mudou. Partindo dessa renomeação, este artigo organiza tudo apoiado apenas na documentação oficial e em issues públicas. Primeiro, a definição oficial das seis mensagens de resposta interrompida (Server error, Connection lost, computer went to sleep, The response stopped arriving, Part of the response never arrived e The response stream was malformed), o motivo de a saída parcial ser preservada de propósito — reenviar poderia executar a mesma chamada de ferramenta duas vezes — e o procedimento de retomada, que é responder continue. Depois, por que não há nova tentativa automática, pela bifurcação oficial dos Automatic retries: quedas antes de qualquer conclusão são reenviadas com backoff até 10 vezes; depois do raciocínio e antes da saída, no máximo 2 vezes, até terminar em Connection lost before a response was produced; depois de um bloco concluído, nada é reenviado e o aviso aparece. Em seguida, as três camadas em que a conexão pode se romper (equipamento e conexão local, caminho com proxy e gateway, servidor e reuso de conexão), a releitura do material mTLS na rotação de certificados (a partir da v2.1.232), um checklist de isolamento com 9 passos, os valores padrão dos quatro temporizadores de vigilância do stream (first-byte 180 s, event 300 s, byte 180 s, body idle 5 minutos) e variáveis como CLAUDE_CODE_MAX_RETRIES, CLAUDE_CODE_RETRY_WATCHDOG e API_TIMEOUT_MS, além de uma tabela para distinguir oito mensagens parecidas. Também traz os relatos reais em que o HTTPS puro passa e só a CLI cai com ECONNRESET (#86473 e #85979). No fim, separa por grau de confiança o que está documentado — sintoma, sentido e retomada — do que ainda não saiu: a explicação oficial da causa e qualquer registro da renomeação no CHANGELOG.