# mise v2026.8.12 — v2026.8.12: Cleaner diagnostics and a raft of task, config, and tool fixes - Product: mise (https://whatsnew.fyi/product/mise) - Vendor: mise - Date: 2026-08-24 - Version: v2026.8.12 - Original notes: https://github.com/jdx/mise/releases/tag/v2026.8.12 - Permalink: https://whatsnew.fyi/product/mise/releases/v2026.8.12 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Package-plugin managers now support pruning via an optional PackageUninstall hook, so mise bootstrap packages prune --manager is no longer Homebrew-only - **fixed** — Version-declaring files that begin with a UTF-8 byte-order mark now parse correctly instead of silently vanishing or resolving to a corrupt version - **fixed** — Saving from mise edit and the interactive TUI now preserves comments including leading, trailing, and section comments - **fixed** — An idiomatic file such as package.json that was disabled no longer triggers a spurious cannot update idiomatic version file warning on read-only operations - **fixed** — A cd target that cannot be entered is now reported with the path and OS reason instead of panicking - **fixed** — A task whose child process is killed by SIGINT is now treated as an interruption exiting 130 without failing sibling tasks - **fixed** — Value-taking usage flags without a default now stay string-typed during template rendering so path filters work on them - **fixed** — On Windows task files skipped because they have no known extension or shebang now explain why and give platform-appropriate guidance - **fixed** — Non-cached tool-stub execution now keeps the toolset's env_with_path rather than rebuilding PATH from a pristine environment - **fixed** — mise watch --clear=reset --restart no longer leaves the terminal without echo after Ctrl-C - **fixed** — go install no longer inherits a GOROOT that mise exported for a different Go which caused version mismatch failures - **fixed** — mise doctor now flags a tool whose install directory exists but is empty marking it (empty) and suggesting mise install --force - **fixed** — When an age SSH identity cannot be used decryption failures now explain which identity could not be read and why - **fixed** — The warning for an unexpanded $VAR now names the key or directive that referenced the missing variable and the config file it lives in - **fixed** — Casks already owned by Homebrew are now recognized as installed (read-only) rather than reported missing making declarative bootstrap idempotent for Homebrew-managed casks This release adds package uninstall support to the plugin bootstrap flow and fixes a broad set of task, config, tool, and diagnostic edge cases. Many changes turn silent failures and cryptic errors into actionable messages, so it is largely a robustness and quality-of-life release. ##### Added - **bootstrap:** Package-plugin managers now support pruning via an optional `PackageUninstall` hook, so `mise bootstrap packages prune --manager ` is no longer Homebrew-only. mise records ownership only for packages that go from missing to installed during an install, and prune removes only owned packages that are absent from the current config and trusted tracked configs. Pre-existing and manually installed packages are never claimed, dry-run never invokes the hook, and the keep-set is reloaded after confirmation so newly declared packages cannot be removed without another prompt. ([#12332](https://github.com/jdx/mise/pull/12332) by @jdx) ##### Fixed - **config:** Version-declaring files that begin with a UTF-8 byte-order mark now parse correctly. Previously a leading BOM (as written by Notepad or PowerShell's `Out-File -Encoding utf8`) could make `.tool-versions`, `.node-version`, `package.json` `packageManager`, registry-scraped files like `Earthfile`, and `.sdkmanrc` entries silently vanish or resolve to a corrupt version. Cached idiomatic parses written by an older mise are re-parsed so the fix takes effect on upgrade. ([#12325](https://github.com/jdx/mise/pull/12325) by @JamBalaya56562) - **config:** Saving from `mise edit` (and the interactive TUI) now preserves comments — leading, trailing, and section comments are captured on parse and written back on save, instead of being stripped. ([#12319](https://github.com/jdx/mise/pull/12319) by @Marukome0743) - **config:** An idiomatic file such as `package.json` that was tracked while enabled and later disabled no longer triggers a spurious "cannot update idiomatic version file" warning on read-only operations like `mise ls --all-sources`. The tracking entry is retained so re-enabling the tool reactivates it. ([#12194](https://github.com/jdx/mise/pull/12194) by @xqm32) - **cli:** A `cd` target that cannot be entered (for example via `MISE_CD` pointing at a missing directory, or a directory the process cannot chdir into) is now reported with the path and OS reason instead of panicking. ([#12314](https://github.com/jdx/mise/pull/12314) by @JamBalaya56562) - **task:** A task whose child process is killed by SIGINT (Ctrl-C reaching only the child) is now treated as an interruption, exiting 130 without failing sibling tasks, instead of reporting a spurious failure. Signalled processes now render as `killed by SIGINT`/`killed by SIGTERM` rather than "no exit status". ([#12323](https://github.com/jdx/mise/pull/12323) by @Marukome0743) - **task:** Value-taking usage flags without a default (for example `--file `) now stay string-typed during template rendering, so path filters like `dirname` work on them. Switch flags still default to booleans and count flags to integers. ([#12355](https://github.com/jdx/mise/pull/12355) by @jdx) - **tasks:** On Windows, task files skipped because they have no known extension or shebang now explain why and give platform-appropriate guidance, instead of producing no output or a misleading "Are you in a project directory?" message. Outdated `chmod +x` advice is gone from Windows messages. ([#12324](https://github.com/jdx/mise/pull/12324) by @JamBalaya56562) - **tool-stub:** Non-cached tool-stub execution now keeps the toolset's `env_with_path` rather than rebuilding PATH from a pristine environment, restoring project `_.path` directories and fixing discovery of sibling stubs. The stub-selected tool version is no longer shadowed by an outer task's install directories. ([#12322](https://github.com/jdx/mise/pull/12322) by @tmkx) - **watch:** `mise watch --clear=reset --restart` no longer leaves the terminal without echo after Ctrl-C. The controlling _[Truncated at 4000 characters — full notes: https://github.com/jdx/mise/releases/tag/v2026.8.12]_