Today, I’d like to announce Homebrew 4.6.0. The most significant changes since 4.5.0 are opt-in concurrent downloads with HOMEBREW_DOWNLOAD_CONCURRENCY, preliminary macOS 26 (Tahoe) support and a built-in brew mcp-server.
Major changes and deprecations since 4.5.0:
- HOMEBREW_DOWNLOAD_CONCURRENCY is a new environment variable that allows opt-in to Homebrew’s new download concurrency support. We recommend using HOMEBREW_DOWNLOAD_CONCURRENCY=auto as a starting point. This will become the default behaviour in a later version of Homebrew (with an opt-out).
- Homebrew provides preliminary macOS 26 (Tahoe) support. It will be officially supported after Apple’s public release.
- brew mcp-server is an MCP server for Homebrew and is available in Homebrew by default.
- Miscellaneous additional code deprecations, disables and removals scheduled for Homebrew 4.6.
Other changes since 4.5.0 I’d like to highlight are the following:
- All repositories in the Homebrew organisation, including e.g. Homebrew/brew, Homebrew/homebrew-cask and Homebrew/homebrew-core, now use main as their default branch.
- Homebrew prohibits non-ASCII characters in URLs.
- Homebrew now allows users in Tier 2/3 to file some types of issues.
- Homebrew’s .pkg and official/shell installers will now add Homebrew to the default PATH if possible.
- Third-party Homebrew GitHub Packages mirrors that do not require authentication now work as expected.
- HOMEBREW_FORBID_CASKS is a new environment variable that forbids all casks.
- HOMEBREW_VERIFY_ATTESTATIONS must be explicitly set again, even for HOMEBREW_DEVELOPERs.
- brew no longer copies across zeroed environment-variable values.
- brew resets the sudo timestamp later so it’s not done by e.g. brew --prefix or brew shellenv but remains done by e.g. brew install.
- brew --debug output is a bit quieter by default.
- brew bundle no longer uses the brew tap --force-auto-update option as it was removed.
- brew bundle better handles cask renames for brew bundle and brew bundle dump.
- brew bundle refers to “formulae” rather than “brews” for consistency with other parts of Homebrew.
- brew bundle add will create a Brewfile if it doesn’t exist.
- brew cleanup doesn’t warn when loading a renamed cask.
- brew install outputs a better error message when there are tap conflicts.
- brew install --ask will also prompt before installing casks.
- brew uninstall won’t suggest deleting configuration files that belong to other formulae.
- brew update displays descriptions for new formulae and casks.
- brew update will migrate taps from master to main when necessary.
- brew pin returns a non-zero exit code if pinning formulae that are not installed.
- brew sh and brew bundle sh use more of the user’s configuration but provide a custom prompt.
- brew audit ensures that official formula and cask names don’t conflict.
- brew deps outputs a warning when runtime dependencies are not used (so results may be inconsistent or confusing).
- env_script_all_files in formulae won’t overwrite existing files.
Finally:
- Homebrew is now on Bluesky.
- Homebrew accepts donations through GitHub Sponsors and still accepts donations through Patreon. If you can afford it, please consider donating. If you’d rather not use GitHub Sponsors or Patreon (our preferred donation methods), check out the other ways to donate in our README.
Thanks to all our hard-working maintainers, contributors, sponsors and supporters for getting us this far.
.png)


