一行要約

起動時点で何が context に入り、作業中に何が足され、compaction で何が生き残り何が失われるかを1本のタイムラインとして示した文書で、実務上の核心は「paths: 付き rule とネストした CLAUDE.md は compaction で消える」という一点。

要点

起動時にロードされるもの(代表値)

タイプする前に context に載っているもの。合計おおよそ 7,850 トークン(context window は 200,000 トークンの想定)。

ロードされるもの代表トークン数内容
System prompt4,200振る舞い・ツール使用・応答形式の中核指示。常に最初。ユーザーからは見えない
Auto memory (MEMORY.md)680過去セッションで Claude が自分に残したメモ。先頭 200行 または 25KB のうち先に達したほう
Environment info280作業ディレクトリ、プラットフォーム、シェル、OS バージョン、git リポジトリか否か。git のブランチ・status・最近のコミットは system prompt の最後尾に別ブロックとして載る
MCP tools(遅延)120ツール名だけ。完全なスキーマは遅延され、必要時に tool search で読む
Skill descriptions450使える skill の1行説明。本体は実際に使うときだけロード
~/.claude/CLAUDE.md320全プロジェクト共通の個人設定
Project CLAUDE.md1,800プロジェクト規約、ビルドコマンド、アーキテクチャ

Project CLAUDE.md: The most important file you can create. tip: Keep it under 200 lines. Move reference content to skills or path-scoped rules so it only loads when needed. プロジェクトの CLAUDE.md: 作れるファイルの中で最も重要なもの。ヒント: 200行未満に保て。参照用の内容は skill か path スコープの rule へ移し、必要なときだけロードされるようにせよ。

出力スタイルや --append-system-prompt のテキストも、同じく system prompt に入る。

MCP の挙動を変える環境変数:

設定挙動
(既定)ツール名のみ。スキーマは tool search で必要時に取得
ENABLE_TOOL_SEARCH=autocontext window の 10% に収まるならスキーマを先読みする
ENABLE_TOOL_SEARCH=false全部先読みする

作業中に足されるもの

  • ファイルを読むたびにその内容が加算される
  • path-scoped rule は、マッチするファイルが読まれたタイミングで自動的にロードされる(例: api-conventions.md 380 トークン、testing.md 290 トークン)
  • PostToolUse hook は編集のたびに発火し、その出力が context に入る(prettier の例で 100〜120 トークン)

subagent による節約(数字で見る)

