---
title: "Homebrew: outdated, unused and safe to remove. — iSurge"
description: "brew outdated, leaves, uses and cleanup answer most of it. One setting stops brew uninstall from taking more than you asked for. Then iSurge’s way."
url: https://isurgemac.com/blog/homebrew-on-mac/
---

[BLOG](https://isurgemac.com/blog/)

# Homebrew: outdated, unused and safe to remove. The commands that answer it, and what iSurge adds.

brew outdated, leaves, uses and cleanup answer most of it. One setting stops brew uninstall from taking more than you asked for. Then iSurge’s way.

By Ruthran Baskar · 27 October 2026 · 6 min read

IN SHORT

- `brew update`, then `brew outdated`, lists what has a newer version.

- `brew leaves` lists what you installed yourself; `brew uses --installed` says what needs a package.

- `brew cleanup` deletes old versions and downloads. Add `--dry-run` to see them first.

- `brew uninstall` also removes dependencies nothing needs any more. `HOMEBREW_NO_AUTOREMOVE=1` stops that.

Homebrew is easy to start with and easy to lose track of. A year in, you have tools you don’t remember installing, some of them out of date, and old versions taking room on your disk. Homebrew can tell you all of this itself. Here are the commands, one gotcha that removes more than you asked, and then how iSurge shows the same things on one page.

## How do I see which Homebrew packages are outdated?

First let Homebrew fetch its latest lists, then ask what is behind:

`brew update brew outdated`

Each line is a package, the version you have and the newer one. Apps that update themselves, like most browsers, are left out. To see those too:

`brew outdated --greedy`

Update one package with `brew upgrade node`, or everything with `brew upgrade`. If a project needs to stay on a version, pin it first, and `brew upgrade` leaves it alone:

`brew pin node`

One thing to know: a program that is already running keeps using the old version until you restart it. A dev server started this morning still runs on yesterday’s node after the upgrade.

## What is each package for?

Most of what Homebrew installed, you didn’t ask for. It came along because something else needed it. To list only the formulae nothing else depends on, which are mostly the ones you installed yourself:

`brew leaves`

To see what each of them is, in one line each:

`brew desc $(brew leaves)`

And for any package, to see which of your installed packages need it:

`brew uses --installed openssl@3`

If that prints nothing, no other Homebrew package needs it. That doesn’t mean nothing on your Mac does: Homebrew only knows about its own packages, not a tool you built yourself or a Python environment that links to it. `brew info` gives the rest: its description, its home page, what it depends on and when it was installed.

## What is Homebrew taking up on my disk?

Command-line tools live in Homebrew’s Cellar, one folder per formula. This lists them by size, the biggest last:

`du -sh "$(brew --cellar)"/* | sort -h`

Apps installed with `brew install --cask` live in Applications, so they don’t show up there. Homebrew also keeps old versions after an upgrade, and the downloads it installed from. To see what it would delete, without deleting anything:

`brew cleanup --dry-run`

Then run `brew cleanup` to do it. What is installed now stays. `brew cleanup --prune=all` also deletes every download it has kept, which only means it downloads again next time.

## How do I remove a Homebrew package safely?

Remove one with `brew uninstall`. If another installed package needs it, Homebrew refuses and says which one, which is a good first check. For an app, `--zap` also removes its settings and data, from the list in its cask, so only use it when you mean to.

Here is the gotcha. Homebrew now also removes, by default, every dependency that nothing installed needs any more. You ask it to remove one package, and others go with it. While testing iSurge, `brew uninstall podman` also removed openssl@3: nothing in Homebrew needed it since openssl@4 came in. `brew cleanup` does the same.

To remove only what you name, set this before the command:

`HOMEBREW_NO_AUTOREMOVE=1 brew uninstall podman`

To make it the rule, add `export HOMEBREW_NO_AUTOREMOVE=1` to your `~/.zshrc`. You can still clear the leftovers when you choose, after looking at them first:

`brew autoremove --dry-run brew autoremove`

DEV

## Homebrew, on one page in iSurge

iSurge has a Dev page in its window, and Homebrew is one of its tabs. It runs the same commands for you, reads Homebrew’s own answers, and adds what Homebrew doesn’t know: when each tool last ran, and which of your projects runs on it. Four cards at the top: Installed, Not used lately, Updates and Could be cleared.

Dev › Homebrew, with sample data.

- **Installed** lists every tool and app with its version, when it last ran, which of your projects run on it (Runs for) and its size. A package that came along for another says “Needed by” and how many.

- **Not used lately** lists the tools nothing has run in 3 months (6, if you choose in Settings › Dev). The last run comes from macOS, which notes each time a program runs, so it’s known from the first day, not only from when iSurge arrived.

- **Updates** says which updates touch your projects: “storefront-web and mobile run on it. They keep running the old one until you restart them.” Update or Update All runs `brew upgrade`; pinned packages stay as they are. It checks when you open the tab, then hourly.

- **Clean up** shows what `brew cleanup` and `brew autoremove` would delete, with sizes, before you press Clean Up. Its Health check shows what `brew doctor` says.

One search along the top finds what you have and, from Homebrew’s own lists on your Mac, what you could install. Nothing is sent as you type.

DEV

## Remove that takes only what you see

Remove opens a sheet before anything happens. Under “Before it goes” it says what needs the package (then Homebrew won’t remove it, and neither will iSurge), what runs on it right now and when it last ran. If a check warns, the button says Remove Anyway.

The dependencies only that package needed are listed by name under a heading such as “Only node needs these”, ticked, so you can untick them. For an app, “Also remove its settings and data” shows its cask’s list first and stays off until you tick it. Then the sheet shows the exact command Homebrew runs, with Copy, and Homebrew’s output appears line by line as it works.

Every command runs with `HOMEBREW_NO_AUTOREMOVE=1`, so nothing goes that the sheet didn’t name. iSurge never uses sudo, `--force` or `--ignore-dependencies`. If Homebrew needs your password, iSurge shows the command to paste into Terminal instead.

DISK

## Homebrew in Disk too

Disk is iSurge’s page for what takes the space. In Installed apps, an app Homebrew installed is marked Homebrew, and right-click › Uninstall with Homebrew opens the same Remove sheet, so Homebrew doesn’t go on listing an app that’s gone. Could be cleared counts Homebrew’s old versions and downloads with your other leftovers. And Updates lists apps Homebrew installed next to the ones with their own updates and the App Store’s.

Disk › Updates: Blender’s update comes from Homebrew.

All of it is read on your Mac. iSurge sends nothing; Homebrew itself goes online when it installs or updates. The [privacy page](https://isurgemac.com/privacy/) says what each part of iSurge reads. If you wonder how iSurge turns hundreds of processes into the names of apps and projects, [that’s its own post](https://isurgemac.com/blog/a-thousand-processes/).

## Questions

### Is it safe to run brew cleanup?

Yes, for what you have now: it deletes old versions and downloads, not the versions installed. But it can also remove dependencies nothing needs any more, so run it with `HOMEBREW_NO_AUTOREMOVE=1` if you want only the old versions gone.

### Why did brew uninstall remove other packages?

Homebrew removes dependencies that nothing installed needs after the uninstall. Set `HOMEBREW_NO_AUTOREMOVE=1` to stop it, and check `brew autoremove --dry-run` before clearing them yourself.

### How do I put back something I removed?

`brew install` it again, with `--cask` for an app. A removed app is deleted for good, not moved to the Trash, so its settings come back only if you didn’t zap them.

Dev, with Homebrew, is in iSurge 0.4. See [the price](https://isurgemac.com/pricing/) and [everything new in 0.4](https://isurgemac.com/changelog/).

## Get iSurge

Pay once, yours for good.

[Buy iSurge](https://isurgemac.com/pricing/)

Already have it? [Download](https://isurgemac.com/download)

Requires a Mac with Apple silicon (M1 or later) and macOS 15 Sequoia or later. Notch features need a MacBook with a notch; everything else works on any supported Mac.
