メインコンテンツへスキップ

Claude Code の compact エラー:メッセージ別の原因と復旧手順

赤い「Error compacting conversation」は外枠で、原因は一緒に出る行にあります。claude update で更新し、その行に合った復旧手順を選びます。

LaoZhang AI Team公開29 分で読めます
目次
Claude Code の赤い Error compacting conversation の下に出る行ごとに、Esc 2 回での巻き戻しや焦点付き /compact などの復旧手順を示した図

Claude Code で長い作業を続けていると、赤い「Error compacting conversation」が出たり、/compact が Error during compaction: で始まるエラーを返したりして、会話が先へ進まなくなることがあります。この赤い通知は「compact(会話の要約・圧縮)の途中で何かが失敗した」という知らせにすぎません。原因は一緒に表示される別の行に書かれていて、直し方もその行の文言で決まります。

進め方は次の三段階です。

  1. claude update で最新版にする。compact の失敗の多くは、特定のバージョンですでに修正されています。
  2. 下の対応表で、画面に出ている行を探す。
  3. 失うものが少ない順に、巻き戻し、焦点を絞った /compact、大きな添付の除外、根本のエラーの修正、状態をファイルに残してからの /clear を試す。

内容は 2026年10月16日時点の Claude Code 2.1.301 に基づきます。ターミナル版のほか、同じ CLI を内部で使うデスクトップアプリとクラウドセッションにも当てはまります。claude.ai のチャット画面に出る会話の圧縮や、API のサーバー側 Compaction は別の仕組みで、ここで扱う手順は使えません。

「Error compacting conversation」は外枠:原因は一緒に出る行で決まる

2.1.301 では、この赤い通知は compact が例外で終わったときにまとめて出ます。対象は、手動の /compact、自動 compact、巻き戻しメニューの「Summarize from here」「Summarize up to here」による部分的な要約の三つです。通知そのものには原因が含まれていないため、近くに出ている Error during compaction: で始まる行、Conversation too long.、Compaction failed ·、Prompt is too long · automatic compaction failed: などの行を読みます。Error during compaction: の場合は、その後ろに続く文が本当の原因です。

反対に、次の三つの場面ではこの赤い通知は出ません。

  • Esc で compact を止めたとき。2.1.133 以降は Compaction canceled. と表示されます。それより前のバージョンでは、Esc で止めただけでもこの通知が誤って出ていました(Claude Code の変更履歴、2.1.133)。
  • 要約できる過去の会話がないとき(Not enough messages to compact.)。
  • PreCompact hook が compact を止めたとき。

つまり赤い通知が出ているなら、compact は本当に失敗していて、原因を書いた行がどこかにあります。

compact エラーのメッセージ別対応表(Claude Code 2.1.301)

画面に出ている行を左の列で探してください。「関連する修正」は、その症状に関わる修正や変更が入ったバージョンです。手元のバージョンがそれより古ければ、まず更新します。

表示される行何が起きているか最初にやること関連する修正
Error during compaction: の後に別のエラー文/compact が失敗した。後ろの文が原因後ろの文をこの表の別の行で探す2.1.216 で失敗した /compact がエラーとして表示されるように
Conversation too long. Press esc twice to go up a few messages and try again.会話が大きすぎて、要約するためのリクエスト自体がコンテキストに収まらないEsc 2 回で数メッセージ戻り、要約し直す2.0.31、2.1.85、2.1.284
Compaction failed · conversation could not be reduced below the context limit要約しても上限を下回らなかった大きな出力を含むターンより前へ戻る、または状態を残して /clear ※—
Compaction failed · attached media exceeds size limits添付した画像や PDF が大きすぎる添付したターンより前へ戻る、または /clear ※2.1.47、2.1.70
Compaction interrupted · This may be due to network issues — please try again.通信が途中で切れた接続を確かめて再実行—
Prompt is too long · automatic compaction failed: の後に原因自動 compact が別のエラーで失敗した後ろに書かれたエラーを先に直す2.1.229、2.1.299
Autocompact is thrashing: で始まる行compact は成功したが、すぐ上限まで埋まるのが 3 回続いた大きなファイルを小分けに読む、焦点付き /compact2.1.89、2.1.286
Compaction blocked by PreCompact hook:設定した hook が compact を止めたhook の設定を見直す2.1.105
Not enough messages to compact.要約できる過去の会話がない/clear して、貼り付けや添付を減らして送り直す—
Compaction canceled.Esc で compact を中断したもう一度実行する2.1.133
/compact isn't available in this environment.DISABLE_COMPACT=1 が設定されている環境変数を外す—

