development·

Claude Code「Prompt is too long」の意味と対処法|/compactで直らないときの確認点

Claude Code の「Prompt is too long」(対話画面では「Context limit reached」)は、会話と添付がコンテキストウィンドウを超えたという意味です。/compact・/clear での直し方と、それでも直らないときの確認点を解説します。

Claude Code「Prompt is too long」の意味と対処法|/compactで直らないときの確認点
Prompt is too long
Context limit reached · /compact or /clear to continue

このメッセージは、会話の履歴と添付ファイルなどを合わせた量が、使っているモデルのコンテキストウィンドウ(一度に読み込める上限)を超えたという意味です。対話画面では通常、2つ目の Context limit reached の形で表示され、claude -p の出力や会話の記録では1つ目の Prompt is too long の形で残ります。まず /compact で会話を要約して空きを作り、それでも直らなければ /clear で新しい会話を始めます。 /compact でも直らない場合は、メッセージの後ろに付いている説明(automatic compaction failed: や single exchange)で原因を切り分けます。

この記事を読むとわかること

  • 「Prompt is too long」と「Context limit reached」が同じエラーである理由と、表示のされ方の違い
  • すぐ直す手順(/compact・/clear・/context)
  • /compact でも直らないときの3つの原因と確認のしかた
  • 同じエラーを繰り返さないための設定と使い方
  • claude -p・Agent SDK・CI でこのエラーを検知する方法

内容は2026年9月30日時点(Claude Code v2.1.285)の公式ドキュメント(Error reference の「Prompt is too long」)と、手元での再現にもとづいています。実機で確認した内容とドキュメント記載の内容は書き分けています。

意味:会話がコンテキストウィンドウに入りきらない

「Prompt is too long」とは、Claude Code が API に送ろうとしたリクエスト(会話の履歴・添付ファイル・システムプロンプト・ツール定義などの合計)が、モデルのコンテキストウィンドウを超えたために API が拒否した状態です。コンテキストウィンドウは、モデルが1回のやり取りで読み込める情報量の上限で、トークン(文字をモデル用に区切った単位)で数えます。

Claude Code は毎回のリクエストで、これまでの会話(貼り付けたテキストやツールの実行結果を含む)に加えて、次のものも一緒に送っています(Error reference は、リクエストを「会話そのもの」と「一緒に送るもの」に分けて説明しています)。

  • システムプロンプト
  • 接続している MCP サーバーのツール定義
  • CLAUDE.md などのメモリファイル
  • 添付ファイルの内容

そのため、会話そのものがそれほど長くなくても、MCP サーバーを多く接続している・大きなファイルを添付したといった理由でこのエラーになることがあります。

Claude Code が1回のリクエストで送るものの内訳図。会話の履歴(貼り付けやツールの実行結果を含む)と、会話と一緒に送る添付ファイルの内容・CLAUDE.md などのメモリファイル・MCP サーバーのツール定義・システムプロンプトの合計がコンテキストウィンドウの上限を超えると Prompt is too long になる。会話は /compact で要約か /clear、大きなファイルはパスで伝える、添付は減らす、CLAUDE.md は短くしてパス指定のルールへ、MCP サーバーは /mcp disable で外す。内訳は /context で確認できる

ふだんは自動圧縮(auto-compact)が上限の手前で会話を要約するため、このエラーはあまり表に出ません。Error reference の「Prompt is too long」も、auto-compact は初期状態で有効で、通常はこのエラーを防ぐと説明しています。そのため、このエラーが出たときは「自動圧縮がオフになっている」「自動圧縮が失敗した」「1回の入力が大きすぎて圧縮しようがない」のどれかを疑うと、切り分けが早くなります。

表示のされ方(Context limit reached ほか)

同じ状態でも、使い方や接続先によって文面が変わります(Error reference の「Prompt is too long」)。圧縮に失敗した場合などの長い形は、対話画面でも Prompt is too long · で始まります。

