Guide

How to update Homebrew casks on Mac

Check what is outdated, update one app or all eligible casks, and find out why Homebrew skips an app. Start with the commands below.

Updated September 7, 2026 · ~5 min read

macCurrent update review screen

Update one app or all Homebrew casks

Save your work before installing updates. First refresh Homebrew and review the apps it manages:

brew update
brew list --cask
brew outdated --cask

For one installed app, replace rectangle with its token from brew list --cask. Inspect the proposed version before upgrading:

brew info --cask rectangle
brew upgrade --cask rectangle

To upgrade all eligible outdated casks instead, use:

brew upgrade --cask

brew update refreshes Homebrew and its package definitions; brew upgrade installs newer packages. Adding --cask limits the upgrade to casks. See the Homebrew command reference for current options.

Why an app may be missing from brew outdated

Check that the app appears in brew list --cask, then inspect brew info --cask for its token. A vendor release may not have reached the cask yet. Self-updating apps and unversioned downloads also need different checks.

Current Homebrew can compare a readable app bundle with a versioned auto_updates cask. It may include an older app in a normal upgrade; when it cannot compare reliably, it skips that case. version :latest has no comparable version and is excluded from ordinary upgrades. See Homebrew’s explanation of self-updating apps.

To inspect the broader set before deciding what to install:

brew outdated --cask --greedy

The --greedy flags broaden eligibility. They are not a reason to reinstall every app or bypass a warning. Check the app’s own version and release notes when the result is surprising.

Choose a narrow --greedy option

OptionAdditional candidates to consider
--greedy-auto-updatesSelf-updating casks normally skipped
--greedy-latestCasks using version :latest
--greedyBoth groups

After reviewing the candidate list, you can use the selected option with brew upgrade --cask. For :latest casks, current Homebrew can compare a newly downloaded artifact with the recorded checksum and skip an unchanged download. --greedy does not mean every :latest app is always reinstalled.

Hold a cask before a major upgrade

Current Homebrew supports cask pinning. Pin an installed cask to keep brew upgrade from changing it, and unpin it when you are ready:

brew pin --cask rectangle

When you are ready to allow Homebrew upgrades again, remove the pin:

brew unpin --cask rectangle

Pinning does not stop the app’s own updater. Older Homebrew installations may differ; check brew pin --help. A versioned cask can track a particular release stream when the publisher and cask maintainers provide one.

Before a major upgrade, protect documents and settings as well as the app. A copied bundle cannot undo every data migration or installer change. See how to back up a Mac app before updating.

Troubleshoot an update that will not install

What you seeWhat to check next
App is not listedUse brew list --cask. A matching catalog name does not make a manual or App Store installation Homebrew-managed.
Cask is pinnedReview why you held it before using brew unpin --cask with that token.
Cask is disabled or deprecatedRead brew info --cask and the vendor’s notice; use the supported route.
App was moved or renamedFind the installed copy and the expected location before creating another copy.
Version does not match the vendor websiteCompare release channel, architecture and the cask’s version; allow for catalog delay.
Checksum or signing check failsStop and investigate the source or use the publisher’s updater. Do not disable verification to complete the update.

Adopting a manual install is a separate migration choice. Homebrew’s --adopt requires an existing artifact identical to the one it would install; a matching version label alone is insufficient. Keep the vendor-managed route when ownership is unclear.

Casks, formulae and the rest of your Mac

Casks commonly distribute GUI apps and other prebuilt artifacts; formulae manage command-line software and libraries. Casks can also run installers, so an upgrade is not always a simple app-bundle replacement. Homebrew does not cover every App Store or manually installed app.

macCurrent puts Homebrew-managed apps alongside other update sources and shows when an app needs its own updater or a manual handoff. Use the update-source guide to map those boundaries, or follow the installation steps to review your own library.

Frequently asked questions

What is the command to update all Homebrew casks?

Use brew upgrade --cask after reviewing brew outdated --cask. Run brew update first to refresh package definitions. Only eligible Homebrew-managed casks are included.

How do I update just one Homebrew app?

Use brew upgrade --cask followed by the installed cask token, for example rectangle. Inspect brew info --cask for that token first.

Why does brew update not update my apps?

brew update refreshes Homebrew and package definitions. brew upgrade installs package updates; use --cask to limit it to casks.

Why is a self-updating app skipped?

The installed app may already be current, or Homebrew may lack enough comparable version information. Review the wider candidate list with brew outdated --cask --greedy before choosing an update.

Can I pin a Homebrew cask?

Yes, current Homebrew supports brew pin --cask. This holds Homebrew upgrades, but does not control updates performed by the app itself.

Does Homebrew update App Store apps?

An App Store installation should use the App Store. The presence of a similarly named Homebrew cask does not establish ownership of that installed copy.

Related macCurrent guides

Keep every Mac app current

One reviewable sweep across the App Store, Homebrew, Sparkle, vendor updaters, and direct downloads — free during the release-candidate period.