※ 二つの Compaction failed · がそれぞれどの条件で出るかは、公式ドキュメントに記載がありません。この 2 行の対処は、公式の「Request too large」(32MB 制限)の手順から類推したものです。

まず claude update:compact の失敗の多くは修正済み

最初にやることは更新です。claude --version で今のバージョンを確かめ、claude update を実行します。Claude Code の変更履歴には、compact が失敗する不具合の修正が数多く載っています。

  • 2.0.31:既存の compact 境界を考慮するようにし、/compact が prompt_too_long で失敗する問題を修正
  • 2.1.85:会話が大きくなりすぎて要約リクエスト自体が入らず、/compact が「context exceeded」で失敗する問題を修正
  • 2.1.113:長いコンテキストのセッションを再開してから compact すると「Extra usage is required for long context requests」で失敗する問題を修正
  • 2.1.217:Amazon Bedrock の Input is too long for requested model. で /compact が失敗する問題を修正
  • 2.1.280:読み込めなかった MCP ツールについての通知が壊れた形で履歴に残り、毎回のターンと /compact が失敗する問題を修正
  • 2.1.282:要約リクエストが拒否されたとき、フォールバックモデルで再試行するように
  • 2.1.284:要約してもまだリクエストが長すぎる場合、直近の会話を少なめに残してもう一度 compact するように
  • 2.1.285:保存済みの履歴にある compact マーカーが壊れていると、compact や再開が失敗する問題を修正
  • 2.1.290:「null is not an object」エラーで compact が失敗する問題と、Mac が実行中にスリープすると自動 compact が「Prompt is too long」で止まる問題を修正
  • 2.1.299:独自の ANTHROPIC_BASE_URL の背後でゲートウェイ固有のモデル名を使うと、200K トークン付近で「Prompt is too long · automatic compaction failed」になる問題を修正

最新版でも同じ行が再現するなら、Claude Code の中から /feedback で報告するか、anthropics/claude-code の GitHub リポジトリに issue を出します。そのときは表示された行をそのまま貼り、バージョンも書き添えます。

「Conversation too long」:Esc 2 回で戻ってから要約し直す

Conversation too long. Press esc twice to go up a few messages and try again. は、会話が大きくなりすぎて、要約を作るためのリクエストそのものがコンテキストに収まらない状態です。2.1.85 で要約リクエストが入らない問題、2.1.284 で要約後もまだ長すぎる問題に手が入り、2.1.301 には直近の会話を削って要約をやり直す処理も入っています。古いバージョンほど出やすいので、まず更新してください。

更新しても出る場合は、メッセージの指示どおり会話を数メッセージ戻します。ここでいう「巻き戻し」は Claude Code の会話の rewind 機能で、git の操作ではありません。

  1. 念のため /export で会話をテキストとして保存しておきます。ファイル名を付けるとそのまま書き出されます。
  2. 入力欄を空にしてから Esc を 2 回押すか、/rewind を実行します。入力欄に文字が残っていると、Esc 2 回はまず入力の消去になります。
  3. 数メッセージ前のメッセージを選び、次のどれかを選びます。
    • Summarize up to here:そこより前を要約し、後ろのメッセージはそのまま残す
    • Summarize from here:そこから後ろを要約する
    • Restore conversation:会話だけをその時点に戻し、コードは今のまま残す
  4. 要約の向きを指定したいときは、矢印キーで Summarize を選んで「add context (optional)」に指示を書いてから Enter を押します。数字キーで選ぶと指示なしで即座に要約されます。
  5. 余裕ができたら、必要に応じて /compact を焦点付きで実行し直します(例:/compact keep only the plan and the diff)。

