Claude Codeのauto-compact(自動圧縮)が動かない・止まる——原因別に公式changelogとGitHub Issueで確認した対処法

Claude Codeのauto-compact(自動圧縮)が動かない・止まる——原因別に公式changelogとGitHub Issueで確認した対処法

Claude Codeのauto-compactが100%に達しても発動しない、サードパーティAPI経由だと止まる、長時間セッションで固まる——症状別に公式changelogとGitHub Issueの一次情報から原因を特定し、アップデート・手動/compact・ダウングレードまで対処法をまとめた。

エンジニアのゆとです。

長時間Claude Codeにコードを書かせていると、ステータスバーの端に出ている「context left until auto-compact」の数字がどんどん減っていく。0になったら勝手に会話が圧縮されて続く……はずなのに、減り切ったところで何も起きず、次のメッセージがエラーで弾かれる。あるいは急にターミナルが数秒固まって、フリーズしたのかと思ってCtrl+Cを押しかけて、実は裏でちゃんと動いていた——という経験をした人、たぶん自分だけじゃないと思う。

「auto-compact」で検索すると、GitHubのIssueとRedditの投稿がずらっと並ぶ。海外では相当報告されているのに、日本語でこの現象を整理した記事がほぼ見当たらなかったので、公式changelogとAnthropic自身のGitHub Issueトラッカーを一次情報として、症状別に何が起きているかを整理した。

結論 — まず自分の症状がどれに当てはまるか確認する

症状状態原因今すぐできる対処
ANTHROPIC_BASE_URLをBedrock/Vertex/カスタムゲートウェイに向けているとauto-compactが一切発動しない未修正(v2.1.163時点でOpen)v2.1.161で追加された内部の認証判定がサードパーティ利用者を弾いていた手動で/compactを実行。どうしても自動化したいならv2.1.150へのダウングレードも選択肢
コンテキストが100%に達してもauto-compactが起動せず、セッションがそのまま止まる未修正(長期化しているOpen Issue)明確な原因は未特定。回帰バグとして12バージョン以上前から報告が継続100%になる前に手動で/compactを打つ習慣にする。CLAUDE.mdへの指示は効果なしと報告あり
32MBを超える巨大な会話でauto-compactが何度もリトライを繰り返すv2.1.214で修正済み画像やドキュメントを削れずAPIの32MB上限を超え続け、無限にリトライしていたアップデートすれば1回失敗して明確なメッセージが出るようになる
長時間セッションでときどき数秒間ターミナルが固まる、再開が遅いv2.1.216で修正済みメッセージの正規化処理コストがターン数に対して二次関数的に増加していたアップデートで解消。古いバージョンなら/clearで会話をリセットして回避
圧縮中に画面が止まったように見えて不安になるv2.1.221で改善済み進捗表示がプログレスバーのみで、リトライ中かどうか分からなかったアップデートすればリトライのカウントダウンと停止ヒントが表示される
1Mコンテキスト対応モデルなのに200Kで圧縮がかかる/未知のモデルIDで挙動が変わったv2.1.223で仕様変更CLAUDE_CODE_DISABLE_1M_CONTEXTの適用範囲が全モデルに拡大され、未知のモデルIDにも推定コンテキスト幅が強制されるようになった意図した挙動なら対処不要。以前の挙動に戻したいなら環境変数で復元可能(後述)
code.claude.com
Claude Code Changelog バージョンごとの修正内容が並ぶ公式changelog。今回の技術的な記述はすべてここが一次情報。

自分の症状が分かったら該当の見出しまで飛んで構わない。

ケース1: サードパーティAPI経由だとauto-compactがそもそも発動しない

一番深刻なのがこれ。Bedrock、Vertex AI、Zhipu AI(智谱)、AWS Foundry、あるいは自前のANTHROPIC_BASE_URLゲートウェイ経由でClaude Codeを使っているユーザーから、v2.1.161以降でauto-compactが完全に止まったという報告がまとまっている。

github.com
Auto-compact stopped working for third-party API providers since v2.1.161 Anthropic公式リポジトリのIssue。バイナリの逆解析による根本原因の特定と再現手順まで記載されている、2026年8月時点でOpenのまま。

