APIキーを使っています。この機能で費用は節約できますか?
おそらく発動しない。APIキーのプロンプトキャッシュの既定の寿命は5分で、アイドル圧縮はタイマーを作動させるのに1時間のTTLを必要とする。有効にするには"promptCacheTtl": "1h"を自分で設定する必要があるが、1時間キャッシュの書き込みは基本入力価格の2倍、5分は1.25倍なので、短時間の利用ではかえって損になりうる。節約できていると決めつけず、まずclaude -p "Reply with the single word: ok" --output-format jsonを実行し、書き込みがどちらのTTLに入るかを確認する。
長いセッションを放置して食事に行くことが多いのですが、オフにすべきですか?
作業の性質による。ファイル中心の作業(コーディング、保守)では、要約と再読み込みされるファイルで大事な部分の多くは持ち越せるので、オンのままでも問題は小さい。作業そのものが会話の中にある場合(設計の議論、正確な指示、ファイルがコンテキストに残ることに依存するオーケストレーターの流れ)は、オフにするかしきい値を上げるのがよい。これはnarditの見解であり計測ではない。もう一つの保険は、残したい内容をプロジェクトルートのCLAUDE.md、パス指定のないルール、compactソース向けのSessionStartフックに入れておくことだ。会話の中だけで述べた決定は、要約で言い換えられてしまう。
実際に動いたのか、気のせいなのか、どう確認しますか?
セッションに戻ったとき、「Compacted while idle, before the prompt cache expired」という通知があるかを見る。/usageの「Prompt cache (main)」の行には、ヒット率、ミス数、キャッシュがまだ温かいか、直近のミスの推定原因が表示される。OpenTelemetryを有効にしているなら、claude_code.api_requestイベントのうちquery_sourceがcompactでcache_read_tokensが大きいものを探す。戻って最初のメッセージで1時間キャッシュの大きな書き込みが出ていれば、時間枠を逃した可能性があるが、モデルの切り替えや前半部分の変更でも同じ特徴が出るので、先にそちらを除外する。
エンジニアではなく、チームのAIツール費用を見ているだけです。何に注意すべきですか?
まず、チームがサブスクリプションプランなのかAPIキーなのかを確認する。サブスクリプションなら、節約されるのは金額ではなくクォータで、Anthropicはクォータがキャッシュの読み書きをどう数えるかを公表していないので、ドルでの見積もりは難しい。APIキーなら、キャッシュの既定の寿命は5分で、この機能はほぼ作動しないため、期待する節約には含めないこと。また、既定で有効な挙動の変更なので、誰かが「以前伝えた細部をAIが忘れた」と言っているなら、最初に確認する価値のある原因の一つだ。
2026年10月14日にリリースされたClaude Code v2.1.299は、リリースノートに新しい挙動を加えた。ターミナルで200Kトークンを超える会話が約54分放置されると、1時間のプロンプトキャッシュが切れる前に自動で圧縮され、戻ってきたときの最初のメッセージで会話全体を再処理せずに済む。10月16日のv2.1.302では/configに「Idle compaction」のスイッチが追加され、圧縮後に表示される通知にオフにする方法が示されるようになった。既定で有効で、請求額とコンテキストの中身の両方に影響する変更だ。
狙いはプロンプトキャッシュが切れる前に圧縮することだ。そうすれば要約リクエストは、まだキャッシュにある前半部分を安いキャッシュ読み取り料金で読み、コールドスタートで会話全体を書き直さずに済む。54という数字について、Developers DigestはGitHubのissueにあるコメント投稿者のバイナリ解析を引いている。タイマーはキャッシュの寿命が1時間のときだけ作動し、期限の約90%の時点で発火する。60分の90%が54分だ。これはコミュニティの報告で公式の説明ではなく、同記事の著者もプランごとのキャッシュ挙動を一つずつ検証してはいない。
max.nardit.comの記事は、設定リファレンスとプロンプトキャッシュのドキュメントを引きつつ、実際に発動する条件を整理している。
claude -pとAgent SDKでは発動しない。"promptCacheTtl": "1h"を自分で設定しない限り、通常は発動しない。1時間キャッシュの書き込みは基本入力価格の2倍で、5分は1.25倍。ドキュメントは、短時間の利用ではかえって損になりうると警告している。DISABLE_GROWTHBOOK=1やCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICを設定するとオフになる。CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENSで調整できる。100,000未満の値は100,000に引き上げられる。公式の価格では、キャッシュ読み取りは基本入力価格の0.1倍(Opus 5.5とSonnet 5.5は0.05倍)、5分書き込みは1.25倍、1時間書き込みは2倍だ。nardit記事の試算(著者の計算でドキュメントではない)では、Opus 5.5上の200Kトークンの会話で、アイドル圧縮の読み取りは基本入力の約10K単位、コールドで戻ると約400K単位の書き直しになり、前半部分だけで約40倍の差が出る。ただし実際の節約はこれより小さい。要約の出力トークンと、コンテキストの再構築(要約、指示、復元されるファイルとスキル)の費用もかかるからだ。
Developers DigestはGitHub issueのあるユーザーのデータを紹介している。APIキー上で約740Kトークンのセッションは、コールドキャッシュからの復帰1回が約$9.25、ウォームなうちの圧縮が約$0.19で、142回の圧縮後の内容は元の約20%だった。これは1人のユーザーの計測であり、ベンチマークではない。サブスクリプションで節約されるのはドルではなくクォータで、Anthropicはクォータがキャッシュ読み取りと書き込みをどう重み付けするかを公表していない。
narditがまとめたドキュメントの内容によると、要約には、リクエストと意図、主要な技術概念、調べた・変更したファイル(重要な断片を含む)、エラーと修正、保留中のタスク、現在の作業が残る。ツールの完全な出力と途中の推論は作業用コンテキストから外れるが、ディスク上のセッション記録は残る。圧縮後に再読み込みされるのは、プロジェクトルートのCLAUDE.md、パス指定のないルールとauto memory、最近変更した最大5ファイル(5,000トークンを超えるファイルはパスのみ)、呼び出したスキルの本文(1つあたり上限5,000トークン、合計25,000で古いものから外れる)、compactソースに一致するSessionStartフックの出力だ。paths:のfrontmatterを持つルールとネストしたCLAUDE.mdは自動では再読み込みされず、Claudeが一致するファイルに触れたときに戻る。バックグラウンドコマンドは圧縮中も動き続ける。
コミュニティの不満は、細部が黙って失われることに集中している。あるバグ報告では、要約が正確な指示、判断の理由、進行中の状態を警告なしに置き換えたという。オーケストレーターのワークフローを動かしている別のユーザーは、その後ファイルが再読み込みされず、プロセスが壊れたと述べている。
"idleCompaction": falseはアイドル圧縮だけをオフにし、プロジェクトの.claude/settings.local.jsonを含む任意のsettingsファイルで使える。v2.1.302からは/configでも切り替えられる。DISABLE_AUTO_COMPACT=1は通常の自動圧縮もオフにし、手動の/compactだけが残る。CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENSを上げると、機能は有効なまま、より大きなセッションにだけ作用する。/usageの「Prompt cache (main)」の行でヒット率が見られる。OpenTelemetryを有効にしているなら、query_sourceがcompactのapi_requestイベントを探す。実行中のバックグラウンドコマンドや保留中のスケジュール起動がアイドルタイマーを延ばすか、アイドル圧縮後のclaude --resumeがどう動くかは、ドキュメントに書かれていない。リリースノートは両方の設定にv2.1.290以降が必要としているが、機能自体はv2.1.299で現れており、narditは2.1.299を最低バージョンとみなすよう勧めている。また、Developers Digestは、あるGitHub issueがこの挙動を2.1.286の黙示的な既定としていると書いており、早くから遭遇した人がいる理由になりうるが、これは報告にとどまり未検証だ。