「Restore code」と、コードと会話の両方を戻す項目はファイルの変更も元に戻します。コードを残したまま会話だけ軽くしたいなら選ばないでください。要約はディスク上のファイルを変えず、元のメッセージもセッションの記録に残ります(Claude Code の checkpointing ドキュメント)。

入力欄を空にして Esc を 2 回押し、巻き戻しメニューで Summarize up to here、Summarize from here、Restore conversation から選ぶ手順。Restore code はファイルの変更も戻すので選ばない

古いバージョンで報告されている回避策

次の方法は、主に修正前のバージョンでユーザーが報告したものです。効果は保証されていないので、上の手順で戻らないときの参考にしてください。

  • claude を一度終了し、同じディレクトリで claude --resume を実行してから /compact
  • /clear → /resume で元の会話を開く → /compact
  • /config で自動 compact をオンに戻す(Reddit の r/ClaudeAI での報告)
  • compact 時に「thinking blocks cannot be modified」が出たら、再開後に /model でモデルを切り替える

GitHub の issue #7530(Conversation too long で /compact が失敗する報告)は v1.0.111 での報告で、2026年4月27日に別の issue の重複として閉じられ、bot は v2.1.85 で修正済みと案内しています。その後も再現したというコメントもあります。

「Compaction failed」の 2 種類:上限超過と添付サイズ

2.1.301 には次の 2 行があります。

  • Compaction failed · conversation could not be reduced below the context limit
  • Compaction failed · attached media exceeds size limits

文面から、前者は要約してもコンテキストの上限を下回れなかった状態、後者は添付した画像や文書のサイズが上限を超えている状態だと読み取れます。どの条件でどちらが出るかは公式ドキュメントに記載がないため、以下の対処は公式の「Request too large」(リクエスト本体の 32MB 制限)の手順から類推したものです。

  • 上限を下回れない場合:直前に巨大なファイルの読み込みやツール出力があったなら、Esc 2 回でそのターンより前に戻ります。戻れる地点がない、または過去の会話がもう不要なら、次の「/clear」の節の手順で状態をファイルに残してから /clear します。
  • 添付が大きすぎる場合:大きな画像や PDF を追加したターンより前に Esc 2 回で戻るか、/clear で新しく始めます。その後は、大きなファイルを貼り付けずにパスで指定し、Claude に分けて読ませます。

添付まわりは改善が続いています。2.1.47 では PDF が多い会話で compact が失敗する問題が修正され、画像と一緒に文書ブロックも外して要約するようになりました。2.1.70 では要約リクエストでも画像が保持されるようになっています。公式ドキュメントでは、32MB を超えた「Request too large」に対して、/compact が溜まった画像と添付を外すと案内しています(Claude Code のエラーリファレンス)。

「automatic compaction failed」は後ろのエラーを先に直す

この行は、コンテキストが上限に達して自動 compact が走ったものの、別のエラーで失敗したことを示します。2.1.229 以降は区切りの後ろに原因が書かれ、それより前は「Prompt is too long」だけでした。公式のエラーリファレンスの Prompt is too long の項は、利用できないモデルや認証の失敗といった後ろのエラーを先に解決するよう求めています。それを直すまでは /compact も同じエラーで失敗します。

対話モードでは、上限に達すると Context limit reached · /compact or /clear to continue と表示されます。自動 compact を /config でオフにしていると、2.1.235 以降はその行に auto-compact is off · /config to turn it on が続きます。オンに戻せば、多くの場合この状態は避けられます。

