Claude Code の Prompt is too long は、送信する入力がコンテキスト窓の上限を超えたときのエラーだ。対話画面では基本の形が Context limit reached で始まる1行になり、原因が付く長い形は Prompt is too long · のまま表示される。文字列の後半は状況によって変わり、そこに次の一手が書いてある。自分の画面の文字列を下の一覧と照らし合わせよう。

# 対話画面(通常)
Context limit reached · /compact or /clear to continue

# 対話画面(自動圧縮をオフにしている場合)
Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on

# 対話画面(DISABLE_COMPACT で圧縮そのものを無効にしている場合)
Context limit reached · /clear to continue

# -p の出力と会話ログ
Prompt is too long

# 自動圧縮が別のエラーで失敗した場合
Prompt is too long · automatic compaction failed: <原因のエラー>

# 1往復だけの会話で、要約できる履歴がない場合
Prompt is too long · this conversation is a single exchange and cannot be compacted — …
Prompt is too long · the request is ~<N> tokens (limit <上限>) … A single-exchange conversation cannot be compacted; …

# Amazon Bedrock 経由
Input is too long for requested model.

# /compact 自体が失敗した場合(4章)
Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.

# API の応答本文(数字は一例)
prompt is too long: 209117 tokens > 200000 maximum

今すぐ直す方法 →

入力には、直前に打った文章だけでなく、会話履歴・読み込んだファイル・ツール結果・指示なども含まれる。API の本文にある 209117 tokens > 200000 maximum は、入力209,117トークンが上限200,000トークンを超えたという意味だ。コンテキスト窓そのものは入力と今回生成する出力を含む容量で、このエラーは入力側だけで上限を超えたことを示す。プランの期間内使用量を使い切る usage limit とは対処が違う。

履歴が長いなら /compact、最初の入力が大きすぎるなら入力を減らす、圧縮の失敗原因が表示されているならその原因を先に直す。これが復旧の基本だ。自動圧縮は既定で有効で、通常はこのエラーを防ぐ。それでも出たときの分かれ目が、この3つになる。本記事は2026年9月21日時点の Claude Codeの公式エラー説明とAPIの仕様をもとに、原因・操作・200Kと1Mの条件を整理する。APIを直接呼ぶ場合の対処も分けて説明する。

Claude Code

同じ「長すぎる」でも、減らす場所が違う

長い会話の途中

過去の履歴を要約する。圧縮直後にまた満杯になるなら、巨大な読み込みを分割する。

最初の入力で超過

要約できる過去の会話がない。貼り付け・添付・指示・ツールの負担を減らして始める。

圧縮自体が失敗

認証やモデル利用不可など、併記された原因を先に解消する。繰り返すだけでは直らない。

窓の内訳は /context、期間内の消費やプラン枠は /usage。同じ「トークン」でも見る数字が違う。

1. このエラーは何を言っているのか

コンテキスト窓は、モデルが1回の応答で参照・生成できる情報量の上限だ。単位は文字数ではなくトークンで、入力に加えて今回の出力や思考用のトークンも使う。APIのキャッシュから読んだ入力も窓を占める。キャッシュは料金や処理を変える仕組みであり、容量をゼロにする仕組みではない。根拠は Anthropicのコンテキスト窓の仕様。

そのうち Prompt is too long は、送信する入力だけですでに窓へ収まらない場合に起きる。「短い質問を送っただけ」でも、同じリクエストに古い履歴やファイルが付いていれば入力の合計は大きい。最新の質問だけを短くしても直らない理由はここにある。基礎は コンテキストウィンドウとはも参照。

Claude Code は上限に近づくと古いツール出力を整理し、必要なら会話を要約する。それでも止まるのは、巨大な貼り付け・自動圧縮の無効化・圧縮処理そのものの失敗といった場合だ。要約後すぐ同じ巨大ファイルを読み直し、再び満杯になることもある。どれに当たるかは、冒頭の文字列の後半で分かる。automatic compaction failed: なら圧縮の失敗原因が後ろに続き、single exchange なら要約できる履歴がなく、auto-compact is off なら自動圧縮が切れている。

2. 何がコンテキスト窓を埋めるのか

Claude Codeの動作説明に沿って、窓を使う要素を整理すると次のようになる。保存されている会話ログと、現在モデルへ送る内容は同じではない。古いツール結果の除去や要約によって、現在の窓の中身は変わる。

