[BUG] [preview_start] spawn disclaimer ENOENT on macOS 26 (Sequoia) with Electron 40
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Bug report
Description
preview_start fails with spawn /Applications/Claude.app/Contents/Helpers/disclaimer ENOENT on macOS 26.3.1 (Darwin 25.3.0) with Claude Desktop 1.1.6041 (Electron 40.4.1).
The binary exists at the expected path, is properly signed, and executes correctly from the terminal and from Node.js spawnSync outside the Electron context — but the Electron main process cannot spawn it.
Environment
- macOS: 26.3.1 (Darwin 25.3.0, arm64)
- Claude Desktop: 1.1.6041
- Electron: 40.4.1
- Claude Code CLI: 2.1.77 (npm)
Steps to reproduce
- Open Claude Code session in Claude Desktop on macOS 26
- Have a valid
.claude/launch.jsonwith a Python/Node server config - Call
preview_startwith a valid server name - → Error:
Failed to start preview server: spawn /Applications/Claude.app/Contents/Helpers/disclaimer ENOENT
What I verified
- Binary exists: ✅
/Applications/Claude.app/Contents/Helpers/disclaimer - Binary is signed: ✅ Authority = Developer ID Application: Anthropic PBC (Q6L2SF6YDW)
- Binary runs from terminal: ✅ prints
Usage: disclaimer <command> [args...] - Binary runs from Node.js
spawnSync: ✅ status 0, no error - No quarantine flag on binary: ✅ only
com.apple.provenance - App Sandbox: ❌ not enabled (no
com.apple.security.app-sandboxentitlement) - Tried: absolute path in
runtimeExecutable, symlink in/usr/local/bin→ same error
Likely cause
Regression in Electron 40 process spawning on macOS 26 (pre-release kernel). The xlt() function in the app correctly resolves path.join(dirname(resourcesPath), "Helpers", "disclaimer"), but child_process.spawn fails at the OS level within the Electron renderer/main process context on this OS version.
Workaround
None currently. Verification is done via direct curl to the running server.
What Should Happen?
preview_start should successfully spawn the dev server process and return a server ID, allowing subsequent preview tools (preview_screenshot, preview_snapshot, etc.) to work as intended.
Expected behavior:
preview_start("evora-app")launches/usr/local/bin/python3 /path/to/app.py(wrapped viadisclaimer)- Returns a
serverId preview_screenshot(serverId)captures the running app atlocalhost:5001
This works correctly on macOS 15 (Sequoia stable). The regression appears on macOS 26 (Darwin 25.x, developer beta) with Claude Desktop 1.1.6041 / Electron 40.
Error Messages/Logs
Steps to Reproduce
Steps to Reproduce:
- Install Claude Desktop (tested with Electron 40.4.1) on macOS 26 (Darwin 25.3.0 — pre-release)
- Open a project in Claude Code with a valid
.claude/launch.json:
``json``
{
"version": "0.0.1",
"configurations": [
{
"name": "my-app",
"runtimeExecutable": "/usr/local/bin/python3",
"runtimeArgs": ["app.py"],
"port": 5001
}
]
}
- In a Claude Code session, call
preview_start(or trigger any tool that spawns a child process via thedisclaimerhelper) - Observe the error:
````
spawn /Applications/Claude.app/Contents/Helpers/disclaimer ENOENT
Additional notes for the repro:
- The binary exists at the expected path and is executable:
````
$ ls -la /Applications/Claude.app/Contents/Helpers/disclaimer
-rwxr-xr-x Anthropic PBC (code-signed)
$ /Applications/Claude.app/Contents/Helpers/disclaimer echo hello
hello ← runs fine from terminal
- The error only occurs when spawned from within the Electron renderer/main process context
- Does not reproduce on macOS 15 (Sequoia stable) with the same Claude Desktop version
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.77 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