「API Error: The response stopped arriving」は、応答が流れている途中で、接続は開いたままなのにデータが届かなくなり、Claude Code自身の監視タイマーがその接続を打ち切ったことを知らせる表示です。それまでに完了した出力は画面に残っています。対話セッションならcontinueと返せば、最後に完了したところから続けられます。
API Error: The response stopped arriving. The response above may be incomplete.
この表示は、v2.1.227より前はResponse stalled mid-streamという文言でした。公式のエラーリファレンスが改名を明記しており、起きていることは同じです。古い文言で書かれた情報や不具合報告を探すときは、両方の文言で検索してください。
最初に見るのは「API Error:」の後ろの言い回し
「止まった」「切れた」の表示は、原因ごとに文言が違う
出力が出始めたあと、接続は開いたままデータが止まった
出力が出始めたあと、接続そのものが切れた
考え終えたあと、出力が1つも始まる前に止まった
使えるデータが無いまま応答が終わり、ストリーミングなしで送り直した
目次
1. この表示の意味——切断ではなく「無音」
Claude Code公式のエラーリファレンスは、この表示を「接続は開いたままだったが、データを届けなくなったため、ストリーミングのアイドル監視(idle watchdog)が打ち切った」と説明しています。APIが返したエラーの本文ではなく、応答を受け取っていたClaude Codeが自分で付けている注記です。
同じ「途中で止まった」でも、Claude Codeは原因ごとに言い回しを変えています。公式が並べているのは次の4つで、末尾の「The response above may be incomplete.(上の応答は不完全かもしれません)」が共通です。
API Error: Server error mid-response. The response above may be incomplete.
API Error: Connection lost mid-response. The response above may be incomplete.
API Error: Your computer went to sleep mid-response. The response above may be incomplete.
API Error: The response stopped arriving. The response above may be incomplete.
1行目は応答の途中でサーバーが過負荷や5xxのエラーを返した場合、2行目は接続が切れた場合、3行目は応答の途中でPCがスリープした場合です。4行目のこの表示だけが、エラーも切断も起きていないのに、データが来なくなったことを表しています。
打ち切るのは4つの監視タイマー
公式のネットワーク設定ドキュメントによると、Claude Codeは静かになったストリームを打ち切るタイマーを4つ持っています。死んだ接続がいつまでも固まったままにならず、失敗として扱えるようにするためです。応答が流れ始めてから効くのは、下の表の上から3つです。
| タイマー | 打ち切る条件 | 既定の時間 |
|---|---|---|
| バイト単位の監視 | 回線上に1バイトも来ない(SSEのキープアライブも来ない) | Anthropic APIに直接つなぐとき180秒、それ以外300秒 |
| イベント単位の監視 | 応答のイベントが1つも読み取れない | 300秒(すべてのプロバイダー) |
| 本文のアイドルタイムアウト | 5分間バイトが来ない | 5分(直接のAnthropic APIとClaude Platform on AWS以外) |
| 最初の1バイトの期限 | 送信後、応答のヘッダーが1つも来ない | 直接のAPIで180秒、それ以外300秒(本文32KBごとに1秒追加)。この表示ではなくNo response from APIになる |
Anthropic APIに直接つないでいる場合、目安はバイト単位の監視の180秒です。つまりこの表示が出るまでの間、画面は数分止まって見えます。公式によると、リクエストが生きたまま20秒データが来ないと、先に次のバナーが出ます。これは「まだ失敗していない」という表示で、カウントダウンは打ち切りの時点までを指しています(v2.1.185より前は10秒で、文言も違いました)。
Waiting for API response · will retry in … · check your network
データが戻ればバナーは自然に消えます。消えずに打ち切りまで進み、しかも出力の一部がすでに完了していたときに、この記事の表示が出ます。
2. v2.1.227で「Response stalled mid-stream」から改名された
公式エラーリファレンスは、4つの表示の説明のすぐ後に「v2.1.227より前は、Connection lost mid-responseはConnection closed mid-response、The response stopped arrivingはResponse stalled mid-streamと表示されていた」と書いています。同じ版で、出力が始まる前の表示も付け替えられました。
| v2.1.227より前の表示 | いまの表示 | 当サイトの記事 |
|---|---|---|
Response stalled mid-stream | The response stopped arriving | この記事 |
Response stalled while thinking, before producing a response | The response stalled before a response was produced | この記事の3章 |
Connection closed mid-response | Connection lost mid-response | closedとlostの記事(下の本文) |
旧文言のResponse stalled mid-streamが、モデルが同じ語を延々と繰り返す現象と一緒に出た例は、Response stalled mid-streamと「court」の無限ループを扱った記事にまとめています。接続が切れた側の表示は、旧文言の時代の報告をConnection closed mid-responseの記事に、改名後の文言をConnection lost mid-responseの記事に分けて解説しています。
版の目安になる
stopped arrivingと出たなら、そのClaude Codeはv2.1.227以降です。stalled mid-streamと出るなら、それより古い版です。
CHANGELOGには載っていない
2026年9月22日に公式CHANGELOGのv2.1.227の項を読みましたが、文言の変更は書かれていませんでした。npmでの公開は2026年8月10日(UTC)です。
報告は両方の文言で探す
同じ現象が2つの名前で報告されています。GitHubのIssueを検索するときは、新旧どちらの文言でも当たってください。
v2.1.222より前は、誤報のことがある
公式によると、v2.1.222より前のClaude Codeには誤報が2種類ありました。1つは、ANTHROPIC_BASE_URLやANTHROPIC_AWS_BASE_URLで経由するゲートウェイで、サーバーのキープアライブが届いているのに、読み取れたイベントしか数えずに打ち切っていたこと。もう1つは、応答が完了した後に接続が止まった場合にもこの注記を出し、完全な応答をエラー扱いしていたことです。claude --versionが2.1.222より小さいなら、まず更新してください。
3. 似た表示との違い
どの表示になるかは、応答がどこまで進んだところで止まったかで決まります。公式の「Automatic retries」の説明を、応答の進み方に沿って並べると次のようになります。
止まった時点が後ろほど、残る出力は多く、自動の送り直しは少ない
① ヘッダーを待つ間
期限内に応答のヘッダーが来ない。1回まで送り直す
No response from API
② 何も完了していない間
ヘッダーは来たが中身が来ない、または考え終えて出力前に止まった。通常の10回とは別に1回まで送り直し、考え終えた後に再び止まると次の表示で終わる
The response stalled before a response was produced
③ ブロックを完了した後
文章のまとまりかツール呼び出しを1つ完了した後(考え終えて書き始めた後を含む)に止まった。送り直さない
The response stopped arriving(この記事)
④ 応答が完了した後
完全な応答を残し、ターンを普通に終える。注記は出ない
表示なし(v2.1.222以降)
③で送り直さない理由も、公式に書かれています。文章やツール呼び出しを1つ完了した後にリクエストを送り直すと、同じツール呼び出しを二重に実行するおそれがあるからです。だからClaude Codeは完了した分を残し、ターンを捨てる代わりに注記を付けます。
| 表示 | 起きていること | 残る出力と送り直し |
|---|---|---|
The response stopped arriving | 接続は開いたまま、データが止まった | 完了分は残る。送り直さない |
Connection lost mid-response | 接続そのものが切れた | 完了分は残る。送り直さない |
Server error mid-response | 途中でサーバーが過負荷や5xxを返した | 完了分は残る(v2.1.199以降)。送り直さない |
The response stalled before a response was produced | 考え終えた後、出力が始まる前に2回続けて止まった | 残る出力は無い。1回送り直した後の表示 |
No response from API | 期限内に応答のヘッダーが1つも来なかった | 残る出力は無い。1回送り直した後の表示 |
Streaming response ended before any complete data was received | 応答が使えるデータの無いまま終わった | ストリーミングなしで自動的に送り直す(警告のみ) |
Connection lost mid-responseとの違いは「切断か、無音か」
どちらも途中まで出力が出た後の表示で、残る出力とcontinueでの再開は共通です。違うのは止まり方です。lostは接続が失われたという判定で、手元の回線の瞬断やVPNの張り直し、途中の機器による切断を疑います。stopped arrivingは、接続は残っているのに中身が流れてこないという判定で、監視タイマーの時間まで待ってから打ち切られています。そのため、6章で扱うタイマーの調整が効く余地があるのは、stopped arrivingの側だけです。
Streaming response ended…との違いは「止まったか、空で終わったか」
公式によるとStreaming response ended before any complete data was receivedは、応答が使えるデータを1つも届けないまま終わったときの警告です。Claude Codeはストリーミングをやめて同じリクエストを送り直し、ターンを続けます。警告は対話セッションで1セッションに1回だけ出ます(v2.1.239より前は黙って送り直していました)。よくある原因は、途中のプロキシやゲートウェイが応答の本文を消費・変換してしまうことだと公式は書いています。stopped arrivingは応答が途中まで来てから止まったもので、自動では送り直されません。
4. 途中までの作業はどうなるか
公式の説明では、Claude Codeは完了したブロックをすべて残し、ターンの終わりに途中だった最後のブロックを捨てます。画面の最後の数文や、最後のツール呼び出しが欠けていることがあるのはこのためです。完了していたツール呼び出しは実行され、その結果からターンが続きます。実行の環境ごとに、止まった後の扱いが違います。
対話セッション
画面に残った応答を読み、continueと返すと、最後に完了したブロックから続きます。最初から指示し直すと、実行済みの操作を重ねるおそれがあります。
-p・Agent SDK・クラウドセッション
途中で止まった応答が文章だけでツール呼び出しを含まないなら、Claude Codeが自分で続きを促します。連続3回まで試し、使い切ったときにだけ注記が出ます(v2.1.246以降)。
サブエージェント
対話か非対話かにかかわらず、文章だけの応答ならサブエージェントに続きを促します。促しを使い切ると、注記がサブエージェントの最後のメッセージになります(v2.1.257以降)。
フック
公式のフックの説明によると、APIエラーで終わったターンではStopではなくStopFailureが動きます。こちらは出力も終了コードも無視されるので、フックで自動的にcontinueさせることはできません。
-pで止まったときの出力と、続け方
非対話モードの既定のテキスト出力では、Claude Codeはそのターンで最後に完了した文章のブロックを出力し、その後にこの表示を続けます(v2.1.219より前は表示だけで、応答は捨てられていました)。--output-format jsonやstream-jsonでは、この表示はresultフィールドに入ります。接続が落ち着いてから、セッションを再開してcontinueを送るのが公式の手順です。
# 直前の会話を続ける
claude -p "continue" --continue
# セッションIDを指定して続ける
claude -p "continue" --resume "$session_id"
なお、フックでの自動再開については、Issue #87972の報告者が「旧文言の時代はStopフックが動いて自動で続けられたが、改名と同じころから動かなくなった」と書いています。これは報告者の観測で、以前の挙動が意図したものだったかは公式には書かれていません。いまの公式ドキュメントどおりなら、フックで記録や通知はできても、ターンを再開させることはできません。
5. 原因——公式に書かれていることと、報告されていること
この表示は「データが来なくなった」という結果を伝えるだけで、なぜ止まったかは表示からは分かりません。確度を分けて整理します。
✅ 公式ドキュメントとCHANGELOGに書かれている、ストリームが黙る・打ち切られる要因
- 仕組み:接続が開いたままデータが止まり、監視タイマーが打ち切った。直接のAPIでは、キープアライブを含めて180秒バイトが来ないと打ち切られる
- ゲートウェイでの誤報:v2.1.222より前は、
ANTHROPIC_BASE_URLなどで経由するゲートウェイで、キープアライブが届いていても打ち切ることがあった。ANTHROPIC_BEDROCK_BASE_URLのようなプロバイダーのベースURL経由のゲートウェイは、バイト単位の監視の対象外 - 長く考えている間の無音:CHANGELOGのv2.1.229に「長い思考の間もゲートウェイのストリーミング応答にSSEのキープアライブを流し、VertexやBedrockを上流にしたときのアイドル切断を防ぐ」、v2.1.257に「Opus 4.7以降のBedrockとBedrock Mantleで、表に出ない長い思考の間にリクエストが無音になり、アイドルタイムアウトで接続が切られていた問題を修正」とある
- 打ち切りからの回復:v2.1.232で「Bedrock・Vertex・ゲートウェイの構成で、ストリームのアイドルタイムアウトが回復せずにリクエストを失敗させていた問題」が修正された
- プロキシのバッファリング:公式の環境変数の説明は、
CLAUDE_STREAM_IDLE_TIMEOUT_MSの下限を5分にしている理由を「長い思考の間とプロキシのバッファリングを吸収するため」と書いている
公式はこの表示を、エラーリファレンスの「Server errors」の節に置いています。節の冒頭には「大半はAnthropicのサービスなど推論プロバイダー側から来る」とありますが、この文言について公式が説明しているのは上の仕組みまでです。手元の回線・途中の機器・サーバーのどこで止まったかを、公式は特定していません。
🟡 GitHubで報告されているが、原因が確定していない事例
2026年9月22日に、この文言を含む次のIssueを開いて読みました。いずれも利用者の報告や推定で、読んだ範囲ではAnthropicの公開回答はありません。
- #88900(Linux・2.1.240、プロキシもゲートウェイも無し):応答が0.5〜2.7KBほど届いたところで止まり、180秒後にバイト単位の監視が打ち切ったという報告。報告者は、同じ分に別々のセッションで同時に止まったとして、サーバー側のログの確認を求めている
- #90005(Windows 11・2.1.246):1日に33回出たが、それ以前の日は0回だったという報告。報告者は帯域・パケットロス・プロキシを測って健全としつつ、長時間開いたままの接続を測る試験ではないと断ったうえで、キャリアグレードNATのアイドル切断は否定できていないと書いている
- #89027(macOS・VS Code拡張2.1.238〜2.1.241):ログに「byte-level」の打ち切りと180000msの無音が記録されていたという報告。サブエージェントのWebFetchの途中で起きていた
- #87246(macOS・2.1.232):この文言だけを貼った報告で、対応予定なし(not planned)としてクローズされた。追記には、バックグラウンドのサブエージェントがこの表示で相次いで止まったという観測がある
#88900と#90005は、手元の回線に異常が見当たらないのに止まったと書いています。ただし、それだけでサーバー側が原因だと決めることはできません。#90005の報告者も書いているとおり、短い通信の試験は「数分間開いたままの接続が途中で黙る」状況を再現しないからです。
6. 止まったときの対処手順
上から順に、手間が小さく効き目の大きいものから並べています。1回だけなら手順2で終わりです。
残った出力と、作業の実際の状態を確かめる
完了していたツール呼び出しは実行されています。ファイルの書き換えやコマンドの途中で止まったなら、git statusやgit diffで、どこまで変わったかを先に見ます。
continueと返す
公式の復帰手順です。最後に完了したブロックから続けさせます。元の指示を最初から貼り直すと、済んだ操作をもう一度走らせることになります。
版を確かめて、更新する
claude --versionで版を見て、claude updateで更新します。2.1.222より古ければ、2章の誤報の可能性があります。BedrockやVertex、ゲートウェイを使っているなら、2.1.229・2.1.232・2.1.257にも関係する修正があります(5章)。
経路を切り分ける
/statusのProxyの行で、使っているプロキシを確かめます。VPNやプロキシを外す、別の回線につなぐ、ゲートウェイ(ANTHROPIC_BASE_URL)を外して直接つなぐ、のどれかで止まらなくなれば、外したものの中に原因があります。
1回の応答を短くする
大量のファイルを読んでから長いレポートを書くような指示は、読み込みと執筆に分けます。公式がこの表示の対処として挙げている手ではありませんが、「Request timed out」の項では長いタスクを小さな指示に分けるよう案内しています。#87972でも、1回の応答を短く保つと止まりにくいという利用者の工夫が紹介されています。
障害情報を見る
status.claude.comで、進行中の障害が無いか確かめます。ただし#90005の報告者は、止まり続けていた時間帯にステータスが「すべて正常」だったと書いています。緑だからといって、手元の問題と決めつけないでください。
経路が長く黙るなら、監視の時間を伸ばす
プロキシやゲートウェイが応答をため込む環境では、バイト単位の監視を伸ばすと打ち切られにくくなります。下のように設定ファイルのenvに置きます。バックグラウンドのエージェントにはシェルの環境変数が届かないことがあるので、公式はシェルでのexportより設定ファイルを勧めています。
~/.claude/settings.jsonに書く例です(バイト単位の監視を10分にする)。
{
"env": {
"CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS": "600000"
}
}
| 環境変数 | 公式の説明 |
|---|---|
CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS | バイト単位の監視だけの時間。10秒〜30分に丸められる。v2.1.210以降 |
CLAUDE_STREAM_IDLE_TIMEOUT_MS | バイト単位とイベント単位の両方の時間。5分未満は5分に引き上げられ、バイト単位では30分が上限 |
API_FORCE_IDLE_TIMEOUT | 5分の本文アイドルタイムアウトを0で止め、1で全プロバイダーに効かせる。監視タイマーとは独立 |
CLAUDE_CODE_MAX_RETRIES | 再試行の回数(既定10)。この表示の場面は最初から送り直さない設計なので、増やしても減らない |
監視を切るのは勧めない
CLAUDE_ENABLE_BYTE_WATCHDOGやCLAUDE_ENABLE_STREAM_WATCHDOGを0にすると、監視そのものが止まります。公式はこのタイマーを「死んだ接続が固まったままにならず、失敗して再試行されるようにするため」のものと説明しています。止めれば表示は消えても、本当に止まった接続を延々と待つことになります。また、サーバーからのデータが実際に止まっている場合は、時間を伸ばしても失敗が遅くなるだけです。
7. 直ったかを確かめる
1回出なかっただけで完了とせず、同じ規模の作業を流したときに次の4点を見ます。
版
claude --versionで、更新が反映されたか。IDE拡張やデスクトップアプリに同梱された版は、CLIとは別に更新されることがある
待機のバナー
Waiting for API responseが出ても自然に消えるなら、無音は短く済んでいる。公式は、試すたびに出るならネットワークの問題として扱うよう案内している
デバッグログ
claude --debugで起動すると、ログは~/.claude/debug/<session-id>.txtに出る。#88900や#89027の報告者は、打ち切りの時点で「Streaming idle timeout (byte-level)」で始まる行を確認している(行の文言は公式ドキュメントには載っていない)
会話ログの回数
会話は~/.claude/projects/の下にJSONLで保存される。更新や設定変更の前後で、この文言が何回出たかを数えて比べる。形式は内部用で版ごとに変わると公式は注意している
# 版を確かめる
claude --version
# デバッグログを取りながら起動する
claude --debug
# この文言を含む会話ログのファイルを数える(macOS・Linux)
grep -rl "The response stopped arriving" ~/.claude/projects/ | wc -l
# 同じく、この文言を含む行を数える(PowerShell)
Get-ChildItem "$HOME\.claude\projects" -Recurse -Filter *.jsonl | Select-String -SimpleMatch "The response stopped arriving" | Measure-Object
回数は目安として使ってください。#90005の報告者は、ある85分間に画面で15回止まったのに、会話ログに残った記録は1件だけだったと書いています。会話ログが0回でも、画面で止まった回数を自分でも控えておくと確実です。
8. 報告するときに残す情報
公式エラーリファレンスは、解決しないときの窓口として次の4つを挙げています。
- Claude Codeの中で
/feedbackを実行する。会話の記録と説明がAnthropicに送られ、内容を埋めたGitHubのIssueを開くこともできる。BedrockやVertexなどのプロバイダーでは、送る代わりに手元に保存される - シェルで
claude doctorを実行し、インストールの読み取り専用の診断を見る - status.claude.comで障害を確かめる
- GitHubの既存のIssueを探す。新旧どちらの文言でも検索する
報告メモのひな形
- 環境
claude --versionの結果/OS/使っている場所(端末のCLI・VS Code拡張・デスクトップアプリ)- 経路
- 直接のAPIか、Bedrock・Vertex・ゲートウェイ(
ANTHROPIC_BASE_URL)か/プロキシとVPNの有無 - 表示
- エラーの全文/発生時刻とタイムゾーン/直前に
Waiting for API responseが出ていたか/メインの会話かサブエージェントか - 頻度
- 1日の回数と、出始めた日/その日に更新や設定変更をしたか
- 試したこと
- 更新・VPNやプロキシを外す・別回線・ターンの分割の前後で何が変わったか
9. 確定していること/していないこと
✅ 公式に確認できること
- 意味は「接続は開いたまま、データが止まり、監視タイマーが打ち切った」
- v2.1.227より前は
Response stalled mid-streamと表示されていた - 完了した出力は残り、復帰は
continue - 同じツール呼び出しを二重に実行しないため、送り直さない
- v2.1.222より前は、ゲートウェイや完了後の停止で誤報があった
🟡 報告はあるが未確定
- 手元の回線が健全でも止まる(#88900・#90005)
- 数KB届いたところで止まり、複数のセッションで同時に起きる(#88900)
- 会話ログへの記録が画面の回数より少ない(#90005)
- 旧文言の時代はStopフックで自動再開できた(#87972)
🔴 公表されていないこと
- データが止まる原因の公式説明(上のIssueに公開回答は無い)
- 止まっているのが手元・経路・サーバーのどこか
- 改名の理由(CHANGELOGに記載が無い)
10. まとめ
「API Error: The response stopped arriving」は、応答が途中まで流れた後、接続は開いたままデータが止まり、Claude Codeの監視タイマーが打ち切ったことを示す表示です。v2.1.227より前のResponse stalled mid-streamと同じもので、完了した出力は残っています。まず作業の状態を確かめてからcontinueと返してください。
何度も出るなら、版の更新、VPN・プロキシ・ゲートウェイの切り分け、1回の応答を短くする工夫、の順に試します。経路が長く黙る環境に限って、バイト単位の監視の時間を伸ばす手があります。接続そのものが切れるConnection lost mid-responseとは疑う場所が違うので、表示の文言を最初に見比べてください。ほかのエラーはClaude Codeのよくあるエラーと解決法まとめにまとめています。
FAQ
Q. 「API Error: The response stopped arriving」はどういう意味ですか?
A. 応答が流れている途中で、接続は開いたままデータが届かなくなり、Claude Codeの監視タイマーがその接続を打ち切ったという意味です。文章やツール呼び出しを1つ完了した後に止まった場合の表示で、それまでの出力は残っています。
Q. 「Response stalled mid-stream」とは別のエラーですか?
A. 同じものです。公式エラーリファレンスが、v2.1.227より前はこの表示がResponse stalled mid-streamだったと明記しています。表示が変わっただけで、新しい種類の障害が起きたわけではありません。
Q. 何と返せば続きから再開できますか?
A. continueと返してください。最後に完了したブロックから続きます。ファイル操作やコマンドの途中で止まった場合は、先にgit statusなどで実際の状態を確かめてから返すと安全です。
Q. 再試行の回数を増やせば出なくなりますか?
A. 出なくなりません。この場面は、同じツール呼び出しを二重に実行しないよう、Claude Codeが最初から送り直さない設計です。CLAUDE_CODE_MAX_RETRIESが効くのは、出力が始まる前の失敗です。
Q. 「Connection lost mid-response」とは何が違いますか?
A. lostは接続そのものが切れたという判定で、stopped arrivingは接続が残ったままデータが来なくなったという判定です。どちらも完了した出力は残り、continueで再開できますが、監視の時間の調整が効く余地があるのはstopped arrivingの側だけです。
参考にした一次情報
- Claude Code — Error reference(公式ドキュメント):The response above may be incompleteの4つの表示とv2.1.227の改名、v2.1.222より前の誤報、Automatic retries、待機のバナー、No response from API、Streaming response ended before any complete data was received、Report an error
- Claude Code — Enterprise network configuration(公式ドキュメント):4つの監視タイマーと既定の時間、設定用の環境変数、デバッグログ、バックグラウンドのエージェントへの設定の渡し方
- Claude Code — Environment variables(公式ドキュメント):
CLAUDE_STREAM_IDLE_TIMEOUT_MS・CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS・API_FORCE_IDLE_TIMEOUTの説明 - Claude Code — Hooks reference(公式ドキュメント):APIエラーで終わったターンのStopFailure
- Claude Code — Run Claude Code programmatically(公式ドキュメント):
--continue・--resumeでの再開 - anthropics/claude-code — CHANGELOG(公式):v2.1.222、v2.1.227、v2.1.229、v2.1.232、v2.1.246、v2.1.257の各項
- GitHub Issue:#88900、#90005、#89027、#87246、#87972(いずれも利用者の報告。2026年9月22日に確認)