状況表示されるメッセージ
対話モード(通常)Context limit reached · /compact or /clear to continue
対話モードで DISABLE_COMPACT を設定しているContext limit reached · /clear to continue
/config で auto-compact をオフにしている末尾に · auto-compact is off · /config to turn it on が付く(v2.1.235 以降)
claude -p の出力・会話の記録Prompt is too long
Amazon Bedrock 経由Input is too long for requested model.(Claude Code は同じエラーとして扱う)
Claude apps gateway 経由(クラウドの接続先が独自の形式で拒否した場合)capability_rejected: prompt_too_long(同上)

Bedrock の文面は v2.1.217 より前、gateway の文面は v2.1.228 より前だと Claude Code が認識できず、自動圧縮が動きませんでした。これらの経路で使っていて古い版のままなら、まず claude update で更新してください。

/config の「Auto-compact」をオフにすると、ユーザー設定に autoCompactEnabled が書き込まれます。オフにした理由が思い当たらないのに auto-compact is off と表示される場合は、/config でオンに戻せます。なお、環境変数 DISABLE_AUTO_COMPACT や DISABLE_COMPACT でオフにしている場合や、プロジェクト設定・組織の管理設定など優先度の高い設定でオフになっている場合は、この案内は表示されません。

すぐ直す手順

まず /compact で会話を要約し、だめなら /clear で新しい会話を始めます。何が場所を取っているかは /context で確かめられます。

1. /compact で会話を要約する

対話モードで次を実行すると、これまでの会話が要約され、コンテキストに空きができます。

/compact

/compact の後ろに指示を書くと、要約で何を残すかを指定できます(Commands の /compact [instructions])。作業の途中なら、次の手順に必要な情報を残すよう指定しておくと、要約後も作業を続けやすくなります。

/compact 現在の実装方針と、まだ終わっていない作業の一覧を残して

2. それでも無理なら /clear で新しい会話を始める

/clear

/clear は、空のコンテキストで新しい会話を始めるコマンドです。前の会話は消えるわけではなく、/resume から戻れます。作業の要点(方針・残作業)をファイルや CLAUDE.md に書き出してから /clear すると、新しい会話で読み込み直せます。

3. /context で何が場所を取っているかを見る

/context

/context は、いまのコンテキストの使用状況を色分けして表示します。システムプロンプト、ツール定義、メモリファイル、会話のどれが多いかがわかるので、次の「再発を防ぐ」で何を減らすべきかの判断材料になります。会話が上限を超えている場合は、先頭に次のような警告が出ます(Error reference の「Context exceeds the token limit」の例。数値は状況によって変わります)。

Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.

/compact でも直らないとき

/compact を実行しても同じエラーが出る場合は、メッセージの · の後ろを見ます。公式ドキュメント・CHANGELOG・実行ファイルの文言から読み取れる原因は、主に次の4つです。

表示される文面考えられる原因最初にすること
automatic compaction failed: <エラー>自動圧縮が別のエラーで失敗した(原因1)後ろに書かれたエラーを先に直す
single exchange または single-exchange を含む(/compact で Not enough messages to compact. と出る場合も同じ)1回の入力が大きすぎて、要約する対象がない(原因2)/clear してから入力を小さくして送り直す
上のどれにも当たらず、/compact を繰り返しても戻らない(/context に空きがあるのに出る場合も)古い版の不具合(原因3)claude --version で確認し、claude update で更新する
/compact を実行すると Conversation too long. Press esc twice ...圧縮そのものが失敗している(原因4)Esc を2回押して数ターン前に戻り、/compact をやり直す

原因1:自動圧縮が別のエラーで失敗している

Prompt is too long · automatic compaction failed: <元になったエラー>

この形は、自動圧縮が走ったものの、別のエラーで失敗したという意味です。後ろに書かれているのが本当の原因で、公式ドキュメントは例として、モデルが使えない・認証に失敗した、といったエラーを挙げています。公式ドキュメントは、先にそのエラーを解決するよう案内しています。元のエラーが残っている間は、/compact も同じ理由で失敗するためです(v2.1.229 より前は、原因が表示されず Prompt is too long だけが出ていました)。

