CLAUDE LABEN
CONNECTORS — Enterpriseの管理型MCPコネクタにコネクタ可観測性(public beta)が加わり、採用状況・エラー・レイテンシ・使用量を監視できますDIRECTORY — 作成したMCPコネクタをClaudeから直接ディレクトリへ申請できるようになりましたSLACK — Team・EnterpriseではSlackの会話内でClaudeをタグ付けし、タスクを委任できますENTERPRISE — Claude Enterpriseに詳細な管理分析・モデル単位のエンタイトルメント・支出アラートが追加されましたMODEL — Claude Sonnet 5が全プランの既定モデルで、導入価格は100万トークンあたり入力$2・出力$10(8月31日まで)ですLIMITS — Claude Codeの週次利用上限は7月13日まで50%引き上げ、Claude Scienceの応募は7月15日までですCONNECTORS — Enterpriseの管理型MCPコネクタにコネクタ可観測性(public beta)が加わり、採用状況・エラー・レイテンシ・使用量を監視できますDIRECTORY — 作成したMCPコネクタをClaudeから直接ディレクトリへ申請できるようになりましたSLACK — Team・EnterpriseではSlackの会話内でClaudeをタグ付けし、タスクを委任できますENTERPRISE — Claude Enterpriseに詳細な管理分析・モデル単位のエンタイトルメント・支出アラートが追加されましたMODEL — Claude Sonnet 5が全プランの既定モデルで、導入価格は100万トークンあたり入力$2・出力$10(8月31日まで)ですLIMITS — Claude Codeの週次利用上限は7月13日まで50%引き上げ、Claude Scienceの応募は7月15日までです
記事一覧/Claude Code
Claude Code/2026-07-07上級

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

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

Claude Code184背景セッション無人運用5個人開発97可観測性2

プレミアム記事

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

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/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-07-06
夜間ジョブのコミットが追えなくなった — Claude Code の可読なセッション名で無人実行に相関キーを通す
複数リポジトリで夜間ジョブを無人実行していると、翌朝のコミットがどの実行から生まれたのか分からなくなります。Claude Code の可読なセッション名を相関キーとして設計し、コミット・ログ・セッションを一本の糸でつなぐ実装を、実測値とともに共有します。
Claude Code2026-07-06
同意ダイアログより先に広告SDKを初期化していた — Claude Code で ATT と AdMob の順序を直す
起動と同時に広告SDKを開始すると、ATT の同意が取れる前に IDFA が空のまま初期化され、フィルレートは正常なのに計測だけが薄くなります。散らばった初期化順序を Claude Code で洗い出し、ATT の解決を待ってから広告を開始する形へ直した実装を共有します。
Claude Code2026-07-02
昨夜の無人セッションはどのモデルで走ったのか — Sonnet 5 既定化を機に整える実行モデルの記録と固定
Claude Code の既定モデルが Sonnet 5 に切り替わり、--model 未指定の無人セッションは静かにモデルが変わります。ヘッドレス出力からモデル名を防御的に抽出して追記記録し、既定ドリフトを検知して固定か追従かを判断する設計を動くコードでまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →