Claude Codeコンテキスト管理|遅い・止まるを5つの設定で解消
代表取締役 上坂大地郎

結論: Claude Codeが遅くなる原因の多くはコンテキストウィンドウの肥大化にある。1Mコンテキスト無効化、auto-compact閾値変更、手動compact、MCPサーバー整理、モデル切り替えの5設定で、応答速度と出力品質を改善できる。
この記事の要点:
- Claude Codeは毎回のリクエストで会話全文を送信するため、長いセッションほどコストと遅延が増える(公式ドキュメント: Manage costs effectively)
CLAUDE_CODE_DISABLE_1M_CONTEXT=1で200Kに制限すると、Sonnet 5やFable 5でもコンパクションが早期に走り、応答が安定する(公式ドキュメント: Environment variables)/autocompact 500kやCLAUDE_CODE_AUTO_COMPACT_WINDOWで閾値を下げると、コンテキストが膨らむ前に自動圧縮される(公式ドキュメント: Model configuration)
対象読者: Claude Codeを日常的に使っていて、セッション後半の遅延や応答品質の低下に困っているエンジニア
読了後にできること: 5つの設定を自分のsettings.jsonと環境変数に反映し、セッション中の遅延を減らせる
この記事では、コンテキストウィンドウの仕組みから、症状ごとの原因切り分け、5つの具体的な設定手順までを整理する。Claude Codeのauto modeの仕組みは別記事で扱っているので、権限設定についてはそちらを参照してほしい。

セッションが遅くなったとき、どの設定をどの順番で変えるか。
コンテキストウィンドウの中身 — 起動時に何が読み込まれるか
Claude Codeは起動時に複数の情報を自動でコンテキストウィンドウに読み込む。公式のContext Window解説ページによると、読み込み順は以下のとおりになっている。
起動時の自動読み込み
読み込み順 | 内容 | トークン目安 |
|---|---|---|
1 | システムプロンプト | 約4,200 |
2 | Auto memory(MEMORY.md、先頭200行/25KB) | 約680 |
3 | 環境情報(OS・ディレクトリ・gitステータス) | 約280 |
4 | MCPツール名リスト(遅延読み込み) | 約120 |
5 | スキル一覧(1行サマリ) | 約450 |
6 | ~/.claude/CLAUDE.md | 約320 |
7 | プロジェクトCLAUDE.md | 約1,800 |
合計で約7,850トークンがセッション開始の時点で消費される。200Kコンテキストウィンドウの場合、この時点で約4%を使っている。
ファイル読み込みとツール出力で膨れる
問題は起動直後ではない。セッション中にClaude Codeがファイルを読むたびに、その全文がコンテキストに追加される。grepの結果、npm testの出力、MCPサーバーからのレスポンスもすべて同様に蓄積する。
公式ドキュメントでは「ファイル読み込みがコンテキスト消費の大半を占める」と明記されている。1ファイルが2,000〜3,000トークン、テスト出力が1,200トークン程度を消費する場合、10ファイル読んでテストを2回実行すれば3万トークンを超える。
セッションが遅くなる3つの原因
コンテキストが大きい=毎回のリクエストが重い
Claude Codeは1回のリクエストごとに会話全文を送信する。コンテキストが50万トークンのセッションでは、1行の質問を送るだけでも50万トークン分の処理が走る。プロンプトキャッシュがヒットすれば読み取りコストは下がるが、レイテンシの増加は避けにくい。
キャッシュミスで処理量が跳ね上がる
プロンプトキャッシュのTTLはサブスクリプションプランで1時間、APIキーやUsage Credits利用時は5分間。昼休みを挟んでセッションに戻ると、キャッシュが消えた状態で50万トークンを再処理する。公式によると「休憩後の最初のメッセージがキャッシュミスし、フルコンテキストを再処理する」と説明されている。
auto-compact後にすぐ再膨張する
auto-compactが会話を要約しても、直後に大きなファイルやツール出力がコンテキストに入ると、再びコンテキスト上限に達する。公式ドキュメントでは「Autocompact is thrashing」というエラーメッセージでこの状態を通知する。このエラーが出たら、手動で対処する必要がある。
対処1: 1Mコンテキストを無効化する
Sonnet 5とFable 5はデフォルトで1Mトークンのコンテキストウィンドウを使う。Opus 4.6以降もMax・Team・Enterpriseプランでは自動的に1Mにアップグレードされる。
1Mコンテキストはセッションが長くても会話が途切れない利点がある反面、コンテキストが巨大になると応答が遅くなり、関係のない過去の会話に引きずられて出力品質が下がることがある。
settings.jsonに次の1行を追加する。
{
"env": {
"CLAUDE_CODE_DISABLE_1M_CONTEXT": "1"
}
}
~/.claude/settings.json(全プロジェクト共通)またはプロジェクトの.claude/settings.jsonに書く。
無効化後の動作
1Mを無効化すると、すべてのモデルが200Kコンテキストとして扱われる。auto-compactは200K到達時点で作動し、会話の圧縮が早い段階で走る。
設定変更後はClaude Codeを再起動する。/modelピッカーから1Mバリアントが消えていれば反映されている。

