Windows app freezes during recurring heartbeat when in-app browser tab finalization times out
Open 💬 6 comments Opened Jul 31, 2026 by salthani
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Summary
The Codex Windows app repeatedly becomes unresponsive when a recurring thread heartbeat uses the in-app browser. Pausing the heartbeat stops the repeated freezes.
The browser can discover, claim, and verify the intended existing tab, but releasing the browser binding can hang until the bounded browser call times out and the Node-backed browser-control kernel resets.
Environment
- Codex for Windows package:
OpenAI.Codex 26.721.11231.0 - OS: Windows 11 Pro, version 10.0.26200, build 26200
- Automation type: thread heartbeat
- Schedule: every 2 minutes on weekdays
- In-app browser: 5-7 existing tabs
- Automation has now been paused
Reproduction
- Open several tabs in the Codex in-app browser, including a TradingView chart.
- Create a lightweight recurring thread heartbeat every two minutes.
- On each heartbeat, run a local gate first. Most wakes finish in under one second without browser access.
- On an eligible wake, call
browser.user.openTabs(). - Claim the matching descriptor with
browser.user.claimTab(descriptor). - Read the claimed tab URL/title to verify identity.
- Call
browser.tabs.finalize()with an 8-second timeout.
Observed behavior
openTabs()returned the intended existing tab.claimTab(descriptor)succeeded.- URL/title verification succeeded.
browser.tabs.finalize()timed out after 8 seconds.- Tool result:
js execution timed out; kernel reset, rerun your request. - The Windows app subsequently showed “Codex is not responding” during repeated automation use.
- Earlier, passing a user-tab ID into
browser.tabs.get()returnedTab not found; switching to the supported descriptor-basedclaimTab()fixed claiming but not the finalization hang. - Task Manager screenshots showed normal overall machine load, so this did not appear to be system-wide CPU or memory exhaustion.
Relevant UTC timestamps from one reproduction:
- Tab claim/verification attempt: 2026-07-31 around 14:16-14:17 UTC
- Finalization timeout recorded: 2026-07-31 14:17:52 UTC
Expected behavior
- Browser tab finalization should complete promptly and release the binding.
- A lightweight recurring heartbeat should not make the Codex Windows UI unresponsive.
- If cleanup fails, the browser operation should fail cleanly without hanging or requiring the browser-control kernel to reset.
Impact
Recurring browser-backed monitors are not reliable on Windows because cleanup can hang, and a frequent heartbeat amplifies the problem. The only safe mitigation was to pause the automation and use a persistent circuit breaker.
Additional notes
- The automation was read-only and never placed or modified orders.
- Browser calls were limited to 8 seconds, total intended browser work to 12 seconds, with no retries.
- Credentials and private market-data values are intentionally omitted.
- Session logs and screenshots can be provided privately if needed.
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Retest update: after disabling VPNs, the existing TradingView tab was discovered, claimed, and verified successfully. Cleanup also completed immediately when using the documented form
browser.tabs.finalize({ keep: [{ tab, status: "handoff" }] }). The earlier timeout occurred after callingfinalize()without the required options, so that specific cleanup timeout may have been client misuse rather than a backend defect. The two-minute monitor has been reactivated cautiously with the corrected finalization rule. I am leaving the issue open temporarily because the broader repeated Windows-app freeze still needs observation under the corrected workflow.Second reproduction update: the two-minute heartbeat was reactivated only after a bounded health check succeeded with VPNs disabled. The exact TradingView tab was discovered, claimed, verified, and released successfully using
browser.tabs.finalize({ keep: [{ tab, status: "handoff" }] }). Despite that corrected workflow, the Codex Windows app froze again during subsequent recurring operation. The automation has been paused again.Network checks at the time showed: Windows user proxy disabled, no PAC URL, WinHTTP direct access, no proxy environment variables, no Tailscale Exit Node, and default internet routes remained on Wi-Fi/Ethernet. Tailscale was still running only as an overlay/MagicDNS participant. This makes the earlier bare
finalize()call and ordinary VPN/proxy routing insufficient to explain the repeated freeze.No cookies were deleted and no credentials or private market-data values are included in this update.
Reproduction update — freeze persists after network and browser-state cleanup
The Codex for Windows freeze recurred again after eliminating the suspected local causes:
26.721.11231.0(Windows x64)Browser cookies clearedA retry to reactivate the two-minute heartbeat monitor stalled inside the app. The saved automation file remained
status = "PAUSED", and the pending update was terminated, so the monitor was not left active.This makes VPN/proxy/DNS configuration and stale built-in-browser cookies unlikely to be the root cause. The recurring trigger continues to correlate with the two-minute heartbeat/automation workflow in Codex for Windows.
Exact affected version
Verified directly from the installed Windows package and local executable:
OpenAI.Codex 26.721.11231.0x64codex-cli 0.146.0-alpha.3.1This is the version pair on which the recurring freeze and stalled two-minute heartbeat reactivation were reproduced.
Mobile-hotspot A/B test — OpenAI Support case 12474714
I ran the requested different-network test using a mobile hotspot.
PAUSED.Interpretation: the original network/WebSocket path may contribute to the hang, but this test also exposes a potentially separate scheduler/wake-delivery issue. A longer hotspot test or specific
wss://ws.chatgpt.comhandshake diagnostics may be needed to separate those two behaviors.