v2026.7.6

jdx/misev2026.7.6Jul 14, 2026by mise-en-dev

AI Summary

This release adds per-task output styles, sandbox security defaults, and Flatpak package support to the bootstrap system.

Key Highlights

  • Per-task `output` style field decoupled from verbosity settings.
  • Global sandbox defaults for security (deny_all, deny_read, etc.).
  • Flatpak package support for Linux bootstrap.

Breaking Changes

  • `--quiet` and `quiet = true` no longer collapse task output to interleave.
  • `usage_*` variables are now invocation-local.

New Features

  • Reproducible host path copy layers for OCI
  • Private GitHub content and archive registry support
  • Task-level timeout values that render templates
  • Terminal width override via `MISE_TERM_WIDTH`

Full Release Notes

## Added
- **task:** per-task `output` style field, decoupled from verbosity, so styles like `prefix` and quietness combine freely [#10885](https://github.com/jdx/mise/pull/10885)
- **sandbox:** global `[settings.sandbox]` deny defaults (`deny_all`, `deny_read`, `deny_write`, `deny_net`, `deny_env`) [#10940](https://github.com/jdx/mise/pull/10940)
- **bootstrap:** Flatpak package support for `[bootstrap.packages]` on Linux [#10951](https://github.com/jdx/mise/pull/10951)
- **oci:** reproducible host path copy layers via `mise oci build --copy HOST_PATH:IMAGE_PATH` and `[[oci.copy]]` [#10952](https://github.com/jdx/mise/pull/10952)
- **doctor:** `mise doctor` now warns when a mise shim is shadowed by an earlier executable in `PATH` [#10919](https://github.com/jdx/mise/pull/10919)
- **aqua:** support for private `github_content` and `github_archive` packages via authenticated GitHub API endpoints [#10915](https://github.com/jdx/mise/pull/10915)
- **task:** task-level `timeout` values now render Tera templates [#10959](https://github.com/jdx/mise/pull/10959)
- **http:** `http_download_timeout` setting caps total download wall-clock time (default 30 minutes) [#10920](https://github.com/jdx/mise/pull/10920)
- **registry:** add git-town ([aqua:git-town/git-town](https://github.com/git-town/git-town)) [#10935](https://github.com/jdx/mise/pull/10935) and bundler (gem:bundler) [#10939](https://github.com/jdx/mise/pull/10939)

## Fixed
- **backend:** reinstall rolling versions (e.g. `nightly`) when the installed content is outdated [#10827](https://github.com/jdx/mise/pull/10827)
- **backend:** align migrated backend resolution [#10969](https://github.com/jdx/mise/pull/10969)
- **config:** keep already-installed versions eligible when `minimum_release_age` is configured [#10973](https://github.com/jdx/mise/pull/10973)
- **config:** let user table-syntax tool options override registry defaults [#10924](https://github.com/jdx/mise/pull/10924)
- **config:** reload settings when config is reset so bootstrap phases use a consistent snapshot [#10945](https://github.com/jdx/mise/pull/10945)
- **config:** warn when a tool version uses an unsupported npm-style semver range [#10916](https://github.com/jdx/mise/pull/10916)
- **config:** add Tera contrib helpers [#10970](https://github.com/jdx/mise/pull/10970)
- **task:** preserve structured task-level tool options (arrays/tables such as `os`, `depends`, `install_env`) [#10958](https://github.com/jdx/mise/pull/10958)
- **task:** isolate `usage_*` variables per invocation so nested tasks don't inherit stale parser output [#10963](https://github.com/jdx/mise/pull/10963)
- **task:** invalidate auto freshness after a failed rerun [#10953](https://github.com/jdx/mise/pull/10953)
- **task:** respect configured `includes` directory when editing/adding file tasks [#10955](https://github.com/jdx/mise/pull/10955)
- **s3:** resolve cross-platform lockfile URLs for locked mode [#10873](https://github.com/jdx/mise/pull/10873)
- **bootstrap:** preserve symlinks when extracting DMGs and always detach on copy failure [#10949](https://github.com/jdx/mise/pull/10949)
- **bootstrap:** support localized brew casks (`language`, `on_system_conditional`) and reuse existing Ruby [#10950](https://github.com/jdx/mise/pull/10950)
- **erlang:** lock source install outcomes [#10937](https://github.com/jdx/mise/pull/10937)
- **github:** align SLSA provenance with the selected asset [#10928](https://github.com/jdx/mise/pull/10928)
- **github:** treat `bin`/`rename_exe` as install-time options [#10925](https://github.com/jdx/mise/pull/10925)
- **npm:** isolate version queries from project cwd [#10927](https://github.com/jdx/mise/pull/10927)
- **cargo:** own the cargo-binstall compile fallback [#10926](https://github.com/jdx/mise/pull/10926)
- **registry:** normalize backend platform selectors [#10938](https://github.com/jdx/mise/pull/10938)
- **registry:** rename the podman binary to `podman-remote` [#10826](https://github.com/jdx/mise/pull/10826)
- **file:** ignore malformed pax metadata during sparse detection [#10978](https://github.com/jdx/mise/pull/10978)
- **copr:** fix x86_64 builds (nasm/cmake for Fedora, PREBUILT_NASM for RHEL/EPEL) [#10947](https://github.com/jdx/mise/pull/10947) and add PIE flag for aws-lc probe [#10974](https://github.com/jdx/mise/pull/10974)
- **toolset:** preserve ref selector install identity [#10942](https://github.com/jdx/mise/pull/10942)

## Changed
- **cargo:** disable cargo-quickinstall by default; opt back in with `cargo.binstall_quickinstall = true` [#10923](https://github.com/jdx/mise/pull/10923)
- **registry:** revert preferring aqua for codex [#10922](https://github.com/jdx/mise/pull/10922)

## Performance
- **aqua:** skip public reachability probes for packages marked private [#10914](https://github.com/jdx/mise/pull/10914)

## Documentation
- **aqua:** document local custom registries [#10966](https://github.com/jdx/mise/pull/10966)
- **config:** clarify sub-version arithmetic [#10943](https://github.com/jdx/mise/pull/10943)

## Breaking Changes
- **task:** `--quiet` / `quiet = true` / `MISE_QUIET=1` no longer collapse task output to un-prefixed interleave; they now preserve the resolved style. Use `--output quiet` (or `-o interleave`) for the old behavior [#10885](https://github.com/jdx/mise/pull/10885)
- **task:** `usage_*` variables are now invocation-local; workflows that injected them as implicit inputs must declare an input with `env=` instead [#10963](https://github.com/jdx/mise/pull/10963)

## 💚 Sponsor mise

mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.