A Homebrew pin is an upgrade hold on an installed formula or cask. Removing that hold is useful after compatibility testing, a temporary rollback, or a blocked release window has ended and the package should rejoin normal upgrade runs.

Unpinning does not remove package files or install a newer version by itself. It only deletes the hold state that makes brew upgrade skip the package, so the next targeted or general upgrade can consider the available Homebrew release.

Confirm the token against the pinned list before changing it, especially where a formula and cask have similar names. Homebrew accepts --formula and --cask to force the package type, and a targeted pinned-list check that returns no output after unpinning means the hold is gone.

Steps to unpin a Homebrew package:

  1. Check that the target package is pinned.
    $ brew list --pinned hello
    hello

    Replace hello with the formula or cask token. If the command prints nothing, the package is not currently pinned.
    Related: How to check Homebrew package information

  2. Unpin the package.
    $ brew unpin hello

    Use brew unpin --formula hello or brew unpin --cask visual-studio-code when the package type should be explicit.

  3. Confirm that the target package no longer has a pin.
    $ brew list --pinned hello

    No output from the targeted pinned-list check means hello is no longer pinned. If brew list --pinned still shows other packages, only those remaining names are still held.

  4. Run a targeted upgrade when the package is ready to move again.
    $ brew upgrade hello
    Warning: hello 2.12.3 already installed

    If a newer version exists, Homebrew upgrades the package. If the installed version is already the newest release Homebrew can install, this warning is normal.
    Related: How to upgrade Homebrew packages