vscode代理配置不生效的主因是未在内部显式设置http.proxy,且windows/macos默认绕过localhost导致127.0.0.1:7890请求不走代理;需手动配置http.proxy并验证代理服务监听状态及https中转能力。

VSCode 代理配置不生效的常见原因
VSCode 的代理设置只影响它自身发起的网络请求(比如插件安装、更新、GitHub 登录),**不会自动读取系统代理或浏览器代理**。很多人改了系统代理或开了 Clash/Shadowrocket,但 VSCode 依然连不上 Marketplace,就是因为没在 VSCode 内部显式配置 http.proxy。
另一个高频问题是:代理地址写成了 http://127.0.0.1:7890,但实际代理服务监听的是 0.0.0.0:7890 或仅 127.0.0.1:7890 —— 这本身没问题;真正出问题的是 Windows/macOS 上启用了「绕过本地地址」逻辑,默认把 localhost 和 127.0.0.1 排除在代理外,导致 VSCode 发往 127.0.0.1:7890 的请求根本没走代理进程。
- 确认代理服务(如 Clash for Windows、v2rayN、Proxyman)已开启且 HTTP 代理端口处于监听状态(可用
curl -x http://127.0.0.1:7890 https://httpbin.org/ip验证) - 避免用
localhost,统一用127.0.0.1(部分 VSCode 版本对 localhost 解析异常) - 如果代理运行在另一台局域网机器上(如
192.168.1.100:8080),确保该机器防火墙放行端口,且代理软件配置允许局域网连接(Clash 需设allow-lan: true)
手动设置 http.proxy 配置项(推荐)
VSCode 的代理由 http.proxy 控制,它优先级高于系统环境变量,也比命令行启动时传参更稳定。直接修改用户设置(Settings UI 或 settings.json)即可:
打开命令面板(Ctrl+Shift+P / Cmd+Shift+P),输入并选择 Preferences: Open Settings (JSON),在右侧面板中添加或修改:
{
"http.proxy": "http://127.0.0.1:7890",
"http.proxyStrictSSL": false
}
http.proxyStrictSSL 设为 false 是为了兼容自签名证书的代理(如某些企业中间人代理或旧版 Charles),若你用的是 Clash、Surge 等标准代理可省略此项。
- 代理需带协议前缀(
http://),不能只写127.0.0.1:7890,否则 VSCode 会静默忽略 - 如果代理需要认证,格式为
http://user:pass@127.0.0.1:7890,注意 URL 编码特殊字符(如@→%40) - 修改后无需重启 VSCode,插件市场刷新或重试安装即可生效
为什么不用 environment variable 或 --proxy 启动参数
虽然可以设置 HTTP_PROXY 环境变量或用 code --proxy-server="http://127.0.0.1:7890" 启动,但这两者都有明显短板:
-
HTTP_PROXY环境变量对 VSCode 无效(它只读http.proxy设置,不继承系统变量) -
--proxy-server是 Electron 底层参数,仅影响渲染进程的 fetch/XHR,**不控制 Extension Host 的 npm 安装行为**,所以插件下载仍可能失败 - 通过命令行启动还容易被桌面快捷方式覆盖,不如配置项一劳永逸
验证代理是否真正起作用
最直接的方式是看 VSCode 底部状态栏:成功配置后,左下角会出现一个代理图标(?),悬停显示当前代理地址;但这个图标有时延迟或不出现,更可靠的是抓包验证:
打开代理工具的流量日志页(如 Clash Dashboard 的「Profiles → Logs」),然后在 VSCode 中点击「Install」某个插件(例如 ms-python.python)。如果日志里出现类似 marketplace.visualstudio.com 或 vscode.blob.core.windows.net 的出站请求,说明代理已生效。
如果仍失败,检查 VSCode 输出面板(Ctrl+Shift+U)→ 切换到 Extension Management 或 Log (Window),搜索关键词 proxy 或 ECONNREFUSED,常见错误如:
-
Failed to fetch extension from ... Error: connect ECONNREFUSED 127.0.0.1:7890→ 代理进程未运行,或端口不对 -
getaddrinfo ENOTFOUND marketplace.visualstudio.com→ 代理本身无法联网(比如 Clash 规则全直连、DNS 设置错误) - 无任何错误但卡在“Installing…” → 可能是代理响应超时,尝试调大
http.proxyTimeout(单位毫秒,默认 10000)
局域网代理配置的关键不在“填对地址”,而在于确认代理服务本身能正常中转 HTTPS 流量,并且 VSCode 的 Extension Host 进程确实把请求交给了它——这两步漏掉任何一环,都会表现为“明明配了却还是下不了”。











