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-packed release that renames mise prepare to mise deps with new package management subcommands, adds aube as an npm backend package manager, enables vfox plugins to declare their own dependencies, and ships several important fixes for version resolution, lockfile concurrency, and GitHub Enterprise attestation verification.

Highlights

  • mise prepare renamed to mise deps with add/remove subcommands -- The experimental dependency management command is now mise deps, with new mise deps add npm:react and mise deps remove npm:lodash subcommands for managing individual packages. All config keys, settings, state files, and CLI flags have been updated accordingly ([prepare] to [deps], --no-prepare to --no-deps).
  • Aube package manager support for npm backend -- npm.package_manager now defaults to "auto", which prefers the aube package manager when available and falls back to npm. Explicit npm.package_manager = "aube" is also supported.
  • vfox plugins can declare dependencies -- Plugin authors can now specify PLUGIN.depends = {"node", "python"} in metadata.lua, so mise resolves installation order automatically without users needing depends = [...] in their config.
  • Stale versions host cache bypassed for package-registry backends -- npm, pipx, cargo, gem, go, and http/s3 backends with version_list_url now query their upstream sources directly, fixing the issue where tools like Flutter showed outdated versions.

Added

  • mise deps command with add/remove subcommands -- The experimental mise prepare command has been renamed to mise deps. New mise deps add and mise deps remove subcommands let you manage individual packages using ecosystem:package syntax. Currently supports npm, yarn, pnpm, and bun ecosystems. Bare mise deps defaults to mise deps install (the previous mise prepare behavior). #9056 by @jdx

    mise deps add npm:react           # add a dependency
    mise deps add -D npm:vitest       # add as dev dependency
    mise deps remove npm:lodash       # remove a dependency
    mise deps                         # install all project dependencies
    
    # Configuration uses [deps] instead of [prepare]
    [deps.npm]
    auto = true
    
  • --before flag for mise latest -- One-off latest-version lookups can now be constrained by release date. Supports absolute dates (2024-06-01) and relative durations (90d, 1y). Overrides per-tool install_before options and the global install_before setting. #9168 by @risu729

    mise latest node --before 2024-01-01
    mise latest node --before 90d
    
  • Aube package manager support for npm backend -- The npm backend now supports aube as an alternative package manager. The new default npm.package_manager = "auto" prefers aube when it is available in the active toolset and falls back to npm otherwise. #9256 by @jdx

  • filter_bins option for SPM backend -- Restrict which executable products are built and linked from a Swift package. Filtering happens before swift build, so unwanted products are never compiled. #9253 by @jdx

    [tools]
    "spm:swiftlang/swiftly" = { version = "latest", filter_bins = ["swiftly"] }
    
  • vfox plugin-declared dependencies via metadata.lua -- Plugin authors can now declare tool dependencies directly in their plugin's metadata.lua. User-specified depends in mise.toml remains additive. #9051 by @ahemon

    -- metadata.lua
    PLUGIN = {}
    PLUGIN.name = "my-tool"
    PLUGIN.version = "1.0.0"
    PLUGIN.depends = {"node", "python"}
    
  • Registry: bitwarden-secrets-manager -- Now available via the aqua backend (aqua:bitwarden/sdk-sm), replacing the legacy asdf plugin for better checksum/SLSA verification. #9255 by @msuzoagu

Fixed

  • Stale version listings for package-registry backends -- Backends with canonical upstream sources (npm, pipx, cargo, gem, go, and http/s3 with version_list_url) now skip the mise-versions.jdx.dev cache and query upstream directly. This fixes the issue where tools like Flutter showed outdated versions until users set MISE_USE_VERSIONS_HOST=0. #9245 by @jdx

  • Concurrent lockfile save race condition -- Fixed ENOENT errors when multiple mise processes updated the same lockfile simultaneously (commonly seen with parallel tool installs in CI via hk). Each save now uses a uniquely named temp file instead of a fixed mise.lock.tmp path. #9250 by @jdx

  • GitHub Enterprise attestation verification -- Artifact attestation verification now routes to the configured api_url instead of always hitting api.github.com, fixing 401 Unauthorized errors for GHES users. #9254 by @jdx

  • Noisy third-party debug/trace logs suppressed -- Debug and trace logs from dependency crates (h2, hyper, reqwest, rustls, etc.) are now filtered out of -v/-vv output. Set MISE_LOG_VERBOSE_DEPS=1 to restore them. #9248 by @jdx

  • Animated progress UI disabled in CI -- CI environments no longer show animated progress frames even when stderr is allocated as a TTY, preventing thousands of duplicate log lines. #9249 by @jdx

  • mise use respects --quiet and --silent -- The "tools:", "removed:", and "would update" messages are now suppressed when --quiet or --silent is passed. #9251 by @jdx

  • --locked works for vfox backend plugins -- Custom Lua backend plugins that cannot provide download URLs no longer fail with "No lockfile URL found" when using mise install --locked. #9252 by @jdx

New Contributors

  • @ahemon made their first contribution in #9051
  • @msuzoagu made their first contribution in #9255

Full Changelog: https://github.com/jdx/mise/compare/v2026.4.17...v2026.4.18

Copyright © 2023 - All right reserved by Yadoc SAS