# mise changelog > mise release notes. - Vendor: mise - Category: Languages & Runtimes - Official site: https://mise.jdx.dev/ - Tracked by: What's New (https://whatsnew.fyi/product/mise) - Harvested from: GitHub (jdx/mise) - Entries below: 10 (newest first) 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. ## Releases ### v2026.8.2 — v2026.8.2: Declarative System Bootstrap - Date: 2026-08-05 - Version: v2026.8.2 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.8.2 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.8.2 This release turns `mise bootstrap` into a full declarative host-provisioning system: alongside packages, mise can now converge privileged files, Linux users and groups, systemd services, Docker Compose projects, and firewall rules — all with plan/apply/status workflows, secret handling, and the ability to run over SSH against remote hosts. It also makes Ruby's `ruby.compile=false` a strict precompiled-only mode and lands a batch of install and lockfile fixes. ##### Highlights - `mise bootstrap` gains a Terraform-style declarative model. A new `mise bootstrap plan` previews changes with table or JSON output and detailed exit codes, and each resource type has its own `apply`/`status` commands that converge only when something actually differs. - Bootstrap can now provision far more than tools and packages: privileged files and directories, Linux accounts, systemd services, Compose projects, and host firewall rules, with dependency ordering, fail-closed safety checks, and secret inputs sourced from environment variables (never stored in config). - The same bootstrap project can be applied to remote machines over SSH via `mise bootstrap remote`, including automatic detection of the target's OS/arch/libc and signature-verified download of the matching mise binary. ##### Added - **bootstrap:** declarative resource plans. `mise bootstrap plan` previews what bootstrap would change before applying, with table or `--json` output and optional `--detailed-exitcode` (0 = no changes, 2 = changes, 1 = error). Resources have stable identities, dependency graphs, and validation for duplicates, missing dependencies, and cycles. ([#11669](https://github.com/jdx/mise/pull/11669) by @jdx) - **bootstrap:** manage privileged files and directories via `[bootstrap.files]` and `[bootstrap.directories]`, with content (inline or from a source), ownership, mode, and explicit `present`/`absent` state. Writes are atomic, removal is opt-in (and requires `recursive = true` for non-empty directories), and privileged work runs through hidden helpers that never expose file content in argv or logs. ([#11674](https://github.com/jdx/mise/pull/11674) by @jdx) - **bootstrap:** secret inputs for managed files. `[bootstrap.secrets]` references sensitive values through environment variables so nothing is stored in config, and managed files with `template = true` can render them via `{{ secret(name="...") }}`. `mise bootstrap secrets status` reports availability without revealing values, and `--prompt-secrets` prompts securely for anything missing. ([#11680](https://github.com/jdx/mise/pull/11680) by @jdx) - **bootstrap:** manage Linux users and groups via `[bootstrap.users]` and `[bootstrap.groups]`, with create/update/remove, supplementary groups, home handling, and explicit `state = "absent"`. Accounts converge before the files that reference them, and UID/GID collisions fail closed. ([#11681](https://github.com/jdx/mise/pull/11681) by @jdx) - **bootstrap:** manage Linux systemd services via `[bootstrap.services]` for running/stopped, enabled/disabled, and masked state. Managed files and directories can set `notify` to trigger `reload`, `restart`, or `reload_or_restart` handlers, but only after a real file change. ([#11688](https://github.com/jdx/mise/pull/11688) by @jdx) - **bootstrap:** manage Docker Compose projects via `[bootstrap.compose]` for running, stopped, and absent states, with pull/build/recreate/wait policies, one-shot services, orphan/volume/image removal, and explicit dependencies. Convergence compares live container runtime and health to the rendered Compose model (Compose v2 only). ([#11689](https://github.com/jdx/mise/pull/11689) by @jdx) - **bootstrap:** manage Linux host firewall rules via `[bootstrap.linux.firewall]` with nftables, firewalld, and UFW backends (`backend = "auto"`). Includes SSH-lockout protection (default-deny requires a covering allow rule or `allow_lockout = true`), drift detection, and preservation of undeclared rules unless _[Truncated at 4000 characters — full notes: https://github.com/jdx/mise/releases/tag/v2026.8.2]_ ### v2026.8.1 — v2026.8.1: Task Cache Goes Remote, Affected Tasks, and Config Ergonomics - Date: 2026-08-03 - Version: v2026.8.1 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.8.1 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.8.1 This release rounds out mise's experimental task artifact cache with size/age limits, inspection tooling, and a full local-plus-remote cache backend (including authenticated CI caching), adds experimental `mise run --affected` for monorepos, and lands a batch of config, upgrade, and install fixes. ##### Highlights - The experimental task output cache now supports remote sharing: a composite store reads locally first, promotes remote hits, and mirrors writes, with authenticated requests backed by token files or GitHub Actions OIDC. Cache entries can be inspected, cleared per-task, and bounded by size and age. - Experimental `mise run --affected` runs only the tasks in monorepo projects touched by your Git changes, using workspace dependency graphs, global task inputs, and provider lockfile attribution to decide what is affected. - The config-writing flags are now more forgiving: `--file` and `--path` are interchangeable across the commands that write config, so you no longer have to remember which name each subcommand expects. ##### Added - **task:** experimental `mise run --affected` selects and runs only the tasks in projects affected by Git changes, combining the workspace dependency graph, `global_inputs`, and provider lockfile diffs. Base and head revisions can be overridden with `--affected-base`/`--affected-head` or `MISE_AFFECTED_*`. Includes JSON output and an `--explain` breakdown of why each task was selected. ([#11590](https://github.com/jdx/mise/pull/11590), [#11587](https://github.com/jdx/mise/pull/11587), [#11589](https://github.com/jdx/mise/pull/11589), [#11591](https://github.com/jdx/mise/pull/11591), [#11593](https://github.com/jdx/mise/pull/11593) by @jdx) ```bash mise run --affected test mise run --affected --affected-base main test ``` - **task:** remote task cache. A composite store layers local and remote backends, reading local first and promoting remote hits, then committing locally before mirroring writes so a remote failure never loses a local hit. Requests are hardened, verified, streamed, and support read/write access modes. ([#11622](https://github.com/jdx/mise/pull/11622), [#11623](https://github.com/jdx/mise/pull/11623), [#11624](https://github.com/jdx/mise/pull/11624), [#11626](https://github.com/jdx/mise/pull/11626), [#11627](https://github.com/jdx/mise/pull/11627) by @jdx) - **task:** authenticated remote cache. Credentials resolve in fixed precedence: an explicit bearer token, a global-only token file (`MISE_TASK_CACHE_REMOTE_TOKEN_FILE`), then GitHub Actions OIDC when `MISE_TASK_CACHE_REMOTE_OIDC_AUDIENCE` is set. HTTPS is enforced except for loopback development endpoints. ([#11625](https://github.com/jdx/mise/pull/11625), [#11653](https://github.com/jdx/mise/pull/11653) by @jdx) - **task:** `task.cache_max_size` and `task.cache_max_age` settings cap the task output cache independently of the global prune age, evicting least-recently-accessed entries after writes and rejecting expired entries on restore. ([#11610](https://github.com/jdx/mise/pull/11610) by @jdx) - **task:** inspect and selectively clear the cache with `mise cache task ` (table or `--json`, reporting stored size, restorable bytes, saved time, last access, and outputs) and `mise cache clear --task `, which removes only that task's entries without touching your working-tree outputs. ([#11604](https://github.com/jdx/mise/pull/11604) by @jdx) - **task:** `mise run --task-cache-explain ` prints a structural breakdown of what feeds a task's cache key (input categories, counts, env/var names and presence, platform) without emitting secret-derived hashes, and works under `--dry-run`. Companion changes report cache miss reasons, cache statistics, resolved cache paths, and add JSON explanation output. ([#11595](https://github.com/jdx/mise/pull/11595), [#11597](https://github.com/jdx/mise/pull/11597), [#11599](https://github.com/jdx/mise/pull/11599), [#11600](https://github.com/jdx/mise/pull/11600), [#11601 _[Truncated at 4000 characters — full notes: https://github.com/jdx/mise/releases/tag/v2026.8.1]_ ### v2026.8.0 — v2026.8.0: 15% faster shims, multi-language workspaces, and precompiled Ruby - Date: 2026-08-01 - Version: v2026.8.0 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.8.0 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.8.0 This release makes mise noticeably faster on Linux x64: shims have 15% lower latency, while config-aware commands are 8–11% faster in local release-to-release benchmarks. It also significantly expands the experimental monorepo task workflow with dependency inference across Cargo, uv (Python), Go, and Node workspaces, and makes precompiled Ruby binaries the default. ##### ⚡ Performance: up to 15% lower latency Official checksum-verified Linux x64 GNU binaries were compared on an AMD Ryzen 9 7950X3D using an isolated offline fixture with warm filesystem caches (20 warmups and 200 measured runs per command): | Workload | v2026.7.18 | v2026.8.0 | Lower latency | | --- | ---: | ---: | ---: | | Node shim dispatch | 6.990 ms | 5.929 ms | **15.2%** | | `tasks ls` | 7.353 ms | 6.574 ms | **10.6%** | | `env -s bash` | 7.942 ms | 7.187 ms | **9.5%** | | `current` | 7.667 ms | 6.961 ms | **9.2%** | | `settings` | 5.823 ms | 5.331 ms | **8.5%** | | `--help` | 5.036 ms | 4.731 ms | **6.1%** | | `version` | 5.108 ms | 4.884 ms | **4.4%** | | `registry` | 7.457 ms | 7.181 ms | **3.7%** | Release downloads are smaller as well: | Linux x64 artifact | Size change | | --- | ---: | | `.tar.xz` | **11.1% smaller** | | `.tar.gz` | **5.9% smaller** | | `.tar.zst` | **5.0% smaller** | | Allocated ELF sections | **0.6% smaller** | The raw executable file is 2.5% larger because of the BOLT file layout, despite its smaller allocated sections and compressed artifacts. Shim dispatch was measured in two reversed-order 300-run rounds. These are whole-release results against v2026.7.18, so they include all changes between the releases rather than isolating BOLT alone. ##### Highlights - Workspace inference now spans four ecosystems. `mise tasks graph` discovers projects and internal dependency edges from Cargo, uv, Go, and Node workspace metadata without needing the underlying toolchain installed, and `--explain` attributes every project, edge, and task field to its source. - Precompiled Ruby binaries are now the default, cutting install times for most users while keeping source builds available on demand. ##### Added - **task:** Cargo workspaces are now inferred for the task graph. mise parses root and member `Cargo.toml` files (no `cargo` binary required) to build `cargo:` projects and internal edges from normal, dev, build, target-specific, renamed, and inherited `workspace = true` path dependencies, with provenance surfaced in graph output. ([#11554](https://github.com/jdx/mise/pull/11554) by @jdx) - **task:** uv (Python) workspaces are inferred from `pyproject.toml`. When `[tool.uv.workspace]` is present, member globs and exclusions define `uv:` projects and edges come from `[tool.uv.sources]` `workspace = true` / local `path` entries across main, optional, dependency-group, and legacy dev dependencies — again without invoking `uv` or Python. ([#11556](https://github.com/jdx/mise/pull/11556) by @jdx) - **task:** Go workspaces are discovered from `go.work` `use` directives and each module's `go.mod`, registering stable `go:` projects without running the `go` binary. Dependency ordering is supplied explicitly via `[monorepo.projects]` overrides. ([#11559](https://github.com/jdx/mise/pull/11559) by @jdx) - **task:** workspace providers can now contribute task suggestions. The Node provider imports supported `inputs`, `outputs`, `cache`, and `dependsOn` metadata from matching `turbo.json` entries for inferred package scripts, tracking `turbo.json` as a task definition source. Unsupported Turbo expressions are left unset. ([#11543](https://github.com/jdx/mise/pull/11543) by @jdx) - **task:** `mise tasks graph --explain` shows provider and metadata-source provenance for every inferred project, dependency edge, task, and provider-suggested field, and `--json` now serializes the same attribution. Config overrides are labeled as `configuration` rather than misattributed to inference. ([#11547](https://github.com/jdx/mise/pul _[Truncated at 4000 characters — full notes: https://github.com/jdx/mise/releases/tag/v2026.8.0]_ ### v2026.7.18 — v2026.7.18: Monorepo task ergonomics and a broad round of fixes - Date: 2026-07-30 - Version: v2026.7.18 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.7.18 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.7.18 This release refines mise's experimental monorepo task workflow with relative dependency paths and a compact dependency tree view, and lands a wide batch of fixes across Cargo installs, plugins, PATH handling, Windows program resolution, Aqua locks, GitLab pagination, and more. ##### Added - **task:** `mise tasks deps` gains a `--compact` flag that expands each shared dependency subtree only once and marks later references as `(already shown)`, keeping every incoming edge visible while avoiding the recursive blow-up that wildcard-heavy monorepo graphs produced. Default output is unchanged unless you pass the flag. ([#11502](https://github.com/jdx/mise/pull/11502) by @jdx) ```bash mise tasks deps --compact ``` - **task:** monorepo task dependencies now support `./`-prefixed relative paths, resolved from the declaring task's own monorepo location, so one aggregate declaration works unchanged at the root, in nested apps, and in leaves without hard-coded absolute paths. Trailing `...` patterns now include the base project itself in addition to its descendants. ([#11503](https://github.com/jdx/mise/pull/11503) by @jdx) ```toml [tasks.test] depends = [{ task = "./...:groups:tests:*", optional = true }] ``` ##### Fixed - **cargo:** installs now record the effective install options (`features`, `default-features`, `bin`, `crate`, `locked`) and reinstall automatically when any of them change, so changing feature flags or the selected binary no longer silently reuses the wrong artifact. Incompatible shared/system installs are shadowed in your primary install directory instead of being modified. ([#11480](https://github.com/jdx/mise/pull/11480) by @Marukome0743) - **plugins:** `[plugins]` entries can now point at local filesystem paths (absolute, `~/`, or explicit `./`/`../` relative to the config root). Local asdf, vfox, vfox-backend, and package plugins are installed as symlinks so source edits take effect immediately, while Git URLs, refs, archives, and `file://` sources keep their existing behavior. ([#11487](https://github.com/jdx/mise/pull/11487) by @Marukome0743) - **plugins:** batch `plugins install`, `plugins install --all`, and `plugins update` now finish every plugin even when one fails, preserving successful changes and reporting all failures together (in deterministic order) with a failing exit status. ([#11490](https://github.com/jdx/mise/pull/11490) by @Marukome0743) - **env:** computed environments (`mise env`, `mise x` child PATHs, `mise doctor`) now collapse exact duplicate PATH entries first-wins, fixing the runaway `_.path` accumulation that appeared in nested shells and IDE terminals that inherit an activated PATH without mise's state vars. The live shell PATH is intentionally left untouched. ([#11491](https://github.com/jdx/mise/pull/11491) by @JamBalaya56562) - **install:** installing a tool no longer touches your loaded config files, so editors stop reporting spurious "file changed on disk" warnings. hook-env still detects installs and PATH changes via the mise data directory. ([#11495](https://github.com/jdx/mise/pull/11495) by @Marukome0743) - **prune:** `mise prune --tools` no longer discards references from untrusted idiomatic version files and plain `.tool-versions`, preventing removal of versions still in use by other projects. ([#11501](https://github.com/jdx/mise/pull/11501) by @jdx) - **monorepo:** `idiomatic_version_file_enable_tools` set in a config root's own `[settings]` is now honored by monorepo-wide commands like `mise ls --monorepo` and `mise install --monorepo`, instead of only being applied when mise runs from inside that root. ([#11463](https://github.com/jdx/mise/pull/11463) by @kaii-zen) - **asdf:** `bin/list-all` and `bin/latest-stable` scripts now receive your resolved mise `[env]` values, removals, and `_.path` additions, so plugins that need a credential or helper on PATH can list versions. Caches are partitioned per environment so results are never reused across differi _[Truncated at 4000 characters — full notes: https://github.com/jdx/mise/releases/tag/v2026.7.18]_ ### v2026.7.17 — v2026.7.17: Monorepo Task Inference and Root Defaults - Date: 2026-07-30 - Version: v2026.7.17 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.7.17 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.7.17 This release builds out mise's experimental monorepo task story: Node workspaces now infer project dependency graphs, import package scripts as first-class tasks, and can share configuration through root task defaults and upstream (`^task`) dependencies. It also adds per-tool control over idiomatic version files, a smoother dotfiles workflow, and a batch of fixes across shell activation, hook-env, Homebrew casks, Aqua, and Python uv environments. ##### Highlights - Node monorepo workspaces gain end-to-end task support: inferred project dependency edges, imported `package.json` scripts as `node:#