Claude Media
Response incomplete表示の意味とClaude Codeでの再開方法

Response incomplete表示の意味とClaude Codeでの再開方法

「The response above may be incomplete」の意味を解説。6種類の表示、途中経過が消えずに残る理由、対話・非対話それぞれでの再開方法をまとめます。

Claude Codeの応答の末尾にThe response above may be incomplete.と出たら、ストリーミング配信中の接続がターン完了前に失敗したという意味です。すでに完了したテキストブロックやツール呼び出しはそのまま画面に残り、破棄はされません。同じツール呼び出しを再送すると二重実行になりかねないため、Claude Codeは途中経過を保持したままこの通知を追加する設計になっています。API Error:と出ますが、中身は途中経過を残したうえでの中断通知です。

The response above may be incompleteとは何か

このメッセージは、Claudeがテキストブロックやツール呼び出しを1つ完了させたあと、あるいは思考を終えて次のブロックを書き始めたあとにストリーミングが失敗したときだけ出ます。原因によって表示が変わります。

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.
API Error: Part of the response never arrived. …
API Error: The response stream was malformed. …

下2行は公式ドキュメントでも末尾が省略された表記です。続く文言はここでは補っていません。先頭の文言で検索できます。

6つの表示と原因

まとめ

6つの表示と原因

  • Server error mid-response

    ストリーム中の過負荷(overloaded)や5xxエラーが原因です。Claude Code v2.1.199以降が必要です。それ以前は完了していたテキストやツール呼び出しをまとめて破棄し、ターン全体を単なるエラーとして報告していたため、生成済みの途中経過が跡形もなく消えてやり直しになっていました。

  • Connection lost mid-response

    接続が切断されたときの表示です。

  • Your computer went to sleep mid-response

    スリープ復帰後に接続が切れたとみなされたときの表示です。端末がスリープしている間はストリームを読み続けられません。

  • The response stopped arriving

    接続は維持されているのにデータが止まり、ストリーミングアイドルの監視機能(watchdog)が検知したときの表示です。ANTHROPIC_BASE_URLなどのゲートウェイ経由では、v2.1.222より前はパース済みイベントしか見ていなかったため誤検知が起きていました。

  • Part of the response never arrived

    ストリームのイベントが欠落したときの表示です。v2.1.281より前はAPI Error: Content block not foundで終了していました。

  • The response stream was malformed

    閉じたブロックへのイベントや壊れたイベントを受け取ったときの表示です。v2.1.284より前はAPI Error: JSON Parse errorなどの生のエラーが出ていました。

表示が出るまでに見える前兆

この通知が出る前に、応答ストリームが20秒間データを止めた時点でWaiting for API response · will retry in … · check your networkという待機表示が先に出ることがあります。この時点ではまだ失敗は確定していません。Claude Codeが接続を切って再試行するまでのカウントダウンで、データが再開するか再試行が成功すれば表示は消え、The response above may be incompleteにはつながりません。逆にカウントダウンの末に接続が切れて再送もできない状態だったときに、初めてこの通知が出ます。なおadvisorに相談している最中は、レビューに時間がかかるぶんこの待機表示のしきい値が90秒に延びます。20秒のまま扱うと正常な待ち時間まで異常と誤認してしまうためです。

なぜ途中経過が消えずに残るのか

同じリクエストを単純に再送すると、Claudeがすでに実行したツール呼び出し(ファイル編集やコマンド実行)を重複して走らせてしまう危険があります。そのためClaude Codeは、失敗した時点までに完了した内容を保持し、完了していたツール呼び出しは実行してその結果からターンを続け、最後の未完了ブロックだけを破棄したうえでこの通知を追加します。ターンを丸ごとエラーにするより安全な選択です。

この通知がすぐには出ない4つのケースもあります。①ターンの早い段階での失敗は自動リトライされるか別のエラーになります。②応答がすでに完了したあとに接続が切れた場合は、完全な応答をそのまま保持してターンを正常終了します。③非対話セッション(-p・Agent SDK・cloud)で、メイン会話が途中で切れ、出力がテキストのみでツール呼び出しが無いときは、最大3回まで自動でcontinueさせます。使い切ってから通知します(v2.1.246以降。それ以前は初回で通知)。④サブエージェントでも同じ条件で自動的にcontinueさせます(v2.1.257以降)。

対話セッションでの再開方法

画面に残っている内容が、失敗までにClaudeが完了させたブロックです。最後の未完了ブロック(文の途中や、実行しかけのツール呼び出し)だけが欠けています。

continueと送るだけで、Claudeは最後に完了したブロックの続きから再開します。

非対話モード(-p)での挙動

非対話実行(-p)では、テキストのみの途中切れはまず最大3回まで自動で続きを促されます(v2.1.246以降)。それでも回復しなかったときに、出力形式ごとに次のように見えます。

  • デフォルトのテキスト出力: それまでに保持していた最後の完了ブロックを出力し、続けてこの通知を出します。保持しているテキストが無い場合(会話がターン途中でコンパクションされて消えていた場合など)は、この通知だけが出ます
  • --output-format jsonまたはstream-json: resultフィールドにこのメッセージが入ります

スクリプトから出力を拾っている場合、v2.1.219より前のバージョンでは完了済みテキストが丸ごと欠落します。