このIssueが興味深いのは、報告者がClaude Codeのバイナリを実際に逆解析して、原因の関数まで特定していること。v2.1.150時点ではauto-compactの発動判定にGrowthBook(機能フラグ管理の仕組み)の値をそのまま使っていたのが、v2.1.161で「リモート環境かどうか」「ファーストパーティ認証かどうか」というチェックが新たに挟まった。この新しいチェックが、ANTHROPIC_BASE_URLをAnthropicの公式エンドポイント以外に向けている=サードパーティ扱いのユーザーを弾いてしまい、機能フラグが取得できずデフォルト値のfalseにフォールバックしていた、という流れだ。

v2.1.150までは約153kトークンで自動的に圧縮が走っていたのに、v2.1.161以降は何トークン貯めても発動しない。手動の/compactは問題なく機能するので、応急処置としてはこちらを使うしかない。Issue内ではCLAUDE_CODE_ENABLE_AUTO_COMPACTのような環境変数での明示的な制御が提案されているが、あくまで提案段階で、この記事を書いている時点ではまだ実装されていない(実装済みかどうかはclaude --versionを上げたうえでcode.claude.com/docs/en/changelogで確認するのが確実)。

Claude Codeを前のバージョンに戻す方法——ダウングレードと`claude install`、二度と壊れないためのバージョン固定
Claude Codeを前のバージョンに戻す方法——ダウングレードと`claude install`、二度と壊れないためのバージョン固定Claude Codeがアップデート後に不安定になったときの戻し方を解説。claude installコマンドでの特定バージョンへの切り替え、npm/Homebrew別の手順、autoUpdatesChannelとminimumVersionでの固定、ダウングレードすべきか迷ったときの判断基準までまとめた。読む →

どうしても自動圧縮を復活させたい場合、v2.1.150への一時的なダウングレードも技術的には可能。ただし他の修正(後述するケース3・4など)も同時に失うことになるので、まずは手動/compactの運用で様子を見るのが無難だと思う。

ケース2: コンテキストが100%に達してもauto-compactが起動しない

こちらはサードパーティAPIに限らない、より広く報告されているパターン。

github.com
Auto compact does not trigger at 100% context window and Claude Code stops itself on cli Anthropic公式リポジトリのIssue。回帰バグとして報告され、2026年8月時点でOpenのまま。

このIssueでは、コンテキストウィンドウが100%に達してもauto-compactが動かず、Claude Codeが自分から処理を止めてしまう挙動が報告されている。CLAUDE.mdに「コンテキストが減ったら自動で圧縮して」という指示を書き加えても改善しないという報告もあり、これはプロンプトで制御できる領域の話ではなく、内部のトリガー判定そのものの問題であることを示唆している。報告では「過去のバージョンでは動いていた」という回帰(リグレッション)判定がついており、単発のバグではなく一定期間にわたって発生し続けている状態だ。

明確な修正版がchangelogに見当たらない以上、現状でできる対処は「100%になる前に自分で/compactを打つ」運用でカバーすることになる。ステータスバーのcontext left until auto-compactの数字を横目に見ておいて、10%台まで減ってきたら自分から圧縮をかける、というのが実質的な回避策になる。

# 手動でコンテキストを圧縮する
/compact

ケース3: 32MBを超える巨大な会話が無限リトライしていた(修正済み)

ここからは実際にchangelogで修正が確認できているケース。v2.1.214のchangelogにはこうある。

Fixed conversations whose messages alone exceed the API’s 32 MB request limit retrying compaction when no images or documents can be stripped; they now fail once with a clear message

長時間のセッションで画像添付や大きなドキュメントを何度もやり取りしていると、メッセージ本体だけでAPIのリクエスト上限である32MBを超えてしまうことがある。この状態で自動圧縮が走ろうとすると、削れる画像やドキュメントがすでに残っていないため、圧縮を試みては失敗し、また試みては失敗する、というループに陥っていた。v2.1.214以降はこのループが解消され、1回失敗した時点で「なぜ自動圧縮でこのプロンプトを回復できなかったか」を明示するメッセージが出るようになっている。以前は/compactを促すだけの曖昧なエラーだったのが、原因まで説明されるようになった点も地味に助かる変更だ。

