必须同时关闭extensions.autoCheckUpdates和extensions.autoUpdate,因为前者控制每小时后台HTTP轮询(关它才停通知源头),后者控制检测到更新后的自动下载安装(关它防静默覆盖),缺一都会导致弹窗或崩溃。

只关 extensions.autoUpdate 不行,必须同时关掉 extensions.autoCheckUpdates,否则右下角照样弹「Update available」,甚至触发 Extension host terminated unexpectedly 错误。
为什么必须两个都关?
VSCode 的插件更新是两阶段行为:autoCheckUpdates 控制是否每小时发起 HTTP 请求轮询新版本(关它才真正停掉后台流量和通知源头);autoUpdate 控制检测到后是否自动下载安装(关它防止静默覆盖)。漏掉任一,都会留缝隙。
-
extensions.autoCheckUpdates设为false→ 停止轮询,不产生新通知 -
extensions.autoUpdate设为false→ 检测到更新也不下载、不解压、不替换 - 只设
autoUpdate为false,插件仍会持续弹窗;只设autoCheckUpdates为false,已有缓存更新可能被静默安装
直接改 settings.json 最可靠
GUI 设置有时不同步,尤其开了 Settings Sync 或用了团队模板时。务必打开命令面板(Ctrl+Shift+P),执行 Preferences: Open Settings (JSON),在 {} 里加这两行:
"extensions.autoCheckUpdates": false, "extensions.autoUpdate": false
注意:前一行末尾要加英文逗号;保存后无需重启,但建议立即点右下角铃铛图标确认通知清空。
检查工作区配置是否偷偷覆盖
项目根目录下的 .vscode/settings.json 优先级高于用户设置。哪怕你全局关了,只要某个仓库里写了 "extensions.autoUpdate": true,插件照常升级。
- 执行
Ctrl+Shift+P→Preferences: Open Workspace Settings (JSON) - 搜索
autoUpdate或autoCheckUpdates - 如果存在且值为
true,直接删掉或显式设为false - CI 脚手架(如
create-react-app)常自带这类配置,别默认信任“空项目”
右下角弹窗还没消失?可能是插件自己在发
GitLens、Volar、ESLint 这类插件不走 VSCode 通用更新流程,而是直接调用 vscode.window.showInformationMessage()。关掉全局开关后,它们仍会刷 toast。
- GitLens:搜
gitlens.advanced.messages,设为[] - Volar:新版默认不弹,旧版可试
volar.updateNotification(若存在) - ESLint:错误配置(如
eslint.packageManager指向不存在的 npm)会导致反复崩溃重载,看起来像更新弹窗 - 清残留气泡:执行
Notifications: Clear All Notifications,或开发者工具 Console 里运行notifications.clearAll()
最易忽略的是:每次手动升级 VSCode 后,settings.json 可能被重置;远程开发(SSH/Dev Container)的服务端配置也常被遗忘——那里的 update.mode 和插件开关同样得设为 none 和 false。


















