mise-en-place
The front-end to your dev env Pronounced "MEEZ ahn plahs"
- site: https://mise.jdx.dev/
This release brings improvements to shims PATH ordering, GitHub authentication, and supply chain security, along with several bug fixes for env plugin watch file tracking, Python precompiled build selection, and the --silent flag.
Highlights
- Shims always at the front of PATH --
mise activate --shimsnow guarantees shims are prepended even when already present (e.g. after VS Code re-sources shell config), fixing tools being silently bypassed. - Supply chain security for github: tools -- Upgrading a
github:backend tool to a version that drops provenance verification (e.g. GitHub Attestations) is now blocked with an explicit error, protecting against supply chain attacks. - New GitHub auth features --
github_tokens.tomlfor per-host tokens, optionalgit credential fillintegration, and a newmise github tokencommand to inspect which token mise would use. - hook-env stabilization fixes -- A comprehensive fix for env plugin
watch_filesnot being tracked, and hook-env failing to stabilize whenmise.lockis absent or directory mtimes change.
Added
-
Supply chain protection for github: tools -- When running
mise lockor installing/upgrading agithub:backend tool, mise now checks whether the new version has provenance verification if the previously-locked version did. If provenance would be lost, the operation is blocked with an error citing the prior verified version (e.g.github:jdx/usage@1.6.0 has no provenance verification on linux-x64, but github:jdx/usage@1.5.0 had github-attestations). The old lockfile entry is preserved so the error persists until manually resolved. #8706 by @jdx -
github_tokens.tomlandmise github tokencommand -- A new$MISE_CONFIG_DIR/github_tokens.tomlfile lets you store per-host GitHub tokens without touching the gh CLI'shosts.yml. Optionalgit credential fillintegration (opt-in viagithub.use_git_credentials = true) enables using macOS Keychain, Windows Credential Manager, and other git credential helpers. The newmise github token [host]command shows which token mise would use and its source; pass--unmaskto reveal the full value. #8742 by @jdxUpdated token priority for github.com:
# Source 1 MISE_GITHUB_TOKENenv var2 GITHUB_API_TOKENenv var3 GITHUB_TOKENenv var4 credential_command(if set)5 github_tokens.toml(per-host)6 gh CLI token (from hosts.yml)7 git credential fill(if enabled) -
Registry: added
acli(Atlassian CLI for Jira, Confluence, and Bitbucket) via the aqua backend. #8721 by @ggoggam -
Registry: added
tart(macOS and Linux VMs on Apple Silicon using Apple's Virtualization.framework) via the aqua backend. #8727 by @mnm364
Fixed
-
Shims always prepended in
--shimsmode -- When usingmise activate bash --shims(or any shell), if the shims directory was already inPATH(e.g. from a prior activation), mise would skip the prepend and leave shims at their existing position. This meant tools could be silently bypassed by system binaries earlier inPATH. Shims are now always moved to the front. For fish,MovePrependEnvis used to avoid duplicates; for other shells,PrependEnvis emitted unconditionally. #8757 by @ctaintor -
Shim detection no longer hangs on macOS -- A previous change switched shim detection from checking the binary name to checking whether
argv[0]exists in the shims directory. This caused mise to hang on startup for users with slow or network-mounted filesystems, and could falsely detect mise itself as a shim. Detection has been reverted to the binary-name approach. e1b8ca4 by @jdx -
hook-env watch_files and stabilization -- Env plugins (
MiseEnvmodules) can declarewatch_files, but those files were never tracked in the hook-env session or cache. Modifying a watched file (e.g. a secrets config) would not trigger re-evaluation. Four tracking gaps were fixed across the slow-path check, session building, and cache invalidation. Additionally, projects without amise.lockfile could prevent hook-env from ever stabilizing because the nonexistent file was unconditionally added to the watch set. Directory mtime changes also prevented stabilization after a slow-path run. All three issues are now fixed. #8716 by @rpendleton -
mise install --systemruntime symlinks -- Installing a tool withmise install --systemfailed to createlatestand partial-version symlinks (e.g.node@22) in the system install directory. The symlink rebuild logic now iterates all install directories (user and shared/system) and creates symlinks based on versions present in each. #8722 by @jdx -
Python freethreaded build exclusion -- When a
precompiled_flavorwas set (e.g.install_only_stripped),mise lockcould incorrectly select a freethreaded Python build. The exclusion logic now only allows freethreaded builds when the requested flavor explicitly includesfreethreaded. #8745 by @risu729 -
--silentflag now suppresses mise's own output -- The global--silentCLI flag was never written toSettings, somise --silent run foowould suppress task output but still print mise's own info and warning messages.--silentnow setsquiet = trueinternally, making it a proper superset of--quiet. #8720 by @nkakouros -
credential_commandpriority -- Thegithub.credential_commandsetting now takes priority overgithub_tokens.tomland the gh CLI'shosts.yml, since it represents an explicit user configuration. Previously it sat below both file-based sources. 74570de by @jdx -
Zsh completions -- Updated to match usage v3.1.0's new
_describecompletion pattern. #8715 by @jdx -
Python docs: Fixed swapped default values in the documentation for
python.precompiled_archandpython.precompiled_os. #8744 by @risu729
Changed
- The
cargo install misecommand in documentation now includes--lockedto prevent build failures from dependency version mismatches. #8731 by @rtharston
New Contributors
- @ctaintor made their first contribution in #8757
- @ggoggam made their first contribution in #8721
- @mnm364 made their first contribution in #8727
- @rpendleton made their first contribution in #8716
- @nkakouros made their first contribution in #8720
- @rtharston made their first contribution in #8731
- @risu729 made their first contribution in #8744 and #8745
Full Changelog: https://github.com/jdx/mise/compare/v2026.3.16...v2026.3.17