Safeguard
Developer Tools•

How do you list every command line tool you installed globally?

A checklist of commands to list globally installed tools from Homebrew, npm, pip, Cargo, uv and winget, so you can review what runs as your own user.

Safeguard Security Team
3 min read

Each package manager keeps its own list, so you run one command per ecosystem: brew for Homebrew, npm with the global flag, pip list, cargo install with the list option, uv tool list and winget list. Together they give you a first inventory of tools that run with your privileges.

Why one list does not exist

There is no single place that knows everything installed on a laptop. A tool can arrive through a system package manager, a language ecosystem, a vendor installer, or a script that downloads a binary. Each leaves its own record, or none.

That fragmentation is why an incident is so painful. Someone announces that a package was compromised, and the first question, "do we have it", takes hours to answer.

Commands to run

EcosystemWhat to runNotes
Homebrewbrew list, or brew bundle dump for a fileSee the Brewfile post
npmnpm ls with the global flag, and npm prefix with the global flag for the foldernpm documents the global flag for installs and updates
pippython -m pip listRun it for each interpreter you use
Cargocargo install with the list optionCargo's docs say this command manages its set of installed binary crates
uvuv tool listLists tools installed with uv tool install
wingetwinget listWindows only

Where a command's exact flags matter, check the tool's own help on your version.

Where Cargo puts binaries

The Cargo book says executables go into the installation root's bin folder, and gives the order used to find the root: the root option, the CARGO_INSTALL_ROOT variable, the install.root config value, the CARGO_HOME variable, then $HOME/.cargo. Knowing that tells you which folder to look in.

What to record

For each tool, write:

  • Name and version.
  • Where it came from, including the registry or source.
  • Why you have it.
  • When you last updated it.

A plain text file works. A table in a private repository works better because changes can be reviewed.

What to do with the result

  1. Remove tools you have not used in months.
  2. Move rarely used tools to run-on-demand patterns, such as the one in uvx or uv tool install.
  3. Check update commands for the rest. See updating global npm packages and brew update, outdated and upgrade.
  4. Put the schedule in a calendar so it happens.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at the fields the inventory keeps for each component and copy them into your own laptop list.

Quick check

Does one command list everything on my laptop?

No. Each package manager keeps its own record, and manual installs may have none.

How often should I review the list?

Quarterly is a workable rhythm for most people, with a quick look after any security news about a tool you use.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.