必须同时将 extensions.autoupdate 和 extensions.autocheckupdates 设为 false,且显式写入用户级 settings.json;gitlens、eslint、prettier 等需单独配置抑制通知;工作区设置优先级更高,remote 场景需单独检查;最终防线是手动安装 .vsix 并设插件目录为只读。

extensions.autoUpdate 和 extensions.autoCheckUpdates 必须同时设为 false
只关 extensions.autoUpdate,插件仍会每小时发起 HTTP 请求轮询新版本,在右下角持续弹出「New version of XXX is available」;只关 extensions.autoCheckUpdates,则插件可能静默下载完就覆盖安装,导致 Extension host terminated unexpectedly 报错。二者缺一不可,且必须显式写进用户级 settings.json(路径:%APPDATA%\Code\User\settings.json 或 $HOME/Library/Application Support/Code/User/settings.json),GUI 设置易不同步,尤其启用 Settings Sync 时。
GitLens、ESLint、Prettier 等插件需单独压制通知逻辑
这些插件不读 VSCode 全局开关,而是直接调用 vscode.window.showInformationMessage() 弹气泡。常见处理方式包括:
-
gitlens.advanced.messages: 设为[];顺手关掉gitlens.telemetry.enabled(部分版本借遥测反向触发提示) -
eslint.packageManager: 设为null或明确指定路径,避免因检测失败反复重载触发弹窗 -
prettier.enableUpdateCheck: 设为false(v9.13.0+ 支持);若无效,说明插件未识别该字段,需走本地安装 + 文件权限锁定
工作区配置可能无声覆盖用户设置
项目根目录下的 .vscode/settings.json 优先级高于用户设置。即使你全局设了 "extensions.autoUpdate": false,只要工作区里写了 "extensions.autoUpdate": true,插件就会照常升级。检查方法:
- 按
Ctrl+Shift+P→ 输入Preferences: Open Workspace Settings (JSON) - 确认没有冲突项;如有,显式写入
"extensions.autoUpdate": false覆盖 - Remote-SSH / Dev Container 场景下,还需点击左下角 Remote 按钮 →
Open Remote Settings单独检查
物理层锁定插件版本才是最终防线
VSCode 原生不支持语义化版本锁定(如 prettier@3.4.1)。禁用自动更新 ≠ 版本冻结。真正防止覆盖的实操路径是:
- 卸载当前插件(Extensions 视图右键 → Uninstall)
- 去 marketplace 手动下载对应
.vsix文件(核对发布时间与版本号) - 执行
Extensions: Install from VSIX安装 - 进入插件目录:
%USERPROFILE%\.vscode\extensions\(Win)或$HOME/.vscode/extensions/(macOS/Linux) - 找到对应文件夹(如
esbenp.prettier-vscode-3.4.1),设为只读(Windows 右键属性勾选“只读”;Linux/macOS 运行chmod 444 "folder_name")
这个只读权限会阻止任何后续写入——哪怕配置漏了一项、插件偷偷发请求、甚至 VSCode 自身崩溃重载,都改不了已安装的代码。











