Claude Codeの公式Changelogをリリースから最速で翻訳・解説しています。
v2.1.299 から、20 万トークン以上の会話を約 54 分放置すると、ターミナル版の Claude Code が自動で compact するようになりました。1 時間のプロンプトキャッシュが切れる前に要約しておき、戻ってきた次の 1 通で会話全体を再処理させない仕組みです。
- idle compaction - 放置した長い会話を、キャッシュが切れる前に要約する (v2.1.299)
-
MCP の allow ルール -
mcp__aがa__bという名前のサーバーを許可しなくなった (v2.1.299) - Write の文字コード - Shift-JIS のファイルを UTF-8 に変換せず、書き込みを拒否する (v2.1.299)
-
fork subagent -
claude -pと Agent SDK でも既定で有効になった (v2.1.302)
idle compaction が発動する条件と止め方
v2.1.299 で、ターミナル版の Claude Code に idle compaction が入りました。
Added idle compaction in the terminal: a 200K+ token conversation left idle for about 54 minutes is compacted before its one-hour prompt cache expires, so your next message doesn't reprocess it all
条件は、会話が 20 万トークン以上あることと、入力が無いまま約 54 分経つこと。プロンプトキャッシュの寿命 1 時間より 6 分ほど早く Claude Code が要約を作るので、戻ってきた最初のメッセージで 20 万トークン分を再処理せずに済みます。引き換えに、戻った時点の会話は compact 後の要約に置き換わっています。changelog が対象に挙げているのはターミナル版だけで、VS Code やデスクトップアプリには触れていません。
settings.json に次のキーを書くと止まります。
{
"idleCompaction": false
}
発動の下限の 20 万トークンは、環境変数 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS で変えられます。v2.1.302 では /config に Idle compaction の行が加わり、画面からもオンとオフを切り替えられるようになりました。idle compaction の後に出る通知も、止め方を書く形に変わっています。
v2.1.300 では、OpenTelemetry の api_request イベントに cache_creation_5m_tokens と cache_creation_1h_tokens が加わりました。キャッシュ書き込みのトークン数を、寿命 5 分のものと 1 時間のものに分けて数えられます。
compact の周辺で直った挙動
compact が絡む修正は、4 版のどれにも入っていました。
| 版 | 場面 | 変わったこと |
|---|---|---|
| v2.1.299 | カスタム ANTHROPIC_BASE_URL の先で gateway 固有のモデル名を使う |
20 万トークン付近で "Prompt is too long · automatic compaction failed" になって止まる不具合が直った |
| v2.1.300 | headless / Agent SDK のセッションを resume する | 途中で切れた返答の直後に compact した会話で、残したはずのメッセージや要約が消える不具合が直った |
| v2.1.301 | コンテキストウィンドウの小さいモデルに切り替える | 収まらない会話は、切り替え前のモデルが先に要約する。この要約に確認なしで usage credits を使うケースも直った |
| v2.1.301 | 返答のモデル名がリクエストと違う LLM gateway を通す | 選んでいないモデルで compact が繰り返される不具合が直った |
| v2.1.302 | compact 中にターンを止める | "Prompt is too long" エラーが出なくなった |
| v2.1.302 | auto mode を server-side classifier で使う | 安全チェックに収まらない長さの会話を、Claude Code が compact するようになった。以前はチェック対象のツール呼び出しがすべて拒否になっていた |
既存の設定と食い違う変更
v2.1.299 から、MCP の allow ルールは名前を書いたサーバーにしか効きません。mcp__a は、a__b や a_ という名前のサーバーを許可しなくなりました。
原文が示す書き方は mcp__<server>__* で、<server> の部分は正規化後のサーバー名全体です。agent 定義の tools: も同じ扱いになり、名前に __ を含むサーバーは mcp__<whole name>__* で指定する仕様です。名前に __ を含むサーバーへの deny / ask ルールが効いていなかった問題も、同じ v2.1.299 で直りました。
v2.1.299 の Write は、Shift-JIS のファイルを UTF-8 に変換して上書きしなくなりました。それまでは Shift-JIS・Windows-1252・GBK・UTF-16BE のファイルを黙って変換していて、今は書き込み自体を拒否します。BOM を落としていた問題と、Read が BOM 付き UTF-16LE を文字化けさせていた問題も、同じ版で直っています。
- fork subagent (
subagent_type: "fork") が、claude -p・Agent SDK・デスクトップアプリ・VS Code でも既定で有効になった (v2.1.302)。ターミナルでは以前から有効で、CLAUDE_CODE_FORK_SUBAGENT=0で無効にできる - permission mode を指定していない
claude -pと Agent SDK のセッションは、サードパーティ provider 上、telemetry オフ、新規インストール直後のいずれでもdefaultで始まる (v2.1.302)。--permission-mode autoを付けたセッションは auto のまま -
claude remote-controlから、効果の無かった--sandboxと--no-sandboxが消え、渡すとエラーで終了する (v2.1.300)。サンドボックスの有効化は settings のsandbox.enabledが受け持つ
前回から続く hook の締め直し
4 版の changelog は合計 392 項目あり、そのうち 270 件が不具合の修正でした。hook が許可した操作や hook の戻り値を Claude Code が検証せずに通していた箇所は、前回の v2.1.290〜v2.1.296 に続いて今回も直っています。v2.1.299 では plan mode が PreToolUse hook の許可した書き込みをそのまま実行していた不具合が直り、v2.1.300 では hook が返す updatedInput も、Claude Code が Claude 自身の入力と同じ基準で検証するようになりました。
前回: Claude Code v2.1.290〜v2.1.296|hook の素通りが塞がる|週刊Changelog解説