Skip to content

Releases: jdx/mise

v2026.2.17: Freshly Prepared

19 Feb 11:13
Immutable release. Only release title and notes can be modified.
v2026.2.17
704c3f1

Choose a tag to compare

A moderate release with a handful of bug fixes and a new feature for the prepare system.

Highlights

  • Prepare: auto-touch stale outputs — When tools like uv sync skip work because dependencies are already satisfied, output files don't get updated, causing mise to consider them stale on the next run. Prepare providers now automatically touch output files after a successful command, keeping staleness checks accurate. This is controlled by a new touch_outputs config option (defaults to true). #8243 by @halms

  • Settings reorganization: task_*task.* — Nine flat task_* settings have been consolidated into a nested task.* namespace (e.g., task_outputtask.output). The old names still work with no breaking changes — deprecation warnings won't appear until 2026.8.0. #8239

Bug Fixes

  • Postinstall hooks now use correct bin paths — Per-tool postinstall hooks were hardcoding $install_path/bin on PATH, which broke backends like aqua where binaries live in non-standard subdirectories. Hooks now use each backend's actual binary paths. #8234

  • mise use writes to the correct config file — When both config.toml and config.local.toml exist, mise use was incorrectly writing to config.local.toml. It now properly targets config.toml. #8240

  • Legacy .mise.backend installs no longer block auto-migration — Legacy backend files were defaulting to explicit_backend = true, which prevented auto-migration to updated registry backends. They now default to non-explicit, allowing tools like glab to resolve correctly through the current registry. #8245 by @jean-humann

📦 Aqua Registry Updates

Updated Packages (1)

v2026.2.16: MCP Gets Its Hands Dirty

18 Feb 12:42
Immutable release. Only release title and notes can be modified.
v2026.2.16
031430c

Choose a tag to compare

This release brings MCP task execution support, better Node.js flavor guidance, and a solid round of bug fixes across several backends.

Highlights

  • MCP run_task tool — You can now execute mise tasks directly through the MCP interface. The new run_task tool runs tasks via subprocess with full stdout/stderr capture, timeout support, and hardened execution. An install_tool stub is also included for future expansion. #8179 by @joaommartins
  • Node flavor suggestions — When a Node.js version isn't found in the configured mirror, mise now suggests setting node.flavor to help you get to the right download faster. #8206 by @risu729
  • Registry stack overflow fix — The registry BTreeMap is now built directly on the heap, eliminating a stack overflow that could occur with large registries. #8214 by @risu729

Bug Fixes

  • Java version sorting — Shorthand Java versions (e.g., 21, 17) now sort correctly. #8197 by @roele
  • Node env var migration — Node-related environment variables have been properly migrated to the settings system. #8200 by @risu729
  • Registry overrides in shims — Registry overrides are now correctly applied when running tools through shims. #8199 by @risu729
  • Rust outdated duplication — Fixed mise outdated showing Rust versions twice. #8209 by @roele
  • GitHub aliased backend resolution — Version lookups no longer break for tools aliased to a different backend than the registry default. #8221
  • GitHub attestation output — Attestation verification success is now shown in progress output. #8230
  • Cargo binstall setting migrationMISE_CARGO_BINSTALL_ONLY has been migrated to the settings system. #8202 by @risu729

New Tools

v2026.2.15: Streaming in Order

17 Feb 11:11
Immutable release. Only release title and notes can be modified.
v2026.2.15
79639cc

Choose a tag to compare

This release brings a nice quality-of-life improvement to task execution along with a solid batch of bug fixes across several subsystems.

Highlights

  • Real-time streaming for keep-order tasks — The keep_order task output mode now streams the active task's output in real-time instead of buffering everything until completion. Other parallel tasks buffer quietly and flush in definition order as they finish, so you get live feedback without sacrificing deterministic output ordering. #8164

  • npm backend performancenpm view is now called only once per package lookup instead of multiple times, speeding up npm-based tool resolution. Thanks @risu729! #8181

Bug Fixes

  • Recursive shim execution on Windowsmise exec now strips the shims directory from PATH during executable lookup, preventing infinite recursion when shims call back into mise x. #8189
  • PATH reordering after activationhook-env now preserves any PATH reordering done after mise activate (e.g., by ~/.zlogin), instead of silently reverting to the original order. #8190
  • Cross-platform lockfile resolution — The aqua backend now correctly resolves lockfile artifacts for the target platform instead of leaking host-specific overrides into mise lock --platform. Thanks @mackwic! #8183
  • Version alias lockfile lookup — Version aliases (like lts) are now resolved before lockfile lookup, so locked versions are matched correctly. #8194
  • Task source freshness checks — Freshness checks now work correctly with dynamic task directories. Thanks @rooperuu! #8169
  • Global tasks in monorepos — Global tasks are now properly resolved when running from a monorepo root. #8192
  • Wildcard glob matchingtest:* no longer incorrectly matches the parent test task. #8165
  • task_config.includes paths — Include paths in task config are now resolved relative to the config root, not the working directory. #8193
  • Upgrade safetymise upgrade now skips untrusted tracked configs instead of failing. #8195
  • helm-diff registry entry — Fixed the archive binary name for helm-diff. Thanks @jean-humann! #8173

New Contributors

Welcome @jean-humann, @mackwic, and @rooperuu!

📦 Aqua Registry Updates

New Packages (2)

v2026.2.14

17 Feb 14:33
@jdx jdx
Immutable release. Only release title and notes can be modified.
v2026.2.14
3d2b9e4

Choose a tag to compare

A feature-focused release adding vfox plugin env redaction, Deno devEngines support, and a new Rust default_host setting.

Highlights

  • Vfox env var redaction — Vfox plugins can now request that specific environment variables be redacted from logs and debug output by returning a redact field in MiseEnvResult. Useful for plugins that inject secrets or tokens. #8166

  • Deno devEngines.runtime support — Mise now reads the devEngines.runtime field from package.json to auto-detect the desired Deno version, matching the same convention already supported for Node. Thanks @risu729! #8144

  • default_host setting for Rust — A new rust.default_host setting lets you override the Rust target triple used during installation, useful for cross-compilation setups. Thanks @aacebedo! #8154

  • Aqua github_content package support — The aqua backend now supports packages hosted via GitHub content downloads (not just releases). Thanks @risu729! #8147

Bug Fixes

  • mise edit whitespace — TOML values edited via mise edit no longer retain extra formatting whitespace. #8162
  • --locked for python/ubi — The --locked flag now works correctly with python and ubi backends. #8163
  • npm update notifier — The npm update notifier is now suppressed during npm install, preventing spurious output. Thanks @risu729! #8152
  • Asset matcher vsix penalty.vsix files are now deprioritized in asset matching, preventing incorrect downloads. Thanks @risu729! #8151
  • JSON schema updates — Added missing task_templates, extends, and timeout fields to the mise.json schema. Thanks @risu729! #8145

New Contributors

Welcome @joaommartins! #8133


Note: This release has no attached binary assets. The v2026.2.14 tag was created successfully but the GitHub Actions workflow that publishes release artifacts did not trigger for the tag push. The binaries for this version are functionally identical to v2026.2.15 minus the additional fixes in that release. Use v2026.2.15 instead.

v2026.2.13: Fix GitHub attestation verification failures

15 Feb 10:55
Immutable release. Only release title and notes can be modified.
v2026.2.13
ed30ed3

Choose a tag to compare

This release partially mitigates GitHub attestation verification failures that were causing tool installations to fail (e.g., gh, and other aqua-backed tools with attestations enabled). See #8142 for details.

What happened

