Releases: jdx/mise
v2026.2.8: Hooks Get Their Act Together
This release focuses on hooks—fixing 12 community-reported issues that were making them unreliable. There are also some nice quality-of-life improvements for Node.js and Ruby users.
Highlights
Hooks overhaul — A comprehensive fix for the hooks system addressing a dozen issues reported by the community. Global hooks now actually work, hook execution order is corrected (leave fires before enter), infinite loops in fish shell are fixed, and postinstall hooks can now find all installed tools. #8058
Node version detection from package.json — mise now reads tool versions directly from package.json using the devEngines and packageManager fields. This means your Node, Bun, pnpm, yarn, and npm versions can be auto-detected without a separate .tool-versions or mise.toml file. Semver ranges are simplified automatically (>=18.0.0 → 18). #8059
Precompiled Ruby goes stable — You can now use precompiled Ruby binaries by setting ruby.compile=false without needing experimental=true. This will become the default in 2026.8.0. If you haven't tried it, precompiled Ruby installs in seconds instead of minutes. #8052
New Features
--dry-run-codeflag — Added toinstall,upgrade,prune,uninstall, andusecommands. Behaves like--dry-runbut exits with code 1 when there's work to do, enabling patterns likeif ! mise install --dry-run-code -q; then mise install; fi#8063
Bug Fixes
- MISE_ARCH override — The bun and erlang plugins now respect
MISE_ARCHat runtime, which is useful for Windows ARM64 users running x64 binaries under emulation #8062 - key=value format —
mise settings set,mise settings add,mise config set, andmise shell-alias setnow acceptkey=valueas a single argument #8053
Registry
Dependencies
- Upgraded to TOML 1.1 support via toml 0.9 and toml_edit 0.24 #8057
v2026.2.7: Windows Gets Real
This release brings a significant improvement for Windows users with native .exe shims, along with several bug fixes that improve the reliability of tool installation and version resolution.
Highlights
Native Windows Shims (#8045)
mise now generates native .exe shim files instead of .cmd batch scripts. This resolves a whole category of frustrating issues:
- No more intermittent
ENOENTerrors fromspawnSyncin node where.exenow correctly finds your tools- Better compatibility with package managers like npm and bun that expect real executables
- Proper control flow in batch scripts
The new "exe" mode is now the default for windows_shim_mode. This follows the same pattern used by Scoop, Volta, and Chocolatey. If you need to switch back, you can set windows_shim_mode = "file" in your settings. Thanks to @iki for helping with this.
Bug Fixes
-
Config options preserved during CLI installs (#8044) - Running
mise install tool@versionwith an explicit version no longer loses tool-level config options likepostinstallfrom yourmise.toml. Registry defaults (likeuvx=falseorpipx_args) are also preserved when using table syntax. -
Linked versions take priority over lockfiles (#8050) - Tools created with
mise linknow correctly override lockfile entries during version resolution. Previously, a lockfile pin would override your linked version, causing confusing "missing" warnings. -
Fixed duplicate entries in
ls --all-sources(#8042) - Thanks @roele!
Registry Updates
v2026.2.6: Shell Expansion & Source Tracking
This release brings a couple of nice quality-of-life improvements alongside several bug fixes.
Highlights
Shell-style variable expansion in env values (#8029) - You can now use shell-style variable expansion like ${VAR:-default} and ${VAR:+alternate} directly in your mise.toml environment variables. This makes it easier to set up flexible configurations without needing to drop into shell scripts.
New --all-sources flag for mise ls (#8019) - Thanks to @TylerHillery for adding this flag, which shows all the sources where a tool version is defined. Useful for debugging why a particular version is being used when you have multiple config files.
Bug Fixes
- gem backend: Fixed Windows support and resolved a newline issue in gem scripts (#8031, #8034) - Thanks @my1e5!
- lockfile: Tools are now written to the lockfile matching their source config, fixing issues where lockfile entries could get misattributed (#8012)
- mise ls: Sources in
--all-sourcesoutput are now sorted deterministically (#8037) - tasks: File tasks now auto-install tools defined in
mise.toml, matching the behavior of inline tasks (#8030)
Security
- Updated the
timecrate to 0.3.47 to address RUSTSEC-2026-0009 (#8026)
New Tools
- tirith - Thanks @sheeki03!
- mas (Mac App Store CLI) - Thanks @TyceHerrman!
New Contributors
Welcome to @sheeki03 and @TylerHillery for their first contributions!
📦 Aqua Registry Updates
New Packages (1)
Updated Packages (6)
v2026.2.5: Lockfiles Break Free
This is a small maintenance release with one user-facing improvement.
Bug Fixes
- Lockfiles no longer require experimental mode - You can now use
mise.lockfiles without settingexperimental = truein your configuration. Lockfiles help ensure reproducible tool versions across your team, and this change makes them accessible to everyone by default. (#8011)
For more information on lockfiles, see the documentation.
📦 Aqua Registry Updates
Updated Packages (1)
v2026.2.4: Taming the Environment
This release focuses on fixing several edge cases in environment handling and tool management. Users working with complex environment configurations, npm package managers, and locked tool versions will find this update particularly helpful.
Bug Fixes
-
Environment variable resolution for tool templates: When using
env._.sourceto source environment files, tool templates now correctly resolve the sourced environment variables. Previously, tool version templates that depended on sourced env vars might not have worked as expected. Thanks to @corymhall for this fix! #7895 -
npm package manager dependencies: When using mise to manage Node.js package managers (npm, yarn, pnpm, bun), mise now only declares the specifically configured package manager as a dependency rather than all of them. This prevents unnecessary dependency resolution issues. #7995
-
Respect
use_locked_versionduring upgrades: Themise upgradecommand now properly respects theuse_locked_versionsetting when checking tracked configs. If you have this setting enabled, upgrades will now correctly use the locked versions from your config files. #7997 -
Ignore
MISE_TOOL_VERSIONin env parsing: Fixed an issue where the internalMISE_TOOL_VERSIONenvironment variable could interfere with environment variable parsing, preventing potential conflicts in certain workflows. #8004
New Contributors
Welcome to @corymhall who made their first contribution to mise! 🎉
v2026.2.3: Locked and Loaded
This patch release fixes an important bug affecting users who use mise in locked mode with pipx, npm, cargo, or asdf backends. Previously, these backends would fail when lockfile enforcement was enabled—now they work seamlessly with your locked configurations.
This release also includes a security-related dependency update and welcomes three new tools to the registry: mermaid-ascii for creating ASCII diagrams from Mermaid syntax, Godot game engine, and Julia programming language support.
Bug Fixes
- Locked mode now works with more backends - Users can now use
mise installwith pipx, npm, cargo, and asdf backends when lockfile mode is enabled. Previously these backends would fail in locked mode, forcing users to disable lockfiles or use different installation methods. #7985
Security
- Updated the
bytescrate to 1.11.1 to address RUSTSEC-2026-0007. #7986
New Tools
- mermaid-ascii - Generate ASCII art diagrams from Mermaid diagram syntax, great for documentation and terminal-based workflows. Thanks @TyceHerrman! #7984
- godot - The popular open-source game engine is now available via mise. Thanks @dmarcoux! #7989
- julia - The Julia programming language can now be installed and managed with mise. Thanks @quinnj! #7990
New Contributors
Welcome to our new contributors! 🎉
📦 Aqua Registry Updates
New Packages (2)
v2026.2.2: Smart Suggestions and Python UV Improvements
This release brings quality-of-life improvements that make mise smarter and more helpful. When you mistype a tool name, mise now suggests what you might have meant with "Did you mean?" hints, and warns you about inactive tools that might need attention. Python users will appreciate the reworked python.uv_venv_auto setting that gives more control over virtual environment management.
Highlights
-
"Did you mean?" suggestions - Mistype a tool name and mise will now suggest similar tools you might have intended, plus warn about inactive tools in your config (#7965)
-
Reworked
python.uv_venv_autosetting - The UV virtual environment auto-creation behavior has been improved for better control over when and how venvs are created. See the Python documentation for details. Thanks @halms! (#7905) -
Windows
mingw-w64detection - The asset matcher now properly detectsmingw-w64packages for Windows, improving tool installation on Windows systems. Thanks @lchagnoleau! (#7981) -
vfox plugin
download_path- Plugin authors can now accessdownload_pathin the BackendInstall context, making it easier to write plugins that need to reference downloaded files. Thanks @malept! (#7959)
Bug Fixes
-
Prefer-offline mode improvements -
hook-envno longer attempts to fetch remote versions for uninstalled tools when running in prefer-offline mode (#7976) -
ETXTBSY retry - Fixed an edge case where spawning processes could fail with "Text file busy" errors by adding automatic retries (#7964)
-
ToolOptions comma parsing - Tool options now properly support comma-separated values, fixing issues with complex option configurations. Thanks @roele! (#7971)
Documentation
- Improved plugin documentation with better comparisons between plugin types and links to templates (#7962)
New Contributors
Welcome @gogolok who made their first contribution with an install script typo fix! (#7980)
📦 Aqua Registry Updates
New Packages (4)
Updated Packages (3)
v2026.2.1: Task Docs and Tool Stubs
Highlights
Task documentation improvements - The mise generate task-docs command now supports a --index flag and uses task names when generating multi-file documentation with --multi. This gives you better control over how your task documentation is organized and named. #7944
Tool stub generation with --lock - You can now generate tool stubs with locked versions using mise generate tool-stub --lock, making it easier to pin exact tool versions in your generated stubs. #7948
Plugin shadowing warnings - mise now warns you when an env plugin shadows a tool from the registry, helping you avoid confusion when a local plugin name conflicts with a well-known tool. #7953
Lua log module for vfox plugins - Plugin authors can now use a dedicated logging module to output debug information, warnings, and errors from their Lua plugins. #7949
Bug Fixes
- Fixed handling of
file://URLs in the registry'snormalize_remotefunction #7947 - Fixed LuaLS warnings in vfox test fixtures and added linting #7946
Internal Changes
- Unified the
deprecated_at!macro to provide consistent deprecation warnings #7957
Full documentation: https://mise.jdx.dev/
v2026.2.0: Lockfiles Graduate, Editor Arrives
This release marks a significant milestone: lockfiles are now stable and no longer require an experimental flag. After extensive testing and refinement, lockfiles are ready for production use, giving you reproducible builds with cryptographically verified tool versions across your team.
The other headline feature is mise edit, a brand new interactive configuration editor that makes managing your mise setup more intuitive than ever. Just run mise edit and navigate your configuration with a proper editor interface.
Highlights
-
Lockfiles are stable — No more
MISE_EXPERIMENTAL=1needed! Lockfiles ensure everyone on your team gets exactly the same tool versions with SHA256 verification. See the lockfile documentation for details. #7929 -
Interactive config editor — The new
mise editcommand launches an interactive editor for your mise configuration, making it easier to manage tools and settings. #7930 -
Smarter task confirmation dialogs — Task confirm prompts now support usage values, giving you more context when confirming task execution. Thanks @roele! #7924
-
Windows shebang task support — File tasks with shebangs are now properly discovered and executed on Windows. #7941
Performance
-
Faster dependency scheduling — Tool installation now uses Kahn's algorithm for optimal parallel dependency resolution, speeding up installs with complex dependency trees. #7933
-
Efficient secret redaction — Switched to Aho-Corasick algorithm for redacting secrets in output, improving performance when many secrets are configured. #7931
Bug Fixes
-
PATH ordering preserved — Fixed an issue where paths added after
mise activatecould get reordered unexpectedly. #7919 -
Lockfile reliability — Atomic writes prevent corruption, cache invalidation works correctly, and URL/SHA256 info is properly preserved when merging platform information. #7923, #7927
-
Template hash filter — The
hashfilter in templates now uses SHA256 instead of Blake3 for broader compatibility. #7925 -
Smarter version pruning —
mise upgradenow respects tracked configs when pruning old versions, preventing accidental removal of versions still in use. #7926 -
Deterministic error output — Failed installations are now sorted, making error messages consistent across runs. #7936
Documentation
- Improved clarity on uvx and pipx dependencies — Thanks @ygormutti for your first contribution! #7878
v2026.1.12: Monorepo Task Resolution
This release focuses on improving the developer experience for monorepo setups and fixing cross-platform compatibility issues. If you've been struggling with task includes in monorepos or encountering strange behavior when cloning plugins on Windows Subsystem for Linux (WSL), this update has you covered.
Bug Fixes
-
Monorepo task includes now resolve correctly - Task includes are now resolved relative to the config file directory rather than the current working directory. This is a significant fix for monorepo users who define tasks in nested config files and expect includes to work relative to where the config lives. (#7917)
-
WSL git clone compatibility - Fixed an issue where
autocrlfsettings could cause problems when cloning git repositories on WSL. Mise now explicitly disablesautocrlfduring git clone operations, preventing line-ending issues that could break plugins and tools on Windows Subsystem for Linux. (#7916)
Documentation
- Added documentation for using bash array patterns with variadic arguments in tasks, making it easier to handle variable numbers of arguments in your task definitions. (#7914) See the tasks documentation for more details.