Windows Codex Desktop leaks/stales helper processes across completed work, causing repeated manual cleanup and instability
What version of the Codex App are you using (From “About Codex” dialog)?
OpenAI.Codex_26.623.19656.0_x64__2p2nqsd0c76g0
What subscription do you have?
Pro (20x)
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Codex Desktop on Windows repeatedly leaves Codex-owned helper processes running after project work is reported complete and after Codex windows/threads are closed cleanly.
The stale processes include Codex MCP node helpers, node_repl.exe helpers, and a Codex Chrome/Edge extension host. This is not only post-crash residue: the helpers accumulate during normal Codex use before crashes occur.
Evidence from one long-running cleanup thread:
- 2026-07-06 01:41Z: manual cleanup killed 21 stale Codex-linked helpers:
- 1 Codex Edge native extension host
- 5 node_repl.exe helpers
- 14 Codex MCP node.exe helpers
- 1 orphaned Codex-runtime python.exe -m http.server 8787
- 2026-07-07 02:02Z: without killing anything, a fresh snapshot showed another 45 Codex helper-like processes resident:
- 11 node_repl.exe
- 33 Codex-parented MCP node.exe ./mcp/server.* helpers
- 1 Codex Chrome/Edge extension-host.exe
Impact:
- Repeated manual cleanup is needed several times per day.
- Codex Desktop becomes unstable and crashes several times per day.
- Sometimes a hard restart is needed.
- It becomes hard to know which project/thread still had active work after a crash.
- The process buildup contributes to high memory pressure and system sluggishness.
Platform:
Microsoft Windows NT 10.0.26200.0 x64
Codex package observed:
OpenAI.Codex_26.623.19656.0_x64__2p2nqsd0c76g0
Codex app-server command observed:
codex.exe app-server --analytics-default-enabled
Related error:
Running codex doctor directly from PowerShell failed because launching the packaged WindowsApps codex.exe returned: Access is denied.
What steps can reproduce the bug?
This is a Codex Desktop lifecycle/reliability issue rather than a code-snippet issue.
Reproduction pattern:
- Use Codex Desktop on Windows across several local Git project repos.
- Run normal project work in Codex.
- Allow Codex to use its normal helpers: MCP servers, node_repl, browser/extension helpers, Git commands, local dev/test processes as needed.
- Let Codex finish the work. The assistant reports completion and no active terminal/work remains.
- Close the Codex project/thread/window cleanly.
- Later inspect processes by PID, executable path, command line, parent chain, CPU sample, memory, and age.
- Observe Codex-owned helper processes still resident under Codex/app-server ancestry, including node_repl.exe and node.exe ./mcp/server.* helpers.
- Repeat across normal Codex work sessions. The helper count grows and eventually contributes to memory pressure and Codex instability/crashes.
Representative cleanup prompt used by the user:
"Close all STALE/IDLE/UNUSED Codex-started processes and related ones (linked to Codex!). Do not kill x, y and z. Only terminate processes clearly Codex-owned, stale/idle/unused, and unrelated to current work."
Session/thread id:
019e6b7d-4028-7412-b9b2-7927f779879b
Token/context usage:
Not available from the UI for this report.
What is the expected behavior?
When a Codex turn, thread, project, or window completes, is canceled, or is closed cleanly, helper-only processes started for that work should exit or be reaped.
Specifically:
- Codex MCP node helpers should not remain indefinitely after their owning work is complete.
- node_repl.exe helpers should be cleaned up when no longer needed.
- Codex Chrome/Edge extension hosts should not remain stale after browser/plugin work is done.
- Orphaned local servers started by Codex should be stopped when the task ends.
- Codex should expose a reliable user-visible "stop all project work / clean stale helpers" operation.
- Codex should distinguish active project work from stale helper residue so users can safely shut down or restart without risking repo/app state.
- Cleanup should not require broad process-name killing; safe cleanup needs PID, executable path, command line, parent chain, CPU/memory sample, and age.
Additional information
All info written by Codex
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