GPT 5.5 degradation over time
GPT-5.5 Codex behavior appears degraded over time in a complex engineering workflow
Type of Behavior Issue
Other unexpected behavior / suspected Codex model or runtime quality regression.
Summary
Since the GPT-5.5 rollout window on April 24, 2026, my local Codex usage shows a material degradation in workflow quality over time. This is based on local Codex session JSONL files, local Codex thread metadata, and local app logs.
The strongest signal is not one isolated bad answer. It is a trend across many sessions:
- More user frustration/correction prompts over time.
- More repeated restarts with similar prompts.
- More visible model concessions such as "you're right" / equivalent Russian phrasing.
- More stop-like or premature-completion language.
- More reasoning-loop phrases in visible assistant messages.
- The trend remains visible when comparing the same anonymized projects over time.
This is observational local telemetry, not a formal OpenAI-side A/B replay. It is still strong enough to justify investigation.
What I Expected
Codex should behave consistently across long-running engineering workflows:
- read relevant files/logs before making changes;
- follow explicit instructions and repository conventions;
- avoid premature stopping or permission-seeking when the task is clearly not done;
- avoid repeated incorrect fixes that require user interruption or correction;
- maintain roughly stable quality inside the same projects over time.
What Happened
Local logs show that later GPT-5.5 sessions required substantially more correction and supervision.
Aggregate GPT-5.5 Trend
| Period | Dates | Prompts | Frustration-marked prompts | Frustration rate | Score / 100 prompts | Tool calls | User interrupts / 1K tool calls |
|---|---:|---:|---:|---:|---:|---:|---:|
| Baseline | Apr 24 - May 10 | 786 | 31 | 3.9% | 13.2 | 11,930 | 22.55 |
| Transition | May 11 - May 24 | 1,097 | 64 | 5.8% | 18.6 | 24,781 | 11.42 |
| Late | May 25 - Jun 7 | 819 | 99 | 12.1% | 57.8 | 20,006 | 16.10 |
Overall GPT-5.5 sample:
- 2,702 user prompts
- 56,717 tool calls
- 530 prompt-bearing sessions
- 194 / 2,702 prompts with frustration markers
- 21 repeated-start clusters / 67 repeated starts
Behavioral Signals
| Metric | Baseline | Transition | Late |
|---|---:|---:|---:|
| Frustration indicators in user prompts | 3.9% | 5.8% | 12.1% |
| User corrections | 17 | 30 | 65 |
| User interrupts | 269 | 283 | 322 |
| Stop-like assistant phrases | 8 | 2 | 32 |
| Reasoning-loop phrases | 23 | 34 | 98 |
| Model concessions: "you're right" / equivalent | 16 | 33 | 18 |
| Stronger self-admitted failures | 2 | 1 | 5 |
The "you're right" signal is important because it usually appears after the user corrects the model. It is not automatically bad, but at this volume it is a useful proxy for the model needing external correction.
Same-Project Controls
Project names are anonymized for NDA reasons. The same-project trend weakens the explanation that this is only task mix.
| Project | Baseline | Transition | Late |
|---|---:|---:|---:|
| Project A | 2 / 65 (3.1%) | 11 / 173 (6.4%) | 28 / 138 (20.3%) |
| Project B | 4 / 140 (2.9%) | 11 / 260 (4.2%) | 40 / 269 (14.9%) |
| Project C | 9 / 134 (6.7%) | 4 / 95 (4.2%) | 7 / 105 (6.7%) |
| Project D | 8 / 115 (7.0%) | 3 / 61 (4.9%) | 0 / 38 (0.0%) |
| Project E | 5 / 176 (2.8%) | 22 / 448 (4.9%) | 0 / 99 (0.0%) |
| Project F | n/a | n/a | 8 / 44 (18.2%) |
The strongest same-project regressions are Project A and Project B.
Tool-Behavior Check
One important nuance: my data does not show the exact same "research-first -> edit-first" collapse described in some other degradation reports.
For GPT-5.5, Read:Edit actually increased late:
| Period | Read:Edit | Research:Mutation | Edit without prior read | Edit without recent read |
|---|---:|---:|---:|---:|
| Baseline | 2.81 | 3.82 | 11.0% | 11.0% |
| Transition | 3.21 | 4.47 | 12.9% | 13.3% |
| Late | 5.10 | 5.98 | 10.1% | 10.2% |
So the issue is not simply "the model stopped reading before editing." The stronger evidence is the increase in correction/frustration signals, model concessions, stop-like language, same-project degradation, and repeated restarts.
Reasoning Metrics Caveat
Codex reasoning content in my local logs is encrypted/redacted, so I cannot inspect reasoning blocks directly.
The available proxy is reasoning_output_tokens from local token-count events:
| Period | Token count events | Median reasoning tokens | Mean reasoning tokens |
|---|---:|---:|---:|
| Baseline | 10,639 | 18 | 121 |
| Transition | 21,405 | 18 | 117 |
| Late | 12,817 | 23 | 131 |
This does not prove reasoning quality changed. It only shows that visible token counters alone do not explain the degradation.
Methodology
Data sources:
- Local Codex session JSONL files.
- Local Codex thread metadata database.
- Local Codex app log database.
Date range:
- Start: April 24, 2026 14:04 Asia/Novosibirsk, based on the local GPT-5.5 publish/promo window.
- End: June 7, 2026.
Exclusions:
- The analysis thread itself was excluded to avoid contaminating profanity/frustration counts.
- Public issue text excludes raw prompts, local file paths, repository names, and source excerpts for NDA reasons.
Classification:
- Frustration markers are rule-based English/Russian patterns plus profanity lexicons.
- "User correction" includes phrases equivalent to "not what I asked", "you didn't", "wrong", "again", and Russian equivalents.
- "Model concession" includes "you're right", "you are right", "ты прав", and "вы правы".
- Tool behavior was parsed from local function/custom tool-call events.
Requested Investigation
- Compare GPT-5.5 model/backend snapshots used by Codex between April 24, 2026 and June 7, 2026.
- Check whether Codex runtime prompts, tool planning, or tool-call policies changed during this period.
- Replay representative failed sessions against earlier/current snapshots, if available internally.
- Separate model-quality changes from connector/runtime failures.
- Expose stable local telemetry for power users: reasoning token counters, tool-planning metrics, interruption/correction counters, and model concession counters.
python3 codex_degradation_analyzer_public.py \
--codex-home ~/.codex \
--cutoff "2026-04-24T14:04:00+07:00" \
--timezone "YOUR_ZONE" \
--model gpt-5.5 \
--out ./codex_degradation_public_out
codex_degradation_analyzer_public.py
<img width="1280" height="720" alt="Image" src="https://github.com/user-attachments/assets/4f5f4bef-3615-45b8-8807-ef34d1c63f1f" />
<img width="1280" height="720" alt="Image" src="https://github.com/user-attachments/assets/c3b083c6-b056-45b1-9c66-ccc0bd8f018e" />
10 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Similar findings on my end. Codex has stoppped following through, answering and gathering the right information preemptively as it would initially - it now half-bakes tasks and provides incomplete answers with guesses, even when instructions specify differently. Very annoying. Iterative model deployment is honestly a nightmare, we get amazing day 1 models that turn into garbage. You can hardly justify the doubling in price for 5.5 after these regressions.
Here's hoping for hardset model deployments with explicit patch notes and versioning. This is the standard for all software services, I don't see why this service should be any different. We should be able to know gpt 5.5 v1 from vX and anything inbetween. This benefits both the Developers, enabling them to pinpoint bugs and issues, and improves UX by providing clarity, understanding, reducing confusion and frustration.
Standard pattern. New model comes out, works great for a month or so, and then we all get cortisol spikes. I hate this game.
I ran the same style of local analysis on my own Codex data and got a very similar result. I extended the lists of profanity and corrections, so the absolute percentages here should not be compared 1:1 with the original post, but the overall trend is similar.
My GPT-5.5 results:
| Period | Prompts | Frustration rate | Score / 100 | Tool calls | Interrupts / 1K tools |
|---|---:|---:|---:|---:|---:|
| baseline | 1146 | 4.5% | 9.5 | 30005 | 1.27 |
| transition | 2356 | 0.3% | 2.7 | 38768 | 1.08 |
| late | 715 | 11.3% | 81.7 | 16287 | 2.09 |
The late period is not just "a bit worse":
0.3%in transition to11.3%in late2.7to81.7per 100 prompts55.8%to78.0%58.4%to82.7%For one project in particular, the difference is even clearer:
1786prompts,5frustrated (0.3%)219prompts,51frustrated (23.3%)I also ran the same analyzer on GPT-5.4 for comparison. My 5.4 sample is mostly late-period usage because I only switched recently after getting frustrated with 5.5, so this is not a full apples-to-apples baseline/transition/late comparison. I think it is still useful as a late-period reference, and it looks materially better than GPT-5.5 late on the same general workflow.
| Model / Period | Prompts | Frustration rate | Score / 100 | Edit without prior read | Edit without recent read |
|---|---:|---:|---:|---:|---:|
| GPT-5.5 late | 715 | 11.3% | 81.7 | 78.0% | 82.7% |
| GPT-5.4 late | 547 | 6.0% | 14.0 | 64.5% | 63.3% |
For the same project specifically:
219prompts,51frustrated (23.3%)302prompts,30frustrated (9.9%)Of course this does not take into account the kind of work being completed at any one time, perhaps some tasks are just more frustrating that others, and if this was isolated to my own usage I would be more inclined to agree with that sentiment, however this is a widely reported issue and the data does point towards a degradation of model behavior.
I also looked at Codex CLI version. There is some correlation, but for me it does not look like the main cause. I would treat the smaller CLI-version buckets cautiously, though, because some of them have fairly small prompt counts.
My current read is that the primary effect is a model/runtime behavior shift in GPT-5.5 over time, with CLI version at most acting as a secondary modifier.
More detailed metrics
<details><summary>5.5</summary>
<p>
Period Metrics
| Period | Prompts | Frustration rate | Score / 100 | Tool calls | Interrupts / 1K tools | You are right | User corrections |
|---|---:|---:|---:|---:|---:|---:|---:|
| baseline | 1146 | 4.5% | 9.5 | 30005 | 1.27 | 1 | 98 |
| transition | 2356 | 0.3% | 2.7 | 38768 | 1.08 | 0 | 40 |
| late | 715 | 11.3% | 81.7 | 16287 | 2.09 | 0 | 71 |
Tool Behavior
| Period | Read:Edit | Research:Mutation | Edit without prior read | Edit without recent read |
|---|---:|---:|---:|---:|
| baseline | 0.48 | 2.19 | 56.0% | 57.1% |
| transition | 0.99 | 2.22 | 55.8% | 58.4% |
| late | 0.59 | 1.90 | 78.0% | 82.7% |
Tool Behavior Detail
| Period | Tools/Prompt | Search calls | Test:Mutation | Post-mutation tests | Unique reads | Unique edits | Shell writes |
|---|---:|---:|---:|---:|---:|---:|---:|
| baseline | 26.18 | 5595 | 0.25 | 84.2% | 2640 | 665 | 0.0% |
| transition | 16.46 | 6205 | 0.09 | 98.6% | 4965 | 1553 | 0.2% |
| late | 22.78 | 2753 | 0.28 | 99.3% | 1358 | 579 | 0.1% |
CLI Version Frustration
| CLI Version | Sessions | Prompts | Frustration rate | Score / 100 | User corrections | You are right |
|---|---:|---:|---:|---:|---:|---:|
| 0.137.0-alpha.4 | 4 | 15 | 0.0% | 0.0 | 2 | 0 |
| 0.135.0-alpha.1 | 14 | 162 | 28.4% | 170.9 | 26 | 0 |
| 0.133.0 | 8 | 280 | 4.6% | 17.4 | 34 | 0 |
| 0.131.0-alpha.9 | 115 | 812 | 3.5% | 38.1 | 33 | 0 |
| 0.128.0-alpha.1 | 631 | 2502 | 0.2% | 1.2 | 84 | 0 |
| 0.126.0-alpha.8 | 95 | 419 | 11.0% | 21.6 | 27 | 1 |
| 0.125.0-alpha.3 | 11 | 27 | 0.0% | 0.0 | 3 | 0 |
CLI Version by Period
| Period | CLI Version | Sessions | Prompts | Frustration rate | Score / 100 | Tools/Prompt | Read:Edit | Edit without prior read |
|---|---|---:|---:|---:|---:|---:|---:|---:|
| baseline | 0.128.0-alpha.1 | 102 | 700 | 0.7% | 2.7 | 18.83 | 0.38 | 65.9% |
| baseline | 0.126.0-alpha.8 | 95 | 419 | 11.0% | 21.6 | 37.84 | 0.79 | 20.4% |
| baseline | 0.125.0-alpha.3 | 11 | 27 | 0.0% | 0.0 | 35.85 | 0.40 | 93.7% |
| transition | 0.131.0-alpha.9 | 110 | 554 | 1.1% | 9.2 | 22.65 | 0.42 | 65.5% |
| transition | 0.128.0-alpha.1 | 530 | 1802 | 0.1% | 0.7 | 14.55 | 2.17 | 35.9% |
| late | 0.137.0-alpha.4 | 4 | 15 | 0.0% | 0.0 | 75.40 | 0.40 | 95.0% |
| late | 0.135.0-alpha.1 | 14 | 162 | 28.4% | 170.9 | 36.19 | 0.48 | 59.8% |
| late | 0.133.0 | 8 | 280 | 4.6% | 17.4 | 16.45 | 0.83 | 83.1% |
| late | 0.131.0-alpha.9 | 9 | 258 | 8.5% | 100.2 | 18.17 | 0.54 | 90.7% |
CLI Version Tool Behavior
| CLI Version | Tools/Prompt | Read:Edit | Research:Mutation | Test:Mutation | Edit without prior read | Shell writes |
|---|---:|---:|---:|---:|---:|---:|
| 0.137.0-alpha.4 | 75.40 | 0.40 | 1.39 | 0.50 | 95.0% | 0.0% |
| 0.135.0-alpha.1 | 36.19 | 0.48 | 2.19 | 0.26 | 59.8% | 0.3% |
| 0.133.0 | 16.45 | 0.83 | 2.20 | 0.25 | 83.1% | 0.0% |
| 0.131.0-alpha.9 | 21.23 | 0.45 | 1.35 | 0.18 | 72.0% | 0.0% |
| 0.128.0-alpha.1 | 15.75 | 0.91 | 2.12 | 0.17 | 57.0% | 0.2% |
| 0.126.0-alpha.8 | 37.84 | 0.79 | 5.96 | 0.14 | 20.4% | 0.0% |
| 0.125.0-alpha.3 | 35.85 | 0.40 | 1.38 | 0.00 | 93.7% | 0.0% |
</p>
</details>
<details><summary>5.4</summary>
<p>
Period Metrics
| Period | Prompts | Frustration rate | Score / 100 | Tool calls | Interrupts / 1K tools | You are right | User corrections |
|---|---:|---:|---:|---:|---:|---:|---:|
| baseline | 2 | 0.0% | 0.0 | 63 | 0.00 | 0 | 0 |
| transition | 0 | 0.0% | 0.0 | 0 | 0.00 | 0 | 0 |
| late | 547 | 6.0% | 14.0 | 6035 | 1.99 | 2 | 44 |
Tool Behavior
| Period | Read:Edit | Research:Mutation | Edit without prior read | Edit without recent read |
|---|---:|---:|---:|---:|
| baseline | 3.00 | 3.80 | 100.0% | 100.0% |
| transition | | | 0.0% | 0.0% |
| late | 0.38 | 1.44 | 64.5% | 63.3% |
Tool Behavior Detail
| Period | Tools/Prompt | Search calls | Test:Mutation | Post-mutation tests | Unique reads | Unique edits | Shell writes |
|---|---:|---:|---:|---:|---:|---:|---:|
| baseline | 31.50 | 10 | 0.00 | 0.0% | 19 | 3 | 0.0% |
| transition | 0.00 | 0 | | 0.0% | 0 | 0 | 0.0% |
| late | 11.03 | 1113 | 0.24 | 99.5% | 622 | 286 | 1.0% |
CLI Version Frustration
| CLI Version | Sessions | Prompts | Frustration rate | Score / 100 | User corrections | You are right |
|---|---:|---:|---:|---:|---:|---:|
| 0.137.0-alpha.4 | 12 | 298 | 8.4% | 22.9 | 21 | 1 |
| 0.136.0-alpha.2 | 32 | 187 | 4.3% | 4.6 | 17 | 0 |
| 0.133.0 | 1 | 55 | 0.0% | 0.0 | 5 | 1 |
| 0.128.0-alpha.1 | 1 | 1 | 0.0% | 0.0 | 0 | 0 |
| 0.126.0-alpha.8 | 1 | 1 | 0.0% | 0.0 | 0 | 0 |
| 0.0.0 | 1 | 7 | 0.0% | 0.0 | 1 | 0 |
CLI Version by Period
| Period | CLI Version | Sessions | Prompts | Frustration rate | Score / 100 | Tools/Prompt | Read:Edit | Edit without prior read |
|---|---|---:|---:|---:|---:|---:|---:|---:|
| baseline | 0.128.0-alpha.1 | 1 | 1 | 0.0% | 0.0 | 28.00 | | 0.0% |
| baseline | 0.126.0-alpha.8 | 1 | 1 | 0.0% | 0.0 | 35.00 | 0.67 | 100.0% |
| late | 0.137.0-alpha.4 | 12 | 298 | 8.4% | 22.9 | 10.23 | 0.33 | 71.6% |
| late | 0.136.0-alpha.2 | 32 | 187 | 4.3% | 4.6 | 14.86 | 0.50 | 52.5% |
| late | 0.133.0 | 1 | 55 | 0.0% | 0.0 | 1.13 | | 0.0% |
| late | 0.0.0 | 1 | 7 | 0.0% | 0.0 | 20.86 | 0.25 | 37.5% |
CLI Version Tool Behavior
| CLI Version | Tools/Prompt | Read:Edit | Research:Mutation | Test:Mutation | Edit without prior read | Shell writes |
|---|---:|---:|---:|---:|---:|---:|
| 0.137.0-alpha.4 | 10.23 | 0.33 | 0.96 | 0.15 | 71.6% | 0.0% |
| 0.136.0-alpha.2 | 14.86 | 0.50 | 2.46 | 0.33 | 52.5% | 3.1% |
| 0.133.0 | 1.13 | | | | 0.0% | 0.0% |
| 0.128.0-alpha.1 | 28.00 | | | 0.00 | 0.0% | 0.0% |
| 0.126.0-alpha.8 | 35.00 | 0.67 | 2.20 | 0.00 | 100.0% | 0.0% |
| 0.0.0 | 20.86 | 0.25 | 1.60 | 0.68 | 37.5% | 0.0% |
</p>
</details>
<details><summary>Script</summary>
<p>
codex_degradation_analyzer_public.py
</p>
</details>
codex completely ruined my repo's main function is there any possible temporary solution to this?
The last 72 hours have been unbearable. Typical OpenAI to not acknowledge or give a shit. Fuck you.
use the chinese models
It feels horrible for the last 5 days and degraded for a couple of weeks. Normally when I tell it to work for at least 2 hours on an open ended task with constantly improvable target, it did so. Now when asked the same thing, it will just try to wait out the 2 hours?
That is just a single anecdotal situation. Having this constantly with all our subscriptions in the last days.
Feels like one of those horrible token optimized
*-maxmodels we had back in the day.Intentional or unintentional they can't handle both normal 5.5 usage and 5.6 training/tollout/testing?
i have switched to zed and glm 5.2
I think im better now @planetzalex
I am observing the same pattern with GPT-5.4 that I saw a few months ago with GPT-5.3.
During the first few weeks after GPT-5.3 was released, it produced high-quality outputs. However, a few weeks before GPT-5.4 came out, the quality dropped significantly.
Now I am seeing the same thing with GPT-5.4. There are days when using it results in negative productivity: it is faster to code manually than to fix a simple task through dozens of corrections.
it's degraded horribly in the last few days. degraded so bad that it's almost impossible to work with. same codebase, same tasks, same harness, same model, different outcome. i hope it's just a "preparation" for an upcoming 5.6 release