openai / openai/codex

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

Open
#43,471 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app-server bug computer-use mcp performance
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?

  1. Install ChatGPT desktop 26.901.41600 (or current) on macOS with Code mode enabled.
  2. Leave the app running; lock the screen; do not interact.
  3. Periodically run:
    ps -eo pid,etime,rss,args | grep SkyComputerUseClient | grep -v grep
    
  4. Observe a new helper pair appear every ~5 minutes, with all previous pairs still alive, and the parent codex RSS 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.