◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-07-03上級

5分の沈黙で誰かがやり直しを始める — streaming idle watchdog 既定化で数え直すリトライの責務

Claude Code の streaming idle watchdog 既定化で、実行スタックに再試行する層がもう一枚増えました。SDK・自前ラッパー・watchdog・スケジューラの4層を棚卸しし、最悪ケースの試行回数を掛け算で見積もり、リトライ責務を一層に畳む設計をまとめます。

claude-code132reliability15retry6automation55production87typescript11

✦ プレミアム記事

7月1日付の Claude Code の更新情報に、短い一行がありました。streaming idle watchdog が既定で有効になり、ストリームが5分間無応答ならアボートしてリトライする、というものです。

ありがたい変更のはずでした。ただ、読んだ瞬間に頭へ浮かんだのは感謝ではなく、手元のパイプラインの断面図です。SDK が再試行する。自前のラッパーも再試行する。失敗すればスケジューラが再実行する。そこへ、頼んでいないもう一枚が加わった。再試行する層が、静かに4枚になったのです。

層が増えること自体は悪ではありません。問題は、それぞれの層が互いの存在を知らないまま「良かれと思って」やり直すことです。本稿は、実行スタックの中で再試行が起きうる場所を数え上げ、最悪ケースの試行回数を機械的に見積もり、責務を一枚に畳むまでの設計を、私自身の夜間ジョブでの整理を元に残すものです。

どの層が再試行しているのかを数える

まず棚卸しです。Claude を無人で回す典型的なスタックには、再試行の火元が少なくとも4つあります。

層再試行の対象既定の挙動気づきにくさ
1. Anthropic SDK接続エラー・429・5xxmaxRetries: 2(初回含め最大3試行)が既定コードに書かれないため棚卸しから漏れやすい
2. 自前ラッパーアプリ都合の失敗全般自分で書いた指数バックオフ(例: 3試行)把握済みだが SDK 側との重複を忘れがち
3. streaming idle watchdog5分無応答のストリームアボート+リトライ(7/1 から既定有効)設定変更なしで挙動が変わった当事者
4. スケジューラジョブ全体の失敗失敗時の再実行・次周期での再キックジョブ内から見えない最外層

ポイントは、この4層のうち自分が書いたのは1枚だけ、ということです。1層目は SDK の既定値、3層目はプラットフォームの既定値の変更、4層目は運用設定です。リトライ設計の大半は、自分のコードの外にあります。

なお、ここでの watchdog の試行回数や間隔は、手元のバージョンのリリースノートと実際の挙動を突き合わせて確認しておくべき「前提」です。既定値は今回のように予告なく変わることがあるため、後述する前提ログに落とします。

最悪ケースは掛け算で膨らむ

各層のリトライは足し算ではなく掛け算で合成されます。外側の1試行の中で、内側は自分の全試行を使い切るからです。

  • SDK: 3試行
  • ラッパー: 3試行
  • watchdog: 2試行(1リトライと仮定)
  • スケジューラ: 2試行

この構成での最悪ケースは 3 × 3 × 2 × 2 = 36試行です。1回のつもりで書いたタスクが、障害の夜には36回 API を叩く可能性があります。

これをコストに直します。入力12,000・出力3,000トークン程度のタスクを Sonnet 5 の導入価格($2/$10 per MTok)で回すと、1試行あたり約 $0.054。36試行なら約 $1.94 です。夜間に90本のタスクを流していれば、理論上の最悪値は一晩で約 $175。単価の安さで組んだはずの予算が、増幅で簡単に食い潰されます。

構成最悪試行回数1タスク最悪コスト90タスク夜間バッチ
4層とも既定のまま36約 $1.94約 $175
single-owner(後述・4試行)4約 $0.22約 $19

もう一つ深刻なのは 429 との相互作用です。過負荷への応答である 429 を4層がそれぞれ律儀にリトライすると、混雑した夜に自分だけ36倍の圧力をかける「増幅器」になります。Retry-After ヘッダーに従うバックオフの整理で書いたサーバー指示の尊重も、再試行する層が一枚に決まっていて初めて機能します。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦SDK・自前ラッパー・watchdog・スケジューラの4層を列挙し、最悪ケースの試行回数と壁時計時間を掛け算で見積もる TypeScript 実装
✦maxRetries 0 で SDK 側の再試行を止め、冪等キーを持つ最外層だけに再試行を許す single-owner パターンの実装手順
✦プラットフォーム既定の変更をジョブ先頭で「前提ログ」として残し、リトライ増幅の再発を事故の前に検知する運用チェックリスト
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Claude Code2026-05-02
Claude Code でゼロダウンタイム DB マイグレーションを設計する本番運用ガイド
Claude Code でゼロダウンタイム DB マイグレーションを設計する本番運用ガイド。Expand-Contract、NOT NULL 追加、カラムリネーム、バックフィル、サブエージェントレビューまで、本番で詰まらない手順をお伝えします。
⟐ Claude Code2026-04-30
Claude Code Skills を組み合わせる設計術 — 単一スキルでは届かない自動化を作る
Claude Code の Skills を1つずつ作るところから一歩進み、複数スキルを連携させて自動化を組む設計手法をお伝えします。Pipeline・条件分岐・メタスキルの3パターンとよくある落とし穴を実装例付きで詳述します。
⟐ Claude Code2026-04-29
Claude Code の実行を OpenTelemetry で観測する — エージェント処理を本番品質で可視化する設計ガイド
Claude Code のエージェント処理を OpenTelemetry でトレースする本番設計ガイド。フック連携・ツール呼び出し計測・MCP 通信・コスト属性・サンプリングまで、実運用で詰まらないパターンをお伝えします。