禁用VSCode自动更新的可靠方法是将update.mode设为none并阻止更新服务进程。需重启VSCode,检查Help>Check for Updates是否变灰;Snap版需sudo snap refresh --hold;远程开发须在服务端同样设置;物理锁定安装文件更稳定。

VSCode 禁用自动更新的可靠方法(Windows/macOS/Linux 通用)
VSCode 官方不提供“关闭更新”的图形开关,但能通过配置禁用所有自动更新行为——关键是改 update.mode 设置并阻止后台服务拉取更新包。
- 打开 VSCode,按
Ctrl+,(Windows/Linux)或Cmd+,(macOS)进入设置 - 搜索
update.mode,将值改为none(不是manual,后者仍会下载提示) - 重启 VSCode,此时检查更新菜单项会变灰,
Help > Check for Updates不再响应 - 额外加固:在终端执行
code --disable-extension ms-vscode.vscode-js-profile-table无实际作用,真正要停的是更新服务进程——Windows 上结束Code Helper (Renderer).exe中与update相关的子进程;macOS/Linux 可临时屏蔽~/Library/Application Support/Code/Updater/(macOS)或~/.vscode/Updater/(Linux)目录的写权限
为什么改了 update.mode 还会弹更新提示?
常见原因是设置了用户级配置但没覆盖工作区或远程开发场景下的覆盖值,或者用了 Snap/Flatpak 等打包版本——它们自带独立更新机制,VSCode 内部设置无效。
- Snap 版本(Ubuntu 默认)必须用命令
sudo snap refresh --hold暂停所有 snap 更新,sudo snap refresh --unhold才能恢复 - Remote-SSH 或 WSL 连接时,远程机器上若装了 VS Code Server,它会单独检查更新,需在远程端也设置
"update.mode": "none"并重启 server - 某些企业策略组(如 Windows 组策略)或 macOS MDM 配置可能强制开启更新,此时本地设置会被忽略
update.mode: none 的副作用和兼容性注意点
禁用更新后不会影响插件更新、语言服务器通信或核心功能运行,但会丢失安全补丁和崩溃修复——尤其旧版本存在已知内存泄漏或调试器挂起问题时,风险明显上升。
- VSCode 1.75 之前版本禁用更新后,
Git扩展可能无法正确识别新格式的.gitignore规则 - Electron 升级带来的底层渲染变更(如 1.80+ 使用 Chromium 116)被跳过,某些网页预览或 WebView 插件在老版中显示异常
- 如果依赖
vscode-eslint或prettier等需匹配 VS Code API 版本的插件,它们可能在旧版上静默失效,错误日志里会出现Cannot read property 'onDidChangeConfiguration' of undefined
想锁死某个具体版本(比如 1.74.3)该怎么做?
只靠设置无法锁定版本号,必须配合安装包管理或文件系统控制——重点是防止任何渠道触发升级动作。
- 卸载当前版本,从 官方历史版本页 下载对应平台的离线安装包(如
VSCode-darwin-universal.zip),解压后直接运行二进制,不走系统安装器 - Windows 上重命名或删除
%USERPROFILE%\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\code\electron-sandbox\workbench\update.js(路径随版本微调),可彻底切断更新逻辑加载 - macOS 上对
/Applications/Visual Studio Code.app执行xattr -w com.apple.quarantine "0082" ...无意义,真正有效的是用chflags uchg /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron锁定主程序文件(需先关 SIP 或用 Recovery 模式操作)
最麻烦的其实是 Electron 自身的 auto-updater 模块——它不读 VS Code 配置,而是硬编码检查更新。所以纯配置方案永远有绕过可能,物理隔离安装路径 + 文件锁定才是真稳定。











