必须将update.mode设为"none"才能彻底禁用vscode更新,因"manual"仍会静默下载并弹“重启”气泡;还需同步关闭windows后台更新、插件autocheckupdates与autoupdate,并检查远程及工作区配置覆盖。

禁用自动更新提醒不能只关 update.mode,否则右下角气泡、启动时 changelog 弹窗、后台静默下载仍会发生。
为什么设成 manual 还会弹“重启以更新”
update.mode 设为 manual 只推迟 UI 提示,不阻止后台行为:VSCode 仍会每小时唤醒 update.exe(Windows)或拉取新包(macOS/Linux),下载完成后直接弹“重启”气泡。只有设为 none 才真正切断检查、下载、提示三层动作。
-
update.mode必须显式写为"none",不能留空或依赖 GUI 下拉菜单默认值 - Windows 用户必须同步设
"update.enableWindowsBackgroundUpdates": false,否则update.exe进程照常运行 - macOS/Linux 建议加
"update.showReleaseNotes": false,避免每次启动弹 changelog 页面 - 改完不用重启 VSCode 就生效,但建议立刻点 Help > Check for Updates 验证:菜单项应变灰且无响应
右下角还在冒“Update available”?插件开关没关全
主程序更新和插件更新完全解耦。update.mode 对插件毫无影响。右下角弹窗大概率来自插件自身轮询或通知逻辑,不是 VSCode 主程序行为。
- 必须同时设
"extensions.autoUpdate": false(禁止安装)和"extensions.autoCheckUpdates": false(禁止 HTTP 轮询) - 漏掉
autoCheckUpdates,插件仍每小时发请求,占带宽、卡 Extension Host、触发气泡 - 工作区根目录若存在
.vscode/settings.json,其中的"extensions.autoUpdate": true会直接覆盖全局配置 - GUI 设置有时不同步,尤其用了 Settings Sync 或团队模板时,务必打开
settings.json确认这两行真实存在
GitLens/ESLint/Prettier 还在弹窗?它们不认通用开关
这类插件绕过 VSCode 通用通知系统,自己调用 vscode.window.showInformationMessage() 发 toast,必须单独压制。
- GitLens:搜
gitlens.advanced.messages,设为[];顺手关gitlens.telemetry.enabled(部分版本借遥测反向触发) - ESLint:确认
eslint.packageManager没指向不存在的 npm;错误配置会导致反复崩溃重载,连带触发 “Extension host terminated unexpectedly” - Prettier:设
prettier.enableUpdateCheck为false(v9.13.0+ 支持);若无效,说明插件版本太旧,需升级后配置 - 搜不到对应设置?直接在
settings.json手动加一行,保存后重启生效
改完又弹窗?配置被覆盖或重置了
VSCode 大版本手动升级后,常会重写 %APPDATA%\Code\User\settings.json(Windows)或 ~/Library/Application Support/Code/User/settings.json(macOS),把你加的 "none" 悄悄还原成 "default"。
- 给用户
settings.json设为只读:Windows 右键 → 属性 → 勾选「只读」;macOS/Linux 执行chmod 444 settings.json - 远程开发环境(如 Remote-SSH、Dev Container)有独立配置,需点击左下角状态栏 Remote 标签 → Open Remote Settings → 确认
update.mode同样为"none" - Snap 版本(Ubuntu 默认)无视内部设置,必须执行
sudo snap refresh --hold vscode - 临时验证是否生效:按
Ctrl+Shift+P→ 输入并执行Notifications: Clear All Notifications,再观察右下角是否清空
真正麻烦的不是找不到开关,而是你以为关完了——结果某天发现 ~/.vscode/Updater/ 目录里多出一个未命名的 .zip 包,或者 Developer: Open Logs Folder 里 main.log 还在刷 updateService: checking for updates...。











