vscode代理配置失效主因是http.proxy格式错误、被系统bypass规则拦截或remote场景未在远程machine/settings.json中配置;须用http://127.0.0.1:7890格式,禁用localhost,remote需配远程machine/settings.json并彻底重启vscode进程。

检查 VSCode 是否被代理静默劫持
VSCode 不读系统代理、不继承终端环境变量,只认自己 settings.json 里的 http.proxy。但很多企业安全软件(如 Zscaler、Netskope)或本地代理工具(Clash/Surge)会静默注入系统级代理策略,导致 VSCode 实际走代理却没在设置里体现。
排查方法很直接:
- 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,切到Network标签页 - 点一次“安装扩展”,观察请求目标域名:如果全是
marketplace.visualstudio.com或vscode.blob.core.windows.net,说明没被劫持;如果出现open-vsx.org或其他非预期域名,说明配置或镜像源被覆盖 - 右键任一失败请求 →
Copy → Copy as cURL,粘贴到终端执行。若curl成功而 VSCode 失败,基本锁定是 VSCode 自身代理/证书策略问题
验证 http.proxy 配置是否生效且合法
http.proxy 填错等于没填——VSCode 会静默忽略非法格式。最常见错误是漏写 http:// 前缀,或用了 localhost 而非 127.0.0.1(Windows/macOS 默认把 localhost 加入 bypass 列表)。
正确写法必须满足:
- 带协议头:
"http.proxy": "http://127.0.0.1:7890"✅,"http://7890"❌ - 认证信息需 URL 编码:
user:pass@127.0.0.1:7890中的@要写成%40 - 若代理跑在远程机器(如
192.168.1.100:8080),确认该机器已开启局域网访问(Clash 需设allow-lan: true)
绕过代理直连 marketplace.visualstudio.com
有些代理不转发微软域名,或转发后证书校验失败。此时最稳妥的是让 VSCode 对特定域名强制直连,而不是关掉整个代理。
在 settings.json 中添加:
"http.proxyBypassList": ["*.visualstudio.com", "*.microsoft.com", "127.0.0.1", "localhost"]
同时确保 http.proxySupport 设为 onDemand(不是 override),否则 bypass 列表不生效。改完必须完全退出 VSCode 进程(任务管理器杀掉所有 Code 和 Code Helper),否则设置不加载。
Remote-SSH 场景下代理配置容易被忽略的位置
本地 VSCode 的 http.proxy 设置不会透传给远程服务器上的 vscode-server。Remote 插件安装失败,90% 是因为没在远程机器上单独配代理。
远程代理配置路径是:
- Linux/macOS:
~/.vscode-server/data/Machine/settings.json - Windows(WSL):
~/.vscode-server/data/Machine/settings.json
注意:这个文件是 vscode-server 启动时读取的,热重载无效;也别指望 ~/.bashrc 里的 HTTP_PROXY 环境变量——non-interactive shell 不 source 它,vscode-server 更不认。











