A Mac cleaner that maps your disk and clears out apps, caches and AI tool clutter. Everything goes to the Trash, so you can put it back.

Coming soon macOS 26 or later Macs with Apple silicon

Macintosh HD
Shoo’s Space page. A bar under the title splits the disk into coloured kinds, and a map draws folders as coloured blocks sized by what they hold, with a list of the open folder’s contents beside it.

Space

Developer tools take up the most room, 61.4 GB. Click any block on the map to look inside.

197.75 GBavailable of 494.4 GB

    A sample disk, drawn the way Shoo’s Space page draws one. Pick something from the list, or with the circle on a block, then hold the Shoo button.

    Each block is as big as what it holds. Arrow keys move between blocks, Return opens a folder, Space picks a block for the Trash, and Escape goes back out.

    Arrow keys move through the list, Return opens a folder, and Space ticks an item for the Trash.

    A sample disk. Nothing on your Mac is touched.

    What Shoo does

    Shoo looks through your Mac for things you don’t need anymore: apps and the files they leave behind, files from apps you’ve already deleted, caches, old logs, and what AI tools pile up.

    It shows you each one, how big it is and why it was picked. Whatever you choose goes to the Trash, and any of your last 200 cleanups can be put back until you empty it.

    1. 1It looksShoo maps your disk and lists leftovers, caches and AI tool files. Full Disk Access is optional. Without it, a few places macOS guards show as locked.
    2. 2You checkEvery file comes with the reason it was picked and how sure Shoo is. Weak matches are listed but left unticked.
    3. 3You hold to shooHold the button and your selection goes to the Trash. History keeps your last 200 cleanups, each with Put Back.

    Every page in Shoo

    Shoo has seven pages of its own, and one more for each family of AI tools it finds on your Mac, up to eight. Click any page in the sidebar to see it.

    Overview

    A greeting for the time of day over a live sky, and one ring that adds up everything Shoo can clear, split into the colours of the pages it’s on.

    Below are the startup disk, cards for Apps, Leftovers, Caches and AI tools, and your last three cleanups, each with Put Back.

    Shoo’s Overview page. A greeting sits over a blue sky beside a ring showing how much Shoo can clear. Below are a card for the startup disk, cards for Apps, Leftovers, Caches and AI tools, and a short list of recent cleanups.

    Space

    The disk as one bar split by kind, and a map of the open folder where every block is as big as what it holds.

    Click a folder to zoom in, point at a kind to see where it lives, or switch the list to the 80 largest files. Any other local disk can be mapped from the toolbar.

    Shoo’s Space page. A bar under the title splits the disk into coloured kinds, with the part Shoo can clear striped. Below it, a map draws folders as coloured blocks sized by what they hold, and a list beside the map shows the open folder’s contents, biggest first. Shoo’s Space page with the pointer on Developer in the legend. The map fades everything else, so only the developer tools stay in colour: the Developer folder in your Library, .npm, .cargo, Homebrew and /Library/Developer. Shoo’s Space page opened on the Home folder. The pointer is on Downloads, and the line under the map reads Downloads, 17.6 GB, 8% of Home. The list beside the map shows what’s in Home, biggest first, with checkboxes beside .npm and .cargo. Shoo’s Space page opened on Downloads, with Xcode_27.xip and InstallAssistant.pkg ticked in the list and ringed on the map. A bar along the bottom reads 2 items picked, beside a Hold to shoo button for 13.2 GB.

    Activity

    Live cards for the processor, memory, energy, disk, network and graphics, each with the last two minutes as a graph.

    For the processor, memory, energy and disk, a chart shows which apps used it, each in a colour taken from its own icon. Helpers are gathered under the app they belong to, and you can pick apps and hold to quit them.

    Shoo’s Activity page. Live cards for processor, memory, energy, disk, network and graphics, in two rows of three, sit above a stacked chart of which apps are using the processor, with a list of apps and their numbers below.

    Clean

    Apps

    Pick an app, or drop one on the window or on Shoo’s Dock icon, to see every file it spread around your Mac.

    Each file shows its strongest reason in plain words and a label saying how sure Shoo is: Certain, Likely or Possible. Click the label to see all the evidence.

    Shoo’s Apps page. Installed apps are listed on the left. On the right is one app’s uninstall plan: its files grouped by where they live, each with a reason, a confidence label and a size, above a Hold to uninstall button.

    Leftovers

    Files from apps that are already gone, grouped under the app they came from.

    A file is offered only when nothing on the Mac still claims it: no app anywhere on the disk, no part of macOS, no command-line tool, no running process and no app macOS still has registered. Anything written in the last hour is never ticked for you.

    Shoo’s Leftovers page. Files left by Lumen and Paperboat, apps that are no longer installed, are grouped under each app’s name, and every row shows a reason, a confidence label and a size. The bar at the bottom reads 9 of 10 selected, beside a Hold to shoo button for 344.7 MB. Shoo’s Leftovers page while the Hold to shoo button is held down, with 9 of 10 items selected and 344.7 MB about to go to the Trash. Shoo’s Leftovers page after the cleanup: a green tick and All clear above an Open History button, and a toast at the bottom that reads Shooed 9 items, with Undo.

    Caches

    App caches, Xcode build data, package-manager downloads and old logs: things that come back on their own. Caches of apps that are open stay unticked, and build data for an Xcode project that no longer exists says so.

    Shoo’s Caches page. App caches from Spotify, Slack, Figma and Arc sit above a Developer group with Xcode build data, the npm cache and Homebrew downloads. Slack’s cache is left unticked because Slack is open.

    AI

    Claude

    Claude clutter

    Covers the Claude app and Claude Code.

    Shoo matches every history to the folder its sessions recorded and offers only the histories of projects that are gone, along with leftovers of ended sessions, stray CLAUDE.md files, old Claude Code versions, caches and logs.

    Shoo’s Claude page. Cards show the projects Claude remembers, Lighthouse marked Live and Driftwood and tide-tables Gone. Below are the histories of the vanished projects, with tide-tables’ memory notes left unticked, and leftovers of ended sessions.

    OpenAI

    OpenAI clutter

    Covers ChatGPT, Atlas and Codex, in the terminal and in VS Code.

    Codex keeps its own list of conversations, so its histories of folders that are gone are shown but never ticked for you. Old Codex releases, the updates the ChatGPT app keeps, older copies of its offline chats and its caches can go.

    Shoo’s OpenAI page. Chips list the ChatGPT and Codex tools Shoo found. Below are cards for the projects Codex remembers and groups of what can go, such as old versions and caches.

    Gemini

    Gemini clutter

    Covers Gemini CLI, Antigravity and its agy command line, the Gemini app, and Gemini Nano, the model Chrome keeps on your Mac.

    When Gemini CLI renamed its project folders in version 0.29 it left the old ones behind, and Shoo offers those once the new ones exist. Gemini Nano is listed but never ticked, since Chrome downloads it again.

    Shoo’s Gemini page. Chips list the Gemini and Antigravity tools Shoo found and Gemini Nano in Chrome. Below are cards for the projects Gemini remembers and groups of what can go.

    Cursor

    Cursor clutter

    Covers the Cursor editor and Cursor CLI.

    Cursor keeps every chat in one database with your sign-in. A cleanup never moves it, only an older backup copy of it over 50 MB, and once it passes a gigabyte Shoo says how to trim it from inside Cursor. Storage for folders that are gone, old agent versions, replaced extensions, caches and old logs can go.

    Shoo’s Cursor page. Cards for the projects Cursor remembers sit above groups of what can go, such as storage for deleted folders and old versions of Cursor’s agent.

    Copilot

    Copilot clutter

    Covers GitHub Copilot in the terminal, in VS Code, VS Code Insiders and VSCodium, and Copilot for Xcode.

    Copilot CLI writes down the folder each session ran in, so Shoo offers only the sessions of folders that are gone, along with the chats VS Code keeps for deleted folders.

    Shoo’s Copilot page. Cards for the projects Copilot remembers sit above groups of what can go, such as sessions and chats for folders that no longer exist.

    Windsurf

    Windsurf clutter

    Covers the Windsurf editor and Codeium.

    Windsurf keeps every chat in one database with your sign-in, and its Cascade conversations are encrypted. A cleanup leaves both alone, apart from an older backup copy of the database over 50 MB. Storage for folders that are gone, caches and old logs can go. Windsurf is now Devin Desktop, so Shoo lists it as Devin.

    Shoo’s Windsurf page, with the editor Shoo found shown under its new name, Devin, and groups of what can go: the history of a deleted project, temporary files and old versions.

    Local models

    Every model from Ollama, LM Studio, Hugging Face, Jan, GPT4All, llama.cpp, Whisper and PyTorch, biggest first, and none is ticked for you.

    Downloads that stopped partway, Ollama layers no model uses and LM Studio engines a newer one replaced are ticked. Paused downloads that Jan or GPT4All can pick up again are listed for you to decide. When two tools downloaded the same model, Shoo finds the copy by its size and fingerprint.

    Shoo’s Local models page. The header reads 9 models take up 21.2 GB and 7 downloads never finished. The first group, Unfinished downloads, has most rows ticked, while an older Hugging Face revision and two paused downloads Jan and GPT4All can resume are left unticked.

    More assistants

    Assistant clutter

    One page for the other 19 assistants Shoo knows, such as Cline and Aider.

    Each is read the way that tool stores its sessions, and the same rules apply: only histories of folders that are gone, and never a tool’s own settings or sign-ins. Instruction files you wrote are ticked only when the folder they’re in looks abandoned. See all 40 AI tools.

    Shoo’s More assistants page. Chips list the assistants Shoo found. Below are the projects they remember and groups of what can go.

    Shoo

    History

    Your last 200 cleanups, newest first, each with a Put back button and every file it moved. ⌘Z puts back the last one. If you’ve emptied the Trash since, History says so instead of offering a Put Back that can’t work.

    Shoo’s History page. Past cleanups, such as an uninstalled app, a round of caches and Claude clutter, are listed with their size, date and a Put back button. One older cleanup is already marked as put back.

    Apps

    Uninstall with proof

    Matching by file name alone is how an app called Arc ends up claiming your Archive folder.

    Shoo reads the app’s identifiers, code signature, launch agents and installer receipts, and scores each file by its strongest piece of evidence, plus 4 points for each other kind it has, up to 8. Before it ticks anything, it asks every other app on your Mac how strongly that app would claim the same file.

    • A claim from another app that’s as strong or stronger keeps a file off the list. One within 14 points keeps it unticked and labelled “Also used by”.
    • If the app is open, its files stay unticked until you quit it.
    • The app moves first, and if it can’t, its files stay with it. Once it’s in the Trash, a file that can’t follow stays in the list, and the rest still go.
    Shoo’s plan for uninstalling Xcode, 4.98 GB in all: the app itself, its Application Support folder, two caches and its preferences, each ticked with a Certain or Likely label and a size, above a Hold to uninstall button for 8 items.
    EvidenceWeightLabel
    Named after the app’s or a helper’s identifier100Certain
    Container metadata macOS wrote says it belongs to the app100Certain
    Launch agent or daemon that runs a program inside the app98Certain
    Shared container declared in the app’s signature96Certain
    Starts with the app’s identifier (com.foo.app.helper)92Certain
    Installed by a .pkg whose receipt belongs to the app90Certain
    WebKit data named after the app’s identifier90Certain
    Crash report whose process is the app’s executable88Certain
    Data folder name the app declares84Likely
    Starts with the developer’s team ID and prefix (ABCDE12345.com.foo.shared)76Likely
    Exact name match66–74Likely
    Whole-word match with a companion word (“Spotify Helper”)70Likely
    Installed by a .pkg whose name matches the app’s, though not the app itself60Possible
    Exact name match among your own files58Possible
    Hidden folder in your home named like the app, which the app doesn’t declare (~/.foo)56Possible
    Name includes the app’s name among other words52Possible
    Named after part of the app’s name, in Application Support, Caches or Logs48Possible

    An exact name match counts 74 when the name has five letters or more, and 66 when it’s shorter.

    • Certain88 and up
    • Likely62 to 87
    • Possibleunder 62

    Certain and Likely files are ticked for you. Possible ones are listed for you to decide.

    AI tools

    Tidies up after AI tools

    Claude Code keeps a history for every folder you’ve worked in, and the history stays after the folder is gone.

    Shoo reads the folder each session recorded, checks whether it still exists, and offers only the histories of projects that are gone. A project that moved is shown as moved and left alone.

    • A project counts as gone only when the disk says it doesn’t exist. If macOS won’t let Shoo look, or the disk isn’t connected, the project is marked Not checked and its history stays.
    • Memory notes are listed on their own and never ticked for you.
    • Live sessions are untouchable. Shoo checks that each recorded process is still the same one, and not a new process that was given the same number.

    Never touched

    In ~/.claude, Shoo never touches settings.json, settings.local.json, CLAUDE.md, agents, commands, skills, plugins, hooks, output-styles, credentials or keybindings, and it never touches ~/.claude.json.

    No downloaded model is ticked for you, apart from ChatGPT Atlas’s on-device model when Atlas isn’t running, and a cleanup never moves a chat database that holds your sign-in, like Cursor’s. Uninstalling the app itself is different: see Is Shoo safe to use?

    Shoo knows 40 AI tools by name

    Each family gets its own page when Shoo finds it.

    Claude
    The Claude app and Claude Code
    OpenAI
    ChatGPT, Codex and Atlas
    Gemini
    Gemini CLI, Antigravity, the Gemini app and Gemini Nano in Chrome
    Cursor
    Cursor
    Copilot
    GitHub Copilot
    Windsurf
    Windsurf and Codeium
    Local models
    Ollama, LM Studio, Hugging Face, Jan, GPT4All, llama.cpp, Whisper and PyTorch
    More assistants
    Cline, Roo Code, Kilo Code, Continue, Qwen Code, Kiro, opencode, Goose, Amp, Droid, Crush, Mistral Vibe, Kimi Code, Grok, Pi, OpenHands, Aider, Zed and Warp

    History

    Nothing is gone until you empty the Trash

    Everything Shoo removes goes to the Trash, and Shoo writes down where each item came from, so History can put a whole cleanup back with one click.

    Right before anything moves, a safety gate checks the path once more, whichever page picked it. It checks the item itself, so a folder goes with everything inside it.

    • History keeps your last 200 cleanups. ⌘Z puts back the last one, and after each cleanup an Undo button stays on screen for nine seconds.
    • If something new is at a file’s old place, Put Back won’t replace it.
    • Shoo notes each file’s identity when it finds it. If a different file is at that path by the time you clean, Shoo leaves it.

    The safety gate

    It checks every path right before it goes to the Trash, and its rules can’t be switched off. A few things it turns away, in its own words:

    PathShoo’s answer
    ~/DocumentsA folder macOS or you rely on
    /etc/hosts, which macOS also writes as /private/etc/hostsInside a protected location
    ~/.SSH/id_ed25519, in any mix of capitalsInside a protected location
    ~/.claude/settings.jsonInside a protected location
    ~/Pictures/Photos Library.photoslibraryA library or keychain
    A file inside Xcode.appPart of an app or plug-in
    A file you locked in FinderLocked
    A whole disk, such as /Volumes/Camera CardA disk of its own
    Shoo’s History page, 1.97 GB shooed so far: an uninstalled Figma, a round of caches and Claude clutter, each with a Put back button, and an older cleanup of leftovers from 3 apps already put back.

    Activity

    What your Mac is doing right now

    Activity shows the processor, memory, energy, disk, network and graphics as live cards, each with the last two minutes as a graph.

    Apps come with their helpers gathered under them, and 64 well-known processes, such as Window Server and kernel_task, say in plain words what they do. A small processor graph sits in the menu bar from the first launch.

    • Processor, memory, energy and disk are shown per app. Network and graphics are shown for the whole Mac; for the network, macOS doesn’t say which app sends what.
    • Pick apps and hold to quit them. They’re asked the way the Quit command asks, so an app with unsaved work can say so, and Reopen brings them back.
    • The menu bar can show any of the six readings, with or without little graphs. With only the menu bar showing, Shoo checks the whole Mac at most every three seconds.

    Sample numbers, in the menu bar’s own size

    Shoo’s Activity page with 20% of the processor in use: live cards for processor, memory, energy, disk, network and graphics, above a stacked chart of what’s keeping the processor busy, shared between macOS, Slack, node, Pixelmator Pro and Xcode.

    The small things

    • Everything goes to the TrashNothing is deleted outright. Your last 200 cleanups are in History, each with a Put back button.
    • Knows what it mustn’t touchSystem folders, keychains, iCloud Drive, Photos libraries and SSH keys are off-limits, however the path is spelled, and AI cleanups never tick a tool’s sign-ins.
    • Drop an app on itDrag an app onto Shoo’s window or its Dock icon, or use Open With in Finder, to open its uninstall plan.
    • Sounds like the MacLooking around is silent, like Finder. Moving things to the Trash plays Finder’s own sound, and something that can’t be done plays your alert sound.
    • Morning sky, starry nightLight mode is a clear morning. Dark mode is a night full of stars.
    • Respects Reduce MotionWith Reduce Motion on, flying rows fade out instead and the particles stay off.
    • Works from the keyboard⌘R looks again, ⌘1 to ⌘9 jump between pages, ⌘⌫ shoos without the hold, and ⌘Z puts back the last cleanup.
    • Any disk you plug inSpace maps any local disk from the toolbar, and stops reading one the moment you eject it.

    Questions

    Is Shoo safe to use?

    Shoo only moves things to the Trash. It never deletes anything itself.

    It won’t move system folders, keychains, iCloud Drive, your Mail, Messages and Photos libraries or SSH keys, and it checks each item again right before moving it. A folder you pick yourself on the Space page goes whole, whatever is inside it.

    Its AI tool cleanups never tick a tool’s own settings, sign-ins or current chats. Uninstalling an app is different: Shoo also offers the app’s own data folder, which holds its sign-in and chats, and you can untick it.

    Can I undo a cleanup?

    Yes. History keeps your last 200 cleanups, and Put Back returns everything to where it was, as long as nothing else has taken its place. ⌘Z undoes the last one. Once you empty the Trash, those files are gone for good.

    How does Shoo know which files belong to an app?

    It reads the app’s bundle identifiers, code signature, launch agents and installer receipts, and weighs each piece of evidence. Strong matches are ticked for you. Weak ones, like a folder that only contains part of the app’s name, are listed but left unticked. See the weights.

    Which AI tools does it clean up after?

    40 of them, including Claude Code, ChatGPT, Codex, Gemini CLI, Cursor, GitHub Copilot, Ollama and LM Studio. The full list is under Tidies up after AI tools.

    It finds histories of projects that no longer exist, files left by ended sessions, old versions, older copies of chat databases, unfinished downloads, duplicate models, caches and logs. It never ticks a tool’s own settings, sign-ins or current chats, and the only model it ticks for you is ChatGPT Atlas’s on-device model, when Atlas isn’t running.

    It also finds AI files left in folders that aren’t projects, such as a CLAUDE.md, AGENTS.md or .mcp.json, and ticks them when they look abandoned, for example when a folder holds nothing else and hasn’t changed in two weeks. Check those before you shoo them.

    Does it clear developer caches?

    Yes: Xcode’s DerivedData, module caches, old device support files, Simulator caches and SwiftUI previews, plus caches from SwiftPM, CocoaPods, Carthage, Homebrew, npm, Yarn, pnpm, Bun, pip, uv, Go, Gradle, Cargo, node-gyp and TypeScript.

    Playwright’s browsers take a while to download again, and Xcode archives are builds you kept for distribution, so both are listed but left unticked.

    Does Shoo need Full Disk Access?

    No. Without it, Shoo doesn’t open the places macOS guards, such as other apps’ containers, iCloud Drive and photo libraries. They show as locked, with no size, and Shoo doesn’t estimate one.

    With Full Disk Access it measures them too, and it can check projects in Desktop and Documents without asking for each folder.

    Does Shoo send any data anywhere?

    No. It makes no network connections and has no analytics or crash reporting.

    Which Macs does it run on?

    Macs with Apple silicon running macOS 26 or later.

    When can I get it?

    Shoo isn’t out yet. Email me and I’ll let you know when it is.

    Under the hood

    Shoo is a native Mac app with its scanning engine in a separate Swift package. It works entirely on your Mac and never goes online.

    Technical details
    Written in
    Swift 6, SwiftUI and AppKit
    Runs on
    Macs with Apple silicon, macOS 26 or later
    Space map
    Folders are read on 2 to 8 threads at a time with getattrlistbulk, then drawn as a squarified treemap up to three levels deep. Sizes are what’s allocated on disk, counted the way du counts them, and available space matches Finder, purgeable space included.
    Cleanup sizes
    What each finding takes up on disk, measured with fts. Hard links count once, and the count never crosses onto another disk.
    Finding an app’s files
    Bundle identifiers, code signatures read with the Security framework, launch agents and installer receipts from pkgutil, each weighed as evidence
    Moving to the Trash
    FileManager.trashItem. Right before moving, Shoo checks that each item is still the file it scanned. If macOS won’t let it move something, Finder moves it and asks for your password.
    AI tools
    Their chat databases are opened read-only. A cleanup never moves the one a tool is using, only older copies and those of folders that are gone. Duplicate models are found by size, then by digest or a SHA-256 of their first and last megabyte.
    Never touched
    System folders, keychains, iCloud Drive, the Mail, Messages and Photos libraries and ~/.ssh, however the path is spelled. AI cleanups never tick a tool’s own settings, sign-ins or current chats, but uninstalling an app offers its data folder too, and a folder you pick on the Space page goes whole.
    Permissions
    Full Disk Access is optional. Automation lets Shoo ask Finder to move what macOS won’t let it move itself, and macOS asks about Removable Volumes the first time you map a disk you plugged in.
    Security
    Hardened Runtime. It runs outside the App Sandbox, since it needs to see the whole disk.
    Network
    None. No analytics and no crash reporting.
    Third-party code
    None

    Get Shoo when it’s out

    Send me an email and I’ll write back once, when it’s ready.

    Needs
    macOS 26 or later on a Mac with Apple silicon
    Full Disk Access
    Optional. Without it, a few places show as locked.
    Deletes
    Nothing. It all goes to the Trash.
    Goes online
    Never
    Email me when it’s out