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 --affectedruns 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:
--fileand--pathare interchangeable across the commands that write config, so you no longer have to remember which name each subcommand expects.
Added
-
task: experimental
mise run --affectedselects 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-headorMISE_AFFECTED_*. Includes JSON output and an--explainbreakdown of why each task was selected. (#11590, #11587, #11589, #11591, #11593 by @jdx)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, #11623, #11624, #11626, #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 whenMISE_TASK_CACHE_REMOTE_OIDC_AUDIENCEis set. HTTPS is enforced except for loopback development endpoints. (#11625, #11653 by @jdx) -
task:
task.cache_max_sizeandtask.cache_max_agesettings 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 by @jdx) -
task: inspect and selectively clear the cache with
mise cache task <task>(table or--json, reporting stored size, restorable bytes, saved time, last access, and outputs) andmise cache clear --task <task>, which removes only that task's entries without touching your working-tree outputs. (#11604 by @jdx) -
task:
mise run --task-cache-explain <task>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, #11597, #11599, #11600, #11601 by @jdx) -
task: cache artifacts are now checksum-verified and cache declarations are audited on load. (#11605, #11617 by @jdx)
-
config:
--fileand--pathare now interchangeable across the commands that write config:mise use,mise set,mise unuse,mise unset,mise config get, andmise config set. (#11577, #11616, #11631, #11640 by @JamBalaya56562)mise use --file mise.local.toml node@22 mise set --path mise.local.toml FOO=bar -
upgrade:
mise upgrade --no-prunekeeps the version being replaced instead of uninstalling it, so external references such as virtualenvs built from a mise-managed Python keep working. Also works with--bump. (#11639 by @JamBalaya56562) -
env: on Windows, mise now warns when the generated PATH exceeds the ~8191-character length at which
cmd.exesilently drops the variable, which otherwise makes every command appear unrecognized. (#11643 by @JamBalaya56562) -
vfox: Lua plugins gain
strip_components = 1onarchiver.decompressplus sortedfile.list,file.glob, andfile.move, letting plugins flatten versioned archive roots and rename executables portably without shelling out. (#11652 by @jdx)
Fixed
- config: tool versions may now contain a colon, so templated versions like
{{ exec(...) | split(pat=': ') | last }}and selectors resolved from templates no longer fail config loading. (#11580 by @JamBalaya56562) - config: config writes no longer pick a target that config loading would ignore, honor ignore filters when a
--path <dir>is given, and no longer write the global config into aconf.ddrop-in. (#11571, #11609, #11633 by @JamBalaya56562) - upgrade:
mise upgrade --bumpnow applies every eligible tool bump in the same config file instead of letting the last save overwrite earlier ones, and preserves successful bumps when another tool in the file fails to install. (#11572 by @Marukome0743) - install: a failed backend install no longer leaves runtime aliases such as
latestpointing at the removed version; mise rebuilds valid symlinks (or removes dangling ones) after cleanup. (#11579 by @Marukome0743) - brew: Linux Homebrew bottles containing shebang executables with binary payloads (such as Watchman's
watchman-diagzipapp) now relocate correctly with long Linuxbrew prefixes. (#11632 by @Marukome0743) - pipx: extras are now applied to git-based installs. (#11586 by @jdx)
- prune: read-only shared installs are excluded from pruning. (#11644 by @Marukome0743)
- task: dangling task symlinks are skipped, wildcard task matching respects group boundaries, shared pre/post dependencies are supported, and task-list flags are rejected on subcommands. Task cache writes are serialized and abandoned partial writes are cleaned up. (#11574, #11581, #11578 by @Marukome0743; #11638, #11606, #11608 by @jdx)
- schema: JSON schemas are now published alongside the documentation. (#11596 by @jdx)
Documentation
- Recommend installing official release binaries, clarify Node dependency behavior for npm-backed tools, offer shims as a workaround for the Windows PATH length limit, and fix a dead tool-stub example URL and an npmmirror
node.mirror_urlexample. (#11615, #11637 by @jdx; #11642 by @JamBalaya56562; #11377, #11460 by @Bartok9) - Document the remote cache protocol and its trust requirements. (#11621, #11628 by @jdx)
Full Changelog: v2026.8.0...v2026.8.1
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.