ケース4: 長時間セッションで謎の数秒フリーズ(修正済み)

「フリーズはしていないはずなのに、たまに数秒間だけ入力を受け付けなくなる」という症状に心当たりがあるなら、これが該当する可能性が高い。v2.1.216のchangelogから。

Fixed a slowdown in long sessions where message normalization cost grew quadratically with the number of turns, causing multi-second stalls and slow resumes

ターン数(やり取りの往復回数)が増えるほど、メッセージを正規化する処理のコストが線形ではなく二次関数的に増えていた、という不具合。会話が長くなればなるほど、1ターンごとの処理時間がじわじわ伸びていき、セッションを再開するときにも同じ処理が走るため「resumeがやたら遅い」という体感にもつながっていた。v2.1.216で解消済みなので、アップデートしていれば長時間セッションでも処理コストは一定に近い状態を保てる。

Claude Codeが遅いと感じたら見る場所——公式ドキュメントの対処法を「原因の階層」で整理した
Claude Codeが遅いと感じたら見る場所——公式ドキュメントの対処法を「原因の階層」で整理したClaude Codeの応答が遅い・重いと感じたときの切り分け方を解説。/compact・--safe-mode・/heapdumpなど公式の診断コマンドと、WSL特有の検索遅延、コミュニティで報告されている実運用の落とし穴までまとめた。読む →

ケース5: 圧縮中に「止まった」ように見えるだけ(改善済み)

これは厳密にはバグというより、UIの分かりにくさが原因の勘違いに近い。v2.1.221のchangelogから。

Improved compaction progress: the retry countdown and stall hint now appear during compaction instead of only a progress bar

以前のバージョンでは、圧縮処理中に表示されるのはただのプログレスバーだけだった。裏でリトライが走っていても、画面上はプログレスバーが動いているのか止まっているのか判別しづらく、「固まった」と誤解してCtrl+Cを押してしまう人が一定数いたと思われる。v2.1.221以降はリトライのカウントダウンと、処理が滞っていることを示すヒントがその場に表示されるようになっている。見た目の情報が増えただけで実際の圧縮処理自体が速くなったわけではないが、「今何が起きているか分からず不安になる」という体験は大きく改善されている。

1Mコンテキストモデルの罠 — v2.1.223で挙動が変わった

Sonnet系・Opus系の1Mコンテキスト対応モデルを使っている場合、v2.1.223で仕様が変わっている点も押さえておきたい。changelogにはこう書かれている。

Changed CLAUDE_CODE_DISABLE_1M_CONTEXT to hold every Claude model with a native 1M window to 200K via auto-compaction, not just a fixed list; a startup warning now appears when auto-compaction isn’t holding the session to 200K

CLAUDE_CODE_DISABLE_1M_CONTEXTという環境変数自体は以前から存在していたが、これまでは決め打ちのモデルリストにしか適用されていなかった。v2.1.223以降は、ネイティブに1Mコンテキストを持つモデル全般に対して「auto-compactで200Kに抑える」という挙動が一律で適用されるようになった。「1Mコンテキストのはずなのに、体感的にすぐ圧縮がかかる」と感じたら、この環境変数が有効になっていないか確認するといい。

もう一つ、同じバージョンで未知のモデルID(社内プロキシ経由などでClaude Code側が認識していないモデル名を使っている場合)に対する挙動も変わっている。

Changed auto-compact to keep sessions on unrecognized model IDs within the assumed context window instead of letting them grow past it; set CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1 to restore the previous behavior

以前は未知のモデルIDだとコンテキストウィンドウの制限を無視して際限なく会話が伸びていたが、v2.1.223以降は推定されるコンテキスト幅の中に強制的に収めるようになった。カスタムゲートウェイ経由で独自のモデル名を使っている人がこれまでと違う挙動に戸惑ったら、CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1を設定すれば旧挙動に戻せる。

Claude Codeのコンテキスト管理術 — /compact・/clear・CLAUDE.mdで1Mトークンを使い倒す
Claude Codeのコンテキスト管理術 — /compact・/clear・CLAUDE.mdで1Mトークンを使い倒すClaude Codeのコンテキスト管理を徹底解説。/compact・/clear・/rewindの使い分け、CLAUDE.mdでの永続化、サブエージェント分割による長時間作業の維持方法。コンテキスト汚染で品質が落ちる前にやるべき対策まとめ。読む →