200K トークン付近で止まる場合は、モデル ID を疑います。LLM ゲートウェイのエイリアスなど、Claude Code が認識できないモデル ID では、コンテキストを 200K と仮定して compact します。公式の対処は次の三つです。

  • 手元の Claude Code より新しいモデルなら claude update
  • ゲートウェイ側の名前なら、modelOverrides で既知のモデル ID と対応付ける
  • 1M コンテキストのモデルなら、モデル ID の末尾に [1m] を付ける

Amazon Bedrock では同じ状態が Input is too long for requested model. と表示され、2.1.217 より前は自動 compact が反応しませんでした。Bedrock 側のエラー全般は AWS の Claude 400 エラー、メッセージ別の対処法にまとめています。

「Autocompact is thrashing」:大きな出力がすぐ埋め直す

Autocompact is thrashing: the context refilled to the limit within 3 turns of the previous compact, 3 times in a row. A file being read or a tool output is likely too large for the context window. Try reading in smaller chunks, or use /clear to start fresh.

compact 自体は成功しています。ところが、読み込んだファイルやツールの出力が大きすぎて、compact から 3 ターン以内に上限まで埋まり、それが 3 回続いたため、Claude Code が自動 compact の再試行を止めた状態です(2.1.89 で追加)。2.1.286 以降は、フォールバックでコンテキストが 1M から 200K に下がったことが原因の場合、そのこともメッセージに書かれます。

Claude Code のトラブルシューティングが示す復旧手順は次のとおりです。

  1. 大きなファイルは、行範囲や関数単位など小分けに読むよう Claude に頼む
  2. 大きな出力を落とすよう焦点を指定して /compact する(例:/compact keep only the plan and the diff)
  3. 大きなファイルを扱う作業をサブエージェントに任せ、別のコンテキストで動かす
  4. それまでの会話が不要なら /clear

/clear の後も繰り返すなら、/context で Messages の行とその上の行を比べます。Messages が一番大きければ、新しい会話でもファイルやツール出力が埋めているので 1〜3 をもう一度行います。それ以外の行の合計の方が大きければ、起動時に読み込むツール定義やメモリファイルが多すぎます。MCP のツール定義や大きな返却結果が原因のときは、Claude Code の MCP でコンテキストが圧迫されるときの切り分けと整理方法が役に立ちます。

失敗ではない 4 つのメッセージ:Esc・hook・設定・会話の短さ

次の 4 つは compact が「失敗した」のではなく、止められたか、やることがなかった場合です。

Compaction canceled.:compact 中に Esc を押しました。もう一度実行すれば済みます。

Not enough messages to compact.:要約できる過去の会話がありません。やり取りが一往復しかない会話や、compact した直後に出ます。コンテキストが満杯なのにこれが出るときは、一つのプロンプトと、Claude Code が毎回送るシステムプロンプト・ツール定義・メモリファイルだけで上限に達しています。公式の案内は、/clear してから貼り付けるテキストや添付を減らして送り直すか、使っていない MCP サーバーを /mcp disable で外し、大きな CLAUDE.md を削ることです。

Compaction blocked by PreCompact hook::PreCompact hook が終了コード 2 を返すか、{"decision":"block"} を出力して compact を止めました(2.1.105 以降)。この行の後ろには、止めた hook のコマンドと理由が続きます。プロジェクトやユーザーの settings.json で PreCompact の設定を見直してください。hook の仕組みは Claude Code の Hooks・Skills・スラッシュコマンドを使い分けるで解説しています。

/compact isn't available in this environment.:環境変数 DISABLE_COMPACT=1 が設定されていて、手動の /compact も自動 compact も無効です。シェルの設定や起動スクリプトからこの変数を外します。

compact が終わらない・遅いときに見るところ

大きな会話の要約には時間がかかります。2.1.283 以降は compact のスピナーに経過時間と、生成中の要約のトークン数が表示されるので、数字が増えていれば処理は進んでいます。2.1.228 以降は、再試行までのカウントダウンや停滞しているときのヒントも compact 中に出ます。また 2.1.260 で、非常に大きなコンテキストを回復するための compact が 10 分で打ち切られる問題が直っています。

