サブエージェントには CLAUDE.md が丸ごと渡っていると分かったので、公式ドキュメントにあった、それを外す omitClaudeMd という設定を試してみました(前回の記事はコチラ)。
私の環境では、子に付いていた CLAUDE.md(ホーム共通・プロジェクト)と自動メモリの索引が全部消えて、子の入力トークンが約6.0万から約4.7万に減りました。
自分でサブエージェントを作るのは今回が初めてです。確認した環境は Claude デスクトップアプリ(Claude Code 2.1.309)です。

広告

作ったもの

スキルと同じように、Markdown に frontmatter を付けて .claude/agents/ に置くだけでした。
同じ中身のものを、omitClaudeMd: true を付けた nomd と、付けない withmd の2つ作りました。

---
name: nomd
description: 実験用。与えられた情報だけで質問に答える
model: haiku
omitClaudeMd: true
---
あなたは実験用のサブエージェントです。ツールは使わず、与えられている情報だけで答えてください。知らないことは「知らない」と書いてください。

置いた直後は、開いていたセッションから Agent type 'nomd' not found で見えなかったので、新しいセッションを開いて試しました。

試したこと

私

withmd のサブエージェントを1つ起動して、ツールを使わず、与えられている情報だけで次の3つに答えさせて。知らなければ「知らない」と書かせて。子の報告は要約せず、そのまま返して。
①このプロジェクトの CLAUDE.md に書いてあるブログ名・ペンネーム
②自分に CLAUDE.md の内容が渡されているか(渡されていれば、その冒頭の見出し行をそのまま引用)
③自分のモデル ID

Claude Code

① ブログ名は「コードメモ帳」、ペンネームは「めもちょ」。記事は draft までを自動で行い、publish は確認後のみ。
② 渡されている。冒頭の見出し行は「# CLAUDE.md — ai-blog」。ホーム共通の CLAUDE.md も一緒に渡されている。
③ claude-haiku-5-5。

同じ3問を nomd に答えさせると、こうでした。

Claude Code

① 知らない。CLAUDE.md の内容が渡されていないため確認できない。スキル一覧の説明文に「コードメモ帳」という名称は出てくるが、ペンネームや公開条件は含まれていない。
② 渡されていない。
③ claude-haiku-5-5。

結果

omitClaudeMd なし omitClaudeMd あり
子に付いていたファイル ホーム共通の CLAUDE.md・プロジェクトの CLAUDE.md・自動メモリの索引 なし
① CLAUDE.md の中身 答えた 知らない
② 冒頭の見出し行 引用した 渡されていない
子の入力トークン 約6.0万 約4.7万
指示から報告まで 8秒 7秒

トークン数は前回と同じく、~/.claude/projects/ の下の subagents/ に残る子のログの usage から取りました。
差の約1.3万トークンは、渡っていた3ファイルの合計約1.7万字とほぼ対応します。
残りの約4.7万はツールの定義(44個)などで、omitClaudeMd では減りません。
frontmatter の tools: で絞ってみた結果はコチラ。
CLAUDE.md が7万字あった前回なら、差はもっと大きかったはずです(ダイエットした話)。

公式と違ったところ

公式ドキュメントでは、omitClaudeMd で外れるのはユーザー・プロジェクト・ローカルの CLAUDE.md で、組織の管理ポリシーは残るとあります。
私の環境では、自動メモリの索引(Claude Code が自分で書き溜めるメモの目次)も一緒に消えていました。
これは実測なので、版によって変わるかもしれません。
あと、公式には「Claude Code v2.1.271 以降」とあるので、付けても変わらないときはまず版の確認です。

まとめ

今回のように CLAUDE.md の内容が要らない子なら、omitClaudeMd: true を付けておくことにしました。
子にも守ってほしいルールがあるときは、公式のとおり頼むときの指示文に書くつもりです。
残りの約4.7万を占めるツールの定義は、frontmatter の tools: で絞ると減るのか、次に試してみます。