後ろに認証系のエラーが入っていた場合の対処は、当サイトの専用ページで解説しています。

それ以外のエラーが入っていた場合も、考え方は同じです。先にそのエラーを直してから /compact をやり直します。

後ろが summarization produced empty response の場合は、自動圧縮で要約を作るリクエストが空の応答を返したという意味です(v2.1.285 の実行ファイルに含まれる文言。公式ドキュメントには記載がありません)。先に直すべき別のエラーは示されていないため、/compact をもう一度実行し、それでも失敗する場合は下の「原因4」と同じ手順で数ターン前に戻るか、/clear で新しい会話を始めます。

原因2:1回の入力が大きすぎて、要約する対象がない

会話が「1回の入力とその返答」だけの場合、要約できる過去のやり取りがありません。このとき Claude Code は圧縮を試みず、次のような文面で理由を説明します(v2.1.162 以降)。

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.

API からトークン数が返ってきた場合は、Claude Code が見積もった会話の量と比べて、次のどちらかになります。v2.1.285 の実行ファイルでは、会話の見積もりがリクエスト全体の8割以上かどうかで分かれていました。

  • 会話そのもの(貼り付けたテキストなど)が8割以上:... this conversation's own content is most of it. ... start with less content (smaller files or pasted text).
  • それ未満(残りはシステムプロンプト・ツール定義・添付):... but this conversation is only ~<会話のトークン数> tokens — the rest is system prompt, tool definitions, and attachment content. ... reduce attached files/tools or start with less context.

また、/compact を実行して Not enough messages to compact. と返る場合も同じ状態です。公式ドキュメントの対処は次のとおりです。

  • /clear してから、貼り付けるテキストを減らす・添付ファイルを小さくして送り直す
  • 下の「再発を防ぐ」の手順で、ツール定義とメモリファイルを減らす

あわせて、大きなファイルは中身を貼り付けず、ファイルのパスを伝えて Claude に分割して読ませるのも有効です(公式ドキュメントでは「Request too large」の対処として案内されています)。大きな貼り付けを送った直後なら、/clear の前に、下の「原因4」と同じ手順でその入力より前に戻る方法もあります(それまでの会話を残したまま、大きな入力だけを取り消せます)。

原因3:Claude Code のバージョンが古い

公式の CHANGELOG には、「Prompt is too long」から抜け出せなくなる不具合の修正が何度も記録されています。

修正されたバージョン内容(CHANGELOG の要約)
v2.1.761M コンテキストのセッションで、model: を指定したスキルを使うと、空きがあるのに Context limit reached が出る問題
v2.1.247フックやバックグラウンドのエージェントが大量のエラー出力を出し、会話があふれて抜け出せなくなる問題
v2.1.269要約できる過去のやり取りがないときに、自動圧縮が失敗し続けて抜け出せなくなる問題(主に大きなプロンプトを渡す Agent SDK のセッション)
v2.1.274/goal など、フックで動くセッションが圧縮せずにこのエラーで終わる問題
v2.1.281最初の1回だけが極端に大きいセッションで、そのプロンプトを単独で要約するよう改善
v2.1.284圧縮後もまだ長い場合にもう一度圧縮するよう修正。VS Code 拡張で大きなテキストファイルを添付したときに圧縮後もエラーが続く問題も修正

