This release redesigns environment-specific lockfiles for better CI isolation, fixes a critical fork bomb caused by shim recursion in go: backend tools, and addresses several Windows-specific issues including locked .exe shims and env._.source support.
Highlights
- Per-environment lockfiles replace the previous
envtag system, somise.test.tomlnow generatesmise.test.lockinstead of tagging entries in a sharedmise.lock. This means CI caches are no longer invalidated by dev-only tool changes. - Fork bomb prevention strips mise shims from dependency environment PATHs, fixing infinite process spawning when
go:backend tools are configured alongside an uninstalled Go version in shims mode. - Windows
.exeshim handling gracefully renames locked shim executables instead of failing with "Access is denied" during reshim.
Changed
-
Lockfiles are now per-environment -- Environment-specific configs now get their own lockfiles (
mise.test.toml->mise.test.lock,mise.local.toml->mise.local.lock) instead of usingenv = ["test"]tags in a singlemise.lock. This improves CI cache isolation -- environments that don't setMISE_ENVonly depend onmise.lock, so dev tool version bumps won't invalidate CI caches. Old lockfiles withenvfields are silently accepted and migrated on the nextmise lock. #8523 by @jdxConfig file Lockfile mise.tomlmise.lockmise.test.tomlmise.test.lockmise.local.tomlmise.local.lock -
touch_outputsremoved from prepare providers -- Thetouch_outputsconfiguration option has been removed from prepare providers. Freshness checking now uses blake3 content hashing exclusively, so touching output modification times is no longer necessary. #8535 by @jdx
Fixed
-
Fork bomb when using
go:backend tools in shims mode -- When ago:backend tool (e.g.,go:github.com/pulumi/upgrade-provider) was configured alongside a Go version that wasn't installed, and the version cache was cleared, mise could enter infinite shim recursion -- the Go shim would callmise exec, which would resolve thego:backend, which would callgo listvia the shim, and so on. The fix strips mise's shims directory from the PATH independency_env, ensuring dependency tools either resolve to a real installed binary or fail cleanly. This applies to all backends that use dependency environments (go,npm,gem,dotnet,spm,elixir). #8475 by @pose -
Locked
.exeshims on Windows during reshim --mise reshimwould fail with "Access is denied" on Windows when.exeshims were locked by running processes. The fix removes shims individually (instead of wiping the entire directory) and uses a rename-to-.oldfallback for locked files, which Windows allows even when the file is in use. The.oldfiles are cleaned up on the next reshim. #8517 by @davireis -
env._.sourcenow works on Windows --env._.sourcewould fail on Windows because it searched forbashwithout the.exeextension. The Windows API executable search now correctly looks forbash.exe. #8520 by @pjeby -
GitHub
@latestversion resolution -- Thegithub:backend would fail with a 404 when using@latestbecause it constructed/releases/tags/latestinstead of using GitHub's/releases/latestAPI endpoint. This was a regression introduced in v2026.3.5. #8532 by @jdx -
Fish shell shim PATH ordering on re-source -- When
config.fishis re-sourced (e.g., in VS Code integrated terminals),mise activate fish --shimsnow correctly moves shims to the front of PATH usingfish_add_path --global --move, instead of silently skipping them because they were already present. Other shells are unaffected. #8534 by @jdx -
Task output prefix disambiguation -- When running the same task multiple times with different arguments (e.g.,
mise run greet alice ::: greet bob), output prefixes now include the arguments to distinguish runs ([greet alice]vs[greet bob]). Arguments are only included when disambiguation is needed; single-instance tasks keep clean prefixes. Long prefixes are truncated to 40 characters. #8533, #8536 by @jdx -
Non-MRI Ruby on Windows -- Requesting non-MRI Ruby engines (jruby, truffleruby, etc.) on Windows now fails early with a clear error message explaining that only standard MRI Ruby is supported via RubyInstaller2, instead of producing a confusing 404 from an invalid download URL. #8539 by @jdx
Added
- Registry: tigerbeetle -- Added
tigerbeetle(github:tigerbeetle/tigerbeetle) to the tool registry. #8514 by @risu729
Breaking Changes
- Per-environment lockfiles: If you were relying on
envtags withinmise.lockfor environment-specific version pinning, runningmise lockwill migrate to the new format automatically, creating separatemise.<env>.lockfiles. Make sure to commit the new lockfiles and update your.gitignoreif needed formise.<env>.local.lockfiles. touch_outputsremoved: If you were usingtouch_outputsin prepare provider configuration, that field is no longer recognized. Freshness is now determined entirely by blake3 hashing of source files.
New Contributors
- @pjeby made their first contribution in #8520
- @davireis made their first contribution in #8517
- @Aurorxa made their first contribution in #8511
Full Changelog: v2026.3.5...v2026.3.6