Claude Codeのコンテキスト管理を怠ると、作業が長引くほど指示がぶれていきます。原因は、会話が伸びるほどコンテキストウィンドウが埋まり、早い段階の指示ほど参照されにくくなることです。本記事は、会話を区切る・渡す情報を絞る・作業状態をファイルへ逃がすという3つの手を、公式ドキュメント5件と自社の運用記録(2026-07-28実測)から整理します。

検証環境:claude-opus-5 / Claude Code v2.1.x / macOS 15 / 2026-07-28検証

01結論:Claude Codeのコンテキスト管理は、区切り・絞り込み・外部化の3つで支える

結論は3点です。

  1. 指示がぶれる直接の原因は、コンテキストウィンドウが会話とファイル読み込みで埋まり、早い段階の指示が参照されにくくなることです。
  2. 打つ手は3つあり、会話を区切る・渡す情報を絞る・作業状態をファイルへ逃がす、を状況に応じて選びます。
  3. 3つの手は粒度が違うため併用できます。区切りは会話単位、絞り込みは1回のやり取り単位、外部化はセッションをまたぐ単位の対策です。

Claude Code公式ドキュメントは、コンテキストウィンドウに会話履歴・ファイル内容・コマンド出力が入ると説明しています。CLAUDE.md・auto memory・読み込み済みのスキルも同様です(出典: Claude Code公式ドキュメント)。会話が伸びるほど、この中身は増える一方です。

同じ公式ドキュメントは、コンテキストが埋まるとClaude Codeが自動でコンパクション(要約)を行うとも述べています。ただし会話の早い段階にあった詳細な指示は、失われる可能性があるとも明記しています(出典: Claude Code公式ドキュメント)。埋まってから自動処理に任せる設計だけでは、指示の劣化を防ぎきれません。

Claude Codeを業務のどこまで任せるかは『業務で使うClaude Code|コード以外に任せる仕事の地図』で整理しています。任せる時間が長くなるほど、今回のコンテキスト管理が効いてきます。WEBMARKSは2026-06-24に7部署・30体のAI社員を定義し、Claude Codeで長時間の制作作業を日常的に行っています。指示がぶれる場面を減らすため、3つの手を運用ルールとして固定しました(2026-07-28実測、詳細は後述)。

02指示がぶれる原因|コンテキスト管理を怠ると何が積み上がるか

Claude Codeのコンテキストウィンドウには、会話を始める前から複数の要素が積み上がっています。公式ドキュメントが示す内訳は次のとおりです(出典: Claude Code公式ドキュメント)。

  • システムプロンプト:常に最初に読み込まれる基本指示
  • auto memory(MEMORY.md):前回までにClaudeが学んだ内容の先頭200行または25KB
  • CLAUDE.md:プロジェクト・ユーザー・組織の指示ファイル
  • MCPツール名とスキルの一覧:本体は使うときだけ読み込まれる
  • 会話履歴:ユーザーの発言とClaudeの応答、ファイル読み込みやコマンド出力

この時点で、標準のコンテキストウィンドウ20万トークンの一部はすでに埋まっています(出典: Claude Code公式ドキュメント)。ここへ、ファイルを1つ読むたびに数百〜数千トークンが加わります。長時間のセッションでは、この積み上がりが指示のぶれに直結します。

原因は2つに分けられます。1つは、古い指示ほど会話の奥に埋もれ、Claudeが参照する優先度が下がることです。もう1つは、コンテキストが埋まるとClaude Codeが自動で要約を行い、その過程で細部の指示が失われることです(出典: Claude Code公式ドキュメント)。

Claude Codeのセッション内トークン使用量の推移と、3つの手が効く位置 会話の経過を横軸、コンテキストウィンドウの使用量(0〜20万トークン)を縦軸にとった折れ線図。起動時にはすでに一定量が埋まった状態から始まり、ファイル読み込みとツール出力が増えるほど右肩上がりに伸びる。ピーク付近で会話を区切る(/clear)を使うと使用量は起動時の水準まで戻る。区切らずに続けた場合の推定を破線で示し、渡す情報を絞る(サブエージェントやCLAUDE.mdの整理)を使った実際の使用量は破線より緩やかな傾きで伸びる。曲線の途中から作業状態をファイルへ逃がす矢印がファイルアイコンへ抜け、そこから先の使用量はほぼ横ばいになる。上限20万トークンのラインと、上限に近づくと自動コンパクションが働く帯を上部に示す。 SESSION Claude Codeのコンテキスト使用量の推移 上限に近づくと自動コンパクションが働く帯 0 10万 上限 20万トークン 会話の経過(ターン数) 起動時の読み込み合計 手1:区切る(/clear) 手2:絞る 手3:外部化する 実際の使用量(3手併用) 絞らなかった場合の推定 3つの手を併用するほど、上限から離れた位置で会話を続けられる。
Claude Codeのコンテキスト管理を可視化したセッション内トークン推移図

