macOS CodexDockTilePlugin recurses in setDockTile and crashes Dock external extra
What happened?
The macOS Codex app's Dock tile plugin appears to recurse indefinitely in -[CodexDockTilePlugin_com_openai_codex setDockTile:], causing com.apple.dock.external.extra.x86_64 to crash with stack exhaustion.
The crash reporter showed repeated crashes and a consecutiveCrashCount of 17. Disabling the Dock tile plugin by renaming it stopped the crash loop locally.
Crash signature
Process: com.apple.dock.external.extra.x86_64
Identifier: com.apple.dock.external.extra.x86_64
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Message: Thread stack size exceeded due to excessive recursion
Triggered by Thread: 0, Dispatch Queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib objc_storeStrong + 8
1 CodexDockTilePlugin -[CodexDockTilePlugin_com_openai_codex setDockTile:] + 47
2 CodexDockTilePlugin -[CodexDockTilePlugin_com_openai_codex setDockTile:] + 248
... recursion level ~37403 ...
Binary image from the report:
/Applications/Codex.app/Contents/PlugIns/CodexDockTilePlugin.plugin/Contents/MacOS/CodexDockTilePlugin
Latest local diagnostic report filename:
~/Library/Logs/DiagnosticReports/com.apple.dock.external.extra.x86_64-2026-06-18-110247.ips
Environment
macOS: 26.5.1 (25F80)
Hardware: iMac20,1
Codex bundled CLI: codex-cli 0.140.0-alpha.19
Standalone codex CLI: codex-cli 0.140.0-alpha.19
Codex app path: /Applications/Codex.app
Workaround applied locally
mv /Applications/Codex.app/Contents/PlugIns/CodexDockTilePlugin.plugin \
/Applications/Codex.app/Contents/PlugIns/CodexDockTilePlugin.plugin.disabled
killall Dock
After that, no newer com.apple.dock.external.extra.x86_64 diagnostic report appeared during the immediate check.
Expected behavior
Codex's Dock tile integration should not crash the macOS Dock external extra process. If the plugin receives setDockTile:, it should update state without recursively invoking its own setter.
Notes
This report is filed from a Codex desktop session on behalf of the user. The full .ips crash report exists locally and can be shared through /feedback if needed, but I am not attaching the full report here to avoid accidentally exposing local diagnostic details.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