Codex Desktop: runaway memory/swap during Computer Use dev task on macOS (M4/16GB)
Open 💬 3 comments Opened Jun 9, 2026 by jackwjtaylor
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Environment
- MacBook Pro (Apple Silicon M4), 16GB RAM
- macOS (June 2026)
- Codex Desktop (Computer Use enabled)
- ChatGPT Atlas also running
Summary
Codex Desktop regularly enters a runaway memory state during Computer Use tasks (often involving a Next.js dev server / localhost preview). The system shows “Your system has run out of application memory”, memory pressure goes red, swap grows to tens of GB, and the machine becomes unusable / crashes.
Symptoms observed
- Codex process memory reported as high as ~71.8 GB
- Swap used grew to ~38.8 GB with red memory pressure
- Activity Monitor became inconsistent (showed impossible values like 0 bytes physical memory while swap remained very large)
- Kernel panic logs referenced
Codex (Service)during the failure
Steps to reproduce (approx)
- Launch Codex Desktop.
- Run a Coding Task/Goal with Computer Use that involves running a local dev server (e.g., Next.js on localhost:3000) and browser interaction/preview.
- Continue working; memory pressure escalates and swap usage climbs rapidly.
- System becomes extremely sluggish and eventually crashes / requires forced restart.
Notes
- Resetting Codex local state/caches temporarily reduces memory usage, but the issue returns once running Computer Use tasks again.
- Happy to provide panic logs, screenshots, and exact timeline if helpful.
Expected
Memory usage stays bounded and released after tasks complete; no runaway swap growth or system instability.
Actual
Memory leak/runaway state triggers massive swap usage and system instability/crashes.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Additional macOS reproduction: an in-app Three.js/WebGL preview drives the Codex GPU service to 25–84 GiB
I have an independent reproduction that appears to be in the same failure family as this issue and also connects it to the in-app Three.js/WebGL compositor report in #24561.
Environment
26.721.81911(build5973)15.7.4(24G517), Apple SiliconMacBookPro17,1, Apple M1, 16 GB RAMhttp://127.0.0.1:5173/?qa=1THREE.WebGLRenderer,EffectComposer,UnrealBloomPass, and a continuous RAF render loopNo task/conversation IDs, local paths, raw panic files, or transcript contents are included below.
First failure and panic correlation
Local time is UTC+8.
The panic process snapshot showed approximately:
The 83.73 GiB
Codex (Service)process is unambiguously the embedded Chromium GPU process. Its thread names include:Other Codex services, the main process, renderers, and app-server were all far smaller in the same snapshot. This was not the model/backend process and was not explained by the separate system Chrome process group.
Independent post-restart spike
After reboot I sampled all Codex processes and VM/swap state every five seconds. A later manual open/reload of the same IAB Three.js preview produced this transient event:
So the allocation was short-lived, but it created real system pressure: swap grew by about 13.5 GiB within one sampling interval. This rules out the entire observation being only a harmless virtual-address reservation or an Activity Monitor display anomaly.
A later
vmmap -summaryof that same GPU service reported:Chromium's allocator source maps macOS VM tag
253tokPartitionAlloc:https://chromium.googlesource.com/chromium/src/+/f673a07393abb644b28575e8c8cac9052a44183e/base/allocator/partition_allocator/src/partition_alloc/page_allocator.h
The release build does not expose a usable historical PartitionAlloc allocation stack after the spike has been freed, so I cannot identify the exact Chromium C++ call site from the existing artifacts.
What this narrows down
codex app-server, the model/backend, or ordinary system Chrome.1280×720, DPR 1, and explicit WebGL/post-processing cleanup. A controlled preview stayed below roughly 1 GiB, while the visible/manual IAB activation produced the transient spike.Suggested areas to inspect
WebContentsGPU-memory accounting and guest attach/detach lifecycle.This appears to add a process-level mechanism and a timestamp-correlated second reproduction to this report. Sanitized monitor excerpts and panic-derived aggregate fields can be provided if maintainers have a safe upload path.
<!-- markdownlint-disable MD041 MD036 -->
Same crash here, six occurrences across two days (Aug 16–17), all with an identical signature.
Environment
com.openai.codex, Chromium base 151.0.7922.137Crash signature
SIGABRT (
abort() called) out ofnode::OOMErrorHandlerin the Codex Framework, so the embedded Node/V8 runtime is hitting its internal JS heap limit, not system memory (the machine has 64 GB and no memory pressure at crash time). The faulting thread is namedcomputer-usein some crashes andV8Workerin others, and every stack containsparse_distilled_htmlframes:Crashes happen during Computer Use / browser tasks, which matches the runaway-memory reports above. Ruled out on my side: no
~/.gitat the home level (the trigger in #26884), and trimming~/.codexlocal state reduces the baseline but doesn't address the parser path that aborts.Also worth noting: the app's Crashpad uploader has never successfully uploaded any of these crashes (all sitting in
pending/, zero incompleted/), so you likely aren't seeing this crash volume in telemetry.