[app][macOS] Browser-use Node workers accumulate to 10–18 GB, exhaust swap, and suspend unrelated apps
What version of the Codex App are you using (From “About Codex” dialog)?
26.707.72221
What subscription do you have?
Pro
What platform is your computer?
_No response_
What issue are you seeing?
Summary
During long Codex desktop tasks involving browser testing and screenshots, multiple Node worker processes accumulate in the ChatGPT/Codex macOS resource coalition. Their combined footprint reaches approximately 10–18 GB, exhausting memory compression and available swap on a 16 GB Mac.
macOS then deliberately suspends unrelated applications—including Chrome, Excel, Calendar, Preview, Terminal and Activity Monitor—because of swap exhaustion. Applications that have already been suspended do not recover merely by closing ChatGPT. They must be force-quit individually, creating a risk of losing unsaved work.
In-app feedback
I submitted feedback from the affected Codex session. The full feedback/session ID has already been provided privately to OpenAI Support and can be supplied privately to an identifiable OpenAI maintainer on request.
I am intentionally withholding the ID from this public report because the affected session involved a private project.
Environment
- Application: New unified ChatGPT desktop app with Codex
- ChatGPT version:
26.707.72221 - ChatGPT build:
5307 - Bundled Codex version:
codex-cli 0.144.2 - Device: 15-inch MacBook Air
- Model identifier:
Mac15,13 - Processor: Apple M3
- Memory: 16 GB
- macOS: 26.5.2
- macOS build:
25F84 - Available storage during incidents: approximately 40–50 GB
The bundled Codex binary is located at:
/Applications/ChatGPT.app/Contents/Resources/codex
There is no separate /Applications/Codex.app installation on this computer.
Reproduction pattern
The problem occurs repeatedly during a long autonomous Codex task on a local web application project.
The task asks Codex to:
- Work autonomously for an extended period.
- Test existing functionality.
- Identify and fix verified defects.
- Continue through multiple work items.
- Perform browser checks and capture screenshots.
- Update project handoff documents.
- Deploy verified changes when appropriate.
Codex opens the in-app browser and performs repeated browser-based checks and screenshots.
I did not explicitly request subagents or parallel agents. I cannot determine whether Codex created additional agents or workers internally.
I have not yet completed a controlled browser-on versus browser-off comparison. However, every incident for which I have clear diagnostic evidence occurred while Codex was performing browser testing or capturing screenshots. Browser tooling is therefore strongly correlated with the failure, although I cannot yet prove that it is strictly required.
User-visible behaviour
macOS displays:
Your system has run out of application memory.
The Force Quit window then shows unrelated, low-memory applications in red and marked as paused. These have included:
- Calendar
- Terminal
- Preview
- Activity Monitor
- Microsoft Excel
- Google Chrome
- ChatGPT
Some of these applications are using only tens or hundreds of megabytes.
Closing ChatGPT or freeing several gigabytes does not reliably restore applications that the kernel has already suspended. I must force-quit those paused applications individually before the computer becomes fully responsive.
Diagnostic evidence
macOS generated repeated JetsamEvent reports in which:
largestProcesswasnode.- The dominant Node processes shared the same macOS resource coalition as ChatGPT/Codex.
- The memory displayed next to ChatGPT in the Force Quit window substantially understated the resource coalition’s complete Node footprint.
Incident: 14 July 2026 at approximately 09:52 BST
- Free memory: approximately 61 MB
- Compressed memory: approximately 12,862 MB
- ChatGPT/Codex coalition: 34 processes
- Aggregate coalition footprint: approximately 19,479 MB
- Node workers in that coalition: approximately 18,068 MB
largestProcess:node
Incident: 14 July 2026 at approximately 10:01 BST
- Free memory: approximately 31 MB
- Compressed memory: approximately 11,467 MB
- ChatGPT/Codex coalition: 33 processes
- Aggregate coalition footprint: approximately 17,913 MB
- Node workers in that coalition: approximately 16,567 MB
largestProcess:node
Incident on the current ChatGPT build: 14 July 2026 at approximately 19:52 BST
- Free memory: approximately 54 MB
- Compressed memory: approximately 12,285 MB
- ChatGPT/Codex coalition: 36 processes
- Aggregate coalition footprint: approximately 11,881 MB
- Node workers in that coalition: approximately 10,199 MB
- Largest individual Node workers: approximately 2,866 MB, 2,152 MB, 1,905 MB, 1,623 MB and 1,079 MB
largestProcess:node
Kernel evidence
The macOS unified log recorded the following events:
09:51:43 memorystatus: triggering no paging space action
09:51:43 memorystatus: suspending ChatGPT due to swap exhaustion
09:51:48 memorystatus: suspending Preview due to swap exhaustion
09:51:53 memorystatus: suspending Activity Monitor due to swap exhaustion
10:01:26 memorystatus: suspending Safari due to swap exhaustion
10:01:31 memorystatus: suspending Calendar due to swap exhaustion
10:01:36 memorystatus: suspending Terminal due to swap exhaustion
10:01:42 memorystatus: suspending com.apple.WebKit.GPU due to swap exhaustion
19:52:23 memorystatus: suspending Google Chrome due to swap exhaustion
This confirms that the low-memory applications are victims of the system-wide memory and swap exhaustion. They are not its original cause.
Microsoft Excel incident
During a separate incident, Microsoft Excel was the actively used foreground application.
The unified log recorded:
Microsoft Excel: hang likely: start
Microsoft Excel is unresponsive, hasn't responded for 56.8 seconds
Excel’s WebKit Networking and WebContent helpers then terminated. Excel itself was subsequently terminated with signal 9.
This demonstrates that the issue can hang or terminate an actively used foreground application and therefore creates a genuine risk of unsaved-work loss.
Why closing the large consumer does not immediately fix everything
Once macOS exhausts paging space, the kernel deliberately suspends selected applications. Those applications are no longer merely running slowly; their execution has been stopped.
Releasing memory afterward does not necessarily resume every already-suspended process. Suspended applications may also leave file-coordination or interprocess-communication requests waiting for responses, amplifying the apparent system freeze.
Force-quitting the suspended applications destroys those processes and releases their outstanding connections. This is why closing several small applications may be required even though they are not consuming significant memory.
Misleading memory attribution
The Force Quit window can show ChatGPT using only approximately 1–2 GB while macOS reports another 10–18 GB across Node workers in the same ChatGPT/Codex resource coalition.
This makes it difficult for the user to identify the real memory consumer. The complete descendant-worker footprint should be attributed to ChatGPT/Codex in the user interface.
Hardware and filesystem checks
I performed the following read-only checks:
- SSD SMART status: Verified
- Live APFS volume verification: Passed
- No kernel panic reports found
- Approximately 40–50 GB of storage available
- No spontaneous restart or shutdown
The computer returns to normal after the affected processes are terminated. These findings point to application or worker-process resource exhaustion rather than defective hardware or a corrupt filesystem.
Expected behaviour
- Browser and Node workers should be reclaimed after browser checks finish.
- Codex should impose a reasonable aggregate memory limit on its complete process tree.
- Codex should stop or warn before exhausting system swap.
- Child-worker memory should be correctly attributed to ChatGPT/Codex.
- Closing or completing browser tasks should terminate unnecessary browser and Node workers.
- A Codex task should not cause macOS to suspend unrelated foreground applications.
- Long tasks should degrade gracefully rather than causing a system-wide application-memory emergency.
Requested investigation
Please investigate:
- Whether in-app browser, screenshot, Node REPL, Playwright or related workers remain alive after browser checks complete.
- Why multiple individual Node workers grow to approximately 1–3 GB each.
- Whether long autonomous tasks repeatedly create workers without reclaiming previous ones.
- Whether internal agent or browser concurrency is contributing even when the user did not explicitly request subagents.
- Why ChatGPT’s displayed memory does not include the complete footprint of its Node workers.
- Whether Codex can enforce a configurable or automatic aggregate memory budget.
- Whether Codex can stop its work and warn the user before macOS reaches swap exhaustion.
Possibly related issues
- #17257 — reports numerous Node and Playwright processes not being cleaned up
- #19333 — Codex Mac app high memory usage
- #20740 — Codex memory growth causing the macOS application-memory warning
This report adds:
- macOS resource-coalition attribution
- Exact aggregate Node footprints
- Repeated
JetsamEventevidence - Kernel-confirmed swap exhaustion
- Kernel-confirmed suspension of unrelated applications
- Evidence of potential unsaved-work loss in an actively used application
- Correlation with in-app browser checks and screenshots
Additional information
I can perform a short, controlled browser-on versus browser-off comparison if a maintainer requests it and specifies which process measurements would be most useful.
I have intentionally not attached local application logs or session transcripts because they contain private project information. I can provide specific redacted diagnostic fields as text or supply the in-app feedback ID privately to an identifiable OpenAI maintainer.
What steps can reproduce the bug?
see main issue above
What is the expected behavior?
_No response_
Additional information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