Same $200, Half the Codex

On October 30, existing ChatGPT Pro 200 subscribers move to a smaller Codex allowance at the same $200 a month, and the model mix decides how far it goes. Codex meters usage in credits per million tokens, and GPT-6 Astra costs 100x GPT-6 Luna and 5.9x GPT-6.1 Sol for the same agent turn. Moving 60% of Astra turns to Sol offsets a halved allowance. Fast mode burns 2.5x and Ultrafast 8x, and Pro 500 sells allowance at the same unit price as Pro 200. Includes a Python script that prices your Codex week in credits and finds your break-even share.

Published 2026-10-22 by Dor Amir on the Nadir blog.

Filed under Pricing & Models.

TL;DR.

On October 30, the $200 ChatGPT Pro plan changes for the people already on it. OpenAI reopened Pro 200 to new subscribers on September 29 with a lower usage allowance, and Codex lead Thibault Sottiaux said the new plan would "net out at half the dollar in API spend." Existing subscribers kept the old allowance through October 29, 2026. After that they move to the new one, at the same $200 a month.

The price is the same and the allowance is smaller. What decides how much work it covers is which model each turn runs on, because Codex now meters included usage in credits per million tokens, and the rate card spans two orders of magnitude:

This post walks through the change, the credit math, a Python script that prices your own Codex week in credits, and a short decision table for the week before the cutoff.

Credit rates are from OpenAI's Codex pricing page as of October 22, 2026. OpenAI publishes no weekly credit allowance for Pro, so allowance figures below are relative and illustrative. The 10x-Plus figure for the new Pro 200 is third-party reporting. No Nadir customer data is used.

What changes on October 30.

DateWhat happened
Sept 10New Pro 200 sign-ups paused, Astra demand ahead of capacity
Sept 29DevDay. Pro 200 reopens with a lower allowance. Pro 500 launches at 25x Plus with Ultrafast
Sept 29Sottiaux: the new Pro 200 will "net out at half the dollar in API spend"
Oct 14GPT-5.5 retires from Codex on ChatGPT sign-in (API keys unaffected)
Oct 29Last day of the grandfathered Pro 200 allowance
Oct 30Existing Pro 200 subscribers move to the new allowance at $200/month

OpenAI's help article on Pro tiers says the new Pro 200 allowance is lower "to reflect our increasingly efficient models." Two other details matter for planning. Pro plans have no five-hour limit on Codex, and Sottiaux said it won't come back on the $200 plan, so the weekly allowance is the one you hit. And OpenAI doesn't publish that weekly number. You find it by running out.

We covered the September rename, when "5x" and "20x" turned into "More usage than Plus," in More Than Plus. This is the follow-up: the date is now set, and the meter is in credits.

The meter is credits, and the spread is 100x.

Codex now prices included usage per million tokens, in credits, by model. The Standard-speed rates on OpenAI's pricing page:

ModelInputCached inputOutput
GPT-6 Astra250251,250
GPT-6.1 Sol502.5250
GPT-6 Sol505250
GPT-6 Luna2.50.2512.5

Credits per 1M tokens. Codex credit billing has no separate cache-write charge.

Take one ordinary agent turn: 60,000 input tokens, 90% of them cached, and 1,200 output tokens including reasoning. That's a mid-session turn that re-reads the repo context and writes a small diff.

Horizontal bar chart on a log scale of Codex credits for one agent turn of 60,000 input tokens (90% cached) and 1,200 output. GPT-6 Astra on Fast mode: 10.875 credits. GPT-6 Astra: 4.35 credits. GPT-6.1 Sol: 0.735 credits. GPT-6 Luna: 0.0435 credits.
Horizontal bar chart on a log scale of Codex credits for one agent turn of 60,000 input tokens (90% cached) and 1,200 output. GPT-6 Astra on Fast mode: 10.875 credits. GPT-6 Astra: 4.35 credits. GPT-6.1 Sol: 0.735 credits. GPT-6 Luna: 0.0435 credits.
Model and speedCredits per turnvs Astra
GPT-6 Astra, Fast10.8752.5x
GPT-6 Astra4.351x
GPT-6.1 Sol0.7350.17x
GPT-6 Luna0.04350.01x

GPT-6.1 Sol's cached input is a twentieth of its fresh input, while Astra's is a tenth. On a cache-heavy turn that widens the Astra-to-Sol gap from 5x on the rate card to 5.9x in practice.

OpenAI's own message estimates point the same way. For Plus, its pricing page gives 5 to 45 local Astra messages per five-hour window, 15 to 160 on GPT-6.1 Sol, and 350 to 3,000 on Luna. The model choice moves the allowance by more than any plan tier does.

