Skip to content

chore(deps): update dependency jdx/mise to v2026.9.5 - #2436

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/mise
Open

chore(deps): update dependency jdx/mise to v2026.9.5#2436
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/mise

Conversation

@renovate

@renovate renovate Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
jdx/mise uses-with minor v2026.8.11v2026.9.5

Release Notes

jdx/mise (jdx/mise)

v2026.9.5: : macOS defaults, per-platform dotfiles, and complete lockfiles

Compare Source

This release deepens macOS bootstrap support with current-host and nested defaults, lets dotfiles and tasks adapt to the platform and to parsed arguments, and adds an opt-in trial of complete lockfile generation. It also carries a batch of install progress, self-update, brew-cask, and sandbox fixes.

Added
  • bootstrap: New [[bootstrap.macos.defaults_entries]] blocks let you set macOS preferences explicitly with domain, key, value, and an optional host (any by default, or current), covering preferences normally written via defaults -currentHost while keeping the existing [bootstrap.macos.defaults] shorthand. Entries also accept an optional path to patch a nested dictionary value without replacing its siblings, preserving property-list types and creating missing parents. (#​12983 by @​azohra, #​12984 by @​azohra)

    [[bootstrap.macos.defaults_entries]]
    domain = "com.apple.dock"
    key = "autohide"
    value = true
    host = "current"
  • bootstrap: More friendly macOS preferences: Finder folder sorting and default cloud save location, Dock autohide delay and timing (integers or floats), and keyboard automatic capitalization and spelling correction, all using snake_case names consistent with the existing sections. (#​13032 by @​jdx)

  • bootstrap: [bootstrap.files] and [bootstrap.directories] entries gain phase = "pre-packages" so repository definitions, apt sources, and signing keys can be applied before package installation instead of only afterward. Existing declarations default to "post-packages". (#​13052 by @​jdx)

    [bootstrap.files."/etc/apt/sources.list.d/vendor.sources"]
    source = "./files/vendor.sources"
    phase = "pre-packages"
  • bootstrap: Ordinary [bootstrap.files] templates can now reference resolved [vars] values, alongside the existing config_root, target, and secret() helpers. (#​13033 by @​nettlesh)

  • dotfiles: A single dotfiles source can deploy to different destinations per operating system, architecture, or mise profile using variants with an optional target. This works for copy, symlink, symlink-each, and template modes. (#​13050 by @​jdx)

    [dotfiles.settings]
    source = "dotfiles/vscode/settings.json"
    mode = "copy"
    variants = [
      { os = "macos", target = "~/Library/Application Support/Code/User/settings.json" },
      { os = "linux", target = "~/.config/Code/User/settings.json" },
    ]
  • task: Task sources and outputs can now use {{usage.*}} templates, resolved per invocation from parsed arguments and flags before freshness and artifact-cache checks run, so different argument values track freshness independently. (#​13051 by @​jdx)

  • brew-cask: Casks with structured set_permissions preflight/postflight steps now install correctly (for example brew-cask:blender), running an unprivileged chmod over resolved staged or appdir paths instead of failing with an unsupported step-type error. (#​13043 by @​azohra)

  • lock: Opt-in trial of complete lockfile generation via lockfile_mode = "generate" (or MISE_LOCKFILE_MODE=generate). The default remains incremental merge. Generate mode rebuilds lockfiles from current requests while treating the previous file as an immutable baseline, reusing unchanged artifacts and publishing through staged atomic writes so failures or concurrent edits do not clobber a good lockfile. This mode records only cryptographically verified provenance per target platform; provenance_verified is no longer treated as a trust signal. (#​13031 by @​jdx)

  • self-update: New disable_update_warning setting (MISE_DISABLE_UPDATE_WARNING) suppresses "newer mise available" notices in mise version, mise --version, and mise doctor. Explicit self-update and automatic updates are unaffected. (#​13028 by @​jdx)

Fixed
  • install: Interactive installs no longer leave a permanent line for every resolved, skipped, or already-installed tool; live progress shows what is happening while the final summary lists what changed (for example installed 1 tool in 1.1s: dummy@1.0.0). mise upgrade no longer duplicates its old to new version list. (#​13030 by @​jdx)
  • install: Long non-TTY installs no longer flood CI logs with a snapshot every three seconds. The heartbeat now scales to roughly 10% of elapsed time, clamped between 3 seconds and 1 minute. (#​13036 by @​jdx)
  • self-update: On 32-bit ARM, mise self-update now selects the correct linux-armv7 archive instead of requesting a missing linux-arm one and falling back to an ARM64 binary that failed signature verification. A missing archive now fails asset selection rather than picking the wrong architecture. (#​13023 by @​jdx)
  • self-update: npm installs now ship the instructions file that redirects update guidance to the package manager, so they no longer advertise mise self-update. (#​13028 by @​jdx)
  • brew-cask: mise bootstrap packages upgrade no longer replaces the bundle of a running self-updating app (for example Chrome), which could strand helper processes and blank out tabs. Such apps are skipped while running and left to update themselves. (#​13041 by @​azohra)
  • brew-cask: The cask metadata fetch error no longer includes stale advice about installing with brew and a broken documentation anchor; it now gives a short, accurate message. (#​12800 by @​Marukome0743)
  • bootstrap: mise bootstrap dotfiles origin set <url> now uses the repository's own default branch when --branch is omitted, so repositories on master connect correctly instead of publishing a second root branch. A missing requested branch is now reported clearly rather than mistaken for an empty repository. (#​13037 by @​Dhaulagiri)
  • dotfiles: History watcher locks now live alongside the history store in the state directory instead of being hashed into the cache directory, so a launchd watcher and an interactive shell using different cache directories coordinate correctly and dotfiles status no longer misreports declared-not-running. Existing watchers must be stopped and restarted with the updated binary. (#​13038 by @​ascarter)
  • sandbox: The macOS Seatbelt profile now allows file-read-metadata on the ancestors of readable paths, fixing Operation not permitted failures when a portable Ruby resolves its own executable during third-party tap evaluation. Symlinked data directories and allow-listed paths are also handled. (#​13039 by @​Marukome0743)
Registry
New Contributors

Full Changelog: jdx/mise@v2026.9.4...v2026.9.5

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at entire.io, the title sponsor of his open source work.

If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.4: : Nix Bootstrap, Environment Selectors, and Man Pages

Compare Source

This release expands the bootstrap package model with Nix support and environment selectors, teaches packslip tools to ship man pages, and adds a task-scoped quiet setting. It also carries a wide batch of packslip, bootstrap, and cross-platform fixes plus a major speedup to dotfiles history rebuilds.

Added
  • bootstrap: Nix is now a built-in [bootstrap.packages] manager on Linux and macOS. Declare packages with the nix: prefix and apply them through your normal Nix profile; the manager supports use, apply, status JSON, and targeted upgrades while leaving Nix sources, caches, trust, and profile rollback under Nix control. This also adds mise bootstrap packages export --format nix to emit a deterministic NixOS module from your nix: declarations and packages use --no-install to record declarations without touching package managers. (#​13013 by @​jdx)

    [bootstrap.packages]
    "nix:ripgrep" = "latest"
  • bootstrap: [bootstrap.packages] entries gain an env selector (a single environment or a list), so a package is only enabled when one of its listed mise environments is active via -E or MISE_ENV. When both os and env are set, both must match. Packages for inactive environments stay declared and are protected from pruning. (#​12956 by @​jdx)

    [bootstrap.packages]
    "brew:postgresql" = { version = "latest", env = ["dev", "test"] }
  • packslip: Packslip-installed tools can now ship man pages declared as static man resources, alongside completions and agent skills. While a tool version is active, mise prepends its man root to MANPATH and keeps system and caller-defined paths visible, so man <tool> works. Existing installs need to be reinstalled to pick up man pages. (#​13012 by @​jdx)

  • task: New task.quiet setting (and MISE_TASK_QUIET) suppresses mise's own task messages, prefixes, and command-echo headers without hiding task output or affecting other commands. The bundled output = "quiet" mode is deprecated in favor of explicit output style plus this setting; removal is scheduled for 2027.9.3. (#​12980 by @​jdx)

Fixed
  • install: A lazy tool whose depends target is also lazy now installs correctly on first use through a shim, mise x, or a task; mise installs the provider together with its still-missing configured dependencies instead of failing the preflight. (#​12997 by @​balintant)
  • backend: 32-bit ARM resolution now uses Go's canonical arm architecture name for Aqua (so registry replacements apply), and automatic GitHub release asset selection no longer picks a generic source.tar.gz when no published binary targets the host. (#​13004 by @​jdx)
  • bootstrap: Homebrew bottles with hard-linked Mach-O executables are now signed correctly on macOS. Every hard-link alias is tracked and included in the signing list after relocation, fixing cases like fish where an aliased binary was killed with SIGKILL after a successful install. (#​12988 by @​nettlesh)
  • packslip: mise lock --platform now verifies the signed release manifest and records the correct URL, checksum, size, and signer for each requested target platform (including Windows x64), so locked installs work across platforms. (#​13002 by @​jdx)
  • packslip: On glibc Linux, an artifact's glibc_min is now honored during selection: when the GNU build requires a newer glibc than the host, mise falls back to a matching static musl build if one exists. (#​13009 by @​jdx)
  • packslip: Windows installs now link shims with the correct .exe filename, while Unix keeps extensionless names. (#​13006 by @​jdx)
  • packslip: Activated man roots are now scoped to Packslip-backed tool versions, and the caller's original MANPATH is included in the environment-cache identity so one cached process cannot serve another caller's MANPATH. (#​13016 by @​jdx)
  • prune: mise prune no longer exits successfully without pruning when it cannot show a confirmation prompt; it now fails with guidance to pass --yes or set MISE_YES=1. Follow-up prunes from commands like mise unuse still leave installs in place when nobody can answer. (#​13003 by @​jdx)
  • generate: mise generate tool-stub now respects a stub's top-level os selector when deciding whether to write a Windows .cmd launcher, so a linux/macos-only stub no longer produces a launcher even with --lock. (#​13008 by @​jdx)
  • dotfiles: History path filters resolve correctly when HOME is a symlink, so aliased, canonical, and tilde paths address the same history entry and show latest/diff no longer report a missing checkpoint. (#​12982 by @​azohra)
  • brew: The published crate now includes the tap formula and cask metadata shims, fixing cargo install --locked mise builds from crates.io. (#​13001 by @​jdx)
Changed
  • bootstrap: [bootstrap].config_roots and the mise bootstrap config-roots command are now deprecated (hidden from help and removed from public docs), with removal scheduled for mise 2027.3.3. Existing configurations keep working during the compatibility window but emit a warning directing users to global or system bootstrap configuration. (#​13010 by @​jdx)
  • registry: Added basecamp to the registry. (#​13024)
Performance
  • history: Dotfiles history index rebuilds are dramatically faster, reconstructing checkpoint metadata in-process with gix instead of spawning Git per checkpoint. On an 80-checkpoint, 44-file reproducer this cut a rebuild from roughly 26-28 seconds and thousands of Git processes down to under a second. Removed annotations are now correctly dropped after a rebuild, and SHA-256 history repositories are supported. (#​13011 by @​jdx)
Deprecated
  • The task output = "quiet" mode (use task.quiet instead; removal in 2027.9.3) (#​12980).
  • [bootstrap].config_roots and mise bootstrap config-roots (removal in mise 2027.3.3) (#​13010).
New Contributors

Full Changelog: jdx/mise@v2026.9.3...v2026.9.4

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at entire.io, the title sponsor of his open source work.

If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.3: : Winget bootstrap, signed vfox plugins, and faster inline commands

Compare Source

This release brings Windows bootstrap into the package-manager era with WinGet support, extends the packslip signing model to vfox plugins, and speeds up simple tasks by skipping the shell on Unix. It also carries a batch of bootstrap, sandbox, and Windows ARM64 fixes.

Added

  • bootstrap: WinGet is now a built-in [bootstrap.packages] manager on Windows, so mise bootstrap packages can check status, install, and upgrade apps by exact package ID. It supports version pins, source refresh, and automatic source-agreement acceptance. Scoop, Chocolatey, and package removal remain future work. (#​12928 by @​jdx)

    [bootstrap.packages]
    "winget:Microsoft.PowerShell" = "latest"
  • vfox: External vfox plugins can now be installed from signed packslip archives instead of a Git clone, reusing the packslip backend's release selection, signature verification, digest checks, and signer pins. This is aimed at non-registry plugins; registry defaults and embedded plugins are unchanged. (#​12948 by @​jdx)

    mise plugins install vfox:bfs 'packslip:mise-plugins/vfox-bfs#0.1.0'
  • bootstrap: Dotfile line edits gain position = "prepend" to insert a managed line at the top of a file instead of appending (the default). An existing exact match is left in place, and unrelated bytes, CRLF endings, and a UTF-8 BOM are preserved. (#​12941 by @​jdx)

    [dotfiles]
    "/etc/zshrc/zdotdir" = { line = 'ZDOTDIR=$HOME/.config/zsh/', position = "prepend" }
  • bootstrap: macOS bootstrap defaults now support nested TOML arrays and tables (for example Dock persistent-apps), reading and writing preferences through Core Foundation so booleans, numbers, strings, arrays, and dictionaries keep their plist types. Collections apply as whole-value replacements; datetimes and binary plist data are still skipped with a warning. (#​12947 by @​jdx)

Changed

  • bootstrap: Adopting global configuration or a shared dotfile-history setup repository is now spelled mise bootstrap --adopt (and mise bootstrap remote --adopt), separate from mise bootstrap --from for running a bootstrap project. The dotfiles, history, setup, and services guides were reorganized to lead with usable examples. The previous --from-git spelling still works as a hidden alias but warns and is scheduled for removal in mise 2026.10.0. (#​12953 by @​jdx)

Fixed

  • github: Git operations (clones, fetches, submodules) that GitHub now challenges with HTTP 401 on public repositories can authenticate using mise's existing GitHub token sources via a command-scoped github.com HTTPS credential helper. Tokens are kept out of command arguments and URLs, and Enterprise hosts are out of scope. (#​12945 by @​jdx)
  • config: The default inline task shell is now sh -o errexit -c so shells that consume the argument right after -c (such as FreeBSD sh) run your command instead of trying to execute -o. (#​12949 by @​jdx)
  • windows: Fixed two Windows ARM64 issues: stale command-wrapper shims (like a leftover cargo.exe) that caused recursive .exe/.cmd dispatch after shim-mode changes are now pruned, and Aqua ARM64 emulation candidates apply the registry's amd64 replacement so tools like LuaLS resolve their published win32-x64 assets. (#​12931 by @​jdx)
  • bootstrap: Bootstrap no longer aborts on Arch when pacman -Q prints a file advisory for a missing package that shares its name with a directory in the current working directory (for example a fish/ folder in a dotfiles checkout). (#​12932 by @​nettlesh)
  • sandbox: Read-restricted macOS Seatbelt profiles now allow metadata-only access to /private, fixing startup failures for load-relative binaries like Ruby 4.0.6 when run under /private/tmp. Directory listings and descendant reads stay denied. (#​12940 by @​jdx)
  • bootstrap: The macOS notification helper is now built and Developer ID-signed at release time and spawned with a start handshake, so short dotfiles sync runs no longer race the helper and macOS accepts it. Unsigned source builds (such as Homebrew) disable notifications and warn during origin setup. (#​12946 by @​jdx)
  • vfox: vfox install phases now flow through the active install progress reporter, mapping noisy download, checksum, attestation, and extraction lines into concise phases instead of scrolling log output. (#​12944 by @​jdx)
  • java: The java -version banner shown during install verification now stays inside the interactive install progress row instead of printing to the terminal. (#​12943 by @​jdx)
  • version: The auto-update hint from mise version now uses the mise settings auto_update=true syntax to match the rest of mise settings. (#​12957 by @​jdx)

Performance

  • On Unix, plain inline commands (like node build.js) now run directly when a conservative planner deems them safe, skipping the shell wrapper. Anything involving shell syntax, quoting, expansion, builtins, ambiguous PATH lookup, explicit shell settings, or sandboxed/audited tasks still uses the shell, and Windows is unchanged. In a microbenchmark of short commands this cut about 11% off elapsed time. (#​12950 by @​jdx)

Registry

Documentation

  • Restored the prominent project name and pronunciation on the homepage. (#​12936 by @​jdx)
  • Dropped the "you need Git installed" prerequisite from the install docs. (#​12958 by @​jdx)

Full Changelog: jdx/mise@v2026.9.2...v2026.9.3

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at entire.io, the title sponsor of his open source work.

If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.2: : Packslip Backend, SSH Relay, and Reimagined Install Progress

Compare Source

This is a large release headlined by the new stable packslip: backend for installing tools from a vendor's own signed release manifest, a read-only GitHub SSH relay for remote onboarding, redesigned install progress for both terminals and CI logs, and a rebuilt dotfiles-tracking model for bootstrap. It also carries dozens of fixes across shims, tasks, brew, Go, npm, and the schema, plus two security fixes.

Highlights

  • The packslip: backend is now generally available: install tools directly from a project's cryptographically signed release manifest, with signer pinning, trusted stampers, host-requirement checks, shell completions, and agent skills all driven from the same signed source.
  • Install output was reimagined end to end. Interactive terminals get a live region with a fractional install-wide bar and permanent completion lines, while CI logs, pipes, and AI-agent terminals get a compact append-only reporter instead of thousands of scrolling rows.
  • Bootstrap grows a read-only GitHub SSH relay and --from-git onboarding, an AUR package manager, and a rebuilt dotfiles-history model that tracks files through ordinary Git commits synchronized with an origin.

Added

  • packslip: New packslip: backend installs tools from a vendor-published, signed release manifest (a sigstore bundle) that names every artifact with its digest, platform, format, and executables. The tool name is a pin, like a known_hosts entry: packslip:github.com/owner/repo accepts only a packslip signed by that repository's release workflow, and signature, log entry, statement, digest, and size are all verified before anything is unpacked. Custom hosts and monorepo tools are supported. The backend is no longer experimental. (#​12778, #​12811 by @​jdx)

    [tools]
    "packslip:github.com/oxc-project/oxc/oxlint" = "latest"
  • packslip: Signer pinning remembers, per project, the signer that signed the first accepted release in a pins.toml file (like SSH's known_hosts) and records the signer in mise.lock, so a later release signed by anyone else, or one that weakens provenance, is refused. mise packslip pins lists what is pinned and mise packslip forget <project> accepts an announced key rotation. (#​12783 by @​jdx)

  • packslip: New packslip.stampers setting lets you require that a trusted host has stamped a version before mise offers or installs it (a scanning service, a mirror, or eventually the registry), with a per-tool trust = "vendor" override. (#​12782 by @​jdx)

  • packslip: Declared host requirements (OS/glibc minimums, shared libraries, required commands) are checked before download; confirmed failures refuse the install, gaps mise cannot verify warn only, and ignore_requirements = true overrides hard failures. latest also resolves from verified vendor recommendations. (#​12804, #​12805 by @​jdx)

  • packslip: A tool's packslip can ship shell completions and agent skills. mise completion <shell> --tool <name> prints (or --install writes a version-aware stub for) completions for whichever version is active in the current directory, and mise skills ls / mise skills sync link a tool's Agent Skills into .claude/skills at the pinned version. Completions are also loaded automatically in activated shells. (#​12779, #​12780, #​12848 by @​jdx)

  • install: Redesigned install progress. Interactive terminals now show a live region with an install-wide fractional bar, per-tool phase/elapsed/artifact rows, dependency-wait rows ("waiting for node@​24.20.0"), and permanent completion lines written into scrollback. prune, uninstall, and upgrade removals reuse the same session, so pruning hundreds of versions no longer floods the screen. (#​12906 by @​jdx)

  • install: CI logs, pipes, and AI-agent terminals (CLAUDECODE/AI_AGENT) get a compact append-only reporter: one permanent line per finished tool plus a periodic snapshot of the bar, active phases, transfer rates, and queue count, instead of hundreds of scrolling status rows. Resolver hosts and retry progress are surfaced too. (#​12902, #​12907 by @​jdx)

  • ssh: New mise ssh runs ordinary OpenSSH sessions with optional session-scoped, read-only GitHub access, and mise bootstrap remote --from-git onboards a remote host from a Git repo. The initiating machine keeps the credential and brokers authorized clone/fetch and REST reads over an SSH Unix-socket forward; no token is installed on the target. (#​12830 by @​jdx)

    mise ssh devbox --github-relay-read-only --github-relay-repo jdx/dotfiles
  • bootstrap: mise bootstrap --from-git <GIT_URL> clones a repository-backed global config into $MISE_CONFIG_DIR so its config.toml, conf.d/, and tasks apply on the first bootstrap and stay active afterward. (#​12715 by @​jdx)

  • bootstrap: New aur: package manager installs from the Arch User Repository via yay (preferred) or paru, with foreign-package status detection so repo packages with colliding names cannot satisfy an AUR request. Bootstrap can also declare packages as absent to remove them, and now reports which root declarations were selected. (#​12718, #​12716, #​12770 by @​jdx)

  • bootstrap: Rebuilt dotfiles tracking. Files enrolled with mode = "track" stay in place while mise commits changes to a separate bare Git store with checkpoints, rollback/undo, and optional origin synchronization, including encryption of shared files before storage. (#​12918 by @​jdx)

  • activate: New activate_shims = false (MISE_ACTIVATE_SHIMS=false) keeps tool shim directories off PATH during activation and hooks without changing your auto-install or lazy-tool settings. Command wrappers such as mr-boxington's cargo keep working. (#​12926 by @​jdx)

  • core: Rust tools accept mr_boxington = true and mise use gains a repeatable --tool-option KEY=VALUE flag, so setting up the Cargo wrapper is a single command. (#​12908 by @​jdx)

    mise use --tool-option mr_boxington=true rust mr-boxington
  • ruby: mise now reads Bundler's ruby file: ".ruby-version" form from a Gemfile (resolving the path next to the Gemfile), so projects that pin Ruby through a sibling file resolve correctly. (#​12914 by @​jdx)

  • self-update: New global-only self_update.repository and self_update.api_url settings let organizations point manual updates, out-of-date hints, and automatic updates at a curated GitHub or GitHub Enterprise release mirror. Project config cannot redirect updates, and artifacts still pass the embedded-signature check. (#​12735 by @​jdx)

  • backend: install_env is now applied when resolving and downloading tools, not just at build time. (#​12777 by @​rabadin)

  • brew: mise can now evaluate ordinary third-party taps. (#​12774 by @​jdx)

Fixed

Security

  • http: URL replacements no longer forward authorization headers or URL credentials when an HTTPS origin is rewritten to HTTP; such credential-carrying downgrades are refused, and errors omit URLs so embedded credentials cannot leak through diagnostics. (#​12879 by @​jdx)
  • self-update: Self-update now requires secure release sources. (#​12737 by @​jdx)

New Contributors

Full Changelog: jdx/mise@v2026.9.1...v2026.9.2

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at entire.io, the title sponsor of his open source work.

If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.1: : Bootstrap firewall limiting, scoped locked mode, and lazy tools in tasks

Compare Source

This release expands bootstrap system setup with firewall rate limiting and more systemd directives, adds a scoped locked mode for mixing distribution and user tool policies, and fixes lazy tools so they install when invoked from tasks and mise x.

Added

  • bootstrap: New action = "limit" for incoming TCP firewall rules rate-limits connections per source. It maps to UFW's native limiting and bounded per-source IPv4/IPv6 nftables meters; firewalld fails closed since it cannot express safe per-source limiting. Limit rules are treated as preserving SSH access by the lockout guard. (#​12669 by @​jdx)

  • bootstrap: Bootstrap systemd units now support requires (Requires=), repeatable environment_file (EnvironmentFile=), nice, and umask, with validation for nice ranges (-20 to 19) and octal umasks. Note that requires does not imply ordering; use after for that. (#​12683 by @​jdx)

  • config: New global-only locked_scopes setting (also MISE_LOCKED_SCOPES) lets you scope locked mode to specific config sources, so a distribution can ship rolling or lazy tools through /etc/mise/config.toml without forcing users to maintain a system lockfile. Defaults to all three scopes to preserve existing behavior. (#​12667 by @​jdx)

    [settings]
    locked_scopes = ["project", "global"]

Fixed

  • task: Lazy tools (lazy = true) now install when their command is invoked from a mise run task or mise x, matching the behavior of an activated shell. mise inserts the shim farms after real tool paths for lazy toolsets and reconciles missing bootstrap shims for hand-edited declarations, so tasks no longer fail with command: not found. (#​12687 by @​jdx)
  • env: Environment variables configured for removal (false values and unset directives) are now consistently unset across mise exec, tasks, mise env, hook-env, deps, and tool stubs, so inherited or secret variables are no longer leaked back into child processes. (#​12664 by @​jdx)
  • shim: mise reshim can now safely target shared executable directories like ~/.local/bin or /usr/local/bin. It identifies mise-owned shims and only replaces or prunes those, leaving unmanaged files and symlinks in place, and --force rebuilds mise-owned shims rather than wiping the whole directory. (#​12675 by @​jdx)
  • brew-cask: Cask binaries that reference their surrounding extracted payload now keep that payload beside the staged binary, so tools like codex that exec helpers or read manifests from their own tree continue working after temporary install files are cleaned up. (#​12686 by @​azohra)
  • upgrade: Fixed recursive deferred tool pruning that could hang new terminals when prompt hooks triggered a full tracked-config scan. Deferred cleanup now takes a non-blocking lock and is skipped for shell-integration and --no-config commands. (#​12676 by @​jdx)
  • install: Install failures caused by a missing marker file now name the affected file and operation instead of reporting a bare OS error. (#​12624 by @​JamBalaya56562)
  • install: mise install --dry-run for an s3 tool that only declares a URL for another platform now reports the missing platform and available options instead of falsely claiming it would install. (#​12641 by @​hktitof)

Changed

  • registry: Registry command (shim) names are now inferred from the preferred Aqua package at build time, removing redundant bins declarations from hundreds of registry entries. Explicit bins are kept only where mise intentionally exposes a different command set, and mise registry --json exposes the inferred names. (#​12668 by @​jdx)

New Contributors

Full Changelog: jdx/mise@v2026.9.0...v2026.9.1

💚 Sponsor mise

mise is built and maintained by @​jdx, an open source developer at entire.io, the title sponsor of his open source work.

If mise saves you or your team time, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep mise fast, free, and independent.

v2026.9.0: : Lazy Tool Shims

Compare Source

This release introduces lazy tool shims, which install a tool automatically the first time one of its commands is invoked, plus an opt-in Erlang precompiled OS override and a fix for nested mise calls during postinstall hooks.

Added

  • tools: Declare a tool as lazy in [tools] with lazy = true and mise generates bootstrap shims into its normal user/system shim farms. The provider is installed only when one of its commands is first called, then executes immediately; subsequent calls run the real binary without another mise dispatch. Registry tools derive their command names from registry bins, while explicit or non-registry backends declare them with lazy_bins. A bare mise install skips lazy declarations; use mise install --include-lazy to provision them all. New global path settings (shims_dir/MISE_SHIMS_DIR, system_installs_dir/MISE_SYSTEM_INSTALLS_DIR, system_shims_dir/MISE_SYSTEM_SHIMS_DIR) and mise reshim --system support system-scoped and collocated layouts. (#​12594 by @​jdx)

    [tools]
    node = { version = "24", lazy = true }
    "github:example/acme" = { version = "1.2.3", lazy = true, lazy_bins = ["acme", "acmectl"] }
  • erlang: New erlang.precompiled_os setting (and MISE_ERLANG_PRECOMPILED_OS) opts into a specific Bob Ubuntu build target—including Ubuntu 26.04—on compatible glibc distributions. Automatic target detection is unchanged, and lockfiles now preserve the selected OS for reproducible builds. Note the portability constraints around shared-library SONAMEs documented with the setting. (#​12637 by @​jdx)

Fixed

  • install: Postinstall hooks now activate the exact tool version being installed, so nested mise invocations (such as mise which or mise ls) resolve that version instead of an older discoverable one—or losing the tool entirely when it was declared through a custom config path with mise use --path. (#​12635 by @​jdx)

Registry

New Contributors

Full Changelog: jdx/mise@v2026.8.16...v2026.9.0

💚 Sponsor mise

mise is maintained by @​jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.

v2026.8.16: : Command wrappers and Windows shell fixes

Compare Source

This release adds configurable command wrappers for intercepting ordinary commands, alongside a batch of shell and PATH fixes that make Windows activation more reliable and clearer upgrade and error messaging.

Added

  • shims: New [wrappers] config lets you intercept an ordinary command name with a different command, arguments, and environment. Wrappers take precedence over mise-managed tools, and mise strips its dispatch directories before delegating so the underlying tool still resolves from mise or the system. Works with normal activation, activate --shims, and mise exec; managed wrapper shims are refreshed by mise reshim. (#​12617 by @​jdx)

    [tools]
    mr-boxington = "1.1.0"
    
    [wrappers.cargo]
    command = "mbx"
    env = { MBX_CARGO_SHIM_MODE = "1" }

Fixed

  • elvish: mise env and mise activate --shims now emit valid Elvish quoting instead of bash's. This fixes several corruptions that mostly surfaced on Windows: stray quotes and the wrong PATH separator in activate --shims, apostrophes and ! arriving with backslashes, and \n sequences in paths like C:\nodejs being turned into newlines. (#​12584 by @​JamBalaya56562)

  • fish: mise env -s fish now splits PATH on the host's separator and recognizes the Path spelling on Windows, so semicolon-separated Windows paths are no longer severed at each drive letter. Empty PATH segments are dropped rather than adding the current directory. (#​12582 by @​JamBalaya56562)

  • http: The "No URL for platform" error now lists every platform key a tool actually declares in mise.toml, including typos and unrecognized names, instead of falling back to a misleading "requires 'url' option" message with an empty available list. (#​12580 by @​JamBalaya56562)

  • upgrade: When tools are current for their configured version ranges but newer releases exist beyond those ranges, mise upgrade no longer prints "All tools are up to date". It now lists the affected tools with their current and available versions plus the config source, and points to mise upgrade --bump. (#​12613 by @​jdx)

    Newer 
    
    

Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "before 4am on Monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from fstab as a code owner August 31, 2026 01:41
@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Aug 31, 2026
@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Aug 31, 2026
@renovate
renovate Bot enabled auto-merge (squash) August 31, 2026 01:41
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.8.15 chore(deps): update dependency jdx/mise to v2026.8.16 Aug 31, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.8.16 chore(deps): update dependency jdx/mise to v2026.9.0 Sep 1, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.9.0 chore(deps): update dependency jdx/mise to v2026.9.1 Sep 3, 2026
@renovate
renovate Bot force-pushed the renovate/mise branch 4 times, most recently from f676daa to de27c0f Compare September 8, 2026 03:15
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.9.1 chore(deps): update dependency jdx/mise to v2026.9.2 Sep 8, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.9.2 chore(deps): update dependency jdx/mise to v2026.9.3 Sep 8, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.9.3 chore(deps): update dependency jdx/mise to v2026.9.4 Sep 10, 2026
@renovate renovate Bot changed the title chore(deps): update dependency jdx/mise to v2026.9.4 chore(deps): update dependency jdx/mise to v2026.9.5 Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants