mise-en-place

jdx/mise last check 670 releases today
Notes

The front-end to your dev env Pronounced "MEEZ ahn plahs"

Release notes
view on github
2026.11.1 · v2026.11.1: npm provenance verified by default, with repository pins in mise.lock · today

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 install records the GitHub or GitLab repository that an npm: 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 by mise install, not mise 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.toml can now define [env_sets]. You can then select a set by name in env, MISE_ENV or -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.toml cannot redefine a set from the system or global miserc.toml. The new mise bootstrap --save-env writes the environments given with -E or MISE_ENV to miserc.local.toml, so later mise bootstrap --update runs 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 PreInstall returns a url, 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 --locked failing with node@lts is not in the lockfile after an alias such as lts moved to a new version, in lockfiles with no lockfile_version line (format 0). If the tool has exactly one matching entry, mise uses it as the pin. mise lock --upgrade now 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 install in a project no longer rewrites ~/.config/mise/mise.lock unless it installs a global tool. A global tool that a project also declares is now relocked under the backend its own lockfile records. This fixes lockfile generation would change the recorded signer errors from mise lock --global and mise upgrade --global. #15348 (@jdx, @drewbitt)
    • mise lock no 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 a node.mirror_url still fail as before. mise install with the default lockfile_mode = "generate" also stops drawing extra progress rows for lockfile entries it prepares in the background. #15346 (@jdx)
  • Zig: zig installs now download from the URL pinned in mise.lock without fetching index.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}-…, .zip on Windows) instead of failing with a 404, and it shows the index error. #15351 (@jdx, @sargunv)
  • Rust: with RUSTUP_DIST_SERVER set, mise no longer queries GitHub to list Rust versions. latest resolves 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)
  • latest with non-numeric releases: when a tool's newest release was still inside minimum_release_age and its releases don't start with a digit (for example Odin's dev-YYYY-MM), latest could 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 os and arch settings 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 only MISE_DATA_DIR from a CI cache left tools that failed with Cannot find module. #15330 (@jdx)
  • Read-only filesystems: mise x, mise run and 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 upgrade no longer prints an out-of-range note for a version that another entry for the same tool already uses, such as python = ["3.15", "3.14"]. #15359 (@jdx)
  • mise no longer warns unknown config file type on every run for a remembered file that no config type recognizes anymore, such as a main.tf after you narrow idiomatic_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 off mise self-update. #15332 (@jdx)

Breaking Changes

  • npm provenance is verified by default. #15341 (@jdx) npm.provenance is now true by default. Here is what changes:

    • An npm: package whose provenance doesn't verify, or that comes from a repository other than the one pinned in mise.lock, now fails to install.
    • Packages and registries that publish no provenance install as before, unless mise.lock already pins a repository for that version.
    • Installs through another npm.package_manager, and local archives pinned only by a checksum, are installed without a check instead of failing. They still fail under the provenance category of paranoid.
    • 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
    
  • 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 run mise 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.