Claude Code公式ドキュメントによると、コンテキストが上限へ近づくと古いツール出力から先に消えます。それでも足りなければ、会話そのものを要約します(出典: Claude Code公式ドキュメント)。要約後もユーザーの依頼内容と主要なコード断片は残りますが、会話の早い段階にあった細かい指示は失われる場合があります(出典: Claude Code公式ドキュメント)。

この設計を知らずに長いセッションを続けると、数十ターン前に伝えた禁止事項や命名規則が、要約のタイミングで本文から抜け落ちることがあります。抜け落ちた指示は、Claudeが「守っていない」のではなく「見えていない」状態です。次章から、見えなくなる前に打つ3つの手を順に確認します。

031つ目の手:会話を区切るコンテキスト管理|/clearと/compactの使い分け

1つ目の手は、会話そのものを区切ることです。Claude Codeには/clear/compactという2つのコマンドがあります。

コマンド効果使いどころ
/clear会話履歴を完全に消し、新しいセッションとして再開する別の作業へ切り替えるとき
/compact会話を構造化された要約に置き換え、続きを保ちながら空きを作る同じ作業を続けながら空きが欲しいとき
/compact <指示>何を残すかを指定してから要約する残したい情報がすでに決まっているとき

公式ドキュメントは、無関係な作業に切り替えるときは/clearを使うよう勧めています。古い文脈が新しい作業の判断を邪魔しないようにするためです(出典: Claude Code公式ドキュメント)。/clearは会話履歴を完全に削除し、復元できません。必要な文脈は、実行前にCLAUDE.mdへ書いておきます(出典: Claude Code公式ドキュメント)。

/compactには要約の焦点を指定できます。たとえば/compact 認証まわりの変更点だけ残してのように書くと、Claudeは何を優先して残すかを判断できます(出典: Claude Code公式ドキュメント)。CLAUDE.mdに「Compact instructions」の節を作っておけば、毎回書かなくても同じ方針を適用できます。

# Compact instructions

要約するときは、テスト結果とコードの変更点を優先して残してください

公式ドキュメントは、自動判定を待つより前に/compactを手動で打つ方がよいと説明しています。状況が分かっているうちなら、何を残すかを自分で選べるためです(出典: Claude Code公式ドキュメント)。区切りは「作業が切り替わったら/clear、続けるが軽くしたいなら/compact」という単純な判定で運用できます。

042つ目の手:渡す情報を絞るコンテキスト管理|CLAUDE.mdとサブエージェントの役割分担

2つ目の手は、そもそもコンテキストへ入れる情報量を絞ることです。絞り方は大きく2種類あります。

第一に、常に読み込まれるCLAUDE.mdを軽くします。公式ドキュメントは、CLAUDE.mdを200行未満に保つことを推奨しています。長いファイルはコンテキストを消費し、指示への追従を下げるためです(出典: Claude Code公式ドキュメント)。

特定のディレクトリでだけ必要な指示は、.claude/rules/paths指定つきで切り出します。該当ファイルを読んだときだけ読み込まれます(出典: Claude Code公式ドキュメント)。

第二に、大量に読む必要がある調査をサブエージェントへ渡します。サブエージェントは独自のコンテキストウィンドウを持ち、そこで読んだファイルは本体の会話に入りません。戻ってくるのは要約とメタデータだけです(出典: Claude Code公式ドキュメント)。

公式ドキュメントの例では、6,100トークン分のファイルを読んだ調査が、本体へは420トークンの要約として返っています。差の5,680トークンが、本体のコンテキストで節約された量です(出典: Claude Code公式ドキュメント)。テストの実行結果やログファイルなど、細部を読み切ってから結論だけ欲しい作業は、この形に向いています。

hooksによる前処理も、絞り込みの一種です。公式ドキュメントは、1万行のログファイルをClaudeにそのまま読ませる代わりに、PreToolUseフックでERROR行だけを抽出して渡す例を示しています。数万トークンだった入力が、数百トークンまで減ります(出典: Claude Code公式ドキュメント)。

