Quick answer
- Default pick
- GPT-6.1 Sol · $2 / $10 per MTok
- Hardest work
- GPT-6 Astra · $10 / $50 per MTok
- High volume
- GPT-6 Luna · $0.10 / $0.50 per MTok
- Set it
codex -m gpt-6.1-solor/model- Heads-up
- GPT-5.5 leaves Codex (ChatGPT sign-in) on October 14, 2026
- Verified
- September 30, 2026 against OpenAI's docs
Pick by task, not by leaderboard
OpenAI's model-selection guide doesn't name a single winner. It pairs each model with a reasoning effort and a kind of work, which makes it the most useful starting point available: it comes from the vendor, not from a synthetic leaderboard. The right-hand column is our reading of what each rung looks like inside a Codex session.
| Model · effort | OpenAI's description | In a Codex session |
|---|---|---|
| Luna · Low | Fine-grained edits, well-scoped problem-solving, and simple data extraction | Renames, lint fixes, small bugs with a clear repro |
| Luna · Extra high | Finding current context across multiple apps, prioritizing work, and solving problems with clear constraints | Triage and well-specified tasks that still need some digging |
| GPT-6.1 Sol · Medium | Complex technical work and coordinated deliverables you expect to revise | Everyday feature work and multi-file changes: the default |
| GPT-6.1 Sol · Extra high | Polished deliverables, connected visual systems, and decisions built from conflicting evidence | Tangled debugging and changes that cut across modules |
| Astra · Low | Concise writing and content adaptation that preserve facts and nuance | PR descriptions, changelogs and docs that must stay accurate |
| Astra · Medium | Ambitious projects that need broad context, reliable interactions, and complete results | Large migrations where a partial result is useless |
| Astra · Extra high | Demanding analysis and complex deliverables with exacting requirements | The hardest problems, when a failed run costs more than the tokens |
GPT-6.1 Sol: the default
GPT-6 Astra: the escalation
GPT-6 Luna: the fan-out
The current Codex lineup
Codex recommends three GPT-6 models today. All three share a 1.05M-token context window (922K maximum input) and 128K maximum output, so capability, speed and price are what separate them. Prices are standard API rates per million tokens. Knowledge cutoffs are April 30, 2026 for Astra and 6.1 Sol, and May 18, 2026 for Luna.
| Model | API id | Input / output | Cached input | Reasoning effort | Role |
|---|---|---|---|---|---|
| GPT-6.1 Sol | gpt-6.1-sol | $2 / $10 | $0.10 | low to max | The default for complex coding and agentic work |
| GPT-6 Astra | gpt-6-astra | $10 / $50 | $1 | low to max | The escalation for the hardest end-to-end tasks |
| GPT-6 Luna | gpt-6-luna | $0.10 / $0.50 | $0.01 | none to max | Focused, repeatable, high-volume tasks |
GPT-6.1 Sol vs GPT-6 Sol: what changed
GPT-6.1 Sol shipped on September 29, 2026, and OpenAI's docs now point to it as the newer Sol. The base price did not move. What changes for a Codex user:
| GPT-6.1 Sol | GPT-6 Sol | |
|---|---|---|
| Input / output | $2 / $10 | $2 / $10 |
| Cached input | $0.10 (5% of input) | $0.20 (10% of input) |
| Reasoning effort | low to max | none to max |
| Knowledge cutoff | April 30, 2026 | April 20, 2026 |
| Tool calling | Responses API | Responses, or Chat Completions with effort none |
| OpenAI's positioning | Near-Astra performance for complex work at a lower cost | Built for complex coding and agentic workflows |
The cached-input cut is the change you will feel. A long agent session resends a growing prompt prefix on every turn, and that repeated prefix is what caching discounts, so with a warm cache 6.1 Sol costs less per task than 6 Sol at the same list price. The calculator below shows by how much. One migration trap: if your config pins none or minimal, move it to low, because 6.1 Sol supports neither.
Which model Codex uses, and how to change it
If you never set a model, the Codex app, CLI and IDE extension pick a recommended one for you. To choose deliberately there are three levers, from the most temporary to the most permanent:
- 1
For one session: /model
In an interactive CLI session,/modelswitches the model or its reasoning effort; chooseMore reasoning…to reach Max or Ultra where the model supports them. The app and the IDE extension have the same control under the composer. - 2
For one run: --model
Pass--model, or its-malias, when you launch Codex. It works for non-interactivecodex execruns too.codex --model gpt-6.1-sol codex exec -m gpt-6-luna "Fix the lint errors in src/" - 3
As your default: config.toml
The app, CLI and IDE extension share~/.codex/config.toml. Set the model and a default reasoning effort there.# ~/.codex/config.toml model = "gpt-6.1-sol" model_reasoning_effort = "medium"
Profiles: one config per kind of task
Profiles let you keep a named configuration per task shape and pick one at launch. Since Codex 0.134.0, each profile is its own file next to config.toml; the old [profiles.name] tables inside config.toml are no longer read, so move them if you still have them.
# ~/.codex/fast.config.toml
model = "gpt-6-luna"
model_reasoning_effort = "high"
# ~/.codex/deep.config.toml
model = "gpt-6-astra"
model_reasoning_effort = "low"codex exec --profile fast "Rename getUser to fetchUser across the repo"
codex --profile deepThe two starting efforts above are OpenAI's: High for Luna, Light (low) for Astra. Your base config.toml keeps GPT-6.1 Sol for everything else.
Reasoning effort: start at the default
Model choice is half the tuning. Reasoning effort is the other half: more effort buys more planning and checking per step, and costs time and tokens. OpenAI's advice for Codex is to start with the default and raise it only when a task needs deeper planning or analysis.
| Model | Reasoning effort values (API) | OpenAI's suggested start |
|---|---|---|
| GPT-6.1 Sol | low · medium · high · xhigh · max | Your client's default (medium in the API) |
| GPT-6 Astra | low · medium · high · xhigh · max | Light, which is low in config |
| GPT-6 Luna | none · low · medium · high · xhigh · max | High |
Max and Ultra are different tools
Max gives one agent more time to reason about a single task. Ultra splits a task across subagents that work in parallel, so it only pays off when the work divides into meaningful parts. In OpenAI's words, most tasks need neither. GPT-6.1 Sol reaches Ultra where your plan and settings allow it; GPT-6 Luna stops at Max.
Don't confuse either with Ultrafast, which is a speed mode rather than more reasoning: it runs GPT-6.1 Sol faster in Codex on the Pro $500 plan and on eligible Enterprise and Edu plans, and OpenAI lists its credit usage on its Speed page.
Effort levels don't map one-to-one across model generations. If you are moving from a GPT-5.x model, re-run a familiar task at a lower setting and adjust from there rather than carrying your old value across.
What a task costs on each model
Per-token prices only mean something once a task sits behind them. The calculator below applies OpenAI's standard API rates to one agent task. The presets are illustrative sizes for a multi-turn run, not measured averages, so put your own numbers in.
| Model | Per task | Per month | Vs GPT-6.1 Sol |
|---|---|---|---|
| GPT-6.1 Soldefault | $0.88 | $87.75 | 1.0× |
| GPT-6 Sol | $1.01 | $100.50 | 1.1× |
| GPT-6 Astra | $5.03 | $502.50 | 5.7× |
| GPT-6 Luna | $0.050 | $5.03 | 0.06× |
Standard API list prices. The presets are illustrative sizes for a multi-turn agent run, not measured averages. Not modeled: cache writes (1.25× input), Batch and Flex (50% off), Fast mode (2×) and regional processing (+10%).
Two things the per-token view hides. First, cache pricing is not uniform: GPT-6.1 Sol bills cached input at 5% of its input price, Astra and Luna at 10%, so with a warm cache Astra costs more than 5x what 6.1 Sol does per task. Second, token price is not task price. OpenAI reports that in several evaluations Astra reached stronger results with substantially fewer output tokens, and a model that lands a change in one attempt beats a cheaper one that needs three. Measure on your own tasks before routing on price alone.
Choose per task, not per project
Every rule on this page ends in the same place: the right model is a property of the task, not of the repository. A rename and a data-layer migration in the same codebase want different models and different effort, and a single default set once per project quietly overpays on one while underpowering the other.
There are three ways to act on that, from lightest to heaviest:
Switch by hand
A profile per task shape
The model on the task
The same logic crosses vendors. Some tasks suit a Claude model better than any GPT-6 tier; the Claude side of this decision is in the best Claude model for coding, and mixing both on one codebase is covered in model routing for coding agents.
Pick the model per task, not per project.
AIDEN runs your Codex CLI next to Claude Code on one board. Each feature gets its own worktree, agent and model, so a cheap model can take the renames while a stronger one takes the feature. Free for one project, no credit card.
Download AIDEN freeFree to start · macOS 12+ · No credit card required
Retirements: what to change before October 14
OpenAI is clearing older models out of Codex. The dates below apply when you sign in with ChatGPT: the GPT-5.5 retirement does not apply to the OpenAI API, and the GPT-5.4 retirement does not affect Codex running on your own API key.
| Model in your config | Status in Codex (ChatGPT sign-in) | OpenAI's named replacement |
|---|---|---|
gpt-5.5 | Retires October 14, 2026 | gpt-6-sol on Plus, Pro, Business, Enterprise and Edu; gpt-6-luna on Free and Go |
gpt-5.3-codex-spark | Retired September 14, 2026 | Any available model |
gpt-5.4, gpt-5.4-mini | Retired August 31, 2026 | gpt-6-sol and gpt-6-luna |
gpt-5.2, gpt-5.3-codex | Deprecated | Any available model |
gpt-5.6-sol, -terra, -luna | Available during the GPT-6 rollout | No date on OpenAI's Codex models page |
OpenAI's retirement notice names GPT-6 Sol as the paid-plan replacement for GPT-5.5, while its current recommendation for complex coding is GPT-6.1 Sol. If you are editing the config anyway and your account has 6.1 Sol, skip the intermediate step. The model name also hides outside config.toml: workspace defaults, saved model settings, custom agents, scheduled tasks and scripts that call codex exec -m. A quick search finds the local ones:
# user and project Codex config; add any folder with scripts that call codex exec
grep -rnE 'gpt-5\.[2-5]|codex-spark' ~/.codex .codex 2>/dev/nullWhat the benchmarks do and don't say
We have not found a vendor-published coding benchmark for GPT-6.1 Sol or GPT-6 Luna that we could verify, so this page does not invent one. The cross-vendor coding numbers available for GPT-6 come from Anthropic's Claude Opus 5.5 launch table, where the GPT-6 Astra figures are as reported by OpenAI:
| Model | Terminal-Bench 4.0 | FrontierCode v1.1 | Input / output |
|---|---|---|---|
| Claude Opus 5.5 | 66.4% (xhigh effort) | 54.4% | $4 / $20 |
| GPT-6 Astra | 57.9% (high effort, reported by OpenAI) | 53.3% | $10 / $50 |
| Claude Fable 5.1 | 55.8% | 50.3% | $10 / $50 |
Two readings, both hedged. Inside OpenAI's lineup, Astra is the capability ceiling and 6.1 Sol is described as close to it, which is the whole case for Sol as the default. Across vendors, a Claude model posts the highest agentic-coding scores in that table at a lower price than Astra. That is a reason to keep Claude Code within reach for some tasks, not a reason to pick one CLI forever; the longer comparison is in Claude vs GPT for coding. Vendor tables use different harnesses and effort settings, so treat them as a prompt to test on your own repository.
Sources
- OpenAI: Using GPT-6 (latest-model guide)
- OpenAI: Model selection
- OpenAI: GPT-6.1 Sol model page
- OpenAI: GPT-6 Astra model page
- OpenAI: GPT-6 Luna model page
- OpenAI: GPT-6 Sol model page
- Codex docs: Models, retirements and reasoning effort
- Codex docs: Profiles and CLI overrides
- Anthropic: Claude Opus 5.5 launch table