Codex App resets Speed from Fast to Standard after restart

Resolved 💬 15 comments Opened May 2, 2026 by gydx6 Closed Jun 4, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

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.toml still contains service_tier = "fast".
  • ~/.codex/.codex-global-state.json still has electron-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?

  1. Open Codex App on macOS.
  2. Set Speed to Fast in the App UI.
  3. 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
``

  1. Quit Codex App.
  2. Reopen Codex App.
  3. Observe that Speed is now shown as Standard.
  4. 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 /fast state from config.toml, but that issue is closed and did not show the App UI writing default-service-tier = "fast" and then resetting it to null on 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_tier before a turn, not the macOS App resetting its persisted UI Speed setting on launch.
  • #19230 discusses service_tier: null semantics 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.

View original on GitHub ↗

15 Comments

github-actions[bot] contributor · 2 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #20162

Powered by Codex Action

gydx6 · 2 months ago

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 = true

After a normal Codex App restart, it rewrote only:

  • default-service-tier = null

while has-user-changed-service-tier stayed true and ~/.codex/config.toml still contained service_tier = "fast".

So it may share an underlying service-tier persistence path with #20162, but the observable bug and reproduction are different.

GGBondBlueWhale · 2 months ago

I got the same issue

atikshaikh786-max · 2 months ago

Do we have a solution to this issue ?

azeek · 2 months ago

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.

elringus · 2 months ago

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-7038e868bf17

jaspermacnaughton · 2 months ago

I 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:

service_tier = "flex"

[features]
fast_mode = false

Also, it appears that the /fast command has completely disappeared as of version 0.130.0 in the cli (still do see it in the VSCode extension)

keeperxy · 1 month ago

I can reproduce/observe the same class of problem on a newer macOS desktop build.

Environment:

  • Codex Desktop: 26.519.41501
  • Bundle identifier: com.openai.codex
  • macOS: 26.5 (25F71)
  • Codex CLI installed locally: codex-cli 0.133.0

Observed state after setting Settings → Speed = Fast and then seeing new chats come up as Normal/Standard after restarting the app:

# ~/.codex/config.toml
service_tier = "fast"
default-service-tier = "priority"

The local model cache maps priority to the UI tier named Fast:

{
  "slug": "gpt-5.5",
  "service_tiers": [
    {
      "id": "priority",
      "name": "Fast",
      "description": "1.5x speed, increased usage"
    }
  ],
  "additional_speed_tiers": ["fast"]
}

But the persisted Electron atom state currently only contains:

has-user-changed-service-tier=true

and no default-service-tier value.

So from the user-facing side, Settings still shows Fast, and ~/.codex/config.toml has default-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.

nimz · 1 month ago

I have this issue as well

chac4l · 1 month ago

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.

grnbtqdbyx-create · 1 month ago

I added a read-only diagnostic for this exact Speed/Fast persistence shape in trace-to-skill@0.1.67:

npx trace-to-skill@0.1.67 config-audit ~/.codex --format json

It does not dump raw config.toml or raw .codex-global-state.json; it reports only the small state needed for this issue: serviceTier, configDefaultServiceTier, globalDefaultServiceTier, globalHasUserChangedServiceTier, and a service_tier_persistence_drift finding when config requests Fast but global state has default-service-tier = null while has-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 state default-service-tier: null; it produced service_tier_persistence_drift.

Release: https://github.com/grnbtqdbyx-create/trace-to-skill/releases/tag/v0.1.67

o-nix · 1 month ago

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.

KorolZhu · 1 month ago

+111111.
it is 2026-06-03, is not fixed yet. why?
please fix this.

o-nix · 1 month ago

Oh my, in the latest update the setting survives after restarts! Thank you! 👏

TopScrech · 1 month ago

Finally fixed