ChatGPT 26.901 / codex-cli 0.153.4: idle app-server leaks SkyComputerUseClient mcp helpers (~pair per 5 min) -> 6.4 GB RSS and two kernel panics on macOS 26.6.2
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of Codex CLI is running?
Bundled app-server from ChatGPT desktop 26.901.41600 (build 7982): codex-cli 0.153.4 (/Applications/ChatGPT.app/Contents/Resources/codex app-server). The leak is in the ChatGPT desktop app's background codex app-server — not an interactive CLI session.
What subscription do you have?
ChatGPT desktop app with Code mode host enabled (features.code_mode_host=true).
Which model were you using?
N/A — no turns were running. The leak reproduces with the machine idle and locked, zero user activity.
What platform is your computer?
macOS 26.6.2 (25G83), Apple Silicon (Mac16,9), 36 GB RAM.
What issue are you seeing?
The background codex app-server spawns a fresh pair of SkyComputerUseClient helper processes (event-stream + computer-history modes) roughly every 5 minutes while completely idle, and never reaps the previous pair. Over ~9 idle hours this accumulated into:
- 17+ live helper processes (~35 MB each and growing) measured 27 minutes after a clean boot
- Parent codex app-server RSS growth to 6.4 GB
- Two kernel panics 13 hours apart (Sep 6 19:14 and Sep 7 04:46 local), both memory exhaustion → watchdog. The second happened overnight while the machine was locked and unused.
Panic signatures (from /Library/Logs/DiagnosticReports/):
- Crash 1:
userspace watchdog timeout: no successful checkins from WindowServer (2 induced crashes) in 188 seconds— compressor at 100% segments limit, 42 swapfiles, 6 JetsamEvents in the preceding 2 minutes. Top consumers in Jetsam snapshots: codex 3.5 GB + 1.8 GB, WindowServer 3.9 GB. - Crash 2:
watchdog timeout: no checkins from watchdogd in 93 seconds— 5 JetsamEvents 04:24–04:33; top consumer codex 6.4 GB (started at login after the previous crash's reboot, i.e. pure idle growth).
Helper spawn cadence measured from process etimes on a fresh session (pairs, pid elapsed): 27:32, 27:16, 26:19, 20:26, 20:15, 15:02, 9:48, 4:35 — a new pair every ~5 min with none exiting.
The helpers are provably idle: lsof shows only stdio pipes to the parent and their own cache DBs (com.openai.sky.CUAService.cli), ~0.6% CPU, and zero ScreenCaptureKit/camera/display events in the unified log over a 15-minute window. No active Computer Use work is in flight; the feature was never invoked by the user.
Config state on this machine (~/.codex/config.toml) contains both hooks:
notify = [ "/Users/<user>/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient", "turn-ended" ]
[mcp_servers.computer-use]
command = "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
args = [ "mcp" ]
This machine leaks the mcp variant (SkyComputerUseClient mcp / event-stream / computer-history), not the turn-ended variant tracked in #26293 / #29157. Same lifecycle family, different spawn path — and no --previous-notify self-nesting is present (0 levels), so this is not the #29157 wrapper bug.
Related: #26293 · #29157 · #25744 · #21200 · #12491 · #39151.
What steps can reproduce the bug?
- Install ChatGPT desktop 26.901.41600 (or current) on macOS with Code mode enabled.
- Leave the app running; lock the screen; do not interact.
- Periodically run:
ps -eo pid,etime,rss,args | grep SkyComputerUseClient | grep -v grep - Observe a new helper pair appear every ~5 minutes, with all previous pairs still alive, and the parent
codexRSS climbing.
What is the expected behavior?
- The keepalive/reconnect path should health-check an existing helper and reuse it, not spawn a replacement.
- Idle helpers should exit (TTL/lease) or be reaped by the parent app-server.
- A background app-server that has received no turns should hold roughly constant memory, not grow ~0.7 GB/hour.
Workaround
LaunchAgent reaper every 300 s culling SkyComputerUseClient helpers older than 30 minutes (keeping the newest pair), plus a 4 GB RSS cap on the codex parent (kill only that process; ChatGPT respawns its app-server on demand). This matches the mitigation other reporters independently arrived at in #29157/#26293.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the five-minute helper-pair cadence with the provided ps command, then inspect ~/.codex/config.toml and the macOS DiagnosticReports logs. Compare the mcp helper lifecycle with related issues #26293 and #29157. Done means idle app-server memory remains stable and old SkyComputerUseClient pairs are reused or reaped instead of accumulating.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- backend, desktop, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100