CLAUDE LABEN
APPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意ですAPPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意です
記事一覧/Claude Code
Claude Code/2026-07-07上級

背景セッションが実行中のまま固まっていた — agents ビューにハートビートを添えて停滞を数分で捕まえる

Claude Code の agents ビューは背景セッションを一望できますが、実行中の表示は稼働の証明ではありません。ハートビートを外付けして、静かに固まったセッションを翌朝でなく数分で捕まえる運用設計を、実測とつまずきどころとともに共有します。

Claude Code250背景セッション無人運用9個人開発126可観測性5

プレミアム記事

先週の火曜、深夜に回していた背景セッションのひとつが、朝まで「実行中」のまま止まっていました。

agents ビューを開くと、ほかの11本は緑のチェックが並んでいるのに、その1本だけがくるくると回転アイコンのまま。ログの末尾は7時間前で、そこから一文字も進んでいませんでした。処理そのものは軽い依存更新でしたから、本来なら数分で終わっているはずのものです。何が起きていたのかというより、「なぜ朝まで気づけなかったのか」のほうが、私にはこたえました。

私は個人開発でいくつかの壁紙アプリと技術ブログを運営していて、依存更新・変更履歴の下書き・クラッシュ要約・広告設定の点検といった細かな作業を、深夜に Claude Code のヘッドレス実行でまとめて走らせています。多い夜は12セッション。2026年7月6日の更新で agents ビューと背景セッションの信頼性が改善され、複数の実行を一枚の画面で見られるようになったことは、この運用にとって素直にありがたい変化でした。ただ、実際に一週間使ってみて、ひとつはっきりしたことがあります。agents ビューが教えてくれるのは「そこにセッションがある」ことであって、「そのセッションが動いている」ことではない、ということです。

その差を埋めるために私が組んだのが、外付けのハートビート層とリコンサイラでした。設計と実装を、順を追って共有します。

「実行中」が嘘をつく瞬間

まず、なぜ「実行中」の表示だけでは足りないのかを、失敗の側から整理します。

背景セッションが止まる原因は、大きく分けて二種類あります。ひとつはクラッシュで終わるもの。プロセスが落ちれば agents ビューの状態も失敗に変わりますから、これは見つけやすい部類です。厄介なのはもうひとつ、プロセスは生きているのに前に進んでいないタイプです。

私が実際に遭遇したものだけでも、こういう状態がありました。

停滞の種類プロセスagents ビューの表示実際の進捗
ネットワーク応答待ちのハング生存実行中停止
返ってこないツール呼び出し生存実行中停止
無音のリトライループ生存実行中実質停止
入力待ちで固着生存実行中停止

いずれも「実行中」と表示され続けます。プレゼンス(そこに在る)は真ですが、ライブネス(生きて進んでいる)は偽です。可観測性の言葉を借りれば、私たちが欲しいのは在席確認ではなく生存確認のほうなのです。

この区別は、無人運用では致命的な差になります。人が画面を見ている日中なら、回転アイコンが長いと違和感で気づけます。けれど背景セッションは、見ていないから背景に回しているわけで、違和感を抱く人がそこにいません。だから停滞は、翌朝までまるごと放置されます。

セッションの身元をコミットまで一本の糸で辿る設計については、以前可読なセッション名で無人実行に相関キーを通す記事に書きました。今回はその手前、そもそも「そのセッションは今も生きているのか」を問う層の話です。

プレゼンスとライブネスを分ける

設計方針はひとつだけです。agents ビューにライブネスの信号を外から足す

具体的には、各背景セッションに一定の間隔で「まだ生きています」という小さな刻印を残させます。そして別の小さなプロセスが、その刻印の鮮度を見張ります。刻印が新しければ生存、古ければ停滞の疑い。これがハートビートの発想です。

なぜ外付けなのか。agents ビューやセッション状態そのものを改造することはできませんし、するべきでもありません。私たちが握れるのは、セッションの内側で何かが起きるたびに副作用として信号を出すこと、そしてその信号を外から観察することだけです。この二つを組み合わせれば、公式機能を一切壊さずにライブネス層を後付けできます。

刻印の中身は、驚くほど小さくて構いません。私が実際に書き込んでいるのは、セッション名・エポック秒・現在フェーズの三つだけです。

{"session":"wallpaper-ios-deps-0706-a3f","ts":1751850600,"phase":"tool:bash"}

ここで date の文字列ではなくエポック秒(ts)を使うのが肝心です。以前、ログの日付を素の date で書いていて UTC と JST がずれ、前日のファイルを上書きしてしまう事故をやりました。時刻の比較を機械にさせるなら、タイムゾーンの解釈が入り込まない整数で持つのが安全です。鮮度は「今のエポック秒 − ts」という引き算一回で出ます。

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

この記事の続きを読む

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

この記事で得られること
agents ビューの「実行中」表示だけでは停滞を見抜けない理由と、プレゼンス(在席)とライブネス(生存)を分けて考える設計の勘所
PostToolUse フックで各セッションにハートビートを刻み、エポック秒でリコンサイラが停滞を判定する動くコード一式
検知の中央値が翌朝から9分台へ縮んだ実測と、思考中の無音・クラウド同期の書き込み競合・長い単発ツールの誤検知という三つの落とし穴の潰し方
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-07-06
夜間ジョブのコミットが追えなくなった — Claude Code の可読なセッション名で無人実行に相関キーを通す
複数リポジトリで夜間ジョブを無人実行していると、翌朝のコミットがどの実行から生まれたのか分からなくなります。Claude Code の可読なセッション名を相関キーとして設計し、コミット・ログ・セッションを一本の糸でつなぐ実装を、実測値とともに共有します。
Claude Code2026-09-06
スキルを数えたら42本ありました。うち4本は中身が『移動しました』だけでした
Claude Code v2.1.261 で入った /skill-doctor を入り口に、自分のスキル棚を実際に数えてみました。毎ターン乗るのは説明の1行だけという構造と、名前の重複を素朴な awk で探すと別のスキルまで拾ってしまう落とし穴を、手元で動かした小さなスクリプトとともに書き残します。
Claude Code2026-09-04
Claude Code に project.pbxproj だけは直接触らせていません
Xcode のプロジェクトファイルは、開けなくなる壊れ方より開けてしまう壊れ方のほうが高くつきました。直接編集をやめてスクリプト経由に寄せるまでに測ったことと、いま引いている線を書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます