必须将 update.mode 设为 "none" 并禁用 extensions.autoUpdate 和 extensions.autoCheckUpdates,同时设 settings.json 为只读、禁用 Windows 计划任务及清理注册表残留,才能彻底关闭 VSCode 主程序与扩展的自动更新。

直接关更新提示?只改 update.mode 还不够
VSCode 的“自动更新”其实是两套独立机制:主程序更新和扩展更新,光关一个,另一个照常半夜拉新包、弹气泡、甚至崩溃重载。你看到右下角“有新版本”提示,或调试时突然弹出“重启以应用更新”,大概率是 update.mode 没设对,或者压根没动过它。
-
update.mode必须设为"none",不是"manual"——后者仍会下载安装包并弹窗提醒,只是不自动重启 - Windows 用户顺手关掉
Update: Enable Windows Background Updates,否则系统级update.exe服务可能绕过设置偷偷联网 - 改完不用重启 VSCode 就生效,但建议立刻点「帮助 → 检查更新」验证:应显示“当前已是最新版本”,且右下角无气泡
扩展还在静默升级?关掉 extensions.autoUpdate 和轮询
很多人关了主程序更新,结果某天发现 Python 插件突然报错 Extension host terminated unexpectedly,一查日志才发现是插件刚被自动升级,和当前 VSCode 版本不兼容。这是因为扩展更新开关完全独立,且默认开启。
- 必须同时设
"extensions.autoUpdate": false(禁用自动安装)和"extensions.autoCheckUpdates": false(禁用后台轮询) - 手动更新方式不变:
Ctrl+Shift+X→ 右上角⋯→Check for Extension Updates,有更新才出现蓝色Update按钮 - 注意:禁用后已安装的扩展不会回退,也不会自动卸载旧版,只是停止后续覆盖行为
设置被悄悄重写?给 settings.json 加只读权限
VSCode 在大版本升级时,有时会重写用户配置文件,把 "update.mode": "none" 悄悄改回 "default"。GUI 点几下看着设置了,其实并不稳。
- 找到你的
settings.json文件位置:
Windows:%APPDATA%\Code\User\settings.json
macOS:$HOME/Library/Application Support/Code/User/settings.json
Linux:$HOME/.config/Code/User/settings.json - 右键文件 → 属性 → 勾选“只读”(Windows),或终端执行
chmod 444 settings.json(macOS/Linux) - 别去改
product.json——那是安装包内置文件,改了会被覆盖,还可能触发校验失败
还有 update.exe 在后台跑?清理计划任务和注册表残留
即使所有配置都设了 "none",Windows 下的 update.exe 进程仍可能被计划任务唤醒,持续占用带宽、生成临时文件(比如 vscode-update-stable-*.tmp),尤其当你曾启用过“后台更新”选项。
- 打开任务管理器,搜索
update.exe,结束所有相关进程 - 运行
taskschd.msc→ 展开“Task Scheduler Library” → 查找含VSCode或update的任务,全部禁用 - 注册表路径
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中,删掉值为Code.exe --no-sandbox --processStart "update.exe"的键(如有)
真正麻烦的不是找不到开关,而是你以为关完了,结果某天发现 ~/.vscode/extensions 下多了一个新版插件目录,或者磁盘突然少了 200MB 空间——那八成是漏掉了 update.exe 或轮询机制。


















