Windows app freezes during recurring heartbeat when in-app browser tab finalization times out
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 42/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- node.js, rust
- Domain
- desktop-dev, operating-systems
Research direction
Start by reproducing the Windows heartbeat flow with browser.user.openTabs(), browser.user.claimTab(descriptor), URL/title verification, and browser.tabs.finalize() using the reported 8-second timeout. Trace the browser-control kernel reset and UI responsiveness after finalization hangs. Done means tab finalization releases the binding promptly, cleanup fails cleanly when needed, and recurring heartbeats no longer freeze the Windows app.
Written by the indexing model from the issue text.
Description
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.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·