A focused release that teaches hooks to accept script arrays, ships an npm install -g mise package, and tightens lock identity across several backends so mise.lock entries can no longer be reused for option combinations that resolve to a different artifact set.
Added
-
(config) Hooks now accept
script/scriptsarrays for current-shell hooks (#9836 by @risu729):[hooks.enter] shell = "bash" script = [ "source completions.sh", "export PROJECT_READY=1", ]
Note that
runis still string-only — to spawn multiple inline commands, use a list of{ run = "..." }entries or one multilinerunstring.
Fixed
- (env) PATH entries under mise's installs directory are now treated as mise-managed during
hook-envreactivation, so an inactive install path likeinstalls/node/24/bininherited from a parent shell can no longer sit ahead of the active project'sinstalls/node/22.17.1/bin(#10162 by @risu729). - (config)
.miserc.tomldiscovery now stops at rawMISE_CEILING_PATHSentries (without recursing through the lazy fallback), preventing a parent.miserc.tomlabove the ceiling from injectingMISE_ENV(#10165 by @risu729). - (task)
mise tasks ls --json,tasks info --json, and the MCP tasks resource now serialize fullrunentries — including single task refs and task groups — instead of script-only strings (#10163 by @risu729). - (task) Bump
usage-libto 3.4.0 and update the zsh completion to readdisplay<TAB>insertpairs fromusage complete-word, restoring task completions after theusage-cli3.4.0 output change (#10181 by @jdx). - (installer) Add the missing
warnhelper used by the standalone installer's checksum fallback paths (#10157 by @risu729, recreating @olfway's original fix).
Lock identity
A batch of fixes ensures mise lock selects entries by an identity that actually reflects the installed result, so toggling an option no longer silently reuses a stale lock entry:
- (conda) Include the conda channel — the same
tool@versionresolved againstconda-forge,bioconda, or a private channel can produce entirely different builds and checksums (#9984 by @risu729). - (rust) Include rustup
profile,components, andtargets, read from both tool options andrust-toolchain.toml, with stable sorting (#9988 by @risu729). - (github) Include target artifact selectors (
api_url,version_prefix, per-platformasset_pattern, directurl,no_app) for GitHub, GitLab, and Forgejo backends, resolved per target platform (#9985 by @risu729). - (python) Include non-default
patch_sysconfig = false(the interpreter tree differs after install);virtualenvstays out as an activation-only overlay (#10161 by @risu729).
Changed
- (npm) mise is now published to npm under the unscoped
misepackage, sonpm install -g miseandnpx misework directly. The legacy@jdxcode/misescoped package continues to be published, and the new wrapper reuses the existing@jdxcode/mise-<os>-<arch>platform tarballs (#10183 by @jdx).
Full Changelog: v2026.5.17...v2026.5.18
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.