続きを進めるには、セッションを再開してcontinueを送ります。

claude --continue

手元のClaude Codeで確認できたこと

再開に使うcontinueとJSON出力の指定は、claude --helpの出力でも確認できます。v2.1.285で実行した結果は次のとおりです(該当箇所のみ抜粋)。

claude --version
# 2.1.285 (Claude Code)
 
claude --help
#   -c, --continue        Continue the most recent conversation in
#                         the current directory
#   --output-format <format>
#                         Output format (only works with --print):
#                         "text" (default), "json" (single result),
#                         or "stream-json" (realtime streaming)

注目したいのは2点です。--continueは「現在のディレクトリの直近の会話」を再開するので、別のディレクトリから実行すると失敗したセッションには戻れません。また--output-formatは--print(-p)と併用したときだけ有効で、jsonは結果を1つにまとめて返し、stream-jsonはリアルタイムに流します。通知の判定にJSON系を使う前提として、-pを付け忘れないことが要ります。なお、この確認は--helpの表示までで、通知そのものを意図的に起こしたわけではありません。

サブエージェントの結果として届いたとき

サブエージェントに委譲したタスクの中でこの失敗が起きた場合、親エージェントが受け取る結果は少し違います。フォアグラウンドで実行中のサブエージェントがすでにテキストを出力していたなら、その部分的な出力が「未完了」の印付きでそのまま親に渡されます。ツール呼び出ししか出力していなかった場合は部分結果にならず、Agent terminated early due to an API errorで失敗します(v2.1.199では空の部分結果が返っていました)。委譲の設計や再開手順はClaude Code Sub-agents完全ガイドにまとめています。

バージョンごとに何が変わったか

接続断での途中経過の保持はv2.1.179からで、サーバーエラーでも保持して通知を付けるようになったのがv2.1.199です。

あゆみ

関連する修正の流れ

  1. v2.1.179接続断の保持

    ストリーム中の接続断で、部分的な応答を生のエラーに置き換えず保持するようになりました。

  2. v2.1.199サーバーエラー時の保持

    サーバーエラーでも途中経過を保持して通知を追加する方式に変更。サブエージェントが打ち切られたときも、部分的な作業を親エージェントへ返すようになりました。サブエージェントのAPIエラー(使用量上限到達など)を成功として誤報する不具合も同時に修正されています。

  3. v2.1.219-pのテキスト出力

    失敗までに完了していたテキストを出力するようになりました。それ以前は通知だけが出ていました。

  4. v2.1.222誤表示の解消

    応答完了後の切断で通知が出る誤表示と、ゲートウェイ経由の誤検知が解消しました。

  5. v2.1.227表示文言の変更

    「Connection closed mid-response」は「Connection lost mid-response」に変わりました。「Response stalled mid-stream」も「The response stopped arriving」に変わっています。

  6. v2.1.246-pの自動continue

    非対話セッションでテキストのみの途中切れを最大3回まで自動でcontinueさせ、使い切ってから通知するようになりました。サブエージェントはv2.1.257から同様です。

  7. v2.1.281 / v2.1.2842つの表示を追加

    イベント欠落はPart of the response never arrived(v2.1.281)、壊れたイベントはThe response stream was malformed(v2.1.284)で表示されるようになりました。

古いバージョンの画面やログを検索して見つけた文言は、この流れで新しい表記に読み替えられます。詳細はClaude Code v2.1.199にまとめています。

Agent terminated early due to an API errorとの違い

似た場面で出るメッセージにAgent terminated early due to an API errorがあります。これはサブエージェントのAPIリクエストが完全に失敗し、リトライも尽きて、サブエージェントがタスクを終える前に停止したときに出るエラーです。一方で本記事のThe response above may be incompleteは事情が違います。レート制限やサーバーエラーがフォアグラウンドのサブエージェントやメインの会話をストリーミングの途中で中断させたものの、それまでにテキストが生成できていた場合に出ます。同じ失敗の種類でも、テキストがまったく出力されないまま打ち切られたか、部分的にでも出力できていたかで、届くメッセージの種類が変わる仕組みです。

Request timed outとの違い

似た場面で出るRequest timed outは、応答がまだ何も届いていない段階でのタイムアウトを指します。すでに一部でも応答が届いたあとに途切れる本記事のケースとは別の事象です。切り分けの詳細はClaude Code Request timed outエラーで扱っています。

よくある質問

continueと送る以外に対処はありますか

ほとんどの場合はcontinueで十分です。頻発するようであれば、原因が接続断なのかサーバー側の一過性エラーなのかを表示メッセージで見分け、接続断が繰り返すならネットワーク環境を見直してください。ノートPCのスリープが原因のYour computer went to sleep mid-responseが繰り返し出るなら、長時間タスクの最中はスリープを無効にしておくのが確実な回避策です。

まとめ

この通知は失敗そのものではなく、完了したブロックとツール呼び出しを残し、その結果からターンを続けたうえで中断を知らせるものです。対話でも-pでもcontinueで続きから進められ、表示文言(サーバーエラー・接続断・スリープ・応答停止・イベント欠落・壊れたイベント)が、ネットワークを疑うかバージョンを上げるかの分かれ目になります。

この記事を共有:XはてブLinkedIn