タイムラインの subagent は session.ts(2,200)、timeouts.ts(800)、config/*.ts(3,100)を読む。

The subagent read 6,100 tokens of files. You got a 420-token result. That’s the context savings. subagent は 6,100 トークン分のファイルを読んだ。あなたが受け取ったのは 420 トークンの結果である。これが context の節約分だ。

メイン context に返るのは最終テキスト応答 420 トークンと、トークン数・所要時間の小さなメタデータだけ

subagent が持つツールについての注記も重要:

It gets most of the parent’s tools, minus several that don’t apply in a nested context, including plan-mode controls, background-task tools, and by default the Agent tool itself to prevent recursion. subagent は親のツールの大半を受け継ぐ。ただし入れ子の文脈では意味をなさないいくつかは除かれる。plan モードの制御、バックグラウンドタスクのツール、そして再帰を防ぐため、既定では Agent ツール自体である。

compaction で何が生き残るか(最重要の表)

機構compaction 後
system prompt と output style変わらない(メッセージ履歴の一部ではないため)
プロジェクトルートの CLAUDE.md、paths なしの ruleディスクから再注入される
auto memoryディスクから再注入される
paths: frontmatter を持つ rule失われる。該当ファイルが再度読まれるまで戻らない
サブディレクトリのネストした CLAUDE.md失われる。そのディレクトリのファイルが再度読まれるまで戻らない
起動したことのある skill の本体再注入されるが、skill あたり 5,000 トークン、合計 25,000 トークンで打ち切り古いものから捨てられる
skill の description 一覧再注入されない。実際に起動した skill だけが保持される
hooks該当なし(hook は context ではなくコードとして走る)

ここから導かれる2つの実務ルール:

  1. If a rule must persist across compaction, drop the paths: frontmatter or move it to the project-root CLAUDE.md.

  2. Truncation keeps the start of the file, so put the most important instructions near the top of SKILL.md.

なお v2.1.198 以降、要約リクエストはセッションの extended thinking 設定を継承する。thinking は要約の作られ方にだけ影響し、セッション設定は変わらない。

context が埋まったときの4つの手

自動 compaction は走るのでセッションが終わることはない。ただし自動任せにする前に打てる手がある。

やり方
焦点を指定して compact する/compact focus on the auth bug fix。自動パスが「重要そう」と推測するものではなく、自分が選んだものが残る
早めに compact する/autocompact 500k で、どこまで埋まったら自動パスが走るかを設定する
タスク間で clear する無関係な作業に移るとき /clear古い会話は次に必要なファイルを押し出し、毎メッセージでトークンを食う
大きな読み込みを委譲するsubagent に調査を投げ、ファイル内容をそちらの context に留める

より大きな window が欲しい場合: Fable 5、Sonnet 5、Opus 4.6 以降、Sonnet 4.6 が 1M トークン context window に対応する。Sonnet 5 は [1m] バリアントを選ばずに 1M で動く。

auto-compact window の設定(3箇所、優先順位あり)

設定場所挙動
/autocompact 500kuser settings の autoCompactWindow に保存し、現セッションにも適用。managed settings など上位スコープが設定していると、保存はされるがセッションはそちらの値を使う(コマンドがその旨を伝える)。/autocompact auto でモデル既定に戻す
--autocompact フラグその起動のみ。保存値を変えずに上書きする。/autocompact と違い、上位スコープに横取りされない
CLAUDE_CODE_AUTO_COMPACT_WINDOW最優先。設定されている間はコマンド・フラグ・設定すべてに優先する

受け付ける値は 100K〜1M トークン。書式は 200000 / 500k / 1M / 200(100〜1000 の裸の数字は千単位)。環境変数は素のトークン数のみ

何も設定しない場合はモデルの context 上限で compaction するが、次は早めに走る。

  • cloud セッション — モデル上限に近づいた時点
  • extended context なしの Sonnet 4.6 / Opus 4.6、および 200K context で動く Opus 4.8 / Opus 5(Amazon Bedrock、Google Cloud Agent Platform、Microsoft Foundry など) — 200K 境界
  • Sonnet 5 — モデル既定の閾値

自分のセッションを確認する

The visualization uses representative numbers. この可視化には代表的な数値を使っている。

実際の消費は /context でカテゴリ別に見られる(最適化の提案付き、どの CLAUDE.md と auto memory がロードされたかも含む)。/memory でそれらのファイルを開いて編集できる。

その他タイムラインに出てくる操作

  • !git status! 接頭辞でシェルコマンドを実行すると、コマンドとその出力の両方が自分のメッセージの一部として context に入る。Claude に実行させずにコマンド出力で接地させたいときに有用
  • disable-model-invocation: true の skill — 起動時の skill index に description が載らないので、呼ぶ瞬間まで context コストがゼロ

Set disable-model-invocation: true on skills with side effects like committing, deploying, or sending messages. They stay out of context entirely until you need them. コミット、デプロイ、メッセージ送信のように副作用のある skill には disable-model-invocation: true を設定せよ。必要になるまで、それらは context に一切入らない。

そのまま使える具体例

context を能動的に管理するコマンド:

/context                                  現在の消費をカテゴリ別に見る
/memory                                   ロードされた memory ファイルを開く
/compact focus on the auth bug fix        焦点を指定して要約する
/autocompact 500k                         自動 compaction の閾値を設定
/autocompact auto                         モデル既定に戻す
/clear                                    無関係な作業に移るとき
!git status                               シェル出力を context に入れる

起動フラグと環境変数:

claude --autocompact 500k          # この起動だけ。上位スコープに横取りされない
claude --autocompact auto          # 保存値があってもモデル既定で走らせる
 
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=500000   # 最優先。素のトークン数のみ
export ENABLE_TOOL_SEARCH=auto                  # MCP スキーマを 10% 以内なら先読み

compaction を跨いで残したい rule は paths: を外す:

---
paths:
  - "src/api/**/*.ts"     # ← これがあると compaction で失われる
---

副作用のある skill を context から隠す:

---
name: commit-push
description: Stages, commits, and pushes changes.
disable-model-invocation: true
---

原典で言及されている関連文書

未取得の派生リンク