Codexのコンテキスト圧縮|/compactと自動圧縮の使い分け

Codexのコンテキスト圧縮|/compactと自動圧縮の使い分け

Codex に長い作業を任せると会話が伸び、ある時点で過去のやり取りが急に要約へ置き換わる。これがコンテキスト圧縮で、文脈窓が一杯になる前に履歴を畳み、作業を止めずに続けるための仕組みだ。呼び出しには手動としきい値による自動の二通りがあり、作業の連続性とトークン消費を直接左右する。本記事では、その仕組みと呼び出し方、しきい値の設定、圧縮前の文脈の節約を公式情報に沿って整理する。


結論powered by Claude

コンテキスト圧縮(compaction)は、長くなった会話の履歴を要約に置き換えて、文脈窓の空きを取り戻す機能だ。Codex CLI のスラッシュコマンドの説明でも、以前のやり取りを簡潔な要約に置き換え、重要な詳細を保ちながら文脈を解放する、と整理されている。過去の全文を抱え続けるのではなく、要点だけを残して先へ進むのが基本の発想で、長い作業ほど効いてくる(出典: https://developers.openai.com/codex/cli/slash-commands )。

呼び出し方は二つある。手元で区切りの良いところで畳みたいなら /compact を手動で打つ。何もしなくても、トークン量が一定のしきい値を超えると自動圧縮(auto-compaction)が走り、履歴が自動的に畳まれる。このしきい値は model_auto_compact_token_limit で調整でき、未設定ならモデル既定値が使われる(出典: https://developers.openai.com/codex/config-reference )。自分で区切るか、しきい値に任せるかの二択だと捉えると分かりやすい。

圧縮は便利だが、要約である以上は細部が失われる。だからこそ、/status で現在のトークン使用量を確認し、話題が変わるなら /compact を待たずに /new で会話を切る、といったこまめな文脈管理が効く。長時間タスクを任せる場面が増えた今、圧縮の挙動を知っているかどうかが、途中で文脈を失わずに走り切れるかを分ける(出典: https://developers.openai.com/codex/cli/slash-commands )。

目次 (10)

コンテキスト圧縮とは — 会話履歴を要約に畳む仕組み

Codex との対話は、過去の指示・コードの差分・ツールの実行結果などをすべて文脈(コンテキスト)として積み上げながら進む。モデルが一度に扱えるトークン数(文脈窓)には上限があるため、会話が長引くほど空きは減り、やがて新しい入力を受け付けられなくなる。これを避けるのがコンテキスト圧縮だ。OpenAI の API ドキュメントは compaction を「長時間のやり取りを支えるために、次のターンに必要な状態を保ちながら文脈サイズを削減する」機能と説明している(出典: https://developers.openai.com/api/docs/guides/compaction )。具体的には、それまでのやり取りを一つの簡潔な要約へ畳み、元の長い履歴と置き換える。Codex CLI の説明でも、以前のターンを簡潔な要約に置き換えて文脈を解放し、重要な詳細は保つ、と整理されている(出典: https://developers.openai.com/codex/cli/slash-commands )。圧縮後の会話は、要約という形で過去を引き継いだ状態から再開する。

なぜ今コンテキスト圧縮なのか — 長時間タスクで効く

2026年6月3日に「新しい Codex」で Goal Mode が正式版となり、目標を渡して長時間まとめて走らせる使い方が広がった(出典: https://openai.com/codex/ )。エージェントが数十分から数時間動くほど、途中で積み上がる文脈は大きくなり、圧縮が走る回数も増える。どの時点で何が畳まれるかを知らないまま任せると、序盤で決めた前提を見失ったまま作業が進みかねない。だからこそ今、圧縮の挙動を押さえておく価値がある。

手動圧縮 /compact と状況確認 /status

圧縮を自分の意思で起こすのが /compact だ。Codex CLI のスラッシュコマンドの説明では、/compact でトランスクリプトを軽く保つとされ、実行すると以前のやり取りが簡潔な要約に置き換わり、重要な詳細を保ったまま文脈が解放される(出典: https://developers.openai.com/codex/cli/slash-commands )。区切りの良いところ——一つの機能を実装し終えた直後など——で手動で畳んでおくと、続く作業に使える余地を確保できる。圧縮するかどうかを判断するには、まず今どれだけ文脈を使っているかを知る必要がある。それを見るのが /status で、公式の説明によれば、有効なモデル・承認ポリシー・書き込み可能なルート、そして現在のトークン使用量を出力で確認できる(出典: https://developers.openai.com/codex/cli/slash-commands )。使用量が上限に近づいてきたら、自動に任せる前に手動で畳むか、会話を切り替えるかを選べる。

話題が変わるなら /new で区切る

圧縮はあくまで「同じ会話を続けるための要約」であり、扱う題材そのものを変えたいときには向かない。別のタスクに移るなら、/new で新しい会話を始めるほうが素直だ。公式の説明では、/new は同じ CLI セッションのまま新しい会話を開始し、ターミナルを離れずにタスクを切り替えられるとされている(出典: https://developers.openai.com/codex/cli/slash-commands )。前の話題を引きずらないぶん、文脈はまっさらから積み直せる。

自動圧縮としきい値の設定

手動で畳まなくても、トークン量が一定の水準を超えると Codex は自分で履歴を圧縮する。この自動圧縮を制御するのが model_auto_compact_token_limit で、公式リファレンスは「自動的な履歴圧縮を起動させるトークン閾値(未設定ならモデル既定値を使用)」と定義している(出典: https://developers.openai.com/codex/config-reference )。あわせて、モデルが扱える文脈窓そのものを示す model_context_window(有効なモデルで利用可能な文脈窓のトークン数)も用意されており、文脈の総量としきい値の両面から挙動を調整できる。公式のサンプル設定では、model_auto_compact_token_limit = 64000model_context_window = 128000 のように、トークン数を直接指定する例が示されている(出典: https://developers.openai.com/codex/config-sample )。値を小さくすれば早めにこまめに畳み、大きくすれば長く保持してから一気に畳む、という方向の違いになる。

config.toml でしきい値を調整する手順

既定の挙動を変えたいときは、設定ファイルでしきい値を上書きする。

  1. ~/.codex/config.toml を開く(なければ作成する)。
  2. model_auto_compact_token_limit に起動させたいトークン数を書く。早めに畳みたいなら小さめ、長く保ちたいなら大きめにする。
  3. 必要なら model_context_window で扱う文脈窓のトークン数を指定する。未設定ならモデル既定が使われる。
  4. 圧縮時の要約の作らせ方まで変えたい場合は compact_prompt で圧縮プロンプトを上書きできる(出典: https://developers.openai.com/codex/config-reference )。

設定後は新しい会話から反映されるため、長いセッションの途中ではなく、区切りの良いタイミングで見直すとよい。

圧縮で失われやすいものと、頼りすぎない設計

圧縮は魔法ではない。要約に畳む以上、元の発言やコードの細部は必ず一部が落ちる。API の compaction では、引き継がれる圧縮アイテムは不透明で人が読むことを意図していないとされ、内部状態を効率よく持ち越す代わりに、人が後から中身を細かく確認できるものではない(出典: https://developers.openai.com/api/docs/guides/compaction )。要約に残らなかった微妙なニュアンスや、序盤で決めた制約が薄れることもある。だからこそ、圧縮に全面的に寄りかからない設計が要る。重要な前提や決定はチャット履歴ではなくファイルに書き出しておく、指示は一度に詰め込みすぎず適度な粒度に分ける、題材が変わったら /new で区切る——こうした習慣が、圧縮で文脈を失うリスクを構造的に下げる。

圧縮前にできる文脈の節約

そもそも文脈を膨らませすぎなければ、圧縮の頻度自体を下げられる。プロジェクトの恒常的な前提やコーディング規約は、毎回会話で説明するのではなく AGENTS.md に書いておけば、モデルが参照しつつ会話の消費を抑えられる(出典: https://github.com/openai/codex )。指示は一度に広げすぎず、対象ファイルや範囲を絞って渡すと、ツールの実行結果で文脈が一気に埋まるのを避けやすい。圧縮は最後の安全弁と捉え、その手前で文脈を軽く保つほうが結果的に速く安く済む。

長いセッションを乱さない進め方

圧縮の仕組みが分かれば、長いセッションでも文脈を乱しにくい進め方が組める。日々の作業では、次の順序を目安にすると圧縮に振り回されにくい。

  1. 着手前に、恒常的な前提や規約を AGENTS.md にまとめておく。会話で毎回説明せずに済み、消費を抑えられる(出典: https://github.com/openai/codex )。
  2. 作業中はときどき /status でトークン使用量を見て、文脈の残りを把握する(出典: https://developers.openai.com/codex/cli/slash-commands )。
  3. 一つの機能を実装し終えるなど区切りが付いたら、自動圧縮を待たずに /compact で手動で畳む。
  4. 扱う題材そのものが変わったら、/compact ではなく /new で会話を切り替える。
  5. 早めに畳みたい・長く保ちたいといった好みがあるなら、model_auto_compact_token_limit でしきい値を調整しておく(出典: https://developers.openai.com/codex/config-reference )。

いずれも特別な準備は要らず、コマンドと設定を一つずつ覚えれば回り始める。圧縮を避けるのではなく、起きるタイミングを自分で選ぶ感覚で付き合うのが現実的だ。

まとめ — 圧縮を「設定」として捉える

コンテキスト圧縮は、長い会話を要約に畳んで文脈窓の空きを取り戻し、作業を止めずに続けるための仕組みだ。自分のタイミングで畳むなら /compact、今の使用量を見るなら /status、題材を変えるなら /new、そして自動で畳む水準は model_auto_compact_token_limit、扱う文脈窓は model_context_window で調整する。圧縮は要約である以上、細部は失われるため、重要な前提はファイルに残し、タスクの粒度を整え、AGENTS.md で恒常的な文脈を節約しておくと、圧縮に頼りきらずに済む。長時間タスクを任せる場面が増えた今こそ、圧縮を「起きてしまうこと」ではなく「あらかじめ決めておく設定」として捉えることが、途中で文脈を失わずに走り切る近道になる。設定キーの最新仕様は openai/codex の公式ドキュメントとリポジトリで確認しておくとよい(出典: https://github.com/openai/codex )。

参考になったら ♡
Codexer Navi 編集部
@codexer_navi

Anthropic の Claude / Claude Code を中心に、日本のエンジニア向けに最新動向と実務 を毎日発信。 運営方針 は メディアについて をご覧ください。