「context left until auto-compact」は何を表しているのか

ステータスバーに出るcontext left until auto-compactは、現在のコンテキストウィンドウの使用量と、auto-compactが発動するまでの残り容量を示す表示だ。この数値がゼロに近づいた状態で放置していると、ここまで見てきたケース1・2のような「発動しないバグ」を踏んだ場合にそのまま処理が止まってしまう。バグの有無に関わらず、この数字を定期的に確認する癖をつけておくこと自体が、実質的な保険になる。

自分の状況を確認する手順

パニックになって再実行やCtrl+Cを連打する前に、次の順番で確認するといい。

1. バージョンを確認する

claude --version

ここまでのケースはすべて対応バージョン以降で解消しているか、変更が入っている。まず自分がどのバージョンにいるかを把握する。

2. アップデートする

claude update

npm経由のグローバルインストールならこちらでも上げられる。

npm update -g @anthropic-ai/claude-code
Claude Codeで`claude update`が「成功」と出るのにバージョンが変わらない——反映されないアップデートの正体
Claude Codeで`claude update`が「成功」と出るのにバージョンが変わらない——反映されないアップデートの正体Claude Codeのclaude updateが成功と表示されるのにバージョンが変わらない・アップデートできない原因を、複数インストールの競合・npm権限エラー・自動更新の設定に分けて解説。診断コマンドと対処法つき。読む →

3. サードパーティAPI経由かどうかを確認する

echo $ANTHROPIC_BASE_URL

何か値が設定されていて、かつauto-compactが発動しないなら、ケース1の可能性が高い。設定を外して公式エンドポイント直結で再現するか試すと切り分けになる。

4. それでも解決しない場合

アップデートしても、環境変数を見直しても改善しない場合は、ケース2のように現時点で未修正のバグを踏んでいる可能性がある。同じ症状の報告がないか検索してから、なければ新規に報告するのが確実。

github.com
anthropics/claude-code Issues 同じ症状の報告を検索したり、まだ解決しない場合はここで新規報告できる。

FAQ

auto-compactが動かないとき、手動の/compactだけでどうにかなる?

なる。自動発動が止まっているだけで、手動コマンド自体は正常に機能しているケースがほとんど。長時間セッションになりそうだと分かっている作業では、ステータスバーの残量を見ながら早めに自分で/compactを打つ運用に切り替えるのが実務上は一番手堅い。

CLAUDE_CODE_DISABLE_1M_CONTEXTはどんな時に使うべき?

1Mコンテキストを使い切る前に品質が落ちる体感がある場合、あえて200Kで区切って圧縮を挟んだほうが安定することがある。逆に長大なコードベース全体を一度に読ませたい場合は無効のままにしておくべきで、万能な設定ではない。

ダウングレードは推奨される対処法?

積極的には勧めない。ケース1のサードパーティAPI問題を回避できる代わりに、ケース3・4・5で直っている改善もまとめて失うことになる。まずは手動/compactの運用でしのぎつつ、changelogを定期的にチェックして該当の修正が入ったタイミングでアップデートするのが良いと思う。

Claude Codeが「process exited with code」で落ちる原因を全部洗い出した
Claude Codeが「process exited with code」で落ちる原因を全部洗い出したClaude Codeの「process exited with code 1/3/127/137」エラーを原因別に整理。認証競合・Windows特有のクラッシュ・OOM・新設定sandbox.network.strictAllowlistまで、切り分け手順つきで解説する。読む →

まとめ

「auto-compactが動かない」という一言でも、中身は最低5パターンに分かれている。サードパーティAPI経由なら内部の認証判定が原因で発動自体がブロックされている可能性が高いし、100%到達後に止まるなら現状まだ未修正の回帰バグを踏んでいる。一方で巨大な会話での無限リトライや長時間セッションでの謎フリーズは、すでにchangelog上で直っている。

自分の症状がどれに当てはまるかをclaude --versionとここまでの表で突き合わせてから対処すれば、意味もなくダウングレードしたり、原因不明のまま/compactを連打したりする無駄を減らせるはずだ。

← 記事一覧に戻る