More Than Plus

OpenAI renamed the ChatGPT Pro plans the weekend before DevDay and swapped the "5x" and "20x the usage of Plus" labels for "More usage than Plus." The $100 tier is now Pro Standard and the $200 tier is Pro More, at unchanged prices. A code change also surfaced an unannounced $500 Pro Max tier for "the fastest work experience with Codex." It follows the September 11 pause on new Pro 20X sign-ups, when OpenAI said Astra demand had outrun its compute. This post explains why the multiplier mattered, models what Codex work costs at GPT-6 API prices ($870 a month all-Astra for a heavy user against a $200 plan, $264 routed), and gives a 40-line Python script that rebuilds your own multiplier from Codex rollout logs.

Published 2026-09-28 by Dor Amir on the Nadir blog.

Filed under Pricing & Models.

Two numbers became one phrase.

Over the weekend of September 26, ChatGPT subscribers noticed that the Pro plans had been quietly renamed. The $100 tier, sold as "5x the usage of Plus," is now Pro Standard. The $200 tier, sold as "20x the usage of Plus," is now Pro More. Both now say the same thing about what you get: "More usage than Plus." Source: PANews

The same week, a code change titled "Add Pro Max plan and update Pro display name" surfaced a third tier: Pro Max at $500 a month, described as "the fastest work experience with Codex." Source: KuCoin OpenAI hasn't announced Pro Max, and DevDay is tomorrow, September 29. Treat the $500 tier as reported, not confirmed.

Before and after comparison of the ChatGPT Pro page. Before: Pro 5x at $100 a month, 5x the usage of Plus; Pro 20x at $200 a month, 20x the usage of Plus; no $500 tier. After: Pro Standard at $100 a month, more usage than Plus; Pro More at $200 a month, more usage than Plus; Pro Max at $500 a month, reported, fastest work experience with Codex.
Before and after comparison of the ChatGPT Pro page. Before: Pro 5x at $100 a month, 5x the usage of Plus; Pro 20x at $200 a month, 20x the usage of Plus; no $500 tier. After: Pro Standard at $100 a month, more usage than Plus; Pro More at $200 a month, more usage than Plus; Pro Max at $500 a month, reported, fastest work experience with Codex.

The prices didn't change. What changed is that the only unit a subscriber had for comparing plans is gone. This post covers why that matters more than a rename, what the timing tells you, and how to rebuild the number yourself from your own Codex logs, in about 40 lines of Python.

Costs in this post are illustrative, modeled from OpenAI's public API list prices and assumed usage profiles, not measured production traces. Not derived from proprietary customer data. Sources cited throughout.

Why a multiplier was worth something.

"20x the usage of Plus" was never a precise promise. Plus limits have always moved, differ by model, and are described in messages or time windows rather than tokens. But it was a ratio, and a ratio does two jobs a phrase can't:

  1. It compares tiers. At 5x for $100 and 20x for $200, the $200 plan was twice the price for four times the usage. That's why 36Kr reported that the 20x plan was the most heavily used Pro tier: per unit of compute, it was the cheapest thing OpenAI sold.
  2. It pins the plan to something. If Plus limits went down, 20x went down with them, and you could at least see the ratio. "More than Plus" is satisfied by 1.1x.

Neither job survives the new wording. Pro Standard and Pro More now carry the same claim at different prices. What separates them is whatever OpenAI decides it is this month.

What the timing tells you.

On September 11, OpenAI stopped selling the $200 plan to new subscribers. Existing Pro 20X users kept their access. The reason, from Tibo, OpenAI's head of core products, as reported by 36Kr: the Astra model "has excellent performance, triggering unprecedented demand, and there is not enough computing power available now." Source: 36Kr Two days earlier he had written: "the demand for Astra is unprecedented, we are pulling every lever we can."

Put the pieces in order:

DateWhat happened
Early SeptGPT-6 Astra ships at $10 / $50 per million tokens on the API
Sept 9"The demand for Astra is unprecedented, we are pulling every lever we can"
Sept 11Pro 20X closed to new subscribers for lack of compute
Sept 25Code change adds Pro Max and renames the Pro tiers
Sept 26-27Pricing page drops "5x" and "20x" for "More usage than Plus"
Sept 29DevDay

This reads as a vendor that's short of flagship compute and needs room to change how much of it a flat fee buys. A fixed multiplier is a commitment. A phrase isn't. We've written before about how much of today's AI pricing is subsidized. Flat-rate plans with heavy users are the most subsidized part of it, and they're the part being made vague first.

