API Error: Connection lost mid-responseの原因と対処——v2.1.227で改名された「接続が切れた」エラー
Claude Codeで応答の途中に「API Error: Connection lost mid-response. The response above may be incomplete.」と出て止まる——この文言をそのまま検索しても情報が少ないのは、これが比較的新しい名前だからだ。公式エラーリファレンスは「v2.1.227より前は Connection lost mid-response は Connection closed mid-response と表示されていた」と明記しており、同時に Response stalled mid-stream も The response stopped arriving へ、Connection closed while thinking, before producing a response も Connection lost before a response was produced へ付け替えられている。つまり中身は前からある事象で、単語だけが替わった。本記事はこの改名を起点に、公式ドキュメントと公開Issueだけを根拠として整理する。まず「途中で切れた」4つのメッセージ(Server error/Connection lost/computer went to sleep/The response stopped arriving)の公式定義と、途中まで流れた出力が意図的に保持される理由——送り直すと同じツール呼び出しを二重に実行しうるため——そして復帰手順が continue と返すことである点。次に、なぜ自動で再試行されないのかを公式の Automatic retries の分岐で説明する(何も完了していない段階の切断は最大10回のバックオフで再送、思考後・出力前なら最大2回で Connection lost before a response was produced、ブロック完了後は再送せず注記を出す)。さらに切断が起きうる3つの層(手元の端末と回線/プロキシ・ゲートウェイなどの経路/サーバ側と接続の再利用)、mTLS証明書ローテーション時の再読み込み(v2.1.232以降)、9手の切り分けチェックリスト、4つのストリーム監視タイマーの既定値(first-byte 180秒/event 300秒/byte 180秒/body idle 5分)と CLAUDE_CODE_MAX_RETRIES・CLAUDE_CODE_RETRY_WATCHDOG・API_TIMEOUT_MS などの環境変数、似たメッセージ8種との見分け方の対応表、そして生のHTTPSは健全なのにCLIだけECONNRESETで落ちる実報告(#86473/#85979)を扱う。最後に、症状と復帰手順は公式に文書化されている一方で原因の公式説明はまだ無いこと、CHANGELOGに改名の記載が見当たらないことまで、確度を分けて示す。