Codex App resets Speed from Fast to Standard after restart
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.429.30905 (2345)
What subscription do you have?
ChatGPT Pro
What platform is your computer?
macOS 26.4.1 (25E253), arm64
What issue are you seeing?
Codex App resets the Speed setting from Fast back to Standard after a normal app restart.
This happens even when:
- I explicitly selected Fast in the Codex App UI before restarting.
~/.codex/config.tomlstill containsservice_tier = "fast".~/.codex/.codex-global-state.jsonstill haselectron-persisted-atom-state.has-user-changed-service-tier = true.
The specific state change I observed is:
# Before restarting Codex App, immediately after selecting Speed = Fast
~/.codex/.codex-global-state.json:
electron-persisted-atom-state.default-service-tier = "fast"
electron-persisted-atom-state.has-user-changed-service-tier = true
~/.codex/config.toml:
service_tier = "fast"
# After quitting and reopening Codex App, without updating the app
~/.codex/.codex-global-state.json:
electron-persisted-atom-state.default-service-tier = null
electron-persisted-atom-state.has-user-changed-service-tier = true
~/.codex/config.toml:
service_tier = "fast"
In the UI, default-service-tier = null corresponds to Standard, so the user-visible Speed setting changes back to Standard after restart.
This is not just config.toml being ignored initially. The App UI successfully writes default-service-tier = "fast" when I choose Fast, but the next app launch writes it back to null.
What steps can reproduce the bug?
- Open Codex App on macOS.
- Set Speed to Fast in the App UI.
- Verify local state:
``text``
~/.codex/.codex-global-state.json:
electron-persisted-atom-state.default-service-tier = "fast"
electron-persisted-atom-state.has-user-changed-service-tier = true
- Quit Codex App.
- Reopen Codex App.
- Observe that Speed is now shown as Standard.
- Verify local state again:
``text``
~/.codex/.codex-global-state.json:
electron-persisted-atom-state.default-service-tier = null
electron-persisted-atom-state.has-user-changed-service-tier = true
What is the expected behavior?
If the user explicitly selects Fast in the Codex App UI, a normal app restart should preserve that choice.
default-service-tier should remain "fast", especially when has-user-changed-service-tier is already true.
Additional information
A concrete local repro from my machine:
Before restart:
time: 2026-05-02 18:10:47 CST
default-service-tier = fast
has-user-changed-service-tier = true
config.toml service_tier = "fast"
.codex-global-state.json modified at 18:10:30
After restart:
time: 2026-05-02 18:11:44 CST
Codex App process started at 18:11:06
.codex-global-state.json modified at 18:11:29
default-service-tier = null
has-user-changed-service-tier = true
config.toml service_tier = "fast"
Relevant config:
model = "gpt-5.5"
model_reasoning_effort = "xhigh"
service_tier = "fast"
This appears related to, but not exactly the same as, earlier Fast/config drift reports:
- #14689 reported Codex App misreporting
/faststate fromconfig.toml, but that issue is closed and did not show the App UI writingdefault-service-tier = "fast"and then resetting it tonullon restart. - #18841 reported Fast mode disappearing from settings/chat, but it is also closed and not the same concrete persistence regression.
- #15853 is about the VS Code extension clearing
service_tierbefore a turn, not the macOS App resetting its persisted UI Speed setting on launch. - #19230 discusses
service_tier: nullsemantics and Fast defaults, but this report is specifically about an explicit user-selected Fast preference being overwritten on app restart.
My hypothesis is that the app startup/default-tier synchronization path may be clearing default-service-tier to null when a transient Fast eligibility check returns false, without respecting has-user-changed-service-tier = true. If so, the startup path should avoid overwriting an explicit user preference unless Fast is definitively unavailable and the UI explains that to the user.
15 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I don't think this is a strict duplicate of #20162.
#20162 is mainly about the VS Code extension resetting Normal back to Fast after reopen. This issue is about the macOS Codex App resetting an explicit Fast selection back to Standard after app restart.
The local persisted state shows the App had stored:
default-service-tier = "fast"has-user-changed-service-tier = trueAfter a normal Codex App restart, it rewrote only:
default-service-tier = nullwhile
has-user-changed-service-tierstayedtrueand~/.codex/config.tomlstill containedservice_tier = "fast".So it may share an underlying service-tier persistence path with #20162, but the observable bug and reproduction are different.
I got the same issue
Do we have a solution to this issue ?
Generally, fast mode is automatically turned off in the following situation.
Turn on Plan Mode and design a plan.
Press Enter on the 'Apply this plan' button.
After that, Codex's fast mode will be turned off.
I can confirm this still reproduces on Windows with:
PackageFullName:
OpenAI.Codex_26.429.8261.0_x64__2p2nqsd0c76g0
Before restart:
default-service-tier = "fast"
has-user-changed-service-tier = true
After restart:
default-service-tier = null
has-user-changed-service-tier = true
The state file was rewritten during app startup. The UI then shows Standard, and logs show:
session handler: service_tier: Some(None)
outgoing request: service_tier: "default"
Ref session:
019dfc81-fe32-7253-aad1-7038e868bf17I am having the same issue but opposite- Codex sidebar in VSCode defaults to Fast mode every time I open it, even after setting it to Standard via the dropdown, and setting parameters from the docs (https://developers.openai.com/codex/config-basic#supported-features) manually:
Also, it appears that the
/fastcommand has completely disappeared as of version 0.130.0 in the cli (still do see it in the VSCode extension)I can reproduce/observe the same class of problem on a newer macOS desktop build.
Environment:
26.519.41501com.openai.codex26.5 (25F71)codex-cli 0.133.0Observed state after setting Settings → Speed = Fast and then seeing new chats come up as Normal/Standard after restarting the app:
The local model cache maps
priorityto the UI tier namedFast:But the persisted Electron atom state currently only contains:
and no
default-service-tiervalue.So from the user-facing side, Settings still shows Fast, and
~/.codex/config.tomlhasdefault-service-tier = "priority", but after an app restart each newly created chat appears to initialize its Speed selector as Normal/Standard. This looks like the new-chat initialization path is not reading the same persisted setting as the Settings screen, or it is falling back to the missing Electron atom value despite the TOML default being present.I have this issue as well
Fresh confirmation from another Windows + SSH remote workflow on 2026-05-31.
User-visible behavior: every time Codex is opened, the Speed selector comes back as Normal/Standard instead of preserving the last explicit choice, Fast.
This matters especially for SSH remote projects because the user expects the speed tier to be a persistent app/session preference across app restarts, not something that has to be re-selected for each remote work session.
I did not open a new issue for this because it appears to match this issue's core symptom: an explicit Fast selection is not reliably used when the app initializes new chats after restart.
I added a read-only diagnostic for this exact Speed/Fast persistence shape in
trace-to-skill@0.1.67:It does not dump raw
config.tomlor raw.codex-global-state.json; it reports only the small state needed for this issue:serviceTier,configDefaultServiceTier,globalDefaultServiceTier,globalHasUserChangedServiceTier, and aservice_tier_persistence_driftfinding when config requests Fast but global state hasdefault-service-tier = nullwhilehas-user-changed-service-tier = true.I verified the published package from a clean temp install against a minimal repro with
service_tier = "fast"and global statedefault-service-tier: null; it producedservice_tier_persistence_drift.Release: https://github.com/grnbtqdbyx-create/trace-to-skill/releases/tag/v0.1.67
That is one very annoying behavior.
I even reinstalled the UI app completely, wiped all
~/.codex,~/Library/Application Support/...,~/Library/Caches/...etc. Did not help.Please fix or give instructions on how to resolve.
+111111.
it is 2026-06-03, is not fixed yet. why?
please fix this.
Oh my, in the latest update the setting survives after restarts! Thank you! 👏
Finally fixed