A Running Table of Codex Pricing Changes
Pricing on a fast-moving model lineup isn't a fact you learn once — it's a fact you have to keep re-learning, on a schedule, or you end up planning real budgets against numbers that quietly stopped being true. This page exists to make that re-learning visible rather than invisible: a running account of what's actually changed, when, and how this site caught it.
Why a static pricing page isn't enough on its own
Every model reference page on this site states current figures with a verified-on date. What that alone doesn't show is the shape of change over time — whether a given price has been stable for months or moved twice in the last quarter, whether a naming convention has shifted, whether a mechanic like cache-write pricing is a longstanding feature or a genuinely new addition to the newest model generation. A single snapshot answers "what is true now." A running record answers "how much should I trust that this stays true," which is a different and, for planning purposes, arguably more useful question.
The most consequential change on record: the GPT-5.6 cache-write charge
Every model generation before GPT-5.6 wrote to the prompt cache for free — no charge at all for the act of writing a new prefix into cache, only the ordinary input rate for sending it. GPT-5.6 introduced a real markup specifically for cache writes, at a premium over the plain input rate. This is the single change most likely to catch a migrating workload off guard, because "caching is free to set up" was simply true for every prior generation and stopped being true the moment a workload moved onto the newest one. Anyone migrating a caching-heavy workflow onto GPT-5.6 needs to re-run the caching break-even math, not carry forward an assumption that held on every model before it.
The rename that didn't change anything except the name
Priority processing became Fast mode, with both service_tier: "priority" and service_tier: "fast" still accepted by the API. Genuinely nothing else about the tier — its price, its latency benefit, which models offer it — appears to have changed alongside the rename, as far as this site's research has found. It's recorded here anyway, because a rename with a preserved-but-deprecated old name is exactly the kind of thing that causes quiet confusion in old scripts, internal documentation, and institutional memory long after the change itself.
The relocation of the documentation itself
Beyond pricing mechanics, the URLs where OpenAI's own documentation lives moved during this site's research period — platform.openai.com paths redirecting to developers.openai.com, and Codex-specific documentation redirecting to a learn.chatgpt.com domain. This matters for anyone maintaining their own bookmarks or internal links to OpenAI's documentation, and it's a reminder that even the location of authoritative information isn't a fixed fact to memorize once.
Why this site records what it got wrong, not just what changed upstream
Alongside genuine upstream changes, this page's sibling — the corrections log referenced throughout this site's research documentation — tracks a different category of change: places this site's own understanding was wrong and got corrected, independent of anything OpenAI actually changed. Per-model rate limits being genuinely published, not absent, is one; the long-context repricing rule being stated on model pages rather than genuinely unpublished is another. Both changed this site's own published figures without any underlying OpenAI change at all — the correction was entirely on this site's side, and it's recorded with the same honesty as an actual upstream price change.
What this table is not
This isn't a claim to have caught every change the moment it happened — a re-verification schedule catches drift on the schedule it runs, not instantaneously. A model release between this site's weekly checks could ship a change that goes unrecorded here for up to that interval. What this table is a claim to is honesty about what's been caught and when, rather than a static reference that implies nothing has ever moved.
Why this matters for anyone planning around published figures
A number's staleness risk isn't visible from the number itself — a price sitting on a page looks exactly the same whether it was checked yesterday or eight months ago. This running record, alongside the verified-on date on every individual fact, is this site's attempt to make that invisible risk visible: not just "here's the current price" but "here's how often prices like this one have actually moved," which is the information that should inform how much slack to build into a budget planned against it.
What a genuinely stable figure looks like against this record
Not everything changes. Several published mechanics — the batch discount's flat percentage, the structure of the four service tiers themselves — have held steady across this site's entire research and re-verification history so far. That stability is itself useful information, distinct from a figure that simply hasn't been checked recently: a number this site has re-verified repeatedly without ever finding a change is a genuinely different, more reliable kind of "current" than one checked once and never revisited. This running record is where that distinction actually becomes visible, rather than both cases looking identical on a single static reference page.
How to use this page alongside the rest of the site
Treat this less as a page to read cover to cover and more as a place to check when something about a model's behavior or price feels different from what you remember planning around — a quick scan here can confirm whether a change actually happened upstream, or whether the discrepancy is worth reporting as something this site's own re-verification hasn't caught yet. Either way, that's more useful than trying to recall from memory whether a number always looked like this, which is exactly the kind of recollection this whole site exists to replace with a checked, dated record instead.
A closing note on what "running" actually commits to
Calling this a running table is a promise, not just a description — it commits this site to keep adding to it rather than letting it freeze at whatever it happened to contain on the day it was first published. A pricing history that stops updating quietly becomes as misleading as a single stale figure would be, just at a larger scale, and the same weekly discipline that keeps individual fact entries current is what keeps this page honest too.
Verified 2026-08-09 against CodexHow facts module (src/data/facts/) — see /about/#accuracy.