Skip to content

Codex Desktop 26.707: opening side dialog triggers browser-sidebar rebind loop and React #185 error boundary #32151

Closed

Description

@robin-byte

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

  • Codex Desktop / ChatGPT app: 26.707.31428
  • Build: 5059
  • Bundle ID: com.openai.codex
  • Bundled Chromium framework: 150.0.7871.101

What subscription do you have?

ChatGPT subscription with Codex access (exact plan not provided).

What platform is your computer?

  • macOS 26.5.1 (25F80)
  • Apple Silicon, arm64
  • UI language: Simplified Chinese

What issue are you seeing?

Clicking the execution-side / side-conversation dialog in a Codex task causes the entire main window to enter the app-wide error fallback.

The visible message is:

  • 糟糕,出错了 ("Something went wrong")
  • Buttons: 更新 ChatGPT ("Update ChatGPT") and 重试 ("Try again")

No error code or diagnostic details are shown in the UI. The installed app is already current, so the update action does not explain the failure.

The local desktop log identifies an AppRoutes renderer error boundary with:

Minified React error #185

Immediately before the error, the log enters a rapid state-update loop involving:

  • thread_stream_view_activity_changed: 57 events
  • IAB_LIFECYCLE received browser sidebar owner sync: 58 events
  • IAB_LIFECYCLE rebound browser sidebar window: 58 events

These events occur within roughly four seconds. The active thread repeatedly toggles between active=true and active=false, while the browser sidebar is rebound to the same owner window.

Sanitized excerpt:

2026-07-10T12:18:45.xxxZ IAB_LIFECYCLE received browser sidebar owner sync browserTabId=null ...
2026-07-10T12:18:45.xxxZ IAB_LIFECYCLE rebound browser sidebar window ownerWebContentsId=1 previousOwnerWebContentsId=1 windowId=1
2026-07-10T12:18:45.xxxZ thread_stream_view_activity_changed active=true ... resumeState=resumed streamRole=owner
2026-07-10T12:18:45.xxxZ thread_stream_view_activity_changed active=false ... resumeState=resumed streamRole=owner
2026-07-10T12:18:46.103Z error ... errorMessage="Minified React error #185" name=AppRoutes
2026-07-10T12:18:46.124Z warning [IpcClient] Received broadcast but no handler is configured method=ipc-connection-reset

No macOS .ips crash report was generated, so this appears to be a renderer/state-update failure rather than a native process crash.

A screenshot was captured at the time of failure. It shows the full-screen fallback and the two buttons above, with no additional diagnostic information.

What steps can reproduce the bug?

  1. Open Codex Desktop on macOS and enter a local Codex task.
  2. Click the execution-side / side-conversation dialog or panel.
  3. Observe the main window.

Observed on July 10, 2026 at 20:18:46 (Asia/Shanghai, UTC+8).

What is the expected behavior?

The side dialog should open and render normally.

If the dialog cannot load, the failure should remain scoped to that panel and provide a useful diagnostic or recovery action. It should not trigger an unbounded sidebar/view-activity update loop or replace the entire app with the generic error boundary.