Half the allowance, three different weeks.

Say your old Pro 200 allowance covered 1,000 all-Astra turns a week. The number is a placeholder, since OpenAI doesn't publish one. Only the ratios matter. If the new allowance is half, here's what it covers at each mix:

Paired horizontal bar chart of agent turns per week before and after a halved allowance, with the old allowance set to 1,000 all-Astra turns. All Astra on Fast: 400 before, 200 after. All Astra: 1,000 before, 500 after. 40% Astra, 45% GPT-6.1 Sol, 15% Luna: 2,094 before, 1,047 after. 20% Astra, 50% Sol, 30% Luna: 3,478 before, 1,739 after. All GPT-6.1 Sol: 5,918 before, 2,959 after.
Paired horizontal bar chart of agent turns per week before and after a halved allowance, with the old allowance set to 1,000 all-Astra turns. All Astra on Fast: 400 before, 200 after. All Astra: 1,000 before, 500 after. 40% Astra, 45% GPT-6.1 Sol, 15% Luna: 2,094 before, 1,047 after. 20% Astra, 50% Sol, 30% Luna: 3,478 before, 1,739 after. All GPT-6.1 Sol: 5,918 before, 2,959 after.
Mix (Astra / Sol / Luna)Credits per turnTurns per week, oldTurns per week, new
100 / 0 / 0, Fast mode10.875400200
100 / 0 / 04.351,000500
40 / 45 / 152.082,0941,047
20 / 50 / 301.253,4781,739
0 / 100 / 00.7355,9182,959

The break-even is simple to state. A halved allowance needs half the credits per turn. Moving a share x of Astra turns to Sol gives 4.35 − 3.615x, which reaches 2.175 at x ≈ 0.60. Moving them to Luna gets there at x ≈ 0.51.

So a developer who runs everything on Astra today, and could move 6 turns in 10 to Sol without noticing, ends up with the same week after October 30 as before. A developer who leaves Fast mode on for every turn has already spent 2.5x more than needed, before the cut.

Whether 60% of your turns can move is a quality question, not an arithmetic one. Renames, test runs, lint fixes, file reads, small diffs, and "what does this function do" usually don't need the flagship. A multi-file refactor or a subtle concurrency bug often does. The point of measuring is to find out which share you actually have.

Pro 500 is a speed plan, not a bulk plan.

The obvious response to a smaller allowance is to buy the bigger plan. Look at what it buys:

Horizontal bar chart of usage allowance as a multiple of Plus, adjusted for speed mode burn. Pro 200 new on Standard: 10x Plus. Pro 500 on Standard: 25x Plus. Pro 500 on Fast at 2.5x burn: 10x Plus. Pro 500 on Ultrafast at 8x burn: 3.125x Plus.
Horizontal bar chart of usage allowance as a multiple of Plus, adjusted for speed mode burn. Pro 200 new on Standard: 10x Plus. Pro 500 on Standard: 25x Plus. Pro 500 on Fast at 2.5x burn: 10x Plus. Pro 500 on Ultrafast at 8x burn: 3.125x Plus.

Ultrafast is only offered on GPT-6 Astra and GPT-6.1 Sol, and it's the main reason the $500 tier exists. It's worth paying for on the turns where you're waiting on the answer. It's the wrong default for a background agent working through a test suite. We wrote about the API side of this trade in the GPT-6.1 Sol Ultrafast post.

Tutorial: price your Codex week in credits.

In More Than Plus we read Codex CLI rollout files under ~/.codex/sessions/ and summed each request's token_count event into a usage dict keyed by (week, model). Reuse that loader. This step prices the same totals in credits instead of dollars, because credits are what the allowance is now counted in.

Step 1: the credit rate card.

# Codex credits per 1M tokens, Standard speed: input, cached input, output.
# From OpenAI's Codex pricing page, October 2026. Check it before you trust a total.
CREDITS = {
    "gpt-6-astra": (250, 25, 1250),
    "gpt-6.1-sol": (50, 2.5, 250),
    "gpt-6-sol":   (50, 5, 250),
    "gpt-6-luna":  (2.5, 0.25, 12.5),
}
SPEED = {"standard": 1.0, "fast": 2.5, "ultrafast": 8.0}  # included-usage multipliers

def credits(model, inp, cached, out, speed="standard", as_model=None):
    key = as_model or max((k for k in CREDITS if model.startswith(k)), key=len, default=None)
    if key is None:
        return float("nan")            # unknown model: don't guess
    pi, pc, po = CREDITS[key]
    return ((inp - cached) * pi + cached * pc + out * po) / 1e6 * SPEED[speed]