止めたいときは Esc を押せば Compaction canceled. になり、会話はそのまま残ります。画面全体が反応しないときは Ctrl+C を押し、それでも駄目ならターミナルを閉じます。同じディレクトリで claude --resume を実行すれば会話を再開でき、会話は失われません。

最後の手段 /clear:その前に作業の状態をファイルに書き出す

巻き戻しや焦点付きの /compact でも戻らないときは、/clear で空のコンテキストから始め直します。compact と違って、会話の要約は引き継がれません。引き継げるのはディスク上のファイルだけです。CLAUDE.md と auto memory は、/clear 後の新しい会話でも最初のメッセージより前に読み込まれます。Claude Code のコンテキストウィンドウのドキュメントによると、compact の後にもディスクから読み込み直されるのは、プロジェクト直下の CLAUDE.md、paths: の付いていないルール、auto memory、プランモードで書いたプランなどです。一方、paths: 付きのルールやサブディレクトリの CLAUDE.md は、他の会話と一緒に要約に吸収されます。

そこで、会話の中にしかない作業の状態を、/clear の前にファイルへ移します。

  1. Claude に、目的・終わった作業・次にやること・決めたことを docs/plan.md のようなファイルに書き出してもらう。compact をまたいで守らせたいルールは、プロジェクト直下の CLAUDE.md に書く
  2. 必要なら /export で会話をテキストとして保存する
  3. /clear を実行する
  4. 新しい会話で、書き出したファイルを読んでから続けるよう指示する

/clear で消える会話の要約や作業の状態と、残る docs/plan.md、CLAUDE.md、auto memory を比べ、ファイルに書き出してから /clear する 4 つの手順を示した図

/clear の前の会話は /resume で開き直せます。同じ Claude Code のプロセス内なら、巻き戻しメニューの先頭に出る previous session の項目からも戻れます。CLAUDE.md と auto memory の役割の分け方は Claude Code Memory ガイドを参照してください。

自動 compact はいつ発動するか:2.1.301 の閾値と設定

自動 compact は、使用率の何%という固定の目安で発動するわけではありません。2026年10月16日時点の既定の閾値は、モデルによって次のように決まります(Claude Code のモデル設定ドキュメント)。

セッションの条件自動 compact が走る目安
ネイティブ 1M コンテキストのモデル(Fable、Sonnet 5 以降、Haiku 5.5、Opus 4.7 以降)約 967K トークン
Sonnet 4.6・Opus 4.6 で拡張コンテキストなし200K トークン
1M モデルで CLAUDE_CODE_DISABLE_1M_CONTEXT=1 を設定200K トークン
Claude Code が認識できないモデル ID(ゲートウェイのエイリアスなど)Claude Code が仮定したウィンドウ(多くは 200K)
上記以外モデルのコンテキスト上限

発動のタイミングや有無は、次の設定で変えられます。

  • /autocompact に 500k のようなサイズか auto を渡すと、自動 compact のウィンドウを 100K〜1M の範囲で設定できます。2.1.288 以降はモデルごとに保存されます。設定ファイルの autoCompactWindow、起動オプションの --autocompact、環境変数 CLAUDE_CODE_AUTO_COMPACT_WINDOW でも指定でき、環境変数は整数のみで最優先です。
  • CLAUDE_AUTOCOMPACT_PCT_OVERRIDE は発動の割合を下げる方向にしか使えません。
  • DISABLE_AUTO_COMPACT=1 か、/config の Auto-compact をオフ(autoCompactEnabled: false)にすると、自動 compact だけが止まり、手動の /compact は使えます。DISABLE_COMPACT=1 は両方を止めます。
  • 2.1.299 から、200K トークン以上の会話を約 54 分放置すると、1 時間のプロンプトキャッシュが切れる前に自動で compact されます(idle compaction)。不要なら settings.json に "idleCompaction": false を書きます。

自動 compact をオフにすると、上限に達した時点で Context limit reached で止まります。オフのまま使うなら、自分で早めに /compact してください。

