Search and manage your brew casks and formulae from Raycast.
brew upgrade would do), so running immediately upgrades everything. A pin is a lock, matching brew's own behavior: a pinned package cannot be selected, and including one means unpinning it first — the primary action on a pinned row does both in one step. Formulae and casks behave identically. Preview Upgrades (⌘⇧I) runs brew upgrade --dry-run on demand and lists every package with its version transition, download size, running total, and brew's warnings; Preview Upgrade (⌘⌥I) does the same for the one package on the row, and is offered on outdated packages in Show Installed and Search too.brew vulns, with per-advisory detail and an Upgrade action where the formula is also outdated (needs Homebrew 7)brew doctor report with every recommended fix, and run them all with one confirmation (Fix All) (needs Homebrew 7)brew install --adopt so they upgrade with everything else. Matches are grouped by what vouches for them: Ready to Adopt (the cask's bundle identifier matches, or Homebrew will compare the app itself), Likely Adoptable (name and version agree, nothing else checks), and Unlikely Adoptions; an app Homebrew would refuse to adopt as it stands is listed under Can't Adopt. Anything not ready goes through Preview Adoption (⌘⇧I) first. Ignore a wrong match with ⌘⇧H; the filter above the list shows ignored apps and restores themuser/repo/name into Search installs from a tap you have not added yetThis extension requires Homebrew 6.0 or later.
HOMEBREW_USE_INTERNAL_API, and setting it makes brew
abort outright for anyone running with HOMEBREW_DEVELOPER.--no-quarantine and --quarantine, deprecated in 5.x, are gone in 6.For more details, see the Homebrew 6.0 release notes.
This extension uses several optimizations to provide a fast experience:
Selecting a package shows its install counts (30 / 90 / 365 days) and build errors, taken from the formulae.brew.sh analytics API. Only the selected package is fetched — about 5 KB per row you land on, and nothing at all for the rest of the list.
Sort by Popularity (⇧⌘P in Search) is different: ranking every result requires Homebrew's bulk 30-day rankings, about 2.6 MB for formulae and casks combined. That download happens the first time you enable the sort, is cached on disk, and is never fetched if you don't use the sort. While it is on, each row also shows its 30-day install count.
Homebrew's analytics are anonymous and aggregate, and cover macOS installs; a package with no reported installs simply shows no statistics.
Clean files and packages from the cache that are older than 120 days
Clear the cached Formulae, Casks, and installed packages files
List installed brew formulae & casks
Search brew formulae & casks
Review available upgrades, choose which to apply, and run it
Check installed formulae for known vulnerabilities (Homebrew 7)
Check your Homebrew installation for problems and fix them
Find applications already on your Mac that Homebrew can manage, and adopt them into a cask.
Upgrade brew formulae & casks
Start, stop & restart Homebrew services
Add, trust & remove third-party Homebrew taps, and explore what they provide
Control Homebrew services from the menu bar
user/repo (or user/repo <url> for a repository not named homebrew-…), and remove it, or on Homebrew 7 trust and stop trusting it, from any of its rowsbrew commands gets one row naming them; ↵ opens its repositoryuser/repo/name, or a whole line from a project's install page, and offers it as a row: one confirmation adds the tap, trusts that one package and installs itbrew command; Adopt names the folder it acts onbrew doctor report with every recommended fix, and runs them all with one confirmation (Fix All). Needs Homebrew 7.0brew vulns (Homebrew 7), with per-advisory detail, a Show Details view that expands every advisory in full, and an Upgrade action where the formula is also outdatedbinary, man pages, shell completions) gained Link Cask (⌘L) and Unlink Cask (⌘⇧L): each runs brew --dry-run first and lists the exact symlinks it would create or remove before you confirm. A cask that is already linked says so instead of running anything. Needs Homebrew 7.0brew install --dry-run would install or upgrade, with Install one keystroke awaybrew upgrade would actually do: every package with its version transition, its download size, the total to download, and any warning brew raises. It runs brew upgrade --dry-run only when you ask for it — the manifest lookups take a while on a long listbrew upgrade <package> alone would do: its version transition, download size and any warning, with Upgrade one keystroke away. Only offered where there is something to upgradeUpgrade is now the primary action for the selected formula or cask (nhojb)Upgrade All is the secondary action (if available) (nhojb)⌘⇧X shortcut (nhojb)⌘⇧A shortcut (nhojb)gcloud-cli needs python@3.14, for one)brew list --versions, added in 5.0 support). It had no caller and its cache read duplicated the main loader; installed packages already paint from cacheHOMEBREW_DEVELOPERbrew upgrade would do. Every per-package action the view offered (single upgrade, pin, copy/terminal commands, uninstall) remains on each row, and the command still answers to "outdated" in searchbrew update are not upgraded unreviewed; they remain visible — and selectable for a follow-up run — in the list afterwardsbrew update (and waits for it to release Homebrew's update lock) instead of asking the user to try again in a momentOutdatedCask.installed_versions type: brew outdated --json=v2 returns an array for casks, not a stringbrew update — its freshness test watched only local install state.brew upgrade refuses and Upgrade All skips, so keeping them out of the actionable list says so without the row having to.brew upgrade refuses a pinned package outright, so the action surfaced its error; it now skips with an explanation, matching Upgrade All which already skipped them.installed → available when they differ. It previously showed the available version labeled "installed", so an outdated package read as current.@raycast/api 2.x, and to a brace-expansion release without the denial-of-service advisory (GHSA-rgw5-rvv9-x895).brew install --adopt to reclaim an externally-installed package (e.g. installed via a .dmg or another package manager) into Homebrew so it is covered by brew upgrade.Outdated tag — formulae and casks both. The list component is shared, so the tag also appears for installed-and-outdated packages in Search resultsMaps, which serialize to {}, so the cached value was emptied on write and then re-served empty forever. The serializable form is cached now and the lookups are rebuilt on read; cache entries written by earlier versions are discarded rather than trusted.stderr/stdout output available through the toast's Copy Logs action for debugging.--ignore-pinned upgrade flag.Warp as an option for terminalcleanup commandQuarantine preference to enable or disable quarantine of files downloaded by brew--ignore-pinned flag to brew upgrade command to avoid problems on systems that have pinned packages installedoutdated commandupgrade command