claude --version で確認し、古ければ claude update で更新してください。GitHub には、/context では空きが7割近くあるのに Context limit reached が出たという報告もあります(#24458、v2.1.33 で発生し v2.1.32 に戻すと解消した、とする報告。#20455 は v2.1.15。どちらもクローズ済み)。空きがあるのに出る場合も、まず最新版に更新して新しいセッションで試します。なお、約1週間前の版が届く「stable」チャンネルを使っている場合、2026年9月30日時点の stable は v2.1.280 で、上の表の v2.1.281・v2.1.284 の修正はまだ含まれていません。チャンネルの確認・切り替え方は「does not support this model」の対処法で解説しています。

原因4:/compact そのものが「Conversation too long」で失敗する

/compact を実行すると、次のメッセージで失敗することがあります(画面では前に Error during compaction: が付いて表示されたという報告があります。#26317)。

Conversation too long. Press esc twice to go up a few messages and try again.

これは、要約を作るためのリクエスト自体が上限を超えたという意味です。v2.1.285 の実行ファイルでは、要約のリクエストが Prompt is too long で断られると、古いやり取りを削って何度かやり直し、それでも入らないときにこのメッセージを出す作りになっていました(公式の Error reference には記載がありません)。

メッセージのとおり、Esc を2回押して数ターン前に戻り、そこから /compact をやり直します。公式ドキュメントによると、Esc 2回(または /rewind)は入力欄が空のときに「巻き戻しメニュー」を開きます(入力欄に文字があると、その文字が消えるだけです)。メニューで戻す地点を選んだら、次のどれかを選びます(Checkpointing)。

  • Restore conversation:会話だけをその地点に戻す。ファイルの変更はそのまま残る
  • Restore code and conversation:ファイルの変更も一緒に戻る。作業中のコードを残したいときは選ばない
  • Summarize up to here:その地点より前だけを要約し、後のやり取りはそのまま残す(/compact を部分的にかけるような使い方)

戻しても入らない場合は /clear で新しい会話を始めます(前の会話は /resume で開けます)。

再発を防ぐ

再発を防ぐ基本は、毎回送られるツール定義とメモリファイルを減らし、auto-compact をオンにしておくことです。公式ドキュメントが挙げている対策は次のとおりです。

対策方法効く理由
使っていない MCP サーバーを外す/mcp disable <name>ツール定義は毎回のリクエストに含まれるため、外した分だけ常に空く
CLAUDE.md を短くする必要なときだけ読み込まれる「パス指定のルール」に移すメモリファイルも毎回読み込まれる
大きなファイルは貼り付けないファイルのパスを伝えるClaude が分けて読める(公式では Request too large の対処として案内)
auto-compact をオンにしておく/config の Auto-compact、DISABLE_AUTO_COMPACT を外す上限の手前で自動的に要約される
auto-compact をオフで使うなら上限の前に自分で /compact するオフのままだと上限でこのエラーになる

どれを優先するかは /context の内訳で決めるのが確実です。ツール定義が大きければ MCP、メモリファイルが大きければ CLAUDE.md、会話が大きければこまめな /compact と作業の区切りでの /clear が効きます。MCP サーバーの整理のしかたはClaude Code の MCP 連携ガイド、コンテキストの使い方全体はClaude Code のコンテキスト管理とメモリで解説しています。

「1Mトークンのモデルに切り替えれば直るのでは」と考える方もいますが、1M コンテキストはプランによって使用クレジット(usage credits)の有効化が必要です。有効でない状態で [1m] 付きのモデルを選ぶと、別の Usage credits required for 1M context というエラーになります(Error reference の「Usage credits required for 1M context」)。まずは上の対策で使う量を減らすのが先です。

claude -p・Agent SDK・CI での検知

非対話実行では、--output-format json の結果の terminal_reason が "prompt_too_long" かどうかで、このエラーを見分けられます。今回の再現(下記)で claude -p --output-format json の結果には、次の項目が含まれていました。

項目値
is_errortrue
api_error_status400
terminal_reason"prompt_too_long"
resultPrompt is too long · ... で始まる文面

terminal_reason は、Agent SDK の公式リファレンス(Agent SDK reference - TypeScript)に「ループが終わった理由」として記載があり、取りうる値の1つが "prompt_too_long" です。今回の実機でもこの値でした。api_error_status も同じリファレンスに「会話を終わらせた API エラーの HTTP ステータス」として載っている項目で、今回の値は 400 でした。CI やスクリプトでは、terminal_reason が prompt_too_long かどうかで判定できます。非対話実行では、対話画面のように途中で /compact を打って作業を続ける運用がしにくいため、入力を小さくする(大きなファイルはパスで渡す)、使うツールを絞る、といった入力側の見直しが基本になります。

実機での再現結果

2026年9月30日に、macOS 上の Claude Code v2.1.285 で、意味のない単語15万個(約136万バイト)を標準入力で渡し、コンテキストウィンドウが20万トークンのモデル(Claude Haiku 4.5)を指定して claude -p を実行しました(自動更新は無効にして実行)。

cat big.txt | DISABLE_AUTOUPDATER=1 claude -p --model claude-haiku-4-5 --output-format json "Count the words."

結果の result は次のとおりでした。

Prompt is too long · the request is ~556739 tokens (limit 200000) but this conversation is only ~359478 tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.
  • 1回だけのやり取りだったため、上の「原因2」の文面になった
  • 会話の見積もり(約36万トークン)はリクエスト全体(約56万トークン)の約65%で、8割に届かないため the rest is system prompt, tool definitions, and attachment content の側の文面になった。残りの約20万トークンの内訳は、今回は確認していない
  • API がトークン数を返したため、limit 200000 のように上限と実際の量がメッセージに表示された。どれだけ減らせばよいかの目安になる
  • 実行時間(duration_ms)は541ミリ秒で、total_cost_usd は 0、入力・出力トークンの記録も 0 だった(リクエストは拒否され、料金は記録されなかった)

似ているが別のエラー

コンテキストに関係するエラーは他にもあり、原因と直し方が異なります。

メッセージ何が起きているか対処
Autocompact is thrashing: the context refilled to the limit within 3 turns of the previous compact, 3 times in a row. ...圧縮しても、3ターン以内にまた上限まで埋まることが3回続いた「Autocompact is thrashing」の対処法
Request too large (max 32MB) ...トークン数ではなく、リクエストのデータ量が API の上限32MBを超えた。大きな貼り付け・ツールの結果・画像や添付が原因メッセージに compacting cannot make it fit が含まれる場合は、Esc を2回押して大きな内容を送る前に戻るか /clear。含まれない場合は /compact(画像・添付が外れる)
API Error: Usage credits required for 1M context ...1M コンテキストのモデルを、使用クレジットなしで選んだ/model で [1m] なしのモデルに戻す

出典:Error reference の「Request too large」「Usage credits required for 1M context」、Autocompact is thrashing の文面は v2.1.285 の実行ファイルに含まれる文字列。そのほかのエラーはClaude Code トラブルシューティング完全ガイドから逆引きできます。

よくある質問

まとめ

  • 「Prompt is too long」(対話画面では「Context limit reached」)は、会話と添付などの合計がコンテキストウィンドウを超えた状態。/compact、だめなら /clear して入力を小さくして送り直す
  • automatic compaction failed: の後ろにエラーがあれば、そちらを先に直す
  • single exchange や Not enough messages to compact. は、1回の入力が大きすぎる状態。/clear して入力を小さくする
  • /compact 自体が Conversation too long で失敗するなら、Esc を2回押して数ターン前に戻ってからやり直す
  • 繰り返すなら /context で内訳を見て、MCP・CLAUDE.md・貼り付けを減らし、最新版に更新する

参考:

koromo からの提案

AIツールの導入判断は、突き詰めると「投資対効果が合うか」「リスクを管理できるか」「事業にどう効くか」の3点に帰着します。koromo では、この判断に必要な材料を整理するところからご支援しています。

以下のような状況にある方は、まず現状の整理だけでも前に進むきっかけになります。

  • AIで開発や業務を効率化したいが、自社に合う方法がわからない
  • 社内にエンジニアがいない / 少人数で、AI導入の進め方に見当がつかない
  • 外注先の開発会社にAI活用を提案したいが、何を求めればいいか整理できていない
  • 「AIを使えばコスト削減できるはず」と感じているが、具体的な試算ができていない

ツールを使った上で相談したい方はお問い合わせフォームから「Claude Code のコンテキスト設計の相談」とご記載ください。初回の壁打ち(30分)は無料で対応しています。

無料で相談する

関連記事