macOS CodexDockTilePlugin recurses in setDockTile and crashes Dock external extra

Resolved 💬 2 comments Opened Jun 18, 2026 by bstern Closed Jun 18, 2026

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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