Update
Keep the crm CLI current.
Check for a newer release
crm self-update --check
Reports your running version, the latest published version, and whether an update is available — without changing anything. Works on every install type.
Upgrade
crm self-update
self-update is the single, install-method-aware upgrade entry point. It detects
how crm was installed and does the right thing:
- Install-script binary (frozen) — downloads the platform archive, verifies it
against the published
SHA256SUMS, and swaps the bundle in place. A checksum mismatch or download failure leaves your install untouched. - uv tool / pipx — force-reinstalls from the latest release tag
(
uv tool install --force git+https://github.com/Gharib89/crm@vX.Y.Z, or the pipx equivalent). Becausecrmis a git source, a forced reinstall is what reliably fetches the new version — a plainuv tool upgradecan no-op on the pinned commit. On a terminalself-updateprints the exact command and asks before running it; non-interactively (--jsonor no TTY) it runs only with--yes, otherwise it prints the command and does nothing. - editable /
pip install git+…/ unknown — prints the correct git-based upgrade command (git pull && pip install -e ., orpip install -U git+…@vX.Y.Z) and never mutates the environment, since we don't own or safely know it.
All non-frozen methods converge on the latest release tag, the same version the frozen path reads from the release server, so "latest" means one thing everywhere.
After a successful upgrade — or on any run that doesn't upgrade (already current,
or a printed-guidance / declined install) — self-update re-syncs any agent
skills you installed (see Install the skill), so the shipped skill
never lags the CLI. After a uv/pipx reinstall the refresh runs via the freshly
installed crm, so the skill matches the version you just installed. (A failed
upgrade leaves the skills untouched.)
The passive update notice
On an interactive terminal, crm checks at most once every 24 hours for a newer
release and prints a one-line notice on stderr after a command finishes. It is
silent under --json, when stderr isn't a terminal, when CI is set, and when
CRM_NO_UPDATE_CHECK is set. Opt out permanently:
export CRM_NO_UPDATE_CHECK=1
See how-to: self-update for the per-destination skill-sync detail and the full flag reference.