What version of the Codex App are you using?
Codex Desktop 26.623.31921, build 4452
Bundled app-server / CLI: codex-cli 0.142.2
What platform is your computer?
macOS 26.5.1 (25F80), Apple Silicon / arm64
What issue are you seeing?
Codex Desktop became unusable on launch: after force quit and relaunch, the main desktop process pegged one CPU core at about 99-100% and the UI never reached a usable state.
This reproduced after reboot as well. It was not an OpenAI service outage and did not require an app update to trigger.
I isolated the root cause to one active heartbeat automation file under:
~/.codex/automations/<redacted-automation-id>/automation.toml
Moving only that automation directory aside made Codex Desktop launch again with the same account, state DB, logs, plugins, and desktop global state intact.
Culprit automation shape
The automation prompt, id, and target thread are intentionally redacted, but the relevant non-private scheduling shape was:
version = 1
kind = "heartbeat"
status = "ACTIVE"
rrule = "FREQ=HOURLY;INTERVAL=3;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,12,15,18;UNTIL=20260626T150000Z"
The issue was observed on 2026-06-26, so the UNTIL value was on the same day as the launch failure.
Isolation / evidence
I bisected local state using temporary CODEX_HOME profiles and reversible file moves:
- Clean
HOME launched normally.
- Real
HOME with clean CODEX_HOME launched normally.
- Real
~/.codex reproduced the launch spin.
- Moving
auth.json aside did not fix it.
- Moving
.codex-global-state.json variants aside did not fix it.
- Moving the local state DB (
state_5.sqlite*) aside changed behavior but did not identify the root cause; copying the real state DB into a temp profile launched normally.
- Moving the large log DB (
logs_2.sqlite*) did not fix it.
- Moving the legacy
~/.codex/sqlite folder did not fix it.
- A minimal temp profile with real
config.toml, state_5.sqlite*, auth.json, and .codex-global-state.json launched normally.
- Adding the full
automations directory to that temp profile reproduced the 100% CPU launch spin.
- Testing automations one by one isolated the issue to a single active heartbeat automation TOML.
- A plain recreated copy of that TOML in a temp profile still reproduced the spin, so this was not caused by extended attributes or directory metadata.
- Setting that same automation to inactive made startup normal.
- Using a simpler RRULE like
FREQ=HOURLY;INTERVAL=3 made startup normal.
- Moving the culprit automation directory aside from the real profile fixed Desktop launch.
Observed startup signature:
- main Codex desktop process: about
99-100% CPU
- app-server process mostly started/connected successfully
- logs stopped around the app-server connection becoming connected
- after removing the culprit automation, the main window reached
ready-to-show and app routes mounted normally
Expected behavior
One malformed, expired, edge-case, or otherwise problematic heartbeat automation should not be able to spin the Electron main process at 100% during app launch.
Codex Desktop should either:
- ignore/quarantine the problematic automation and continue launching,
- mark it inactive with an actionable error,
- or evaluate the RRULE asynchronously with timeout/backoff so the desktop UI remains responsive.
Actual behavior
The entire desktop app became unusable on every launch until the specific automation directory was moved out of ~/.codex/automations.
Workaround
Move the offending automation directory aside:
mv ~/.codex/automations/<redacted-automation-id> ~/.codex/automations/<redacted-automation-id>.disabled
After that, Codex Desktop launches normally. Other active automations continued to exist and did not reproduce the issue.
Related issues
This looks related to other automation / heartbeat startup-spin reports, but the isolated root cause here is different:
What version of the Codex App are you using?
Codex Desktop
26.623.31921, build4452Bundled app-server / CLI:
codex-cli 0.142.2What platform is your computer?
macOS
26.5.1(25F80), Apple Silicon / arm64What issue are you seeing?
Codex Desktop became unusable on launch: after force quit and relaunch, the main desktop process pegged one CPU core at about
99-100%and the UI never reached a usable state.This reproduced after reboot as well. It was not an OpenAI service outage and did not require an app update to trigger.
I isolated the root cause to one active heartbeat automation file under:
Moving only that automation directory aside made Codex Desktop launch again with the same account, state DB, logs, plugins, and desktop global state intact.
Culprit automation shape
The automation prompt, id, and target thread are intentionally redacted, but the relevant non-private scheduling shape was:
The issue was observed on
2026-06-26, so theUNTILvalue was on the same day as the launch failure.Isolation / evidence
I bisected local state using temporary
CODEX_HOMEprofiles and reversible file moves:HOMElaunched normally.HOMEwith cleanCODEX_HOMElaunched normally.~/.codexreproduced the launch spin.auth.jsonaside did not fix it..codex-global-state.jsonvariants aside did not fix it.state_5.sqlite*) aside changed behavior but did not identify the root cause; copying the real state DB into a temp profile launched normally.logs_2.sqlite*) did not fix it.~/.codex/sqlitefolder did not fix it.config.toml,state_5.sqlite*,auth.json, and.codex-global-state.jsonlaunched normally.automationsdirectory to that temp profile reproduced the 100% CPU launch spin.FREQ=HOURLY;INTERVAL=3made startup normal.Observed startup signature:
99-100%CPUready-to-showand app routes mounted normallyExpected behavior
One malformed, expired, edge-case, or otherwise problematic heartbeat automation should not be able to spin the Electron main process at 100% during app launch.
Codex Desktop should either:
Actual behavior
The entire desktop app became unusable on every launch until the specific automation directory was moved out of
~/.codex/automations.Workaround
Move the offending automation directory aside:
After that, Codex Desktop launches normally. Other active automations continued to exist and did not reproduce the issue.
Related issues
This looks related to other automation / heartbeat startup-spin reports, but the isolated root cause here is different:
heartbeat-thread-permissions-by-idin global-state spins the main process at ~100% CPU on launch (UI frozen, persists across restarts) #27298