Maintenance Butler
Reclaim disk space by cleaning up old VS Code extension versions, cache files, and logs.
VS Code accumulates gigabytes of stale data over time: outdated extension versions that were never removed, multiple layers of cache that rebuild automatically, and workspace storage for projects you deleted years ago. Maintenance Butler finds all of it, shows you the sizes, and lets you choose exactly what to clean.
Not yet on the Marketplace. This extension is in active testing and has not been published yet.
If you'd like to try it early, download the .vsix package from the GitHub releases page and install it manually:
Extensions panel → ··· menu → Install from VSIX…
Features
Caches & Logs: auto-regenerated, safe to clean
Everything in this group is rebuilt automatically by VS Code. Deleting it is like clearing your browser cache; VS Code recreates it on next launch or on demand.
| Target |
What it is |
Default |
| Compiled Bytecode (CachedData) |
Pre-compiled V8 bytecode for VS Code and extensions, built on startup to reduce load time. Rebuilt automatically on the next launch. |
✅ On |
| Code Cache |
Chromium's bytecode cache for VS Code's renderer processes. Rebuilt automatically on the next launch. |
✅ On |
| HTTP Cache |
Cached network responses: Marketplace requests, gallery lookups, and update checks. Rebuilt as you use VS Code. No data loss. |
✅ On |
| WebStorage |
Asset cache for extensions that open webview panels (JS, CSS, images). Rebuilt automatically when those panels are next opened. |
✅ On |
| GPU Caches |
GPU shader and pipeline caches (GPUCache, DawnGraphiteCache, DawnWebGPUCache, VideoDecodeStats). Rebuilt during the next VS Code session. May cause a brief visual slowdown on first launch after cleaning. |
✅ On |
| Crash Dumps (Crashpad) |
Crash report files generated when VS Code or a renderer process crashes. Useful only when actively troubleshooting a crash. No operational impact. |
✅ On |
| Logs |
Log output from VS Code core, extensions, and the language server host. A new log folder is created on each launch. Useful only when actively debugging a problem. |
✅ On |
| Old & Obsolete Extensions |
Old versions linger after updates because VS Code does not always finish cleanup. The .obsolete file lists extension folders VS Code itself has marked for removal. Only the newest version of each extension is active. |
✅ On |
| Cached Extension VSIXs |
VSIX packages downloaded when installing or updating extensions. VS Code re-downloads from the Marketplace if needed. Keeping these allows reinstallation without internet access. |
Off |
| Network Cache |
Chromium network state data: HSTS policies, QUIC sessions, DNS pre-fetch hints. Minor overhead to rebuild on next launch. |
Off |
| Service Worker Cache |
Service worker scripts and caches registered by VS Code's webview system. Rebuilt when extensions that use webviews are next opened. |
Off |
⚠️ Your History: permanently deleted, cannot be recovered
Warning: The items below are not auto-regenerated. Once deleted, they are gone forever. A confirmation dialog is always shown before cleaning anything in this group.
| Target |
What it is |
Default |
| Orphaned Workspaces |
VS Code stores editor state per project: open tabs, scroll positions, folded sections, extension data. This entry covers folders that no longer exist on disk. Safe to remove. Pick which ones to delete. Active workspaces are never touched. |
Off |
| Existing/Active Workspaces |
Same editor state data for projects that still exist on disk. Deleting resets that workspace to a fresh state: useful for clearing old extension data or corrupted sessions. Pick which ones to delete. The currently open workspace is excluded automatically. |
Off |
| Timeline History |
File snapshots saved by VS Code's Local History on every save, independent of Git. Grouped by project folder so you can choose what to keep. Deleted permanently and cannot be recovered. |
Off |
These can accumulate gigabytes over time, especially on long-lived installations, but they represent real work history. Enable them only if you understand what will be deleted.

Status Bar
After VS Code starts, Maintenance Butler scans your installation in the background and shows a bow-tie icon in the status bar:
| Display |
Meaning |
⊠ 1.58 GB |
Total size queued for cleaning based on your current settings |
⊠ Clean |
Nothing is queued: all selected targets are already empty |
Clicking the status bar item opens the Clean… panel directly.

Commands
Open the Command Palette (Ctrl+Shift+P) and search for:
- Maintenance Butler: Clean… - scan all installations, select what to clean, and run. Shows sizes for each item. Items from "Your History" display a permanent-deletion warning before proceeding.
- Maintenance Butler: Show Disk Usage - scan without deleting. Opens a full disk usage report in a new panel tab, grouped by installation.

Supported Installations
| Installation type |
Detection |
| Standard (Windows) |
%APPDATA%\Code\ |
| Standard (macOS) |
~/Library/Application Support/Code/ |
| Standard (Linux) |
~/.config/Code/ |
| Portable |
VSCODE_PORTABLE env var (set automatically by VS Code) |
| VS Code Insiders |
Detected automatically via vscode.env.appName |
Maintenance Butler always cleans only the installation it is running in. To clean multiple installations, run the command from each one.
Settings
| Setting |
Default |
Description |
maintenanceButler.cleanCachedData |
true |
V8 bytecode cache |
maintenanceButler.cleanCodeCache |
true |
Chromium bytecode cache |
maintenanceButler.cleanHttpCache |
true |
Network request cache |
maintenanceButler.cleanWebStorage |
true |
Webview asset cache |
maintenanceButler.cleanGPUCaches |
true |
GPU shader and pipeline caches |
maintenanceButler.cleanCrashpad |
true |
Crash dump files |
maintenanceButler.cleanLogs |
true |
VS Code and extension host logs |
maintenanceButler.cleanOldExtensions |
true |
Old extension versions and .obsolete entries |
maintenanceButler.cleanCachedExtensionVSIXs |
false |
Cached downloaded extension packages |
maintenanceButler.cleanNetworkCache |
false |
Network state cache |
maintenanceButler.cleanServiceWorkerCache |
false |
Service worker registration cache |
maintenanceButler.cleanOrphanedWorkspaceStorage |
false |
⚠️ Workspace state for deleted projects (permanent) |
maintenanceButler.cleanWorkspaceStorage |
false |
⚠️ Workspace state picker for existing projects (permanent) |
maintenanceButler.cleanHistory |
false |
⚠️ Timeline History picker: choose which project folders to clear (permanent) |
maintenanceButler.showStatusBar |
true |
Show the size indicator in the status bar; when disabled, no scan runs at startup |
maintenanceButler.confirmPermanentDelete |
true |
Show a confirmation dialog before permanently deleting any Your History items; set to false to skip confirmations |
maintenanceButler.showDescriptions |
true |
Show description text under each item in the Clean panel |

Requirements
Disclaimer
Maintenance Butler permanently deletes files from your file system. While every effort has been made to ensure that only safe, recoverable, or clearly labelled targets are cleaned, you use this extension at your own risk.
Spectabile accepts no responsibility for data loss, corrupted installations, or any other damage (direct or indirect) resulting from the use of this extension. Before enabling any target marked ⚠️, make sure you understand what will be deleted and that you have backups of anything you cannot afford to lose.
By using Maintenance Butler you confirm that you have read the documentation, understand what each cleaning target does, and take full responsibility for the actions you choose to perform.
License
MIT, see LICENSE
Built with the help of Claude Code (Anthropic).