どの症状が出ているかで、最初に試す設定が変わる。
対処2: auto-compact閾値を変更する
auto-compactのデフォルトは、コンテキストウィンドウの上限付近で発動する。ただしモデルによって閾値が異なり、Sonnet 5は約967Kトークン、クラウドセッションでは上限の手前で圧縮が走る。これを早めに発動させると、コンテキストが大きくなりすぎる前に圧縮が入る。
/autocompactコマンドで変更する
セッション中に実行すると、即座に反映され、以降のセッションにも保存される。
/autocompact 500k
指定可能な範囲は100Kから1Mトークン。200000のようにプレーンな数値、500k、1Mのいずれの書き方も受け付ける。/autocompact autoで、モデルごとに最適化された既定値に戻る。
環境変数での設定
{
"env": {
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "200000"
}
}
環境変数はプレーンな数値のみ受け付ける。この変数が設定されていると、/autocompactコマンドや--autocompactフラグよりも優先される。
200Kに設定した場合、Sonnet 5(ネイティブ1M)を使っていても200K到達時に圧縮が走る。「コンテキストは小さく保ちたいがモデルの能力は落としたくない」という使い方に向いている。
対処3: 手動compactでコンテキストを整理する
auto-compactは閾値到達時に自動で発動するが、手動で任意のタイミングで圧縮をかけることもできる。/compactコマンドに引数を渡すと、要約時に何を残すかを指示できる。
/compact コード変更とテスト結果を残す
/compact keep only the plan and the diff
引数なしで実行すると、会話全体を圧縮する。セッション開始直後で会話が少ない場合はNot enough messages to compact.と返る。
compactで保持されるもの、消えるもの
保持される | 消える |
|---|---|
プロジェクトルートのCLAUDE.md | 会話中に渡した一時的な指示 |
実行中のスキルの内容 | ネストされたCLAUDE.md(次のファイル読み込みで再ロード) |
auto memory(MEMORY.md) | パス限定ルール(対象ファイルを読むと再ロード) |
スキル一覧(invoked済みのみ) | invoke前のスキル一覧 |
「compactしたら指示が消えた」という場合、その指示が会話中にだけ伝えたものだった可能性が高い。繰り返し使う指示はCLAUDE.mdに書くことで、compact後も自動的に再注入される。
対処4: MCPサーバーとスキルのコンテキスト消費を減らす
MCPツールの定義はデフォルトで遅延読み込みされるため、ツール名だけがコンテキストに入り、スキーマは使用時にオンデマンドで読み込まれる。それでも多数のMCPサーバーを接続していると、ツール呼び出しのレスポンスがコンテキストに蓄積する。
/contextで確認し、不要サーバーを無効化する
/contextで現在のセッションに読み込まれているCLAUDE.md、ルール、MCPサーバーの一覧と消費量を確認できる。
/mcp
/mcpで接続中のサーバー一覧を確認し、このセッションで使わないサーバーを無効化する。CLIツール(gh、aws、gcloudなど)が同等の機能を持つ場合は、CLIのほうがコンテキスト効率が高い。MCPサーバーはツール定義をコンテキストに載せるが、CLIはコマンドの出力だけがコンテキストに入るためだ。

