Codex Desktop rewrites user notify hook through SkyComputerUseClient --previous-notify

Open 💬 4 comments Opened Jun 15, 2026 by banteg

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.

View original on GitHub ↗

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