Environment
-
Device: MacBook Air (Apple Silicon, arm64)
-
App: Codex for Mac (latest as of Feb 9, 2026)
-
Bundle ID:
com.openai.codex -
Notarization: accepted, “Notarized Developer ID”, ticket stapled
-
Install path:
/Applications/Codex.app
Symptoms
-
App frequently ends up with multiple Codex icons in the Dock and no window opens.
-
App may crash/exit shortly after launch (sometimes without a
.crashreport). -
Attempts to run a “GPU-off fallback” are unreliable: the app logs an error and IPC breaks (
EPIPE, “Object has been destroyed”, worker exit).
Expected
-
Single Dock icon
-
App opens reliably and stays running
-
Running with
--disable-gpushould not cause unhandled promise rejections or self-termination
Actual
-
Multiple Dock icons; sometimes no UI appears
-
App exits or becomes non-functional (IPC errors)
-
When launching with
--disable-gpu, app logs:-
Error: GPU access not allowed. Reason: GPU access is disabled through commandline switch --disable-gpu and --disable-software-rasterizer. -
even though
--disable-software-rasterizerwas not provided by the launcher script.
-
Repro steps
-
Install Codex.app to
/Applications. -
Launch normally:
open -a /Applications/Codex.app
(Sometimes results in multiple Dock icons and no window) -
Launch from terminal with logging:
/Applications/Codex.app/Contents/MacOS/Codex --enable-logging=stderr --v=1 -
Launch with GPU disabled:
/Applications/Codex.app/Contents/MacOS/Codex --disable-gpu --disable-gpu-compositing --enable-logging=stderr --v=1Observe error stating both
--disable-gpuand--disable-software-rasterizerare active.
Logs
Gatekeeper/signing is OK:
-
spctl --assess=> accepted, source=Notarized Developer ID -
codesign -dv --verbose=4shows Developer ID Application: OpenAI, L.L.C. and notarization stapled
GPU disable path produces unhandled promise + IPC breakage:
This error originated either by throwing inside of an async function without a catch block...
Error: GPU access not allowed. Reason: GPU access is disabled through commandline switch --disable-gpu and --disable-software-rasterizer.
...
[IpcRouter] Socket error (error(name=Error,code=EPIPE))
[worker-manager] Worker exited { code: 1 }
Error occurred in handler for 'codex_desktop:message-from-view': TypeError: Object has been destroyed
Troubleshooting already done
-
Verified notarization/signing OK via
spctl+codesign -
Removed quarantine recursively:
sudo xattr -r -d com.apple.quarantine /Applications/Codex.app -
Reset user state:
-
~/Library/Application Support/Codex -
~/Library/Preferences/com.openai.codex.plist
-
-
Dock cleanup / killed Dock to remove stale pins
Hypothesis
-
Dock multi-instance / no-window behavior might be related to Electron multiple-instance handling and/or stale launch services state.
-
GPU disable path appears to treat
--disable-software-rasterizeras enabled even when not passed, leading to a broken rendering/IPC pipeline.
Request
-
Please advise recommended workaround OR ship a patch.
-
Specifically: ensure GPU disable path doesn’t trigger unhandled promise rejection and clarify why
--disable-software-rasterizeris considered active when not provided.