Desktop: editing automation RRULE crashes mid-write, leaves persistent corrupt state surviving uninstall + reinstall
Summary
Editing an automation's repeat interval (RRULE) in the desktop UI crashed the renderer mid-write, leaving corrupt state that persistently crashes the app on every subsequent launch — including after a full uninstall + Microsoft Store reinstall. State corruption is in %USERPROFILE%\.codex\ which is not removed by the MSIX uninstaller.
Environment
- OS: Windows 11 Pro, version 10.0.26200
- MSIX package:
OpenAI.Codex_26.519.5221.0_x64__2p2nqsd0c76g0 - Bundled app-server:
0.133.0-alpha.1 - CLI (separate install):
codex-cli 0.130.0-alpha.5 - GPU: NVIDIA GeForce RTX 3080 Laptop GPU + AMD Radeon integrated (Optimus laptop)
Reproduction (initial trigger)
- Open Codex desktop, navigate to an existing automation
- Open Repeats → Custom RRULE editor (e.g.
FREQ=HOURLY;INTERVAL=1) - Manually edit the interval value
- Renderer crashes immediately, window closes silently
- From this point onward the app cannot be re-launched — every subsequent launch crashes ~1 second after init
Crash signature
Desktop log (%LOCALAPPDATA%\Packages\OpenAI.Codex_<id>\LocalCache\Local\Codex\Logs\<date>\codex-desktop-*.log) ends at the same line every launch:
info Launching app
info [AppServerConnection] Initializing app-server transport
info [StdioConnection] stdio_transport_spawned ... codex.exe ... currentVersion=0.133.0-alpha.1
info [AppServerConnection] initialize_handshake_result outcome=success
info [AppServerConnection] Codex CLI initialized
info [IpcRouter] I am the router
<crash, no further lines>
App-server handshake succeeds. Crash is in the Electron renderer ~700ms after IpcRouter setup — when the renderer presumably reads persisted state, queued follow-ups, and automation metadata.
Crashpad dump created on every crash, ~34.8 MB, MDMP magic. Strings in the dump reference DawnGraphiteCache and Chrome IO thread.
Persistent state surviving uninstall + reinstall
The MSIX uninstall does not remove %USERPROFILE%\.codex\. Corrupt state lives there, so a full reinstall does nothing.
After bisecting, the crash-driving file is %USERPROFILE%\.codex\.codex-global-state.json. With this file fully removed, the app launches cleanly (empty sidebar). Restoring even 5 minimal keys from a backup (electron-main-window-bounds, electron-local-remote-control-installation-id, primary-runtime-update-jitter-ms, use-copilot-auth-if-available, remote-project-connection-backfill-completed) reproduces the crash — so corruption is not isolated to the large electron-persisted-atom-state (221 KB) or queued-follow-ups (211 KB) blobs alone, and may also live in SQLite (~/.codex/sqlite/codex-dev.db) or the automations/ directory.
Workarounds attempted
| Attempt | Result |
|---|---|
| Clear GPU caches (DawnWebGPUCache, DawnGraphiteCache, GPUCache, Cache, Code Cache) | Still crashes |
| ELECTRON_DISABLE_HARDWARE_ACCELERATION=1 in User env | Still crashes |
| Force NVIDIA via Windows Graphics + NVIDIA Control Panel | Still crashes |
| Quarantine large session JSONL files (>50 MB) | Still crashes |
| Bulk-delete old sessions / archived_sessions / worktrees (~3.7 GB freed) | Still crashes |
| Uninstall + reinstall MSIX from Microsoft Store | Still crashes (state survives) |
| Move .codex-global-state.json aside entirely | Opens but sidebar empty |
| Partial restore (11/13 keys, exclude two large blobs) | Crashes |
| Ultra-minimal restore (5 trivial flag keys, no thread/project refs, 0.37 KB) | Crashes |
The fact that even a 370-byte state file with no thread refs and no project refs reproduces the crash suggests corruption is also in another file the renderer reads on startup.
Requests
- Recovery tool: ship a
codex doctor/codex reset-desktop-statecommand that safely rebuilds corrupt local state without requiring users to bisect JSON keys. - Atomic writes: write the automation RRULE atomically (write-temp-then-rename) so a crash mid-edit cannot leave half-written state.
- Uninstall: have the MSIX uninstaller offer to remove
%USERPROFILE%\.codex\(currently kept, blocking clean reinstall recovery). - Auto-recovery on launch: when the renderer hits this state, quarantine the bad blobs and continue, rather than killing the process.
- Crashpad symbols: ship public PDBs (or accept dumps directly) so users can self-diagnose.
Related
- #21342 — automation RRULE display bug
- #23814 — Desktop Windows: repeated silent window closes
- #21750 — state runtime: corrupt
state_5.sqlitewedges startup with no auto-recovery - #24408 — Desktop crashes on startup with
0xC000001D - #23863 — Desktop startup crash due to sqlx migration checksum mismatch
Crashpad dumps
Local crashpad dumps available at:%LOCALAPPDATA%\Packages\OpenAI.Codex_<package-id>\LocalCache\Roaming\Codex\Crashpad\reports\*.dmp
Multiple copies, ~34.8 MB each, repeatable. Happy to share dumps privately if needed.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