コンテキスト予算の監査: /skill-doctor、出力上限、そしてウィンドウを埋める6つの数字
Claude Code プロジェクトは、ノートパソコンにブラウザのタブが溜まっていくのと同じようにコンテキスト負債を溜め込みます。インストールしたスキルはどれも、Claude が毎ターン読み直す一覧に1行を追加します。サブエージェントはそれぞれ説明文を追加します。3月に書いた CLAUDE.md の段落は、タスクに必要かどうかにかかわらず9月にも読み込まれます。そして npm test を実行するたびに、最大30,000文字が会話に流し込まれます。セッションが指示を忘れ始めるか、請求額が作業量と釣り合わなくなるまで、どれも目には見えません。
コンテキスト管理では、その場で使う2つのコマンド /clear と /compact を扱いました。このページは、プロジェクトごとに一度実行する監査です。あなたが何かを入力する前、あるいはターンとターンの間に Claude Code がコンテキストを消費する6つの場所、それぞれを制御する設定、そしてそのデフォルト値を示します。ここに書かれていることはすべて2026年9月時点の公式ドキュメントにあり、これらの設定項目の多くは、それにまつわる俗説よりも新しいものです。
- 削る前に測る: /context、/usage の帰属分析、/doctor の一覧コスト見積もりを読み、最大の項目から先に直す
- /skill-doctor(v2.1.252 以降)と skillOverrides の4つの状態でスキル一覧を刈り込み、一覧に課されるウィンドウの1%という予算を把握する
- シェルコマンドやバックグラウンドタスクがインラインで返す量(デフォルトで30,000文字と32,000文字)を bashOutputMaxChars と taskOutputMaxChars で制限する
- omitClaudeMd(v2.1.271 以降)で、すべてのサブエージェントで CLAUDE.md の代金を払うのをやめ、サブエージェントの説明文を15,000トークンの警告ライン未満に保つ
- 自動コンパクトのウィンドウを意図的に設定し(/autocompact、autoCompactWindow)、どの呼び出し済みスキルがコンパクションを生き延びるかを決める25,000トークンの予算を理解する
- コンテキストではなく思考トークンが本当の請求額であるときは、maxEffortLevel でフリート全体の effort に上限を設ける
入力する前にウィンドウに何が入っているか
この図を実用的にする事実が2つあります。左のボックスにあるものはすべてリクエストごとに支払われます。Claude Code は毎ターン会話全体を送信し、それを和らげるのはキャッシュ読み取りの割引だけだからです。そして右のボックスは、冗長なコマンド1つが一度に左のボックス全体を上回る量を追加しうる場所です。以下の監査は左から右へ進みます。
監査
- /context を実行すると、カテゴリ別のライブ内訳と最適化の提案が表示され、どの CLAUDE.md と自動メモリのファイルが読み込まれたかもわかります。Pro、Max、Team、Enterprise プランでは、/usage が最近の使用量をスキル、サブエージェント、プラグイン、個々の MCP サーバーにパーセンテージで帰属させ、10%以上を占める挙動(長いコンテキスト、キャッシュミス)にフラグを立てます。/doctor はスキル一覧のコンテキストコストとその最大の寄与要因を見積もります。何かを変更する前に、上位3つの項目を書き留めてください。
- 一覧にあるスキルはすべて、Claude が使うかどうかにかかわらず毎ターンコンテキストを消費します。/skill-doctor(v2.1.252 以降)は各スキルのコンテキストコストと呼び出し頻度を表示し、一度も呼び出されていないスキルにフラグを立て、どこで無効化できるかを教えてくれます。最近使っていないプラグインも一覧表示します。まずコストが最も高い未使用のものから始めましょう。対話型セッションではレポートが /plugin マネージャーの Stats タブに開き、-p ではテキストとして出力されます。バンドル済みスキルやエンタープライズスキルは対象外で、フィーチャーフラグの取得が必要であり、Remote Control 経由では拒否されます。
- スキルごとに4つの状態があります。on(名前と説明文を一覧に表示)、name-only(説明文なしで一覧に表示、呼び出しは可能)、user-invocable-only(Claude からは隠されるが / メニューには残る)、off。/skills メニューがこれを代わりに書き込んでくれます。スキルをハイライトし、Space で状態を切り替え、Esc で .claude/settings.local.json に保存します。プラグインのスキルは代わりに /plugin で管理します。disableBundledSkills: true を設定すると、Claude Code 自身のバンドル済みスキルとワークフローを1行で取り除けます。
- 一覧はモデルのコンテキストウィンドウの1%に制限されています(skillListingBudgetFraction、デフォルト 0.01)。あふれると、Claude Code はすべての名前を残しつつ、使用頻度の最も低いスキルから順に説明文を落とします。これは Claude が自動選択に必要とするキーワードを奪います。各スキルの説明文と when_to_use の合計も1,536文字で切り詰められます(skillListingMaxDescChars)。主要なユースケースは最初の一文に入れてください。
- CLAUDE.md は200行未満に保ち、ワークフロー固有の指示(PR レビュー、マイグレーション)はスキルに移しましょう。スキルは呼び出されたときだけ読み込まれます。自動メモリは最初の200行または25 KB しか読み込まれないため、肥大化した MEMORY.md は黙って切り詰められます。サブエージェントの説明文は毎ターン読まれます。カスタムサブエージェントの説明文の合計が15,000トークンを超えると、Claude Code は起動時に警告します。詳細は各サブエージェントのシステムプロンプトに移してください。こちらは実行時にのみ読み込まれます。
- 成功した Bash や PowerShell のコマンドは、デフォルトでおよそ30,000文字までをインラインで返します。それを超えると Claude は短いプレビューとファイルパスを受け取り、必要に応じてファイルを読みます。失敗したコマンドは先頭と末尾の抜粋として最大10,000文字を返します。bashOutputMaxChars(v2.1.261 以降、4,000〜128,000 にクランプ)はインライン上限と読み戻しウィンドウを同時に設定し、Claude Code に BASH_MAX_OUTPUT_LENGTH を無視させます。taskOutputMaxChars は TaskOutput で読むバックグラウンドタスクに対して同じことをします(デフォルト 32,000、同じ範囲)。おしゃべりなビルドツールを使うプロジェクトでは下げ、Claude がどのみち保存ファイルを開き続ける場合にだけ上げてください。
- フォークでないサブエージェントは、自身のプロンプトに加えて、CLAUDE.md 階層のすべてのレベルと git status のスナップショットを読み込みます。組み込みの Explore と Plan エージェントはどちらも省略します。委任プロンプトからすべてを受け取るカスタムサブエージェントには、フロントマターに omitClaudeMd: true を設定してください(v2.1.271 以降)。ユーザー、プロジェクト、ローカルの CLAUDE.md ファイルはスキップされ、管理ポリシーファイルは引き続き読み込まれます。エージェントがメインセッションのエージェントとして動作するときは無視されます。ヘッドレス実行で大きな共有指示を渡すには、すべての説明文に詰め込む代わりに --append-subagent-system-prompt-file(v2.1.261 以降)を使ってください。
- autoCompactWindow は 100,000 から 1,000,000 までのトークン数で、モデルのウィンドウを上限とします。未設定なら Claude Code がモデルに合わせて調整されたウィンドウを選びます。/autocompact 500k はユーザー設定に書き込み、--autocompact は1セッションだけ上書きし、CLAUDE_CODE_AUTO_COMPACT_WINDOW は両方を上書きします。CLAUDE_AUTOCOMPACT_PCT_OVERRIDE(1〜100)はトリガー点を下げることしかできません。コンパクション後、呼び出し済みスキルは新しいものから順に、1つあたり最大5,000トークン、合計25,000トークンの範囲で再アタッチされるため、古いスキルは丸ごと落とされることがあります。生き残らせる必要があるスキルは、/compact の後に再度呼び出してください。
- 思考トークンは出力として課金されます。maxEffortLevel(v2.1.267 以降)は、どのセッションでも使える effort の上限を設けます。low、medium、high、xhigh、max のいずれかです(max = 上限なし)。すべてのプロバイダーで、すべてのリクエストの前に適用され、スコープをまたいだ最も低い上限が優先され、xhigh 未満の上限は ultracode を無効化します。モデル別の上限は modelSettings に置きます。組織に強制するには管理設定を通じて配布してください。
そのまま貼れる設定ブロック
プロジェクトローカルのコンテキスト上限(.claude/settings.local.json)
{
"bashOutputMaxChars": 12000,
"taskOutputMaxChars": 12000,
"skillOverrides": {
"legacy-migration-notes": "name-only",
"deploy-prod": "user-invocable-only",
"old-design-system": "off"
},
"autoCompactWindow": 500000,
"maxEffortLevel": "high"
}これはデフォルトではなく、意思決定として上から下へ読んでください。2つの出力上限は、おしゃべりなテストランナーを前提としています。Claude が実行のたびに保存された出力ファイルを開くようになったら、30,000 / 32,000 のデフォルトの方へ戻してください。3つのオーバーライドは、説明文の代金を払わずにスキルを到達可能なままにします。コンパクションのウィンドウは、モデルに合わせて調整された時点ではなく半分でコンパクトしたい 1M コンテキストモデル向けの明示的な選択です。effort の上限はここで唯一出力品質を変える行なので、最後に、/usage で思考トークンが支配的だとわかってからだけ設定してください。
CLAUDE.md を読み込まないサブエージェント(.claude/agents/repo-auditor.md)
--- name: repo-auditor description: Audits a repository for dead code and unused exports. Use for read-only sweeps. tools: Read, Grep, Glob, Bash model: sonnet omitClaudeMd: true --- You are a read-only auditor. Everything you need is in the delegation prompt. Report findings as a table of path, symbol, and evidence. Do not edit files.
ヘッドレスセッションでスキルレポートを実行する
claude -p "/skill-doctor"
よくある間違い
- スキルを折りたたむ代わりに削除する。name-only は一覧コストをほぼゼロにしたままスキルを呼び出し可能に保ちますが、off は / メニューからも取り除きます。ほとんどの「未使用」スキルは消すのではなく name-only にすべきです。
- ビルドログが1回あふれただけで bashOutputMaxChars を上限の 128,000 に引き上げる。これは今後のすべてのコマンドをインラインで最大4倍高価にします。代わりに PreToolUse フックでログをフィルタしてください(FAIL を grep、head -100)。コストのドキュメントに正確なフックが載っています。
- autoCompactWindow をモデルのコンテキストより大きく設定する。Claude Code は黙ってウィンドウで上限を切るため、設定は適用されたように見えて何もしません。
- コンテキストが分離されているからサブエージェントは安いと思い込む。Explore、Plan、または omitClaudeMd を設定していない限り、その起動には依然としてすべての CLAUDE.md レベルと git スナップショットが含まれます。
- スマートフォンから Remote Control 経由で /skill-doctor を読む。「Skill usage reports are not available on this connection.」が返ります。セッションが存在するターミナルで実行してください。
- 呼び出し済みスキルが /compact を生き延びると期待する。25,000トークンの再アタッチ予算に収まるのは、1つあたり5,000トークンで最新の呼び出しだけです。まだ必要なものは再度呼び出してください。
クイックチェック
Check yourself
0/6- まず測る: ライブ内訳は /context、スキル・サブエージェント・プラグイン・MCP サーバー別の帰属は /usage、一覧の見積もりは /doctor。
- スキル一覧はウィンドウの1%を上限とするターンごとの税金。/skill-doctor が何を折りたたむべきかを教えてくれ、name-only はほぼゼロコストでスキルを使える状態に保つ。
- ツール出力はウィンドウを吹き飛ばす最速の手段: 成功したコマンド1つあたり約30,000文字、バックグラウンドタスク1つあたり32,000文字がインラインに。bashOutputMaxChars / taskOutputMaxChars で上限を設けるか、フックでフィルタする。
- サブエージェントは起動時にタダではない: Explore、Plan、または omitClaudeMd でない限り、すべての CLAUDE.md レベルと git status が乗る。カスタムの説明文は合計15,000トークン未満に保つ。
- コンパクションは最近呼び出されたスキルだけを残す(1つ5,000、合計25,000)。autoCompactWindow は意図的に設定し、生き残らせるべきものは再度呼び出す。
- 思考トークンが請求額を支配するときは、maxEffortLevel がフリート全体の effort に上限を設ける。最も低いスコープが勝ち、すべてのプロバイダーで有効。
出典と参考文献
- Claude Code ドキュメント — 設定リファレンス —
autoCompactWindow、bashOutputMaxChars、taskOutputMaxChars、maxEffortLevel、skillListingBudgetFraction、skillOverrides、disableBundledSkills - Claude Code ドキュメント — スキルで Claude を拡張する —
/skill-doctor、一覧の予算、説明文の上限、コンパクション時の再アタッチ予算 - Claude Code ドキュメント — ツールリファレンス: 出力上限 — 有効なコマンドと失敗したコマンドのインライン上限
- Claude Code ドキュメント — サブエージェント — 起動時に読み込まれるもの、
omitClaudeMd、15,000トークンの説明文警告 - Claude Code ドキュメント — コスト管理 —
/usageの帰属分析、200行の CLAUDE.md ガイダンス、テスト出力のフィルタフック - Claude Code ドキュメント — コンテキストウィンドウを探る — このページの図が要約している対話型シミュレーション
- AILmanac の関連ページ: MCP のトークンコスト — 同じ監査の MCP 側の半分
- AILmanac の関連ページ: サブエージェントフリートの制限 — サブエージェントの並行性と予算の側面