053つ目の手:作業状態をファイルへ逃がす文脈整理|台帳とMEMORY.mdの使い分け

3つ目の手は、会話の中に置いたままにせず、作業状態をファイルへ書き出すことです。会話は/clear/compact、あるいは想定外の終了で失われますが、ディスク上のファイルは残ります。

書き出し先は主に2種類です。1つは人間が書くCLAUDE.md、もう1つはClaudeが自分で書くauto memory(MEMORY.md)です。両方とも毎セッションの開始時に読み込まれます(出典: Claude Code公式ドキュメント)。

書き出し先誰が書くか読み込まれる量向いている内容
CLAUDE.md人間ファイル全体恒久的なルール・禁止事項・命名規則
MEMORY.md(auto memory)Claude先頭200行または25KBまでビルドコマンド・過去の訂正・気づいた癖
案件台帳などの独自ファイル人間とClaude双方Claudeが都度読みに行く進行中タスクの状態・次の一手

公式ドキュメントは、プロジェクト直下のCLAUDE.mdはコンパクション後もディスクから再読み込みされると明記しています。一方でサブディレクトリのCLAUDE.mdは、該当ディレクトリのファイルを再度読むまで再読み込みされません(出典: Claude Code公式ドキュメント)。恒久的に守らせたい指示は、プロジェクト直下のCLAUDE.mdに置くのが安全です。

3つの手をいつ使うか判定する3段階の分岐フロー いま何をしようとしているかを起点に、3段階の分岐で使う手を判定するフロー図。①これから無関係な作業へ切り替えるかを問い、YESなら手1(会話を区切る/clear)へ進み、NOなら②直前までの情報のうち一部だけ調べたいかを問う。YESなら手2(サブエージェントやCLAUDE.mdで渡す情報を絞る)へ進み、NOなら③続きを次のセッションや別の担当が引き継ぐ可能性があるかを問う。YESなら手3(作業状態を台帳などのファイルへ逃がす)へ進み、NOならそのまま会話を続行する。3段のどれか1つに該当した時点で、その手を使う。 FLOW 3つの手をいつ使うか判定する分岐フロー いま何をしようとしているか ①これから無関係な作業へ 切り替えるか YES 手1:会話を区切る(/clear) 古い文脈を持ち込まない ②直前までの情報のうち 一部だけ調べたいか YES 手2:渡す情報を絞る サブエージェント/CLAUDE.md ③続きを次のセッションや 別の担当が引き継ぐか YES 手3:状態をファイルへ 逃がす(台帳) 次のセッションが引き継げる そのまま会話を続行 3つの手のどれも使わない 3段のどれか1つに該当したら、そこで手を使う。複数該当するなら先に問うた手を優先する。
3つの手をいつ使うかを判定する分岐フロー図

進行中タスクの状態は、CLAUDE.mdにもMEMORY.mdにも向きません。前者は会話ごとの上書きを前提とせず、後者は200行の制限があるためです。WEBMARKS社内は、案件ごとの台帳ファイル1つに「状態」「次の一手」「最終更新」を書き、着手時と節目ごとに更新しています。

[案件: 20260728_AGIジャーナル記事制作]
状態: 進行中
次の一手: AGIM-017の図解2点をSVG化する
最終更新: 2026-07-28

この形にしておくと、会話が/clearで消えても、次のセッションが台帳を読むだけで続きから着手できます。書く場所を会話の中から出すことが、3つ目の手の中身です。

3つの手と自動コンパクションは、単位×タイミングでどう違うか 横軸に『1回のやり取り単位・会話単位・セッションをまたぐ単位』という対策の粒度を、縦軸に『先回り・後追い』という介入のタイミングを取った2軸マトリクス(縦軸は本文の記述を統合した新規軸)。①会話を区切る(/clear・/compact)は会話単位×先回りに、②渡す情報を絞る(サブエージェント等)は1回のやり取り単位×先回りに、③作業状態をファイルへ逃がす(台帳・MEMORY.md)はセッションをまたぐ単位×先回りに位置する。対照として自動コンパクション(何もしない場合)は会話単位×後追いに位置し、①〜③がいずれも先回りで手を打つのに対し、自動コンパクションだけが後追いで自動処理に任せる点が異なる。 MATRIX 3つの手を「単位×タイミング」で位置づける 縦軸=介入のタイミング(先回り/後追い) 横軸=対策の単位(1回のやり取り→会話→セッション) 1回のやり取り単位 会話単位 セッションをまたぐ単位 先回り 後追い ①会話を区切る (/clear・/compact) ②渡す情報を絞る (サブエージェント等) ③状態をファイルへ逃がす (台帳・MEMORY.md) 自動コンパクション (何もしない場合) =3つの手(先回り・手動で打つ) =自動コンパクション(後追い・自動処理) ①〜③は先回りで手動、自動コンパクションだけが後追いで自動という違いがある 縦軸(先回り/後追い)は本文の記述を統合した編集部整理の分類
3つの手を「対策の単位」と「介入のタイミング」の2軸マトリクスに配置した比較図

