Quick guide
The short answer
A cask is Homebrew's installation recipe for a Mac app or other ready-made software. Run brew update to refresh Homebrew, then brew outdated --cask to check for updates. Use brew upgrade --cask for the eligible outdated apps, or name one app to update it on its own.
Check your installed apps first
Save your work. Open Terminal and run these commands:
brew update
brew list --cask
brew outdated --cask
The first command refreshes Homebrew. The second lists the casks it manages. The third shows which of those have updates.
Update one app or all eligible apps
For one app, use its name from brew list --cask. This example checks Rectangle before updating it:
brew info --cask rectangle
brew upgrade --cask rectangle
To update all eligible outdated casks instead, run:
brew upgrade --cask
brew update refreshes the package list. brew upgrade installs updates. The --cask option limits the command to casks.
Why Homebrew may skip an app
First check that the app appears in brew list --cask. An app you installed from the App Store or a website is not automatically managed by Homebrew.
Some apps update themselves. Homebrew can check their installed version when it has enough information. It skips cases it cannot compare reliably. Apps marked version :latest need a separate check too.
To see the wider list before choosing an update, run:
brew outdated --cask --greedy
Do not use a wider list as a reason to ignore warnings. Check the installed version and the developer's release notes if a result looks wrong.
What the --greedy options mean
| Option | What it includes |
|---|---|
| --greedy-auto-updates | Self-updating apps normally skipped |
| --greedy-latest | Casks marked version :latest |
| --greedy | Both groups |
You can use these options with brew upgrade --cask after checking the list. For a :latest cask, Homebrew can compare the new download with its saved checksum. An unchanged file may be skipped, so --greedy does not always reinstall it.
See Homebrew's explanation for more detail.
Pause an upgrade
If you need to keep the current version for a project, pin the cask:
brew pin --cask rectangle
When you are ready for Homebrew to update it again, remove the pin:
brew unpin --cask rectangle
Pinning stops Homebrew upgrades, not the app's own updater. Older Homebrew versions can differ; check brew pin --help. Back up your files before a major app update.
If an update fails
| Problem | What to do |
|---|---|
| App is missing from the list | Check brew list --cask. Use the app's original updater if Homebrew does not manage it. |
| App is pinned | Check why you paused it before removing the pin. |
| Cask is disabled or deprecated | Read brew info --cask and the developer's notice. |
| Version differs from the website | Check the release channel and Mac processor. Homebrew's listing may be behind the developer's release. |
| App was moved | Find the installed copy before creating another one. |
| Checksum or signature check fails | Stop. Ask the developer or Homebrew maintainers for help. Do not turn off the check. |
Moving a website-installed app into Homebrew is a separate choice. The --adopt option needs an identical copy of the app, not just the same version label.
What about the rest of your apps?
Homebrew does not update every app on your Mac. App Store apps and other downloads still need their own updater.
Casks can run installers, not just replace an app. Formulae are Homebrew recipes for command-line software and libraries. See the Homebrew command reference for the full options.
macCurrent finds and installs supported updates for Homebrew apps and apps from other sources. Homebrew updates still use Homebrew's update process. Read where Mac app updates come from to see the difference.
Frequently asked questions
Which command updates all Homebrew casks?
Run brew update, check brew outdated --cask, then use brew upgrade --cask. It includes only eligible casks managed by Homebrew.
How do I update one app?
Use brew upgrade --cask followed by the app's cask name, such as rectangle. Check brew info --cask for that name first.
Why does brew update not install app updates?
It refreshes Homebrew and its package list. brew upgrade installs the updates.
Can I pause a Homebrew app update?
Yes. Use brew pin --cask to hold it and brew unpin --cask to allow upgrades again. This does not stop the app's own updater.
Can Homebrew update my App Store apps?
An App Store copy should use the App Store. A similarly named Homebrew cask does not mean Homebrew manages that installed copy.