CLAUDE LABEN
MEMORY — Claude Codeの長時間セッションのメモリリークが一掃されました。MCP stdioサーバのstderrが最大64MB蓄積する問題やLSPドキュメントの開きっぱなしが修正されていますTABLES — 非常に大きなmarkdownテーブルが描画を止める不具合を修正。200行を超えるテーブルは先頭200行と「… N more rows」表示になりますSPEED — deny/askルールを多く抱えたセッションで毎ターン数秒遅くなる問題を修正。ルールマッチャがコンパイルして再利用されますTOOLS — MCPツールが多いprint/SDKセッションでは、ツールプールの組み立てをキャッシュし最大7倍速いラウンドになりましたARTIFACTS — Claude CodeのArtifactsは、セッションの作業をその場で更新される共有Webページに変えます。PR解説やダッシュボードに使えますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。speed: "fast" はエラーになるため、Opus 4.8のfastモードへ移行が必要ですMEMORY — Claude Codeの長時間セッションのメモリリークが一掃されました。MCP stdioサーバのstderrが最大64MB蓄積する問題やLSPドキュメントの開きっぱなしが修正されていますTABLES — 非常に大きなmarkdownテーブルが描画を止める不具合を修正。200行を超えるテーブルは先頭200行と「… N more rows」表示になりますSPEED — deny/askルールを多く抱えたセッションで毎ターン数秒遅くなる問題を修正。ルールマッチャがコンパイルして再利用されますTOOLS — MCPツールが多いprint/SDKセッションでは、ツールプールの組み立てをキャッシュし最大7倍速いラウンドになりましたARTIFACTS — Claude CodeのArtifactsは、セッションの作業をその場で更新される共有Webページに変えます。PR解説やダッシュボードに使えますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。speed: "fast" はエラーになるため、Opus 4.8のfastモードへ移行が必要です
記事一覧/API & SDK
API & SDK/2026-06-23上級

毎回まっさらな環境で目覚める無人エージェント — 最初の30秒に状態回復を設計する

スケジュール起動の無人エージェントは、毎回まっさらな使い捨て環境で目を覚まします。書き込めないはずのパス、まだ起動しきっていないファイルシステム、消えた作業ディレクトリ。最初の30秒に状態回復を織り込む設計を、実際の運用ログから具体的に書きました。

Claude Agent SDK13無人エージェント状態回復冪等性4運用設計14

プレミアム記事

スケジュール起動のエージェントが目を覚ました朝、最初に返ってきたのは成功でも失敗でもなく、could not create work tree dir: Permission denied という一行でした。

昨日まで書けていたはずの /tmp/repos に、今日は書けない。

原因はすぐに分かりました。エージェントが動く計算環境は毎回作り直される使い捨てのもので、ディレクトリの所有者がたまたま別ユーザーに割り当たっていたのです。私自身、個人開発で4つのサイトの記事生成を無人で回していますが、この種の「環境が毎回ちがう」前提を甘く見ると、夜間のタスクは静かにゼロ本で終わります。

無人エージェントの信頼性は、賢い本処理ではなく、最初の30秒で決まります。本稿はその30秒、つまりコールドブート直後の起動と状態回復をどう設計するかという話です。

計算環境は使い捨て、状態は別の場所に置く

最初に頭を切り替える必要があるのは、「同じマシンが昨日の続きを覚えている」という素朴な期待を捨てることです。

スケジュール実行の多くは、実行のたびに新しいサンドボックスを立ち上げます。前回書いたファイルは消え、インストールしたパッケージも残らず、cwd も環境変数も引き継がれません。ここで頼れる状態は、計算環境のにあるものだけです。

私の運用では、耐久する状態を次の三層に分けて考えています。

置き場所役割
コード/成果物Git リモート記事の本体。push して初めて「やった」ことになる
参照データ・設定クラウド同期のワークスペース方針・キーワード・トークン。読み取り専用に近い扱い
実行履歴日付ごとのログファイル「今日もう何をしたか」を次回の自分に伝える唯一の手段

