Claude Media
Connection lost while your computer was asleepの意味と再試行

Connection lost while your computer was asleepの意味と再試行

Claude Codeの再試行中に出る「Connection lost while your computer was asleep」は、スリープで切れた接続を再試行に乗せたときのラベルです。ターン終了時の文言との違いと対処を書きます。

Claude Codeで作業中、スピナーの横に Connection lost while your computer was asleep と出ることがあります。これはエラーで終わった表示ではありません。ノートPCがスリープして切れた接続を、Claude Codeが「途中で落ちた接続」として数え、再試行に回している最中のラベルです。

読み取りどころは3つあります。ラベルが出た時点では、まだターンは続いていること。同じスリープでも、ターンが終わる場面では別の文言になること。そして、応答の途中でスリープした場合は、再試行ではなく別の扱いになることです。

このラベルは何を表しているのか

Connection lost while your computer was asleep は、再試行の待ち時間中にスピナーが出す理由ラベルの1つです。エラーの種類を問い合わせる一覧では、再試行の項目に分類されています。

Claude Codeは、リクエストの途中で起きたスリープが接続を切ったと検出すると、その切断をこのラベルで表示します。扱いそのものは通常の切断と同じです。

  • 通常の切断と同じ再試行規則に乗る
  • 待ち時間は指数バックオフで、既定は最大10回
  • ラベルが変わるだけで、再試行の回数や間隔は変わらない

画面に「Connection lost」とあるのに作業が続いているなら、それは想定された動きです。

再試行中に画面で何が見えるか

再試行中のスピナーには、ラベルのあとに Retrying in Ns · attempt x/y のカウントダウンが付きます。ラベルの出方には癖があります。

失敗の種類ラベルが理由を示すタイミング
ネットワーク断・TLS握手失敗・レート制限ラベルが理由を示すタイミング1回目の試行から
それ以外ラベルが理由を示すタイミング最初は API error。v2.1.198以降は3回目の試行から具体的な理由に切り替わる

このバナーは、データが再開するか再試行が成功すると自然に消えます。

もう1つ、再試行とは別の表示があります。応答ストリームに20秒間データが来ないと、再試行の前に Waiting for API response · will retry in … · check your network が出ます。これは「失敗した」ではなく「失敗扱いにする前の待ち」です。

再試行になる条件と、ならない条件

このラベルが出るかどうかは、スリープの時点でClaudeの応答がどこまで進んでいたかで決まります。分かれ目は「Claudeが考え終わっていたか」と「テキストやツール呼び出しを始めていたか」です。

くらべる

スリープした時点の進み具合と扱い

再試行

応答の完了前

思考を含め、Claudeの応答がまだ何も完了していない段階です。同じバックオフでリクエストを出し直し、ターンは続きます。途中までテキストが流れていても、この段階なら出し直されます。

2回まで再試行

思考完了後・出力開始前

考え終わったあと、テキストもツール呼び出しも始まる前の段階です。素早く2回だけ出し直し、それでも切れるとターンを閉じます。このときの文言が、次の節の Your computer went to sleep before a response was produced です。

再試行しない

テキスト・ツール呼び出しの完了後

同じリクエストを出し直すと、同じツール呼び出しを二重に実行しかねません。そのため出し直さず、完了した分を残して続きます。

3つ目の場面は、このラベルの対象外です。応答の途中で切れたときは、API Error: Your computer went to sleep mid-response. The response above may be incomplete. の形で通知されます。詳しい意味と再開方法はResponse incompleteの解説にあります。

ターン終了時の「went to sleep before a response was produced」との違い

似た文言が3つあり、混ざりやすいところです。意味の違いは、再試行が続いているか、ターンが閉じたかにあります。

文言いつ出るか次に起きること
Connection lost while your computer was asleepいつ出るか再試行のラベル次に起きること自動で出し直す。何もしなくてよい
Your computer went to sleep before a response was producedいつ出るか考え終えたが出力前にスリープし、再試行が尽きたとき次に起きることターンが閉じる。入力し直して続ける
Your computer went to sleep mid-responseいつ出るかテキストやツール呼び出しの完了後にスリープ次に起きること完了分は残る。continue で続ける

2行目が出たときは、モデルがまだ何も書いていないので、失うものは考えた分の時間だけです。もう一度依頼を送ると、新しいリクエストとして最初から走ります。3行目は逆で、テキストやツール呼び出しの完了分が残っているため、最初からやり直さず continue と送って続きを書かせます。

手元で減らす・確かめるには

スリープ後に最初のリクエストが失敗するのは仕様の範囲内です。気になるのは、頻発するか、長い無人実行が止まるかのどちらかでしょう。

無人実行では待ち回数を増やす

