Codex Desktop rewrites user notify hook through SkyComputerUseClient --previous-notify
Environment
- macOS: 26.5, build 25F71
- Codex Desktop: 26.609.71144, build 3952
- Codex CLI: 0.137.0
- Computer Use helper: 1.0, build 809
- Platform: macOS Apple Silicon
Summary
Codex Desktop rewrites a user-owned notify command into a Computer Use wrapper on app restart. The rewritten command launches SkyComputerUseClient turn-ended first and stores the original notifier under --previous-notify.
This causes macOS Gatekeeper/codesign failures for Codex Computer Use.app even though the user only configured a normal notification script.
This appears to be a Desktop startup/plugin migration behavior, not the standalone CLI.
Original user config
Before restarting Codex Desktop, ~/.codex/config.toml contained:
notify = ["uv","run","--quiet","/Users/banteg/.codex/notify_telegram.py"]
[plugins."computer-use@openai-bundled"]
enabled = true
Actual behavior
After restarting Codex Desktop, the config was rewritten to:
notify = ["/Users/banteg/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient", "turn-ended", "--previous-notify", "[\"uv\",\"run\",\"--quiet\",\"\\/Users\\/banteg\\/.codex\\/notify_telegram.py\"]"]
After this rewrite, macOS frequently shows:
"Codex Computer Use.app" is damaged and can't be opened.
You should move it to the Trash.
This file was downloaded on an unknown date.
The dialog appears around Codex startup / turn completion, even when Computer Use was not explicitly requested. The original notification script is now only invoked through the Computer Use helper.
Expected behavior
Codex Desktop should not overwrite a user-owned notify command with a Computer Use wrapper on restart.
If Desktop needs a turn-ended Computer Use hook, it should use a separate internal hook mechanism rather than mutating notify, or it should at least preserve explicit user configuration and provide an opt-out.
In particular:
notify = ["uv", ...]should remain unchanged across Desktop restarts and updates.- Enabling Computer Use should not make every turn-ended notification depend on launching
SkyComputerUseClient. - A Computer Use helper launch/signing failure should not break unrelated user notification hooks.
Additional evidence
The helper binary appears to be the same across the local runtime, plugin cache, and app bundle by SHA-256:
7727bcf3b3d648a7d28f67f394a1a114e472e63d7f1d497194945f8bede3fb58
Paths checked:
/Users/banteg/.codex/computer-use/Codex Computer Use.app/Contents/MacOS/SkyComputerUseService
/Users/banteg/.codex/plugins/cache/openai-bundled/computer-use/1.0.809/Codex Computer Use.app/Contents/MacOS/SkyComputerUseService
/Applications/Codex.app/Contents/Resources/plugins/openai-bundled/plugins/computer-use/Codex Computer Use.app/Contents/MacOS/SkyComputerUseService
This suggests the immediate problem is not a user-created bad notifier command. The Desktop app is actively migrating/wrapping notify through Computer Use on startup.
Workaround
Manually restoring the direct notifier stops the immediate issue until Codex Desktop is restarted again:
notify = ["uv","run","--quiet","/Users/banteg/.codex/notify_telegram.py"]
But restarting Codex Desktop rewrites it again when Computer Use is enabled, so the workaround is not stable for users who need Computer Use.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