Skip to content

Computer Use: SkyComputerUseClient SIGKILL'd (Code Signature Invalid) when codex CLI is launched outside Codex.app process tree (e.g. via ACP adapter) #21200

Open

Description

@frozename

What version of the Codex App are you using (From "About Codex" dialog)?

26.422.71525 (build 2210)

What subscription do you have?

Plus

What platform is your computer?

Darwin 25.4.0 arm64 arm

macOS 15.x on Apple Silicon. Computer Use plugin: 1.0.758 (~/.codex/plugins/cache/openai-bundled/computer-use/1.0.758/).

What issue are you seeing?

The bundled SkyComputerUseClient helper is SIGKILL'd by the kernel with Code Signature Invalid every time the Codex CLI is launched outside the Codex.app process tree — for example, when Codex is spawned as a subprocess by a third-party ACP adapter (codex-acp, etc.) that hosts Codex's stdio JSON-RPC behind a different parent process.

Crash signature in ~/Library/Logs/DiagnosticReports/SkyComputerUseClient-*.ips:

Exception Type: EXC_CRASH (SIGKILL (Code Signature Invalid))
bundleID:       com.openai.sky.CUAService.cli
procName:       SkyComputerUseClient
codeSigningTeamID: 2DC432GLL2
bug_type:       309

Both the Codex.app and the Computer Use plugin pass codesign --verify --deep --strict and spctl --assess — the bundles are correctly signed. The same Codex CLI binary works inside Codex.app. This points to a macOS launch-constraint rather than a signing issue: the helper requires its launching ancestor to be Codex.app; any other parent triggers SIGKILL at exec.

Additional symptoms during a long ACP-driven session:

  • 30+ orphaned SkyComputerUseClient mcp processes accumulate (each turn produces a fresh crash)
  • Crash reports flood ~/Library/Logs/DiagnosticReports/
  • Significant RSS growth in the parent (codex) waiting on the helper handshake

This is distinct from #18549, which captures the generic crash without specifying the external-parent trigger. It is also distinct from #19544 (Apple-event auth failure from Homebrew CLI) — different layer, different error.

What steps can reproduce the bug?

  1. Install Codex.app + the bundled Computer Use plugin (1.0.758).
  2. Install any ACP-mode adapter that spawns Codex as a subprocess. For example, codex-acp (stdio JSON-RPC bridge).
  3. Configure your ACP client (an editor or test harness) to launch Codex via that adapter — i.e., not through Codex.app's window.
  4. Send any prompt that does not request Computer Use.
  5. Observe Console.app "Crash Reports" filtered to SkyComputerUseClient — a fresh .ips per dispatch turn.
  6. ps aux | grep SkyComputerUseClient shows accumulating zombie processes that don't reap.

Notably:

  • Disabling the Computer Use plugin in the Codex.app preferences UI does NOT prevent these crashes. The launcher attempts to spawn the helper before the runtime feature-flag check fires.
  • Disabling the [plugins.computer-use] block in ~/.codex/config.toml reduces but does not eliminate the spawn attempts.

What is the expected behavior?

When the Codex CLI is launched outside Codex.app and Computer Use is not requested by the model, the launcher should either:

  1. Detect the parent-process bundle ID does not match Codex.app and skip the helper launch entirely (cleanest), or
  2. Honor the ~/.codex/config.toml plugin-disable flag earlier in the launcher path so the helper is never spawned when the plugin is configured off, or
  3. Trap Code Signature Invalid SIGKILLs from the helper as a non-fatal "Computer Use unavailable in this context" condition.

Additional information

Reliable workaround (applied locally, eliminates all crashes):

Two parts, both required:

  1. Disable plugin entries in ~/.codex/config.toml (the [plugins.computer-use] block / equivalent).

  2. Rename all SkyComputerUseClient binaries under ~/.codex/plugins/cache/openai-bundled/computer-use/<ver>/... so the launcher cannot find them. On a 1.0.758 install the targets are:

    ~/.codex/plugins/cache/openai-bundled/computer-use/1.0.758/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient
    

    (Add .disabled suffix; the launcher logs an ENOENT and proceeds.)

Either step alone is insufficient — the config flag is checked after the spawn attempt, and renaming alone leaves the config still pointing at the path.

Why this matters: the ACP-adapter pattern is increasingly common for embedding Codex into third-party agent runtimes, IDE plugins, and orchestrators. Without the workaround, every ACP turn produces a crash report and a zombie process, and the helpers' SIGKILL'd state can wedge the parent on long sessions.

Related: #18549 (generic crash report).

Activity

  1. github-actions commented on May 5, 2026

    @github-actions
    Contributor
  2. frozename commented on May 5, 2026

    @frozename
    Author

    The duplicate-detector flagged #19544 and #20851 — neither is a duplicate, addressing each:

    #19544 ("Homebrew CLI cannot use Computer Use") — different failure mode. That issue's error is Apple event error -10000: Sender process is not authenticated, an AppleScript/TCC layer auth failure that occurs during a Computer Use call (list_apps). This issue is EXC_CRASH (SIGKILL (Code Signature Invalid)) at helper-process exec, before Computer Use is even invoked. The code_signing_id mismatch on launch is a kernel launch-constraint, not Apple Event TCC.

    #20851 ("Feature request: first-class Computer Use support from the Codex CLI") — opposite direction. That asks for Computer Use to work from the CLI. This issue is about a crash that happens when Computer Use is not being requested at all — the helper is spawned anyway and SIGKILL'd, generating crash reports and zombie processes per turn.

    Closest existing issue is #18549, which captures the generic SIGKILL on the helper. This issue narrows the repro to the external-parent (ACP-adapter) launch path and includes a working two-part workaround that doesn't appear in the #18549 thread.

  3. eddyaipt commented on May 10, 2026

    @eddyaipt

    One mitigation that would help adapter-driven launches is to separate 'Codex CLI is available' from 'Computer Use is available' during startup. If the helper fails its code-signature / parent-process preflight, exposing a clear capability downgrade instead of repeatedly attempting launch would keep the rest of the agent run alive and make the failure much easier to diagnose in logs.

  4. IgorGanapolsky commented on May 14, 2026

    @IgorGanapolsky

    "SIGKILL Code Signature Invalid" when launched outside the .app process is almost always a bundle-ID / signature mismatch — the SkyComputerUseClient is signed with the Codex.app Team ID, and when it's spawned by a CLI process that isn't itself signed with that Team ID (or running inside the .app's translocation/quarantine context), macOS Gatekeeper SIGKILLs it.

    Quick confirmation:

    codesign -dv --verbose=2 /Applications/Codex.app 2>&1 | grep -E "Identifier|TeamIdentifier"
    codesign -dv --verbose=2 /Applications/Codex.app/Contents/Resources/plugins/openai-bundled/computer-use/*/SkyComputerUseClient 2>&1 | grep -E "Identifier|TeamIdentifier"
    log show --predicate 'eventMessage CONTAINS "SkyComputerUseClient"' --last 10m 2>&1 | grep -E "code signature|killed"
    

    If the SIGKILL log line shows a Gatekeeper or amfid rejection, the fix is to launch via the .app (so Gatekeeper sees the parent chain) rather than the CLI directly, or to ensure the CLI binary itself is signed with the same Team ID.

    I documented this and 5 other root causes for "Computer Use unavailable" on macOS: https://igorganapolsky.github.io/openclaw-mac-ai-workstation-setup/troubleshooting.html

    Free script in the repo (scripts/self-diagnose.mjs) captures the codesign + bundle ID comparison into a redacted bundle. $19 quick read on that page confirms the root cause same-day.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingcomputer-useperformance

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions