[BUG] [BUG] SSH-Remote ccd-cli 2.1.128 still exits with code 1 on initialize with hookCallbackIds — regression of #50698
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?
The hookCallbackIds bug originally reported in #50698 against ccd-cli 2.1.111 is still present in 2.1.128. Fresh Hetzner VPS, Ubuntu 24.04, non-root user, passwordless sudo via /etc/sudoers.d. Desktop SSH-Remote crashes immediately on first prompt.
Server log shows the daemon receives the initialize control_request payload containing hooks.PreToolUse with hookCallbackIds, then exits with code 1 silently (zero stderr). Subsequent process.stdin RPC calls fail because the process is already gone.
Relevant log excerpt from ~/.claude/remote/remote-server.log:
[process.Manager] Process e888f082-... started, PID=5525, command=/home/<user>/.claude/remote/ccd-cli/2.1.128
[process.Manager] drainStdin e888f082-...: 1205 bytes, preview "{\"request_id\":\"by14o5dcgvq\",\"type\":\"control_request\",\"request\":{\"subtype\":\"initialize\",\"hooks\":{\"Pre..."
[process.Manager] Process e888f082-... exited with code 1
Ruled out:
- Not the first-run wizard bug (#46845) — manually ran ccd-cli interactively, completed setup, no change
- Not the --dangerously-skip-permissions/root bug (#37434, #36739) — running as non-root user
- Not a TTY bug (#36331) — running ccd-cli via terminal works fine, only Desktop spawn fails
- Not a Node version issue — running on the bundled binary
Identical symptoms to #50698 but on newer ccd-cli version.
What Should Happen?
Desktop SSH session should connect and accept the first prompt without crashing. Running claude directly via SSH terminal on the same VPS works correctly with the same user.
Error Messages/Logs
2026/05/08 20:21:39 [process.Manager] Process e888f082-e17d-497b-b877-24c7c287140c started, PID=5525, command=/home/<user>/.claude/remote/ccd-cli/2.1.128
2026/05/08 20:21:39 [process.Manager] drainStdin e888f082-e17d-497b-b877-24c7c287140c: 1205 bytes, preview "{\"request_id\":\"by14o5dcgvq\",\"type\":\"control_request\",\"request\":{\"subtype\":\"initialize\",\"hooks\":{\"Pre..."
2026/05/08 20:21:39 [process.Manager] Process e888f082-e17d-497b-b877-24c7c287140c exited with code 1
2026/05/08 20:21:39 [Server] RPC request: method=server.ping, id=17
Stderr from crashed process: empty (0 bytes)
Steps to Reproduce
- Provision fresh Ubuntu 24.04 VPS (Hetzner CPX22)
- Create non-root user with passwordless sudo and SSH key auth
- Install Claude Code via curl -fsSL https://claude.ai/install.sh | bash
- Authenticate with Claude Max account via
claudein terminal — confirm it works - In Claude Desktop (latest), Code tab → New SSH connection → user@ip with identity file
- Select home folder
- Send any prompt (e.g. "what's in this folder?")
- Crash: "Claude Code process exited with code 1"
- Server log shows hookCallbackIds in initialize payload then immediate exit
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.128 (ccd-cli on remote VPS)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Cross-references:
- #50698 — same hookCallbackIds-on-initialize crash, originally reported on ccd-cli 2.1.111. The exit-with-code-1-after-hookCallbackIds-payload behavior is identical on 2.1.128.
- #50188 — same Hetzner+Ubuntu+macOS Desktop combo, similar exit code 1 with empty stderr.
- #46845 — first-run wizard crash. Verified separately by running ccd-cli interactively before the desktop attempt; not the cause here.
- #36331, #37434, #36739 — TTY and root-permission variants. Verified not the cause: running as non-root user, claude in terminal works, only Desktop spawn fails.
Verification that the underlying VPS setup is healthy:
ssh -i ~/.ssh/claude_agent <user>@<ip>→ connects with no password, no warningsclaude --versionon remote → 2.1.136claudeon remote → fully functional, can read files, run tools~/.claude/remote/ccd-cli/2.1.128exists, is executable, ran interactively without error
The bug is isolated to the Desktop SSH-Remote spawn path, specifically the initialize control_request payload that includes hookCallbackIds.
Happy to provide additional logs, run wrapper scripts to capture exact stdin payload, or test patched ccd-cli builds. This is blocking the documented "use Claude Desktop with a remote VPS" workflow on a clean reference setup.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