再発を減らすには、次の習慣が効きます。

  • 大きなファイルは貼り付けず、パスで指定して範囲を絞って読ませる
  • 区切りのよいところで、焦点を指定して /compact する
  • 大量のログや巨大なファイルを読む作業はサブエージェントに任せる
  • ときどき /context で、何がコンテキストを占めているかを確かめる

使用量の確認方法は Claude Code トークン使用量確認・監査で詳しく扱っています。

2.1.301 で再現できたメッセージと、再現できなかったメッセージ

以下は 2026年10月16日に、macOS 上の Claude Code 2.1.301 を非対話モード(claude -p)と Haiku 5.5 で動かした結果です。かかった費用は合計約 $0.01 でした。

操作表示
新しい空のセッションで /compact何も出力されず、エラーもなし
DISABLE_COMPACT=1 を付けて /compact/compact isn't available in this environment.
一往復だけのセッションを再開して /compact成功(約 $0.0052)
同じセッションに、理由を標準エラーへ出して終了コード 2 を返す PreCompact hook を設定して /compactCompaction blocked by PreCompact hook: の後に hook のコマンドと理由
compact に成功した直後に、もう一度 /compactNot enough messages to compact.

Conversation too long、2 種類の Compaction failed ·、Autocompact is thrashing、Compaction interrupted、そして対話画面の赤い「Error compacting conversation」通知は再現していません。これらは非常に大きなセッションや通信の切断が必要なためです。これらの行の意味と対処は、公式ドキュメント、変更履歴、2.1.301 本体に含まれる文言をもとにしています。

よくある質問

compact 自体もトークンを消費しますか?

消費します。compact は、会話をモデルに要約させるリクエストだからです。上の再現では、一往復だけの会話を Haiku 5.5 で compact して約 $0.0052 かかりました。会話が長いほど要約の入力も大きくなります。compact とプロンプトキャッシュの関係や、1 回のターンが急に高く見える理由は、Claude Code のキャッシュミスと token コストで説明しています。

Claude Code の /compact と /clear はどう使い分けますか?

/compact は、それまでの会話を要約して同じ会話を続けます。焦点の指示も付けられます。/clear は空のコンテキストで新しい会話を始め、前の会話は /resume で開き直せます。作業の流れを保ちたいなら /compact、compact が繰り返し失敗する、または話題が完全に変わるなら、状態をファイルに書き出してから /clear を選びます。

参考資料8

本文で参照している外部ページを、登場順に並べています。最終更新日:2026年10月16日。

  1. 1.Claude Code の変更履歴github.com/anthropics/claude-code/blob/main/CHANGELOG.md
  2. 2.anthropics/claude-code の GitHub リポジトリgithub.com/anthropics/claude-code/issues
  3. 3.Claude Code の checkpointing ドキュメントcode.claude.com/docs/en/checkpointing
  4. 4.GitHub の issue #7530(Conversation too long で /compact が失敗する報告)github.com/anthropics/claude-code/issues/7530
  5. 5.Claude Code のエラーリファレンスcode.claude.com/docs/en/errors
  6. 6.Claude Code のトラブルシューティングcode.claude.com/docs/en/troubleshooting
  7. 7.Claude Code のコンテキストウィンドウのドキュメントcode.claude.com/docs/en/context-window
  8. 8.Claude Code のモデル設定ドキュメントcode.claude.com/docs/en/model-config
さらに読む: Claude Code
実際のモデルと送信形式を確かめ、Opus 4.7の不要なサンプリング指定を送信直前に省く図
Claude Code

Claude Code で top_p deprecated? まず Opus 4.7 の新しい request rule を確認

Claude Code の top_p deprecated は、実際に呼び出すモデルへ古いサンプリング指定が送られていないかを調べるのが出発点です。設定ファイルだけでなく、アダプタが組み立てた最後のリクエストから指定を省き、同じ作業が完了するか確認します。

20 分