Updating acs2md
acs2md update installs the newest release your license includes, from inside the tool. After the first installation you no longer download a package for every release: one command checks, downloads, verifies and installs.
Available from acs2md v1.0.6. If acs2md update answers “unknown command”, install v1.0.6 or later once from your order page; every later release then arrives through update.
acs2md update --check # report only; changes nothing
acs2md update # Linux
sudo acs2md update # macOSAliases: upgrade, self-update
The update is downloaded from Climakers using your activated license, verified against the SHA-256 checksum produced when the release was built, and installed in place of the running binary. Only your license credentials are sent, and only to Climakers; no GitHub account or other access is needed.
Flags
| Flag | What it does |
|---|---|
--check | Report whether a newer release exists; change nothing |
--version | Install this release tag, for example v1.0.7 — also how you go back to an older one |
--yes | Install without the confirmation prompt (required in CI and scripts) |
--force | Ask again instead of using the 6-hour check cache, reinstall the same version, or install the macOS package when the running binary is not /usr/local/bin/acs2md |
--format | text (default) or json for scripts |
Updating on macOS
On macOS the update is the same signed, notarized .pkg you installed from, applied with Apple’s installer. Installing a package needs administrator rights, so run:
sudo acs2md update$ sudo acs2md update
Password:
Update acs2md v1.0.7 to the latest version? [y/N] y
→ Updating acs2md v1.0.7 → v1.0.8 (acs2md-v1.0.8-darwin-universal.pkg, 10.3 MB)
✓ downloaded and checksum verified
✓ installed to /usr/local/bin/acs2md
✅ Updated acs2md to v1.0.8What sudo does, and does not do:
- It only runs Apple’s installer. The package installs one file,
/usr/local/bin/acs2md, and records a receipt you can list withpkgutil --pkgs | grep climakers. - Your license and settings stay yours. Under
sudo, acs2md reads your license from your own home folder and writes nothing there, so no file changes owner. - Forgetting
sudois harmless. The command stops before downloading anything and prints the exact command to run. - No Gatekeeper prompt. The package is notarized by Apple.
- One installation location. If
acs2mdruns from somewhere other than/usr/local/bin(for example a copy in your home folder), the update refuses, because the package would leave that copy unchanged. Remove the other copy, or pass--forceto install to/usr/local/binanyway.
Check the result with acs2md --version.
Updating on Linux
acs2md updateThe binary is replaced in place with a single atomic rename, so it is never half-written, and a acs2md command that is already running keeps using the old binary until it exits.
The update never uses sudo on Linux. The directory that holds acs2md must be writable by you. If you installed into /usr/local/bin as root, install once more into a directory you own, such as ~/.local/bin (see Installation and First-Time Setup); later updates then work without sudo.
Windows has no published release, so update reports it as unsupported.
Your subscription and older versions
While your subscription is active, every new release is included. After it ends you keep the version you have, and you can still install any release published before the end date:
$ acs2md update
❌ Error: your subscription ended on 2026-06-01; this release was published after that
Hint: The last version your license includes is v1.0.7: run 'acs2md update --version v1.0.7'. Renew your subscription to receive every new release.Offline (local) licenses update too, as long as the license file was issued signed. The update service verifies that signature without any store account, and such licenses download from Climakers’ release storage. A license file issued before signing existed is refused with “this local license is not signed”: ask for a reissued file and activate it with acs2md license activate --license-file <path>. See License.
Checks, limits and CI
--checkanswers from a local cache for 6 hours. Add--forceto ask again, for example right after a release was announced.- Requests are limited per license (5 installs per hour). Normal use — a check a day and one install per release — never reaches the limit. When it does, the command says how long to wait and sends nothing until then.
- A downloaded update is kept for 24 hours, so re-running after a failed install does not download it again.
- In CI there is nobody to answer the prompt, so
updaterefuses without--yes. Prefer pinning the version your pipeline installs (acs2md update --version v1.0.8 --yes) over updating on every run.
For scripts, --format json prints the outcome:
{
"changed": false,
"checked_at": "2026-09-19T12:00:00Z",
"current": "v1.0.7",
"latest": "v1.0.8",
"update_available": true
}update needs no Confluence credentials and does not count toward your license’s command limit. The service address is the update.endpoint configuration key; change it only when Climakers support asks you to.
If it fails
| Message | Cause | Fix |
|---|---|---|
installing the macOS package requires administrator rights | macOS packages are installed with Apple’s installer, which needs root | sudo acs2md update; nothing was downloaded yet |
… is not writable by the current user (Linux) | The binary lives in a directory owned by root | Install once into a directory you own, such as ~/.local/bin |
this acs2md runs from …, but the macOS package installs to /usr/local/bin/acs2md | Another copy of acs2md is first on your PATH | Remove that copy, or sudo acs2md update --force |
too many update requests; try again in … | The per-license limit was reached | Wait the time shown; in CI pin a version instead of updating each run |
your subscription ended on … | The release was published after your subscription ended | Install the version the hint names with --version, or renew |
this local license is not signed | The license file predates license signing | Ask for a reissued license file and activate it with --license-file |
the update service is unavailable | A temporary outage | Nothing was changed; try again later |
Still stuck? Run the command with --debug and see Support.