目次
Claude Code の Prompt is too long は、送信する入力がコンテキストの上限を超えたときのエラーだ。現行の対話画面では Context limit reached と表示される場合もある。まず、長い履歴を圧縮できる状態か、最初の入力だけで大きすぎる状態かを分けよう。次はエラー表記の例で、数字は説明用だ。
Prompt is too long
# API のエラー表記例:
prompt is too long: 233153 tokens > 200000 maximum
入力には、直前に打った文章だけでなく、会話履歴・読み込んだファイル・ツール結果・指示なども含まれる。233153 tokens > 200000 maximum なら、入力233,153トークンが許容量200,000トークンを超えている。コンテキスト窓そのものは入力と今回生成する出力を含む容量で、このエラーは入力側ですでに上限を超えたことを示す。プランの期間内使用量を使い切る usage limit とは対処が違う。
履歴が長いなら /compact、最初の入力が大きすぎるなら入力を減らす、圧縮の失敗原因が表示されているならその原因を先に直す。これが復旧の基本だ。自動圧縮は既定で有効だが、すべての超過を防ぐ保証ではない。本記事は2026年9月21日に確認した Claude Codeの公式エラー説明とAPIの仕様をもとに、原因・操作・200Kと1Mの条件を整理する。APIを直接呼ぶ場合の対処も分けて説明する。
同じ「長すぎる」でも、減らす場所が違う
過去の履歴を要約する。圧縮直後にまた満杯になるなら、巨大な読み込みを分割する。
要約できる過去の会話がない。貼り付け・添付・指示・ツールの負担を減らして始める。
認証やモデル利用不可など、併記された原因を先に解消する。繰り返すだけでは直らない。
窓の内訳は /context、期間内の消費やプラン枠は /usage。同じ「トークン」でも見る数字が違う。
1. このエラーは何を言っているのか
コンテキスト窓は、モデルが1回の応答で参照・生成できる情報量の上限だ。単位は文字数ではなくトークンで、入力に加えて今回の出力や思考用のトークンも使う。APIのキャッシュから読んだ入力も窓を占める。キャッシュは料金や処理を変える仕組みであり、容量をゼロにする仕組みではない。根拠は Anthropicのコンテキスト窓の仕様。
そのうち Prompt is too long は、送信する入力だけですでに窓へ収まらない場合に起きる。「短い質問を送っただけ」でも、同じリクエストに古い履歴やファイルが付いていれば入力の合計は大きい。最新の質問だけを短くしても直らない理由はここにある。基礎は コンテキストウィンドウとはも参照。
Claude Code は上限に近づくと古いツール出力を整理し、必要なら会話を要約する。ただし、巨大な貼り付け・自動圧縮の無効化・圧縮処理の認証エラーなどで止まることがある。要約後すぐ同じ巨大ファイルを読み直し、再び満杯になる場合もある。自動圧縮が有効かどうかだけで原因を決めない。画面のエラー全文と、その直前に読み込んだ内容を確認しよう。
2. 何がコンテキスト窓を埋めるのか
Claude Codeの動作説明に沿って、窓を使う要素を整理すると次のようになる。保存されている会話ログと、現在モデルへ送る内容は同じではない。古いツール結果の除去や要約によって、現在の窓の中身は変わる。
| 要素 | 窓に入る内容 | 見直す場所 |
|---|---|---|
| 会話履歴 | 現在のリクエストへ送るやり取り。圧縮後は要約に置き換わる部分がある | 同じ作業は /compact、無関係な次の作業は /clear |
| ファイル・ツール結果 | 読み込んだ本文、検索結果、コマンド出力など | 検索で対象を絞る、必要な行だけ読む、詳細調査をサブエージェントへ分ける |
| MCP | ツール名とサーバ指示。既定では詳細な定義をTool Searchで必要時に読み込む | /context で実際の負担を確認し、不要なサーバを /mcp で無効化 |
| CLAUDE.md・メモリ | 適用される指示や読み込まれたメモリ。自動メモリの全ファイルが常時入るわけではない | 常時必要な規則を短く保ち、特定作業だけの説明を分ける |
| Skills | 通常は開始時に説明、使用時に本文。設定によって説明も必要時だけにできる | 不要な自動呼び出し対象や長すぎる本文を見直す |
| システム指示 | Claude Codeや接続環境が付ける動作指示 | まず、自分で管理する指示・添付・ツールなどを確認する |
MCPを接続しただけで全ツールの詳細定義が必ず最初から入る、という説明は現行の既定動作とは違う。一方、Tool Searchを無効にした設定、先行読み込みの指定、対応しない接続先では定義が先に載る場合がある。公式のTool Search設定表で接続先の条件を確認する。サーバ数だけから負担を推測するより、/context を見たほうがよい。
サブエージェントは別の窓で調査し、途中の大量のツール出力を親の会話へ持ち込まずに結果を返せる。ただし、返ってきた要約や結論は親の窓を使う。調査結果を全文転記させれば効果は薄い。「該当ファイルと行、結論、未確認点だけ返して」のように必要な成果を指定する。設計の考え方は コンテキストエンジニアリングで扱っている。
使い分けは、/context が今の窓の占有量、/usage が消費トークンやプラン使用量だ。後者の料金表示は概算で、請求の確定額ではない。対応する環境では /skill-doctor でスキルの負担も調べられるが、利用条件があるため、見つからなければ /context から始めればよい。詳しい測り方は コンテキストは何に食われているのか、コマンドの提供条件は 公式コマンド一覧を参照。
3. コンテキスト窓のサイズ——200K と 1M
200Kは20万、1Mは100万トークンだ。ただし、モデルが持つ容量・Claude Codeがその接続先で使う容量・自動圧縮のしきい値・料金条件は別々に確認する。/status で現在のモデルとアカウントを確認し、/model で利用できる選択肢を見る。
容量と利用条件を分けて読む
Sonnet 4.5などのモデル。1M対応モデルでも、接続先や1Mを無効にする設定によってClaude Codeが200Kとして扱う場合がある。
Anthropic API上のFable系・Sonnet 5・Opus 4.7以降など。既定で1Mになる場合もあり、常に [1m] を付けるわけではない。
出典:Anthropicのモデル設定・拡張コンテキスト。自動圧縮が始まる位置は設定やモデルによって異なる。
サブスクリプションでは、Max・Team・EnterpriseのOpusは1Mが含まれる一方、ProのOpus 1Mや各サブスクリプションのSonnet 4.6 1Mには使用量クレジットが必要とされている。Anthropic APIへ直接接続するSonnet 5は、全プランで既定1M・追加の使用量クレジット不要・[1m] の選択不要という別の扱いだ。ゲートウェイ経由や1M無効化設定には例外があるため、モデル名だけで判断しない。
1Mの「標準価格」は、200Kを超えた部分に長文用の割増単価を上乗せしないという意味だ。同じ総額で入力を無制限に増やせるわけではない。処理するトークンが増えれば使用量も増える。1Mがプランに含まれるか、クレジットから請求されるかも別の問題だ。
また、文字数とトークン数の比率はモデルや内容で変わる。「新しいモデルなら必ず何割増える」と一律に見積もらず、APIなら対象モデルのトークン計数を使う。大きい窓が必要なタスクはあるが、関係のないログや重複した指示を減らしてから選ぶと、必要な容量を判断しやすい。
4. 今すぐ直す方法
エラーが出た瞬間の打ち手を、優先順に。状況(履歴が膨らんだ/巨大ファイルを入れた)で選ぶ。
窓を空ける手順
/compact 認証バグに絞ってのように観点指定も可。文脈を保ちつつ軽量化。/context で内訳を見て、不要MCPを無効化・CLAUDE.mdを圧縮。詳細な手順は必要時に読む形へ分ける。/model で 1Mコンテキストのモデルへ。ただし整理(①〜④)を先に。auto-compact は無効化しない(既定オンのまま)。長い履歴なら①、無関係な次の作業なら②。最初から大きい入力なら③と④。圧縮の根本エラーが表示される場合は先にそれを直す。
/compact が Error during compaction: Conversation too long で失敗する場合、公式説明では生成した要約を置く空きが足りない状態だ。入力欄を空にしてEscを2回押し、開いた一覧から大きい入力の前のターンを選んで会話を戻す。2回押すだけで自動的に数ターン戻るわけではない。コードも戻す操作を選ぶ場合は対象を確認する。その後に圧縮を再試行し、十分空かなければ /clear で小さい入力から再開する。操作の条件は 公式のキーボード操作を参照。
一方、automatic compaction failed の後ろに認証失敗やモデル利用不可が続いているなら、窓を空ける前にその原因を直す。Not enough messages to compact. は要約できる過去の会話が足りない状態なので、同じ圧縮を繰り返さず添付や貼り付けを減らす。圧縮直後にまた満杯になる場合は、直前の巨大ログやファイルを必要な部分へ絞る。
APIを直接呼んでいる場合
/compact や /clear はClaude Codeの操作で、Messages APIへ送る制御コマンドではない。API側では、送信する messages・system・tools・添付を確認し、対象モデルの トークン計数APIで入力を見積もる。古い履歴を要約する、文書を必要部分へ絞る、不要な定義を外すなど、リクエスト自体を小さくする。ツール呼び出しと結果の対応を壊すような途中切断は避けよう。長期の会話管理にはAPI側のcompaction機能もあるが、対応モデルや設定はClaude Codeのコマンドと別だ。
復旧後は小さいリクエストで応答が返ることを確認してから、必要な情報を少しずつ戻す。同じ巨大な入力を再送しても待つだけでは容量は増えない。普段の整理は Claude Codeのトークン節約で扱う。
5. 紛らわしいエラーを見分ける
入力超過・出力設定の上限・生成中の窓の上限・期間内使用量は、それぞれ違う。応答が途切れた見た目だけで決めず、エラー文やAPIの stop_reason を確認する。
| 症状 | 正体 | 主な対処 |
|---|---|---|
| Prompt is too long / 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のエラー集も参照。
6. 再発防止チェックリスト
作業前:/context で何が載っているかを見る。大きな文書は、最初から全文を貼らず検索や行範囲で絞る。調査を分けるときは、サブエージェントから受け取る結論の範囲も指定する。
作業中:自動圧縮は通常有効のまま使う。無効にした覚えがあれば /config や適用された設定を確認する。圧縮するたびに同じ情報を読み直していないかも見る。手動圧縮は回数を増やせばよいわけではなく、/compactを押すタイミングと、残すべき決定事項の指定が大切だ。
作業の区切り:無関係な次のタスクへ移るなら、必要事項をファイルへ残して /clear で新しい会話にする。前の会話は保存されるが、復旧目的で同じ巨大な履歴をそのまま再開すれば原因も戻りうる。CLAUDE.mdの常時指示には、毎回必要な規則だけを残す。
独自の接続環境:ゲートウェイや独自モデル名を使う場合は、Claude Codeが想定する窓と接続先の実際の容量が一致しているか確認する。設定上の数字を大きくしても、接続先のモデルの容量は増えない。公式の独自モデル向け設定を管理者と確認しよう。
まとめ
Prompt is too long は、直前の文章だけでなく、履歴や添付などを含む入力全体が上限へ収まらない問題だ。長い履歴なら /compact、最初の入力が大きすぎるなら入力の削減、圧縮の根本エラーがあるならその解消、と状態に合わせて選ぶ。
MCPの詳細定義は既定では必要時に読み込まれる。サーバ数だけで負担を決めず、/context で現在の中身を見る。1Mを使う場合も、モデル・接続先・プランの条件を確認し、容量と料金と自動圧縮のしきい値を混同しない。APIを直接使う場合は、Claude Codeのコマンドではなく送信リクエストと停止理由を確認する。
FAQ
Q. 「Prompt is too long」と「usage limit reached」は同じですか?
A. 違います。前者は入力が1回のコンテキスト上限を超えた状態、後者はプランの使用量枠の問題です。入力超過なら送信内容を減らします。/clear はプランの使用量枠を回復する操作ではありません。
Q. 自動圧縮が有効なのに出るのはなぜですか?
A. 巨大な入力、要約できる以前の会話がない状態、圧縮処理の失敗、要約直後の再充満などが考えられます。二択で決めず、エラー全文と直前の読み込みを確認してください。認証などの原因が併記されていれば先に解消します。
Q. /compactも「Conversation too long」で失敗します。
A. そのエラーは、公式説明では要約を置く空きが足りない状態です。入力欄を空にしてEscを2回押し、一覧から以前のターンを選んで会話を戻してから再試行します。十分空かなければ必要事項を記録し、/clear 後に小さい入力で始めます。コードを戻す操作は対象を確認してください。
Q. 1Mモデルに変えれば解決しますか?
A. 必要な入力が新しい窓に収まるなら有効ですが、利用条件はモデル・接続先・プランで異なります。1Mの標準単価は処理量が増えても総額が同じという意味ではありません。先に不要な履歴や巨大な出力を減らすと、必要な容量を判断しやすくなります。
Q. 何が窓を使っているか調べるには?
A. Claude Codeでは /context で確認します。/usage の累積消費やプラン枠とは別の数字です。MCPは必要時に読み込まれる定義もあるので、接続数だけで負担を決めないでください。APIなら対象モデルのトークン計数APIで送信内容を見積もります。