要素窓に入る内容見直す場所
会話履歴現在のリクエストへ送るやり取り。圧縮後は要約に置き換わる部分がある。同じ作業は /compact、無関係な次の作業は /clear
ファイル・ツール結果読み込んだ本文、検索結果、コマンド出力など。検索で対象を絞る、必要な行だけ読む、詳細調査をサブエージェントへ分ける
MCPツール名とサーバ指示。既定では詳細な定義をTool Searchで必要時に読み込む。/context で実際の負担を確認し、不要なサーバを /mcp で無効化
CLAUDE.md・メモリ適用される指示や読み込まれたメモリ。自動メモリの全ファイルが常時入るわけではない。常時必要な規則を短く保ち、特定作業だけの説明を分ける
Skills通常は開始時に説明、使用時に本文。設定によって説明も必要時だけにできる。不要な自動呼び出し対象や長すぎる本文を見直す
システム指示Claude Codeや接続環境が付ける動作指示。まず、自分で管理する指示・添付・ツールなどを確認する

MCPのツール定義は、既定では Tool Search によって必要になった時点で読み込まれる。セッション開始時に入るのはツール名とサーバの説明だけなので、サーバを足しても窓への影響は小さい。定義が最初から載るのは、ENABLE_TOOL_SEARCH=false を設定した場合、サーバに alwaysLoad を指定した場合、CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS を設定した場合などだ。ANTHROPIC_BASE_URL でゲートウェイを通す場合も、v2.1.304 以降は既定で Tool Search が効く(全条件は公式のTool Search設定表)。実際の負担はサーバ数ではなく /context で見る。

サブエージェントは別の窓で調査し、途中の大量のツール出力を親の会話へ持ち込まずに結果を返せる。ただし、返ってきた要約や結論は親の窓を使う。調査結果を全文転記させれば効果は薄い。「該当ファイルと行、結論、未確認点だけ返して」のように必要な成果を指定する。また、サブエージェントは親のMCPツール定義をすべて引き継ぐため、公式のエラー説明は、使わないMCPサーバをサブエージェントの起動前に無効化するよう勧めている。設計の考え方は コンテキストエンジニアリングで扱っている。

使い分けは、/context が今の窓の占有量、/usage が消費トークンやプラン使用量だ。後者の料金表示は概算で、請求の確定額ではない。対応する環境では /skill-doctor でスキルの負担も調べられる。見つからなければ /context から始めればよい。詳しい測り方は コンテキストは何に食われているのか、コマンドの提供条件は 公式コマンド一覧を参照。

3. コンテキスト窓のサイズ——200K と 1M

200Kは20万、1Mは100万トークンだ。ただし、モデルが持つ容量・Claude Codeがその接続先で使う容量・自動圧縮のしきい値・料金条件はそれぞれ別の数字だ。現在のモデルとアカウントは /status、利用できる選択肢は /model で見る。

容量と利用条件を分けて読む

200Kになる例

Sonnet 4.5などのモデル。1M対応モデルでも、接続先や1Mを無効にする設定によってClaude Codeが200Kとして扱う場合がある。

1Mになる例

Anthropic API上のFable系・Sonnet 5以降・Opus 4.7以降など。既定で1Mになる場合もあり、常に [1m] を付けるわけではない。

出典:Anthropicのモデル設定・拡張コンテキスト。自動圧縮が始まる位置は設定やモデルによって異なる。

サブスクリプションで使用量クレジットが問題になるのは、[1m] を付けて1Mにする Opus 4.6 と Sonnet 4.6 だ。Opus 4.6 の1MはMax・Team・Enterpriseに含まれ、Proでは使用量クレジットが必要。Sonnet 4.6 の1Mはどのサブスクリプションでも使用量クレジットが必要とされている。Anthropic APIへ直接接続するFable系・Sonnet 5以降(現行のSonnet 5.5を含む)・Opus 4.7以降は、Proを含む全プランで既定1M・追加の使用量クレジット不要・[1m] の選択不要という別の扱いだ。ゲートウェイ経由や1M無効化設定には例外があるため、モデル名だけで判断しない。

1Mの「標準価格」は、200Kを超えた部分に長文用の割増単価を上乗せしないという意味だ。同じ総額で入力を無制限に増やせるわけではない。処理するトークンが増えれば使用量も増える。1Mがプランに含まれるか、クレジットから請求されるかも別の問題だ。

