[Bug]: Open in editor reports no SSH route when using Tailscale SSH without a localhost listener
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
(this issue is brought to you by gpt-6-astra-medium)
Area
apps/server (remote editor discovery), apps/web (editor menu)
Steps to reproduce
- Run a T3 server on a Linux host with Tailscale SSH enabled and no conventional SSH listener on localhost port 22.
- Connect to that environment from another machine through a URL connection, without a desktop SSH connection profile supplying an explicit SSH alias.
- Confirm that
ssh <tailnet-host>works from the viewing machine. - Open the project's “Open in editor” menu.
Expected behavior
Offer remote editor links using the working Tailscale SSH destination. A localhost SSH listener should not be required when Tailscale handles SSH connections.
Actual behavior
The menu displays “No SSH route to ” and disables opening the project in an editor, despite successful SSH access from the viewing machine.
Verified diagnostics
Read-only checks from a macOS viewing machine against the affected Linux environment confirmed:
- A noninteractive SSH login succeeds.
tailscale status --jsonreportsBackendState: Runningand a valid MagicDNS name.tailscale debug prefsreportsRunSSH: true.- TCP connections to both
127.0.0.1:22and[::1]:22on the remote host fail with connection refused. ss -ltn 'sport = :22'reports no listener.
Cause
RemoteOpenTargets.ts probes localhost port 22 and immediately returns an empty target list if neither loopback family accepts a connection. This happens before Tailscale discovery. The assumption that no local sshd means no SSH destination can work is invalid for Tailscale SSH.
remoteOpen.ts then maps an empty advertised target list, without an explicit SSH profile alias, to remote-unavailable.
Discovery should recognize enabled Tailscale SSH independently of a localhost SSH listener. Tailscale connectivity alone should not be assumed to imply SSH availability.
Impact
Remote opening in an editor is blocked for this valid Tailscale SSH configuration.
Version or commit
Investigated source: d29c56a5c404cb0f58d3b2ac41762fa0d0ac28d4. The affected installed server version was not captured.
Related issues
Related discovery/gating symptoms: #7530 and #8278. This report specifically concerns Tailscale SSH with no localhost SSH listener.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with apps/server/src/environment/RemoteOpenTargets.ts at the cited localhost probe, then trace how apps/web/src/remoteOpen.ts maps advertised targets to the editor menu state. Reproduce the Tailscale SSH setup described in the issue and verify that a valid Tailscale destination is advertised without a localhost listener, while unavailable SSH still remains unavailable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, frontend, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 67/100