mise-en-place

notes:
Release list
2026.5.1: Aqua cosign and a reshim rescue
RECENT
2026.5.0: Conda graduates, smarter pres, and Windows POSIX tasks
RECENT
2026.4.28: Remote tasks pinned by commit SHA
RECENT
2026.4.27: npm install args, smarter watch, and a macOS shim recursion fix
RECENT
2026.4.25: Sharper task tooling and lockfile fixes
2026.4.24: Resilient downloads and global pre- opt-in
2026.4.23: Pre-s, libc preference, and a Node musl fix
2026.4.21: untrust command and prune lockfile fixes
2026.4.22: Repaired latest resolution and clearer deps output
2026.4.20: Lockfile cleanup and path: fixes
2026.4.19: OCI images, aqua templates, and more resilient installs
2026.4.18: Deps management, aube support, and vfox plugin dependencies
2026.4.17: install_before fixes, lockfile repair, and new registry tools
2026.4.16: Tera templates in inline tasks, raw_args passthrough, and runtime symlink paths
2026.4.15: Windows path separator fix and improved GitHub token detection
2026.4.13: Remote cache, Go install_before, and task tool objects
2026.4.14: Fix GitHub attestation verification for some tools
2026.4.12: OS/arch filtering, task confirmation defaults, and npm supply chain improvements
2026.4.11: Task dependency templates and npm semver range support
2026.4.10: Fix spurious warnings from postinstall hooks running tasks
Release notes:

A feature-rich release with two new task runner capabilities, an important fix for how mise exposes tool paths in the environment, and a batch of task system improvements.

Inline table run tasks (run = [{ task = "...", args = [...] }]) now support Tera templates, so you can pass parsed usage arguments into sub-task calls. A new raw_args option lets proxy tasks forward all flags -- including --help -- directly to the underlying command without mise intercepting them. On the tooling side, fuzzy version requests like python = "3.14" now put the stable runtime symlink on PATH instead of the resolved patch directory, so virtualenvs and other tools that cache interpreter paths survive patch upgrades.

Highlights

  • Tera templates in inline run tasks -- args and env in table-style run entries can now use {{usage.*}} variables, connecting usage-parsed arguments to sub-task invocations.
  • raw_args for proxy tasks -- Tasks that wrap tools with their own CLI (Django manage.py, Next.js, argparse scripts) can set raw_args = true so mise never intercepts --help or rewrites flags.
  • Runtime symlink paths for fuzzy versions -- PATH entries now use the requested-version symlink (e.g. .../installs/python/3.14/bin) rather than the concrete patch directory, so downstream tools that cache paths are not broken by patch upgrades.
  • TOML task metadata merges into file tasks -- A [tasks.my-script] block in mise.toml now overlays env, description, dir, and other metadata onto a same-named file task instead of being silently dropped.

Added

  • Tera template support for inline table run tasks -- args and env values in run = [{ task = "greet", args = ["{{usage.name}}"] }] are now rendered through the Tera engine, allowing usage-parsed arguments and environment variables to flow into sub-task calls. #9079 by @iamkroot

  • raw_args task option -- Set raw_args = true on a task definition (TOML or file header) to skip mise's argument parsing entirely. All arguments, including --help and -h, are forwarded verbatim to the underlying command. Additionally, mise run task -- --help now bypasses the usage parser even without raw_args, restoring the documented escape hatch. #9118 by @jdx

    [tasks.manage]
    raw_args = true
    run = 'python manage.py'
    
    mise run manage --help            # forwarded to manage.py
    mise run manage migrate --fake    # all flags reach manage.py unchanged
    
  • .perl-version support for perl -- The perl registry entry now recognizes .perl-version files for both auto-detection and idiomatic version file reading (when idiomatic_version_file_enable_tools includes "perl"), matching the pattern used by plenv. #9102 by @ergofriend

  • Registry: ibmcloud -- IBM Cloud CLI is now available via mise use ibmcloud. #9139 by @dnwe

  • Registry: rush -- rush, a cross-platform tool for executing jobs in parallel (similar to GNU parallel), is now available via mise use rush. #9146 by @jdx

Fixed

  • Runtime symlink paths for fuzzy versions -- When a fuzzy version like python = "3.14" resolved to 3.14.4, PATH used the concrete install directory (.../installs/python/3.14.4/bin). Now mise uses the stable requested-version symlink (.../installs/python/3.14/bin), so tools that cache interpreter paths (e.g. virtualenvs) survive patch upgrades without breaking. #9143 by @jdx

  • Go subpath packages reinstalling on every upgrade -- A stale workaround in the Go backend overrode the version to "latest" for subpath packages, causing mise up to reinstall them every time because the resolved version directory didn't match. This workaround has been removed now that proxy-based resolution handles subpath packages correctly. #9135 by @c22

  • Missing task suggestions -- mise run <missing-task> now suggests similar task names and shows a compact table of available tasks (up to 20), making it easier to find the right name. #9141 by @jdx

  • Task prefix colors no longer use red/yellow -- Red and yellow were removed from the task prefix color palette because they could be confused with errors and warnings. The palette now uses 16 styles: 4 base colors (blue, magenta, cyan, green) combined with 4 modifiers (regular, bold, dim, bright). #8782 by @lechuckcaptain

  • TOML task block merged into same-named file task -- A [tasks.my-script] block in mise.toml was silently discarded when a file task with the same name existed. Now the TOML block overlays env, description, dir, aliases, depends, and other metadata onto the file task. Additionally, mise tasks ls --json now reports the resolved task directory instead of null. #9147 by @jdx

  • npm install_before respected for dist-tag resolution -- mise latest and similar commands that resolve npm dist-tags now honor the install_before date filter instead of always returning the absolute latest version. #9145 by @webkaz

  • GitHub attestation verification uses full token chain -- Attestation verification was only using the GITHUB_TOKEN environment variable, ignoring tokens configured via credential_command, github_tokens.toml, the gh CLI, or git credential fill. This caused unauthenticated rate-limit hits even when a valid token was configured. #9154 by @jdx

  • Tool option serialization round-trips correctly -- Comma-containing string values in tool options (e.g. [tool_options]) no longer get split into fake extra keys during re-serialization, and empty brackets are no longer emitted when all remaining options are filtered out. #9124 by @atharvasingh7007

  • vfox backend falls back to absolute bin path -- When a vfox plugin does not set env_keys, mise now falls back to the absolute bin path instead of failing. #9151 by @80avin

  • mise self-update available in stub builds -- When compiled without the self_update Cargo feature, the subcommand was completely missing from the CLI. It now shows a stub message explaining the feature is unavailable. #9144 by @salim-b

New Contributors

  • @80avin made their first contribution in #9151
  • @atharvasingh7007 made their first contribution in #9124
  • @lechuckcaptain made their first contribution in #8782
  • @ergofriend made their first contribution in #9102
  • @dnwe made their first contribution in #9139

Full Changelog: https://github.com/jdx/mise/compare/v2026.4.15...v2026.4.16

Copyright © 2023 - All right reserved by Yadoc SAS