Windows app hangs on splash when saved auth references a deactivated workspace instead of prompting re-login

Open 💬 10 comments Opened Apr 23, 2026 by Sasha50701

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?

  1. Sign into Codex Desktop on Windows with an account/session associated with a ChatGPT workspace.
  2. That workspace later becomes deactivated.
  3. Launch Codex again.

Observed behavior from my case:

  • An earlier launch on 26.417.4842.0 reached window ready-to-show and 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.json to 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_workspace failures during app/list
  • app remained stuck on splash
  • 2026-04-23 01:37: after renaming %USERPROFILE%\.codex\auth.json, launch succeeded and app/list returned 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:

View original on GitHub ↗

10 Comments

mr-ashawa · 2 months ago

Confirm. Had the same issue (that's how I found this).
Workaround also solved the issue.

erichlukas · 2 months ago

Confirmed. The workaround doesn't work for me apparently.

It worked actually. but yeah, this gotta be fixed

claell · 2 months ago

Can confirm that the workaround helped for me!

Indominus-TAC · 2 months ago
Can confirm that the workaround helped for me!

This worked for me as well!

yure233 · 2 months ago

same problem and same resolution

aminspy · 2 months ago

yes it has solved my problem

lelandg · 2 months ago

Deleting the auth.json did not solve my problem. But deleting the %USERPROFILE%\.codex\ and reinstalling worked.

AbubakarMahmood · 2 months ago

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() sends account/read with refresh_token: false
  • get_login_status() treats Some(Account::Chatgpt { .. }) as authenticated
  • should_show_login_screen() only shows login for LoginStatus::NotAuthenticated
  • backend get_account_response() builds account state from cached auth via provider.account_state()

Relevant lines:

  • codex-rs/tui/src/app_server_session.rs:302
  • codex-rs/tui/src/lib.rs:1686
  • codex-rs/tui/src/lib.rs:1749
  • codex-rs/app-server/src/codex_message_processor.rs:1884
  • codex-rs/model-provider/src/provider.rs:147

Then app/list performs the real workspace/app backend calls. A non-success ChatGPT backend response is converted
into a generic error string, and the app/list path returns that as an internal JSON-RPC error rather than converting
invalid workspace/auth into logout or NotAuthenticated.

Relevant lines:

  • codex-rs/app-server/src/codex_message_processor.rs:5843
  • codex-rs/app-server/src/codex_message_processor.rs:5938
  • codex-rs/app-server/src/codex_message_processor.rs:6012
  • codex-rs/chatgpt/src/connectors.rs:100
  • codex-rs/chatgpt/src/chatgpt_client.rs:63

I also do not see any explicit handling for deactivated_workspace in the repo. The only clear auth-clearing path is
explicit logout:

  • codex-rs/tui/src/app_server_session.rs:728
  • codex-rs/app-server/src/codex_message_processor.rs:1756
  • codex-rs/login/src/auth/manager.rs:1730

So 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.json is removed or codex logout is 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.

flowchart TD
    A[App starts] --> B[account/read]
    B --> C{Cached auth exists?}
    C -->|No| D[Show login/onboarding]
    C -->|Yes| E[Treat as authenticated]

    E --> F[Main UI / app boot continues]
    F --> G[app/list]
    G --> H[Load connector directory + codex_apps MCP]
    H --> I[ChatGPT backend rejects token/workspace]
    I --> J[402 deactivated_workspace returned as generic app/list error]

    J --> K[Desktop shell keeps splash/loading state]
    K --> L{Was auth cleared?}
    L -->|No| B
    L -->|Manual logout / codex logout| D

    style J fill:#ffd6d6,stroke:#c00
    style L fill:#ffd6d6,stroke:#c00
Waad82J · 2 months ago

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.

TVpoet · 2 months ago

Holy crap, this is exactly the same issue I ran into! I fixed the same problem using your method.