mise v2026.10.19 Narrows Project Trust, Enforces Checksum and SLSA Verification and Makes lockfile_mode generate the Default
mise release v2026.10.19, published October 24, narrows what counts as project trust, enforces pinned checksums and SLSA provenance, and makes lockfile_mode generate the default, with a list of breaking changes.
Overview
The mise project published release v2026.10.19 on October 24, 2026. According to the release notes, “Most of this release closes ways an untrusted repository, download host or mirror could run code, leak credentials or get around verification.” The notes add that “Some of these fixes make mise stricter, so check Breaking Changes before you upgrade.” Also in the release, per the same notes, are lockfile_mode = "generate" as the new default, semantic highlighting from mise lsp, and a new {{ mise_config_dir }} template variable.
What Changed
Trust
The release notes say several actions no longer count as consent to trust a project: printing mise run --help or mise watch --help, running a shim, a hook starting mise run, an MCP call, or mise set, unset or tasks add saving config. Config writes now ask before they trust an untrusted sibling config, and the MCP server refuses untrusted file tasks, task names that look like file paths, and inline tool options.
Per the same notes, trust now stays with the files a user trusted: a forged git worktree, a symlink to a global config, a clone named .mise, or a project .miserc.toml can no longer borrow trust or hide global config. Pressing TAB no longer runs untrusted task code, because the dynamic completers only run for trusted config.
The release notes also say hook commands are now rendered once, when they load, and that before this change “a directory name containing {{ exec(...) }} could run code from a cd hook.”
Install verification
According to the release notes, “Pinned checksums, Node signatures, SLSA provenance (including the tag it was built from) and GitHub attestations are now enforced. Before, a 404 or a missing file could make mise skip them.” The notes list further specifics:
- A checksum pinned in
mise.lockis enforced for erlang, npm, spm and http, and if Node’sSHASUMS256.txt.sigis missing, the install fails. - SLSA provenance built from a different tag is rejected, so that “a mirror can’t serve an older release’s genuine artifact and provenance as a newer version.”
- Backdated GitLab
released_atdates and bundles with no transparency-log time can no longer get aroundminimum_release_age.
Resource limits and credentials
The release notes say HTTP response bodies are capped at 128 MiB, and that archive extraction stops once the output exceeds both 256 MiB and 100 times the download size, a limit controlled by a new global-only extract_max_ratio setting. Archives from the github, http, aqua, cargo-binstall, packslip and vfox backends may not contain symlinks that point outside the install directory.
On credentials, the notes say the GitHub token is sent only to GitHub API hosts or the configured api_url, and that credentials are now kept out of install directory names, install manifests, mise.lock, Referer headers, logs and error messages.
Lockfile default
The release notes state that lockfile_mode = "generate" is now the default. Installs now rebuild mise.lock from the current requests, reuse unchanged entries and also lock the other platforms, so a lockfile committed from one machine no longer fails mise install --locked on another platform because of missing entries. The notes say neither mode creates a lockfile and the lockfile format is unchanged. To keep the previous behavior, users set lockfile_mode = "merge" or MISE_LOCKFILE_MODE=merge.
Breaking Changes Listed
The release notes say “Most setups need no changes” and then list cases to check, including:
- Node: mirrors that don’t copy the
.sigfiles, and early releases without one (the notes give 4.0.0 and 5.12.0 as examples), neednode.gpg_verify = false. - GitHub Enterprise:
http:tools, aqua packages and remote tasks on/api/v3URLs no longer get the GitHub token automatically; the host must be added togithub.enterprise_hostsin global config, orapi_urlset. - Archives: archives containing symlinks that point outside the install directory fail to install, with brew casks and aqua dmg/pkg exempt. Archives that legitimately expand more than 100 times and past 256 MiB need a higher
extract_max_ratio, or0to turn the check off. - Worktrees: a worktree moved by hand needs
git worktree repairbefore it shares trust again. - Task sandbox:
--deny-writeandallow_writesandboxes no longer start on Linux before 6.2, and programs that need io_uring no longer run under--deny-net. - Hooks: a project’s
enter,leaveandwatch_fileshooks now start in the project root.
Related Earlier Release
A few days earlier, the v2026.10.15 release notes described a change to the built-in 24-hour minimum_release_age cooldown. Those notes say it “used to cover only backends that reported release dates” and now applies to every backend, and that a tool whose only version is less than 24 hours old now resolves to “no versions found.” The notes say a tool can be opted out through minimum_release_age_excludes, and that setting minimum_release_age = "0s" turns the cooldown off.
What We Don’t Know
Both sources are the project’s own release notes. The Herald found no independent reporting or security advisory describing attacks that motivated the changes, and the notes do not say whether any of the closed paths were exploited. The Herald did not test the release, and the list of breaking changes above is a selection, not the full list in the notes.