# mise v2026.8.4 — v2026.8.4: Cross-backend ls, semver ordering, and bootstrap cask pruning - Product: mise (https://whatsnew.fyi/product/mise) - Vendor: mise - Date: 2026-08-11 - Version: v2026.8.4 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.8.4 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.8.4 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Tools can now declare an explicit version_order (source or semver) so that latest and version-prefix resolution follow semantic precedence instead of source or chronological order for Aqua, GitHub, GitLab, Forgejo, and HTTP backends - **added** — mise ls now matches a tool installed from multiple backends - **added** — mise install --force now works without tool arguments, reinstalling every configured OS-supported tool - **added** — Add an upgrade.auto_prune setting (default true) that controls whether mise upgrade removes the version it replaced, plus a --prune flag to force removal - **added** — mise bootstrap packages prune --manager brew-cask can now conservatively remove mise-owned Homebrew casks that are no longer declared in [bootstrap.packages] - **added** — [bootstrap.packages] entries can now use table form with a version and os-style selectors for platform-specific packages - **added** — The brew-cask manager now supports installing font casks directly from git URLs, including selecting a branch and staging files from a subdirectory - **added** — Relative aqua.registries entries in a config file are now resolved against that config's root - **added** — spm installs can now be pinned to a commit via rev: or ref:, building from source - **added** — Generated git hooks can now carry extra mise flags after -- to insert between mise and run - **fixed** — mise watch with no task name now runs the default task, matching mise run - **fixed** — --silent and --log-level are now forwarded into the generated activation hook - **fixed** — SOPS files decrypted through the external sops CLI are no longer skipped when no age key is present - **fixed** — On Windows, dependency DLLs are now placed beside the binaries in .mise-bins, fixing tools such as conda:postgresql and conda:zstd - **fixed** — On Windows, mise now installs the highest RubyInstaller2 build revision instead of always using the superseded -1 build - **fixed** — Concurrent Rust toolchain installs are now serialized to avoid conflicts, and Rust homes are resolved from the config environment - **fixed** — Azure DevOps remote git includes are now handled correctly - **fixed** — Project-qualified monorepo tasks now match without requiring the leading // - **fixed** — Incomplete task outputs are now detected, and task arguments are validated before dependencies run This release adds explicit semantic version ordering for major backends, teaches `mise ls` and `mise install --force` to work across backends, extends bootstrap package management with platform filters and cask pruning, and lands a broad batch of task, config, and platform-specific fixes. ##### Added - **backend:** tools can now declare an explicit `version_order` (`source` or `semver`) so that `latest` and version-prefix resolution follow semantic precedence instead of source/chronological order. This is enabled for Aqua, GitHub, GitLab, Forgejo, and HTTP backends, and fixes cases where a backport or older release line was picked ahead of a newer version (for example neo4j, victoria-metrics, go-getter, talosctl, rpk, and tealdeer). `mise ls-remote` continues to show upstream source order. ([#11774](https://github.com/jdx/mise/pull/11774) by @jdx) - **ls:** `mise ls ` now matches a tool installed from multiple backends. Previously, installing a tool from both its registry backend and, say, a `cargo:` or `ubi:` build would show only one of them under `mise ls ` even though both were on PATH. Spelling out a backend (e.g. `mise ls ubi:jqlang/jq`) still narrows to that single backend. ([#11822](https://github.com/jdx/mise/pull/11822) by @JamBalaya56562) - **install:** `mise install --force` now works without tool arguments, reinstalling every configured, OS-supported tool (or the monorepo union with `--monorepo`). ([#11802](https://github.com/jdx/mise/pull/11802) by @Marukome0743) - **upgrade:** add an `upgrade.auto_prune` setting (default `true`) that controls whether `mise upgrade` removes the version it replaced, plus a `--prune` flag to force removal on for a single run when the setting is off. Useful when a mise-managed interpreter backs a virtualenv you do not want deleted on unattended upgrades. ([#11788](https://github.com/jdx/mise/pull/11788) by @JamBalaya56562) ```toml [settings] upgrade.auto_prune = false ``` - **bootstrap:** `mise bootstrap packages prune --manager brew-cask` can now conservatively remove mise-owned Homebrew casks that are no longer declared in `[bootstrap.packages]`. Removal is gated by install-time receipt metadata, fingerprint checks, and ownership validation, and Homebrew-owned, pkg, lifecycle, drifted, or shared casks are skipped with an explicit reason. ([#11810](https://github.com/jdx/mise/pull/11810) by @jdx) - **bootstrap:** `[bootstrap.packages]` entries can now use table form with a `version` and `[tools]`-style `os` selectors, so a single config can target macOS-only casks and Linux fonts. Platform-incompatible packages surface as unavailable in status output instead of aborting the run, while explicit requests for unsupported packages still error. ([#11809](https://github.com/jdx/mise/pull/11809) by @jdx) - **brew:** the `brew-cask` manager now supports installing font casks directly from git URLs, including selecting a branch and staging files from a subdirectory. ([#11781](https://github.com/jdx/mise/pull/11781) by @roele) - **aqua:** relative `aqua.registries` entries in a config file are now resolved against that config's root, so a `registry.yaml` committed inside a project repository can be referenced without a machine-specific absolute path. ([#11804](https://github.com/jdx/mise/pull/11804) by @JamBalaya56562) ```toml [settings] aqua.registries = ["registry.yaml"] ``` - **spm:** `spm:` installs can now be pinned to a commit via `rev:` (and compatible `ref:`), building from source. ([#11815](https://github.com/jdx/mise/pull/11815) by @Marukome0743) - **generate:** generated git hooks can now carry extra mise flags. Anything after `--` is inserted between `mise` and `run`, so a hook can target config in a subdirectory or set other global flags. ([#11820](https://github.com/jdx/mise/pull/11820) by @JamBalaya56562) ```bash mise generate git-pre-commit --task lint -- -C subdir -E ci ``` ##### Fixed - **watch:** `mise watch` with no t _[Truncated at 4000 characters — full notes: https://github.com/jdx/mise/releases/tag/v2026.8.4]_