1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code で "Prompt is too long" と "Error during compaction: Conversation too long" が出たときの戻し方(/compact が効かない場合も)

1
Posted at

Claude Code で Prompt is too long や Context limit reached が出て先に進めなくなり、/compact まで失敗するときの手順です。基本は「Esc を 2 回押して少し戻ってから /compact」で、それでもだめなら /clear です。

確認環境は Claude Code 2.1.312、macOS 26.6、2026-10-29 です。

症状

会話が長くなると、次のどれかが出て、新しい入力を受け付けなくなります。

Prompt is too long
Context limit reached · /compact or /clear to continue

/compact や自動圧縮を試したあと、次のように出ることもあります。

Error during compaction: Error: Conversation too long. Press esc twice to go up a few messages and try again.
Prompt is too long · automatic compaction failed: <原因>

画面に出る文言は版によって違い、対話画面では Context limit reached の行、-p の出力や記録上は Prompt is too long と書かれます。

結論

  • 会話(と添付、ツール定義、メモリファイル)の合計が、モデルのコンテキスト窓を超えています。まず /compact で古いやり取りを要約します。
  • /compact 自体が溢れて失敗するときは、Esc を 2 回押して(または /rewind)数手前まで戻り、そこでもう一度 /compact します。
  • それでもだめなら /clear で新しい会話にします。要点は先に手元のメモかファイルに書き出しておきます。

原因

公式の Error reference(Prompt is too long)は、原因を「会話と添付ファイルの合計がモデルのコンテキスト窓を超えた」としています。

窓に数えられるのは、自分の発言だけではありません。公式は /context で、システムプロンプト、ツール定義、メモリファイル(CLAUDE.md など)、メッセージの内訳を見られると書いています。MCP サーバを多く入れていると、会話を始める前の時点でツール定義がかなりの量を占めます。

通常は自動圧縮(auto-compact)が先に働き、このエラーを防ぎます。公式の説明では、/config や DISABLE_AUTO_COMPACT で自動圧縮を切っている場合は、上限に達してから止まります。その場合は次のように、切っていることも表示されます。

Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on

圧縮が失敗するのは、圧縮も API へ送る 1 回のリクエストだからです。issue #23047 や #18211 には、上限ぎりぎりまで膨らんだ会話では、要約を頼むリクエスト自体が溢れてしまう、という報告が多数あります。これは issue での報告に基づく理解で、公式の仕組みの説明ではありません。

手元で確かめたこと

このメッセージ群が、今入れている Claude Code 本体に入っているかを、実行ファイルを grep して確かめました。上限超過そのものの再現はしていません。再現するには本物の認証で巨大な会話を送ることになり、課金が起きるためです。

claude --version
B="$(readlink -f "$(which claude)")"
for s in "Prompt is too long" "Conversation too long. Press esc twice" "automatic compaction failed" "Context limit reached" "Not enough messages to compact" "cannot be compacted"; do printf '%s: ' "$s"; grep -a -c -F -- "$s" "$B"; done

私の環境での出力は次のとおりでした(数字は実行ファイル内で見つかった回数です)。

2.1.312 (Claude Code)
Prompt is too long: 7
Conversation too long. Press esc twice: 2
automatic compaction failed: 3
Context limit reached: 3
Not enough messages to compact: 2
cannot be compacted: 2

どれも 2.1.312 に含まれています。最新版でもこれらの表示は残っており、更新すれば一切出なくなる、というものではありません。

直し方

上から順に試します。抜けられたらそこで止めて構いません。

1. まず /compact

/compact

古いやり取りが要約されて空きができます。残したいことがあるなら /compact の後ろに指示を書けます(例: /compact 認証まわりの変更方針だけ残して)。Context low (<n>% remaining) · Run /compact to compact & continue のような手前の警告が出た段階で実行しておくと、デッドロックを避けられます。

Not enough messages to compact. と返ってきたら、会話が 1 往復しかなく、要約する過去がありません。この場合は次の「1 往復で超えるとき」を見てください。

2. /compact が溢れたら、Esc を 2 回押して戻る

Error during compaction: ... Press esc twice to go up a few messages and try again. は、文言どおりに操作します。

  1. Esc を 2 回押す(または /rewind)
  2. 一覧から、エラーが出た最近のやり取りより少し前の地点を選んで戻る
  3. もう一度 /compact する

巨大なファイルの読み込みやコマンド出力が会話の大半を占めているときは、その手前まで戻るのが効きます。

3. 更新する

claude update

issue #18211 では、Anthropic 側の担当者が「MCP と圧縮の相性の悪い動きを v2.1.11 で直した」と返信しています。issue #23047 でも、担当者が「2.1.42 の次のリリースで改善する」と書いています。ただし #23047 には、その後も出るという報告が続いており、更新だけで必ず直るとは言えません。

公式の Error reference にも、版ごとの修正が書かれています。たとえば、圧縮を止めた直後にこのエラーが出る問題は v2.1.304 で、自動圧縮の失敗理由が表示されない問題は v2.1.229 で直っています。古い版を使っているなら、まず更新です。

4. /clear で捨てる

/clear

履歴ごと捨てるので確実ですが、文脈は失われます。実行前に、いま何をしていて次に何をするかを、ファイルかメモに書いておいてください。再開時にそれを読ませれば、少ない消費で続きを始められます。

直らないとき

1 往復で超えているとき

次のような文言が出る場合は、会話が長いのではなく、最初の 1 往復ですでに窓を超えています。

Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.

公式の対処は次のとおりです。

  • /clear して、貼り付けるテキストや添付を小さくして送り直す
  • /mcp disable <name> で、使っていない MCP サーバを外す
  • CLAUDE.md を削る、または path-scoped rules に移して、必要なときだけ読み込ませる

/context を実行すると、何が窓を占めているかの内訳が見えます。

自動圧縮の失敗に理由が付いているとき

Prompt is too long · automatic compaction failed: <原因> の <原因> が、モデルが使えない、認証に失敗している、といった別のエラーなら、公式は「まずその原因を直す。直すまで /compact も同じ理由で失敗する」としています。

200K 付近で出るとき

公式によると、Claude Code が知らないモデル ID を使っていると、窓を 200K と見なします。もっと大きな窓を持つモデルなのに 200K 付近で出る場合は、ANTHROPIC_BASE_URL やカスタムのモデル ID が原因かもしれません。公式のモデル設定のページに、窓を正しく教える手順があります。

入力そのものを受け付けなくなったとき

issue #23047 には、/compact も Esc 2 回も /clear も効かず、画面から出られなくなったという報告があります(MCP とスキルが多く、CLAUDE.md も大きい環境)。これは 1 人の報告で、公式の見解ではありません。そうなったら、Ctrl+C か端末ごと閉じて終了し、起動し直して claude --continue か claude --resume で会話を選びます。そのうえで Esc 2 回、それでもだめなら /clear に進みます。

同じ原因で出る別のメッセージ

  • Input is too long for requested model. は Amazon Bedrock 経由での同じ状態です。公式は、v2.1.217 より前では認識されず自動圧縮が働かなかったと書いています。
  • Context exceeds the 200k-token limit by <n>k tokens — run /compact or /clear to continue. は /context の先頭に出る警告で、原因は同じです。
  • API を直接使う場合は、入力だけで窓を超えると 400 の invalid_request_error で prompt is too long が返ります(Claude API 側の挙動で、Claude Code の画面表示とは別です)。

Claude Code で出るほかの英文エラーと、それぞれの対処は、早見表にまとめています。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?