Claude Code のコンテキスト管理:/compact・/clear の使い分けとトークン節約のコツ

Claude Code 公開:

Claude Code のコンテキストウィンドウが埋まる仕組みと、/compact、/clear、/context の使い分けを解説します。自動圧縮のタイミング、圧縮時に残す情報の指示、セッション再開との関係も紹介します。

検証日 2026年9月7日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. コンテキストを構成するもの
  2. /compact:要約して続ける
  3. /clear:履歴を捨てて新しく始める
  4. 使い分けの判断基準
  5. PreCompact フックで情報を退避する
  6. 消費を抑える習慣
    1. CLAUDE.md を短く保つ
    2. 使わない MCP サーバーを外す
    3. 大きなファイルや出力を読ませない
    4. 調査はサブエージェントに任せる
  7. セッションの再開との関係
  8. まとめ

長いセッションを続けていると、Claude の応答が遅くなったり、最初に伝えたルールを忘れたように見えたりします。原因の多くはコンテキストウィンドウの逼迫です。会話履歴、読み込んだファイル、ツールの実行結果はすべてコンテキストに蓄積され、上限に近づくと精度が落ち、圧縮が走って情報が失われます。

この記事では、コンテキストを「見る」「圧縮する」「捨てる」ための 3 つのコマンドと、そもそも消費を抑えるための習慣をまとめます。

KEY POINT

この記事で分かること

  • /context/compact/clear の役割と使い分け
  • 自動圧縮の仕組みと、圧縮で失いたくない情報を守る方法
  • コンテキスト消費を抑える日常的な習慣

コンテキストを構成するもの

コンテキストウィンドウには、次のものが順に積み上がります。

要素内容削減の余地
システムプロンプトClaude Code 本体の指示なし
CLAUDE.mdユーザー・プロジェクト・ローカルの内容大きい(短く保つ)
ツール定義組み込みツールと MCP サーバーのツール一覧中(不要な MCP を外す)
会話履歴指示、応答、読んだファイル、コマンド出力大きい(/compact、/clear)

/context を実行すると、これらの内訳と残り容量が表示されます。「思ったより MCP のツール定義が大きい」「CLAUDE.md が長すぎる」といった発見があるので、まず一度見てみてください。

/compact:要約して続ける

/compact は、これまでの会話を要約し、要約だけを残して履歴を置き換えます。タスクの途中でコンテキストが逼迫したときに使います。

/compact

引数で「何を残すか」を指示できます。

/compact 変更したファイルの一覧と、未解決のテスト失敗の内容は必ず残してください

要約は Claude が行うため、指示がないと細部(具体的なエラーメッセージ、決めた命名規則など)が落ちることがあります。残したい情報を明示するのが安全です。

用語解説

自動圧縮: 使用量が上限付近に達すると、手動で /compact しなくても自動的に圧縮されます。任意のタイミングで起きるため、大事な情報は CLAUDE.md やメモファイルに書き出しておく方が確実です。

/clear:履歴を捨てて新しく始める

/clear は会話履歴を完全に消します。CLAUDE.md や設定は再読み込みされるので、「新しいタスクに移る」ときはこちらです。

/clear

前のタスクの文脈が混ざると、Claude が無関係なファイルを参照したり、前の方針を引きずったりします。タスクの区切りで /clear する習慣は、精度と費用の両方に効きます。

使い分けの判断基準

状況コマンド
同じタスクを続けたいが、動作が重くなってきた/compact
実装が終わり、別の機能に取りかかる/clear
調査だけ済ませて、実装は別セッションでやりたい調査結果をファイルに書かせてから /clear
圧縮後に前提を忘れているように見える/compact に残す内容を指示してやり直す、または CLAUDE.md に書く

PreCompact フックで情報を退避する

圧縮の直前に PreCompact フックが発火します。ここでスクリプトを走らせ、現在の作業状態をファイルに書き出す仕組みを作れます。

{
  "hooks": {
    "PreCompact": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "git status --short > .claude/last-status.txt"
          }
        ]
      }
    ]
  }
}

hooks の基本は hooks で lint と format を自動実行する で解説しています。

消費を抑える習慣

CLAUDE.md を短く保つ

CLAUDE.md は毎セッション読み込まれます。ディレクトリ一覧や長い仕様を書かず、必要な文書は @ インポートやサブディレクトリの CLAUDE.md に分けます(CLAUDE.md の書き方)。

使わない MCP サーバーを外す

MCP サーバーのツール定義は、使わなくてもコンテキストを消費します。プロジェクトで使わないものは claude mcp remove で外すか、project スコープではなく local スコープに置いて必要なときだけ有効にします。

大きなファイルや出力を読ませない

cat で巨大なログを読ませたり、node_modules を検索させたりすると、一気に消費します。「先頭 50 行だけ」「grep で該当箇所だけ」と範囲を指定してください。長いテスト出力は、| tail -n 30 のように絞る指示が有効です。

調査はサブエージェントに任せる

コードベースの広範な調査は、サブエージェントに任せると、その過程で読んだファイルがメインのコンテキストに残りません。結果の要約だけが返ってきます(サブエージェントの作り方)。

セッションの再開との関係

claude --continueclaude --resume で過去のセッションを再開すると、当時のコンテキスト(圧縮済みなら要約)がそのまま復元されます。翌日に続きをやる場合、再開直後に /context で状態を確認し、必要なら /compact してから作業を始めると安定します。

まとめ

  • /context で内訳を見て、CLAUDE.md や MCP のツール定義が肥大化していないか確認する
  • 同じタスクの継続は /compact(残す情報を引数で指示)、タスクの切り替えは /clear
  • 自動圧縮は任意のタイミングで起きるため、重要情報は CLAUDE.md やファイルに退避する
  • 大きな出力を読ませない、調査はサブエージェントに任せる、で日常的に消費を抑える

よくある質問

/compact と /clear はどちらを使うべきですか?
同じタスクを続けるなら /compact(要約して継続)、別のタスクに移るなら /clear(履歴を消して新規開始)です。
自動圧縮はいつ起きますか?
コンテキストの使用量が上限に近づくと自動的に圧縮されます。直前に PreCompact フックで重要情報を退避することもできます。
コンテキストの使用量はどこで見られますか?
/context コマンドで、システムプロンプト・ツール・会話履歴などがどれだけ占めているかを確認できます。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。