Codex Desktop on macOS causes sustained high CPU/GPU/WindowServer load and heating
Summary
Codex Desktop on macOS is causing sustained high CPU usage and heating while the app is open/visible, even when there is no heavy local task running. The load appears to come from the Electron UI layer: Codex Helper (GPU), Codex Helper (Renderer), and macOS WindowServer.
This makes the MacBook Pro heat up quickly and makes Codex Desktop difficult to use as a long-running daily workspace.
Environment
- Platform: macOS
- Machine: MacBook Pro
- Codex Desktop version:
26.519.41501 - Electron version shown in process args:
42.1.0 - Codex CLI version bundled with app:
codex-cli 0.130.0-alpha.5 - Date observed: 2026-05-23
Observed behavior
While Codex Desktop is open, Activity Monitor / ps repeatedly shows high CPU from Codex UI-related processes and WindowServer. Recent samples:
WindowServer ~41-46% CPU
Codex Helper (GPU) ~24-35% CPU
Codex Helper (Renderer) ~25-27% CPU
Codex main process ~0-3% CPU
codex app-server ~0-12% CPU, often near 0 after startup
System memory free ~45-50%
This suggests the issue is not memory pressure and not the local agent workload. The heat seems primarily driven by desktop rendering / GPU compositing / WindowServer interaction.
Reproduction / what I did
- Open Codex Desktop on macOS.
- Use normal chat/project UI.
- Observe the MacBook becoming warm/hot.
- Check CPU usage with Activity Monitor or
ps. - See sustained high CPU from
Codex Helper (GPU),Codex Helper (Renderer), andWindowServer.
This happens even when no expensive local command is running.
Workarounds tested
Reduced motion launch
Tried launching Codex with:
open -na "/Applications/Codex.app" --args --force-prefers-reduced-motion
Result: did not materially reduce CPU usage. Codex Helper (GPU), Codex Helper (Renderer), and WindowServer remained high.
Disable GPU launch
Attempted:
open -na "/Applications/Codex.app" --args --disable-gpu --disable-gpu-compositing
Result: the test was inconclusive because the existing app instance did not cleanly terminate in one attempt. In the currently running instance, Codex Helper (GPU) remained active and high, so the workaround was not clearly effective.
Memory pressure
Checked system memory pressure; free memory remained around 45-50%, so this does not appear to be a RAM exhaustion issue.
Expected behavior
Codex Desktop should remain relatively light while idle or handling ordinary remote-model chat/project interactions. It should not keep the GPU/renderer and WindowServer at sustained high CPU levels when there is no heavy local command running.
Impact
- MacBook Pro heats up quickly.
- Battery drain increases.
- The app is hard to keep open as a persistent coding workspace.
- Users are pushed toward CLI/TUI even when they need Desktop features like attachments, screenshots, and multimodal workflows.
Related issues
This looks similar to:
- #18567
- #18467
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Solution: Codex #24185 — Desktop macOS High CPU/GPU/WindowServer Load
Issue: https://github.com/openai/codex/issues/24185
Labels: bug, app, performance
Competition: 1 comment (low competition)
Estimated Value: $1,000–$3,000
Created: 2026-05-23
---
Problem Summary
Codex Desktop (Electron 42.1.0) on macOS causes sustained high CPU/GPU/WindowServer load even when no heavy local task is running. The heat comes from the Electron UI layer, not the agent workload.
Observed CPU:
Workarounds tested (both ineffective):
--force-prefers-reduced-motion— no material reduction--disable-gpu— attempted but likely incomplete---
Root Cause Analysis
Hypothesis 1: Electron GPU Compositing Loop
The high CPU from
Codex Helper (GPU)andCodex Helper (Renderer)indicates the Electron renderer process is stuck in a continuous GPU compositing loop. This happens when:requestAnimationFrameloop is running without a stop condition, causing the renderer to constantly repaintHypothesis 2: WindowServer Interaction Issue
The high WindowServer CPU (41-46%) suggests the issue is not just internal to Electron but involves the macOS window server. This can happen when:
Hypothesis 3: Electron 42.1.0 Specific Bug
Electron 42.1.0 is a very recent version. There may be a regression in the Chromium version it bundles that causes excessive GPU compositing on macOS.
Most Likely Root Cause
Primary: A
requestAnimationFrameloop or CSS animation running continuously in the renderer process. The pattern is common in Electron apps with:Secondary: Electron 42.1.0 may have a compositor bug on macOS that amplifies the issue.
---
Proposed Fix
Fix 1: Throttle requestAnimationFrame Loops
Thanks a lot for taking the time to write this up. I really appreciate the detailed analysis.
What you described matches what I’m seeing locally: app-server is mostly low, while Codex Helper (GPU), Codex Helper (Renderer), and WindowServer stay high. The duplicate issues also seem to show a similar pattern.
I’m not sure about the exact root cause, but your UI/rendering/compositing direction sounds very plausible. Thanks again for looking into this.
This is a really interesting breakdown 👀
What makes this report valuable is that the hot path seems heavily skewed toward persistent UI/runtime surfaces rather than active inference load.
The fact that:
…strongly suggests the expensive part may be “always-active desktop orchestration/render state” rather than actual model execution.
We’ve been seeing a similar pattern in long-running agent/runtime environments:
once a system keeps multiple realtime surfaces alive simultaneously (streaming state, thread hydration, diff rendering, attachment state, reconnect state, sidebar/session sync, etc.), the coordination overhead itself can become a persistent workload.
Especially when sessions become effectively “never fully cold” 🌡️
The interesting part is that reduced-motion didn’t materially help.
That makes this feel less like animation cost alone, and more like continuous compositing / invalidation / synchronization pressure somewhere in the desktop runtime stack.
Really solid diagnostics here ✨
Thanks, I appreciate the kind words and the thoughtful framing.
I also agree with the related reports that this should not be treated as a pure duplicate and closed away.
Across #23026, #23849, #22053, and this issue, the common pattern seems to be persistent desktop/runtime load rather than active model or tool execution. Reduced Motion may help slightly in some cases, but it does not appear to resolve the underlying issue.
The important signal is that multiple users are seeing Codex stay hot while app-server or actual task execution is mostly idle. I hope the team can treat these reports as a shared desktop runtime/compositing/synchronization bug family, not as isolated duplicates.
I can reproduce this on a newer Codex Desktop build, with Stage Manager disabled, so this does not look limited to the Stage Manager preview case.
Environment:
26.608.12217149.0.7827.5426.5.1 (25F80)com.apple.WindowManager GloballyEnabled = 0)spctl --assess --type execute --verbose=4 /Applications/Codex.appreturns accepted, sourceNotarized Developer ID; Developer ID Application: OpenAI OpCo, LLC)Observed after fully quitting and relaunching Codex Desktop, with no heavy local task running:
Before relaunching, the accumulated state was worse: Codex-related processes were around
12.6 GB RSSand roughly129%aggregate sampled CPU, with many app-server/MCP/Computer Use helper children. After relaunch, this dropped to around2.2 GB RSSand about54%aggregate sampled CPU, but the GPU process and WindowServer still stayed unexpectedly hot.A 5-second
sampleof the Codex GPU helper did not point to model inference or networking. The hot stack was concentrated in macOS rendering/compositing/color-management paths, including:The renderer sample also showed V8/Electron renderer activity, but the GPU helper sample being dominated by CoreAnimation / IOSurface / ColorSync makes this look like continuous compositor invalidation or surface/color-space churn rather than actual agent work.
Network latency was not the bottleneck in this run: proxied requests to
api.openai.com/chatgpt.comwere around0.69sTTFB. Memory pressure was also not the trigger: no swap was in use.This seems consistent with the broader family of reports in #23026, #23072, #23849, #26736, and this issue: Codex Desktop remains hot when the app UI is visible/active, while actual task execution is mostly idle. The important extra signal here is that it reproduces on a very high-end Apple Silicon machine and with Stage Manager disabled, so the trigger appears to be in the desktop UI/compositor path itself rather than a machine-capacity issue or Stage Manager-only interaction.