既定の再試行は10回で、バックオフの合計は数分程度です。夜間のジョブで蓋を閉じたまま長く眠るような運用では、足りないことがあります。CLAUDE_CODE_RETRY_WATCHDOG を 1 にすると、429と529は無期限に再試行します。加えて、v2.1.199以降は、サーバーエラー・タイムアウト・切断の既定回数が300回、およそ3時間分のバックオフに増えます。

# 無人実行の例。切断を3時間ほど粘って再試行させる
CLAUDE_CODE_RETRY_WATCHDOG=1 claude -p "テストを実行して結果を要約して"

逆に、スクリプトで早く失敗させたいなら CLAUDE_CODE_MAX_RETRIES を下げます。既定の上限は15で、CLAUDE_CODE_RETRY_WATCHDOG を併用すると上限が外れます。この環境変数の使い分けは、529が続くときにも同じ形で出てきます。

再試行の様子を機械で拾う

どのラベルで何回再試行したかを残したいときは、claude -p の stream-json に流れる system/api_retry を拾えます。やり方はapi_retryをstream-jsonで拾う手順にまとめています。スリープ明けの切断が何回に1回出るかを、画面を見張らずに数えられます。

そもそも眠らせない

ラベルの頻度を下げる一番確実な方法は、長いタスクの間はスリープさせないことです。Macでは caffeinate の仕組みに隙間がある、という報告があります。詳しくはMacがスリープしてClaude Codeが止まる原因で扱っています。Windowsの電源要求とLinuxの抑止は、スリープできない原因が受け持ちます。

古いバージョンでは、同じ場面でも挙動が違う

スリープ明けの切断まわりは、v2.1.290(2026年10月5日)で複数の修正が入っています。

  • スリープから復帰したMacで、バックグラウンドエージェントが「Agent stalled」になる問題と、Workflowツールのサブエージェントがプロンプトの先頭からやり直す問題が直った
  • 応答がスリープで中断されたとき、Bedrock・Vertex・Foundry・カスタムゲートウェイで「止まったストリーム」と誤って数えられていた問題が直った
  • Macのスリープ中に自動コンパクションが動くと「Prompt is too long」で諦めていた問題が直った

文言の側も変わっています。考え終えた後の切断でターンが閉じるときの文言 Connection lost before a response was produced は、v2.1.227より前は Connection closed while thinking, before producing a response でした。古いバージョンのログと突き合わせるときは、この改名を前提にしてください。

サブエージェントについては、v2.1.257で、スリープ・切断・サーバーエラーで応答が途切れても自動で続きを促すようになりました。サブエージェントの結果として途中切れの通知が届く場面は、それ以前より減っています。

再試行が続くのに戻らないとき

スリープ明けのラベルが一度出ただけなら、気にする必要はありません。毎回の試行で同じラベルが出続けるなら、スリープの影響ではなくネットワークの問題を疑うほうが近道です。公式の説明も、バナーが全試行で再び出るならネットワークの問題として扱うよう書いています。

切り分けの順番は次のとおりです。

切り分け

スリープ復帰後に再試行が終わらないときの切り分け

  1. Qカウントダウンの数字は進んでいるか?
    答えがいいえのとき

    回数を使い切ったか、別のエラーに変わっています。画面の最後のメッセージを読み直します。

    答えがはい
  2. QWi-Fiやモバイル回線が復帰しているか?
    答えがいいえのとき

    回線側がまだ戻っていません。接続が戻ると同じラベルのまま先へ進みます。

    答えがはい
  3. QプロキシやVPNを経由せずに接続しているか?
    答えがいいえのとき

    経由している場合は、プロキシ側が応答を握っていないかを確かめます。応答ヘッダーが来ない場合の待ち時間は、下の節で扱います。

    答えがはい

それでも戻らない

ターンを中断して依頼を送り直します。再試行の回数が尽きた場合も、新しいリクエストで最初から走ります。

応答ヘッダーが来ない場合は、別の待ち方になる

スリープ明けに、接続は張れたのに応答が返らないこともあります。この場合は「切断」ではなく「無応答」として扱われ、ラベルも別です。直接のAnthropic APIでは、応答ヘッダーが来ない状態を最初の試行で180秒待ち(リクエスト本体32KBごとに1秒加算)、それでも来なければ中断します。再送は原則1回で、2回目も無応答なら No response from API でターンが終わります。この文言の意味と待ち時間の内訳は、No Response From APIの解説にあります。

まとめ

Connection lost while your computer was asleep は、スリープで切れた接続を通常の切断と同じ再試行に乗せているときのラベルで、待てば進みます。ターンが終わる場面の Your computer went to sleep before a response was produced とは、再試行中か結果かという点が違います。長時間の無人実行を任せるなら、スリープを止めたうえで CLAUDE_CODE_RETRY_WATCHDOG を併用する構成が、公式の挙動表からそのまま組めます。

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