必须单独配置插件专属设置:GitLens设gitlens.advanced.messages: []并禁用遥测,ESLint关eslint.packageManager自动检测,Prettier检查prettier.showUpdateNotification等字段,再配合文件权限锁定已安装版本。

只关全局自动更新开关,根本拦不住关键插件偷偷升级——GitLens、ESLint、Prettier 这类高频插件自带独立检查逻辑,必须单独封。
怎么给单个插件禁用自动更新
VSCode 的 extensions.autoUpdate 是全局开关,设为 false 后,大部分插件确实停了,但 GitLens、ESLint、Live Server、Remote-SSH 等插件会在自己的配置项里另起炉灶轮询版本。它们不读你那行 "extensions.autoUpdate": false,只认自己家的字段。
- 打开扩展面板(
Ctrl+Shift+X),找到目标插件,点右下角齿轮图标 → Extension Settings - 在设置搜索框里输入插件名 + “update” 或 “notify”,例如搜
gitlens update,通常会命中gitlens.advanced.messages,把它清空成[] - 对 ESLint 插件,关键是关掉
eslint.packageManager自动检测(某些版本会借此触发升级检查);Prettier 则要确认prettier.disableLanguages没误配导致插件反复重载 - 没搜到?直接打开
settings.json,手动加一行:"gitlens.advanced.messages": [],保存后重启 VSCode 生效
为什么关了 autoUpdate,GitLens 还弹「New release available」
因为 GitLens 的通知走的是自己封装的 vscode.window.showInformationMessage,完全绕过 VSCode 的通用通知系统。它甚至不依赖 extensions.autoCheckUpdates,只要检测到新版本就发。
- 必须显式设置
gitlens.advanced.messages为空数组,这是官方文档明确支持的屏蔽方式 - 部分旧版 GitLens 还会读
gitlens.telemetry.enabled,如果设为true,它可能借遥测通道回传版本号并反向触发提示——建议一并设为false - 别信插件市场页写的“no notifications”,2026 年 4 月发布的 GitLens v17.2.0 仍默认开启 release 提示,且无 GUI 开关
如何锁定插件版本不被任何方式覆盖
禁用自动更新 ≠ 锁定版本。VSCode 不提供语义化版本锁定(如 eslint@8.56.0),但你可以用文件级控制阻止覆盖安装。
- 找到插件安装目录:
Windows:%USERPROFILE%\.vscode\extensions\
macOS:$HOME/.vscode/extensions/
Linux:$HOME/.vscode/extensions/ - 定位到目标插件文件夹(如
esbenp.prettier-vscode-9.13.0),右键 → 属性 → 勾选“只读”(Windows)或终端执行chmod 444 "esbenp.prettier-vscode-9.13.0" - 注意:这个操作仅对已安装版本有效;若插件被强制卸载重装,权限会丢失——所以得配合前面的
extensions.autoUpdate: false和插件专属禁用项一起用
settings.json 被悄悄改回 default 怎么办
VSCode 在大版本升级(比如从 1.88 → 1.89)时,有时会重写用户 settings.json,把 "update.mode": "none" 或插件专属字段删掉或覆盖。这不是 bug,是安装器的默认行为。
- 最稳的办法:把
settings.json设为只读(Windows 右键属性勾选,macOS/Linux 执行chmod 444 settings.json) - 别依赖 GUI 设置界面点几下——它只是帮你写 JSON,写完立刻可能被覆盖;所有关键策略必须落盘为只读文件
- 如果你用多设备同步(Settings Sync),确保 sync 配置里没启用“覆盖本地设置”,否则远程配置可能把你本地的只读策略冲掉
真正麻烦的从来不是“怎么关”,而是关完之后谁还在后台调接口、谁把通知硬编码进 UI、谁在升级时重写你的配置——这些细节不逐个堵死,一个 GitLens 就能让你的“稳定环境”半夜崩一次。


















