Codex on macOS can drive high WindowServer CPU/GPU while idle when visible in Stage Manager preview
What version of the Codex App are you using (From “About Codex” dialog)?
26.415.40636 (1799)
What subscription do you have?
Not sure
What platform is your computer?
macOS 26.3 (25D125) arm64
What issue are you seeing?
On macOS, Codex can drive very high WindowServer CPU/GPU usage even when I am not actively using the app, as long as Codex remains visible in Stage Manager's left-side live window preview.
This does not look like model execution or background task work. The heavy usage appears to come from the app's UI/rendering/compositing path interacting with Stage Manager's live preview.
In my case, shortly after restarting Codex and doing nothing in the app:
WindowServerwas around46%CPU and24-30%GPUCodex Helper --type=gpu-processwas around43%CPUCodex Helper (Renderer)was around29%CPU- two
SkyComputerUseClienthelper processes were present but mostly idle
Once I turned Stage Manager off and sent Codex to the background, WindowServer CPU/GPU dropped back down significantly.
What steps can reproduce the bug?
- On macOS, enable Stage Manager.
- Launch Codex desktop.
- Leave the app open, then switch to another app so Codex remains visible in the Stage Manager left-side preview column.
- Do not actively use Codex.
- Open Activity Monitor and observe
WindowServer, Codex GPU/renderer helpers, and GPU usage. - Turn Stage Manager off and keep Codex in the background.
- Observe that
WindowServerCPU/GPU usage drops significantly.
What is the expected behavior?
When Codex is idle in the background, even if macOS Stage Manager keeps a live preview of the window, it should not continuously drive high WindowServer CPU/GPU usage.
Additional information
A few points that may help narrow this down:
- This looks specifically like a render/compositing issue rather than remote inference or local agent execution.
- Sampled stacks from the Codex GPU/renderer processes were dominated by symbols in the display/compositor path, including:
CA::Transaction::commitCA::Layer::commit_if_neededIOSurfaceColorSyncCVDisplayLinkVizCompositorThread- The
SkyComputerUseClienthelper processes appeared mostly blocked inmach_msg/ idle waits, so they did not look like the main CPU source. - This suggests an interaction between:
- Codex's idle UI redraw / compositing behavior, and
- Stage Manager's live window preview rendering.
If useful, I can provide:
- Activity Monitor screenshots
sampleoutput from the Codex GPU and renderer processes- exact process snapshots from the affected state
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I’m seeing what looks like the same class of issue on an Intel MacBook Pro, with one extra data point: turning Stage Manager off did not materially fix it for me.
Environment:
26.429.30905/ build234541.2.015.6.1/24G90MacBookPro16,1Symptoms:
Representative process snapshot while mostly idle:
Codex Helper --type=gpu-process: ~24-30% CPU
Codex Helper (Renderer): ~10-24% CPU
codex app-server: variable, often lower after startup
WindowServer: ~5-8% CPU
I temporarily disabled Stage Manager and restarted Dock:
defaults write com.apple.WindowManager GloballyEnabled -bool false
killall Dock
After confirming
GloballyEnabled = 0, Codex still stayed elevated:Codex Helper --type=gpu-process: ~25-29% CPU
Codex Helper (Renderer): ~10-15% CPU
I restored Stage Manager afterward.
I also took short
samplecaptures of the hot Codex processes. The GPU helper sample showed activity in:VizCompositorThread
CVDisplayLink
Metal
IOSurface
WebGPU
AppleIntelKBLGraphicsMTLDriver
com.Metal.CompletionQueueDispatch
com.Metal.CommandQueueDispatch
The app-server sample was mostly waiting on runtime/FSEvents/SQLite threads, so this looks more like visible-window rendering/compositing than project/model work.
Launch flag notes:
--disable-gpuis not viable for me; it producedGPU access not allowedand left a runaway process at ~100% CPU.--disable-gpu-compositinglaunched but made the GPU helper worse in my test.--force_high_performance_gpuwas inconclusive and did not look like a clean workaround.So this seems related to the Stage Manager/live-preview issue described here, but at least on my Intel Mac it also reproduces with Stage Manager disabled.
I can confirm a closely related issue on an Intel MacBook Pro 16,1 (Core i9, Radeon Pro 5300M), running
macOS 26.5.2and ChatGPT/Codex Desktop26.707.62119.While the app window was active, macOS animations became choppy and keyboard input was noticeably delayed. WindowServer, the Electron renderer, and the GPU helper all showed sustained activity. Updating and restarting the app did not help.
Turning off
Settings → Appearance → Translucent sidebar(Light&Dark theme) fixed the problem.This suggests that the macOS vibrancy/translucency compositing path is responsible. It may be worth disabling translucency by default on affected Macs or investigating the vibrancy rendering path.
I can add a deterministic Apple Silicon A/B that appears to isolate the macOS translucency/vibrancy path, independent of Stage Manager.
Environment
26.5.2 (25F84)26.707.71524, build5263com.apple.WindowManager GloballyEnabled = 0)4096x2304, logical2048x1152 @ 60 Hz(exact 2x)2048x1029logical /4096x2058physicalMeasurement method
I sampled
ioreg -a -r -c AGXDeviceUserClienttwice per interval and calculated each process'saccumulatedGPUTimedelta divided by the 5-second wall-time. Values below are GPU-time rates, aggregated byIOUserClientCreator, not Activity Monitor CPU percentages.| Condition | WindowServer | Codex GPU service | Combined |
|---|---:|---:|---:|
| Windowed, translucent sidebar enabled (2 checks) | ~64.7% | ~5.6% | ~70.3% |
| True full screen, translucent setting still enabled (3x 5 s average) | 19.69% | 6.45% | 26.14% |
| Windowed again, translucent sidebar disabled (3x 5 s average) | 20.19% | 5.61% | 25.81% |
| Minimized during the original translucent-window test | — | — | ~0.19% |
The three final windowed/opaque intervals were very stable:
25.92%,25.88%, and25.62%combined. A separate driver-level sample averaged74.8%device utilization with the translucent window visible versus22.7%in full screen.Window-size clue
Static inspection of the shipped app bundle for this build shows that the macOS window surface appears to be forced opaque only when the physical window satisfies:
Otherwise, a focused primary window uses
vibrancy: menuunless the active theme explicitly enables opaque windows.That creates a very specific boundary on this display:
4096x2058; short side is 102 physical pixels below the2160threshold, so it remains on the vibrant/translucent path.4096x2304; it crosses the threshold and GPU load drops immediately.For comparison, a normal window on a Studio Display was
5120x2634physical and therefore already crossed the apparent opaque-surface threshold, which explains why the larger 5K display unexpectedly produced lower GPU load than this exact-2x 4K display.Conclusion
For this machine, exact-2x HiDPI scaling is not the cause. The dominant delta is WindowServer composition associated with the Codex translucent/vibrant window surface. Disabling the translucent sidebar is a durable workaround and does not affect Codex functionality.
This complements the recent Intel report above and the earlier discussion in #10432. It may be worth:
3840x2160physical-window boundary, andI can reproduce the same WindowServer/compositor issue on another Apple Silicon Mac.
Environment
Controlled A/B test
After rebooting, I measured WindowServer every 10 seconds for two minutes before opening ChatGPT/Codex:
I then opened ChatGPT/Codex and sampled the related processes again:
This is an approximately 11.6× increase in WindowServer CPU immediately after opening ChatGPT/Codex.
The load remains elevated while idle. Restarting the app did not resolve it. Earlier process samples also showed compositor/display activity involving
CVDisplayLink, QuartzCore/CoreAnimation, Metal, and SkyLight.This strongly resembles the continuous renderer/compositor activity described in this issue.
I can reproduce a related rendering/compositing problem on macOS 26.3 (25D125) on an M1 MacBook Air, running the ChatGPT desktop app 26.730.61639 (build 6234) in Codex mode.
Observed on a single internal display:
sample WindowServercapture showed repeated full-display compositing:update_display_callback → CGXUpdateDisplay → WS::Updater::UpdateDisplays → SLCADisplay::render_update → CompositorMetal::CompositeLayersToDestination → CARenderOGLRenderDisplayWithOptions → CA::OGL::Renderer::renderwith deeply repeated
prepare_layers_roi,ImagingNode, andMaskNodecalls.This is strong evidence of sustained Core Animation/Metal layer compositing rather than model inference or an idle WindowServer loop. The WindowServer stack does not identify the responsible client by name, so I cannot prove attribution from this sample alone, but the simultaneous ChatGPT/Codex renderer activity makes it the likely trigger.
Is this considered the same compositor regression even with Stage Manager off? I can provide the full sanitized sample if it would help.