VSCode禁用自动更新需设"update.mode": "none"并禁用后台服务:Windows加"update.enableWindowsBackgroundUpdates": false,macOS/Linux补"update.showReleaseNotes": false;还需检查工作区/远程配置优先级,必要时用--disable-updates参数或防火墙拦截更新域名。

VSCode 怎么关掉自动更新
VSCode 默认会静默下载并提示更新,但生产环境或某些 CI/CD 本地调试场景下,你确实需要锁死版本——不是靠“点跳过”应付,而是从配置层面切断更新通道。
核心思路是禁用两个机制:一是后台检查更新的定时任务,二是启动时的更新检测。只改 update.mode 不够,它只控制提示行为,不阻止下载。
- 打开 VSCode 设置(
Ctrl+,或Cmd+,),切到「Settings」标签页右上角点击「Open Settings (JSON)」 - 在 JSON 中添加或修改以下两项:
"update.mode": "none",<br>"update.enableWindowsBackgroundUpdates": false
- Windows 用户额外注意:
update.enableWindowsBackgroundUpdates必须显式设为false,否则即使mode是none,后台服务仍可能拉取更新包 - macOS 和 Linux 用户无需设置后者,但建议补上
"update.showReleaseNotes": false避免每次启动弹 changelog
为什么改了 settings.json 还会弹更新提示
常见原因是设置了用户级配置,但当前工作区(workspace)或远程开发(如 devcontainer、SSH)加载了覆盖性配置。VSCode 的配置优先级是:Workspace > Remote > User > Default。
- 检查左下角状态栏是否显示「Remote — SSH」或「Dev Container」图标,如果是,点击它 → 「Open Remote Settings」→ 确认
update.mode同样设为"none" - 如果用的是
.vscode/settings.json工作区配置,确保它没写"update.mode": "default"或漏掉该字段(继承自用户设置) - 执行
Developer: Open Logs Folder,查看main.log里是否有updateService相关日志,确认实际生效的是哪一级配置
彻底停更的补充手段(适用于企业/离线环境)
仅靠配置不能 100% 阻断网络请求,尤其当 VSCode 内置扩展(如 GitHub Pull Requests)自行调用更新接口时。若需强隔离:
- 启动时加参数屏蔽所有网络更新行为:
code --disable-updates --no-sandbox(Linux/macOS)或code.exe --disable-updates(Windows) - 在防火墙或 hosts 文件中拦截
update.code.visualstudio.com和vscode-update.azurewebsites.net(注意:这会影响扩展市场访问) - 企业部署可配合
product.json打包定制版:修改源码中electron-main\app.ts的shouldCheckForUpdates返回false,再重新构建
禁用更新后要注意什么
最常被忽略的是扩展兼容性问题:VSCode 主版本升级常伴随 API 变更,而你锁住编辑器版本后,某些新扩展可能直接无法安装或运行报错 Extension 'xxx' is not compatible with Code '1.85.0'。
- 定期手动检查
Extensions: Check for Updates(右键扩展 → “Check for Extension Updates”),而非依赖自动推送 - 不要禁用
extensions.autoUpdate,否则扩展本身会滞后;保持它为true,只禁 VSCode 自身更新 - 备份好
~/.vscode/extensions/目录,重装或切换机器时可快速恢复已验证的扩展组合
真正难的不是关开关,而是判断哪些更新能拖、哪些必须跟——比如安全补丁类更新(CVE 通告后发布的 patch 版本)不该跳过,但 minor 版本里的 UI 调整完全可以等。


















