Repository navigation
Add a direct SSH mode without ControlMaster - #1113
Merged
thesiti92 merged 2 commits intoOct 15, 2026
Merged
Conversation
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 07:13
ee4fc3c to
6faad1f
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
2 times, most recently
from
October 14, 2026 17:27
b746a75 to
9d03d4e
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 17:41
9d03d4e to
d9d7797
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 17:51
d9d7797 to
2fd6a76
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 18:21
2fd6a76 to
98e193c
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 19:20
98e193c to
5b4acf7
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
2 times, most recently
from
October 14, 2026 19:36
0f0692b to
598a510
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 19:37
598a510 to
9d69f35
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
2 times, most recently
from
October 14, 2026 19:53
4fb5b75 to
ec501cc
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 19:56
ec501cc to
8591e1e
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 20:06
8591e1e to
bd75b93
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 20:44
bd75b93 to
9107d8b
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 14, 2026 21:52
9107d8b to
c0c65f9
Compare
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 15, 2026 01:14
2f9178c to
0cde9eb
Compare
thesiti92
added this pull request to stack #1148
October 15, 2026 01:14
thesiti92
marked this pull request as ready for review
October 15, 2026 01:14
sidkmenon
approved these changes
Oct 15, 2026
Win32-OpenSSH cannot share a connection. A direct session runs each command over its own connection with BatchMode, keeps one ssh -D master per host, forwards ports in-process through its SOCKS port, and holds the installer's -R relay in an ssh of its own. Development builds can force it with DEV_FAST_REVIEW_SSH_DIRECT=1; nothing selects it yet.
…rr, give the probe the connect allowance, and read the dev switch as 1
thesiti92
force-pushed
the
remote/15-ssh-direct-mode
branch
from
October 15, 2026 01:45
0cde9eb to
0c1bd80
Compare
thesiti92
added a commit
that referenced
this pull request
Oct 15, 2026
Turns remote hosts back on for Windows laptops (reverting #1110's early return) with direct sessions from #1113. - The inbox `%SystemRoot%\System32\OpenSSH\ssh.exe` is used when present, ahead of an MSYS ssh (Git for Windows) on PATH. - ssh runs with `windowsHide` and not detached; a detached ssh gets a console window on Windows. - Windows needs a key ssh-agent can use and a host already in known_hosts. A refused key says to use `ssh-add`; an unknown host key already says to run `ssh <alias>` in a terminal. - `Include` globs in ssh_config take forward slashes on Windows. - docs/remote-hosts.md: the Windows setup. Checked in a Windows 11 VM (24H2, ARM64, inbox OpenSSH 9.5p1) against a Linux container with the real modules and the Desktop's spawn options: picks the inbox ssh.exe; exec and the probe run with no prompt and no window; `uploadFile` is byte-exact into a path with a space; the `-D` master, a forward to the host's sshd and a held `-R` round trip work; an unknown host key and an unauthorized key fail fast with ssh's own messages; an `Include` with a Windows path lists its aliases; no ssh.exe is left after. A dev build of this branch also ran in that VM (ARM64 Electron), against a Linux host with Whiteboard on its PATH, using an ssh-agent key: online in 10 s, `/health` through the SOCKS forward, a killed master recovered in under 2 s, and a normal quit left no ssh.exe. Dev-only gaps on Windows ARM64, unrelated to this change, kept it from the UI and the dev install: `run.sh` looks for `review` rather than `Whiteboard.exe` and hands MSYS paths to node, the curated extensions and `diffr` have no win32-arm64 target, and the dev pack (`pnpm pack`) fails there. Stacked on #1113.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Win32-OpenSSH has no ControlMaster, so Windows needs a way to reach a host without sharing one connection. This adds a direct session (a
ReviewSshSessionwithoutcontrolPath), following the approach Remote-SSH took for Windows in microsoft/vscode-remote-release#96:BatchMode=yes, so ssh never prompts;ssh -N -T -D 127.0.0.1:<port>per host; it binds its SOCKS port only after logging in, which is the ready check;-Lforwards become in-process loopback listeners that tunnel through that SOCKS port (reviewSocksForward.ts);-Rnpm relay runs in its own ssh, and reads the port from ssh'sAllocated portline (forced toLogLevel=INFO).Nothing selects direct mode yet except
DEV_FAST_REVIEW_SSH_DIRECT=1in development builds. Control mode is unchanged.Tests: unit tests for the SOCKS forward and the direct args;
reviewSshDirect.containers.test.tsruns a real direct master, a forward to the host's sshd, and a held-Rround trip against a container (WB_TEST_CONTAINERS=1). Theremote-hostjourney reachesonlinein direct mode. Its later Home step fails at this stack tip in both modes because the Home rewrite (#1098) removed the table it looks for.Stacked on #1110.