max(..., key=len) picks the longest matching prefix, so a gpt-6.1-sol turn isn't priced as gpt-6-sol. Codex counts cached tokens inside input_tokens, so subtract them once and don't add them back.

Step 2: your week, and the week with a different mix.

from collections import defaultdict

weeks = defaultdict(lambda: {"turns": 0, "actual": 0.0, "astra_to_sol": 0.0})
for (week, model), (inp, cached, out, calls) in usage.items():
    w = weeks[week]
    w["turns"] += calls
    w["actual"] += credits(model, inp, cached, out)
    # Counterfactual: the same tokens, with every Astra call priced as GPT-6.1 Sol.
    alt = "gpt-6.1-sol" if model.startswith("gpt-6-astra") else None
    w["astra_to_sol"] += credits(model, inp, cached, out, as_model=alt)

for week in sorted(weeks):
    w = weeks[week]
    per_turn = w["actual"] / max(w["turns"], 1)
    print(f"{week}  {w['turns']:>5} turns  {w['actual']:>9,.0f} credits"
          f"  {per_turn:6.2f}/turn  all-Astra-on-Sol {w['astra_to_sol']:>9,.0f}")

The last column is an upper bound: it assumes every Astra turn could have run on Sol. It tells you how much room there is. It doesn't tell you which turns.

Step 3: find your break-even share.

CUT = 0.5   # the new allowance is half the old one, if the reported figure holds
astra = [k for k in usage if k[1].startswith("gpt-6-astra")]
astra_now = sum(credits(m, *usage[(wk, m)][:3]) for wk, m in astra)
astra_on_sol = sum(credits(m, *usage[(wk, m)][:3], as_model="gpt-6.1-sol") for wk, m in astra)
total = sum(w["actual"] for w in weeks.values())

# Assumes your current weeks fill the old allowance. Over 100% means Sol alone can't absorb it.
share = total * CUT / (astra_now - astra_on_sol)
print(f"move {share:.0%} of Astra work to GPT-6.1 Sol to absorb a {CUT:.0%} cut")

On an all-Astra week this prints 60%, matching the table above. On a week that's already 40% Astra and 60% Sol by turns, it prints 75%: the less Astra you run, the larger the share of it that has to move. Past 100%, switching Astra to Sol can't absorb the cut on its own. That's when Luna, less Fast mode, or an API key for overflow comes in.

The week before the cutoff.

What your log saysWhat to do before October 30
Mostly Astra, and you rarely hit the weekly limitNothing urgent. Watch the first two weeks of November
Mostly Astra, and you hit the limit late in the weekMove the routine turns off Astra. That's 60% at the break-even
Fast or Ultrafast on by defaultTurn it off for background and unattended work first. It's a 2.5x to 8x lever with no quality question attached
Already mixed, and still hitting the limitCompare Pro 500 with an API key for the overflow. Price both from Step 2
Credits per week well below the allowanceConsider dropping to Pro 100

One more thing to check: API-key sessions aren't on the plan meter. OpenAI's notes on the GPT-5.5 retirement repeat that Codex sessions authenticated with an API key are billed separately. For a team, a plan for interactive work plus an API key for CI and batch agents is often cheaper than sizing one plan for both.

Choosing the model per turn, without stopping to think.

Every number above assumes someone picks the model for each turn. Nobody does that by hand for long. People choose a model for the session and leave it, and the session runs on Astra because the one hard turn needed it.

That's the gap Nadir's Codex integrations cover:

curl -fsSL https://getnadir.com/install/codex-auto.sh | sh
cd /path/to/project
~/.local/bin/nadir-codex-auto

Each turn writes a private receipt to ~/.nadir/codex-auto/receipts.jsonl with the requested and configured model and the usage, which is the data Step 2 needs. Cost figures are estimates. Nadir doesn't guarantee a subscription allowance or task quality, and it keeps your baseline model when it can't price a switch. See the coding-agents page for every install, or start with a free key.

Conclusion.

October 29 isn't the day Codex gets more expensive. It's the day the same $200 covers about half as many credits, if the "half the API spend" figure holds. Credits aren't flat across models: an Astra turn costs about six Sol turns and a hundred Luna turns. A smaller allowance mostly penalizes defaults like Astra for everything and Fast mode left on. Price last week in credits, find the share that can move, and move it before the 30th. If you're still short after that, Pro 500 and an API key cost about the same per unit, and the per-turn model choice is the cheaper fix to try first.


