/autocompact と CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDE で自動コンパクトを早める
Claude Code が会話を自動要約するタイミングを変える方法。/autocompact と autoCompactWindow、--autocompact、CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDE の違いと優先順位、autoCompactEnabled での無効化を解説します。
長いセッションで「気づいたら会話が要約されていて、直前の指示が薄れた」という経験は多いはずです。逆に、コンテキストが埋まりきる前に早めに要約させて、性能の低下を避けたい場面もあります。
結論として、自動コンパクトが走る「ウィンドウの大きさ」は /autocompact、--autocompact フラグ、CLAUDE_CODE_AUTO_COMPACT_WINDOW の 3 か所で設定でき、そのウィンドウの何 % で走らせるかは CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDE で早められます。完全に止めるなら autoCompactEnabled: false です。
KEY POINT
この記事で分かること
- 既定で自動コンパクトが走るタイミング(モデルによって違う)
- ウィンドウを変える 3 つの手段と、その優先順位
- しきい値を「早める」専用の環境変数と、無効化の方法
既定のタイミング
ウィンドウを設定していない場合、Claude Code は会話が モデルのコンテキスト上限に達したとき にコンパクトします。ただし例外があります。
| セッション | コンパクトの境界 |
|---|---|
| ネイティブ 1M ウィンドウのモデル(Anthropic API 上の Sonnet 5、Fable、Opus 4.7 以降) | 上限より手前、既定で約 967K トークン |
| 200K で動くモデル(Sonnet 4.6 / Opus 4.6 の拡張コンテキストなし、Bedrock などの Opus 4.8 / 5) | 200K の境界 |
CLAUDE_CODE_DISABLE_1M_CONTEXT=1 を設定した 1M モデル | 200K の境界 |
| クラウドセッション | 上限に近づいた時点 |
| LLM ゲートウェイの別名など Claude Code が知らないモデル ID | Claude Code が仮定するウィンドウ |
用語解説
コンパクト(compaction): コンテキストが埋まったときに会話履歴を要約して置き換える処理です。v2.1.198 以降、要約のリクエストはセッションの拡張思考の設定を引き継ぎます。手動で行うのが /compact、自動で行うのが auto-compact です。
ウィンドウの大きさを変える
「どこまで埋まったらコンパクトするか」のウィンドウは、3 つの場所で設定できます。
| 手段 | 効く範囲 | 備考 |
|---|---|---|
/autocompact 500k | このセッションと以後 | ユーザー設定の autoCompactWindow に保存される。管理設定など上位の層が同じキーを設定していると、値は保存されるがセッションはその層のウィンドウのまま |
claude --autocompact 500k | その起動だけ | 保存設定を変えずに上書き。管理設定にも先取りされない |
CLAUDE_CODE_AUTO_COMPACT_WINDOW=500000 | 設定されている間 | コマンド・フラグ・設定のすべてより優先。/autocompact は上書き中である旨を表示する |
コマンドとフラグが受け付ける値は 100K〜1M トークンで、次のどの形でも書けます。
- そのままのトークン数:
200000 k/M付き:500k、1M- 100〜1000 の数だけ:
200は 200,000 の意味
環境変数はそのままのトークン数だけを受け付けます。どの方法でも、モデルのコンテキストウィンドウを超える値はそこで頭打ちになります。/autocompact auto または claude --autocompact auto でモデルに合わせた既定に戻せます。
{
"autoCompactWindow": 500000
}
しきい値を早める・止める
ウィンドウそのものではなく「ウィンドウの何 % で走らせるか」を変えるのが CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDE です。変数名の先頭は CLAUDE_CODE_ で、CLAUDE_AUTOCOMPACT_PCT_OVERRIDE(claude_autocompact_pct_override)のように CLAUDE_ だけの綴りでは認識されません。1〜100 のパーセントを指定し、50 なら半分埋まった時点でコンパクトします。この変数は 早める方向にしか効かず、既定より大きい値は無視されます。メインの会話とサブエージェントの両方に適用され、「上限より手前でコンパクトする」セッションだけが対象です。
{
"env": {
"CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDE": "60"
}
}
自動コンパクトを完全に止めるには autoCompactEnabled を false にします。
{
"autoCompactEnabled": false
}
止めるなら手動の /compact を習慣にする
自動コンパクトを止めても、コンテキストが埋まれば会話は続けられません。止める場合は、区切りのよいところで /compact 認証まわりの変更に集中して のように焦点を指定して手動で要約するか、/clear で切り替える運用が前提になります。
コンパクト後に何が残り、何が消えるかは コンテキスト管理:/compact・/clear の使い分け で整理しています。コストへの影響は 料金と使用量の確認方法 を参照してください。
まとめ
- 既定では会話がモデルの上限に達したときにコンパクトする。1M モデルは約 967K、200K モデルは 200K が境界
- ウィンドウは
/autocompact(保存)、--autocompact(1 回)、CLAUDE_CODE_AUTO_COMPACT_WINDOW(最優先)で変える。100K〜1M CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDEはウィンドウの何 % で走らせるかを指定し、早める方向にしか効かないautoCompactEnabled: falseで自動コンパクトを無効化。手動の/compactは使える- 止めるなら焦点付きの
/compactと/clearを習慣にする
よくある質問
- 自動コンパクトは既定でいつ実行されますか?
- ウィンドウを設定していなければ、会話がモデルのコンテキスト上限に達したときです。ネイティブ 1M のモデルは約 967K トークンで、200K で動くモデルは 200K の境界で実行されます。
- /autocompact に指定できる値は?
- 100K〜1M トークンです。200000、500k、1M のほか、100〜1000 の数だけ書くと千単位として扱われます。
- 自動コンパクトを完全に止められますか?
- settings.json の autoCompactEnabled を false にします。手動の /compact は引き続き使えます。
- CLAUDE_AUTOCOMPACT_PCT_OVERRIDE(claude_autocompact_pct_override)を設定しても効きません。
- 変数名が違います。正しい名前は CLAUDE_CODE_AUTOCOMPACT_PCT_OVERRIDE で、CLAUDE_ だけの綴りは認識されません。値は 1〜100 のパーセントで、50 ならウィンドウが半分埋まった時点でコンパクトします。早める方向にしか効かず、既定より大きい値は無視されます。
読者からの質問と回答
Q. アイドル時の自動コンパクトが走りません。20 万トークンを超えたセッションを 70 分放置しても要約されず、デスクトップアプリの Code タブでも効きません。条件は何ですか。
アイドル時の自動コンパクトは、公式の設定リファレンスが 5 つの条件をすべて満たす会話 に限って既定で有効としています。トークン数と放置時間はそのうちの 2 つなので、両方を満たしていても他の条件で外れることがあります。
| 条件 | 内容 |
|---|---|
| セッション | 対話的な ターミナルセッション であること |
| プロンプトキャッシュ | 会話が 1 時間の TTL に乗っていること |
| 機能フラグ | Claude Code が Anthropic から機能フラグを取得できること |
| サイズ | コンテキストがしきい値(既定 20 万トークン)に達していること |
| アイドル時間 | 最後のリクエストから約 54 分が経過し、その時点でコンピューターが起動している こと |
デスクトップアプリの Code タブで効かないのは、1 つ目の条件のためです。公式ドキュメントが挙げているのは「interactive terminal session」で、それ以外のセッション種別については書かれていません。
見落としやすいのが最後の条件です。54 分の間にマシンがスリープしていると、起きた時点では走りません。
コンパクトが実際に走った会話には Compacted while idle, before the prompt cache expired と表示されるので、走ったかどうかはこの表示で判別できます。
しきい値と停止は次のとおりです。
{
"idleCompaction": false
}
# しきい値を 15 万トークンに下げる
export CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS=150000
CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS は正の整数のみを受け付け、それ以外は無視されます。100000 を下回る値は下限の 100000 に引き上げられます。idleCompaction と環境変数はどちらも Claude Code v2.1.290 以降が必要です。それより前のバージョンでは autoCompactEnabled を false にすると止まります。自動コンパクト自体を切ると、アイドル時のコンパクトも一緒に切れます。
v2.1.302 以降は /config に Idle compaction の行が追加され、画面から切り替えられます。
自動コンパクトの窓そのものを変える設定は auto-compact が走る位置を /autocompact と環境変数で変える方法 にまとめてあります。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。