◉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-17上級

夜間に回した並列サブエージェントの記録が、追えなくなった — --forward-subagent-text で増えたログを絞り直す

サブエージェントのテキストと思考を stream-json へ流せるようになった一方で、無人実行のログ量は跳ね上がります。実測値をもとに、事後解析に効く記録だけを残す3層の保存方針と相関IDの設計をまとめました。

Claude Code265サブエージェント17stream-jsonログ設計5自動運用17

✦ プレミアム記事

朝、失敗した夜間タスクのログを開いて、手が止まりました。

親セッションの記録には「サブエージェントを4本起動した」という行と、最後に「1本が結果を返さなかった」という行しか残っていません。その4本が何を読み、どこで方針を変え、なぜ1本だけ黙ったのか。手がかりはどこにもありませんでした。

無人で走らせている以上、後から追えるのはログだけです。そのログに、肝心の中身が入っていない。

7月17日の更新で --forward-subagent-text フラグ(環境変数なら CLAUDE_CODE_FORWARD_SUBAGENT_TEXT)が入り、サブエージェントのテキストと思考を stream-json 出力に含められるようになりました。求めていたものです。

ただ、有効にして一晩回した翌朝、今度は別の問題に直面しました。ログが読める量ではなくなっていたのです。

有効にすると、何が流れてくるのか

まず、フラグの有無で出力がどう変わるかを確かめました。

# 従来: 親のイベントのみ
claude -p "4つのカテゴリの記事メタデータを検証して" \
  --output-format stream-json > baseline.jsonl
 
# 7/17 以降: サブエージェントのテキストと思考も含む
claude -p "4つのカテゴリの記事メタデータを検証して" \
  --output-format stream-json \
  --forward-subagent-text > forwarded.jsonl

出力は JSON Lines です。1行1イベントなので、種別ごとの件数はすぐ数えられます。

# イベント種別の内訳を出す
jq -r '.type' forwarded.jsonl | sort | uniq -c | sort -rn

同じ指示を10回ずつ流し、その中央値を並べたものが次の表です。サブエージェント4本・親1本、Sonnet 5 での結果になります。

項目フラグなし--forward-subagent-text倍率
行数(イベント数)2184,93022.6倍
ファイルサイズ0.9 MB38.4 MB42.7倍
うち thinking 由来0 MB24.1 MB—
うち assistant テキスト0.4 MB11.8 MB29.5倍
90日保存時の総量(1日3実行)0.24 GB10.4 GB43.3倍

42倍という数字そのものより、内訳のほうが設計の役に立ちました。増分の 63% が thinking です。そして thinking は、失敗の原因究明にはよく効く一方で、成功した実行では一度も開かれません。

つまり、増えた分の大半は「ほとんどの場合は読まないが、読みたい時には絶対に必要」という性質を持っています。全部捨てるのも、全部残すのも、どちらも間違いです。

3層に分けて、残すものを決める

そこで、イベントを3つの層に振り分けることにしました。

層対象保存期間方針
骨格親子の起動・終了・ツール呼び出し名・結果の成否無期限常に全量。これだけで実行の輪郭が復元できる
本文assistant テキスト・ツール入力の要約30日先頭と末尾を残し、中間は文字数だけ記録
思考thinking ブロック7日/失敗時のみ無期限成功実行では破棄。失敗した実行に紐づくものは残す

「失敗時のみ残す」を実現するには、書き込みながら判断できません。実行が失敗したかどうかは、最後まで読まないと分からないためです。

そこで、いったん全部を一時ファイルに落とし、終了コードが確定してから振り分ける形にしました。ストリームを2回通す代わりに、判断を後ろに送れます。

✦

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

この記事の続きを読む

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

この記事で得られること
✦--forward-subagent-text 有効化で1実行あたりのログが何倍になるかの実測と、イベント種別ごとの内訳
✦全部残す・要約して残す・捨てる、を分ける3層フィルタの実装(Node.js・そのまま動きます)
✦親セッションと子エージェントを後から突き合わせるための相関ID設計と、UUID が付かない場面の対処
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⟐ Claude Code2026-09-25
既定の Opus が 5.5 に変わった週、別名のまま残していた3箇所を数えました
Claude Code 2.1.280 で Opus 5.5 が既定になり、Pro の既定モデルも Sonnet から Opus へ変わりました。設定を触る前に確かめた3点(別名の解決先・/effort の引き継ぎ・キャッシュ読み $0.20 の見込み)を、手元で使った確認スクリプトと一緒に書き残します。
⟐ Claude Code2026-09-22
消えたことになっている作業ツリーの棚卸しと、隔離の任せどころ
サブエージェントに任せた隔離作業ツリーが畳まれずに残っていました。git 2.34.1 で実測した remove の可否、消しても残るブランチ、1 ツリーあたり 12 MB の差から、棚卸しの手順と隔離の任せどころをお伝えします。
⟐ Claude Code2026-09-03
ログのタイムゾーンを表示で寄せるか、記録で固定するか
AdMob とストアのレポートと手元のログで一日の切れ目がずれていました。表示側に寄せる方法と記録側を固定する方法を、実際に往復して選び直した判断の記録です。