Moving a CI Pipeline from GPT-5.4 to GPT-5.6
A CI pipeline calling GPT-5.4 today is a reasonable candidate to move to a newer generation — and since September there are two to choose from, GPT-5.6 and GPT-6. This page works through the GPT-5.6 move it was written for and flags where the GPT-6 models change the answer. Either way, "which model" is the first decision, and it's worth making deliberately rather than inheriting whatever the CLI's default happens to be. CI usually runs Codex with an API key, so the ChatGPT sign-in retirements — GPT-5.4 left Codex there on August 31, 2026 — don't force this move; the reasons to make it are recency and cost.
Start from what the pipeline actually needs, not the newest name
GPT-5.4's context window and rate-limit group match Sol and Terra exactly, which means a pipeline currently sized against GPT-5.4 doesn't need to be re-sized for either of those two specifically. Terra offers the same window and throughput at a lower price than GPT-5.4 itself — for a cost-sensitive CI pipeline, checking Terra before defaulting to Sol is worth the two minutes it takes, since there's a real chance the "upgrade" also happens to be a cost reduction rather than an increase.
Re-run the actual pipeline cost through the estimator before switching
Don't assume the cost moves the way the headline price does — caching is where it can surprise you, in either direction. GPT-5.4 adds no cache-write surcharge: a written token bills at its ordinary input rate. GPT-5.6 models bill writes at a cache-write rate instead. On Terra that write rate is exactly GPT-5.4's input rate, so writes cost the same and everything else is cheaper. On Sol the write rate sits well above it, so a step that writes fresh prefixes and rarely reads them back gets dearer. On Luna it sits below it. A step that writes a stable system prompt once per run and reads it back across a busy day wins on any of them; one that writes per run and almost never hits needs pricing with the caching calculator first.
Update pinned model identifiers explicitly
If your pipeline configuration pins an exact model id — a common, sensible practice for reproducible CI behavior — that pin needs updating explicitly as part of this migration; nothing about GPT-5.6 being "current" changes a pinned GPT-5.4 identifier automatically. Treat the model id the same way you'd treat a pinned dependency version: a deliberate bump, tested before it merges, not an assumed automatic update.
Test the pipeline's actual behavior, not just its cost
A model migration can shift behavior in ways a cost comparison alone won't catch — a newer model's more recent knowledge cutoff can change how it handles a task that references something from after GPT-5.4's cutoff, for better or occasionally for worse if your pipeline depended on a specific older behavior. Running the migrated pipeline against a representative sample of real historical inputs, and comparing outputs against what GPT-5.4 produced for the same inputs, is worth doing before rolling the change out broadly, the same diligence you'd apply to any other dependency upgrade that could change behavior.
Rate limits carry over, but confirm it for your actual tier
Because GPT-5.6 Sol and Terra share GPT-5.4's rate-limit group, a pipeline that wasn't previously rate-limited on GPT-5.4 is unlikely to become newly rate-limited purely from this migration — but "unlikely" isn't "confirmed," and checking your pipeline's actual request rate against the published table for whichever GPT-5.6 model you land on, at your account's actual tier, is worth the few minutes it takes rather than discovering a mismatch from a wave of 429s after rollout.
Roll out gradually, not all at once
Migrating a subset of repositories or a subset of pipeline runs first — a canary rollout, the same pattern you'd use for any other infrastructure change — surfaces cost or behavior surprises on a smaller blast radius before the migration reaches every repository a team runs. This matters more for CI specifically than for a lot of other Codex usage, because CI runs automatically and repeatedly without a human in the loop noticing a problem turn by turn the way an interactive session would.
What to actually check off before calling the migration done
Confirm the specific GPT-5.6 model chosen deliberately rather than defaulted into, re-run representative cost estimates including the cache-write charge if caching is in play, update any pinned model identifiers, spot-check output behavior against a real historical sample, and confirm rate-limit headroom at your actual account tier. Each of these is quick individually; skipping any one of them is exactly how a "simple" model swap turns into an unplanned production surprise weeks later.
Consider Luna for a check that doesn't need frontier-level reasoning
Not every CI step calling GPT-5.4 actually needs a frontier-tier model at all — a simple, well-scoped check (a formatting pass, a straightforward policy lint) may be just as well served by a Luna model at a fraction of Terra or Sol's price. GPT-6 Luna now undercuts GPT-5.6 Luna on every price cell on the same rate-limit table, so if you're re-evaluating the step anyway, test it first. This migration is a natural moment to reassess not just "which GPT-5.6" but "does this step even need this much model," since a pipeline built around GPT-5.4 out of habit rather than deliberate choice may never have asked that question in the first place.
Watching the first week of the new pipeline closely
Even after a careful pre-migration review, the first real week running the new model in production CI is worth watching more closely than usual — actual commit patterns, actual diff sizes, and actual edge cases in real pull requests are a different, messier test than any pre-migration sample, however representative you tried to make it. Treating the first week as an extended canary period, with someone actually checking cost and behavior daily rather than assuming the pre-migration testing covered everything, catches the small class of issues that only show up at real production volume and variety.
Documenting the migration for the next one
This won't be the last model migration this pipeline goes through — the GPT-6 releases arrived within weeks of GPT-5.6, and the next generation will prompt the same set of questions again. Writing down what was checked this time, what the actual cost delta turned out to be, and any surprises encountered along the way turns this migration into a reusable checklist for the next one, rather than a one-off exercise nobody remembers the details of when it's time to do this again.
Verified 2026-10-28 against CodexHow facts module (src/data/facts/) — see /about/#accuracy.