Credit math is illustrative, using an assumed turn profile (60,000 input tokens, 90% cached, 1,200 output) and a placeholder weekly allowance. It is not derived from customer data. Sources: [OpenAI Codex pricing](https://learn.chatgpt.com/docs/pricing) (credit rates, Fast and Ultrafast multipliers, per-model message estimates, no five-hour limit on Pro, GPT-5.5 retirement). [OpenAI DevDay 2026 recap](https://openai.com/index/devday-2026-recap/) (Pro 500 at 25x Plus with Ultrafast). [OpenAI Help Center, About ChatGPT Pro tiers](https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers) (lower Pro 200 allowance; grandfathering through October 29). [Thibault Sottiaux on X, September 29, 2026](https://x.com/thsottiaux/status/2104823812042940713) ("net out at half the dollar in API spend"). [Developers Digest, Codex usage limits and pricing in 2026](https://www.developersdigest.tech/blog/codex-usage-limits-pricing-2026) (timeline). [Pasquale Pillitteri, "OpenAI announces Pro $200 is back, with half the API spend for Codex"](https://pasqualepillitteri.it/en/news/19231/openai-pro-200-dollars-back-half-api-spend-codex). The 10x-Plus figure for the new Pro 200 comes from third-party reporting and is not on OpenAI's pricing page.

More on pricing & models

What Nadir is

Nadir is an LLM router. Nadir sends each prompt to the cheapest model that can handle it. A small decision model reads each prompt against your model menu and picks the lowest-cost model it expects to handle it. When the decision model is uncertain or unavailable, the request goes to the strongest model on the menu. The routing step makes no call to your model provider.

Nadir runs two ways. The decision API returns a model, reasoning-effort, cache, context, and policy recommendation without calling a model provider, beside the gateway you already run. That is how a shadow-mode evaluation works, and its projected savings stay advisory. The OpenAI compatible managed proxy executes the route, and migration is a two-line change: point the base URL at api.getnadir.com and set model to auto. On that path an optional verifier can score a complete non-streaming answer and escalate to a stronger model when it misses the configured bar. Streaming bypasses post-generation verification. BYOK is supported on every tier.

For coding agents, Nadir Auto is a terminal launcher for Claude Code or Codex that asks Nadir for the main-session model before each turn, with your configured model as the fallback and cost ceiling. Delegation integrations for Claude Code, Codex, or Cursor instead recommend a model tier for subagent work, and the agent decides; the Claude plugin can also move a main-thread turn to Haiku when Nadir's cache check prices it cheaper, unless its switch_main_model option is off. Either way inference runs on your own provider account, so Nadir holds no provider keys on that path.

What the numbers are, and what they are not

Nadir publishes each evaluation with its scope. On checkable code, run-check-escalate solved 392 of 395 common HumanEval and MBPP problems (99.2%), graded by running the canonical tests; that applies only to tasks with runnable deterministic tests. Nadir-Tumbler posts an arena_score of 72.3 on RouterArena's public scorer, 5th of 23 routers, which measures the routing decision on RouterArena's own model pool. A reference-assisted RouterBench evaluation over 11,420 held-out triples produced a 60% lower projected cost than always-Opus with about 98% retained quality and a 1.7% catastrophic-route rate. That experiment gave the verifier the expensive-model reference answer, which production does not have, so it is a research ceiling and not the deployed path.

None of these is a production guarantee, a universal savings rate, or a forecast for any particular workload. Customer savings are reported from measured execution against a declared baseline, and customer quality only from outcome-labelled traffic. Projected savings and realized savings are separate artifacts and are never blended.

Design-partner program

Three rungs, picked by risk appetite. Rung 0 Shadow runs advisory decision calls alongside live traffic and returns a projected receipt, with nothing in the request path changed. Rung 1 Hosted is the two-line swap on a production slice and returns a realized receipt. Rung 2 On-prem is a supervised six-week proof of concept inside the partner's VPC, where no prompt, response, or usage reaches Nadir. The commitments are the same at every rung. Apply for a rung directly: Rung 0 Shadow, Rung 1 Hosted, or Rung 2 On-prem. Not sure which fits? Start at getnadir.com/contact/?reason=design-partner.

Licensing

NadirClaw is the self-hosted core, source-available under the PolyForm Noncommercial License. Source-available is the correct label; NadirClaw is not open source. Nadir Route's hosted plan has no base fee and charges a variable fee only on measured savings from requests Nadir executed.

Pages on this site

Machine-readable summaries of this site: llms.txt and llms-full.txt.