Claude Codeの「Request too large」が出たときの対処法
Claude Codeで「Request too large」が出る原因と対処を、3つの表示パターン別にまとめます。Prompt is too longとの違いも扱います。
Claude Codeで「Request too large」が出たら、まず疑うのはコンテキストウィンドウではなくリクエスト本体のサイズです。Claude APIには送信前のリクエストボディに32MBという上限があり、これはトークン数で管理されるコンテキストウィンドウとは別の枠です。画像や添付ファイルが会話に積み重なると、トークン数はまだ余裕があるのにボディサイズだけが先に上限へ届きます。
Request too largeとは何のエラーか
このエラーは、Claude Codeが組み立てたリクエストがAPIへ届く前に、または届いた直後にサイズで弾かれたときに出ます。原因は主に3つで、貼り付けた画像・添付ファイルの蓄積、会話のテキスト本文そのものの肥大、そしてツール実行結果(コマンド出力やファイル読み込みの結果など)の蓄積です。画像は1枚あたりが小さくても、スクリーンショットや添付ファイルが会話の中に何十枚も残っていると、テキストに変換する前の生データの合計がすぐ32MBを超えます。同様に、ログやコマンド出力をそのまま会話に残し続けると、画像がなくてもツール実行結果側の蓄積だけでボディサイズが上限に届きます。
紛らわしいのは、よく似た文言の「Prompt is too long」です。あちらはトークン数がコンテキストウィンドウ(モデルごとの上限)を超えたときに出るエラーで、対処も/compactによるトークン圧縮が中心になります。「Request too large」はトークンの話ではなく、送信データそのものの重さが原因です。両者は原因も直し方も別物なので、混同すると的外れな対処をしてしまいます。
画像がこの上限にすぐ効いてくるのには理由があります。リクエストボディに画像を載せるとき、生のバイナリのままではなくテキストとして表現できるBase64という形式に変換します。Base64は3バイトを4文字に置き換える仕組みのため、変換後のデータは元のファイルサイズよりおよそ3割ほど膨らみます。数MBのスクリーンショットを何枚も貼り付けた会話は、見た目のファイルサイズ以上に早く32MBへ近づきます。テキストだけの会話がなかなかこのエラーに当たらないのは、この変換コストを負わないからです。
表示される3つのパターンと見分け方
Claude Codeは、リクエストが直接Claude APIに届いたか、プロキシやゲートウェイ経由かによって、表示するメッセージの詳しさを変えます。プロキシ越しでは会話の中身を測定できないため、汎用的な一文だけが出ます。
| 表示パターン | 意味 | Claude Codeの挙動 |
|---|---|---|
Request too large (max 32MB). Accumulated images and attachments... | 意味プロキシ / ゲートウェイ経由で詳細を測定できない | Claude Codeの挙動/compactか添付削除を促すのみ |
Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents) | 意味画像・添付ファイルが原因と特定できた | Claude Codeの挙動画像を取り除いて自動的に再送する |
Request too large for the API's 32MB request limit | 意味会話のテキスト本文だけで32MBを超えている | Claude Codeの挙動圧縮では収まらないため再送しない |
2番目のパターンに当たった場合は、Claude Code側で画像を取り除いて自動リトライするため、実質的に何もしなくてもそのターンは通ります。厄介なのは3番目です。テキストだけで上限を超えているケースは/compactをかけても本文サイズが変わらないため、Claude Codeは最初から再送を試みません。非対話モード(-p)では、入力を減らすか新しいセッションを始めるようメッセージが案内します。
原因別の対処法
原因ごとに打ち手が違うため、まずどのパターンかを見分けてから動きます。
画像・添付ファイルが原因(1番目・2番目のパターン)なら、/compactで会話履歴を要約し、蓄積した画像とその周辺のやり取りをまとめて圧縮します。
/compactテキスト本文そのものが重い場合(3番目のパターン)は、圧縮では対処できません。Escを2回押して大きな内容を貼り付けた直後のターンまで戻るか、/clearで会話をリセットします。何が文脈を占有しているかを先に確認したいときは/contextで内訳を見られます。
/contextMCPサーバーを複数接続している場合、そのツール定義自体がリクエストの一部として毎回送られます。使っていないMCPサーバーは/mcp disable <サーバー名>で切り離すと、リクエスト全体の軽量化にもつながります。巨大なCLAUDE.mdを階層化していないプロジェクトでは、そちらの整理も効きます。
貼り付け自体を減らす工夫も有効です。ログやdiffの全文をチャットに直接貼り付けるのではなく、ファイルパスで参照する運用に変えると、Claude Codeは必要な範囲だけを分割して読み込みます。一度に全文を会話へ持ち込まないぶん、リクエストボディも膨らみにくくなります。
ツール実行結果の蓄積が原因になっているケースでも考え方は同じです。コマンド出力やファイルの中身をそのまま会話に残すのではなく、パス参照に切り替えたり、grepやhead相当の絞り込みで出力範囲そのものを小さくしたりすると、実行結果の蓄積によるリクエストボディの肥大を抑えられます。
v2.1.212とv2.1.229で何が変わったか
このエラーメッセージの精度は、ここ数バージョンで段階的に改善されてきました。特に次の2つは、原因の切り分けやすさに直結する変更です。
| バージョン | 変更内容 |
|---|---|
| v2.1.212より前 | 変更内容画像が蓄積した会話は、送信するたびに毎回同じ汎用メッセージで失敗していた |
| v2.1.212 | 変更内容多数の画像を含む会話が「Request too large」として誤検知される不具合を修正し、実際の原因を説明するメッセージへ改善 |
| v2.1.229より前 | 変更内容圧縮しても直らないケースでも、常に添付削除のアドバイスが表示されていた |
| v2.1.229 | 変更内容圧縮不可能なケースを判定し、「compacting cannot make it fit」と再送しない旨を明示するよう改善 |
古いバージョンのままだと、実際にはテキスト本文が原因なのに/compactを促されて空振りする、という体験が起きやすくなります。頻繁にこのエラーへ当たる環境では、claude updateで最新版に上げておくと切り分けが早くなります。
v2.1.212より前の挙動は特に不便でした。画像を多く含む会話が本来は「Request too large」ではないはずのタイミングでも誤検知され、原因の説明がないまま同じ一文が繰り返し出ていました。v2.1.229の改修は逆方向の問題を潰しています。圧縮しても直らないケースにまで一律で「/compactを実行してください」という案内が出ていたため、何度圧縮しても解決しない体験に見えていました。今は圧縮で直るかどうかをClaude Code側が先に判定し、直らない場合はその旨をメッセージに含めるようになっています。
PDFエラーやレート制限との違い
サイズが絡むエラーは他にもいくつかあり、名前が似ているために取り違えやすいところです。PDFの添付そのものが原因のときは「Request too large」ではなく、ページ数やファイルサイズの上限(100ページ・20MB)を示す個別のPDFエラーが出ます。こちらはpdftotextなどでテキストを抜き出してから渡すのが定石です。3パターンの原因別の切り分けはClaude Code PDFエラー一覧にまとめています。画像側も「サイズが大きすぎる」のではなく処理そのものに失敗する場合は別のエラーで、「Unable to resize image」が出る原因と対処法を参照してください。
また、429や529で止まるレート制限・混雑系のエラーは、リクエストのサイズではなく送信頻度や使用量の枠が原因です。文面も挙動もまったく別物なので、「Request too large」が出ていないのに応答が止まる場合は、Claude rate limitエラーの対処を先に確認したほうが早く解決します。
適用される利用形態
このエラーはターミナルのCLIだけでなく、Claude Code DesktopアプリとClaude Code on the webでも同じ仕組みで発生します。3つの利用形態はいずれも同じClaude Code本体をラップしているためです。一方、Claudeのチャット画面(claude.ai)は別の制限で動いており、本記事の32MB上限はClaude Codeの利用形態にのみ適用されます。
会話が長時間の/compact待ちで詰まっている場合は、compactの発火条件と要約後に残る情報で仕組み側から確認できます。エラーの種類そのものを見分けたいときはClaude Codeでよくあるエラー10選も参考になります。似た文言で原因が違う「Image was too large」も、画像の添付が絡む場面では合わせて確認しておくと切り分けが速くなります。
よくある質問
Request too largeとPrompt is too longの違いは
会話の内容によって変わります。テキストが中心の会話ではトークン数がコンテキストウィンドウに先に届くため「Prompt is too long」が先に出やすく、画像や添付ファイルを多く貼り付けている会話ではボディサイズが先に上限へ届くため「Request too large」が先に出やすくなります。
/compactを実行しても同じエラーが出続けます
会話のテキスト本文だけで32MBを超えているケースです。この場合、圧縮では本文サイズが変わらないため/compactは効きません。Escを2回押すか/clearで会話をリセットしてください。
プロキシ経由だと詳しいメッセージが出ないのはなぜですか
Claude Codeがリクエストの内訳(画像何MB・テキスト何MBなど)を測定できるのは、Claude APIへ直接送信している場合に限られます。プロキシやゲートウェイ、クラウドプロバイダー経由では内訳を測定できないため、汎用的な一文だけが表示されます。
非対話モード(-p)で出た場合はどうすればいいですか
非対話モードには対話モードのような/compactやEsc操作がありません。「Request too large」がテキスト本文由来で圧縮不可能なケースに当たると、入力を減らすか新しいセッションとして実行し直すよう案内が出ます。スクリプト側で、1回のリクエストに含めるファイル数や貼り付けるログの範囲を事前に絞っておくと、この失敗自体を避けやすくなります。
まとめ
「Request too large」はトークンではなくリクエストボディの重さが原因です。表示されたメッセージが3パターンのどれに当たるかを見極め、画像由来なら/compactと添付整理、テキスト本文由来ならEscか/clearで戻る、という順で対処すれば大半のケースは解消します。頻発する環境ではバージョンを最新に保つことも、原因の見分けやすさに直結します。