Claude Code goes silent when using VS Code Remote SSH Extension and Claude Code on Digital Ocean droplet

Resolved 💬 2 comments Opened Jun 30, 2026 by lambdafilter Closed Jul 3, 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?

Bug report — Claude Code (VS Code extension) goes silent over Remote-SSH; only Reload Window recovers

Summary

The Claude Code panel stops responding — submitted prompts produce no reply at all
and the only recovery is VS Code "Reload Window." This recurs multiple times per
working session, nearly every day
. Reload fixes it every time, without exception, then
it recurs. Net effect: sessions are interrupted constantly, and tokens are spent on
interrupted/abandoned turns and on repeated in-session debugging instead of actual work.

Environment

  • VS Code Remote-SSH over Tailscale: Windows PC (UI side) → Ubuntu droplet (extension

host + Claude backend run on the droplet; spinner/panel run on the PC). Everything crosses
the Tailscale/SSH tunnel.

  • Droplet: Ubuntu, 3.8 GB RAM, VS Code server commit 7e7950df89055b5a378379db9ee14290772148a.
  • Claude Code VS Code extension (version auto-attached by /bug).
  • Layout: window 1 = Explorer + Editor; window 2 = a single Claude Code panel, created via

View → Editor Layout → Move Editor into New Window.

Symptom signature

  • Prompt is submitted; no response renders; UI appears idle/stuck.
  • "Reload Window" restores responsiveness 100% of the time (Reload restarts the extension host

and spawns a fresh claude backend with a fresh connection to Anthropic).

  • No crash dialog; the box is not out of memory at the time.

What we have RULED OUT (with evidence)

  • Not system RAM / OOM-killer. free -h stays healthy through hangs; no OOM-killer events

in the kernel log; earlyoom is configured to spare gunicorn/sshd.

  • Not the network/tunnel. tailscale ping PC↔droplet stays ~12 ms, direct, through hangs.

(ICMP/tailscale-ping is a separate path from the data streams, so this only rules out gross
tunnel loss — see hypotheses.)

  • Not the duplicate backend. "Move Editor into New Window" can leave a second claude

backend alive; deleting it vs. leaving it makes no difference to the silent-hang issue.
This has been repeatedly confirmed and should not be pursued as the cause.

  • V8 extension-host heap OOM is at most a separate, rarer mode. One confirmed SIGABRT heap

OOM was seen (exthost ~1953 MB), but another hang had the exthost at only ~400 MB RSS with no
OOM events — so heap OOM does not explain the routine silent hangs.

Hypotheses for Anthropic to investigate

  1. Backend→Anthropic stream stalls — the TCP connection stays ESTAB but carries no data

(half-open socket / stalled send-recv queue / silent NAT-mapping expiry on the long-lived
tunnel). Would explain why a fresh connection (Reload) always fixes it and why tunnel pings
look clean.

  1. UI↔backend / extension-host IPC channel stalls over Remote-SSH — prompt never reaches

the backend, or the response never reaches the PC-side panel, though both processes live.

A decisive discriminator: during a hang, does the backend's session .jsonl grow when the
user hits enter? Growth ⇒ response was generated but not delivered (channel/IPC bug); no
growth ⇒ prompt never processed (then socket state on the backend tells the rest).

Instrumentation already in place (droplet-side, passive, zero token cost)

  • ~/exthost_heap_mon.log — every 5 s: extension-host RSS/VmData, each claude backend

RSS/PPID, system MemAvailable, swap used.

  • ~/ts_tunnel_health.log — every 15 s: tailscale ping to the PC.
  • Being extended to also log, per backend: session .jsonl size+mtime and established

Anthropic connections with send-q/recv-q + retransmit state — so the next incident is
captured automatically.

What would help

Guidance on which extension/backend logs to capture during a hang (and how to raise their
verbosity), and whether there is a known issue with the Remote-SSH IPC channel or backend
keepalive stalling on long-lived connections. Happy to provide the monitor logs around a
timestamped incident.

What Should Happen?

Claude Code should not freeze or go silent.

Error Messages/Logs

Steps to Reproduce

  1. Start VS Code
  2. Select 'Connect' and connect to remote droplet.
  3. Select 'Open folder' and open a folder on the droplet
  4. So now there is 1 window and one Explorer panel
  5. If a file is opened, then there is 1 window that has the Explorer Panel and an Editor panel. 1 window, 2 panels
  6. Now select the Claude icon in the upper right corner of the screen; that adds a 3rd panel to the window. 1 window, 3 panels.
  7. With the Claude Code panel active, select View / Editor Layout / Move editor into new window.
  8. Now there is window 1 with an Explorer panel and an Editor panel, and window 2 has one single Claude code panel.

This creates a stale Claude Code PID. Sometimes the PID goes away by itself; sometimes not.
The steps above don't always cause Claude Code to freeze. The freezing is intermittent.

I'm burning lots of tokens ($$) on debugging this issue. Hopefully this will be fixed soon.

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

??

Claude Code Version

2.1.195

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

VS Code integrated terminal

Additional Information

_No response_

View original on GitHub ↗

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