Additional information

  • The component stack includes local-conversation-thread, quick-chat-window-page, and an aside subtree before the AppRoutes boundary.
  • Full raw logs were not attached because they contain task metadata. Sanitized excerpts can be provided if needed.
  • Possibly related: Codex Desktop renderer crashes after subagent wait with React #185 and unknown conversation state #31090 also reports a full-screen Codex Desktop fallback with React #185, but its observed trigger is subagent/session-state handling rather than opening the side dialog and entering a browser-sidebar rebind loop.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    on Jul 10, 2026
  2. github-actions commented on Jul 10, 2026

    @github-actions
    Contributor

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

    Powered by Codex Action

  3. brettw-openai commented on Jul 13, 2026

    @brettw-openai

    This should be fixed in the next release.

  4. constantins2001 commented on Jul 19, 2026

    @constantins2001

    Independent reproduction on a newer macOS build, with a completed large multi-agent task.

    Environment

    • Codex Desktop / ChatGPT app: 26.715.31925 (build 5551)
    • Bundle ID: com.openai.codex
    • macOS 27.0 (build 26A5368g), Apple Silicon / arm64
    • Reproduced 2026-07-19

    Observed trigger

    1. A side chat / execution-side conversation was open.
    2. I selected an older completed local task from the sidebar.
    3. The selected task had a large collaboration history: valid JSONL, about 9.2 MB / 6,259 records, including 242 spawn_agent calls, 542 wait_agent calls, and 356 inter-agent messages.
    4. The main window entered the AppRoutes error boundary with React error #185.

    The transcript itself parses successfully, and the app-server can still read all three completed turns. This does not look like malformed JSONL, native OOM, or a corrupt task.

    Immediately before the error, three different conversation identities were competing in one window:

    • thread_stream_view_activity_changed toggled active=true/false for the previously active side task.
    • browser-sidebar owner sync used a client-new-thread:<uuid> identity.
    • ownerRoutePath pointed to the older task being opened.

    Sanitized excerpt:

    thread_stream_view_activity_changed active=true  conversationId=<side-task>
    thread_stream_view_activity_changed active=false conversationId=<side-task>
    IAB_LIFECYCLE received browser sidebar owner sync
      conversationId=client-new-thread:<uuid>
      ownerRoutePath=/local/<selected-task>
    IAB_LIFECYCLE rebound browser sidebar window
    ...
    error boundary
      errorMessage="Minified React error #185"
      name=AppRoutes
    

    The active/inactive and owner-sync sequence repeated rapidly before the error boundary, matching the loop described in this issue.

    Workaround / additional diagnostic

    Using the native thread/fork operation to make a same-directory copy of the affected task recovered it without modifying the source. The fork contains all original turns and opens successfully in the same worktree. After navigating to the fork, owner sync stabilized on the fork's conversation ID and no React #185 or route reset occurred.

    This suggests the failure is tied to persisted window/sidebar ownership or conversation binding for the original task, rather than its message content alone. Large multi-agent histories may increase the likelihood or timing, but the direct trigger in this reproduction was reopening the task while a side chat remained bound to the window.

    Raw task IDs and full logs are intentionally omitted because the task contains security-review material. I can provide targeted sanitized excerpts if maintainers need more detail.

  5. constantins2001 commented on Jul 19, 2026

    @constantins2001

    Follow-up with a narrower and now repeatable trigger: this appears to be a conflict between the Codex Security MCP workspace/sidebar and an ephemeral side chat, not a generic large-thread failure.

    On the recovered parent task, the Codex Security panel cannot be permanently dismissed. When returning from the side chat, the following sequence occurs:

    17:24:38.737 parent task becomes active; sidebar owner sync targets parent
    17:24:38.755 ephemeral side chat becomes active
    17:24:38.784 mcpServer/resource/read succeeds for the parent task
    17:24:38.830 ephemeral side chat becomes inactive
    17:24:38.838 parent sidebar owner sync/rebind repeats
    ...
    17:24:39.757 AppRoutes error boundary: Minified React error #185
    

    For roughly one second, the side chat repeatedly toggles active=true/false while owner sync and sidebar rebind repeatedly target the Codex Security parent route. The component stack includes the shared aside subtree.

    Additional observations:

    • The scan was already complete; this is not an active scan-progress update.
    • The Codex Security resource is re-read when the parent renders, so visually closing/leaving the panel does not dispose its ownership state.
    • The exposed Codex Security MCP surface has open/reopen operations but no close/dispose workspace operation.
    • Archiving the ephemeral side chat does not clear its already-bound renderer state.
    • Forking the parent preserves its historical Security workspace/tool record and remains susceptible.
    • Creating a clean normal project task with the recovered side-chat prompt, without inheriting the Security workspace record, avoids this sidebar collision.

    This suggests the fix should address arbitration/disposal for multiple owners of the shared sidebar/aside surface: a completed Codex Security resource should not continuously reclaim focus, and leaving an ephemeral side chat must unregister its view-activity/ownership bindings before the parent MCP resource rehydrates.

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 appbrowserbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions