v2026.4.0

jdx/misev2026.4.0Apr 1, 2026by mise-en-dev

AI Summary

Fixes panic with linked versions on aqua tools, resolves bare task alias lookups in monorepos, and handles Rustup exit codes correctly.

Key Highlights

  • Registry entry for `azd` (Azure Developer CLI).
  • Fix for panic when running `mise doctor` or `mise reshim` on linked aqua-backed tools.
  • Fix for `mise outdated` failing for Rust by handling exit code 100 correctly.
  • Fix for bare task aliases not resolving in monorepo mode.

New Features

  • Azure Developer CLI (azd) registry support

Full Release Notes

This release fixes a panic when using `mise link` with aqua-backed tools, resolves bare task alias lookup in monorepo configurations, and handles a `rustup check` exit code that was incorrectly treated as an error.

## Added

- **Registry: azd (Azure Developer CLI)** -- `azd` is now available as a short name in the mise registry, backed by `aqua:Azure/azure-dev`. Install with `mise use -g azd@latest`. [#8828](https://github.com/jdx/mise/pull/8828) by @rajeshkamal5050

## Fixed

- **Panic with linked versions on aqua-backed tools** -- Running `mise doctor`, `mise reshim`, or any command that calls `list_bin_paths` on an aqua-backed tool with a linked version (created via `mise link`) would panic with a `StripPrefixError`. The root cause was that non-version link names like `"brew"` or `"mylink"` were passed to the aqua registry as version strings, where they unexpectedly matched semver constraints and produced absolute paths. Linked versions are now detected early and skip the aqua registry lookup entirely, returning `install_path/bin` directly. [#8801](https://github.com/jdx/mise/pull/8801) by @nikobockerman

- **`mise outdated` failing for Rust** -- `rustup check` returns exit code 100 when toolchain updates are available, which is normal behavior. Previously, mise treated this as a command failure, causing `mise outdated` to report an error for `core:rust`. The exit code is now handled correctly. [#8832](https://github.com/jdx/mise/pull/8832) by @shalk

- **Bare task aliases not resolving in monorepo mode** -- In a monorepo with `config_roots` configured, running `mise run prl` (a bare alias) would fail with "no task //:prl found", even though `mise run //:prl` worked. The issue was that `expand_colon_task_syntax` expanded bare aliases to `//:prl`, but the task loader then skipped config root discovery entirely. Both bare and prefixed alias forms now resolve correctly, and tab completion also works for monorepo-prefixed aliases. [#8819](https://github.com/jdx/mise/pull/8819) by @nkakouros

- **Task help not shown for metadata-only usage specs** -- When a task script defined `#USAGE long_about`, `before_help`, `after_help`, or `examples` without any `arg` or `flag` directives, `mise run task --help` would show the generic "This task does not accept any arguments" message instead of the usage-based help with the detailed description. [#8824](https://github.com/jdx/mise/pull/8824) by @nkakouros

## New Contributors

- @shalk made their first contribution in [#8832](https://github.com/jdx/mise/pull/8832)
- @jedymatt made their first contribution in [#8833](https://github.com/jdx/mise/pull/8833)
- @nikobockerman made their first contribution in [#8801](https://github.com/jdx/mise/pull/8801)
- @rajeshkamal5050 made their first contribution in [#8828](https://github.com/jdx/mise/pull/8828)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.3.18...v2026.4.0