Releases: jdx/mise-action
Release list
v4.2.3: Restore mise PATH propagation
A patch release that restores mise's PATH propagation to subsequent workflow steps — without reintroducing the full-PATH snapshot behavior that v4.2.1 fixed.
Fixed
Export mise PATH entries to subsequent steps (#575) by @jdx
v4.2.1 stopped exporting the complete PATH returned by mise env --json into GITHUB_ENV, which correctly prevented snapshotting the runner's environment into subsequent steps. However, that also dropped mise-produced PATH entries — tool shims, [env] _.path directories, and similar — that workflows relied on after the setup step. See #565.
The action now computes only the prefix that mise prepended to the existing PATH and forwards those directories individually through GITHUB_PATH. This preserves mise's configured ordering, composes cleanly with PATH changes from other actions, and never persists the runner's full PATH through GITHUB_ENV. The dotenv fallback path (used with older mise versions) also strips PATH= lines and re-derives additions from mise env --json.
A new export_path input (default true) lets workflows keep regular env exports while opting out of PATH changes:
- uses: jdx/mise-action@v4
with:
export_path: false # keep env vars, skip mise PATH additionsFull Changelog: v4.2.2...v4.2.3
v4.2.2: Zstd tar fallback for older runners
A small patch release that fixes archive selection on runners with an older tar and corrects a stale default in the README.
Fixed
Verify tar supports Zstd before picking .tar.zst (#569 by @JackMyers001
The action previously chose the .tar.zst mise archive whenever zstd --version succeeded, then extracted it with tar --zstd. On RHEL 8-compatible runners that ship zstd 1.4.4 alongside GNU tar 1.30, the --zstd option isn't recognized and installation failed.
Detection now runs both checks:
zstd --version
tar --zstd --version
If either fails, the action falls back to the .tar.gz archive. No configuration change is required — existing workflows on affected runners just start working again. Fixes #568.
Documentation
- Update the
cache_key_prefixexample in the README to reflect the current default ofmise-v1(previously documented asmise-v0) (#570 by @muzimuzhi).
New Contributors
- @JackMyers001 made their first contribution in #569
- @muzimuzhi made their first contribution in #570
Full Changelog: v4.2.1...v4.2.2
v4.2.1: Signed checksums and PATH export fix
A small patch release with two user-facing fixes: mise downloads are now verified against minisign-signed release checksums by default, and the env input no longer leaks the runner's PATH into subsequent steps.
Fixed
Verify mise downloads with signed checksums (#548) by @jdx
The action now embeds mise's minisign public key and verifies SHASUMS256.txt.minisig before trusting any release checksums, then checks the downloaded mise binary's SHA256 against the verified list. This applies to both GitHub release archives (verified before extraction) and the default mise.jdx.dev CDN path (verified against the signed checksum for the matching release asset). If a CDN download fails verification, the action warns and falls back to the signed GitHub release asset instead of installing an unverified binary.
- The existing
sha256input still works as an explicit override. - Pinned mise versions older than
2024.12.24(which predate minisign checksums) get a warning and skip signed verification rather than failing. - Because tar installs now extract from a verified file on disk, the previous streaming
download | tarfast path is replaced with a download-then-verify-then-extract flow.
Thanks to @potiuk for the detailed threat-model writeup in #547.
Exclude PATH from environment export (#556) by @jdx
The env input has always documented that "PATH modifications are not part of this", but since the switch to mise env --json in #252 (needed for redaction support), the action was exporting every string value returned by mise — including the computed PATH — into GITHUB_ENV. That effectively snapshotted the runner's entire PATH into subsequent steps and let [env] _.path entries in mise.toml leak past the action's own PATH management.
exportMiseEnv now skips PATH (case-insensitive) when exporting JSON env vars, restoring the documented behavior. Normal mise env vars are still exported, and PATH continues to be managed by the action's own setup (e.g. add_shims_to_path). Fixes #555.
Full Changelog: v4.2.0...v4.2.1
v4.2.0: Bootstrap mode & wget fallback
This release adds an opt-in bootstrap mode for projects that use mise bootstrap, and makes the action work on runner images that ship wget but not curl.
Added
Bootstrap mode (#522) by @jdx
Three new inputs let the action drive mise bootstrap instead of mise install:
- uses: jdx/mise-action@v4
with:
bootstrap: true
bootstrap_skip: "tools,task" # comma-separated parts to skip
bootstrap_args: "--yes" # extra args forwarded to mise bootstrap- When
bootstrap: true, the action runsmise bootstrapunder the existinginstallgate and setsMISE_EXPERIMENTAL=1automatically. - If a repo mise lock file is present, it runs
mise --locked bootstrap, matching the auto-lock behavior introduced formise installin v4.1.0. install_argscannot be combined withbootstrap: true— the action fails fast and tells you to usebootstrap_skip/bootstrap_argsinstead, because full bootstrap doesn't support partial tool install args.- A new
{{bootstrap_hash}}template variable is included in the default cache key (and available in customcache_keytemplates) so bootstrap and non-bootstrap configurations don't share caches.
bootstrap_skip relies on mise bootstrap --skip from jdx/mise#10497, so make sure you're on a recent mise version if you use it.
Fixed
- Fall back to
wgetwhencurlis unavailable (#521) by @risu729 — The action used to hard-codecurlfor fetching the mise binary, tar/zip archives, and the latestVERSIONlookup, which broke on minimal runner images that only shipwget. It now preferscurland transparently falls back towget, preserving the streamingdownload | tarfast path for.tar.gzand.tar.zstinstalls on Linux/macOS. Proxy support is unchanged — both tools honorHTTP_PROXY/HTTPS_PROXY. Addresses jdx/mise#10488.
Documentation
Full Changelog: v4.1.0...v4.2.0
v4.1.0: automatic --locked installs
This release adds automatic locked installs when a mise.lock is present, and fixes a long-standing cache-key collision that could poison tool installs when workflows migrate between runner providers.
Added
Automatic --locked install when mise.lock exists (#495) by @zeitlinger
When a repo contains mise.lock, the action now automatically passes --locked to mise install (on mise versions that support it). This removes the need to manually set install_args: --locked and prevents mise install from silently mutating the lockfile in CI. Explicit install_args and older mise versions are still respected.
Note: workflows with a stale lockfile may now fail earlier and more explicitly instead of silently updating mise.lock mid-run — this surfaces lockfile drift rather than hiding it.
Fixed
- Cache key collisions across runner providers (#456) — the default cache key now includes the runner image (e.g.
macos15,ubuntu24for GitHub-hosted runners;self-hostedotherwise). Previously, repos migrating between providers like github-hosted, namespace.so, BuildJet, and self-hosted runners with the same OS/arch could restore a peer provider's~/.local/share/mise/installs/*, causing failures likedoes not have an executable named '…'or SIGILL crashes from binaries built against a different glibc/CPU featureset. Expect a one-time cache miss after upgrading; thereafter the cache stays scoped per image. mise-shim.exemissing on Windows (#476) by @risu729 — the action now installsmise-shim.exealongsidemise.exeand repairs restored caches that lack the shim. Fixes #475.
Changed
- Migrated the bundled action build from ncc (CommonJS) to Rollup (ESM) (#436). No user-facing behavior change.
Full Changelog: v4.0.1...v4.1.0
v4.0.1: Documentation and Internal Cleanup
A small maintenance release that updates the README documentation to reflect v4 and cleans up internal code. There are no functional changes to the action itself.
Changed
- Updated all README examples to reference
jdx/mise-action@v4,actions/checkout@v6, and current tool versions by @deining in #407 and #408 - Extracted
getCwd()helper to deduplicate working directory resolution logic (internal refactor, no behavior change) by @altendky in #403
New Contributors
Full Changelog: v4.0.0...v4.0.1
v4.0.0: Node.js 24 Runtime
A major version bump that updates the action's runtime from Node.js 20 to Node.js 24. GitHub has deprecated Node.js 20 for Actions and will force Node.js 24 as the default starting June 2, 2026. This release proactively adopts the new runtime to eliminate deprecation warnings and ensure continued compatibility.
Breaking Changes
-
The action now runs on the Node.js 24 runtime instead of Node.js 20. If your workflow pins
jdx/mise-action@v3, you will continue to see deprecation warnings. Update tojdx/mise-action@v4to resolve them:- uses: jdx/mise-action@v4
This should be a seamless upgrade for the vast majority of users — no configuration changes are needed beyond updating the version reference.
Changed
- Updated GitHub Actions runtime from Node.js 20 to Node.js 24 by @tumerorkun in #395 (fixes #394)
New Contributors
- @tumerorkun made their first contribution in #395
Full Changelog: v3...v4.0.0
v3.6.3
What's Changed
- fix: pass cwd to all exec calls in exportMiseEnv() by @andrewthauer in #390
- chore: release v3.6.3 by @mise-en-dev in #391
New Contributors
- @andrewthauer made their first contribution in #390
Full Changelog: v3.6.2...v3.6.3
v3.6.2
What's Changed
- chore(deps): update dependency prettier to v3.8.1 by @renovate[bot] in #368
- chore(deps): update dependency @types/node to v24.10.9 by @renovate[bot] in #367
- chore(deps): update github/codeql-action digest to 439137e by @renovate[bot] in #370
- chore(deps): lock file maintenance by @renovate[bot] in #372
- chore(deps): update autofix-ci/action digest to 7a166d7 by @renovate[bot] in #375
- chore(deps): update actions/checkout digest to de0fac2 by @renovate[bot] in #374
- chore(deps): lock file maintenance by @renovate[bot] in #377
- chore(deps): update github/codeql-action digest to b5ebac6 by @renovate[bot] in #378
- chore(deps): update dependency @types/node to v24.10.13 by @renovate[bot] in #379
- chore(deps): update github/codeql-action digest to f5c2471 by @renovate[bot] in #380
- fix: move file_hash to end of cache key template to prevent prefix matching by @altendky in #384
- chore(deps): update dependency @types/handlebars to v4.1.0 by @renovate[bot] in #381
- chore(deps): lock file maintenance by @renovate[bot] in #386
- chore(deps): update github/codeql-action digest to 4558047 by @renovate[bot] in #387
- chore(deps): lock file maintenance by @renovate[bot] in #389
- chore: release v3.6.2 by @mise-en-dev in #385
New Contributors
Full Changelog: v3.6.1...v3.6.2
v3.6.1
What's Changed
- Revert "fix(cache): isolate cache keys per working_directory in monorepos" by @jdx in #364
- chore: release v3.6.1 by @mise-en-dev in #365
Full Changelog: v3.6.0...v3.6.1