如何阻止VSCode继承代理环境变量并保留Windows企业代理配置?
解决VSCode不继承系统代理变量但终端保留代理的问题
核心配置方案
要实现「VSCode自身不使用系统的http_proxy/https_proxy变量,改用Windows企业NTLM代理,同时内置终端保留这些变量供命令行工具使用」,可以通过修改VSCode的settings.json完成:
- 打开VSCode设置界面(快捷键
Ctrl+,),点击右上角「打开设置(JSON)」按钮,添加以下配置:
// 清空VSCode主进程的代理变量,避免自身使用cntlm "env": { "http_proxy": "", "https_proxy": "" }, // 强制VSCode不使用手动代理,自动读取Windows系统NTLM代理 "http.proxy": "", "https.proxy": "", // 确保内置终端继承系统的代理变量 "terminal.integrated.env.windows": { "http_proxy": "${env:http_proxy}", "https_proxy": "${env:https_proxy}" }
关键说明
- VSCode 1.15及以上版本原生支持NTLM认证,只要
http.proxy/https.proxy为空,就会自动使用Windows系统配置的企业代理,无需额外设置。 env配置会覆盖VSCode主进程的环境变量,阻止它继承系统的代理变量,从而避免通过cntlm连接。terminal.integrated.env.windows会将系统的代理变量传递给内置bash终端,保证命令行工具仍能通过cntlm访问网络。
关于扩展代理的特殊问题
你提到的部分扩展(比如GitHub Copilot)不遵循VSCode代理配置、直接读取系统环境变量的情况确实存在,这个问题目前尚未修复。对于这类扩展,暂时只能依赖cntlm的稳定性;而普通扩展的安装/更新,只要VSCode主进程的代理变量被清空,就会自动使用系统的NTLM代理完成连接。
内容的提问来源于stack exchange,提问作者neves
相关产品推荐
相关产品推荐