また、文字数とトークン数の比率はモデルや内容で変わる。「新しいモデルなら必ず何割増える」と一律に見積もらず、APIなら対象モデルのトークン計数を使う。大きい窓が必要なタスクはあるが、関係のないログや重複した指示を減らしてから選ぶと、必要な容量を判断しやすい。

4. 今すぐ直す方法

エラーが出た瞬間の打ち手を、優先順に。状況(履歴が膨らんだ/巨大ファイルを入れた)で選ぶ。

FIXES

窓を空ける手順

① /compact(履歴がある場合)
会話履歴を要約して空ける。/compact 認証バグに絞ってのように観点指定も可。文脈を保ちつつ軽量化。
② /clear(別作業に移る時)
会話をまっさらに。必要な決定事項を記録してから始める。プロジェクトのファイル自体を削除する操作ではない。
③ 大きい読み込みを逃がす
巨大ファイルは行範囲で読む、またはサブエージェントに調査させ結論だけ受け取る(別の窓を使う)。
④ 繰り返し載る内容を減らす
/context で内訳を見て、不要MCPを無効化・CLAUDE.mdを圧縮。詳細な手順は必要時に読む形へ分ける。
⑤ どうしても大きいなら 1M モデル
巨大コードベースを丸ごと扱う等、本当に必要なときだけ /model で 1Mコンテキストのモデルへ。ただし整理(①〜④)を先に。auto-compact は無効化しない(既定オンのまま)。

長い履歴なら①、無関係な次の作業なら②。最初から大きい入力なら③と④。圧縮の根本エラーが表示される場合は先にそれを直す。

/compact が Error during compaction: Conversation too long で失敗するのは、生成した要約を置く空きが足りない状態だ。入力欄が空の状態でEscを2回押す(または /rewind)と巻き戻しメニューが開くので、大きい入力より前のメッセージを選んで会話を戻す。コードは今のまま会話だけ戻すなら Restore conversation を選ぶ。その後に圧縮をやり直し、十分空かなければ /clear で小さい入力から再開する。前の会話は保存されていて、/resume で開き直せる。メニューの選択肢は 公式の巻き戻しの説明にある。

一方、automatic compaction failed: の後ろに認証失敗やモデル利用不可が続いているなら、窓を空ける前にその原因を直す。直すまでは /compact も同じエラーで失敗する。/compact が Not enough messages to compact. と返すのは、1往復だけの会話で要約できる過去がない状態だ。/clear してから、貼り付けを減らすか添付を小さくして送り直す。圧縮直後にまた満杯になる場合は、直前の巨大ログやファイルを必要な部分へ絞る。

APIを直接呼んでいる場合

/compact や /clear はClaude Codeの操作で、Messages APIへ送る制御コマンドではない。入力だけで窓を超えると、APIは400の invalid_request_error("prompt is too long")を返す。送信する messages・system・tools・添付を見直し、対象モデルの トークン計数APIで入力を見積もる。古い履歴を要約する、文書を必要部分へ絞る、不要な定義を外すなど、リクエスト自体を小さくする。ツール呼び出しと結果の対応を壊すような途中切断は避けよう。長期の会話管理にはAPI側のcompaction機能もあるが、対応モデルや設定はClaude Codeのコマンドと別だ。

復旧後は小さいリクエストで応答が返るのを見てから、必要な情報を少しずつ戻す。同じ巨大な入力を再送しても待つだけでは容量は増えない。普段の整理は Claude Codeのトークン節約で扱う。

5. 紛らわしいエラーを見分ける

入力超過・出力設定の上限・生成中の窓の上限・期間内使用量は、それぞれ違う。応答が途切れた見た目ではなく、エラー文やAPIの stop_reason で見分ける。

症状正体主な対処
Prompt is too long / Context limit reached / N tokens > M maximum本記事の主題、入力がコンテキスト窓を超えた/compact・/clear・大読みをサブエージェントへ・1Mモデル
応答が途中で切れる(stop_reason: max_tokens)出力が、リクエストで指定した max_tokens に達して切れたAPIでは出力設定とモデル上限を見直す/続きを依頼する
stop_reason: model_context_window_exceeded生成中に入力+出力が窓の上限へ達した入力を減らして出力の余地を確保する
usage limit reachedプランの使用量枠を使い切った(トークン窓とは無関係)リセット待ち・使用量制限の対処
Usage credits required for 1M context利用条件の話、選択中の1Mをプラン内では利用できない(溢れでも枠切れでもない)クレジットを有効化して再起動、または /model で標準窓へ

