DEV Community

Pavan Kumar Sadashiv
Pavan Kumar Sadashiv

Posted on

Where Did My 256GB Mac SSD Go? Hunting 50+ GB of Hidden Developer Junk & Ghost Files

If you develop on a 256 GB Mac, you already know the sinking feeling when macOS pops up the dreaded warning:

"Your disk is almost full."

You open System Settings → General → Storage, hoping for answers, only to be greeted by an ominous grey bar labeled System Data: 60+ GB. Apple gives you no breakdown, no inspection tool, and no way to clean it without guessing.

Last week, my 228 GiB APFS volume dropped to a critical 21 GiB free (89% full). As someone running complex polyglot workflows—GitLab source builds, AI agents, language servers, video editing, and Docker—I decided to run a forensic terminal audit across my entire system.

What I found was shocking: over 50 GB of pure dead waste, aborted network packfiles, duplicate binaries, and unmanaged caches that standard cleaning tools completely miss.

Here is the breakdown of what is secretly eating your Mac's storage and the exact commands to reclaim tens of gigabytes.


1. The Ghost Git Packs: When git clone Fails Silently

When an agent or terminal process runs git clone or git fetch on a huge repository (like GitLab or Chromium) and the network drops or the terminal is killed, Git does not clean up temporary packfiles.

They sit forever in .git/objects/pack/tmp_pack_* as orphaned, unindexed binary blobs:

ls -lh ~/.gemini/antigravity/scratch/gitlab-source/.git/objects/pack/tmp_pack_*
# -r--r--r--  1 pavan  staff   1.8G  tmp_pack_LvLSDN
# -r--r--r--  1 pavan  staff   820M  tmp_pack_2eoj8e
Enter fullscreen mode Exit fullscreen mode

Space wasted: 2.69 GB of completely unreadable, orphaned junk.

The Fix:

Run a scan across your projects for aborted packfiles:

find ~ -type f -name "tmp_pack_*" -exec ls -lh {} +
# Remove them safely:
find ~ -type f -name "tmp_pack_*" -delete
Enter fullscreen mode Exit fullscreen mode

2. Duplicate CLI & Extension Binaries

If you use VS Code, Cursor, or AI-powered IDEs with extensions like Claude Code or SonarLint, check your extension directories.

Whenever extensions auto-update, older versions are frequently retained side-by-side with full standalone binaries:

du -hd 1 ~/.antigravity-ide/extensions | grep claude-code
# 319M  anthropic.claude-code-2.1.319-darwin-arm64 (Active)
# 317M  anthropic.claude-code-2.1.318-darwin-arm64 (Dead)
# 308M  anthropic.claude-code-2.1.316-darwin-arm64 (Dead)
# 275M  anthropic.claude-code-2.1.312-darwin-arm64 (Dead)
Enter fullscreen mode Exit fullscreen mode

Combined with global npm installs, URL handlers, and cache directories, there were five identical copies of the exact same ~260MB binary, eating over 1.5 GB.

The Fix:

Delete older, superseded extension version directories and leave only the latest active release.


3. The Forgotten Render Caches (DaVinci Resolve & Premiere)

If you edit video on your machine, your NLE quietly generates gigabytes of proxy files and timeline render cache clips behind your back.

In DaVinci Resolve:

  • Path: ~/DaVinci Resolve/FileDaVInci/CacheClip (or ~/Movies/CacheClip)
  • Size found: 1.61 GB (and often climbs to 20–50 GB on active projects).

These files are completely safe to purge because the video editor will automatically re-render timeline clips when you open the project.


4. GoogleUpdater & Stale App Installer Caches

Did you know Google Updater hoards old Chrome extension .crx update packages in your Application Support folder?

du -sh ~/Library/Application\ Support/Google/GoogleUpdater/crx_cache
# Result: 1.02 GB
Enter fullscreen mode Exit fullscreen mode

Add in cached update DMGs and zips for desktop clients:

  • Telegram desktop update installer cache: ~/Library/Caches/ru.keepcoder.Telegram/org.sparkle-project.Sparkle (536 MB)
  • Gemini app update installer DMG: ~/Library/Caches/com.google.GeminiMacOS/Updates/... (268 MB)
  • Ollama desktop update zip: ~/Library/Caches/ollama/updates/... (219 MB)

