必须同时关闭extensions.autoupdate、extensions.autocheckupdates和workbench.enableexperiments三项配置,并处理插件专属开关(如codegeex.update.check)、工作区覆盖及远程环境设置,否则gitlens等插件仍会弹窗或静默预加载。

关插件自动更新不能只设 extensions.autoUpdate 一个配置,必须同步关闭探测、通知、工作区覆盖三层机制,否则 GitLens、ESLint、CodeGeex 等插件仍会弹窗或静默预加载新版。
为什么改了 settings.json 还在弹更新提示
常见原因不是配置写错,而是被更高优先级的设置覆盖:
- 项目根目录存在
.vscode/settings.json,且里面写了"extensions.autoUpdate": true—— 它会直接覆盖用户级设置 - 你正在用 Remote-SSH 或 Dev Container,而远程环境的
settings.json没同步禁用 - 某些插件自带专属开关(如
eslint.enableUpdateCheck、codegeex.update.check),默认为true,需单独设为false或off - Windows 用户若快捷方式勾选了「以管理员身份运行」,部分配置写入可能被拦截,导致看似保存成功实则未生效
必须同时关闭的三个核心配置项
VS Code 插件更新机制有三层独立开关,只关最上层会留后门:
-
extensions.autoUpdate:控制是否自动下载并安装新包 → 设为false -
extensions.autoCheckUpdates:控制是否定期向市场发起版本探测请求 → 也必须设为false,否则日志里能看到Checking for extension updates -
workbench.enableExperiments:启用新版通知框架,GitLens、Prettier 等插件依赖它推送更新提示 → 设为false才能彻底屏蔽右下角弹窗
这三个字段必须同时写进用户级 settings.json(路径可通过 Ctrl+Shift+P → Preferences: Open User Settings (JSON) 打开)。
锁定某个插件不升级(例如 Prettier v3.4.1)
VS Code 原生不支持语义化版本锁定,但可用组合策略实现事实冻结:
- 先确保全局
extensions.autoUpdate和extensions.autoCheckUpdates已关 - 在扩展视图(
Ctrl+Shift+X)中找到该插件,点击右下角齿轮图标 →Extension Settings→ 关闭其专属 Auto Update 开关 - 若插件提供类似
updateChannel或enableUpdateCheck的设置(如 ESLint 插件有eslint.enableUpdateCheck),一并设为false - 终极方案:卸载当前版本 → 去 marketplace 页面点「Download Extension」手动下载
.vsix文件 → 用Extensions: Install from VSIX安装 —— VS Code 不会对本地安装的插件发起任何版本检查
插件更新失败后报 Extension host terminated unexpectedly 怎么回滚
这不是配置问题,而是新版插件与当前 VS Code 版本或系统环境不兼容。回滚方法:
- 打开命令面板(
Ctrl+Shift+P),输入Extensions: Show Enabled Extensions - 找到出问题的插件 → 右键 →
Install Another Version→ 选择上一个稳定版(如2.1.153) - 降级后务必立即配置关闭自动更新,再重启,否则启动瞬间就会升回最新版
- 若找不到历史版本选项,可去 GitHub Releases 或 marketplace 页面手动下载对应
.vsix文件重装
真正麻烦的不是找不到开关,而是你以为关完了,结果某天发现 ~/.vscode/extensions 多了个带时间戳的新插件目录,或者后台进程仍在拉取更新包 —— 那说明某一层漏了,得逐层排查。











