github jdx/mise v2026.4.16
v2026.4.16: Tera templates in inline tasks, raw_args passthrough, and runtime symlink paths

11 hours ago

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

Full Changelog: v2026.4.15...v2026.4.16

Don't miss a new mise release

NewReleases is sending notifications on new releases.