PaPoo
cover

Compacted while idle, before the prompt cache expired が出たときにまず見ること

この症状は、Claude Code のセッションが何も操作していない間に自動で compaction され、その結果として作業中の文脈が圧縮・失われたように見える、という報告です。該当する issue は #98747 と #102666 です。

自分のケースかどうかを切り分けるなら、まず次の2点です。ひとつでも当てはまれば、少なくとも同じ症状クラスタに入る可能性があります。

  1. 何も /compact を打っていないのに、Compacted while idle, before the prompt cache expired が出た。
  2. まだコンテキスト上限に近づいていない感覚なのに、アイドル中に compaction が走った。

issue #98747 では、2.1.286 から「prompt cache が切れる前に idle session が自動で compact される」と報告されています。投稿者は長時間の作業セッションを複数並行で開いており、そこで積み上げた文脈が静かに圧縮されることを問題視していました。さらに、これには opt-out がなく、警告もないと書かれています。
issue #102666 でも、同じ文言の idle auto-compaction が「context limit からかなり遠い地点」で発生したとされています。そこでは 1M-token のコンテキスト窓に対して、384,502 トークン時点と 674,652 トークン時点で compaction が走ったと報告されています。つまり、少なくともその報告では「限界に達したから」ではなく、アイドル扱いになったこと自体が引き金です。

関連するコメントでは、コミュニティ側から「現在は larger contexts(200k+)でのみ起きているらしい」という発言もあります。ただし、これは issue コメントでの発言であって、手元で再現確認した事実ではありません。実際に確かめられているのは、少なくとも 2.1.286 / 2.1.287 系でこの現象が観測されていることです。

ひとつ気をつけたいのは、見た目は自動 compaction でも、記録上は trigger: "manual" になっている、という指摘があることです。#98747 のコメントでは、/compact を打っていないのに transcript が manual と記録されたとされています。別のコメントでは、PreCompact と PostCompact がどちらも "manual" で発火する、とされています。もしログやフックを見ていて「手動扱いなのはなぜだろう」と感じたら、このズレが関係している可能性があります。

実際に役に立つ出力として、環境情報だけを抜くと次のとおりです。

[env_summary]
OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-10-17T08:55:31+09:00

この症状について、今回の一次情報から言える範囲はここまでです。少なくとも issue 報告上は、ユーザーが明示的に compaction を実行していなくても、アイドル中に自動 compaction が走るケースがあり、しかもそれが作業文脈を壊す、という点が共通しています。
一方で、どういう条件で必ず起きるのか、現行版で回避できるか、設定で止められるかは、今回の材料だけでは断定できません。#98747 のコメントには「setting is coming」とありますが、現時点で確認できるのはその発言までです。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-10-17T08:55:31+09:00

参照した Issue(anthropics/claude-code): #98747, #102666

同じ著者の記事