この三層がそろっていれば、サンドボックスは何度焼き払われても構いません。エージェントは毎回、外部の真実から自分の状態を組み立て直せます。逆に言えば、この三層のどれかをローカルの一時ディレクトリに頼った瞬間、その情報はコールドブートで失われます。

起動シーケンスを「防御的に」書く

本処理に入る前に、環境を整える短いシーケンスを必ず通します。ここを横着すると、後段の処理が無言で失敗します。

順番に意味があります。(1) ファイルシステムの起動を待つ、(2) 作業ディレクトリを動的に探す、(3) 書き込み可能な作業領域を確保する、(4) 認証情報を取り出す。この4つです。

#!/usr/bin/env bash
set -euo pipefail
 
# (1) マウントが整うまで待つ — コールドブート直後は数秒間ファイルが見えない
WS=""
for i in $(seq 1 10); do
  WS="$(ls -d /sessions/*/mnt/Workspace 2>/dev/null | head -1)"
  [ -n "$WS" ] && [ -d "$WS" ] && break
  sleep 3
done
[ -n "$WS" ] || { echo "FATAL: workspace not mounted after 30s"; exit 1; }
 
# (2) 作業ディレクトリの第一候補が書けるか確かめ、ダメなら $HOME へ退避
WORK_BASE="/tmp/repos"
if ! mkdir -p "$WORK_BASE/.probe" 2>/dev/null; then
  echo "WARN: $WORK_BASE not writable, falling back to \$HOME/repos"
  WORK_BASE="$HOME/repos"
  mkdir -p "$WORK_BASE"
fi
rmdir "$WORK_BASE/.probe" 2>/dev/null || true
 
# (3) 認証情報は環境変数ではなく同期ストレージから読む(再ブートで消えないため)
TOKEN="$(grep -A1 '^MySite' "$WS/_tokens/tokens.txt" | tail -1 | tr -d '[:space:]')"
[ -n "$TOKEN" ] || { echo "FATAL: token missing"; exit 1; }
 
echo "ready: WS=$WS WORK_BASE=$WORK_BASE"

ポイントは、/tmp が書けることを仮定しないことです。実際に小さなディレクトリを作ってみて、失敗したら静かに $HOME へ逃がします。今回のブート時に私が遭遇した Permission denied は、この .probe テストひとつで吸収できる種類のものでした。

ls -d /sessions/*/mnt/... のようにワイルドカードで探すのも意図的です。セッション名は実行ごとに変わるため、パスをハードコードすると次回には存在しないディレクトリを指してしまいます。動的探索は、環境が変わることへのいちばん安い保険です。

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

この記事の続きを読む

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

この記事で得られること
使い捨て環境を前提にした起動シーケンス(マウント検出・ブート待ち・作業ディレクトリの動的探索・フォールバックパス)を、コピーして使えるbashで提示します
「今日もう同じ処理をしたか」を耐久ストレージのログから判定する冪等ガードの実装と、重複を防ぐ二段照合のコードを示します
私自身が4サイトの自動運用で踏んだ、書き込み権限・クラウド同期ファイル・ブート遅延の3つの落とし穴と、その回避手順を運用知見として整理します
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-11
本番で観測した引数分布からツールスキーマを締め直す
Claudeのツール呼び出しが渡してくる引数を本番で記録し、その分布からJSON Schemaにenumやpatternを足して締め直す運用手法を、計測コードと実測値つきで整理しました。
API & SDK2026-07-10
夜間バッチが勝手に上位モデルで走っていた — タスクごとにモデル上限を宣言して機械で守る
モデル名をコードに散らすと、いつのまにか安いはずのバッチが上位モデルで走ります。タスクごとの上限を宣言するマニフェストと、既定拒否の解決レイヤ、そして逸脱を検出する差分監査の設計をコード付きでまとめました。
API & SDK2026-07-08
無人エージェントの挙動変更を、フィーチャーフラグで少しずつ試す設計
無人で走るエージェントのプロンプトや挙動を一度に全変更すると、劣化が朝まで見えません。フィーチャーフラグで一部の実行にだけ新挙動を割り当て、品質を見てから広げる設計と、決定論的バケット・自動ロールバック・監査証跡の実装を紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →