なぜClaude Codeは「Prompt is too long」と言うのか
Claude Codeが送信するすべてのリクエストには、あなたのメッセージ以上のものが含まれています。Anthropicの /context 内訳には、「システムプロンプト、ツール、記憶ファイル(memory files)、およびメッセージ」という項目がリストされています。これに添付ファイルや貼り付けられたテキストを加えると、合計がモデルの許容範囲を超えることがあります。
メッセージの形式
エラーリファレンスにはいくつかのバージョンが記載されており、それぞれ異なる状況を指しています。
対話型形式: セッション中には Context limit reached · /compact or /clear to continue と表示されます。Anthropicは「DISABLE_COMPACT が設定されている場合、メッセージには /clear のみが表示される」と注記しています。-p 出力やトランスクリプト内では、テキストは Prompt is too long のままです。
自動コンパクションがオフの場合: ユーザー設定で自動コンパクションをオフにしている場合、その旨が表示され、末尾に auto-compact is off · /config to turn it on と続きます。
コンパクション失敗後: 「このターンで自動コンパクションが実行され、モデルの利用不可や認証エラーなどの根本的なエラーで失敗した場合、セパレーターの後にそのエラー名が表示されます」。その場合、テキストは Prompt is too long · automatic compaction failed: に続いて原因が表示されます。Anthropicのアドバイスは「まず指定されたエラーを解決してください。解決するまで /compact は同じエラーで失敗します」というものです。
単一のやり取り: 会話が1つのプロンプトと1つの返信のみである場合、要約すべき過去の履歴がありません。Anthropicは「単一のやり取りの会話には、要約する過去のターンが存在しない」と述べており、メッセージは何がリクエストを占有しているか(会話自体の内容、システムプロンプト、ツール定義、または添付ファイル)を説明します。
Bedrockとゲートウェイについて
同じ状況が別の言葉で届くこともあります。Anthropicは「Amazon Bedrockはこの状況を Input is too long for requested model. と報告し、Claude Codeはこれを同様に処理する」と記しています。Claudeアプリのゲートウェイは capability_rejected: prompt_too_long と報告する場合があり、Claude Codeはそのトークンを同じエラーとして扱います。
古いバージョンではこれらの形式を認識できませんでした。ドキュメントによると、v2.1.217より前では「Claude CodeはBedrockの文言を認識できなかったため、自動コンパクションがトリガーされず、/compact も同じエラーで失敗していた」とのことです。Bedrockやゲートウェイ経由でこのエラーが発生する場合は、まずClaude Codeを更新することを確認してください。
なぜ自動コンパクションで防げなかったのか
Anthropicは「自動コンパクションはデフォルトでオンになっており、通常はこのエラーを防ぐ」としています。それでもエラーが表示される場合、ドキュメントはいくつかの原因を指摘しています:
- 自動コンパクションがオフ: 「
/configまたはDISABLE_AUTO_COMPACTでオフにした場合は、オンに戻してください。オフのままにする場合は、ウィンドウがいっぱいになる前に自分で/compactを実行してください」。 - コンパクション自体が失敗: メッセージに理由が記載されています。
- 1つのプロンプトが大きすぎる: 短い会話の中で巨大なテキストの貼り付けや添付を行うと、要約する対象が残りません。
- ウィンドウサイズが正しくない: 「より多くのトークンを受け入れるモデルで200Kトークン付近でエラーが出る場合、原因の一つは Claude Code が認識していないモデルIDであることです」。その場合、Claude Code は200Kのウィンドウを想定します。ドキュメントには、実際のウィンドウサイズを指定する方法へのリンクがあります。
- コンパクション中に停止させた: 「Claude が会話をコンパクションしている最中に停止させた直後にエラーが出た場合、会話は変更されず、依然としてコンパクションが必要なほど大きいままです。
/compactを実行してメッセージを再送信してください」。
/compact と /clear:セッションへの影響
/compact は要約を保持する
/compact は、会話が収まるように過去のターンを要約します。Anthropicのコンテキストウィンドウガイドには、「長いセッションがコンパクションされると、Claude Code はコンテキストウィンドウに収まるように会話履歴を要約する」とあります。
このエラーで自動コンパクションが実行される際、ドキュメントには「通常、最も古いやり取りを要約し、最新のものを保持する」と記載されています。また、最終手段のモードもあります。「どのやり取りも丸ごと要約できない場合、Claude Code は最新のプロンプトを逐語的に保持し、それ以前のすべてを要約する」。
/clear は最初からやり直す
/clear は新しい会話を開始します。Anthropicの対話モードガイドによると、これは「新しいセッションを開始する」ものであり、「前のセッションの会話は保存され、再開可能である」とされています。新しいセッションは、その履歴がコンテキストにない状態で始まります。Anthropicは、コンパクションが不可能な場合にこれを推奨しています。「新しく始めるには /clear を実行してください」。Claude Codeにおける/clearのガイドでは、何が保持されるかを解説しています。
/compact が Not enough messages to compact. と返す場合、ドキュメントはその会話が単一のやり取りであることを示しています。その場合は /clear を実行し、貼り付けるテキストを減らすか、添付ファイルを小さくして再送信してください。
コンパクションで保持されるもの
これは、作業内容を失うかどうかを決定する重要な部分です。Anthropicのコンテキストウィンドウガイドには、コンパクション後に各種類のコンテンツがどうなるかの表があります。特に重要なのは以下の数行です:
- プロジェクトルートの
CLAUDE.mdとスコープ外のルール: 「ディスクから再注入(Re-injected from disk)」。 - 自動記憶(Auto memory): 「ディスクから再注入」。
- プランモードでClaudeが作成したプラン: 「ディスクから再注入」。Claude Codeのプランファイルに関するガイドで保存場所を説明しています。
- Claudeが読み取った、または編集したファイル: 「Claude Code は、最近変更されたものから順に最大5つを再読み込みする」。
paths:フロントマターを持つルールとネストされたCLAUDE.mdファイル: 必要に応じてリロードされる。- 以前にフックが追加したコンテキスト: 「会話の残りの部分と一緒に要約される」。
- この表の背後にあるパターンは有用です。ファイルとして保存された指示や記憶はディスクから戻り、最近編集されたファイルは再読み込みされます。チャットで説明した決定事項など、会話の中にのみ存在したものは、要約に含まれる範囲でしか残りません。Anthropicはスコープ付きルールについて警告を追加しています。「コンパクションを越えてルールを永続させる必要がある場合は、paths: フロントマターを削除するか、プロジェクトルートの CLAUDE.md に移動してください」。
サブディレクトリの CLAUDE.md 制限に関するガイドでは、オンデマンドで読み込まれるファイルについて解説しています。
再発を防ぐためのスペース確保
エラーリファレンスには、何を削減すべきかがリストされています:
- ウィンドウを占有しているものを確認する: 「
/contextを実行して、システムプロンプト、ツール、記憶ファイル、メッセージのどれがウィンドウを消費しているかの内訳を確認してください」。 - 使用していない MCP サーバーをオフにする: それらを無効にすることで、「コンテキストからツール定義」が削除されます。
- 記憶ファイルを整理する: 「大きな
CLAUDE.md記憶ファイルを整理するか、関連する場合のみ読み込まれるパススコープのルールに指示を移動してください」。 - 自動コンパクションをオンにしておく: または、ウィンドウがいっぱいになる前に自分で
/compactを実行してください。
2つの習慣も役立ちます。大量の貼り付けやファイルはウィンドウを最も早く埋める原因になるため、可能な限り貼り付けるのではなく、Claude にファイルを指し示すようにしてください。また、委譲された作業はメインの会話を小さく保つのに役立ちます。Claude Code サブエージェントに関するガイドでは、サブエージェントが何を持って開始し、何を返すかを説明しています。セッションが大規模なコードベースの同じ部分を繰り返し読み込み続ける場合は、Claude Code によるコードベースの再読み込みを停止させるガイドで、そのコンテキストを一度だけ与える方法を解説しています。
多くの人が最初に試してしまうこと
メッセージを再送信する: リクエストは依然として大きすぎます。まずコンパクション、クリア、またはサイズ削減を行ってください。
すぐに /clear を実行する: 機能はしますが、新しい会話には古い履歴が引き継がれません。会話が複数のやり取りで構成されている場合は、まず /compact を試してください。
コンパクション失敗後に /compact を実行する: メッセージに根本的なエラーが記載されている場合、Anthropicは、そのエラーを解決するまで /compact は同じエラーで失敗すると述べています。
要約を避けるために自動コンパクションをオフにする: 手動でコンパクションしない限り、ウィンドウがいっぱいになるたびにエラーが再発します。
ルールを要約に任せる: 会話の中にのみ存在するルールは、他のすべてと一緒に要約されます。これらはファイルに保存してください。
解決策:メッセージを読み、可能ならコンパクションし、ルールをディスクに保持する
ステップ 1: どの形式のエラーかを確認する
根本的なエラー名が表示されている場合は、まずそれを修正してください。「会話が単一のやり取りである」と表示されている場合、/compact は機能しません。自動コンパクションがオフであると表示されている場合は、/config でオンにするか、手動でコンパクションする計画を立ててください。/context を実行して、何がスペースを占有しているかを確認します。
ステップ 2: コンパクション、またはクリアして小さく再送信する
過去のターンがある会話の場合は、/compact を実行してメッセージを再送信してください。単一のやり取りの場合は、/clear を実行し、貼り付けるテキストを減らすか、添付ファイルを小さくするか、有効にする MCP サーバーを減らして再送信してください。以前の時点に戻る必要がある場合は、 /rewind に関するガイドでセッションを巻き戻す方法を確認してください。
ステップ 3: 生き残るべきものをファイルに移動する
次の長い作業に入る前に、セッションが依存するルールや決定事項をプロジェクトルートの CLAUDE.md または自動記憶に配置してください。これらはコンパクション後にディスクから再注入されます。特定のファイル付近でのみ重要なガイダンスには、パススコープのルールを使用してください。
MemoryLake での設定
コンパクションはディスクにあるものを戻し、残りを要約します。会話の中で説明した決定事項やその背後にある理由は、セッションが限界に達したときに最も失われやすい部分です。
MemoryLake は、それらの決定事項をあなたが管理する一箇所に保持し、ChatGPT、Claude Code、Codex などの接続されたアシスタントから利用できるようにするための記憶レイヤーです。
エントリーはあなた自身の言葉で作成します。Claude Code のセッション、トランスクリプト、CLAUDE.md ファイル、自動記憶、またはベンダーのストレージから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。/compact、/clear、および自動コンパクションは、Anthropic が説明している通りに機能し続けます。
ステップ 1: API キーを作成する
サインインし、ダッシュボードからキーを生成します。このキーは MemoryLake ワークスペースに属し、Claude アカウントとは別個のものです。

ステップ 2: 最初の記憶をアップロードする
解決策のステップ3で挙げた決定事項のうち、CLAUDE.md に入れるには長すぎたり個人的すぎたりするものから始めてください(なぜそのアプローチを選んだのか、何を除外したのか、次は何かなど)。1つのエントリーにつき1つのポイントを、日付付きで記入します。

ステップ 3: AI とエージェントを接続する
Claude Code やその他の使用しているアシスタントを接続します。/compact や /clear の後、あるいは別のツールを使用しているときでも、同じエントリーを利用できます。

実践で何が変わるか
第一の違いは、限界に達したときの選択が冷静になることです。決定事項が書き留められていれば、/clear による損失は少なくなり、/compact が保持すべき内容も減ります。
第二に、ウィンドウを小さく保てます。必要なときに検索する事実は、すべてのリクエストに含まれている必要はありません。
第三に、ツール間での継続性です。同じ決定事項が Claude Code でも、Codex や ChatGPT でも利用可能になります。
Claude Code のコンテキスト制限に関するベストプラクティス
自動コンパクションをオンにしておく: Anthropic は、これが通常エラーを防ぐとしています。
メッセージ全文を読む: コンパクションが失敗したのか、オフだったのか、あるいは要約するものがなかったのかを教えてくれます。
削減前に /context を使用する: まず何がウィンドウを占有しているかを確認してください。
未使用の MCP サーバーを無効にする: それらのツール定義はスペースを消費します。
ルールをファイルに保持する: プロジェクトルートの CLAUDE.md と自動記憶はコンパクション後に復元されます。
貼り付けを減らし、参照を増やす: 大量の貼り付けはウィンドウを最も早く埋めます。
Claude Code を更新する: このエラーのいくつかの形式は最近のバージョンで修正されました。
結論
Claude Code で「Prompt is too long」またはセッション中に「Context limit reached」と表示されるのは、会話と添付ファイルの合計がモデルのコンテキストウィンドウを超えたときです。通常は自動コンパクションがこれを防ぎます。防げなかった場合、メッセージはその理由(別のエラーでコンパクションが失敗した、自動コンパクションがオフである、または会話が単一のやり取りで要約するものがない)を伝えています。
/compact は要約を保持し、プロジェクトルートの CLAUDE.md、自動記憶、およびプランをディスクから再注入します。/clear は最初からやり直します。示された原因を修正し、可能な場合はコンパクションを行い、失いたくないルールや決定事項は会話の中ではなくファイルに保持するようにしましょう。