None of this is unusual. Anthropic's Claude plans adjusted weekly limits earlier this year, and every coding tool has moved toward metering. The pattern is the same everywhere: the flagship model is the scarce resource, and the plan terms are where the scarcity shows up first.

What a flat plan is actually worth.

The useful question isn't "is 'More' more than 20x?" You can't answer it. The useful question is: what would the work I do on this plan cost me on the API? That number has a unit, OpenAI publishes the prices, and it doesn't change when a pricing page does.

A typical Codex agent request re-reads a large context and writes a little. Assume 60,000 input tokens per request, 90% of them cache hits, and 1,200 output tokens including reasoning. At GPT-6 list prices:

ModelInputCached inputOutputCost per request
GPT-6 Astra$10.00$1.00$50.00$0.174
GPT-6 Sol$2.00$0.20$10.00$0.035
GPT-6 Luna$0.10$0.01$0.50$0.0017

Price per million tokens. Astra bills over-272K prompts at 2x input; these requests stay under it.

Horizontal bar chart on a log scale of the monthly API-equivalent cost of Codex work, against dashed lines at $100, $200 and $500 for Pro Standard, Pro More and the reported Pro Max. Light user, 1,000 agent requests a month: $174 all on Astra, $53 routed. Heavy user, 5,000 requests: $870 all on Astra, $264 routed. Power user, 20,000 requests: $3,480 all on Astra, $1,054 routed. The routed mix is 20% Astra, 50% Sol, and 30% Luna.
Horizontal bar chart on a log scale of the monthly API-equivalent cost of Codex work, against dashed lines at $100, $200 and $500 for Pro Standard, Pro More and the reported Pro Max. Light user, 1,000 agent requests a month: $174 all on Astra, $53 routed. Heavy user, 5,000 requests: $870 all on Astra, $264 routed. Power user, 20,000 requests: $3,480 all on Astra, $1,054 routed. The routed mix is 20% Astra, 50% Sol, and 30% Luna.

Three things stand out.

Tutorial: rebuild the multiplier from your own logs.

Codex CLI writes a rollout file for every session under ~/.codex/sessions/YYYY/MM/DD/. Each model call adds a token_count event with that request's usage. Summing them gives you tokens by model by week, which you can price at API rates. That's your own multiplier: a number you can track after the plan terms change.

The field names below match Codex CLI rollouts as of September 2026. Check a line of your own file before trusting the totals.

Step 1: collect usage.

import json, glob, os
from collections import defaultdict
from datetime import datetime

PRICES = {  # USD per 1M tokens: input, cached input, output
    "gpt-6-astra": (10.00, 1.00, 50.00),
    "gpt-6-sol":   (2.00, 0.20, 10.00),
    "gpt-6-luna":  (0.10, 0.01, 0.50),
}

def week_of(ts: str) -> str:
    d = datetime.fromisoformat(ts.replace("Z", "+00:00"))
    y, w, _ = d.isocalendar()
    return f"{y}-W{w:02d}"

usage = defaultdict(lambda: [0, 0, 0, 0])   # (week, model) -> in, cached, out, calls
root = os.path.expanduser("~/.codex/sessions")
for path in glob.glob(f"{root}/**/rollout-*.jsonl", recursive=True):
    model = "unknown"
    for line in open(path, encoding="utf-8", errors="replace"):
        try:
            e = json.loads(line)
        except ValueError:
            continue
        p = e.get("payload") or {}
        if e.get("type") == "turn_context" and p.get("model"):
            model = p["model"]
        if p.get("type") == "token_count" and (p.get("info") or {}).get("last_token_usage"):
            u = p["info"]["last_token_usage"]
            row = usage[(week_of(e["timestamp"]), model)]
            row[0] += u.get("input_tokens", 0)          # includes cached, as OpenAI counts it
            row[1] += u.get("cached_input_tokens", 0)
            row[2] += u.get("output_tokens", 0)         # includes reasoning
            row[3] += 1

Only token counts and timestamps are read. No prompt or response text leaves the file.

Step 2: price it.

def price(model: str, inp: int, cached: int, out: int, as_model: str | None = None) -> float:
    key = as_model or next((k for k in PRICES if model.startswith(k)), None)
    if key is None:
        return float("nan")                      # unknown model: don't guess
    pi, pc, po = PRICES[key]
    return ((inp - cached) * pi + cached * pc + out * po) / 1e6

