microsoft / microsoft/vscode-remote-release

Remote-SSH 0.124.0 remote child processes do not reliably inherit lowercase proxy variables

Open
#11,751 0 comments 0 reactions 1 assignee View on GitHub

@chrmarti is already working on this.

Since Jul 15, 2026.

Dominant language
Dockerfile
Stars
4.2k
Forks
470
Avg merge
1d 1h
Merged PRs (30d)
1

Description

Environment

  • VS Code: 1.128.1 (commit 5264f2156cbcd7aea5fd004d29eaa10209155d66, x64)
  • Remote-SSH: 0.124.0
  • Local OS: Ubuntu 22.04, x64
  • Remote OS: Ubuntu 22.04.5 LTS, x64
  • Authentication: public key
  • Remote proxy: local HTTP/SOCKS mixed port on 127.0.0.1

I searched the existing open issues and found no Remote-SSH issue that matches this proxy-environment regression. I also tested both values of remote.SSH.useLocalServer; plain SSH and the generated SSH command work.

Expected behavior

When the remote login shell exports standard lowercase proxy variables (http_proxy, https_proxy, and all_proxy), the VS Code Server and remote extension child processes should inherit and use them consistently, as they did before the VS Code/Remote-SSH update.

Actual behavior

Immediately after updating to VS Code 1.128.1 / Remote-SSH 0.124.0:

  • Plain SSH remained fast and reliable.
  • Remote-SSH spent a long time in Opening Remote.
  • VS Code Server downloads and remote extension initialization became very slow or timed out.
  • Network-dependent remote extensions could not connect to their services.
  • The remote proxy process was healthy and its port was listening.
  • Adding uppercase variants (HTTP_PROXY, HTTPS_PROXY, ALL_PROXY) before starting a fresh VS Code Server session immediately restored normal Remote-SSH startup and remote extension connectivity.

The remote environment originally contained:

export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897

The workaround was:

export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export ALL_PROXY=socks5://127.0.0.1:7897
export NO_PROXY=127.0.0.1,localhost,::1

The lowercase variables were kept. After closing the old remote window and starting a fresh session, the problem disappeared.

Network isolation and verification

Tests were run directly on the remote host:

OpenAI endpoint, direct: timeout after 7.5 s
OpenAI endpoint, explicit remote proxy: HTTP 401 in 0.79 s
VS Code update endpoint, direct: HTTP 302 in 0.65 s
VS Code update endpoint, explicit remote proxy: HTTP 302 in 1.43 s

HTTP 401 from the unauthenticated OpenAI request is expected and confirms connectivity.

After adding uppercase variables, a new interactive bash with no explicit curl proxy flags produced:

OpenAI endpoint: HTTP 401 in 0.50 s via 127.0.0.1
VS Code endpoint: HTTP 200 in 0.42 s via 127.0.0.1

This isolated the problem from SSH transport, authentication, remote DNS, and proxy availability.

Remote-SSH log excerpt

Sensitive values and tokens are removed:

[16:40:46.108] SSH Resolver called for "ssh-remote+<redacted>", attempt 1
[16:40:46.112] remote.SSH.useLocalServer = true
[16:40:46.112] remote.SSH.useExecServer = false
[16:40:46.148] Using connect timeout of 12 seconds
[16:40:47.536] Server host key: ssh-ed25519 SHA256:<redacted>
[16:40:48.485] Authenticated to <redacted> (via proxy) using "publickey".
[16:40:51.091] Installing to /root/.vscode-server/bin/<commit>...
[16:41:00.436] Download complete
[16:41:05.312] serverStartTime==136==
[16:41:05.316] Resolved remote to a local forwarded port
[16:42:43.436] Opening exec server
[16:42:55.454] Exec server failed: Error: Connecting with SSH timed out
[16:43:06.959] Proxy connection timed out

The server itself started in 136 ms. The delay occurred around remote networking/extension initialization, while plain SSH continued to complete in a few seconds.

Steps to reproduce

  1. Configure a remote Linux host where selected outbound services require a proxy.
  2. Export only lowercase proxy variables in the remote shell startup file: http_proxy, https_proxy, and all_proxy.
  3. Verify that an interactive shell can access the required endpoint through the proxy.
  4. Connect using VS Code 1.128.1 and Remote-SSH 0.124.0.
  5. Observe slow Opening Remote, remote download/extension timeouts, or remote extensions failing outbound connections.
  6. Add equivalent uppercase variables and restart the VS Code Server session.
  7. Observe that Remote-SSH and remote extensions return to normal.

Suggested fix

Please make proxy propagation into the VS Code Server and all remote child/extension processes deterministic and case-compatible:

  • Preserve both lowercase and uppercase standard proxy variables from the remote environment.
  • Avoid constructing a reduced environment that silently drops one casing.
  • Apply the same environment behavior to legacy server, Exec Server, and extension-host launch paths.
  • Document exactly which remote shell startup files and proxy variable names Remote-SSH supports.
  • Consider logging the names (not values) of detected proxy variables at trace level.

It would also help if a failed remote outbound request clearly distinguished SSH transport failure from remote proxy/environment failure.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.