[BUG] [BUG] SSH-Remote ccd-cli 2.1.128 still exits with code 1 on initialize with hookCallbackIds — regression of #50698

Resolved 💬 4 comments Opened May 8, 2026 by 1v1-rust Closed Jun 12, 2026

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

  1. Provision fresh Ubuntu 24.04 VPS (Hetzner CPX22)
  2. Create non-root user with passwordless sudo and SSH key auth
  3. Install Claude Code via curl -fsSL https://claude.ai/install.sh | bash
  4. Authenticate with Claude Max account via claude in terminal — confirm it works
  5. In Claude Desktop (latest), Code tab → New SSH connection → user@ip with identity file
  6. Select home folder
  7. Send any prompt (e.g. "what's in this folder?")
  8. Crash: "Claude Code process exited with code 1"
  9. 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 warnings
  • claude --version on remote → 2.1.136
  • claude on remote → fully functional, can read files, run tools
  • ~/.claude/remote/ccd-cli/2.1.128 exists, 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.

View original on GitHub ↗

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