Skip to content

macOS desktop unexpectedly switches an existing chat to New Chat; hidden Pages prewarm navigation suspected #53570

Open

Description

@Liiiszt

What version of the Codex App are you using (From “About Codex” dialog)?

ChatGPT desktop 26.1007.30912 (build 20156); bundle com.openai.codex

What subscription do you have?

Not provided; this report concerns desktop window navigation.

What platform is your computer?

macOS — uname -mprs: Darwin 25.6.0 arm64 arm

What issue are you seeing?

While an existing conversation is open, the desktop app spontaneously switches the visible main window to the New Chat screen. No keyboard input or window switching is required. This has recurred over two days. Four matching sequences were found in local app logs, including one checked immediately after another occurrence was reported.

Latest observed sequence (2026-10-13, UTC)

  • 03:52:30.334 — Hidden window 9 / webContents 32: Statsig: error while bootstrapping post-login client, attemptNumber=6, Timed out while fetching post-login Statsig bootstrap; visible=false, focused=false.
  • 03:53:03.150 — Same hidden window: browser_use_availability_resolved available=false reason=statsig-disabled.
  • 03:53:03.373 — Same hidden window: app routes mounted after 96722ms; still visible=false.
  • 03:53:03.527 — Main window 1: ownerRoutePath=/ conversationId=client-new-thread:<redacted>, just 154ms after the hidden window's routes-mounted log. The main window had previously reported /local/<existing-conversation>.
  • 03:53:26.457 — [page-window-prewarm] Timed out preparing Page window claimed=false editorReady=false.

The browser_use gate log supports a configuration failure but is not direct evidence of the Pages gate value.

Other matching observations (UTC)

Main-window homepage event Nearby hidden-window initialization Surrounding failures
2026-10-12 09:40:47.814 Window 5 routes-mounted 51ms earlier Statsig bootstrap timeout; later unclaimed Page prewarm timeout
2026-10-13 03:05:26.929 Window 7 routes-mounted 43ms later Same pattern
2026-10-13 03:14:55.988 Window 8 routes-mounted 160ms earlier Same pattern

These are correlated logs, not a captured runtime stack proving the cross-window call.

What steps can reproduce the bug?

  1. Open an existing conversation in the macOS desktop app.
  2. Leave it open without keyboard input or switching windows.
  3. During intermittent network/configuration request failures, the app can switch the main window to New Chat while an invisible Page prewarm window initializes.

This describes observed conditions, not a deterministic reproduction. No network fault injection or controlled reproduction was performed.

Suggested controlled reproduction for maintainers: keep an existing chat open, allow the hidden Pages prewarm window to start, then force that window's Statsig bootstrap to time out or its Pages capability to become unavailable. Check whether its fallback navigation to / reaches the visible main window. This proposed test has not been run.

What is the expected behavior?

The active conversation, draft, and window focus should remain unchanged when an unclaimed hidden prewarm window fails to initialize or cannot access a feature. Failure handling should stay within that background window.

Additional information

Suspected code path in the installed bundle

Read-only inspection of this installed build found a path that explains the observed behavior:

  1. Page prewarming creates a primary window with show:false, trackPrimaryOnShow:true, and initial route /space/<local-page-id>?window=page&prewarm=1. The owner is set only when openNewPage claims it.
  2. Pages availability depends on the chatgpt capability and Statsig gate 2200939124. The /space/:pageId route guard redirects to / with replace:true when availability is disabled. A bootstrap timeout alone does not prove the final Pages gate is disabled.
  3. Page-window detection checks window=page without excluding prewarm=1. The router interceptor hands non-Page, non-auth destinations, including /, to windowNavigation.navigateInOwnerWindow.
  4. Without a valid main-window owner, getOrCreateNavigationWindow selects the most recently active main window. navigateInOwnerWindow sends navigate-to-route and calls showWindow with stealFocus:true.

This appears to allow an unclaimed hidden Page window's fallback navigation to change the user's visible conversation. This is a high-confidence hypothesis; the actual handoff call stack has not been captured.

Build and implementation pointers

The installed app is branded ChatGPT, bundle ID com.openai.codex, version 26.1007.30912, build 20156, build commit a993bdbe5bb9503cb84de1e67d5635cf186a959f.

  • main-CqEoQDOU.js: nHe.createWindow / openNewPage, getOrCreateNavigationWindow, navigateInOwnerWindow.
  • app-initial-6350d04672d0.js: XPs (Pages route guard), rZ/nZ (Page-window detection), Mlc / SHa / THa (navigation interception and handoff).
  • app-shared-8bd9d0399038.js: t3r, exported as SU and imported as ic (Pages availability).

Suggested fix and verification

