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

update.mode 必须设为 "none",否则只是隐藏提示而非真正禁用
VSCode 的 update.mode 默认是 default,设成 manual 仍会后台下载安装包、弹窗提醒、甚至重启时强制覆盖——这不是“不打扰”,而是“偷偷干活”。只有 "update.mode": "none" 才切断全部更新行为。
- 在设置界面(
Ctrl + ,或Cmd + ,)搜索update.mode,下拉选none - 更可靠的做法是直接编辑
settings.json:添加"update.mode": "none"(注意前一行末尾加英文逗号) - Windows 用户必须同步关闭
Update: Enable Windows Background Updates,否则update.exe进程仍会通过计划任务唤醒并联网 - macOS 用户需额外执行:
defaults write com.microsoft.VSCode AppleAutomaticTermination -boolfalse,防止系统守护进程绕过设置触发更新
extensions.autoCheckUpdates 和 extensions.autoUpdate 必须同时设为 false
插件更新和主程序更新完全解耦。只关 extensions.autoUpdate,插件仍每小时发起 HTTP 请求轮询新版本,右下角持续显示「New version of XXX is available」;只关 extensions.autoCheckUpdates,则检测到更新后仍会静默安装,可能引发 Extension host terminated unexpectedly。
- 在
settings.json中显式写入两行:"extensions.autoCheckUpdates": false和"extensions.autoUpdate": false - GUI 设置有时不同步,尤其启用了 Settings Sync 或团队模板时,务必检查 JSON 文件是否真实生效
- 项目根目录下的
.vscode/settings.json优先级高于用户设置,若其中含"extensions.autoUpdate": true,全局配置会被覆盖
右下角弹窗不止来自更新,还得关 Notifications: Toasts
即使 update.mode 和插件开关全关,GitLens、Live Server 等插件仍会绕过 VSCode 通用机制,直接调用 vscode.window.showInformationMessage() 弹 toast。这类消息不受 autoUpdate 控制,只受通知通道开关影响。
- 在设置中搜索
Notifications: Toasts,设为off—— 这是唯一能统一拦截所有右下角一闪而过弹窗的开关 - 别误关
Notifications: Center,那是通知历史入口,关了就看不到任何记录 - 若该选项灰色不可调,说明当前处于通知静默模式(右下角铃铛图标带斜杠),先点击退出静默再设置
product.json 和 settings.json 都可能被重写,只读权限才是最后一道防线
VSCode 大版本升级时,常会重写 %APPDATA%\Code\User\settings.json 或安装目录下的 product.json,把你手动加的禁用字段悄悄还原。改完设置不加固,下次升级就失效。
- Windows:找到
C:\Users\用户名\AppData\Local\Programs\Microsoft VS Code\resources\app\product.json,用记事本打开,在顶层对象内加"updateMode": "none", "extensionsAutoUpdate": false,保存后右键 → 属性 → 勾选「只读」 - Linux Snap 版用户必须执行:
sudo snap refresh --hold vscode,否则snapd每天强制刷新,内部设置完全无效 - settings.json 设只读比改 product.json 更稳妥:Windows 右键文件属性设只读;macOS/Linux 执行
chmod 444 ~/.config/Code/User/settings.json
update.mode 就形同虚设。


















