Windows Desktop hangs/exits after turn-complete notification path

Open 💬 1 comment Opened May 14, 2026 by Forge-Blacksmith

Windows Desktop: end-of-turn notification path can hang/exit Codex after turn-complete

Summary

Codex Desktop on Windows repeatedly hangs or exits immediately after an assistant response finishes. The strongest local signature is:

  1. turn_completed...
  2. IAB_LIFECYCLE ended browser use turn route
  3. [desktop-notifications] show turn-complete
  4. app becomes unresponsive or exits with code 0x00000001

This looks related to the Desktop app's end-of-turn notification path on Windows, possibly interacting with in-app browser route cleanup. It is adjacent to #16374, #13019, #16618, #20754, #20867, and probably not the same as #22376 because WSL_DISTRO_NAME is empty locally.

Environment

  • Codex package: OpenAI.Codex_26.506.3741.0_x64__2p2nqsd0c76g0
  • Codex crashpad annotation observed in logs: _version=26.506.31421, Electron 41.2.0
  • OS: Microsoft Windows 11 Pro, version 10.0.26200, x64
  • Subscription: ChatGPT Pro
  • Hardware/resource note: the problem reproduces under normal app usage; project health checks and local dev server tests pass independently.

Symptoms

  • Codex Desktop hangs at the moment the assistant finishes a response.
  • User often has to force-close through Task Manager.
  • Sometimes the app restarts into a fresh process group.
  • Alt-tab/window focus can feel stuck because the Codex top-level window is not responding.
  • The issue reproduces even in a new chat.
  • A full repository health check passes; this does not appear to be caused by the local project.

Local Evidence

Representative desktop log sequence:

2026-05-14T15:42:59.270Z info [electron-message-handler] turn_completed_with_incomplete_plan completedPlanStepCount=4 conversationId=<redacted> planStepCount=5 turnId=<redacted>
2026-05-14T15:42:59.281Z info [browser-session-registry] IAB_LIFECYCLE ended browser use turn route conversationId=<redacted> turnId=<redacted> windowId=1
2026-05-14T15:42:59.288Z info [electron-message-handler] [desktop-notifications] show turn-complete conversationId=<redacted> turnId=<redacted>

ProcDump captured the same process later exiting:

[08:44:17]Process Exit: PID 14316, Exit Code 0x00000001
[08:44:17]Dump 1 initiated: C:\Codex\codex-hang-dumps\managed-procdump\Codex-managed-1431614316-20260514-075115.dmp
[08:44:17]Dump 1 complete: 573 MB written in 0.4 seconds

Another recent run in a fresh process showed:

2026-05-14T15:49:13.785Z info [browser-session-registry] IAB_LIFECYCLE ended browser use turn route conversationId=<redacted> turnId=<redacted> windowId=1
2026-05-14T15:49:13.788Z info [electron-message-handler] [desktop-notifications] show turn-complete conversationId=<redacted> turnId=<redacted>

The app also logs repeated notification/frontend errors in the same sessions:

[desktop-notifications][global-error] ResizeObserver loop completed with undelivered notifications.

Notification State Observation

Attempting to disable notifications via the local Codex global state is not durable while the Store app is running.

A local helper sets:

notifications-turn-mode = off
notifications-permissions-enabled = false
notifications-questions-enabled = false

Verification briefly reports notification-safe state as true, but the running Store app later rewrites the state and notification-safe becomes false again. Meanwhile the Desktop logs continue to show [desktop-notifications] service starting and, on failing turns, [desktop-notifications] show turn-complete.

Isolation Checked

  • WSL_DISTRO_NAME is empty in process, user, and machine environment, so #22376 does not appear to explain this case.
  • Browser-use auto-install/config was disabled locally, but the desktop log still shows IAB_LIFECYCLE route capture/release around turns.
  • Local project health is clean:
  • npm run check: passed
  • npm run build: passed
  • engine/project validation suite: passed
  • npm run test:engine-core: 346 passed
  • OpenAI status page showed services operational at the time checked, so this does not look like a live backend incident.

Workaround Under Test

I built a local copied runtime from the installed MSIX app, without modifying C:\Program Files\WindowsApps, and patched:

  • renderer-side turn-complete notification listener setup
  • main-process turn-complete notification display
  • in-app browser native pipe enablement
  • browser-use turn-route capture/release dispatch

The patched runtime verifies all patches are present. This is a local workaround only; the Store app remains the repro/test target.

Expected

Completing an assistant turn should not synchronously hang the Desktop UI or trigger an app exit. If notifications are disabled, the Desktop app should not call show turn-complete.

Actual

At turn completion, Desktop logs route cleanup and then attempts to show a turn-complete notification. The app then hangs or exits in affected sessions.

Request

Please investigate the Windows Desktop end-of-turn notification flow, especially the path around:

  • turn_completed...
  • IAB_LIFECYCLE ended browser use turn route
  • [desktop-notifications] show turn-complete

It would also help to have a durable Desktop safe-mode setting that disables all OS-level turn-complete notifications and in-app browser route side effects without being rewritten while the app is running.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