chore(deps): update dependency jdx/mise to v2026.4.11#87
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
chore(deps): update dependency jdx/mise to v2026.4.11#87renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
b80483b to
e746981
Compare
7bca63d to
78cde9b
Compare
71dfc7c to
2c2deda
Compare
9807261 to
23e68ca
Compare
23e68ca to
5dbfe28
Compare
5dbfe28 to
0b27243
Compare
0b27243 to
4772b7b
Compare
4772b7b to
08413f6
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.4.11Release Notes
jdx/mise (jdx/mise)
v2026.4.11: : Task dependency templates and npm semver range supportCompare Source
A small release with two meaningful bug fixes: task dependency templates with
{{usage.*}}references now resolve correctly even when the task is called without arguments, andpackage.jsondevEnginesversion fields are now parsed as full npm semver ranges instead of being simplified into prefix matches.Fixed
Task dependency templates now render without arguments -- When a task declared dependencies using
{{usage.*}}templates (e.g.depends = ["child {{usage.app}}"]), those templates were only rendered if the task received explicit CLI arguments. If the usage spec defined defaults but no args were passed, the templates were left unresolved and the dependencies were silently dropped, causing the task to run with no dependencies at all. The guard now checks whether dependencies contain usage references rather than whether args are non-empty. #9062 by @MatthiasGrandlnpm semver ranges in
devEngines-- mise previously simplifiedpackage.jsondevEnginesversion fields by stripping range operators (>=,^,~) and trimming trailing.0segments to produce a prefix for fuzzy matching. This was lossy and incorrect in many cases (e.g.^20.0.1was simplified to20, matching20.0.0). mise now preserves the original range string and resolves it against available versions using proper npm semver semantics via thenodejs-semvercrate. Compound ranges (>=20 <21 || >=22), caret/tilde ranges, and wildcard segments all work correctly. #9061 by @risu729Documentation typo in Go backend -- The docs for Go build tags incorrectly showed
--tagsinstead of the correct-tagsflag. #9065 by @dolmenNew Contributors
Full Changelog: jdx/mise@v2026.4.10...v2026.4.11
v2026.4.10: : Fix spurious warnings from postinstall hooks running tasksCompare Source
A small patch release that fixes a single bug affecting tool postinstall hooks.
Fixed
postinstallhook ran a nestedmise run, the child process inherited theMISE_TOOL_VERSIONenvironment variable set during hooks.ToolsetBuilderwas incorrectly parsing this as a request to install a tool namedtoolat the given version via theMISE_<TOOL>_VERSIONconvention, producing spurious registry warnings before the task executed. mise now ignoresMISE_TOOL_VERSIONin the same way it already ignoredMISE_INSTALL_VERSION. #9050 by @risu729Full Changelog: jdx/mise@v2026.4.9...v2026.4.10
v2026.4.9: : Cross-device installs, deterministic lockfiles, and sandbox template supportCompare Source
This release fixes cross-device tool installation failures, makes lockfile provenance resolution deterministic across platforms, and adds sandbox field support to task templates. Several smaller fixes address env precedence in multi-environment setups and spurious warnings from
tools=truemodule hooks.Highlights
rename()returns a cross-device error.mise locknow resolves SLSA provenance URLs for all target platforms, not just the current host. This eliminates non-deterministic lockfile diffs when runningmise lockon different machines.deny_all,deny_read,deny_write,deny_net,deny_env,allow_read,allow_write,allow_net,allow_env), with deny fields composing restrictively and allow lists combining template and task-local values.Fixed
Cross-device tool installation -- When the downloads folder is on a different mount than the installs folder (common with Docker cache mounts or devcontainers),
rename()fails withEXDEV. mise now uses amove_filehelper that falls back to copy+remove, fixing installation of bun, deno, erlang, java, and ruby in these setups. #9032 by @bgeronDeterministic SLSA provenance in lockfiles --
mise lockpreviously only resolved full SLSA provenance URLs for the current host platform, writingprovenance = "slsa"(short form) for cross-platform entries. Now both the GitHub and Aqua backends resolve provenance URLs for all target platforms, producing byte-for-byte identical lockfiles regardless of which machine generates them. #8982 by @cameronbrillSandbox fields in task templates -- Task templates now accept sandbox configuration fields. Deny fields compose restrictively (OR with task-local settings), and allow lists combine template values with task-local values. #9046 by @risu729
Env precedence for task config -- With multiple
MISE_ENVvalues (e.g.,MISE_ENV=prod,ci),task_config.includesandtask_config.dirnow correctly respect the documented last-env-wins precedence. Previously the order was reversed, causing the wrong profile's task config to take effect. #9039 by @risu729Spurious warnings from
tools=truemodule hooks -- When a vfox backend tool triggereddependency_env(), it previously resolved alltools=trueenv modules with an incomplete PATH, causing "command not found" warnings. The dependency env now skipstools=truemodule resolution entirely. #9011 by @jdxImplicit
self_updatewith rustls features -- Building mise with--features rustlsor--features rustls-native-rootsno longer implicitly enables theself_updatefeature. Theself_update/rustlsentries in these feature lists were redundant and caused the optionalself_updatedependency to be silently pulled in. #9040 by @salim-bJSON schema completeness -- Added missing fields to the mise JSON schema: sandbox fields on tasks, legacy top-level
env_file/dotenv/env_pathshortcuts (marked deprecated), and age encryption directive options with proper nesting. #9044 by @risu729Windows
.exein release checksums -- Release builds now publish the extractedmise.exealongside the Windows.ziparchives and include it inSHASUMS256.txt, enabling SHA256 verification of the standalone binary (e.g., bymise-action). #8997 by @zeitlingergrantedregistry entry -- Updated thegrantedtool to point to the newfwdcloudsec/grantedrepository after the project moved fromcommon-fate/granted. #9033 by @risu729New Contributors
Full Changelog: jdx/mise@v2026.4.8...v2026.4.9
v2026.4.8: : Task engine stability and Go subpath version resolutionCompare Source
This release brings significant stability improvements to the task runner -- fixing hangs, deadlocks, and panics across several edge cases in task dependency graphs and parallel execution. It also overhauls Go version resolution for subpath packages by querying the module proxy directly, and adds new configuration options for sandbox environment filtering and lockfile platform targeting.
Highlights
go:github.com/foo/bar/cmd/bazthat live under a subpath of their Go module now resolve versions correctly, eliminating persistent "no latest version found" warnings.MISE_JOBS=1, panics in replacing output mode, stale source caching in dependency chains, and warnings with remote tasks.allow_envpatterns -- Sandbox env filtering now supports globs likeMYAPP_*to allow entire namespaces of environment variables.lockfile_platformssetting -- Restrict lockfile operations to only the platforms you care about, avoiding unnecessary checksum resolution.Added
Wildcard patterns in sandbox
allow_env--allow_envnow supports glob wildcards (e.g.,MYAPP_*) to pass through namespaces of environment variables in sandboxed tasks and exec. Works in both CLI flags and task config. #8974 by @jdxlockfile_platformssetting -- New setting to restrict which platforms are targeted during lockfile operations. When set,mise install,mise use, andmise lockonly resolve checksums/URLs for the configured platforms instead of all common platforms. Explicitmise lock --platformflags still override this setting. #8966 by @cameronbrillExamples rendered in
task --help--#USAGE exampledirectives in task scripts now appear in--helpoutput, thanks to an upgrade to usage-lib v3. #8890 by @baby-joelFixed
Go subpath package version resolution -- The Go backend previously used
go list -m -versionsto resolve versions, which returns an empty version list for subpath packages (e.g.,github.com/ankitpokhrel/jira-cli/cmd/jira), making it impossible to resolve "latest". mise now queries the Go module proxy ($GOPROXY) directly, generating path prefix candidates and using HTTP responses to distinguish real modules from non-module subpaths. This respects theGOPROXYenvironment variable and falls back togo listforGOPROXY=direct. #8968 by @c22Task hang when skipped task has dependents -- When a task with
sources/outputswas skipped (up-to-date), a race condition in the dependency graph could leave downstream dependents hanging indefinitely. The failed channel send now properly resets the task's "sent" state so it can be re-emitted on a new channel. #8937 by @jdxDependent task source invalidation -- When a dependency task runs because its own sources changed, downstream tasks that depend on it now also re-run, even if their own sources haven't changed. Sourceless dependencies (which always run) do not trigger this invalidation, preserving the usefulness of
sourceson dependents. #8975 by @jdxDeadlock with
MISE_JOBS=1and sub-task references -- WhenMISE_JOBS=1and a task'srunarray contains both sub-task references ({ task = "foo" }) and scripts, the parent task now temporarily releases its semaphore permit before waiting on the sub-task, preventing a classic deadlock. #8976 by @jdxPanic with parallel sub-tasks in replacing output mode -- Running parallel sub-tasks (via
tasks = [...]in run steps) withoutput = "replacing"no longer panics. Dynamically injected sub-tasks are now lazily initialized in the progress reporter map. #8986 by @jdxRemote task warning with arguments -- Remote git task files are now fetched before parsing usage specs, fixing spurious "failed to parse task file" warnings when running remote tasks with arguments. #8979 by @jdx
Tera templates in tool postinstall hooks -- Tool-level
postinstallscripts (e.g.,[tools.ripgrep] postinstall) now render Tera templates before execution, so variables like{{tools.ripgrep.path}}work correctly. #8978 by @jdxMissing env vars in tool postinstall hooks --
MISE_CONFIG_ROOTandMISE_PROJECT_ROOTare now set in tool-level postinstall hooks, matching the behavior of project-level hooks. #8977 by @jdxmise upgrade tool@versionnot updating lockfile --mise upgrade tool@versionandmise lock tool@versionnow properly update the lockfile with the specified version. When the version doesn't match the current config prefix (e.g., upgrading from"2"to3.0.1), the config is auto-bumped to match while preserving the original version precision. #8983 by @jdxBash 3.2 activation with
set -u-- The bash activation script no longer fails with__MISE_FLAGS[@​]: unbound variableon macOS's default bash 3.2 whenset -u(nounset) is enabled and no flags are set. #8988 by @jdxNew Contributors
Full Changelog: jdx/mise@v2026.4.7...v2026.4.8
v2026.4.7: : Native ARM64 Python on WindowsCompare Source
This patch release fixes precompiled Python installation on Windows ARM64 machines. Previously, mise always downloaded the x86_64 Python build on Windows regardless of architecture, which caused failures when loading native ARM64 libraries. mise now correctly downloads the aarch64 build on Windows ARM64 systems.
Fixed
[WinError 193] %1 is not a valid Win32 applicationwhen loading native ARM64 DLLs. mise now downloads the nativeaarch64-pc-windows-msvcbuild on ARM64 Windows while continuing to use x86_64 on x64 Windows. #8961 by @JohanLorenzoNew Contributors
Full Changelog: jdx/mise@v2026.4.6...v2026.4.7
v2026.4.6: : Tera templates in miserc.toml, shim race condition fix, and SPM self-hosted supportCompare Source
This release adds Tera template support to
.miserc.tomlfiles for dynamic early-stage configuration, fixes a race condition during shim creation that affected multi-backend setups, and improves SPM backend compatibility with self-hosted GitHub Enterprise and GitLab instances. Several other bug fixes improve environment variable handling across tasks, redaction, and the vfox backend.Highlights
.miserc.toml-- Use environment variables, XDG directories, and OS-level functions likearch()andos()directly in your.miserc.tomlconfiguration, enabling dynamic early-stage settings such as platform-specific ceiling paths.mise reshimormise install.Added
Tera template support in
.miserc.toml--.miserc.tomlfiles now support Tera templates with a limited context available during early initialization: OS environment variables,config_root,cwd, XDG directories, and built-in functions/filters. Templates that fail to render gracefully fall back to raw content. #8867 by @richardthe3rdsing-boxadded to the built-in registry -- Install the sing-box universal proxy platform viamise use sing-box. #8944 by @tony-solFixed
Shim race condition with overlapping backends -- When multiple plugins provide the same shim (e.g.,
nodejsvia the default registry andasdf:nodejs), concurrentmake_shimcalls could race on file removal, producing intermittent "No such file or directory" errors. The file removal now tolerates already-deleted files. #8947 by @brander-johnmise env --redactedmissing tools-only redactions -- Env vars declared with bothtools = trueandredact = truewere not included in the redaction filter formise env --redacted. Both the standard and tools-only redaction sets are now checked. #8956 by @jakedgySPM backend API URL for self-hosted instances -- When using the SPM backend with a full URL pointing to a self-hosted GitHub Enterprise or GitLab instance, mise now derives the correct API URL from the host instead of always falling back to
api.github.com. Explicitapi_urloptions still take precedence. #8955 by @ThomasDutartrevfox backend missing dependency env -- When a vfox backend plugin declared
dependson another tool, the dependency's binaries were not available on PATH during plugin Lua hooks (BackendListVersions,BackendInstall,BackendExecEnv). Dependency environment is now properly propagated, matching the behavior of other backends. #8952 by @cpreciosoTask usage Tera templates failing with flags -- Task
usagefield defaults using{{ env.VAR }}Tera templates would fail with "Variable not found in context" whenever any flags were passed. The task argument parser now uses the full computed environment instead of an empty map. #8957 by @jdxClarified attestation settings placement -- The help messages for Python and Ruby attestation settings now specify that they must be placed under
[settings]inmise.toml, not under[python]or[ruby]where they are silently ignored. #8939 by @fru1tworldNew Contributors
Full Changelog: jdx/mise@v2026.4.5...v2026.4.6
v2026.4.5: : GitLab and Forgejo token support, env file diagnostics, and shell fixesCompare Source
This release extends mise's authentication support to GitLab and Forgejo backends, surfaces env files in diagnostic commands, and fixes several bugs in bash shell hooks, Windows tool installation, and PATH handling.
Highlights
mise config lsandmise doctornow show env files loaded viaMISE_ENV_FILEor_.filedirectives, making it easier to trace where environment variables come from.cd.Added
GitLab and Forgejo token resolution -- The GitLab and Forgejo backends now support the same multi-source token resolution as GitHub: environment variables (
MISE_GITLAB_TOKEN,MISE_FORGEJO_TOKEN, etc.), per-host token files (gitlab_tokens.toml,forgejo_tokens.toml), CLI tool integration (glab, fj),credential_command, andgit credential fill. A newmise tokencommand replaces the oldmise github tokenand addsmise token gitlabandmise token forgejosubcommands for debugging token resolution. #8868 by @roeleEnv files in
config lsanddoctor-- Env files loaded via theMISE_ENV_FILEsetting or_.fileconfig directives now appear inmise config lsoutput (with env var keys shown in verbose mode) and inmise doctoroutput (both text and JSON). #8853 by @SamSoldatenkoFixed
Double
.exeextension on Windows (aqua backend) -- When a package's Windows override URL already includes.exe, mise no longer appends a second.exesuffix. This affected 37 aqua registry packages includingcli/cli,kubernetes/kubectl,gruntwork-io/terragrunt, andrust-lang/rustup. #8863 by @yusei-wyDuplicate trust warning in bash -- Entering an untrusted project directory in bash triggered the trust warning from both the
chpwdhook andPROMPT_COMMAND, producing a duplicate message. The bash activation script now coordinates between the two hooks so the warning appears exactly once. #8920 by @timothyspargConfig root injected into PATH via
_.source-- When a sourced script prepended toPATH(e.g.,export PATH="/custom:$PATH"), an empty path component could resolve to the config root directory and get injected intoPATH. Empty path segments are now filtered out. #8936 by @jdxSpurious dependency warnings during install -- When
mise.tomlconfigured both a language runtime and a package from that ecosystem (e.g.,node+npm:prettier), mise would warn that npm was missing during version resolution even though node was configured and would be installed first. The warning is now suppressed when the providing tool is present in the toolset. #8923 by @jdxChanged
mise github tokenrenamed tomise token github-- The oldmise github tokencommand still works but is hidden from help output. The newmise tokencommand group addsgithub,gitlab, andforgejosubcommands. #8868 by @roeleNew Contributors
Full Changelog: jdx/mise@v2026.4.4...v2026.4.5
v2026.4.4: : Tool Dependencies, .NET Runtimes, and Task Argument ForwardingCompare Source
A feature-packed release that adds user-defined tool dependencies, .NET runtime-only installs, argument forwarding to task dependencies, and stronger supply-chain security for lockfiles -- along with a large batch of bug fixes across multiple backends and shells.
Highlights
mise.toml-- A newdependsfield lets you ensure one tool is fully installed before another starts, useful for tools with runtime dependencies on each other.{{usage.*}}templates, enabling parameterized build/deploy pipelines.runtimetool option.mise locknow cryptographically verifies provenance for the current platform at lock time, and a newlocked_verify_provenancesetting enables re-verification at install time.Added
User-specified tool dependencies -- Declare explicit installation dependencies between tools in
mise.tomlwith a newdependsfield, ensuring one tool is fully installed before another starts. #8776 by @cprecioso.NET runtime-only installs -- Install .NET runtimes alongside or instead of SDKs using the
runtimetool option. Valid values:dotnet,aspnetcore,windowsdesktop. #8524 by @fragon10Task dependency argument forwarding -- Task dependencies can reference parent task arguments using
{{usage.*}}templates independs,depends_post, andwait_for. Arguments flow through entire dependency chains. #8893 by @jdxinstall_beforeenforced on transitive npm dependencies -- Theinstall_beforesupply-chain cutoff is now forwarded to transitive dependency resolution using each package manager's native mechanism (npm --before,bun --minimum-release-age,pnpm --config.minimumReleaseAge). #8851 by @risu729locked_verify_provenancesetting -- New setting (also auto-enabled byMISE_PARANOID) that forces cryptographic provenance re-verification at install time even when the lockfile already has checksum and provenance data.mise locknow also performs full verification for the current platform at lock time. #8901 by @jdxtursoadded to the built-in registry -- Install the Turso CLI viamise use turso. #8884 by @kennFixed
--env=VALUEand-E=VALUEflag parsing -- The equals-sign form of the environment flag (e.g.,mise --env=production) was silently ignored, causing fallback to the default environment. Both--env=VALUEand--env VALUEforms now work correctly. #8889 by @jdx.devversions filtered in fuzzy matching -- Versions like2026.3.3.162408.dev0no longer incorrectly satisfy stable version requests. The version regex now matches.devin addition to-dev. #8849 by @richardthe3rdmise lock <tool>-- Runningmise lock nodeafter a version change no longer leaves duplicate entries for the old and new versions. #8599 by @altendkyfailed to update DIRENV_DIFFwarning no longer appears when the direnv diff environment variable is empty. #8857 by @yalemanmise trustwarning twice. #8898 by @timothysparg.tool-versionsno longer requires trust for task listing -- Files without Tera template syntax ({{,{%,{#) are skipped during the trust check inmise task ls. #8876 by @dportalesrfilter_binsand other tool options are no longer lost when specifying a version via CLI (e.g.,mise bin-paths tool@version). #8888 by @jdxtool_aliasnow correctly use the alias-specificasset_patternand other options instead of inheriting from the original tool. #8892 by @jdxmise.lockinstead of always recomputing it, fixing reproducibility for locked installs. #8750 by @hehaoqianjdx/rubynow support build revision tags (e.g.,3.3.11-1), preventing lockfile breakage when binaries are rebuilt with different checksums. #8900 by @jdxChanged
go.*namespace -- Allgo_*settings (e.g.,go_set_goroot) have been renamed to the nestedgo.*format (e.g.,go.set_goroot) for consistency with other language settings. The old names are preserved as deprecated aliases. #8598 by @jdbruijnBreaking Changes
asdf-- usedisable_backendsinsteadvfox-- usedisable_backendsinsteadcargo_binstall-- usecargo.binstallinsteaddisable_default_shorthands-- usedisable_default_registryinsteadpipx_uvx-- usepipx.uvxinsteadpython_compile-- usepython.compileinsteadpython_default_packages_file-- usepython.default_packages_fileinsteadpython_patch_url-- usepython.patch_urlinsteadpython_patches_directory-- usepython.patches_directoryinsteadpython_precompiled_arch-- usepython.precompiled_archinsteadpython_precompiled_os-- usepython.precompiled_osinsteadpython_pyenv_repo-- usepython.pyenv_repoinsteadpython_venv_stdlib-- usepython.venv_stdlibinsteadNew Contributors
Full Changelog: jdx/mise@v2026.4.3...v2026.4.4
v2026.4.3: : Fix seccomp build on armv7Compare Source
A small patch release that fixes a compile error preventing mise from building on 32-bit ARM (armv7) targets.
Fixed
mise execfailed to compile on armv7 targets. Thelibc::SYS_socketandlibc::SYS_socketpairconstants arei32on 32-bit platforms but the rule map expectsi64keys, causing a type mismatch. An explicitas i64cast fixes the build while remaining a no-op on 64-bit platforms. #8869 by @jdxFull Changelog: jdx/mise@v2026.4.2...v2026.4.3
v2026.4.2: : Process sandboxing for exec and runCompare Source
This release introduces experimental process sandboxing for
mise execandmise run, allowing you to restrict filesystem access, network access, and environment variables for executed processes.Added
Process sandboxing for
mise xandmise run(experimental) -- A new lightweight sandboxing layer lets you lock down what processes spawned by mise can access. On Linux it uses Landlock for filesystem restrictions and seccomp-bpf for network filtering; on macOS it usessandbox-exec(Seatbelt) with generated profiles. Requiresexperimental = truein settings. #8845 by @jdxTask-level configuration is also supported:
Fixed
RUNTIME.osTypeandRUNTIME.archTypevalues -- Fixed inconsistent documentation for runtime template variables and simplified examples. #8785 by @esteveFull Changelog: jdx/mise@v2026.4.1...v2026.4.2
v2026.4.1: : Per-tool install_before and musl detection fixesCompare Source
This release adds per-tool
install_beforeoverrides for more granular control over version freshness, fixes musl/glibc detection in minimal Docker containers, and ensures the-qflag works correctly withmise prepare.Added
Per-tool
install_beforeoption -- You can now setinstall_beforeon individual tools to override the global setting. This is useful when some tools need tighter freshness windows than others. Precedence is:--beforeCLI flag > per-toolinstall_before> globalinstall_beforesetting. #8842 by @sargunv-headwayRegistry: dbt-fusion --
dbt-fusionis now available as a short name in the mise registry, backed byaqua:getdbt.com/dbt-fusion. #8837 by @ryan-pipFixed
Musl detection in minimal Docker containers -- A musl-compiled mise binary running in a minimal container (scratch, busybox, distroless) with no
/lib/ld-*files would incorrectly identify the platform as glibc, causing it to select the wrong lockfile entries or tool variants. When no dynamic linker is found at runtime, mise now falls back to the binary's compile-time target. Additionally, a newMISE_LIBCenvironment variable (muslorgnu) allows explicitly overriding the detection. #8825 by @davireismise prepare -qnot suppressing output -- The-q(quiet) flag was not suppressing status messages inmise preparebecause they usedmiseprintln!()which bypasses the logging system. These messages now use standard logging macros that respect the quiet setting. #8792 by @Marukome0743Wrong option in
mise preparedocs example -- Theansible-galaxyexample in the prepare documentation used-f(force) instead of-r(requirements file). #8839 by @rndmh3roNew Contributors
Full Changelog: jdx/mise@v2026.4.0...v2026.4.1
v2026.4.0: : Linked version fixes, monorepo task aliases, and Azure Developer CLICompare Source
This release fixes a panic when using
mise linkwith aqua-backed tools, resolves bare task alias lookup in monorepo configurations, and handles arustup checkexit code that was incorrectly treated as an error.Added
azdis now available as a short name in the mise registry, backed byaqua:Azure/azure-dev. Install withmise use -g azd@latest. #8828 by @rajeshkamal5050Fixed
Panic with linked versions on aqua-backed tools -- Running
mise doctor,mise reshim, or any command that callslist_bin_pathson an aqua-backed tool with a linked version (created viamise link) would panic with aStripPrefixError. 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, returninginstall_path/bindirectly. #8801 by @nikobockermanmise outdatedfailing for Rust --rustup checkreturns exit code 100 when toolchain updates are available, which is normal behavior. Previously, mise treated this as a command failure, causingmise outdatedto report an error forcore:rust. The exit code is now handled correctly. #8832 by @shalkBare task aliases not resolving in monorepo mode -- In a monorepo with
config_rootsconfigured, runningmise run prl(a bare alias) would fail with "no task //:prl found", even thoughmise run //:prlworked. The issue was thatexpand_colon_task_syntaxexpanded 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 by @nkakourosTask help not shown for metadata-only usage specs -- When a task script defined
#USAGE long_about,before_help,after_help, orexampleswithout anyargorflagdirectives,mise run task --helpwould show the generic "This task does not accept any arguments" message instead of the usage-based help with the detailed description. #8824 by @nkakourosNew Contributors
Full Changelog: jdx/mise@v2026.3.18...v2026.4.0
v2026.3.18: : Python provenance verification, Go sub-module fixes, and shim recursion guardsCompare Source
This release adds supply-chain security improvements for Python, fixes several shim recursion issues that could cause system hangs, and improves Go backend version resolution for deeply nested sub-modules.
Highlights
astral-sh/python-build-standalonecan now be verified using GitHub Artifact Attestations, with downgrade protection in lockfiles.exec()templates with mise-managed tools.go list -versionsnow correctly install with@latestinstead of incorrectly resolving to a parent module's version.Added
Python GitHub Artifact Attestations -- Precompiled Python binaries are now verified against GitHub Artifact Attestations from
astral-sh/python-build-standalone, following the same pattern already used for Ruby. A newpython.github_attestationssetting (env:MISE_PYTHON_GITHUB_ATTESTATIONS) overrides the globalgithub_attestationssetting for Python specifically. When enabled,mise lockrecordsprovenance = "github-attestations"in lockfile entries, andmise installverifies downloaded tarballs. If a lockfile records provenance but verification is disabled at install time, the install fails with a downgrade-attack error. #8820 by @maleptRegistry: svgo --
svgo(SVG Optimizer) is now available asnpm:svgo. #8817 by @3w36zj6Fixed
Shim infinite recursion with system shims on PATH -- When tools are installed via
mise install --system(e.g. in Docker/devcontainer images), a second shims directory is created atMISE_SYSTEM_DATA_DIR/shims. If both the user and system shims directories were on PATH, invoking a shim for a tool not in any config file would hang indefinitely. The PATH fallback now skips both shims directories and rejects any binary that canonicalizes to the mise binary itself. #8816 by @andrewthauerFork bomb from
exec()templates, credential commands, and git credentials -- Three subprocess-spawning code paths inherited mise shims in PATH. When the subprocess invoked a mise-managed tool (e.g.gh auth tokenin anexec()template orcredential_command), the shim re-entered mise, triggering the same subprocess again -- causing infinite recursion. Observed as load average >1800 on affected systems. A new sharedpath_env_without_shims()helper now strips the shims directory from PATH in all three call sites. #8802 by @antonioacgGo backend
--lockedmode -- The Go backend was missing asupports_lockfile_url() -> falseoverride, causingmise install --lockedto fail for any go-backend tool since their lockfile entries never contain download URLs. #8790 by @palootcenas-outreachGo deeply nested sub-module version resolution --
mise ls-remotefor deeply nested Go sub-modules (e.g.github.com/go-kratos/kratos/cmd/kratos/v2) would incorrectly resolve to the root module's versions. The version fetching logic now tries the exact tool path first and treats an empty version list as authoritative, falling back to@latestfor installation instead of using a parent module's version. Results are now cached per module path. #8823 by @roeleFlutter version sorting -- Fixed version sorting in the Flutter registry entry by stripping the
-stablesuffix before sorting, and switched to per-platform URL templates. #8818 by @roeleNew Contributors
Full Changelog: jdx/mise@v2026.3.17...v2026.3.18
Configuration
📅 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.