v2026.5.12

jdx/misev2026.5.12May 19, 2026by mise-en-dev

AI Summary

A focused release that renames the release-age cutoff flag to something more discoverable, deprecates the legacy `default_packages_file` mechanism, and fixes `install_env` propagation.

Key Highlights

  • Renamed `--before` flag to `--minimum-release-age`.
  • Added `mise edit --global` flag for opening global config files.
  • Fixed `install_env` propagation across multiple backends.

New Features

  • Global edit command support
  • Renamed release-age flag
  • Fixed install_env propagation

Full Release Notes

A focused release that renames the release-age cutoff flag to something more discoverable, deprecates the legacy `default_packages_file` mechanism, and fixes several `install_env` propagation gaps across backends.

## Added

- **(cli)** `mise edit --global` / `-g` opens the global config file (`~/.config/mise/config.toml`, or `$MISE_GLOBAL_CONFIG_FILE` if set), bringing `mise edit` in line with `mise use --global`, `mise settings set --global`, and other commands. A positional path still wins over the flag ([#9953](https://github.com/jdx/mise/pull/9953) by @fru1tworld).
- **(cli)** The release-age cutoff flag on `mise install`, `use`, `upgrade`, and `latest` has been renamed from `--before` to `--minimum-release-age`, matching the per-tool option and global setting of the same name. The old `--before` spelling is kept as a hidden alias so existing scripts keep working ([#9768](https://github.com/jdx/mise/pull/9768) by @risu729):

  ```sh
  mise latest node --minimum-release-age 2024-01-01
  mise install --minimum-release-age 90d
  ```

## Fixed

- **(aqua)** Verify cosign bundles that ship a long-lived public key via `cosign.opts --key` locally, instead of routing them through `sigstore-verify`'s unsupported public-key bundle path. This fixes installs like `aqua:stackrox/kube-linter@0.8.3`, which previously failed with `public key verification not yet supported` ([#9972](https://github.com/jdx/mise/pull/9972) by @jdx).
- **(backend)** Per-tool `install_env` is now passed into tool-level `postinstall` hook commands ([#9930](https://github.com/jdx/mise/pull/9930) by @risu729) and applied to command-backed install paths across package-manager backends, vfox `cmd.exec` hooks, SPM build/probe commands, and core language install-time commands ([#9929](https://github.com/jdx/mise/pull/9929) by @risu729).
- **(cargo)** Fall back to `cargo install` (instead of `cargo-binstall`) when tool options require source-build feature selection. `cargo-binstall` is still used for compatible options such as `bin`, `crate`, and `locked` ([#9928](https://github.com/jdx/mise/pull/9928) by @risu729).
- **(config)** Restore the `env_file` setting and the `MISE_ENV_FILE` env var, which had been incorrectly marked deprecated. `env._.file` in `mise.toml` is the right replacement for legacy top-level `env_file` entries, but it's not behaviorally equivalent to `MISE_ENV_FILE=.env`, which uses `FindUp` from the current directory ([#9903](https://github.com/jdx/mise/pull/9903) by @risu729).

## Changed

- **(core)** Default package files are now on a deprecation timeline ([#9970](https://github.com/jdx/mise/pull/9970) by @jdx). The settings `go.default_packages_file`, `node.default_packages_file`, `python.default_packages_file`, and `ruby.default_packages_file` (i.e. `~/.default-go-packages`, `~/.default-npm-packages`, `~/.default-python-packages`, `~/.default-gems`) will start emitting a warning in `2026.11.0` and be removed in `2027.11.0`. The recommended replacements are package-manager backends for CLIs:

  ```toml
  [tools]
  "npm:typescript" = "latest"
  "pipx:black"     = "latest"
  "gem:rubocop"    = "latest"
  "go:github.com/jesseduffield/lazygit" = "latest"
  ```

  or a tool-level `postinstall` hook for packages that really should be installed into every runtime version:

  ```toml
  [tools]
  node = { version = "22", postinstall = "npm install -g typescript" }
  ```

- **(cli)** User-facing help, docs, and the man page now use tool/backend wording instead of plugin/runtime where tools are not necessarily plugins, including renaming `MISE_${PLUGIN}_VERSION` references to `MISE_${TOOL}_VERSION`. `mise tool-alias` now prefers `--tool` as the primary long flag, with `--plugin` retained as an alias ([#9906](https://github.com/jdx/mise/pull/9906) by @risu729).
- **(registry)** The `qsv` shorthand now resolves to `aqua:dathere/qsv` first, falling back to the existing `github:dathere/qsv` and `asdf:vjda/asdf-qsv` entries ([#9910](https://github.com/jdx/mise/pull/9910) by @risu729).
- **(snap)** The snap package is now built and published for `arm64` in addition to `amd64`, so `snap install mise` works on arm64 desktops ([#9948](https://github.com/jdx/mise/pull/9948) by @jnsgruk).

## New Contributors

* @jnsgruk made their first contribution in [#9948](https://github.com/jdx/mise/pull/9948)
* @fru1tworld made their first contribution in [#9953](https://github.com/jdx/mise/pull/9953)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.5.11...v2026.5.12

## 💚 Sponsor mise

mise is built by [@jdx](https://github.com/jdx) under [**en.dev**](https://en.dev) — an independent studio making developer tooling (mise, [aube](https://aube.en.dev/), and more). Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [en.dev](https://en.dev). Individual and company sponsorships keep mise fast, free, and independent.