必须同时关闭三个配置项才能彻底禁用插件自动更新:extensions.autoupdate、extensions.autocheckupdates 和 workbench.enableexperiments,并检查工作区、remote-ssh/dev container 设置及插件专属更新逻辑。

关不掉插件自动更新,不是因为你没点对开关,而是 VS Code 的更新机制有三层独立路径,只关一层等于没关。
必须同时关闭的三个配置项
VS Code 插件更新不是单个开关控制的,extensions.autoUpdate 只管“下载并安装”,另外两个关键环节常被忽略:
-
extensions.autoCheckUpdates:控制是否每小时向 Marketplace 发起 HTTP 请求探测新版本——即使不安装,它也会在后台轮询,日志里能看到Checking for extension updates -
workbench.enableExperiments:启用新版通知框架,GitLens、Prettier 等插件依赖它弹出右下角New release available提示
这三个字段必须同时写进用户级 settings.json(可通过 Ctrl+Shift+P → Preferences: Open User Settings (JSON) 打开),缺一不可。写成:
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false,
"workbench.enableExperiments": false
}
工作区设置会覆盖全局配置
你以为关完了?很可能被项目根目录下的 .vscode/settings.json 覆盖了。这个文件优先级高于用户设置,CI 脚本或脚手架(如 create-react-app)常默认开启 "extensions.autoUpdate": true。
- 打开项目根目录,检查是否存在
.vscode/settings.json - 若存在且含
"extensions.autoUpdate": true或类似字段,直接删掉或设为false - Remote-SSH 或 Dev Container 场景下,还要同步检查远程环境的
settings.json
某些插件自带独立更新逻辑
GitLens、ESLint、Prettier 这类插件不走 VS Code 统一通道,而是自己调用 vscode.window.showInformationMessage 弹窗,关掉全局开关后照样刷提示。
- GitLens:搜
gitlens.advanced.messages,设为空数组[];或关掉gitlens.telemetry.enabled - ESLint:没有静音开关,但可设
eslint.lintTask.enable为false减少触发时机 - Prettier:截至 2026 年 6 月仍无官方静音选项,临时解法是手动安装旧版后,在扩展页点「禁用自动更新」(若插件支持该开关)
彻底锁定某个插件不升级
VS Code 原生不支持语义化版本锁定,但可用组合策略实现事实冻结:
- 确保
extensions.autoUpdate和extensions.autoCheckUpdates已关 - 在 Extensions 视图中找到该插件 → 点右下角齿轮图标 → 关闭其专属
Auto Update开关 - 检查插件是否有专属配置项,如 ESLint 的
eslint.enableUpdateCheck、Prettier 的prettier.enableUpdateCheck,一并设为false - 终极方案:卸载当前版本 → 去 Marketplace 页面点「Download Extension」下载指定版本的
.vsix→ 用Extensions: Install from VSIX安装
真正麻烦的不是找不到开关,而是你改完 settings.json 后,发现 ~/.vscode/extensions/ 下多了一个带时间戳的新插件目录——那说明某层开关还开着,或者远程/工作区配置偷偷绕过了你的设置。