06WEBMARKSのコンテキスト管理の実例|3つの手を使い分けた記録

自社での使い分けは、この記事自体の制作工程にも表れています。

工程使った手理由
記事設計から執筆へ切り替えるとき会話を区切る(/clear設計の議論と本文執筆は別の作業のため
公式ドキュメントを複数ページ調べるとき渡す情報を絞る(サブエージェント)原典照合はページ数が多く、本体の会話を汚さないため
記事の状態を次の担当へ引き継ぐとき作業状態をファイルへ逃がす(台帳)執筆・原典照合・批評でセッションが分かれるため

姉妹メディアのAIO Journalは、公開URLが251本です(2026-07-28にsitemap.xmlで実測)。制作体制を引き継いだ本メディアも、記事ごとに執筆・原典照合・批評でセッションを分ける前提のため、3つ目の手(作業状態の外部化)に最も依存しています。

2026-07-28、社内のAIエージェントが台帳の古い記録だけを根拠に、AIO Journalを「1本も公開されていない」と誤って報告した例があります。原因は、稼働状況を否定する報告を本番URLで確かめずに出したことでした。以後、否定的な報告は実物を確認してから出す手順を足しています。

07コンテキスト管理でつまずきやすい5つの落とし穴

  1. /clearを使わずセッションを伸ばし続ける:無関係な作業へ切り替えても会話を続けると、古い文脈が新しい作業の判断を歪めます。作業の性質が変わった時点で区切ります。
  2. 自動コンパクションに任せきる:埋まってからの要約では、何を残すか選べません。まとまった区切りが来たら、/compact <焦点>で先に打ちます。
  3. CLAUDE.mdへ何でも書き足す:200行を超えたCLAUDE.mdは毎回読み込まれ続け、指示への追従も下がります(出典: Claude Code公式ドキュメント)。特定領域の指示は.claude/rules/へ切り出します。
  4. MEMORY.mdを長文の議事録にする:先頭200行または25KBを超えた分は、次のセッションで読み込まれません(出典: Claude Code公式ドキュメント)。1行1件を意識し、詳細は別ファイルへ逃がします。
  5. 進行中タスクの状態を会話の記憶だけに頼る:セッションは/clearや想定外の終了で失われます。状態はファイルへ書いた分だけ、次のセッションへ引き継がれます。

08コンテキスト管理チェックリスト|7項目で今日から点検する

  • 作業の性質が変わった時点で/clearを使っているか
  • まとまった区切りが来る前に/compact <焦点>を手動で打っているか
  • CLAUDE.mdは200行未満に収まっているか、超えているなら.claude/rules/へ分割したか
  • 大量のファイル読み込みや調査をサブエージェントへ委譲しているか
  • ログや大きな出力をhooksで絞ってからClaudeへ渡しているか
  • 進行中タスクの状態を、会話ではなくファイル(台帳など)に書いているか
  • /contextで現在のコンテキスト使用量を、作業の節目に確認しているか

09FAQ

コンテキストウィンドウの上限はどれくらいですか

標準のコンテキストウィンドウは20万トークンです(出典: Claude Code公式ドキュメント)。一部のモデルはより大きな上限に対応しますが、対応状況はプランや設定によって変わります。

/compact/clearはどちらを先に検討すべきですか

同じ作業を続けるなら/compact、無関係な作業へ切り替えるなら/clearです。判断に迷うときは、次の指示が前の文脈を必要とするかどうかで決めます。

サブエージェントに任せると回答の質は落ちませんか

任せる範囲を「大量に読んで要点だけ返す調査」に絞れば、本体の判断材料は減りません。最終判断や実装そのものは、本体側に残す設計が基本です。

コンテキスト管理を怠ると、どのくらいで指示がぶれ始めますか

作業内容やファイルの大きさによって変わるため、一律の目安はありません。/contextコマンドで使用量を確認しながら、自分の作業での埋まり方を把握するのが実務的です。