VSCode 更新后残留的旧版本文件夹需手动清理,只保留正在运行和最新一次成功更新的版本,其余可安全删除;清理前须确认 code --status 中 updateState 为 idle,避免误删待激活版本。

VSCode 自动更新后残留的 ~/.vscode/updates 旧版本文件夹怎么删
这些文件夹是 VSCode 更新时下载并解压的完整安装包副本,存放在用户目录下,不随主程序卸载或升级自动清理。默认路径为 ~/.vscode/updates(macOS/Linux)或 %USERPROFILE%\AppData\Roaming\Code\updates(Windows),每个子目录名类似 1a2b3c4d1234567890abcdef1234567890abcdef,全是哈希值,人工无法识别是否还在用。
- 别手动删正在使用的版本——VSCode 启动时会锁定当前运行版本的文件夹,但不会锁住其他旧版;不过若刚更新完就立刻删,可能误删「待激活」的新版(它在下次启动时才正式切换)
- Windows 用户注意:
%USERPROFILE%\AppData\Roaming\Code\updates是正确路径,不是AppData\Local下那个(那是缓存,不是更新包) - macOS/Linux 用户:确认
~/.vscode/updates存在且非空;有些老版本会写到~/Library/Application Support/Code/updates,需一并检查
用命令行一键清理所有「已弃用」的更新包文件夹
VSCode 本身不提供清理命令,但它的更新机制会在 updates.json 中记录当前有效版本路径。更可靠的做法是:只保留最新一次成功更新的文件夹 + 正在运行的版本对应文件夹,其余全删。
- Windows(PowerShell):
Get-ChildItem "$env:USERPROFILE\AppData\Roaming\Code\updates\*" -Directory | Where-Object { $_.Name -notmatch '^\d{8}T\d{6}Z$' } | Sort-Object LastWriteTime -Descending | Select-Object -Skip 1 | ForEach-Object { Remove-Item $_.FullName -Recurse -Force }(该命令跳过时间戳命名的临时目录,仅清理哈希命名的旧包,并保留最新一个) - macOS/Linux:
ls -dt ~/.vscode/updates/*/ | tail -n +2 | xargs -r rm -rf
(前提是所有旧包都是以/结尾的目录,且修改时间反映更新顺序) - ⚠️ 删之前先执行
code --status,看输出里updateState字段是否为idle;如果不是(比如显示checking或downloading),等它完成再操作
为什么不能依赖 VSCode 设置里的「自动清理」
VSCode 没有「自动清理旧更新包」的开关。设置项 update.mode 只控制「是否自动下载/安装」,update.showReleaseNotes 等也完全不涉及磁盘空间管理。所谓“自动更新”只是把新包下好、解压、改个软链接指向新目录,旧包扔那儿不管。
- Electron 应用通用行为:更新器(Squirrel on Windows / electron-updater on macOS)设计上就假设磁盘空间充足,不主动回收
- 某些企业策略组或终端管理工具会禁用自动删除逻辑,进一步加剧堆积
- 如果你用的是
code-oss(开源版)或 Snap/Flatpak 安装的 VSCode,更新路径和清理逻辑完全不同——它们根本不用updates目录,所以这个方案不适用
删完还要顺手清掉 Cache 和 logs 里的无用数据
更新包只是冰山一角。真正占空间的大户常藏在日志和缓存里,尤其调试器、扩展安装过程产生的临时文件。
- Windows:
%USERPROFILE%\AppData\Roaming\Code\Cache和%USERPROFILE%\AppData\Roaming\Code\logs可安全清空(关掉 VSCode 后操作) - macOS:
~/Library/Caches/com.microsoft.VSCode.ShipIt(ShipIt 是更新器进程,缓存下载分片)和~/Library/Logs/Code - Linux:
~/.config/Code/Cache和~/.config/Code/logs;但注意~/.vscode/extensions不要乱动——那是已安装扩展,删了得重装 - 扩展自身也可能留垃圾:比如
Pylance会在~/.vscode/extensions/ms-python.vscode-pylance-*/cache下存类型索引,可删,但下次打开 Python 文件会重建


