MCPサーバーはツール定義が常にコンテキストに乗る。CLIは実行結果だけ。
対処5: モデルとeffortレベルを切り替える
モデルによって1リクエストあたりのトークン単価と応答速度が異なる。すべての作業をOpusで行う必要はない。
Sonnetへの切り替え
/model sonnet
日常的なコーディング作業はSonnetで十分にこなせる。Opusは複雑なアーキテクチャ判断やマルチステップの推論に使い、それ以外はSonnetに切り替える運用が公式のコスト管理ガイドで推奨されている。
effortレベルの調整
/effort low
effortレベルはlow、medium、high(デフォルト)、xhigh、maxの5段階。ただしOpus 4.6とSonnet 4.6はxhighに対応しておらず、low・medium・high・maxの4段階になる。thinking(拡張思考)トークンは出力トークンとして課金されるため、単純な作業にhighを使うとコンテキストとコストの両方が膨らむ。
レベル | 向いている作業 | 対応モデル |
|---|---|---|
| 短くスコープが明確な作業。レイテンシ重視 | 全モデル |
| コスト重視でインテリジェンスを少し下げてよい場合 | 全モデル |
| 日常のコーディング作業(デフォルト) | 全モデル |
| 深い推論が必要な複雑な問題 | Fable 5, Opus 5/4.8/4.7, Sonnet 5 |
| 高難度タスク。過剰推論のリスクあり | 全モデル |
settings.jsonの設定例 — コピペで使える3パターン
パターンA: コンテキストを最小限に保つ(200K制限)
{
"env": {
"CLAUDE_CODE_DISABLE_1M_CONTEXT": "1",
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "150000"
}
}
1Mを無効化し、150Kで早めにcompactを走らせる。セッションが頻繁に切れる環境や、遅延がとにかく困る場合に向いている。
パターンB: 中間バランス(500K閾値)
{
"env": {
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "500000"
}
}
1Mは有効のまま、500Kで圧縮を入れる。長めのセッションを維持しつつ、後半の遅延を抑えるバランス型。
パターンC: Sonnet固定+低effort(コスト最小)
{
"model": "sonnet",
"env": {
"CLAUDE_CODE_DISABLE_1M_CONTEXT": "1",
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "150000",
"CLAUDE_CODE_EFFORT_LEVEL": "medium"
}
}
モデル・コンテキスト・effortの3軸すべてを絞る。API課金環境で1日あたりのコストを抑えたい場合に有効。APIのコスト最適化の詳細はClaude APIコスト最適化の記事で扱っている。
遅くなる前に習慣にしておくこと
/clearでタスク間のコンテキストをリセットする
/clear
無関係なタスクに移るとき、前のセッションの会話を引きずる必要はない。/clearで会話をリセットすると、新しいセッションが起動時のコンテキストだけで始まる。/renameでセッションに名前をつけてから/clearすると、後で/resumeで戻れる。
重いファイル読み込みはサブエージェントに委任する
テスト実行、ドキュメント取得、ログ解析といった大量のテキストを扱う作業をサブエージェントに任せると、メインのコンテキストには結果のサマリだけが返る。たとえば6,100トークン分のファイルをサブエージェントが読んでも、メインに返るのは420トークンの要約だけ、というのが公式ドキュメントの説明する典型的なケースだ。
Claude Code Hooksでテスト出力をフィルタリングし、失敗箇所だけをコンテキストに渡す方法もある。公式はPreToolUse hookの例として、npm testの出力をgrep -A 5 -E '(FAIL|ERROR)'でフィルタし、100行に制限するスクリプトを紹介している。
/usageとステータスラインでコンテキストを監視する
/usage
/usageでセッションのトークン消費量を確認できる。ステータスラインにコンテキスト使用率を常時表示する設定もある。数字を見る習慣があると、「なんか遅い」の原因がコンテキスト肥大化なのか別の問題なのかを切り分けやすい。

5つの設定を全部入れる必要はない。症状に合うものから1つずつ試す。
参考・出典
- Claude Code — Manage costs effectively(https://code.claude.com/docs/en/costs) — Anthropic公式ドキュメント(参照日: 2026-08-22)
- Claude Code — Model configuration(https://code.claude.com/docs/en/model-config) — Anthropic公式ドキュメント(参照日: 2026-08-22)
- Claude Code — How Claude remembers your project(https://code.claude.com/docs/en/memory) — Anthropic公式ドキュメント(参照日: 2026-08-22)
- Claude Code — Explore the context window(https://code.claude.com/docs/en/context-window) — Anthropic公式ドキュメント(参照日: 2026-08-22)
- Claude Code — Environment variables(https://code.claude.com/docs/en/env-vars) — Anthropic公式ドキュメント(参照日: 2026-08-22)
- Claude Code — Troubleshooting(https://code.claude.com/docs/en/troubleshooting) — Anthropic公式ドキュメント(参照日: 2026-08-22)


