openai / openai/codex

macOS Desktop 26.901.51231: intermittent beachball with CPU-busy main thread during multiwindow activity

Open
#43,526 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug performance
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using?

26.901.51231 (build 8109), macOS bundle identifier com.openai.codex, display name ChatGPT. The version was verified from the installed bundle and the captured process sample.

Platform

Apple Silicon (ARM64), macOS 27.0 (26A5425a), 64 GiB RAM.

Issue

The Codex desktop UI intermittently becomes unresponsive with the macOS spinning wait cursor. This disrupts ordinary task navigation and use. Archiving repetitive completed tasks has not resolved the intermittent hangs.

A process capture was taken on 7 September 2026 while the user confirmed the spinning wheel was still visible. It shows the main application thread busy executing callbacks, rather than predominantly blocked in an OS wait.

Observed circumstances / reproduction status

A deterministic minimal reproduction is not yet available. In the captured episode:

  1. The desktop app had multiple windows; logs identified four visible window IDs in the surrounding two minutes.
  2. A new renderer launched about seven seconds before the process samples began.
  3. The UI showed the spinning wait cursor during the capture.
  4. Several initialization requests from one window completed together after approximately 6.8 seconds.

Opening another window / restoring its state is a candidate trigger, not a confirmed cause. A one-window versus multiple-window comparison has not yet established causality.

Evidence captured during the freeze
  • Main application process CPU snapshot: 99.2% of one core; RSS approximately 865 MiB.
  • 291 of 321 main-thread samples were beneath Node's immediate-callback execution path; 276 ended in unnamed/JIT frames; only 6 had wait-related leaves.
  • Newly started renderer: 231 of 305 samples ended in unnamed/JIT frames; 64 had wait-related leaves.
  • Older sampled renderer: 287 of 313 samples were Mach-message waits.
  • The Codex backend CPU snapshot was 0.2%, RSS approximately 2.15 GiB.
  • Swap usage: zero.
  • Five requests (remoteControl/enable, experimentalFeature/enablement/set, experimentalFeature/list, configRequirements/read, config/read) completed at nearly the same time with durations 6,777–6,808 ms.
  • The nearby bounded app-log tails contained 13 occurrences of ResizeObserver loop completed with undelivered notifications.
  • The saved bounded log tails contained no SQLITE_BUSY/database-lock or missing-file lines.

The CPU numbers are point-in-time snapshots, not measured peaks. Chromium symbols have large offsets and JIT frames are unnamed, so the samples do not identify the precise JavaScript function. The layout errors are correlated symptoms, not proof of the cause.

Expected behavior

Window initialization, task switching and background events should not saturate the main UI thread long enough to make macOS display a wait cursor. Expensive state processing should be bounded/yielding so input remains responsive.

Cleanup already tried

Recoverable archival of repeated completed run conversations and two stale imported test conversations referencing a deleted temporary workspace. Intermittent hangs continued. There is no evidence that the Claude origin of imported project folders is itself responsible.

Related reports

Possibly related UI-performance symptoms: #33782 (macOS task activation / ResizeObserver), #33996 (Windows reasoning-summary / ResizeObserver correlation). This report adds a capture from build 8109 during an actual macOS freeze with a CPU-busy main thread and a newly launched renderer. It does not establish the same root cause.

Privacy / diagnostics

Three successful macOS sample captures, process resource snapshots and bounded error counts are preserved locally. No raw transcripts, client information, personal filesystem paths, account identifiers, private network addresses or full logs are included in this public report. Redacted stack excerpts can be provided if maintainers specify what is useful.

Please investigate main-thread work during window initialization/state delivery and advise whether an existing fix or supported mitigation applies to this build.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file or test is identified in the report. Start with the desktop app's window initialization and state-delivery entry points, using the preserved macOS sample captures and the Node immediate-callback samples; done means identifying the main-thread work causing the freeze and establishing a reproducible fix or supported mitigation.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, node.js, rust
Domain
desktop, performance
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.