Reject navigation handoffs from dormant/unclaimed prewarm windows at the main-process boundary. Keep unavailable-feature handling local to the prewarm window. Add origin/destination window, route, and prewarm/claimed state to navigation-handoff logs. Regression-test that bootstrap/capability failures do not change an existing main-window conversation or steal focus.

Limits / redaction

The main process remained running across these incidents. Concurrent HTTP 500/504 failures were observed, but their ultimate network/server origin is not established. No patch or workaround has been verified. Conversation text, account identifiers, local usernames/paths, tokens, session transcripts, and raw logs are omitted.

Activity

  1. added
    appIssues related to the Codex desktop app
    on Oct 13, 2026
  2. added
    bugSomething isn't working
    sessionIssues involving session (thread) management, resuming, forking, naming, archiving
    on Oct 13, 2026
  3. github-actions commented on Oct 13, 2026

    @github-actions
    Contributor

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

    Powered by Codex Action

  4. RowNine commented on Oct 14, 2026

    @RowNine

    Additional observation on desktop version 26.1007.71326 (build 20398), macOS: the unexpected return from an existing chat to Home / New chat still occurs after updating.

    The following sequence was captured immediately after an occurrence was reported. All times are UTC on 2026-10-14:

    • 06:42:33.636: hidden primary window 6 / renderer15 finished loading its main frame.
    • 06:42:51.247: that hidden window reported app routes mounted, visible=false.
    • 06:43:01.514: renderer15 GET /accounts/check/v4-2023-04-27 failed with HTTP 500, "fail to touch upstream".
    • 06:43:01.590: 76ms later, the visible main window1 changed ownerRoutePath to / and displayed a client-new-thread state, without a New Chat click.
    • 06:43:05.842: selecting the original chat restored it normally.

    This sample adds a capability-request error immediately preceding the main-window navigation; the redirect occurred about 10 seconds after the hidden window's routes-mounted event, rather than at mount time.

    Read-only inspection of the newer installed bundle supports the same suspected cross-window fallback path:

    • app-shared-8340f229c2b3.js:1141: Spaces availability t3r explicitly maps chatgpt capability isError to disabled.
    • app-initial-1ab6fbe93c4f.js:4046: ZPs redirects disabled availability to /. The outer dZ guard at line3578 can also redirect to / when capability is unavailable.
    • The Page-window blocker Nlc at line4048 calls _Ha/bHa at line3578, forwarding non-Page/non-auth destinations via navigateInOwnerWindow without an apparent prewarm exclusion.
    • main-CwxgTOle.js:1052 and :1544 contain the hidden Page prewarm creation and navigation target selection, respectively.

    No runtime navigation call stack was captured, so the exact originating guard remains unconfirmed. No application files or settings were modified. Transient service errors may trigger this, but should not allow a hidden prewarm window to navigate the user's active chat.

    This comment includes only sanitized technical observations. Raw logs, conversation contents/identifiers, email, account details and private filesystem paths are omitted.

  5. 0xdevalias commented on Oct 17, 2026

    @0xdevalias

    Connecting this report to the more detailed navigation investigation and a newer settings/account failure sample. Your HTTP 500 / 76 ms follow-up is particularly relevant to the availability-error path. Our October 16 macOS occurrence on 26.1007.71326/build 20398 instead logged HTTP 503 “Unable to fetch authentication verification keys” on settings/account endpoints while the active chat repeatedly switched to Home. The selected diagnostic timeline is posted in #53901:

    Further read-only inspection on October 17 verified a more specific branch in our installed 26.1007.71326/build 20398 bundle: the Pages/Spaces availability calculation (t3r in app-shared-8340f229c2b3.js) explicitly returns disabled when the chatgpt capability result has isError. This branch runs before the later feature-gate checks, so a capability error can disable availability without a feature flag itself defaulting off. The inspected ZPs route guard redirects disabled availability to /; the Page navigation interceptor can forward that destination to navigateInOwnerWindow.

    That strengthens the proposed error → disabled availability → Home redirect path. It remains static code evidence: we have not captured the capability state and navigation caller together for our October 16 occurrence, or proven which guard initiated each jump. Regardless of why availability is disabled, an unclaimed hidden prewarm's automatic redirect should not navigate/focus the user's active chat.

    Main investigation and detailed diagnostics

    See also: related reports

    These links group matching symptoms, error responses, and suspected mechanisms for comparison. They do not label every report as a confirmed duplicate or establish a single backend cause.

    Only selected technical observations are included. No raw logs, credentials, account/conversation identifiers, private paths, or screenshots are attached. No new live reproduction or verified fix is claimed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingsessionIssues involving session (thread) management, resuming, forking, naming, archiving

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions