github jdx/mise v2026.3.9
v2026.3.9: Shared install directories, secret redaction, and better Ctrl-C handling

7 hours ago

This release introduces experimental shared install directories for multi-user environments, improves secret redaction in mise set and task output, and fixes several issues with Ctrl-C handling, tool auto-installation before prepare steps, and aqua symlink_bins behavior.

Highlights

  • Shared and system install directories -- Pre-install tools to /usr/local/share/mise/installs (or a custom path) so all users on a machine or in a container can share them without re-downloading. Ideal for Docker images, devcontainers, and bastion hosts.
  • Secret redaction in mise set -- Environment variables marked redact = true or matching redactions patterns are now hidden in mise set output by default, with --no-redact to override.
  • Faster latest-version resolution for GitHub tools -- The GitHub backend now hits the releases/latest API endpoint directly instead of paginating through all releases, which is significantly faster for repositories with many pre-releases.

Added

  • [experimental] Shared and system install directories -- mise install --system installs tools to /usr/local/share/mise/installs (or MISE_SYSTEM_DATA_DIR/installs), where every user's mise instance will find them automatically. mise install --shared <path> installs to a custom shared directory. Additional read-only lookup directories can be configured via the shared_install_dirs setting or MISE_SHARED_INSTALL_DIRS (colon-separated). Shared versions appear in mise ls with (system) or (shared) labels. See the updated Docker cookbook for usage examples. #8581 by @jdx

  • GitHub backend uses releases/latest endpoint -- Resolving the latest stable version for GitHub-hosted tools now calls the dedicated releases/latest API endpoint instead of paginating through all releases. This is especially helpful for repositories with many pre-releases (e.g. unikraft/kraftkit) where the old approach required fetching multiple pages. Falls back to the previous behavior if the endpoint fails or the result doesn't match a configured version_prefix. #8516 by @roele

  • vfox tool plugins record provenance in lockfiles -- mise lock and mise install now record and enforce supply-chain provenance (GitHub Attestations, SLSA, Cosign) for vfox tool plugins, bringing them to parity with aqua and github backends for downgrade-attack detection. #8544 by @malept

Fixed

  • mise set now redacts secrets by default -- Values with redact = true or matching redactions glob patterns are shown as [redacted] in mise set output. Age-encrypted values default to redacted unless explicitly redact = false. Use --no-redact to reveal raw values. Task-specific env vars from env._.file or task-level redact = true are also now properly redacted in mise run output. #8583 by @jdx

  • Aqua symlink_bins now works for packages without a files field -- When an aqua registry entry has no files field, symlink_bins = true previously left .mise-bins empty, making the tool invisible on PATH. Now the inferred main binary is included in the symlink directory, matching the existing install-time fallback logic. #8550 by @AlexanderTheGrey

  • Ctrl-C reliably interrupts tool downloads during mise run -- Previously, mise run disabled Ctrl-C exit handling before tool installation began, so pressing Ctrl-C during a download was silently ignored. Now Ctrl-C exits immediately during downloads, and during task execution the first Ctrl-C kills child processes while a second Ctrl-C force-exits mise. #8571 by @jdx

  • File task headers now allow spaces around = -- Task header lines like #MISE env._.file = "env.yaml" (with spaces around =) are now parsed correctly. Previously only #MISE env._.file="env.yaml" (no spaces) was recognized. #8574 by @roele

  • mise prepare installs config tools before running prepare steps -- On clean machines, prepare steps that depend on tools declared in [tools] (e.g. uv) would fail because the tools hadn't been installed yet. Now both mise prepare and mise run install all configured tools before executing prepare commands. #8582 by @jdx

Changed

  • MISE_SYSTEM_DIR has been renamed to MISE_SYSTEM_CONFIG_DIR for clarity alongside the new MISE_SYSTEM_DATA_DIR. The old name is still supported as a legacy alias. #8581

New Contributors

Full Changelog: v2026.3.8...v2026.3.9

Don't miss a new mise release

NewReleases is sending notifications on new releases.