Once an app is updated, keeping its installer .dmg or .zip serves zero purpose.


5. Developer Scratch Workspaces & Zombie node_modules

If you use local AI coding agents or work on multi-repo microservices, scratch directories accumulate fast:

  • A scratch clone of an LSP server had a 2.0 GB node_modules folder sitting untouched.
  • A bug bounty reconnaissance folder had 1.2 GB of beautified JS dumps from a single target.
  • Total across forgotten scratch projects: 12.3 GB.

The Fix:

Audit and delete abandoned scratch folders:

# Find largest node_modules across your home directory
find ~ -name "node_modules" -type d -prune -exec du -sh {} + 2>/dev/null | sort -hr | head -n 10
Enter fullscreen mode Exit fullscreen mode

6. The Package Manager Cache Tax

Almost every modern developer toolchain creates its own isolated global cache:

Tool Cache Location Space Found Cleanup Command
npm ~/.npm 832 MB npm cache clean --force
pip ~/Library/Caches/pip 292 MB pip cache purge
Homebrew ~/Library/Caches/Homebrew 210 MB brew cleanup -s
Bun ~/.bun 1.32 GB bun pm cache rm
Puppeteer ~/.cache/puppeteer 430 MB rm -rf ~/.cache/puppeteer
NuGet ~/.nuget 778 MB dotnet nuget locals all --clear
Rustup ~/.rustup 2.24 GB rustup target list (prune unused targets)

That's over 6 GB in package tarballs that can be re-fetched on demand anytime.


7. macOS 4K Dynamic Aerial Wallpapers & Screensavers

Starting in macOS Sonoma and Sequoia, clicking on the animated landscape wallpapers in System Settings automatically streams and caches full 4K HDR video files to your disk:

  • ~/Library/Application Support/com.apple.mobileAssetDesktop (898 MB)
  • ~/Library/Application Support/com.apple.wallpaper (684 MB)

If you test out 5 or 6 wallpapers, you've quietly downloaded 8 to 10 GB of video files without a confirmation prompt.


8. The Secret Weapon: A Mac Reboot (/private/var/folders)

In our audit, /private/var/folders had ballooned from 4.2 GB to 8.5 GB in just 5 days.

This directory houses per-user temporary scratch storage, WebKit cache files, and compile artifacts. On macOS, a simple system restart safely and automatically flushes this directory, giving you back several gigabytes of free disk space instantly.


The Audit Scorecard: Reclaiming 50+ GB

Category What We Found Space Recoverable
Category 1: Zero-Risk Waste Failed git packs, update DMGs/zips, CRX caches, DaVinci render clips ~7.9 GB
Category 2: Scratch Workspaces Abandoned git clones, old JS dumps, orphan node_modules ~12.3 GB
Category 3: Redundant Archives Sitting .zip downloads duplicated on disk ~3.4 GB
Category 4: Browser & App Caches Chrome web cache, Telegram cache, IDE caches ~5.9 GB
Category 5: Stale Toolchains Unused Rust targets, NVM duplicates, Bun/NuGet caches ~8.0 - 13.5 GB
Category 6: System Temp & Reboot /private/var/folders flush + wallpaper trim ~5.0 - 11.0 GB
Grand Total ~42 GB to 65 GB

Quick Shell One-Liner to Find Your Largest Files

Want to see what's eating your disk right now? Run this Python one-liner in your terminal to instantly find every file larger than 100 MB in your user directory:

python3 -c "
import os
for root, _, files in os.walk(os.path.expanduser('~')):
    for f in files:
        try:
            fp = os.path.join(root, f)
            sz = os.path.getsize(fp)
            if sz > 100 * 1024 * 1024:
                print(f'{sz / (1024*1024):>8.1f} MB  {fp}')
        except Exception:
            pass
" | sort -hr | head -n 25
Enter fullscreen mode Exit fullscreen mode

What's the weirdest ghost file you've discovered hiding in your Mac storage? Let me know in the comments below!

Top comments (0)