You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pkgx: backend: install pkgx pantry packages natively (no pkgx CLI required), with checksum-verified bottles, dependency resolution, and lockfile support via pkgx_deps and a shared [pkgx-packages] section (#10408 by @jdx).
[bootstrap.macos.launchd.agents] for declarative macOS user LaunchAgents, plus mise bootstrap launchd apply / status (#10396 by @jdx).
[bootstrap.linux.systemd.units] for declarative systemd user services, plus mise bootstrap systemd apply / status (#10399 by @jdx).
[bootstrap.hooks] to run shell commands at named bootstrap phases (pre-packages, post-dotfiles, post-tools, final, etc.), honoring --dry-run (#10395 by @jdx).
Friendly macOS defaults sections: [bootstrap.macos.dock], [bootstrap.macos.finder], [bootstrap.macos.keyboard], [bootstrap.macos.trackpad] with curated keys like show_all_files and tap_to_click (#10398 by @jdx).
mas: package manager for [bootstrap.packages] to install Mac App Store apps by ADAM ID (#10397 by @jdx).
mise bootstrap --force-dotfiles to replace conflicting whole-file dotfile targets, plus no-force replacement of regular files whose contents match the symlink source (#10410 by @jdx).
tbz recognized as an alias for tar.bz2 extraction (#10403 by @risu729).
Non-registry plugin URLs prompt before clone (#10402 by @risu729).
Aqua: {{.AssetWithoutExt}} strips the full aqua format list including .zst (#10104 by @risu729).
Aqua: unsupported formats (tar.br, br, tar.lz4, lz4, tar.sz, sz, rar) fail with clear errors (#10409 by @risu729).
Erlang: precompiled lockfile URLs resolve for Linux/macOS/Windows without a prior install; kerl fallback mode is recorded in lock identity (#10239 by @risu729).
Registry: ImageMagick aqua backend scoped to windows-x64 (#10400 by @risu729).
Documentation
Document precompiled Ruby build revisions (#10419 by @jdx).
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
mise bootstrap command for end-to-end machine setup — system packages, dotfiles, macOS defaults, login shell, tools, and an optional bootstrap task — with --yes, --dry-run, and --update (#10365, #10376 by @jdx).
Declarative dotfiles via [dotfiles] plus mise dotfiles add / apply / edit / status, supporting symlink, symlink-each, copy, and template modes, glob wildcards in source paths, and block/line edits to files mise doesn't own (#10365, #10368, #10374, #10376 by @jdx).
[bootstrap.macos.defaults] for declaratively managing macOS user defaults, applied through mise bootstrap macos-defaults apply with drift reporting in status and mise doctor (#10363 by @jdx).
[bootstrap.user].login_shell to declare and converge the current user's login shell (chsh -s, updating /etc/shells when needed) (#10377 by @jdx).
[bootstrap.brew.taps] and mise bootstrap packages brew tap / untap for third-party Homebrew taps, with tap context preserved through dependency resolution and source builds (#10375, #10383 by @jdx).
brew-cask: package manager that installs supported app-bundle casks directly from cask API metadata without requiring a local Homebrew install (#10383 by @jdx).
Native Homebrew source builds: when no usable bottle exists, mise provisions Ruby, evaluates the formula with a built-in Formula DSL shim, and builds from source into the canonical prefix (#10364 by @jdx).
mise oci build now bakes [dotfiles] and apt:[bootstrap.packages] into images as dedicated annotated OCI layers (#10373 by @jdx).
Safe mise.toml files (no templates, only min_version and plain [tools] / [tasks] strings) auto-load without a trust prompt; everything else still requires trust (#10360 by @jdx).
Fixed
CLI no longer panics on arguments containing invalid UTF-8; malformed bytes become U+FFFD and surface as a normal error (#10386 by @JamBalaya56562, fixes #10056).
GitHub 403 errors now include the response body, rate-limit headers, and whether the request was authenticated, replacing the bare 403 Forbidden message (#10382 by @jdx).
Brew shim (shim.rb) is now included in the published crate, fixing cargo publish for the source-build path (#10388 by @jdx).
Changed
MCP server, sandboxing, hooks/watch_files, monorepo tasks, task templates, native GitHub OAuth, custom vfox backends, Swift, and the dotnet/s3/spm backends are no longer experimental; the monorepo root key is now monorepo_root (with experimental_monorepo_root kept as a hidden alias) (#10371 by @jdx).
Version lists for mise-versions are now fetched from /data/{tool}.toml so Cloudflare can serve them as static assets (#10361 by @jdx).
Split archive extraction and single-file decompression into dedicated helpers (extract_archive, decompress_file), with clearer errors for unsupported formats (#10274 by @risu729).
Link to all sponsors, add more tips-and-tricks entries, clarify contribution fit, and make the contributing guide canonical (#10369, #10370, #10378, #10380 by @jdx).
This release closes several trust-bypass vectors where a local mise.toml or mise-tasks/ directory could run code before the user trusted a project, and brings aqua's GitHub attestation verification in line with what the registry asks for.
Fixed
(config) Treat github.credential_command, gitlab.credential_command, and forgejo.credential_command as global-only. They are stripped from project/local config at parse time (with a warning) so an untrusted mise.toml cannot use a credential command to execute arbitrary shell when fetching tokens. Global config, CLI flags, and environment variables are unchanged (#10356 by @jdx).
(config) Fix GHSA-436v-8fw5-4mj8 by ignoring ci, paranoid, trusted_config_paths, and yes when they come from local config files. A malicious mise.toml can no longer set trusted_config_paths = ["/"] or paranoid = false to auto-trust itself before _.source scripts run (#10357 by @jdx).
(task) Require trust before loading default task include directories (mise-tasks/, .mise-tasks/, and related layouts) in repos with no local mise config. Previously, a clone with only a mise-tasks/ directory could render Tera templates (including exec()) in task descriptions before the user trusted the project. Global task include paths and includes declared from a trusted mise.toml are still exempt (#10355 by @jdx).
(aqua) Model and forward github_artifact_attestations.predicate_type to GitHub during attestation detection and verification. Packages like foundry-rs/foundry and gleam-lang/gleam that pin an SPDX SBOM predicate now enforce that predicate instead of accepting whatever attestation happens to verify. Predicate-filtered requests bypass the digest-only versions-host attestation cache (#10169 by @risu729).
(aqua) Canonicalize aqua var options across plain keys, nested vars tables, and literal "vars.<name>" backend-option keys into a single lock/cache identity. Duplicate final vars now fail with a source-neutral conflicting aqua var error rather than silently picking one spelling; normal higher-precedence config overrides still apply (#10187 by @risu729).
(schema) Forbid hide, quiet, raw, interactive, and raw_args on [task_templates.*] in the JSON Schema, and drop the unused fields from TaskTemplate. Runtime never merged these into tasks (templates can't tell "unset" from false for plain bools), so editors no longer suggest keys that did nothing (#10242 by @risu729).
(schema) Accept supported OS, architecture, and os-arch selectors on registry backend platforms entries and backends.options.platforms.* tables — for example windows-x64, linux-arm64, darwin-aarch64, macos-arm64 — fixing false schema errors reported in discussion #10296 (#10358 by @risu729).
(system) Declarative system packages ([system.packages]) for apt, dnf, pacman, and Homebrew core formulae (installed without a brew CLI) via new experimental mise system status / install commands (#10326 by @jdx).
(system) New mise system use and mise system upgrade to write [system.packages] entries and refresh installed system packages (#10346 by @jdx).
(github) Added matching (substring) and matching_regex asset options to the github, gitlab, and forgejo backends, applied before platform autodetection and scoped through SLSA provenance verification (#10325 by @devnulled).
(oci)mise oci build --owner UID[:GID] plus [oci].user_id / [oci].group_id config for layer file ownership (#10075 by @ThomasK33).
Fixed
(backend)--minimum-release-age=0s now correctly disables the release-age cutoff instead of falling back to the default, and stable fast-path metadata avoids an unnecessary full version-list fetch (#10344 by @jdx).
(aqua) Route GitHub metadata through mise-versions only for mise-registry-backed Aqua tools, eliminating noisy 403 warnings for packages like aqua:aws/session-manager-plugin (#10341 by @jdx).
(aqua) Support overrides[].envs selectors so platform-specific Aqua overrides for packages like apache/tomcat and eza-community/eza apply correctly (#10200 by @risu729).
(task) Resolve monorepo-relative task refs (:task, //pkg:task, aliases) the same way at validation time as runtime, so mise tasks validate no longer reports false missing-dependency errors (#10342 by @jdx).
(task) Forwarded args now reach inline bash -c tasks on Windows instead of being assigned to $0 (#10321 by @JamBalaya56562).
(task) Multiline task description values are surfaced in mise <task> --help and mise run <task> --help while task listings remain single-line (#10204 by @risu729).
(tasks) Refactor editor (EDITOR / VISUAL) command handling to support values with arguments and improve error reporting (#9752 by @roele).
(core) Preserve inner double quotes for the remaining cmd /c call sites on Windows (mise exec -c, tera exec(), watch_files, postinstall hooks, [deps], credential commands) (#10323 by @JamBalaya56562).
(install) Skip unknown tools that are inactive on the current OS or disabled via disable_tools/enable_tools before raising registry errors (#10206 by @risu729).
(java) Include the resolved shorthand_vendor in the lockfile identity for shorthand requests like java@17 (#9989 by @risu729).
(dotnet) Include runtime in the core .NET plugin lockfile identity so SDK and runtime installs no longer share a lock entry (#10175 by @risu729).
This release smooths over follow-ups to v2026.6.2's built-in minimum_release_age cutoff, introduces opt-in platform-aware config environments, and tightens lockfile and Windows behavior for tasks and installs.
Added
(config) New auto_env early-init setting (MISE_AUTO_ENV or .miserc.toml) that automatically activates platform-derived config environments — unix, {os} (linux / macos / windows), and {os}-{arch} (e.g. windows-x64, macos-arm64) — so files like mise.windows.toml, mise/config.macos-arm64.toml, and matching mise.<env>.lock lockfiles load automatically. Precedence is unix < {os} < {os}-{arch} < explicit MISE_ENV, and auto envs are deliberately not propagated through MISE_ENV or {{ mise_env }}. Off by default in this release; a transitional warning ships in 2026.12.0 and the default flips on in 2027.6.0 (#10316 by @jdx).
(github)mise token github --oauth --refresh (and the hidden mise github token alias) forces a fresh OAuth token mint even when the cached token is still time-valid. The refresh-token grant is tried first with no user interaction, falling back to a new device-code flow. Useful when you authorize the app first and install it on a repo afterwards and the cached token still has the pre-installation permissions (#10317 by @jdx).
(backend)version_expr can now post-process version_regex results as a pipeline — when both are set, regex output is exposed as a versions variable to expr. This fixes oc and openshift-installlatest resolution (now 4.22.0 instead of 4.9.9) by sorting the lexicographic HTML listing from mirror.openshift.com via version_expr = 'sortVersions(versions)' (#10302 by @konono).
(deps) First-class Deno support in mise deps — automatic detection plus list, install, add, and remove (#10291 by @felipecrs).
(registry) Added imagemagick (aqua:ImageMagick/ImageMagick) (#10118 by @thernstig) and vscode-cli (aqua:microsoft/vscode/code) (#10314 by @felipecrs).
Fixed
(config) The built-in 24h default minimum_release_age introduced in v2026.6.2 no longer disables installed-version fast paths, fixing a regression where shell startup grew from ~2.5s to ~65s because every mise which / mise hook-env invocation fetched remote version lists. Cutoff resolution now tracks provenance (Default / Provided / Explicit): the default only gates remote picks at install time, while explicit CLI / setting / per-tool cutoffs keep their date-aware semantics (#10315 by @jdx).
(backend)minimum_release_age = "0s" is now correctly treated as disabling the cutoff. Backends can also expose fast-path latest release metadata (with created_at), so the canonical latest can pass an age check even when cached remote version lists are stale (#10310 by @jdx).
(python) Core Python remote versions now carry release timestamps — python-build-standalone dates for precompiled listings and python-build definition commit timestamps for source-build listings — so minimum_release_age actually filters them (#10311 by @jdx).
(lock) Tools resolved from idiomatic version files (.node-version, .python-version, …) are now written to the project mise.lock instead of a phantom sibling lockfile, so mise install --locked no longer rejects them as missing (#10309 by @jdx). When multiple base configs share a project root, lockfile selection is now deterministic and picks the highest-precedence config — e.g. colocated mise.toml and .mise/config.toml consistently target .mise/mise.lock (#10319 by @jdx).
(task) Tasks loaded via task_config.includes now receive the collected task_templates map, so a task that only has extends = "template:..." actually inherits its run entries instead of silently exiting successfully (#10312 by @jdx).
(task) On Windows, inline tasks and [hooks] commands routed through cmd /c preserve inner double quotes. Previously, the std argv serializer produced \"-escaped strings that cmd.exe passed through literally, so e.g. uv run --no-project python -c "import pathlib; print(pathlib.Path.home())" failed with SyntaxError: unterminated string literal. Commands are now built verbatim via cmd /s /c "...", with forwarded args still MSVCRT-quoted inside (#10301 by @JamBalaya56562).
File renames during install now retry up to 5 times on Windows for transient ERROR_ACCESS_DENIED (5) and ERROR_SHARING_VIOLATION (32) errors (typically Windows Defender holding extracted files), with exponential backoff from 50ms to 800ms (#10300 by @jhult).
(completions) Require usage 3.5 in the generated usage spec to pick up zsh colon completion fixes; the zsh completion script now consumes three tab-separated fields and uses compadd (#10313 by @jdx).
(registry)podman now points at its new GitHub organization after the upstream rename on 2026-06-01 (#10288 by @TyceHerrman).
This release tightens mise's default supply-chain posture: fuzzy version resolution now waits 24 hours after a release by default on timestamp-aware backends, with new excludes, opt-outs, and warnings so it stays out of your way when you don't want it. A couple of long-standing GitHub-attestation and npm-install rough edges are smoothed over as well.
Added
(config) Apply a built-in 24-hour minimum_release_age when no global or per-tool value is set, for backends that expose release timestamps (core, aqua, github, npm, pipx, etc.). Asdf/vfox/plugin-style tools without release metadata are unaffected. mise ls-remote now reports how many releases were hidden, and mise upgrade warns when a newer release is being ignored by the cutoff, e.g.:
newer jq release 1.7.2 ignored by minimum_release_age
Set minimum_release_age = "0s" to disable the default. Pinned exact versions still bypass the filter. (#10279 by @jdx)
(config) New minimum_release_age_excludes setting to skip the global (and built-in) release-age policy for selected tools or whole backends. Entries may be tool shorthands, full backend IDs, or backend wildcards:
Per-tool minimum_release_age and CLI --minimum-release-age still take precedence as before. (#10277 by @jdx)
(registry)cargo-msrv is now available in the registry, installed via aqua (foresterre/cargo-msrv) with a cargo:cargo-msrv fallback (#10276 by @jdx).
Fixed
(github) GitHub artifact attestation detection and verification now respect the existing registry/default-backend gate, so custom github: repos and non-registry aqua packages talk to GitHub directly instead of routing through the mise-versions host. Python precompiled builds still use the versions host; Ruby precompiled attestations use it only for the default jdx/ruby source (#10260 by @jdx).
(npm) After global npm installs, mise warns when the package declares lifecycle scripts (preinstall / install / postinstall) that were skipped because mise still passes --ignore-scripts=true. Setting npm_args = "--ignore-scripts=false" (or --no-ignore-scripts) correctly suppresses the warning, with later flags winning (#10280 by @jdx).
Changed
(registry)aube and pitchfork now resolve to jdx/aube and jdx/pitchfork in both the mise registry and the vendored aqua registry, with endevco/* aliases retained for compatibility. Aube <= 1.18.1 skips GitHub artifact attestations to match the upstream aqua registry change (#10285 by @jdx).
Documentation
(security) A new Security page consolidates software verification and supply-chain guidance, documents the 24h minimum_release_age default and 0s opt-out, and clarifies that only npm: and pipx: currently forward the cutoff to transitive dependency resolution (#10278 by @jdx).
(settings) Examples and CLI hints prefer the shorter mise settings set key=value form (#10271 by @jdx).
Debian/Ubuntu install instructions now recommend extrepo, since mise's deb repository was added to Debian extrepo (#10262 by @okulev).
Sponsor logos on the docs site now have better contrast (#10270 by @jdx).
(aqua) Support multiple custom registries via aqua.registries; deprecates single-string aqua.registry_url (#10179 by @risu729).
(env) Decrypt SOPS-encrypted TOML env files (.env.toml) through rops (#10201 by @risu729).
(hooks) Add run_windows for Windows-specific inline hook commands (#10202 by @risu729).
(task) Render task_config.includes with the Tera config context and expand ~/ for local includes (#10225 by @risu729).
(task) Support standalone .toml task files via git:: directory includes (#10219 by @davidolrik).
(aqua) Extract 7z archives, including auto-detection of .7z assets (#10224 by @risu729).
Fixed
(env) Include the uv venv (uv.lock + .venv) in the env_cache key so VIRTUAL_ENV no longer leaks across sibling directories when env_cache=true and python.uv_venv_auto is set (#10217 by @Nagato-Yuzuru).
(task) Resolve dependency sources relative to each task's directory and pass per-dependency --watch paths to watchexec (#10054 by @43081j).
(ruby) Include resolved Ruby install options (compile mode, installer, build repo, precompiled URL, patch inputs) in lock identity (#9992 by @risu729).
(elixir) Resolve lockfile URL and SHA-256 from builds.hex.pm metadata; locked installs reuse the lockfile URL (#10226 by @risu729).
(github) Accept GitHub-canonicalized owner/repo casing when validating mise-versions release asset URLs (#10240 by @risu729).
(github) Detect 401 responses on cached native OAuth tokens, refresh once, and retry transparently (#10246 by @jdx).
(github) Warn when mise-versions GitHub metadata lookups hit rate limits or non-404 errors (#10254 by @jdx).
(github) Skip the versions host for non-registry github: tools (#10255 by @jdx).
(github) Emit logfmt-style structured fields for versions-host calls, with credentials and query stripped from URLs (#10256 by @jdx).
Nix flake build test failure by adding git to nativeCheckInputs (#10243 by @okuuva).
Security
(http) Sanitize HTTP backend version names in install symlink paths to prevent repository-controlled versions from escaping the installs directory (GHSA-f94h-j2qg-fxw3) (#10245 by @jdx).
Documentation
Recommend the stable Snap channel for Linux installation (#10250 by @salim-b).
Registry
Prefer aqua:endevco/aube for aube so glibc/musl libc variants are picked up automatically (#10171 by @jdx).
A focused release that wires npm into Corepack when requested, brings aqua's Windows extension handling in line with upstream, and fixes task include ordering plus a Git Bash cygdrive regression.
Added
(npm) Ensure npm itself is managed by Corepack when node.corepack=true and node.npm_shim=false, so the Corepack-managed npm shim is enabled alongside yarn/pnpm (#10196 by @roele).
(cli) New mise sponsors subcommand and a sponsor block on the docs site that lists sponsors fetched from en.dev/sponsors.json (#10182 by @jdx).
Fixed
(aqua) Mirror aqua's Windows extension semantics end-to-end (#10167 by @risu729):
complete_windows_ext is now tri-state — explicit true completes Windows asset/URL/file source names, explicit false leaves them alone, and an omitted value completes by default except for github_content/github_archive packages.
Registry windows_ext (default .exe, .sh for github_content/github_archive) and append_ext are honored when rendering assets, URLs, and Windows install links.
.exe and .jar assets are treated as already complete, existing extensions like .ps1 are preserved when format is omitted, and version dots in names like tool.1.0.0 no longer suppress Windows completion. The registry compilation cache is bumped to version 2 and will be regenerated on next use.
(spm) Include provider, api_url, artifactbundle, and artifactbundle_asset in SPM lock identity so toggling between source builds and artifact bundles no longer silently reuses a stale mise.lock entry. provider is canonicalized to lowercase (default github omitted), api_url has trailing slashes trimmed, and filter_bins stays out of lock identity since it only affects which built executables are exposed (#10160 by @risu729).
(bun) Improve musl detection on Linux: when the system libc preference is unset, fall back to runtime detection and treat unknown results as non-musl, fixing glibc-system installs that were incorrectly resolving to bun's musl build (#10195 by @roele).
(task) Honor task_config.includes order so a local task can override a same-named git:: include. Previously a regression in #9147 combined with non-git includes being loaded before all git:: includes meant a git:: include always clobbered a same-named local task regardless of position. Includes now load in their declared order with first-wins file-task dedup, so the earlier entry in the list takes precedence uniformly across directory, toml-file, and git:: includes (#10191 by @vmaleze).
(task) Honor MISE_CYGDRIVE_PREFIX for Git Bash / MSYS2, not only Cygwin. Git Bash users with a custom /etc/fstab automount root can now set the prefix to fix the converted PATH; defaults are unchanged (/c/... for Git Bash, /cygdrive/c/... for Cygwin) (#10190 by @JamBalaya56562).
(completion) Rely on usage 3.4.0's usage#649 for inherited global flags so -C/--cd, -j/--jobs, and -q/--quiet are recognized before a mounted task without the broad promotion workaround. The narrowed promotion now only covers orphan-short flags -r/-S (whose root globals are long-only), and min_usage_version is bumped to 3.4 so older usage CLIs warn to upgrade instead of silently regressing (#10176 by @JamBalaya56562).
Documentation
Fix the choice template function example to use named-argument syntax (#10197 by @joekrill).
A focused release that teaches hooks to accept script arrays, ships an npm install -g mise package, and tightens lock identity across several backends so mise.lock entries can no longer be reused for option combinations that resolve to a different artifact set.
Added
(config) Hooks now accept script/scripts arrays for current-shell hooks (#9836 by @risu729):
Note that run is still string-only — to spawn multiple inline commands, use a list of { run = "..." } entries or one multiline run string.
Fixed
(env) PATH entries under mise's installs directory are now treated as mise-managed during hook-env reactivation, so an inactive install path like installs/node/24/bin inherited from a parent shell can no longer sit ahead of the active project's installs/node/22.17.1/bin (#10162 by @risu729).
(config).miserc.toml discovery now stops at raw MISE_CEILING_PATHS entries (without recursing through the lazy fallback), preventing a parent .miserc.toml above the ceiling from injecting MISE_ENV (#10165 by @risu729).
(task)mise tasks ls --json, tasks info --json, and the MCP tasks resource now serialize full run entries — including single task refs and task groups — instead of script-only strings (#10163 by @risu729).
(task) Bump usage-lib to 3.4.0 and update the zsh completion to read display<TAB>insert pairs from usage complete-word, restoring task completions after the usage-cli 3.4.0 output change (#10181 by @jdx).
(installer) Add the missing warn helper used by the standalone installer's checksum fallback paths (#10157 by @risu729, recreating @olfway's original fix).
Lock identity
A batch of fixes ensures mise lock selects entries by an identity that actually reflects the installed result, so toggling an option no longer silently reuses a stale lock entry:
(conda) Include the conda channel — the same tool@version resolved against conda-forge, bioconda, or a private channel can produce entirely different builds and checksums (#9984 by @risu729).
(rust) Include rustup profile, components, and targets, read from both tool options and rust-toolchain.toml, with stable sorting (#9988 by @risu729).
(github) Include target artifact selectors (api_url, version_prefix, per-platform asset_pattern, direct url, no_app) for GitHub, GitLab, and Forgejo backends, resolved per target platform (#9985 by @risu729).
(python) Include non-default patch_sysconfig = false (the interpreter tree differs after install); virtualenv stays out as an activation-only overlay (#10161 by @risu729).
Changed
(npm) mise is now published to npm under the unscoped mise package, so npm install -g mise and npx mise work directly. The legacy @jdxcode/mise scoped package continues to be published, and the new wrapper reuses the existing @jdxcode/mise-<os>-<arch> platform tarballs (#10183 by @jdx).
A catch-up release for the tag that shipped the compiled custom aqua registry cache, several Windows task/shim fixes, and a handful of backend install improvements. This release is backfilled without binary assets; use v2026.5.18 or newer for downloadable artifacts.
Added
(aqua) Add a compiled custom registry cache to speed up aqua registry lookups and reduce repeated parsing work (#9583 by @jdx).
Fixed
(upgrade) Handle a lone v prefix in --bump latest queries (#10130 by @jdx).
(env) Force the Unix environment key to uppercase PATH, avoiding mixed-case path handling surprises (#9927 by @jdx).
(http) Limit fallback retries against the shared versions host (#10142 by @jdx).
(bun) Use Bun's native windows-arm64 build for Bun 1.3.10 and newer (#10150 by @M1noa).
(task) Honor explicit and quoted shell paths on Windows (#10148 by @M1noa).
(task) Convert PATH to /cygdrive form for Cygwin bash tasks on Windows (#10147 by @M1noa).
(ui) Honor color settings in interactive prompt themes (#10151 by @M1noa).
(pipx) Upgrade the shared pip environment when using version constraints (#10138 by @jdx).
(shim) Refresh stale Windows shims after a mise version update (#10152 by @M1noa).
(completion) Keep global -C/--cd usable in task argument completion (#10153 by @M1noa).
(github) Handle x86 release assets as x64 fallbacks where upstreams publish mismatched naming (#10103 by @jdx).
(github) Strip OpenGrep platform suffixes before asset matching (#10166 by @jdx).
(github) Penalize certificate assets as metadata so they are not selected as install archives (#10158 by @jdx).
Changed
Registry: add herdr via github:ogulcancelik/herdr (#10154 by @ogulcan).
Registry: add databricks-cli via aqua:databricks/cli (#10072 by @nstrug).
(spm) Parse SwiftPM tool options locally (#9959 by @jdx).
Documentation
Split glossary aliases into Tool Aliases and Shell Aliases (#9983 by @BenjaminChr).
Update the webpage tooling copy to use current tools (#10170 by @jdx).
(github) Use the shared mise-versions host for release metadata and artifact attestations before falling back to api.github.com, dramatically cutting anonymous GitHub API usage in CI/Docker (#10127 by @jdx).
(node) New node.npm_shim setting (MISE_NODE_NPM_SHIM) to opt out of the bundled npm wrapper, letting corepack manage bin/npm cleanly (#10082 by @jjb).
(npm) New allow_builds tool option for npm-backend installs that expands t
✂ Note
PR body was truncated to here.
Configuration
📅 Schedule: (UTC)
Branch creation
At any time (no schedule defined)
Automerge
At any time (no schedule defined)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2026.3.17→2026.6.8Release Notes
jdx/mise (jdx/mise)
v2026.6.8Compare Source
v2026.6.7: : pkgx backend, more bootstrap surface, and forge install fixesCompare Source
Added
pkgx:backend: install pkgx pantry packages natively (nopkgxCLI required), with checksum-verified bottles, dependency resolution, and lockfile support viapkgx_depsand a shared[pkgx-packages]section (#10408 by @jdx).[bootstrap.macos.launchd.agents]for declarative macOS user LaunchAgents, plusmise bootstrap launchd apply/status(#10396 by @jdx).[bootstrap.linux.systemd.units]for declarative systemd user services, plusmise bootstrap systemd apply/status(#10399 by @jdx).[bootstrap.hooks]to run shell commands at named bootstrap phases (pre-packages,post-dotfiles,post-tools,final, etc.), honoring--dry-run(#10395 by @jdx).[bootstrap.macos.dock],[bootstrap.macos.finder],[bootstrap.macos.keyboard],[bootstrap.macos.trackpad]with curated keys likeshow_all_filesandtap_to_click(#10398 by @jdx).mas:package manager for[bootstrap.packages]to install Mac App Store apps by ADAM ID (#10397 by @jdx).mise bootstrap --force-dotfilesto replace conflicting whole-file dotfile targets, plus no-force replacement of regular files whose contents match the symlink source (#10410 by @jdx).tbzrecognized as an alias fortar.bz2extraction (#10403 by @risu729).aqua:oracle.com/sqlcl) (#10417 by @jasonlyle88).Fixed
mise activate --shimsno longer re-prepends the directory containing themiseexecutable (#10394 by @JamBalaya56562).tarand downloads.tar.gz, fixingtar: invalid tar magicon Alpine (#10385 by @JamBalaya56562).postinstallhooks run against the just-installed version with fuzzy requests likeversion = "3"(#10415 by @JamBalaya56562).github:/forgejo:/gitlab:paginate past an all-prerelease first page (#10420 by @JamBalaya56562).dotnet:searches sendsemVerLevel=2.0.0, fixing lookups for tools likeroslyn-language-server(#10384 by @JamBalaya56562).mise watch --wrap-processis now forwarded to watchexec (#10392 by @JamBalaya56562).{{.AssetWithoutExt}}strips the full aqua format list including.zst(#10104 by @risu729).tar.br,br,tar.lz4,lz4,tar.sz,sz,rar) fail with clear errors (#10409 by @risu729).windows-x64(#10400 by @risu729).Documentation
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.6: : Declarative machine bootstrapCompare Source
Added
mise bootstrapcommand for end-to-end machine setup — system packages, dotfiles, macOS defaults, login shell, tools, and an optionalbootstraptask — with--yes,--dry-run, and--update(#10365, #10376 by @jdx).[dotfiles]plusmise dotfiles add/apply/edit/status, supportingsymlink,symlink-each,copy, andtemplatemodes, glob wildcards in source paths, and block/line edits to files mise doesn't own (#10365, #10368, #10374, #10376 by @jdx).[bootstrap.macos.defaults]for declaratively managing macOS user defaults, applied throughmise bootstrap macos-defaults applywith drift reporting in status andmise doctor(#10363 by @jdx).[bootstrap.user].login_shellto declare and converge the current user's login shell (chsh -s, updating/etc/shellswhen needed) (#10377 by @jdx).[bootstrap.brew.taps]andmise bootstrap packages brew tap/untapfor third-party Homebrew taps, with tap context preserved through dependency resolution and source builds (#10375, #10383 by @jdx).brew-cask:package manager that installs supported app-bundle casks directly from cask API metadata without requiring a local Homebrew install (#10383 by @jdx).mise oci buildnow bakes[dotfiles]andapt:[bootstrap.packages]into images as dedicated annotated OCI layers (#10373 by @jdx).mise.tomlfiles (no templates, onlymin_versionand plain[tools]/[tasks]strings) auto-load without a trust prompt; everything else still requires trust (#10360 by @jdx).Fixed
403 Forbiddenmessage (#10382 by @jdx).shim.rb) is now included in the published crate, fixingcargo publishfor the source-build path (#10388 by @jdx).Changed
watch_files, monorepo tasks, task templates, native GitHub OAuth, custom vfox backends, Swift, and the dotnet/s3/spm backends are no longer experimental; the monorepo root key is nowmonorepo_root(withexperimental_monorepo_rootkept as a hidden alias) (#10371 by @jdx).mise-versionsare now fetched from/data/{tool}.tomlso Cloudflare can serve them as static assets (#10361 by @jdx).extract_archive,decompress_file), with clearer errors for unsupported formats (#10274 by @risu729).Documentation
minimum_release_age(#10366 by @ThijsdeJong-TomTom).New Contributors
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.5: : Trust hardening and aqua attestation fixesCompare Source
This release closes several trust-bypass vectors where a local
mise.tomlormise-tasks/directory could run code before the user trusted a project, and brings aqua's GitHub attestation verification in line with what the registry asks for.Fixed
github.credential_command,gitlab.credential_command, andforgejo.credential_commandas global-only. They are stripped from project/local config at parse time (with a warning) so an untrustedmise.tomlcannot use a credential command to execute arbitrary shell when fetching tokens. Global config, CLI flags, and environment variables are unchanged (#10356 by @jdx).ci,paranoid,trusted_config_paths, andyeswhen they come from local config files. A maliciousmise.tomlcan no longer settrusted_config_paths = ["/"]orparanoid = falseto auto-trust itself before_.sourcescripts run (#10357 by @jdx).mise-tasks/,.mise-tasks/, and related layouts) in repos with no local mise config. Previously, a clone with only amise-tasks/directory could render Tera templates (includingexec()) in task descriptions before the user trusted the project. Global task include paths and includes declared from a trustedmise.tomlare still exempt (#10355 by @jdx).github_artifact_attestations.predicate_typeto GitHub during attestation detection and verification. Packages likefoundry-rs/foundryandgleam-lang/gleamthat pin an SPDX SBOM predicate now enforce that predicate instead of accepting whatever attestation happens to verify. Predicate-filtered requests bypass the digest-only versions-host attestation cache (#10169 by @risu729).varstables, and literal"vars.<name>"backend-option keys into a single lock/cache identity. Duplicate final vars now fail with a source-neutralconflicting aqua varerror rather than silently picking one spelling; normal higher-precedence config overrides still apply (#10187 by @risu729).hide,quiet,raw,interactive, andraw_argson[task_templates.*]in the JSON Schema, and drop the unused fields fromTaskTemplate. Runtime never merged these into tasks (templates can't tell "unset" fromfalsefor plain bools), so editors no longer suggest keys that did nothing (#10242 by @risu729).os-archselectors on registry backendplatformsentries andbackends.options.platforms.*tables — for examplewindows-x64,linux-arm64,darwin-aarch64,macos-arm64— fixing false schema errors reported in discussion #10296 (#10358 by @risu729).Full Changelog: jdx/mise@v2026.6.4...v2026.6.5
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.4: : Declarative system packagesCompare Source
Added
[system.packages]) for apt, dnf, pacman, and Homebrew core formulae (installed without a brew CLI) via new experimentalmise system status/installcommands (#10326 by @jdx).mise system useandmise system upgradeto write[system.packages]entries and refresh installed system packages (#10346 by @jdx).matching(substring) andmatching_regexasset options to thegithub,gitlab, andforgejobackends, applied before platform autodetection and scoped through SLSA provenance verification (#10325 by @devnulled).mise oci build --owner UID[:GID]plus[oci].user_id/[oci].group_idconfig for layer file ownership (#10075 by @ThomasK33).Fixed
--minimum-release-age=0snow correctly disables the release-age cutoff instead of falling back to the default, and stable fast-path metadata avoids an unnecessary full version-list fetch (#10344 by @jdx).mise-versionsonly for mise-registry-backed Aqua tools, eliminating noisy403warnings for packages likeaqua:aws/session-manager-plugin(#10341 by @jdx).overrides[].envsselectors so platform-specific Aqua overrides for packages likeapache/tomcatandeza-community/ezaapply correctly (#10200 by @risu729).:task,//pkg:task, aliases) the same way at validation time as runtime, somise tasks validateno longer reports false missing-dependency errors (#10342 by @jdx).bash -ctasks on Windows instead of being assigned to$0(#10321 by @JamBalaya56562).descriptionvalues are surfaced inmise <task> --helpandmise run <task> --helpwhile task listings remain single-line (#10204 by @risu729).EDITOR/VISUAL) command handling to support values with arguments and improve error reporting (#9752 by @roele).cmd /ccall sites on Windows (mise exec -c, teraexec(),watch_files, postinstall hooks,[deps], credential commands) (#10323 by @JamBalaya56562).disable_tools/enable_toolsbefore raising registry errors (#10206 by @risu729).shorthand_vendorin the lockfile identity for shorthand requests likejava@17(#9989 by @risu729).runtimein the core .NET plugin lockfile identity so SDK and runtime installs no longer share a lock entry (#10175 by @risu729).Registry
ghtkn(#9967 by @TyceHerrman) andantigravity-cli(#10324 by @rhanneken).💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.3: : auto_env, release-age polish, and lockfile fixesCompare Source
This release smooths over follow-ups to v2026.6.2's built-in
minimum_release_agecutoff, introduces opt-in platform-aware config environments, and tightens lockfile and Windows behavior for tasks and installs.Added
auto_envearly-init setting (MISE_AUTO_ENVor.miserc.toml) that automatically activates platform-derived config environments —unix,{os}(linux/macos/windows), and{os}-{arch}(e.g.windows-x64,macos-arm64) — so files likemise.windows.toml,mise/config.macos-arm64.toml, and matchingmise.<env>.locklockfiles load automatically. Precedence isunix<{os}<{os}-{arch}< explicitMISE_ENV, and auto envs are deliberately not propagated throughMISE_ENVor{{ mise_env }}. Off by default in this release; a transitional warning ships in 2026.12.0 and the default flips on in 2027.6.0 (#10316 by @jdx).mise token github --oauth --refresh(and the hiddenmise github tokenalias) forces a fresh OAuth token mint even when the cached token is still time-valid. The refresh-token grant is tried first with no user interaction, falling back to a new device-code flow. Useful when you authorize the app first and install it on a repo afterwards and the cached token still has the pre-installation permissions (#10317 by @jdx).version_exprcan now post-processversion_regexresults as a pipeline — when both are set, regex output is exposed as aversionsvariable to expr. This fixesocandopenshift-installlatestresolution (now4.22.0instead of4.9.9) by sorting the lexicographic HTML listing frommirror.openshift.comviaversion_expr = 'sortVersions(versions)'(#10302 by @konono).mise deps— automatic detection plus list, install, add, and remove (#10291 by @felipecrs).imagemagick(aqua:ImageMagick/ImageMagick) (#10118 by @thernstig) andvscode-cli(aqua:microsoft/vscode/code) (#10314 by @felipecrs).Fixed
minimum_release_ageintroduced in v2026.6.2 no longer disables installed-version fast paths, fixing a regression where shell startup grew from ~2.5s to ~65s because everymise which/mise hook-envinvocation fetched remote version lists. Cutoff resolution now tracks provenance (Default/Provided/Explicit): the default only gates remote picks at install time, while explicit CLI / setting / per-tool cutoffs keep their date-aware semantics (#10315 by @jdx).minimum_release_age = "0s"is now correctly treated as disabling the cutoff. Backends can also expose fast-path latest release metadata (withcreated_at), so the canonical latest can pass an age check even when cached remote version lists are stale (#10310 by @jdx).minimum_release_ageactually filters them (#10311 by @jdx)..node-version,.python-version, …) are now written to the projectmise.lockinstead of a phantom sibling lockfile, somise install --lockedno longer rejects them as missing (#10309 by @jdx). When multiple base configs share a project root, lockfile selection is now deterministic and picks the highest-precedence config — e.g. colocatedmise.tomland.mise/config.tomlconsistently target.mise/mise.lock(#10319 by @jdx).task_config.includesnow receive the collectedtask_templatesmap, so a task that only hasextends = "template:..."actually inherits itsrunentries instead of silently exiting successfully (#10312 by @jdx).[hooks]commands routed throughcmd /cpreserve inner double quotes. Previously, the std argv serializer produced\"-escaped strings thatcmd.exepassed through literally, so e.g.uv run --no-project python -c "import pathlib; print(pathlib.Path.home())"failed withSyntaxError: unterminated string literal. Commands are now built verbatim viacmd /s /c "...", with forwarded args still MSVCRT-quoted inside (#10301 by @JamBalaya56562).ERROR_ACCESS_DENIED (5)andERROR_SHARING_VIOLATION (32)errors (typically Windows Defender holding extracted files), with exponential backoff from 50ms to 800ms (#10300 by @jhult).usage3.5 in the generated usage spec to pick up zsh colon completion fixes; the zsh completion script now consumes three tab-separated fields and usescompadd(#10313 by @jdx).podmannow points at its new GitHub organization after the upstream rename on 2026-06-01 (#10288 by @TyceHerrman).New Contributors
Full Changelog: jdx/mise@v2026.6.2...v2026.6.3
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.2: : Supply-chain defaults and clearer install warningsCompare Source
This release tightens mise's default supply-chain posture: fuzzy version resolution now waits 24 hours after a release by default on timestamp-aware backends, with new excludes, opt-outs, and warnings so it stays out of your way when you don't want it. A couple of long-standing GitHub-attestation and npm-install rough edges are smoothed over as well.
Added
(config) Apply a built-in 24-hour
minimum_release_agewhen no global or per-tool value is set, for backends that expose release timestamps (core, aqua, github, npm, pipx, etc.). Asdf/vfox/plugin-style tools without release metadata are unaffected.mise ls-remotenow reports how many releases were hidden, andmise upgradewarns when a newer release is being ignored by the cutoff, e.g.:Set
minimum_release_age = "0s"to disable the default. Pinned exact versions still bypass the filter. (#10279 by @jdx)(config) New
minimum_release_age_excludessetting to skip the global (and built-in) release-age policy for selected tools or whole backends. Entries may be tool shorthands, full backend IDs, or backend wildcards:Per-tool
minimum_release_ageand CLI--minimum-release-agestill take precedence as before. (#10277 by @jdx)(registry)
cargo-msrvis now available in the registry, installed via aqua (foresterre/cargo-msrv) with acargo:cargo-msrvfallback (#10276 by @jdx).Fixed
github:repos and non-registry aqua packages talk to GitHub directly instead of routing through themise-versionshost. Python precompiled builds still use the versions host; Ruby precompiled attestations use it only for the defaultjdx/rubysource (#10260 by @jdx).preinstall/install/postinstall) that were skipped because mise still passes--ignore-scripts=true. Settingnpm_args = "--ignore-scripts=false"(or--no-ignore-scripts) correctly suppresses the warning, with later flags winning (#10280 by @jdx).Changed
aubeandpitchforknow resolve tojdx/aubeandjdx/pitchforkin both the mise registry and the vendored aqua registry, withendevco/*aliases retained for compatibility. Aube<= 1.18.1skips GitHub artifact attestations to match the upstream aqua registry change (#10285 by @jdx).Documentation
minimum_release_agedefault and0sopt-out, and clarifies that onlynpm:andpipx:currently forward the cutoff to transitive dependency resolution (#10278 by @jdx).mise settings set key=valueform (#10271 by @jdx).extrepo, since mise's deb repository was added to Debian extrepo (#10262 by @okulev).New Contributors
Full Changelog: jdx/mise@v2026.6.1...v2026.6.2
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.1: : aqua multi-registry, SOPS TOML, and a GitHub backend tune-upCompare Source
Added
aqua.registries; deprecates single-stringaqua.registry_url(#10179 by @risu729)..env.toml) throughrops(#10201 by @risu729).run_windowsfor Windows-specific inline hook commands (#10202 by @risu729).task_config.includeswith the Tera config context and expand~/for local includes (#10225 by @risu729)..tomltask files viagit::directory includes (#10219 by @davidolrik).7zarchives, including auto-detection of.7zassets (#10224 by @risu729).Fixed
uv.lock+.venv) in theenv_cachekey soVIRTUAL_ENVno longer leaks across sibling directories whenenv_cache=trueandpython.uv_venv_autois set (#10217 by @Nagato-Yuzuru).sourcesrelative to each task's directory and pass per-dependency--watchpaths to watchexec (#10054 by @43081j).builds.hex.pmmetadata; locked installs reuse the lockfile URL (#10226 by @risu729).mise-versionsrelease asset URLs (#10240 by @risu729).mise-versionsGitHub metadata lookups hit rate limits or non-404 errors (#10254 by @jdx).github:tools (#10255 by @jdx).gittonativeCheckInputs(#10243 by @okuuva).Security
Documentation
Registry
aqua:endevco/aubeforaubeso glibc/musl libc variants are picked up automatically (#10171 by @jdx).pgroll(#10252 by @diegoholiveira).cargo-release(#10258 by @jdx).💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.6.0: : Corepack-managed npm and aqua Windows parityCompare Source
A focused release that wires npm into Corepack when requested, brings aqua's Windows extension handling in line with upstream, and fixes task include ordering plus a Git Bash
cygdriveregression.Added
node.corepack=trueandnode.npm_shim=false, so the Corepack-managed npm shim is enabled alongside yarn/pnpm (#10196 by @roele).mise sponsorssubcommand and a sponsor block on the docs site that lists sponsors fetched fromen.dev/sponsors.json(#10182 by @jdx).Fixed
complete_windows_extis now tri-state — explicittruecompletes Windows asset/URL/file source names, explicitfalseleaves them alone, and an omitted value completes by default except forgithub_content/github_archivepackages.windows_ext(default.exe,.shforgithub_content/github_archive) andappend_extare honored when rendering assets, URLs, and Windows install links..exeand.jarassets are treated as already complete, existing extensions like.ps1are preserved whenformatis omitted, and version dots in names liketool.1.0.0no longer suppress Windows completion. The registry compilation cache is bumped to version 2 and will be regenerated on next use.provider,api_url,artifactbundle, andartifactbundle_assetin SPM lock identity so toggling between source builds and artifact bundles no longer silently reuses a stalemise.lockentry.provideris canonicalized to lowercase (defaultgithubomitted),api_urlhas trailing slashes trimmed, andfilter_binsstays out of lock identity since it only affects which built executables are exposed (#10160 by @risu729).task_config.includesorder so a local task can override a same-namedgit::include. Previously a regression in #9147 combined with non-git includes being loaded before allgit::includes meant agit::include always clobbered a same-named local task regardless of position. Includes now load in their declared order with first-wins file-task dedup, so the earlier entry in the list takes precedence uniformly across directory, toml-file, andgit::includes (#10191 by @vmaleze).MISE_CYGDRIVE_PREFIXfor Git Bash / MSYS2, not only Cygwin. Git Bash users with a custom/etc/fstabautomount root can now set the prefix to fix the converted PATH; defaults are unchanged (/c/...for Git Bash,/cygdrive/c/...for Cygwin) (#10190 by @JamBalaya56562).-C/--cd,-j/--jobs, and-q/--quietare recognized before a mounted task without the broad promotion workaround. The narrowed promotion now only covers orphan-short flags-r/-S(whose root globals are long-only), andmin_usage_versionis bumped to3.4so older usage CLIs warn to upgrade instead of silently regressing (#10176 by @JamBalaya56562).Documentation
choicetemplate function example to use named-argument syntax (#10197 by @joekrill).New Contributors
Full Changelog: jdx/mise@v2026.5.18...v2026.6.0
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.5.18: : Hook script arrays and lock-identity fixesCompare Source
A focused release that teaches hooks to accept script arrays, ships an
npm install -g misepackage, and tightens lock identity across several backends somise.lockentries can no longer be reused for option combinations that resolve to a different artifact set.Added
(config) Hooks now accept
script/scriptsarrays for current-shell hooks (#9836 by @risu729):Note that
runis still string-only — to spawn multiple inline commands, use a list of{ run = "..." }entries or one multilinerunstring.Fixed
hook-envreactivation, so an inactive install path likeinstalls/node/24/bininherited from a parent shell can no longer sit ahead of the active project'sinstalls/node/22.17.1/bin(#10162 by @risu729)..miserc.tomldiscovery now stops at rawMISE_CEILING_PATHSentries (without recursing through the lazy fallback), preventing a parent.miserc.tomlabove the ceiling from injectingMISE_ENV(#10165 by @risu729).mise tasks ls --json,tasks info --json, and the MCP tasks resource now serialize fullrunentries — including single task refs and task groups — instead of script-only strings (#10163 by @risu729).usage-libto 3.4.0 and update the zsh completion to readdisplay<TAB>insertpairs fromusage complete-word, restoring task completions after theusage-cli3.4.0 output change (#10181 by @jdx).warnhelper used by the standalone installer's checksum fallback paths (#10157 by @risu729, recreating @olfway's original fix).Lock identity
A batch of fixes ensures
mise lockselects entries by an identity that actually reflects the installed result, so toggling an option no longer silently reuses a stale lock entry:tool@versionresolved againstconda-forge,bioconda, or a private channel can produce entirely different builds and checksums (#9984 by @risu729).profile,components, andtargets, read from both tool options andrust-toolchain.toml, with stable sorting (#9988 by @risu729).api_url,version_prefix, per-platformasset_pattern, directurl,no_app) for GitHub, GitLab, and Forgejo backends, resolved per target platform (#9985 by @risu729).patch_sysconfig = false(the interpreter tree differs after install);virtualenvstays out as an activation-only overlay (#10161 by @risu729).Changed
misepackage, sonpm install -g miseandnpx misework directly. The legacy@jdxcode/misescoped package continues to be published, and the new wrapper reuses the existing@jdxcode/mise-<os>-<arch>platform tarballs (#10183 by @jdx).Full Changelog: jdx/mise@v2026.5.17...v2026.5.18
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.5.17: : Custom aqua registry cache and Windows fixesCompare Source
A catch-up release for the tag that shipped the compiled custom aqua registry cache, several Windows task/shim fixes, and a handful of backend install improvements. This release is backfilled without binary assets; use
v2026.5.18or newer for downloadable artifacts.Added
Fixed
vprefix in--bumplatest queries (#10130 by @jdx).PATH, avoiding mixed-case path handling surprises (#9927 by @jdx).windows-arm64build for Bun 1.3.10 and newer (#10150 by @M1noa).PATHto/cygdriveform for Cygwin bash tasks on Windows (#10147 by @M1noa).-C/--cdusable in task argument completion (#10153 by @M1noa).x86release assets asx64fallbacks where upstreams publish mismatched naming (#10103 by @jdx).Changed
herdrviagithub:ogulcancelik/herdr(#10154 by @ogulcan).databricks-cliviaaqua:databricks/cli(#10072 by @nstrug).Documentation
Full Changelog: jdx/mise@v2026.5.16...v2026.5.17
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.5.16: : versions-host metadata, fork-bomb fixes, and friendlier upgradesCompare Source
Added
mise-versionshost for release metadata and artifact attestations before falling back toapi.github.com, dramatically cutting anonymous GitHub API usage in CI/Docker (#10127 by @jdx).node.npm_shimsetting (MISE_NODE_NPM_SHIM) to opt out of the bundled npm wrapper, lettingcorepackmanagebin/npmcleanly (#10082 by @jjb).allow_buildstool option for npm-backend installs that expands tConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.