Here’s the fingerprint nobody expected to find in a frontier model: GPT-5.5 responses in Codex disproportionately land at exactly reasoning_output_tokens = 516, with additional fixed-boundary spikes around 1034 and 1552. Not roughly 516. Exactly. And when a run stops there, it’s often wrong.
The report is issue #30364 on the openai/codex repo, filed June 27, 2026. As of late June 2026, it’s gaining traction on Hacker News and Reddit – mostly because everyone’s been quietly complaining that Codex quality feels off, and this is the first hard telemetry that explains why.
The takeaway if you’re using GPT-5.5 in Codex today
Check your JSONL logs. If you see runs finishing at reasoning_output_tokens exactly 516, and those runs produced bad code, you’re hit. Two immediate fixes: pin to a different Codex model, or run your critical tasks at a reasoning effort where 516 isn’t the boundary. Details below.
Don’t panic-migrate. The report is careful not to claim hidden chain-of-thought truncation – the narrower claim is that Codex telemetry shows a GPT-5.5-specific fixed-token clustering anomaly consistent with thresholded reasoning-budget behavior. Something is capping the thinking. What that something is remains unresolved.
Background: what a reasoning token actually is
Reasoning tokens are the invisible “thinking” work. Reasoning models use them to break down the prompt and consider multiple approaches before generating a response. You don’t see them in the chat window, but they still occupy space in the model’s context window and are billed as output tokens.
The number of reasoning tokens a model burns on a given prompt should look like a smooth-ish distribution – some easy prompts finish in 80 tokens, some hard ones burn 3,000. What you should not see is a spike at one exact number. That’s what makes the 516 finding weird.
Why the 516 clustering is real (not a stats fluke)
Two things convinced skeptics this isn’t noise.
First, scale. The dataset covers 390,195 response-level token records including 3,363 exact-516 events, and GPT-5.5 accounted for 82.0% of exact-516 events while representing only 19.3% of all responses in the sample.That’s a 33.6x clustering ratio versus the non-GPT-5.5 baseline.
Second, reproduction. An independent developer scanning 4,487 files (180,559 records) found GPT-5.5’s exact-516 rate at 50.1% of all responses reaching ≥516 tokens, against just 0.28% for gpt-5.3-codex on the same local machine – roughly a 180x difference between models.
The trend also got worse over time. Monthly data from aiweekly.co shows exact-516 clustering rising from 0.11% of GPT-5.5 responses in February 2026 to 53.30% by May, while mean reasoning tokens for the model fell from 268.1 in February to 106.9 in May. The model is thinking less, and when it stops thinking, it stops at the same number.
Method A vs Method B: how to route around it
There are two practical mitigations. Neither is perfect. Here’s the head-to-head.
| Aspect | Method A: Downgrade the model | Method B: Bump reasoning effort |
|---|---|---|
| Config change | model = “gpt-5.3-codex” or “gpt-5.4” | model_reasoning_effort = “xhigh” |
| Fixes 516 clustering? | Yes – the anomaly is model-specific | Partially – companion issue #29353 shows xhigh also hits 516 |
| Cost impact | Lower per-call cost | Significantly more reasoning tokens burned |
| Capability loss | Loses GPT-5.5-specific improvements | None |
| Best for | Anyone with tight deadlines who can’t debug telemetry | Users who need GPT-5.5 features and can absorb the cost |
Method A wins for most people right now. Companion issue #29353 documented task-level runs where GPT-5.5 xhigh terminated at exactly 516 reasoning tokens and returned wrong final answers – those were xhigh runs. Cranking effort higher doesn’t guarantee you escape the boundary. You might just pay more to hit it anyway.
Walkthrough: downgrading and detecting in one sitting
This takes about ten minutes. Two files, one command.
Step 1 – Pin a different model in config
Open ~/.codex/config.toml. If it doesn’t exist, create it. Add:
# ~/.codex/config.toml
model = "gpt-5.3-codex"
model_reasoning_effort = "high"
[profiles.gpt55]
model = "gpt-5.5"
model_reasoning_effort = "xhigh"
Default is now the older model. When you specifically want to test GPT-5.5, launch with codex --profile gpt55 – clean A/B, not a permanent switch. The Codex config reference notes model_reasoning_effort applies via the Responses API only, and xhigh is model-dependent (as of the June 2026 config reference), so confirm xhigh is accepted on whichever model you point it at.
Step 2 – Turn on JSON output so you can see reasoning tokens
Interactive Codex hides the raw numbers. Run in exec mode with JSON:
codex exec --json "refactor the auth middleware to use JWT" > run.jsonl
Since v0.125, codex exec –json reports reasoning token usage in turn completion events, which lets you measure the cost impact of different model_reasoning_effort settings per task type rather than guessing.
Step 3 – Grep for the boundary
Search the JSONL for any turn that landed at 516, 1034, or 1552:
grep -oE '"reasoning_output_tokens":(516|1034|1552)[^0-9]' run.jsonl
Hits on GPT-5.5 runs but not on gpt-5.3-codex? Congratulations – you’ve reproduced the anomaly on your own machine. Save the JSONL. That’s exactly the kind of trace OpenAI’s Codex team is asking for on the issue.
Pro tip: If you’re mid-session and /status shows a run just finished at 516 with a shaky answer, hit Alt+. once to bump reasoning effort up a level and re-ask the exact same question. If the second run finishes above 516 and gets the right answer, that’s your smoking gun – log both and file a reproduction.
Edge cases nobody’s talking about
Three things the news coverage is missing.
- Clearing your cache won’t save you. The lazy explanation for the clustering is that cached inputs are shortening reasoning. But one reproducer broke the pattern down by cache-ratio bucket and found the exact-516 concentration was actually highest in lower cached-input-token bins, not simply an artifact of prompt caching. It’s not a caching shortcut.
- Silent failures: you get billed, you get nothing. If a 516-clustered run also hits max_output_tokens during the thinking phase, the API returns status incomplete with reason max_output_tokens, and this can occur before any visible output tokens are produced – meaning you pay for input and reasoning tokens without receiving a visible response. Watch your billing dashboard after any run you didn’t see complete cleanly.
- Mid-session upgrade prompt? Don’t accept it blindly.Codex CLI v0.124 changed behavior so accepting a model upgrade mid-session resets reasoning effort to the new model’s default rather than carrying the prior setting over. If you accepted an upgrade from GPT-5.4 to GPT-5.5 last week and stopped seeing your usual xhigh behavior, that’s why. Re-set it explicitly after any upgrade.
One thing that’s still unknown: whether this is a serving-side routing artifact, a training regression, or an actual hard-coded budget. The report author says the data doesn’t prove any of them. OpenAI hasn’t confirmed which yet.
What to do tonight
Follow Step 1 above to pin gpt-5.3-codex as your default. Then run one real task under codex exec --json and grep the log for 516. Find hits? Comment on issue #30364 with your trace – more independent reproductions means a faster official response from OpenAI.
FAQ
Is it safe to keep using GPT-5.5 Codex right now?
For low-stakes work, yes. For anything where a wrong answer costs real time – security audits, migrations, production hotfixes – pin to gpt-5.3-codex until this is resolved.
Does the 516 issue affect GPT-5.5 outside of Codex, like in the ChatGPT web app or direct Responses API calls?
The report is scoped strictly to Codex CLI telemetry, so there’s no equivalent aggregate data for other surfaces. Here’s the nuance most coverage skips: the reproductions came from JSONL logs specific to Codex’s use, which sets its own reasoning parameters. If you’re calling GPT-5.5 directly via the Responses API with your own max_output_tokens, you might not see the same boundary – but nobody has published that dataset yet. Treat it as an open question.
Should I just crank reasoning effort to xhigh and forget about it?
Probably not. Companion issue #29353 showed xhigh runs still hit the 516 boundary and returned wrong answers, and a Hacker News thread on the issue included reports that nearly half of sampled xhigh runs still returned wrong solutions. Test with your own evals before committing budget to a higher effort level.