mise-en-place
The front-end to your dev env Pronounced "MEEZ ahn plahs"
- site: https://mise.jdx.dev/
npm: tools now have their Sigstore provenance verified by default. The first install records the repository that built the package in mise.lock, and later installs must come from that same repository. This release also adds named environment sets in miserc.toml and fixes a range of lockfile, install and shell issues. See Breaking Changes before you upgrade: some installs that worked before can now fail, and new lockfiles use format version 4.
Added
-
npm provenance repository pins. When provenance verification is on,
mise installrecords the GitHub or GitLab repository that annpm:package's provenance names. Later installs of that version fail if the provenance comes from a different repository, or if the package stops publishing provenance. This protects against a release published from somewhere else, for example after a maintainer account is compromised. The pin is written bymise install, notmise lock. #15338 (@jdx)[[tools."npm:@sigstore/bundle"]] version = "3.1.0" backend = "npm:@sigstore/bundle" provenance = { repository = "github.com/sigstore/sigstore-js" } -
gitlab.com CI provenance for npm. npm provenance built on gitlab.com CI/CD now verifies the same way GitHub Actions provenance does, including projects in subgroups. Before, these packages failed with
verified attestation names no source repository. Self-hosted GitLab is not supported. #15335 (@jdx) -
Named environment sets. A shared
miserc.tomlcan now define[env_sets]. You can then select a set by name inenv,MISE_ENVor-E, and mise expands it to the environments it lists. Sets expand one level only, keep their listed order, and drop duplicate entries. A project.miserc.tomlcannot redefine a set from the system or globalmiserc.toml. The newmise bootstrap --save-envwrites the environments given with-EorMISE_ENVtomiserc.local.toml, so latermise bootstrap --updateruns select the same ones. #15327 (@jdx, @owpac)# miserc.toml [env_sets] server = ["server", "ssh", "pac"] workstation = ["workstation", "ssh", "pac", "raycast"]mise bootstrap --from <url> -E workstation --save-env -
Download progress for vfox plugins. When a vfox plugin's
PreInstallreturns aurl, the install line now shows the amount downloaded, the total size and the speed. Before, it showed only the elapsed time. #15323 (@jdx, @carlosemart)
Fixed
- Lockfiles
- Fixed
mise install --lockedfailing withnode@lts is not in the lockfileafter an alias such asltsmoved to a new version, in lockfiles with nolockfile_versionline (format 0). If the tool has exactly one matching entry, mise uses it as the pin.mise lock --upgradenow keeps that pin and binds it to the alias, where before it re-resolved the alias and dropped the old entry. #15301 (@jdx, @simonbuchan) mise installin a project no longer rewrites~/.config/mise/mise.lockunless it installs a global tool. A global tool that a project also declares is now relocked under the backend its own lockfile records. This fixeslockfile generation would change the recorded signererrors frommise lock --globalandmise upgrade --global. #15348 (@jdx, @drewbitt)mise lockno longer warns on every run that the node checksum files from unofficial-builds.nodejs.org (used for the musl targets) are unsigned. Signature failures on nodejs.org or anode.mirror_urlstill fail as before.mise installwith the defaultlockfile_mode = "generate"also stops drawing extra progress rows for lockfile entries it prepares in the background. #15346 (@jdx)
- Fixed
- Zig: zig installs now download from the URL pinned in
mise.lockwithout fetchingindex.json, and still check the minisign signature. When the index can't be read, mise now builds the correct archive name for 0.14.1 and later (zig-{arch}-{os}-…,.zipon Windows) instead of failing with a 404, and it shows the index error. #15351 (@jdx, @sargunv) - Rust: with
RUSTUP_DIST_SERVERset, mise no longer queries GitHub to list Rust versions.latestresolves to the mirror's stable release, and an exact version is checked against the mirror's channel manifest. Version discovery through a mirror is limited to the current stable release. #15326 (@jdx) latestwith non-numeric releases: when a tool's newest release was still insideminimum_release_ageand its releases don't start with a digit (for example Odin'sdev-YYYY-MM),latestcould fall back to a years-old numbered release. mise now picks the newest release the cutoff allows. #15360 (@jdx, @i-api)- aqua on Android: aqua-backed tools now install on Android (Termux). mise treats the host as Linux, selects static musl builds, and refuses binaries that need a loader bionic doesn't provide. The aqua backend also now honors the
osandarchsettings when checking a package's supported platforms. #15347 (@i-api) - pnpm: with
npm.package_manager = "pnpm"and pnpm 11 or later,npm:tools now stay inside their install directory instead of linking into pnpm's global virtual store. Before, restoring onlyMISE_DATA_DIRfrom a CI cache left tools that failed withCannot find module. #15330 (@jdx) - Read-only filesystems:
mise x,mise runand wrapper shims no longer fail on a read-only filesystem when[wrappers]is configured and every wrapper shim already exists. #15300 (@jdx, @liskin) - PowerShell prompt status: with
mise activate pwsh, the prompt that mise wraps, such as starship's, can see$?again, so it shows when a native command failed. #15315 (@meop) mise upgradeno longer prints an out-of-range note for a version that another entry for the same tool already uses, such aspython = ["3.15", "3.14"]. #15359 (@jdx)- mise no longer warns
unknown config file typeon every run for a remembered file that no config type recognizes anymore, such as amain.tfafter you narrowidiomatic_version_file_enable_tools. #15333 (@jdx)
Documentation
- The install docs now recommend the PowerShell script on Windows (
irm https://mise.run/powershell | iex). winget packages can lag behind a release and turn offmise self-update. #15332 (@jdx)
Breaking Changes
-
npm provenance is verified by default. #15341 (@jdx)
npm.provenanceis nowtrueby default. Here is what changes:- An
npm:package whose provenance doesn't verify, or that comes from a repository other than the one pinned inmise.lock, now fails to install. - Packages and registries that publish no provenance install as before, unless
mise.lockalready pins a repository for that version. - Installs through another
npm.package_manager, and local archives pinned only by achecksum, are installed without a check instead of failing. They still fail under theprovenancecategory ofparanoid. - Verification fetches Sigstore's trust roots. If your network blocks them, installs of packages that publish provenance fail until you opt out.
- Only the tool's own package is checked, not its dependencies. Private or authenticated registries are not queried.
To opt out:
[settings.npm] provenance = false # or MISE_NPM_PROVENANCE=0 - An
-
Lockfile format version 4. New lockfiles are written at revision 4, which older mise versions refuse to read (
unsupported lockfile version 4). Make sure everyone who shares a new lockfile runs this release or later. Existing lockfiles keep their revision until you runmise lock --upgrade. At an older revision, mise leaves out the provenance pin and warns. Revision 3 lockfiles now get the usual six-month outdated warning. #15338 (@jdx)
New Contributors
- @meop made their first contribution in #15315
Full Changelog: https://github.com/jdx/mise/compare/v2026.11.0...v2026.11.1
💚 Sponsor mise
mise is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.