Windows app hangs on splash when saved auth references a deactivated workspace instead of prompting re-login
What version of the Codex App are you using (From “About Codex” dialog)?
26.421.11020
What subscription do you have?
ChatGPT Business
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Codex on Windows got stuck on the splash / launch screen (Codex logo in the middle, nothing else happens).
This happened after the app had previously been signed into a ChatGPT workspace that later became deactivated.
Based on the logs, an earlier launch on version 26.417.4842.0 did reach window ready-to-show and also detected that a Windows Store update was available. However, even during that launch, startup requests were already failing with:
402 Payment Required
{"detail":{"code":"deactivated_workspace"}}
After updating, later launches on 26.421.620.0 consistently got stuck on the splash screen and did not recover by prompting me to log in again or select a different workspace.
Renaming the saved auth file forced a fresh login and immediately fixed the issue:
%USERPROFILE%\.codex\auth.json -> auth.json.bak
After doing that, Codex prompted for login to a new workspace and launched normally. Existing chats/data were preserved.
What steps can reproduce the bug?
- Sign into Codex Desktop on Windows with an account/session associated with a ChatGPT workspace.
- That workspace later becomes deactivated.
- Launch Codex again.
Observed behavior from my case:
- An earlier launch on 26.417.4842.0 reached
window ready-to-showand detected an available Store update. - During that same launch, startup requests were already failing with:
402 Payment Required
{"detail":{"code":"deactivated_workspace"}}
- After updating, later launches on 26.421.620.0 consistently got stuck on the splash screen and did not redirect to login/workspace selection.
Workaround:
- Quit Codex completely.
- Rename
%USERPROFILE%\.codex\auth.jsonto auth.json.bak. - Relaunch Codex.
- App then prompts for login and works normally again.
What is the expected behavior?
If the saved auth/session points to a deactivated workspace, Codex should not hang on the splash screen.
It should detect that the stored workspace is no longer valid and recover gracefully by:
- prompting for login again, or
- showing workspace selection, or
- displaying a clear error with a recovery action.
It should not require manually renaming/deleting auth.json to recover.
Additional information
Current installed version shown in About Codex: 26.421.11020.
The failing launches I analyzed came from earlier log files, which show versions 26.417.4842.0 and 26.421.620.0. So the version in the logs is not the same as the currently installed version shown in About Codex.
Timeline from logs:
- 2026-04-23 00:41: launch on 26.417.4842.0
- reached
window ready-to-show - updater reported
hasUpdate=true - startup requests already failed with
deactivated_workspace - 2026-04-23 01:19: launch on 26.421.620.0
- repeated
deactivated_workspacefailures duringapp/list - app remained stuck on splash
- 2026-04-23 01:37: after renaming
%USERPROFILE%\.codex\auth.json, launch succeeded andapp/listreturned successfully
This suggests the underlying issue is stale auth/session state tied to a deactivated workspace. The update may have changed how the app behaved afterward, but based on the logs the auth/workspace failure already existed before the update.
Attached relevant logs:
10 Comments
Confirm. Had the same issue (that's how I found this).
Workaround also solved the issue.
Confirmed. The workaround doesn't work for me apparently.
It worked actually. but yeah, this gotta be fixed
Can confirm that the workaround helped for me!
This worked for me as well!
same problem and same resolution
yes it has solved my problem
Deleting the
auth.jsondid not solve my problem. But deleting the%USERPROFILE%\.codex\and reinstalling worked.I hit the same Windows splash deadlock. I cannot create a deactivated workspace for a clean repro, but the public app-
server code seems consistent with the reported state loop.
The startup/auth check appears to trust cached auth first:
AppServerSession::read_account()sendsaccount/readwithrefresh_token: falseget_login_status()treatsSome(Account::Chatgpt { .. })as authenticatedshould_show_login_screen()only shows login forLoginStatus::NotAuthenticatedget_account_response()builds account state from cached auth viaprovider.account_state()Relevant lines:
codex-rs/tui/src/app_server_session.rs:302codex-rs/tui/src/lib.rs:1686codex-rs/tui/src/lib.rs:1749codex-rs/app-server/src/codex_message_processor.rs:1884codex-rs/model-provider/src/provider.rs:147Then
app/listperforms the real workspace/app backend calls. A non-success ChatGPT backend response is convertedinto a generic error string, and the
app/listpath returns that as an internal JSON-RPC error rather than convertinginvalid workspace/auth into logout or
NotAuthenticated.Relevant lines:
codex-rs/app-server/src/codex_message_processor.rs:5843codex-rs/app-server/src/codex_message_processor.rs:5938codex-rs/app-server/src/codex_message_processor.rs:6012codex-rs/chatgpt/src/connectors.rs:100codex-rs/chatgpt/src/chatgpt_client.rs:63I also do not see any explicit handling for
deactivated_workspacein the repo. The only clear auth-clearing path isexplicit logout:
codex-rs/tui/src/app_server_session.rs:728codex-rs/app-server/src/codex_message_processor.rs:1756codex-rs/login/src/auth/manager.rs:1730So I think this is best described as an invalid-auth/workspace state transition bug, not a true module circular
dependency (Correction to my earlier framing). Cached auth is enough to pass startup/login gating, but later workspace-backed startup calls fail. That failure does not clear auth or expose a recovery action, so the desktop shell can remain stuck in splash/loading until
auth.jsonis removed orcodex logoutis run.Suggested fix direction, not a full patch: when a startup request receives a permanent workspace/auth rejection like
deactivated_workspace, classify it as “saved auth is no longer usable”, clear or invalidate the cached auth state,emit/update account state as unauthenticated, and route to login/workspace selection. A manual “logout/reset auth”
action on the splash screen would also be a good fallback, but the primary fix should probably be to break the stale-
auth state immediately rather than retrying it.
A retry/circuit-breaker limit would still be useful as a defensive guard against future splash loops, but for this
specific error retrying seems unnecessary because the workspace rejection is permanent until the user chooses a
different workspace/session/log-in method.
I can confirm I’m seeing this same failure mode.
In my case, the workspace was expired/deactivated. ChatGPT appears to have fixed this flow now by letting the user switch to/join a personal workspace instead of getting stuck, but Codex still opens to a blank/unusable screen with no in-app way to log out or switch workspace.
The workaround was to manually log out through the local Codex files, then reopen Codex. After that, the app became usable again.
The main requested fix is the same as this issue: when Codex detects
deactivated_workspace/ stale workspace auth state, it should show a recovery UI with “switch workspace” or “log out / sign in again” instead of rendering a blank screen.Holy crap, this is exactly the same issue I ran into! I fixed the same problem using your method.