AnthropicのAPI仕様では、Claude 4.5以降は入力と指定した max_tokens の合計が窓を超えても、入力自体が収まっていればリクエストを受け付ける。生成中に窓の上限に達すると model_context_window_exceeded で止まるため、出力が短く終わったというだけでは max_tokens と断定できない。そのほかのトラブルは Claude Codeのエラー集も参照。

関連:Codexアプリで履歴は見えるのに送信だけが失敗する症状は、入力容量ではなく会話状態の問題で、Codex「thread not found」の対処法と復旧事例で扱っている。

6. 再発防止チェックリスト

作業前:/context で何が載っているかを見る。大きな文書は、最初から全文を貼らず検索や行範囲で絞る。調査を分けるときは、サブエージェントから受け取る結論の範囲も指定する。

作業中:自動圧縮は既定の有効のまま使う。エラーの行に auto-compact is off と出たら /config で戻す。環境変数 DISABLE_AUTO_COMPACT で切っている場合はこの表示が出ないので、その設定を外す。圧縮するたびに同じ情報を読み直していないかも見る。手動圧縮は回数を増やせばよいわけではなく、/compactを押すタイミングと、残すべき決定事項の指定が大切だ。

作業の区切り:無関係な次のタスクへ移るなら、必要事項をファイルへ残して /clear で新しい会話にする。前の会話は保存されるが、復旧目的で同じ巨大な履歴をそのまま再開すれば原因も戻りうる。CLAUDE.mdの常時指示には、毎回必要な規則だけを残す。

独自の接続環境:ゲートウェイや独自モデル名を使う場合は、Claude Codeが想定する窓と接続先の実際の容量がずれていないかを見る。設定上の数字を大きくしても、接続先のモデルの容量は増えない。合わせ方は公式の独自モデル向け設定にある。

まとめ

Prompt is too long は、直前の文章だけでなく、履歴や添付などを含む入力全体が上限へ収まらない問題だ。長い履歴なら /compact、最初の入力が大きすぎるなら入力の削減、圧縮の根本エラーがあるならその解消、と状態に合わせて選ぶ。

どの状態かは、エラー文字列の後半(automatic compaction failed:・single exchange・auto-compact is off)が教えてくれる。MCPの詳細定義は既定では必要時に読み込まれるので、負担はサーバ数ではなく /context で見る。1Mを使う場合は、容量・料金・自動圧縮のしきい値がモデル・接続先・プランで別々に決まる。APIを直接使う場合は、Claude Codeのコマンドではなく送信リクエストと停止理由を見直す。

FAQ

Q. 「Prompt is too long」と「usage limit reached」は同じですか?
A. 違います。前者は入力が1回のコンテキスト上限を超えた状態、後者はプランの使用量枠の問題です。入力超過なら送信内容を減らします。/clear はプランの使用量枠を回復する操作ではありません。

Q. 自動圧縮が有効なのに出るのはなぜですか?
A. 巨大な入力、要約できる以前の会話がない状態、圧縮処理の失敗、要約直後の再充満などが原因です。エラー文字列の後半で見分けられます。automatic compaction failed: の後ろに認証などの原因が書かれていれば、それを先に解消します。single exchange なら /clear して小さい入力で始めます。

Q. /compactも「Conversation too long」で失敗します。
A. 要約を置く空きが足りない状態です。入力欄が空の状態でEscを2回押して巻き戻しメニューを開き、大きい入力より前のメッセージまで会話を戻してから再試行します。コードを残すなら Restore conversation を選びます。十分空かなければ必要事項を記録し、/clear 後に小さい入力で始めます。

Q. 1Mモデルに変えれば解決しますか?
A. 必要な入力が新しい窓に収まるなら有効ですが、利用条件はモデル・接続先・プランで異なります。1Mの標準単価は処理量が増えても総額が同じという意味ではありません。先に不要な履歴や巨大な出力を減らすと、必要な容量を判断しやすくなります。

Q. 何が窓を使っているか調べるには?
A. Claude Codeでは /context で内訳を見ます。/usage の累積消費やプラン枠とは別の数字です。MCPの定義は既定で必要時に読み込まれるため、接続数だけでは負担は分かりません。APIなら対象モデルのトークン計数APIで送信内容を見積もります。