This release expands the bootstrap package model with Nix support and environment selectors, teaches packslip tools to ship man pages, and adds a task-scoped quiet setting. It also carries a wide batch of packslip, bootstrap, and cross-platform fixes plus a major speedup to dotfiles history rebuilds.
Added
-
bootstrap: Nix is now a built-in
[bootstrap.packages]manager on Linux and macOS. Declare packages with thenix:prefix and apply them through your normal Nix profile; the manager supports use, apply, status JSON, and targeted upgrades while leaving Nix sources, caches, trust, and profile rollback under Nix control. This also addsmise bootstrap packages export --format nixto emit a deterministic NixOS module from yournix:declarations andpackages use --no-installto record declarations without touching package managers. (#13013 by @jdx)[bootstrap.packages] "nix:ripgrep" = "latest"
-
bootstrap:
[bootstrap.packages]entries gain anenvselector (a single environment or a list), so a package is only enabled when one of its listed mise environments is active via-EorMISE_ENV. When bothosandenvare set, both must match. Packages for inactive environments stay declared and are protected from pruning. (#12956 by @jdx)[bootstrap.packages] "brew:postgresql" = { version = "latest", env = ["dev", "test"] }
-
packslip: Packslip-installed tools can now ship man pages declared as static
manresources, alongside completions and agent skills. While a tool version is active, mise prepends its man root toMANPATHand keeps system and caller-defined paths visible, soman <tool>works. Existing installs need to be reinstalled to pick up man pages. (#13012 by @jdx) -
task: New
task.quietsetting (andMISE_TASK_QUIET) suppresses mise's own task messages, prefixes, and command-echo headers without hiding task output or affecting other commands. The bundledoutput = "quiet"mode is deprecated in favor of explicit output style plus this setting; removal is scheduled for 2027.9.3. (#12980 by @jdx)
Fixed
- install: A lazy tool whose
dependstarget is also lazy now installs correctly on first use through a shim,mise x, or a task; mise installs the provider together with its still-missing configured dependencies instead of failing the preflight. (#12997 by @balintant) - backend: 32-bit ARM resolution now uses Go's canonical
armarchitecture name for Aqua (so registry replacements apply), and automatic GitHub release asset selection no longer picks a genericsource.tar.gzwhen no published binary targets the host. (#13004 by @jdx) - bootstrap: Homebrew bottles with hard-linked Mach-O executables are now signed correctly on macOS. Every hard-link alias is tracked and included in the signing list after relocation, fixing cases like fish where an aliased binary was killed with SIGKILL after a successful install. (#12988 by @nettlesh)
- packslip:
mise lock --platformnow verifies the signed release manifest and records the correct URL, checksum, size, and signer for each requested target platform (including Windows x64), so locked installs work across platforms. (#13002 by @jdx) - packslip: On glibc Linux, an artifact's
glibc_minis now honored during selection: when the GNU build requires a newer glibc than the host, mise falls back to a matching static musl build if one exists. (#13009 by @jdx) - packslip: Windows installs now link shims with the correct
.exefilename, while Unix keeps extensionless names. (#13006 by @jdx) - packslip: Activated man roots are now scoped to Packslip-backed tool versions, and the caller's original
MANPATHis included in the environment-cache identity so one cached process cannot serve another caller'sMANPATH. (#13016 by @jdx) - prune:
mise pruneno longer exits successfully without pruning when it cannot show a confirmation prompt; it now fails with guidance to pass--yesor setMISE_YES=1. Follow-up prunes from commands likemise unusestill leave installs in place when nobody can answer. (#13003 by @jdx) - generate:
mise generate tool-stubnow respects a stub's top-levelosselector when deciding whether to write a Windows.cmdlauncher, so a linux/macos-only stub no longer produces a launcher even with--lock. (#13008 by @jdx) - dotfiles: History path filters resolve correctly when
HOMEis a symlink, so aliased, canonical, and tilde paths address the same history entry andshow latest/diffno longer report a missing checkpoint. (#12982 by @azohra) - brew: The published crate now includes the tap formula and cask metadata shims, fixing
cargo install --locked misebuilds from crates.io. (#13001 by @jdx)
Changed
- bootstrap:
[bootstrap].config_rootsand themise bootstrap config-rootscommand are now deprecated (hidden from help and removed from public docs), with removal scheduled for mise 2027.3.3. Existing configurations keep working during the compatibility window but emit a warning directing users to global or system bootstrap configuration. (#13010 by @jdx) - registry: Added basecamp to the registry. (#13024)
Performance
- history: Dotfiles history index rebuilds are dramatically faster, reconstructing checkpoint metadata in-process with gix instead of spawning Git per checkpoint. On an 80-checkpoint, 44-file reproducer this cut a rebuild from roughly 26-28 seconds and thousands of Git processes down to under a second. Removed annotations are now correctly dropped after a rebuild, and SHA-256 history repositories are supported. (#13011 by @jdx)
Deprecated
- The task
output = "quiet"mode (usetask.quietinstead; removal in 2027.9.3) (#12980). [bootstrap].config_rootsandmise bootstrap config-roots(removal in mise 2027.3.3) (#13010).
New Contributors
- @balintant made their first contribution in #12997
Full Changelog: v2026.9.3...v2026.9.4
💚 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.