weeks = defaultdict(lambda: {"actual": 0.0, "all_astra": 0.0, "calls": 0})
for (week, model), (inp, cached, out, calls) in usage.items():
    weeks[week]["actual"] += price(model, inp, cached, out)
    weeks[week]["all_astra"] += price(model, inp, cached, out, as_model="gpt-6-astra")
    weeks[week]["calls"] += calls

PLAN = 200.0   # what you pay per month
for week in sorted(weeks):
    w = weeks[week]
    monthly = w["actual"] * 52 / 12
    print(f"{week}  {w['calls']:>6} calls  API-equivalent ${w['actual']:>8.2f}/wk"
          f"  (${monthly:>8.2f}/mo, {monthly / PLAN:4.1f}x the plan)"
          f"  all-Astra ${w['all_astra']:>8.2f}/wk")

The last column is the number that used to be printed on the pricing page, measured from your side. If it's 4.4x this week and 2.1x in November on the same kind of work, the plan changed, whatever the page says.

Step 3: decide.

Stretching whichever limit you have.

On any plan with a usage limit, the flagship is the expensive way to spend it. OpenAI has said as much with its own products: when it shipped GPT-5-Codex-Mini last November, the pitch was that it "allows roughly 4x more usage than GPT-5-Codex," and Codex suggested switching to it at 90% of a user's limit. A smaller model spends less of your allowance per request. The same logic applies to the API bill.

So the lever is the same on a flat plan and on the API: don't send Astra the work Sol or Luna can do. In our illustrative profile, a 20 / 50 / 30 split cut the API-equivalent by 70%. On a flat plan, the same split is how you avoid hitting the limit on Thursday.

The hard part is making that split per task, while the agent is running, rather than once per session. Picking a cheaper model for the whole session is wrong in both directions: the trivial renames still run on something too expensive, and the one hard refactor runs on something that can't do it.

Where Nadir fits.

Nadir's Codex hook asks one question each time the agent is about to hand off a piece of work: which tier does this need? It sends the prompt to POST /v1/bucket, which classifies it as simple, medium, or complex without spending provider tokens, and passes the suggestion back to the agent. The agent keeps its own OpenAI credentials and decides. Nadir never sees your subscription and doesn't need to.

If you'd rather run on the API, the OpenAI compatible gateway routes each request to the cheapest model that clears your quality bar and reports the model and cost on every response. Either way, you get the number the pricing page stopped printing: what your work actually costs, by model.

Start with a free key, run the script above on last month's rollouts, and see how much of your Astra usage was tier-simple.

Conclusion.

"5x" and "20x" were imprecise, but they were numbers, and numbers can be checked. "More usage than Plus" can't. The change arrived two weeks after OpenAI ran out of Astra capacity and a day before DevDay, next to a reported $500 tier for the heaviest Codex users. Read together, the direction is clear: the flat-plan discount on flagship tokens is being made adjustable. You can't stop that, but you can measure it. Log your tokens, price them at API rates every week, and keep the flagship for the work that needs it. That keeps the multiplier on your side of the table.


Costs in this post are illustrative, modeled for this post from OpenAI's public API list prices and an assumed request profile, and are not derived from customer data. Sources: [PANews, "OpenAI may restructure ChatGPT subscription tiers," September 27, 2026](https://panews.io/articles/01a0e325-1c58-72a6-a1e6-e985664f7b69). [KuCoin News, "OpenAI Adjusts ChatGPT Pro Tiers, Adds $500 Pro Max Option," September 28, 2026](https://www.kucoin.com/news/flash/openai-adjusts-chatgpt-pro-tiers-adds-500-pro-max-option). [Phemex News, "OpenAI Renames ChatGPT Pro Tiers"](https://phemex.com/news/article/openai-quietly-renames-chatgpt-pro-tiers-amid-subscription-restructure-speculation-98002). [36Kr, "OpenAI Announces ChatGPT Pro 20X Is No Longer Available for New Subscriptions," September 11, 2026](https://eu.36kr.com/en/p/3978220011928576). [OpenAI Help Center, About ChatGPT Pro tiers](https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers). [OpenAI DevDay 2026](https://devday.openai.com/). GPT-6 API prices from OpenAI's model pages, as listed in [our GPT-6 pricing post](/blog/gpt-6-sol-luna-pricing-terra-retired-routing).

What Nadir is

Nadir is an LLM router. Nadir sizes every prompt and routes it to the cheapest model that still clears your quality bar. A trained pre-classifier scores each prompt in under 10 ms, with no LLM call in the routing step.

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.

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.