コンテキスト上限エラーに初めてぶつかった話
Claude Codeを使い続けていると、ある日突然「コンテキストが上限に達しました」というエラーが出ることがあります。
はじめて遭遇したとき、私は完全に固まりました。
「え、急に何?」「続きはどうするの?」「ここまで積み上げた会話、消えるの?」
焦って画面を見つめること数分。でも、ちゃんと対処法はありました。今回は、そのときの体験と、今は同じことで困らないようにしている予防策をまとめます。
—
そもそも「コンテキスト上限」って何?
一言で言えば、AIが同時に読める情報量の限界です。
Claude Codeは、あなたとの会話の全履歴、システムの設定、接続しているMCPのツール定義など、あらゆるものを「コンテキスト」と呼ばれる作業領域に載せて処理しています。
この領域のサイズには上限(トークン数)があり、会話が長くなるほど積み上がっていきます。
最初の5分は余裕でも、30分も作業を続けていると突然「満杯」になる、という感じです。ちょっとした質問とやり取りを繰り返しているだけでも、こっそりトークンは消費されていきます。
—
実際にエラーが出たときの流れ
私がはじめてぶつかったのは、あるタスクを何十分もかけてClaude Codeとやり取りしていたときでした。
途中でうまくいかない部分があって、修正を繰り返していたら急に止まった。
「コンテキストが上限に達しました」的なエラーメッセージ。
最初の反応は「/compact 使えばいいのでは?」でした。確かに /compact は会話を圧縮してくれるコマンドです。でも……ここで落とし穴があります。
—
「/compact も失敗する」という地獄
コンテキストがギリギリまで溜まっている状態で /compact を実行すると、なんと「Conversation too long」というエラーが出て、圧縮自体が失敗することがあります。
圧縮したいのに、そのための容量すらない、という状態です。
これは現時点でも既知の問題(GitHub issue)として報告されています。つまり、いちばん困っているときに /compact が使えないという状況が起きうるのです。
このとき私がとった(そして今では推奨できる)対処法は次の2段階です。
1. Esc キーを2回押して少し前の状態に戻る
直前の状態に戻ることで、コンテキストが少し軽くなります。その状態で /compact を再実行すると成功することがあります。「まずここを試して」というのが公式でも推奨されている方法です。
2. それでも無理なら /clear
/clear は会話履歴をリセットするコマンドです。「編集したファイルは残る」ので、コードの作業は失われません。でも会話の文脈は消えます。
最初はかなり抵抗がありましたが、「コードが消えるわけじゃない」とわかってからは怖くなくなりました。
—
/context コマンドで現在の使用量を確認する
知らなかったんですが、`/context` というコマンドを使うと、いま何がどれだけコンテキストを消費しているかを確認できます。
表示される内訳はこんな感じです:
- システムプロンプト(CLAUDE.md の設定など)
- ツール定義(接続しているMCPのツールリスト)
- 会話履歴
「MCPのツール定義が意外と重い」とか「会話が積み上がりすぎている」とかが一目でわかります。
使っていないMCPがあれば `/mcp disable [名前]` で無効化すると、一気に軽くなることもあります。CLAUDE.md が肥大化している場合も、不要なルールを削るだけで効果があります。
—
次からは焦らないための予防策
今は、以下の3つを意識するだけでエラーに遭遇することがほぼなくなりました。
1. 「長くなってきたな」と感じたら /compact
上限ギリギリになる前に圧縮するのがポイントです。目安は使用量が60〜70%あたり。「なんか重くなってきた気がする」と感じたら、そのタイミングで /compact を打つ癖をつけています。
ちなみに、VS Code統合版のClaude Codeは使用量が75%に達すると自動で圧縮してくれるそうです。CLIで使っている場合は手動でやる必要があります。
2. 一時的な質問には /btw を使う
「ちょっとこれだけ聞きたい」という場面で /btw を使うと、その答えが会話履歴に残りません。「〇〇って何の略だっけ?」みたいな確認用の質問は /btw に分けるだけで、コンテキストをかなり節約できます。
まだ使いこなせているとは言えないのですが、試してみて「これは便利だ」と思ったコマンドのひとつです。
3. 別タスクに移るときは /clear でリセット
一つの作業が終わって次のタスクに移るときは、積極的に /clear でリセットするようにしました。「新しい仕事を始めるときは机を片付ける」くらいのイメージです。
これだけで、コンテキストが無駄に溜まるのをかなり防げます。
—
読者向けプロンプト:コンテキストの状態を確認する
コンテキストが重くなってきたと感じたら、以下をそのままClaude Codeのチャット欄に貼ってみてください。
いまのコンテキストの使用状況を教えてください。どの要素が多くの容量を占めていますか?軽くするためにできることがあれば提案してください。
現状を整理してもらって、/compact か /clear かを判断する材料にしています。
—
まとめ
- コンテキスト上限エラーは、会話が長くなるほど起きやすい
- /compact が失敗したら、まず Esc×2で少し戻ってから再試行
- どうしても無理なら /clear でリセット(コードは消えない)
- /context で現在の使用量と内訳を確認できる
- 予防策は「早めに /compact」「/btw で一時質問」「タスク切り替えで /clear」の3つ
最初は「エラー=詰んだ」と思っていましたが、今は「そろそろ圧縮のタイミングかな」という感覚に変わっています。焦るより、コマンドを知っていれば怖くない。そういう話でした。