◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-05-31中級

Claude Code のコンテキスト上限エラーが出たときの原因と対処

長時間のClaude Codeセッションでコンテキスト上限に達して止まったときの対処を実体験から解説します。/compactによる会話圧縮と--continueでの再開の使い分け、タスクを小さく分割する設計、コンテキストを節約する習慣、/clearとの違いまで順に整理しました。

Claude Code265コンテキストウィンドウエラー対処トラブルシューティング51compact

2014年から個人開発を続けてきた私が、Claude Code を日常的に使うようになって最初に痛感したトラブルがあります。それは「突然セッションが止まり、これ以上続けられないと言われる」状況です。

Dolice Labs の4サイト分のコンテンツパイプライン構築でも、AdMob の収益データ集計スクリプトを組んでいるときでも、長時間の作業になると避けて通れない問題です。一度原因と対処を整理しておくと、長時間のコーディングセッションがずっとスムーズになります。

どんなエラーが出るか

Claude Code がコンテキスト上限に近づいたり超えたりすると、いくつかのパターンで警告や停止が起きます。

警告フェーズ(上限の 80% 付近):

Claude's context window is getting full.
Use /compact to compress the conversation.

完全停止(上限超過):

This conversation is too long to continue.
Please start a new conversation or use /compact.

API レベルで止まった場合は、ターミナルにエラーが落ちます:

{
  "error": {
    "type": "invalid_request_error",
    "message": "prompt is too long: 210741 tokens > 200000 maximum"
  }
}

なぜ上限に達するのか

Claude Sonnet 4 系のコンテキストウィンドウは 200,000 トークンです。Claude Code のセッション中、以下のすべてがこの枠に積み上がります。

  • 会話履歴: 自分の指示と Claude の応答の全文
  • ツール実行結果: Read したファイルの内容、Bash コマンドの出力
  • CLAUDE.md: プロジェクト指示ファイルの全文(セッション開始時に毎回読み込まれる)
  • 過去の編集履歴: Edit / Write ツールで扱ったファイルの before/after

私が最初にこれを痛感したのは、複数のサイトに渡るコード修正を1セッションでやろうとしたときです。src/ 以下の 10 ファイルを連続で Read させて分析させただけで、1時間経たずに 150,000 トークンを超えていました。

解決策 1: /compact で会話を圧縮する

セッションを終了させずに続けたいときは、/compact コマンドが第一選択です。

/compact

このコマンドを実行すると、Claude が会話履歴を要約に置き換えてコンテキストを大幅に削減します。完了済みのファイル読み取り結果、試行錯誤のやり取りなどは要約に圧縮され、トークン数が一気に減ります。

確認が表示されることがある: 圧縮前に「この要約で続けてよいですか?」というプロンプトが出ることがあります。重要な決定事項や現在のファイルの状態が要約に含まれているか確認してから進んでください。

注意: /compact は不可逆です。一度圧縮すると元の詳細な会話には戻れません。

解決策 2: 新しいセッションで --continue する

作業が一段落ついた場面なら、クリーンな新セッションを立ち上げて続きを始める方法が確実です。

# 直前のセッションを続ける(最後のセッションIDを自動参照)
claude --continue
 
# 特定のセッションIDを指定して再開
claude --resume <session-id>
 
# セッション一覧を確認する
claude --list-sessions

--continue は前回終了したセッションのサマリーを引き継いで新しい会話を開始します。ファイルの詳細内容は引き継がれないため、重要なコンテキスト(「どのファイルのどの関数を修正していたか」など)は最初のメッセージで明示して伝え直すことが必要です。

解決策 3: タスクを小さく分割する設計

根本的な対処は、大きな作業を独立した小さなセッションに分けることです。私が採用している方針をいくつか挙げます。

1セッション = 1コミット分の変更に絞る

「このリポジトリの全体的な品質を改善して」ではなく「src/lib/content.ts の getArticle 関数の戻り値に highlights フィールドを追加して」のように、セッション開始時のスコープを小さく定義します。

必要なファイルだけを指定する

# 悪い例(全ファイルをコンテキストに詰め込む)
# "src/ フォルダ全体を見て問題を探して"
 
# 良い例(対象を絞ってから指示)
# "src/lib/content.ts を見て、getArticle 関数の型定義を確認して"

中間成果物はこまめにコミットする

セッションが強制終了してもコミット済みの内容は残ります。「ここまで完了」というチェックポイントを細かく作っておくと、次のセッションで git log --oneline -5 を見せるだけで状況を伝え直せます。

予防策: コンテキストを節約する習慣

長時間セッションをこなすうちに、これらを意識するようになりました。

CLAUDE.md はコンパクトに保つ

プロジェクトの指示ファイルが膨らむとセッション開始時から大量のトークンを消費します。実際に使わなくなったルールや古い設計メモは定期的に削除するか、別ファイルに分離するのが効果的です。

コマンド出力を絞り込む

# トークンを消費する例
git log --stat   # 各コミットのファイル変更一覧まで出る
 
# 節約版
git log --oneline -10   # 直近10件のサマリーだけ

大きなファイルは必要な行数だけ読む

Claude Code の Read ツールは offset と limit パラメータで読み込む行数を絞れます。「ファイル全体を見せて」ではなく「150〜250行目だけ見せて」のように指示するとトークン消費を抑えられます。

/clear との違いを把握しておく

/compact と似たコマンドに /clear があります。

  • /compact: 会話履歴を要約に置き換える(コンテキストを維持したまま削減)
  • /clear: 会話履歴を完全にリセットする(まっさらな状態に戻る)

途中まで積み上げた判断経緯を消してはいけないとき(設計の議論中など)は /compact を、新しい独立したタスクに切り替えるときは /clear が向いています。

まとめ

コンテキスト上限に達したとき、対処の優先順位はこうなります。

作業の続行が必要 → /compact でその場で圧縮する。 一段落ついている → --continue または --resume で新セッションを開始する。 長期的な改善 → タスクの粒度を小さくし、こまめにコミットする習慣をつける。

「1セッション = 1コミット分の変更」という意識で作業すると、コンテキスト問題だけでなく、作業の見通しもよくなります。実際にこの方針に切り替えてから、途中停止によるロスが大幅に減りました。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⟐ Claude Code2026-10-13
「cd して git add して commit」の承認が毎回出る — 設定の抜けではなく、仕様だと分かるまでにたどった道
cd /path && git add && git commit のような複合コマンドで、許可ルールを入れても承認が繰り返し出る。公式の権限ドキュメントと GitHub の報告を突き合わせると、cd と git の組み合わせは設計上プロンプトが出ると分かりました。原因の切り分け順と、手数を減らす4つの直し方を並べます。
⟐ Claude Code2026-10-12
SPM に移したら、起動した瞬間にアプリが落ちるようになりました — dyld の一行を Claude Code と読み解いた記録
CocoaPods から Swift Package Manager へ移した直後、ビルドは通るのに起動した瞬間に落ちました。dyld の一行から原因を切り分け、直し方と確認コマンドまでをまとめます。
⟐ Claude Code2026-10-05
「コミットは私がします」と書いたのに git log に一行増えていた朝、指示を強めるのをやめました
Claude Code に「コミットしないで」と頼んだのにコミットされたとき、まず git reset --soft で戻し、permissions.deny と PreToolUse hook の二層で物理的に止める手順です。deny ルールが素通しする git -c の形と、hook の試し方を書き残します。