Codex CLI guide: models and effort

Codex CLI models, effort and context

Two things about Codex catch people out. The effort levels are a property of the model rather than a fixed list, and the context window it reports is larger than the one you actually get, because Codex reserves part of it for its own harness.

OpenAI

On Codex CLI

Effort levels come from the model

Each model advertises its own set of levels in the catalog. There is no fixed list, so a picker built from a hardcoded set will drop a level the day Codex adds one, run the turn at the default, and report the level you chose anyway.

The advertised window is not the usable one

Codex reserves part of the context window for its own harness. A model advertising 272,000 tokens gives you about 258,400, and one advertising 128,000 gives you about 121,600. A usage bar built on the advertised figure reads low by that margin.

Model and effort go together

Both are set when a turn starts. Plan mode is the exception worth knowing: it needs a specific resolved model rather than an unresolved default, so it will refuse rather than guess.

Unknown levels fail loudly

Codex rejects an effort level it does not recognise rather than quietly falling back. That is the failure worth having, because the alternative is a turn that runs at a different level than the one displayed everywhere in the interface.

Do not cache the catalog for long

The catalog is the authority on what exists. Reading it live is what keeps a new model or a new effort level from being invisible.

Compare

Model and reasoning controls by engine

 Claude CodeCodex CLIGrok CLI
Pick a modelYesYesYes
Reasoning effortYesYes, per modelYes, per model
Separate thinking budgetYesNoNo
Where the level list comes fromThe engineThe model catalogThe initialize handshake
Reports its context windowYesYes, larger than usableYes, and it is accurate
Auto compactionYesYesAt 85 percent of the window

Termdeck drives all three from one console, so the differences above stop being three separate habits to remember.

FAQ

Codex CLI models and effort, answered

Why does my Codex context usage look wrong?

Codex advertises the full context window of the model but reserves part of it for its own harness. A model reporting 272,000 tokens leaves roughly 258,400 usable, so a bar built on the advertised number under-reports how full the context really is.

What reasoning effort levels does Codex support?

Whichever ones the model you picked advertises. The levels are a property of the model rather than a fixed list, so they change with the model and they change when Codex ships a new one.

Why did Codex reject my effort level?

It rejects a level the model does not advertise rather than silently substituting a default. That is deliberate: a silent fallback would run the turn at one level while every readout showed another.

Why does plan mode need a specific model?

Plan mode is requested with the model as part of the request, so an unresolved default cannot be sent. Pick a concrete model and plan mode will start.