GitHub silently changed their attestations API to externalize bundle storage to Azure Blob Storage (tmaproduction.blob.core.windows.net) using Snappy compression, rather than returning bundles inline as JSON. The gh CLI had already been updated to handle this (cli/cli#10185), but third-party tools like mise were not yet aware of the new format, causing "error decoding response body" failures.

What this release does

Bumps sigstore-verification to 0.2, which splits the reqwest dependency version from mise's (0.13 vs 0.12). This avoids Cargo feature unification that was causing mise's gzip feature to be applied to attestation requests, interfering with the Snappy-compressed responses.

Note: A full fix with proper Snappy decompression support and auth token scoping landed in sigstore-verification v0.2.1 (#22, #23) — expect a follow-up mise release with that bump.

If you are still hitting issues, set settings.aqua.github_attestations = false as a workaround.

Dependency Updates

  • Bumped sigstore-verification to 0.2 (e8897c9)

📦 Aqua Registry Updates

New Packages (1)

Updated Packages (1)

v2026.2.12

17 Feb 14:37
@jdx jdx
Immutable release. Only release title and notes can be modified.
v2026.2.12
1931ee2

Choose a tag to compare

A small release adding a new Java configuration option.

Highlights

  • java.shorthand_vendor setting — A new setting that lets you configure which vendor is used when specifying shorthand Java versions (e.g., 21 instead of temurin-21). Thanks @roele! #8134

Note: This release has no attached binary assets. The v2026.2.12 tag was created but the GitHub Actions workflow that publishes release artifacts did not trigger for the tag push. Use v2026.2.13 or later instead.

v2026.2.11: Templates Level Up

12 Feb 17:34
Immutable release. Only release title and notes can be modified.
v2026.2.11
da33307

Choose a tag to compare

A small release with a nice quality-of-life improvement for tera template users and a bug fix for file watching.

Highlights

  • Array access for multi-version tools in tera templates — If you have multiple versions of a tool installed, you can now access them individually in tera templates via tools.<name>[0].path, tools.<name>[1].path, etc. Single-version tools continue to work as before with tools.<name>.path. #8129

Bug Fixes

  • hook-env now watches files used in tera templates — Files referenced by template functions like read_file(), hash_file(), file_size(), and last_modified() are now properly tracked by hook-env. Previously, changes to these files wouldn't trigger an environment refresh until you changed directories. #8122

New Tools

v2026.2.10: Shims, Stdin, and Smarter Offline

12 Feb 03:23
Immutable release. Only release title and notes can be modified.
v2026.2.10
3e65616

Choose a tag to compare

This release brings several quality-of-life features alongside a solid round of bug fixes.

Highlights

  • Shims as PATH fallback during activation — When not_found_auto_install is enabled (the default), mise now adds the shims directory to your PATH as a fallback. This fixes a subtle issue where subshells or child processes could miss uninstalled tools or pick up the wrong system version instead of the mise-managed one. Thanks @ctaintor for this contribution! #8106

  • tools variable in Tera templates — You can now reference {{ tools.node.version }} and {{ tools.node.path }} directly in env templates and task templates (with tools = true), eliminating the need for exec(command='node --version') workarounds. #8108Template docs

  • mise set --stdin for multiline values — Need to set an SSH key, certificate, or other multiline value as an environment variable? mise set --stdin MY_KEY now reads from stdin until EOF. #8110

Bug Fixes

  • MISE_OFFLINE now works correctly — Previously, offline mode could hang or error out instead of gracefully falling back to local data. This is now fixed, and offline/prefer_offline are proper settings configurable in mise.toml. #8109
  • Upgrade symlink cleanup — Fixed an issue where mise upgrade could leave behind invalid symlinks when uninstalling old versions, thanks @roele. #8099 #8101
  • Conda dependency resolution — Improved patchelf handling and dependency version pinning for complex conda packages on Linux. #8087
  • SLSA provenance for Docker Buildx — Tools like github:docker/buildx that ship in-toto statements without sigstore signatures no longer fail verification, thanks @gerhard. #8094
  • Vfox plugin auto-installation — Fixed a clean-setup failure where vfox-backed env modules would error with "Plugin directory not found" before the plugin was installed, thanks @pose. #8035
  • GitHub latest version prefix — The v prefix is no longer incorrectly added when resolving "latest" for GitHub release backends. #8105
  • GitLab tool options — Tool options from config are now correctly resolved for aliased GitLab tools. #8084
  • Flutter version resolution — Fixed version resolution by using version_expr. #8081
  • Tuist on Linux — Registry now includes Linux support for tuist, thanks @fortmarek. #8102

Registry

  • Added conda backends for mysql, ffmpeg, ghc, vim, and several other previously asdf-only tools. #8080 #8083
  • Added podman-tui, thanks @tony-sol. #8098

New Contributors

Welcome @ctaintor, @rileychh, @fortmarek, @pose, and @gerhard — thanks for your first contributions!

📦 Aqua Registry Updates

New Packages (2)

Updated Packages (1)

v2026.2.9: Ruby Plays Nice with Legacy Linux

10 Feb 12:00
Immutable release. Only release title and notes can be modified.
v2026.2.9
0c9d5c5

Choose a tag to compare

This release brings a quality-of-life improvement for Ruby users on older Linux distributions, plus a couple of important bug fixes.

Highlights

Automatic Ruby variant selection for older glibc systems (#8069)

If you're running Linux with glibc older than 2.35 (common on RHEL 7, Amazon Linux 2, CentOS 7, or older Debian/Ubuntu versions), mise will now automatically download the no-YJIT precompiled Ruby variant instead of failing with cryptic errors. This means precompiled Ruby "just works" on a much wider range of Linux systems without any manual configuration. Systems with glibc 2.35+ (Ubuntu 22.04+, Debian 12+, Fedora 36+) continue to get the standard YJIT-enabled builds as before.

Bug Fixes

  • Windows shim updates with self-update (#8075) — mise self-update on Windows now properly updates mise-shim.exe alongside mise.exe. Previously, users had to manually download the shim from GitHub releases after updating.

  • Fixed cargo install mise (#8077) — Bumped the xx dependency to 2.5 to fix an issue where Cargo was selecting an incompatible older version, causing installation failures. Thanks @erickt for the fix and welcome to mise!

Documentation

  • Ruby precompiled binaries are no longer marked as experimental (#8073) — they're stable and ready for production use.

📦 Aqua Registry Updates

Updated Packages (1)

v2026.2.8: Hooks Get Their Act Together

09 Feb 11:19
Immutable release. Only release title and notes can be modified.
v2026.2.8
67b504b

Choose a tag to compare

This release focuses on hooks—fixing 12 community-reported issues that were making them unreliable. There are also some nice quality-of-life improvements for Node.js and Ruby users.

Highlights

Hooks overhaul — A comprehensive fix for the hooks system addressing a dozen issues reported by the community. Global hooks now actually work, hook execution order is corrected (leave fires before enter), infinite loops in fish shell are fixed, and postinstall hooks can now find all installed tools. #8058

Node version detection from package.json — mise now reads tool versions directly from package.json using the devEngines and packageManager fields. This means your Node, Bun, pnpm, yarn, and npm versions can be auto-detected without a separate .tool-versions or mise.toml file. Semver ranges are simplified automatically (>=18.0.018). #8059

Precompiled Ruby goes stable — You can now use precompiled Ruby binaries by setting ruby.compile=false without needing experimental=true. This will become the default in 2026.8.0. If you haven't tried it, precompiled Ruby installs in seconds instead of minutes. #8052

New Features

  • --dry-run-code flag — Added to install, upgrade, prune, uninstall, and use commands. Behaves like --dry-run but exits with code 1 when there's work to do, enabling patterns like if ! mise install --dry-run-code -q; then mise install; fi #8063

Bug Fixes

  • MISE_ARCH override — The bun and erlang plugins now respect MISE_ARCH at runtime, which is useful for Windows ARM64 users running x64 binaries under emulation #8062
  • key=value formatmise settings set, mise settings add, mise config set, and mise shell-alias set now accept key=value as a single argument #8053

Registry

Dependencies

  • Upgraded to TOML 1.1 support via toml 0.9 and toml_edit 0.24 #8057