[BUG] Desktop app remote SSH install fails on Ubuntu 24.04 — "installed cli ... is not runnable"

Open 💬 1 comment Opened Jun 24, 2026 by dylan33smith

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?

Connecting to a remote SSH host via the Claude desktop app fails during the install
step with:

Connection failed: Failed to install Claude CLI: installed cli at
/home/<user>/.claude/remote/ccd-cli/2.1.181 is not runnable

The .zst archive downloads fully (observed via watch growing past ~45 MB), is then
deleted, and the install aborts, leaving ~/.claude/remote/ccd-cli/ empty. Installing
Claude Code directly on the same host via curl -fsSL https://claude.ai/install.sh | bash
succeeds and runs claude (2.1.187) without issue.

Environment

Failing host: Ubuntu 24.04.4 LTS (Noble), glibc 2.39, x86_64
Working hosts (same desktop app, same VPN, same workflow): Ubuntu 22.04.5 LTS (Jammy), glibc ~2.35
Client: Windows desktop app, connecting from WSL over a Cisco AnyConnect VPN
The download artifact observed: ~/.claude/remote/ccd-cli/2.1.181.zst

Key signal

The only environmental difference between the failing host and the working hosts is
the OS/glibc version (24.04 / glibc 2.39 vs 22.04 / glibc 2.35). The download completes;
the unpacked binary is then judged "not runnable." This points to the bundled remote CLI
build being incompatible with Ubuntu 24.04 defaults, while the standalone installer's
build runs fine on the same machine.

Ruled out (server-side is healthy in every dimension)

Network: Path MTU is a clean 1500 to external hosts (ping -M do -s 1472 succeeds).
Verbose curl of the Anthropic CDN returns a full HTTP/2 200 with the complete payload
and the connection left intact. No truncation outside the desktop pipeline.
Disk: 69 GB free on /home (97% used on a 1.8 TB volume; user usage 47 GB). Ample
headroom for a ~30–50 MB download.
Decompression: zstd present at /usr/bin/zstd v1.5.5.
Exec permissions: /home is XFS, mounted rw — not noexec.
Architecture / libc: Host is x86_64; the directly-installed claude 2.1.187 runs and
links cleanly against system libc (ldd resolves all libraries).
Unprivileged userns restriction: kernel.apparmor_restrict_unprivileged_userns
sysctl is not present; unprivileged_userns_clone is empty. (Not the active blocker, at
least not in that form.)
Server log: ~/.claude/remote/remote-server.log shows the failure occurs before
the remote server process starts — its last entries are from an unrelated prior session
(routine server.ping heartbeats + clean server.shutdown). i.e., the failure is in the
client-side install / unpack / exec step, not the remote server binary.

Reproduction

From the Windows desktop app, initiate a remote SSH connection to an Ubuntu 24.04 host.
Watch ~/.claude/remote/ccd-cli/ on the host: watch -n 0.5 'ls -la ~/.claude/remote/ccd-cli/'
Observe the <version>.zst archive download past ~45 MB, then the directory empties and
the app reports "installed cli ... is not runnable."
On the same host, curl -fsSL https://claude.ai/install.sh | bash succeeds.

What Should Happen?

Desktop app should connect. This worked before. I didn't use this for about 5 days so I didn't actively update claude code in between when this was working and when it was not working

Error Messages/Logs

Steps to Reproduce

This just occurred when I tried to ssh onto a remote server through the desktop app. Other servers accessible through the same VPN are working fine.

Claude Model

Other

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.187 (Claude Code)

Platform

Other

Operating System

Windows

Terminal/Shell

WSL (Windows Subsystem for Linux)

Additional Information

https://github.com/user-attachments/assets/260bf254-7264-45ef-8fbb-af37e9d31877

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