Feature Request
Type: Feature Request
Extension: Remote - SSH
VS Code version: 1.113.0
Remote-SSH version: 0.122.0
OS: Windows Server (SSH target)
Problem
Remote-SSH appears to use a ~4-second timeout when checking
whether the VS Code Server has started on a Windows host. In enterprise
environments running endpoint-protection agents such as CylancePROTECT,
the first execution of node.exe is delayed by ~5 seconds while the AV
engine scans the binary. This causes the first SSH connection to
fail consistently, even though:
- The server files are fully pre-deployed — logs confirm
"Found installed server" (no download or extraction occurs).
- The second attempt always succeeds because
node.exe is already
cached by the AV agent and the server process is still running.
The timeout
In both resolver.js and extension.js (v0.122.0), the extension verifies whether a previously-started exec server is still alive using a 3-second Promise.race:
`// out/resolver.js & out/extension.js (minified, reformatted for clarity)
Promise.race([
proxy.call("ping", {}).then(() => true),
new Promise(e => setTimeout(() => e(false), 3_000)) // ← 3 s hardcoded
])
// If the race resolves false:
this.logger.debug(Existing exec server for ${host} timed out);
// → discards the cached server, triggers a full new startup`
Proposal
Add a user-configurable setting, e.g.: c // settings.json "remote.SSH.serverStartTimeout": 10 // seconds (default: 4)
This would let administrators of enterprise-hardened Windows hosts raise
the timeout to accommodate AV first-scan latency without affecting the
default experience for other users.
Expected impact
- Low risk: only changes a wait duration; no protocol or architectural change.
- High value for enterprise users: many organizations run mandatory endpoint protection that adds measurable first-exec latency, and getting AV exclusions approved can take weeks or months.
Steps to reproduce the first-connection failure
- Provision a Windows Server VM with OpenSSH and an enterprise AV
agent (e.g., CylancePROTECT).
- Pre-deploy the VS Code Server to
~/.vscode-server/bin/<commit>/ so no download is needed.
- Connect via Remote-SSH from a client.
- First attempt fails — server did not report ready within the
timeout window.
- Second attempt succeeds —
node.exe is now cached by the AV
agent.
Feature Request
Type: Feature Request
Extension: Remote - SSH
VS Code version: 1.113.0
Remote-SSH version: 0.122.0
OS: Windows Server (SSH target)
Problem
Remote-SSH appears to use a ~4-second timeout when checking
whether the VS Code Server has started on a Windows host. In enterprise
environments running endpoint-protection agents such as CylancePROTECT,
the first execution of
node.exeis delayed by ~5 seconds while the AVengine scans the binary. This causes the first SSH connection to
fail consistently, even though:
"Found installed server"(no download or extraction occurs).node.exeis alreadycached by the AV agent and the server process is still running.
The timeout
In both
resolver.jsandextension.js(v0.122.0), the extension verifies whether a previously-started exec server is still alive using a 3-secondPromise.race:`// out/resolver.js & out/extension.js (minified, reformatted for clarity)
Promise.race([
proxy.call("ping", {}).then(() => true),
new Promise(e => setTimeout(() => e(false), 3_000)) // ← 3 s hardcoded
])
// If the race resolves false:
this.logger.debug(
Existing exec server for ${host} timed out);// → discards the cached server, triggers a full new startup`
Proposal
Add a user-configurable setting, e.g.: c // settings.json "remote.SSH.serverStartTimeout": 10 // seconds (default: 4)
This would let administrators of enterprise-hardened Windows hosts raise
the timeout to accommodate AV first-scan latency without affecting the
default experience for other users.
Expected impact
Steps to reproduce the first-connection failure
agent (e.g., CylancePROTECT).
~/.vscode-server/bin/<commit>/so no download is needed.timeout window.
node.exeis now cached by the AVagent.