Repository navigation
Codex macOS app renderer freezes at 100% CPU after auto-starting browser/node_repl runtime #28502
Description
Environment
- Codex desktop app:
26.609.71450 - Codex app build:
3965 - macOS:
15.6.1 - Architecture: Apple Silicon /
arm64 - Install source: official DMG from
https://persistent.oaistatic.com/codex-app-prod/Codex.dmg
Summary
Codex desktop on macOS freezes shortly after launch. The visible symptom is the Electron renderer process pegging one CPU core at ~100%.
Reinstalling /Applications/Codex.app from the official DMG does not fix it. The issue appears to be triggered by user-local Codex state under ~/.codex, specifically the app auto-starting the browser / node_repl runtime.
Observed behavior
After launch, Codex rewrites ~/.codex/config.toml and enables browser/runtime-related entries such as:
[plugins."browser@openai-bundled"]
enabled = true
[mcp_servers.node_repl]
command = "/Applications/Codex.app/Contents/Resources/cua_node/bin/node_repl"
startup_timeout_sec = 120It also starts processes like:
/Applications/Codex.app/Contents/Resources/codex app-server --analytics-default-enabled
/Applications/Codex.app/Contents/Resources/cua_node/bin/node_repl
~/.codex/computer-use/Codex Computer Use.app/.../SkyComputerUseService
Shortly after node_repl appears, the renderer spins:
Codex (Renderer) ~100% CPU
The app UI becomes unusable / appears frozen.
Reproduction notes
This was observed on an existing local Codex profile.
- Launch Codex desktop app.
- Wait roughly 1-2 minutes.
- Observe
node_replbeing started. - Observe
Codex (Renderer)jump to ~100% CPU. - App becomes effectively frozen.
The following did not permanently fix the issue:
- quitting/relaunching Codex
- reinstalling
/Applications/Codex.appfrom the official DMG - clearing some app cache directories
- disabling plugin entries in
config.tomlmanually, because Codex rewrites parts of the config on launch
Why this does not look like a bad app install
The app bundle was replaced from the official DMG and verified as notarized:
/Applications/Codex.app: accepted
source=Notarized Developer ID
After reinstall, the same local profile still reproduced the freeze. This points to interaction between the current app version and persisted local state / plugin runtime setup under ~/.codex.
Related but likely different issue
This may be related to the broader desktop performance family, but the local trigger differs from #24510.
#24510 appears focused on high CPU from unbounded local thread metadata / sidebar history paths. In this case, the strongest correlation observed was the browser / node_repl runtime being auto-started and then the renderer immediately pegging CPU.
Expected behavior
Codex desktop should not freeze or spin the renderer at ~100% CPU when auto-starting browser / node_repl / computer-use runtime components.
If a local plugin/runtime state is incompatible, Codex should fail that runtime gracefully, avoid repeatedly starting it, and leave the main UI usable.
Actual behavior
Codex auto-starts the runtime chain and the renderer pegs ~100% CPU, making the desktop app unusable. Reinstalling the app bundle alone does not recover because the trigger appears to live in persisted user state.
Sanitization note
I have intentionally omitted full config.toml, logs, session files, and prompt history because they may contain local paths, private project data, or credentials. The snippets above are redacted to the relevant runtime entries only.
Activity
github-actions commentedon Jun 16, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
heartbeat-thread-permissions-by-idin global-state spins the main process at ~100% CPU on launch (UI frozen, persists across restarts) #27298Powered by Codex Action
henry-insomniac commentedon Jun 16, 2026
I reviewed the potential duplicates:
heartbeat-thread-permissions-by-idin global-state spins the main process at ~100% CPU on launch (UI frozen, persists across restarts) #27298 are closer to persisted UI/global-state CPU loops.cua_node/bin/node_repl; shortly afternode_replappears,Codex (Renderer)jumps to ~100% CPU and the UI becomes unusable.Reinstalling the app bundle did not help. The issue reproduces with the same
~/.codexuser state after reinstall, which suggests an interaction between persisted local state and the browser/node_repl runtime startup path rather than a corrupted app install.I do not think this is a clear duplicate unless one of the linked issues is known to share the same
node_repl/ bundled browser runtime root cause.bcvictory commentedon Jul 14, 2026
I reproduced this on ChatGPT/Codex App
26.707.62119(build5211), Codex Framework150.0.7871.115, macOS27.0 (26A5378j), Apple Silicon.The GUI froze after roughly 18 hours of app uptime. The primary
Codex (Renderer)process was continuously using approximately 101% CPU with a 1.3 GB physical footprint. A three-secondsampleshowed the renderer's main thread continuously executing insidev8::Script::Run.I terminated only the affected renderer with
SIGTERM. ChatGPT respawned it using the same renderer client ID and the GUI immediately recovered. The main ChatGPT process, bundled Codex app-server, active sessions, and child-session app-servers all survived.The desktop log also contained repeated
browser-use native pipe rejected socket peer reason=missing-code-signing-identitywarnings. The bundled app-server had accumulated 416 direct child processes using approximately 5.43 GB RSS, which may be related, although I cannot confirm causality.Recovery command:
This appears consistent with the reported renderer/browser runtime loop. Renderer-only termination also provides a recovery path that does not destroy active Codex sessions.
biabiu commentedon Aug 10, 2026
Confirming this on ChatGPT Desktop 26.803.41515 (Codex Framework 151.0.7922.76) on macOS 26.5.1 / Apple Silicon.
The Desktop app auto-starts the Browser/node_repl runtime shortly after launch even when the local configuration has the Browser plugin and node_repl MCP server disabled. The app also rewrites
notifyto the bundledSkyComputerUseClient ... turn-ended --previous-notify ...wrapper on restart.I performed a clean-profile control test:
~/.codexdirectory aside (not deleted).Result: the runtime still auto-started shortly after launch, followed by sustained high energy use. Representative process snapshot:
codex app-server: ~111% CPUA short sample of the hot renderer showed V8/Node serialization and GC pressure (
ValueSerializer,LowMemoryNotification,PersistentRegionBase::RefillFreeList). The app-server was repeatedly inmerge_loaded_apps,merge_connectors, andserialize_outgoing_message.SSH was disconnected and
syspolicydwas near 0% CPU, so this is not the Gatekeeper/FD-exhaustion variant. The clean-profile result rules out old local session history, SQLite state, or persisted plugin configuration as the primary trigger; the Desktop runtime auto-provisioning itself appears sufficient to reproduce it.Additional confirmation: in the freshly generated profile's
logs_2.sqlite, there are already 12 occurrences ofbrowser-use native pipe rejected socket peer reason=missing-code-signing-identity. This matches the native-pipe warning reported in the renderer-recovery comment above and further points to the bundled Browser runtime startup path.Renderer-only SIGTERM is not durable in this case: I terminated the then-hottest renderer (~206% CPU). CPU dropped briefly across the process tree, but within roughly three seconds newly spawned/recovered renderers were back at ~151% and ~142%, with app-server ~113% and the main process ~91%. So the loop is immediately re-created after renderer recovery rather than being confined to one stale renderer.
biabiu commentedon Aug 11, 2026
I mannually closed Codex(renderer) in activity monitor - power tab, the cpu and power usage decreased to normal level.
Then gpt reloaded GUI for 5s, and showed normal GUI
This can be a temporary solution
pawsi-id commentedon Sep 3, 2026
I am seeing the same class of intermittent full-window freezes on a current Codex/ChatGPT macOS build. When it happens, the entire desktop UI stops accepting clicks; this is not just a task waiting for approval.
Environment:
Local evidence collected while diagnosing:
The strong correlation with many browser/node_repl/plugin runtime helpers makes this report look closely related to #28502. Restarting recovers the UI temporarily, but the freeze recurs. Raw logs and session transcripts are omitted because they can contain local paths and project content.