Skip to content

Codex Desktop macOS spins at 100% on launch from one ACTIVE heartbeat automation RRULE #30248

Description

@Mohammad-Orabi

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:

  1. Clean HOME launched normally.
  2. Real HOME with clean CODEX_HOME launched normally.
  3. Real ~/.codex reproduced the launch spin.
  4. Moving auth.json aside did not fix it.
  5. Moving .codex-global-state.json variants aside did not fix it.
  6. 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.
  7. Moving the large log DB (logs_2.sqlite*) did not fix it.
  8. Moving the legacy ~/.codex/sqlite folder did not fix it.
  9. A minimal temp profile with real config.toml, state_5.sqlite*, auth.json, and .codex-global-state.json launched normally.
  10. Adding the full automations directory to that temp profile reproduced the 100% CPU launch spin.
  11. Testing automations one by one isolated the issue to a single active heartbeat automation TOML.
  12. 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.
  13. Setting that same automation to inactive made startup normal.
  14. Using a simpler RRULE like FREQ=HOURLY;INTERVAL=3 made startup normal.
  15. 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:

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appautomationsbugSomething isn't workingperformance

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions