Automatická kompaktace a kontextové okno Codex CLI přes předplatné
Vytvořeno: 28.7.2026 | Aktualizováno: 28.07.2026 10:55
Codex CLI při dlouhé práci automaticky zkracuje historii konverzace. Tento zápisek vychází z řízených testů přes ChatGPT OAuth a srovnává dostupný nezkrácený kontext v používaných coding agentech.
Rozsah zjištění: Článek se týká výhradně používání přes předplatná: ChatGPT OAuth v Codexu a aktuálně používaného předplatného v Claude Code. OpenAI ani Anthropic API nebylo testováno. API může mít jiné limity, zejména pro GPT-5.6 v Codexu z toho nelze vyvozovat žádný API limit.
Shrnutí
Hlavní praktický rozdíl není jen způsob ovládání kompaktace, ale dostupná velikost nezkráceného kontextu přes předplatné:
- aktuálně používaný Claude Code bez automatické kompaktace: 1 000 000 tokenů;
- testovaný Codex CLI přes ChatGPT OAuth: automatický provozní práh 258 400 tokenů.
Claude Code tedy v tomto srovnání udrží přibližně 3,9× více původní historie. Codex vyžaduje rozhodnutí o kompaktaci, změně kontextu nebo rozdělení úlohy přibližně o 741 600 tokenů dříve.
Oba nástroje nakonec narazí na fyzický limit svého kontextového okna. Nelze současně zachovat celý raw kontext, pokračovat v témž threadu a získat další reasoning nebo výstup, pokud už se vše nevejde do dostupného okna.
Co bylo ověřeno v Codexu přes ChatGPT OAuth
Test běžel v Codex CLI 0.145.0, s modelem gpt-5.6-luna, reasoning low a bez API klíče.
Modelový katalog doručený Codexu pro tento účet uváděl:
{
"context_window": 272000,
"effective_context_window_percent": 95,
"model_context_window": 258400
}
Dva velké požadavky prošly bez kompaktace:
- přibližně 214 938 vstupních tokenů,
- přibližně 252 983 vstupních tokenů.
Při dalším rozšíření Codex před dalším požadavkem vytvořil v uloženém transcriptu událost:
{
"type": "context_compacted"
}
V neinteraktivním režimu s JSON výstupem nebyla kompaktace uživateli oznámena; standardní výstup vrátil pouze OK. Událost byla dohledatelná až v rollout JSONL.
Proč vyšší práh kompaktaci nevypne
model_auto_compact_token_limit nastavuje práh, ne vypínač. Jednorázové nastavení model_auto_compact_token_limit=1000000 automatickou kompaktaci nevypnulo.
Aktuální implementace Codexu podle zdrojového kódu OpenAI Codex omezuje konfigurovanou hodnotu interním limitem kontextu. Vyšší hodnota proto nemůže zajistit zachování nezkrácené historie.
Blokování automatické kompaktace
Codex nemá jednoduchý boolean přepínač typu disable_auto_compaction. Hook PreCompact může zachytit pouze automatickou kompaktaci přes matcher ^auto$; ruční /compact zůstane dostupný.
Hook musí vrátit continue: false. Tím ale Codex nezíská více kontextu: zastaví celý turn před kompaktací i před odesláním přeteklého požadavku na backend.
Ověřený end-to-end test hooku
Test s uměle nízkým prahem ověřil celý průběh:
- První modelový krok vrátil
FIRST. - Dočasný globální
PreCompacthook blokoval pouzetrigger: „auto“. - Při druhém požadavku Codex hook skutečně obdržel:
{
"hook_event_name": "PreCompact",
"trigger": "auto"
}
- Codex už neposlal promptem požadovanou odpověď
SECOND.
Blokující hook tedy neodešle přeteklý požadavek na backend. Další pokus ve stejném nezměněném kontextu narazí na tutéž bránu znovu.
Konfigurace může být jednou globálně v ~/.codex/config.toml, takže ji není nutné přidávat do každého projektu:
[[hooks.PreCompact]] matcher = "^auto$" [[hooks.PreCompact.hooks]] type = "command" command = "/absolutni/cesta/block-auto-compact.sh" timeout = 5 statusMessage = "Automatic compaction blocked"
Skript block-auto-compact.sh může vracet například:
#!/bin/sh printf '%s\n' '{"continue":false,"systemMessage":"Automatická kompaktace zastavena."}'
Hook je nutné při prvním použití schválit přes /hooks. Po jeho zastavení je potřeba udělat ruční /compact, zkrátit aktivní kontext, založit nový thread se selektivním handoffem nebo změnit zadání.
Kontext a výstupní rozpočet
Celé kontextové okno sdílejí zdrojová data, instrukce, výsledky nástrojů, reasoning a viditelný výstup:
zdrojová data + instrukce a tool output + reasoning + viditelný výstup <= celkové context window
Hodnota 128 tisíc tokenů je maximální výstup na jeden požadavek, ne další kapacita nad zaplněné kontextové okno. Při aktivním vstupu kolem 253 tisíc tokenů proto nezbývá prostor pro 128 tisíc tokenů výstupu; zbývající rozpočet dále snižují systémové instrukce, tool output a reasoning.
Kompaktace se týká historie před dalším požadavkem, ne právě generovaného výstupu. Během generování se odpověď nekompaktuje; po vyčerpání dostupného výstupního rozpočtu se odpověď ukončí.
Srovnání předplatných
Claude Code také ve výchozím nastavení používá automatickou kompaktaci. Přes nastavení autoCompactEnabled: false ji lze přímo vypnout.
| Nástroj přes předplatné | Dostupný nezkrácený kontext v tomto srovnání | Chování při naplnění |
|---|---|---|
| Claude Code | přibližně 1 000 000 tokenů | Uživatel může ponechat kompaktaci vypnutou až k limitu tohoto okna. |
| Codex CLI přes ChatGPT OAuth | praktický práh 258 400 tokenů | Codex provede kompaktaci nebo s blokujícím hookem zastaví turn už před odesláním. |
| OpenCode přes OpenAI OAuth | limit nezjištěn samostatným měřením | S vypnutou kompaktací odesílá požadavek; ověřená odpověď backendu byla context_length_exceeded. |
Claude Code proto v tomto konkrétním srovnání neposkytuje nekonečný kontext, ale poskytuje téměř čtyřnásobnou kapacitu pro práci bez ztrátové transformace. Codex přes ChatGPT předplatné v testované konfiguraci vyžaduje zásah výrazně dříve.