真正禁用 vs code 自动更新需同步配置主程序、插件、后台进程三层:设 "update.mode": "none" 和 "updatemode": "none",windows 关闭后台服务、mac 禁守护唤醒、linux snap 持久冻结;插件层须显式关闭 extensions.autoupdate 与 autocheckupdates;并清理残留进程、计划任务及注册表项。

VS Code 自动更新不是“开/关”一个开关就能搞定的事——它分主程序、插件、后台进程三层,漏掉任何一层,都可能半夜弹窗或静默下载。
如何真正禁用 VS Code 主程序自动更新
图形界面里把 Update: Mode 改成 none 是起点,但只是写进用户配置;如果安装目录下的 product.json 仍保留默认更新逻辑,或者 Windows 后台服务没停,update.exe 依然会拉新包。
- 必须同时设置:
"update.mode": "none"(在settings.json) +"updateMode": "none"(在product.json) - Windows 用户额外关闭:
Update: Enable Windows Background Updates(GUI 设置里勾选取消),否则系统级服务绕过所有配置 - Mac 用户需运行:
defaults write com.microsoft.VSCode AppleAutomaticTermination -boolfalse,否则 macOS 守护进程会唤醒更新流程 - Linux(snap 安装)必须执行:
sudo snap refresh --hold vscode,否则 snapd 每天自动刷版本
为什么关了主程序更新,插件还在偷偷升级?
插件更新和编辑器更新完全解耦:update.mode 不影响 extensions.autoUpdate,也不影响 extensions.autoCheckUpdates。很多团队项目里,CI 脚本甚至会在工作区 .vscode/settings.json 中硬编码开启插件更新,优先级高于你的用户设置。
- 务必显式关闭两个开关:
"extensions.autoUpdate": false和"extensions.autoCheckUpdates": false - 检查项目根目录是否存在
.vscode/settings.json,里面若含"extensions.autoUpdate": true,会覆盖全局设置 - 插件更新失败时常见报错:
Extension host terminated unexpectedly,往往就是新版插件不兼容旧版 VS Code 导致的
关更新后,残留进程和计划任务还在联网怎么办?
即使所有配置都设为 none,Windows 的计划任务、注册表启动项、以及未被 kill 的 update.exe 进程,仍可能在你重启电脑后悄悄运行。
- 打开任务管理器,搜索
update.exe,结束所有相关进程 - 运行
taskschd.msc,在「Task Scheduler Library」中删掉含VSCode或update字样的任务 - 检查注册表路径:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,删除值为Code.exe --no-sandbox --processStart "update.exe"的键 - Linux/macOS 下可检查:
ps aux | grep update,确认无残留子进程
最麻烦的不是找不到开关,而是你以为关完了,结果某天发现 ~/.vscode/extensions 多了个带时间戳的新插件目录,或者磁盘突然多了个 vscode-update-stable- 临时文件——那说明某一层机制漏网了。











