How to Find & Delete Hidden APFS Local Snapshots on macOS (tmutil Guide)
If you just deleted 50 GB of files and emptied the Trash—yet Disk Utility, Xcode, or Docker still says your disk is full—your storage blocks are pinned by APFS Copy-on-Write local snapshots. Because APFS snapshots record a point-in-time reference to every block on the volume, deleting a file only removes its directory entry until the snapshot itself expires. You can inspect and release those pinned blocks immediately with tmutil listlocalsnapshots / and tmutil thinlocalsnapshots / 25000000000 4, or inspect them visually in StorageSage's System Data & Volume Engine.
Why Finder, Disk Utility, and df -h All Show Different Free Space
Apple File System (APFS) maintains two distinct free-space metrics on every volume container:
Finder “Available (Purgeable)” Space
Includes physical free blocks plus blocks currently held by APFS local snapshots and iCloud evictable caches that macOS promises to release under high-priority write pressure.
True Unallocated Kernel Blocks
What POSIX tools (df -h, Docker, Postgres, and git clone) actually see. If APFS snapshots hold 60 GB of deleted blocks, CLI tools will fail with ENOSPC: No space left on device.
3 Commands to Audit & Purge APFS Local Snapshots
1. List all local snapshots on your boot volume
tmutil listlocalsnapshots / # Example output: # com.apple.TimeMachine.2026-04-15-184210.local # com.apple.TimeMachine.2026-04-16-011504.local # com.apple.os.update-MSUPrepareUpdate
2. Delete a specific APFS local snapshot by timestamp
tmutil deletelocalsnapshots 2026-04-15-184210
3. Thin all purgeable snapshots automatically (e.g., reclaim 25 GB at urgency 4)
tmutil thinlocalsnapshots / 25000000000 4
Inspect APFS Volumes & Snapshots Instantly in StorageSage
StorageSage's SystemDataEngine uses a lock-free Howard Hinnant civil-calendar timestamp parser to enumerate APFS local snapshots in 0.18 seconds alongside real-time physical vs. purgeable volume telemetry.
brew install --cask storagesage