Desktop app crashes after heartbeat automation enters invalid model-provider resume loop
Summary
The Codex desktop app entered a tight heartbeat-resume loop for an existing automation, exhausted the V8 heap in codex-code-mode-host, and then crashed five times after relaunch while restoring state.
Environment
- Codex desktop version:
26.730.61639 (6234) - macOS:
26.5.2 (25F84) - Architecture: Apple Silicon / ARM64
- Automation kind:
heartbeat - Automation schedule: daily at 11:00 local time
- A separate cron automation with the same display name was also active.
Observed behavior
The app repeatedly attempted to hydrate/resume the heartbeat's target thread and logged:
heartbeat_automation_resume_failed
failed to load configuration: Model provider `` not found
failureReason=invalid_config
source=thread_hydration
There were 2,893 failed heartbeat resume attempts in approximately 41 minutes.
At 09:36:54 local time, codex-code-mode-host aborted with a V8 out-of-memory failure. The faulting stack included:
v8::base::OS::Abort
v8::base::FatalOOM
v8::Utils::ReportOOMFailure
v8::internal::V8::FatalProcessOutOfMemory
v8::internal::Heap::FatalProcessOutOfMemory
v8::internal::Factory::NewStringFromUtf8
The desktop app subsequently crashed five times with EXC_BREAKPOINT (SIGTRAP). The repeated app crash stack began with:
ares_llist_replace_destructor
reading_mode$cxxbridge1$194$parse_distilled_html
v8::CppHeap::CollectGarbageInYoungGenerationForTesting
v8::Name::GetIdentityHash
node::MemoryRetainer::IsRootNode
Timeline and incident IDs
- code-mode host OOM — 09:36:54 —
92B6AC3F-233E-493D-9FF0-B9917745DAAA - desktop crash — 09:39:44 —
9F1A6685-6E2B-4463-A176-E753F9A25122 - desktop crash — 09:41:00 —
E3741006-143A-4191-8171-BDAD2B100E9E - desktop crash — 09:42:26 —
0FBE5C71-0C9C-453E-A1CF-3ED33F5568E2 - desktop crash — 09:44:51 —
CE5F2C79-74A6-4946-A259-A9823DB0B3B9 - desktop crash — 09:46:51 —
80E5BE8A-641C-411D-9579-4D86D9BD59AC
Expected behavior
An invalid or stale model-provider configuration on a scheduled heartbeat should fail once with a visible error and back off. It should not retry continuously, leak/exhaust memory, or crash the desktop app during state restoration.
Workaround
Pausing only the duplicated heartbeat automation broke the problematic resume path while leaving the original cron automation active.
Privacy
Session transcripts, automation prompt contents, personal filesystem paths, and Slack/Jira content have intentionally been omitted. Full macOS diagnostic reports are available if maintainers provide a private upload path.