必须同时关闭 extensions.autoUpdate、extensions.autoCheckUpdates 和 workbench.enableExperiments 三项配置,并检查插件级更新开关及扩展目录权限,才能彻底禁用 VSCode 插件热更新。

extensions.autoUpdate 和 extensions.autoCheckUpdates 必须同时设为 false
只关 extensions.autoUpdate 会导致插件仍每小时发起 HTTP 请求查新版本,右下角弹“Update available”,甚至静默下载完卡住——这是 VSCode 扩展管理器的双阶段机制:先探测(autoCheckUpdates),再安装(extensions.autoUpdate)。两者缺一不可。
实操建议:
- 打开
Ctrl+Shift+P→ 输入Preferences: Open User Settings (JSON),粘贴以下两行(不要只写一个):
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
}
- 重启 VSCode,确认 Help > Check for Updates 不再变灰(它只控制编辑器自身更新,和扩展无关)
- 检查右下角是否还有更新气泡;若有,说明工作区配置覆盖了用户设置,需执行
Preferences: Open Workspace Settings (JSON)并同样写入这两项
workbench.enableExperiments 必须关闭,否则 GitLens 等插件照常弹窗
workbench.enableExperiments 是 VSCode 的实验性 UI 框架开关,GitLens、ESLint、Prettier 等主流插件依赖它推送「New release available」通知。即使前两项全关,这个没关,通知照样刷屏,且不走 VSCode 通用更新通道,无法被 extensions.autoUpdate 拦截。
实操建议:
- 在同一个
settings.json中追加:"workbench.enableExperiments": false - 该配置影响极小,仅禁用非核心 UI 实验功能(如新版侧边栏动画、测试面板预览),不影响编辑、调试、终端等主流程
- 若某插件明确要求启用实验功能(极少见),可单独在工作区配置中覆盖,而非全局放开
扩展目录权限锁定可防后台进程绕过配置升级
VSCode 启动后会派生子进程(如 Code Helper (Renderer))执行更新逻辑,某些场景下这些进程可能忽略 JSON 配置,直接尝试写入 ~/.vscode/extensions/(macOS/Linux)或 %USERPROFILE%\.vscode\extensions\(Windows)。一旦写入成功,即使没重启,下次加载时就已运行新版。
实操建议:
- Linux/macOS:执行
chmod -w ~/.vscode/extensions(临时锁定,需 root 权限改回) - Windows:右键该文件夹 → 属性 → 安全 → 编辑 → 拒绝当前用户「写入」权限
- 注意:此操作会阻止所有手动安装行为,适合纯运行态环境(如 CI 节点、远程调试服务器),日常开发慎用
扩展页面里手动关闭单个插件的 Auto Update 开关
部分插件(如 esbenp.prettier-vscode、ms-python.python)提供独立的更新控制项,它们优先级高于全局设置。例如 Prettier 插件有 prettier.enableUpdateCheck,Python 插件有 python.updateChannel,这些字段若为 "default" 或 "insiders",仍会主动拉取更新。
实操建议:
- 打开扩展视图(
Ctrl+Shift+X),找到目标插件,点击右下角齿轮图标 →Extension Settings - 搜索关键词
update或check,将类似prettier.enableUpdateCheck、gitlens.advanced.messages、python.updateChannel显式设为false或"none" - 对关键插件(尤其涉及格式化、调试、语言服务的),建议统一导出其
settings.json片段,纳入团队配置模板
workbench.enableExperiments 和插件级独立更新开关——它们让通知和后台探测绕过你精心配置的 autoUpdate,而权限锁定则是最后一道物理防线。


















