Updating
loadout update --check # is there a newer release?loadout update # install itThe binary and your shell are separate
Section titled “The binary and your shell are separate”Upgrading loadout does not update your shell.
The generated file is output, and loadout does not rewrite it behind your back — you might have deliberately not applied something. So after any upgrade:
loadout applyRelease notes state this explicitly whenever the shipped catalog changed. That part is computed rather than remembered: the release process diffs the golden files against the previous tag, and when the generated shell changed, the notes say so. Without that line an upgrade looks like it did nothing.
It will not overwrite what it does not own
Section titled “It will not overwrite what it does not own”loadout update only replaces the binary when loadout owns the file. Otherwise it prints the right command instead:
| Installed with | Update with |
|---|---|
| The install script | loadout update |
| Homebrew | brew upgrade loadout |
go install | go install ...@latest |
Overwriting a Homebrew-managed file behind brew’s back leaves it reporting a version it never installed, and the next brew upgrade will happily overwrite your update. Refusing is the correct behaviour, and the message names which tool owns the file.
How the download is handled
Section titled “How the download is handled”- HTTPS on every redirect hop, not only the first URL.
- The published checksum is verified before anything is installed.
- A release publishing no checksum is refused outright rather than installed unverified.
- The replacement is a rename, so an interrupted update cannot leave a broken binary on your
PATH.
loadout update --check # report only, install nothingloadout update --force # install even when versions cannot be comparedloadout update --release v0.2.1 # a specific versionloadout update --base-url https://... # a mirror--base-url also reads LOADOUT_BASE_URL, and --release reads LOADOUT_VERSION.
When versions cannot be compared
Section titled “When versions cannot be compared”loadout accepts vMAJOR.MINOR.PATCH and nothing else. A development build, a pre-release suffix or a commit SHA reports as not comparable rather than being coerced into an ordering that might be wrong.
That is what --force is for: it installs the latest release without needing the comparison to succeed. A build from go install at a commit is the usual reason to reach for it.
Checking without installing
Section titled “Checking without installing”$ loadout update --checkinstalled: v0.2.0latest: v0.2.1installed via homebrew
An update is available: v0.2.0 -> v0.2.1It names the install method, so you know which command to run before you run the wrong one.
After updating
Section titled “After updating”loadout versionloadout apply # the step that actually reaches your shellloadout doctor