preview_start fails with ENOENT for disclaimer binary even though it exists

Resolved 💬 3 comments Opened Mar 20, 2026 by pannuprabhat Closed Mar 23, 2026

Bug Description

preview_start (via the Claude Preview MCP tool) fails with the error:

Failed to start preview server: spawn /Applications/Claude.app/Contents/Helpers/disclaimer ENOENT

The disclaimer binary exists, has correct permissions, and runs fine from the shell. The issue persists even after removing the macOS quarantine attribute.

Steps to Reproduce

  1. Have a .claude/launch.json with a valid server configuration:

``json
{
"version": "0.0.1",
"configurations": [
{
"name": "Frontend (Next.js)",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 3000,
"cwd": "frontend"
}
]
}
``

  1. Call preview_start with name "Frontend (Next.js)"
  2. Error: Failed to start preview server: spawn /Applications/Claude.app/Contents/Helpers/disclaimer ENOENT

Verification

The binary exists and works:

$ ls -la /Applications/Claude.app/Contents/Helpers/disclaimer
-rwxr-xr-x@ 1 user  admin  135600 Mar 19 21:00 /Applications/Claude.app/Contents/Helpers/disclaimer

$ file /Applications/Claude.app/Contents/Helpers/disclaimer
Mach-O universal binary with 2 architectures: [x86_64] [arm64]

$ /Applications/Claude.app/Contents/Helpers/disclaimer
Usage: disclaimer <command> [args...]

Quarantine was removed but made no difference:

$ xattr -dr com.apple.quarantine /Applications/Claude.app

Environment

  • Claude Code version: 2.1.79
  • macOS: 26.3.1 (Build 25D2128)
  • Architecture: arm64 (Apple Silicon)
  • Node.js: v22.17.0

Analysis

Since the binary runs fine from the shell but spawn reports ENOENT, the issue is likely:

  • The Node.js spawn call may not be resolving the path correctly
  • A missing dependency of the disclaimer binary (though file shows it's a valid Mach-O for arm64)
  • The preview tool's process environment may differ from the shell environment (missing PATH entries, sandbox restrictions, etc.)

View original on GitHub ↗

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