Skip to content

fix(cli-tools): update cli-tools#780

Merged
ppat-self-hosted-renovate-bot[bot] merged 2 commits intomainfrom
renovate/cli-tools
Mar 22, 2026
Merged

fix(cli-tools): update cli-tools#780
ppat-self-hosted-renovate-bot[bot] merged 2 commits intomainfrom
renovate/cli-tools

Conversation

@ppat-self-hosted-renovate-bot
Copy link
Copy Markdown
Contributor

@ppat-self-hosted-renovate-bot ppat-self-hosted-renovate-bot bot commented Mar 16, 2026

This PR contains the following updates:

Package Update Change Pending
jdx/mise patch v2026.3.3 -> v2026.3.9 v2026.3.10
twpayne/chezmoi minor v2.69.4 -> v2.70.0

Release Notes

jdx/mise (jdx/mise)

v2026.3.9: : Shared install directories, secret redaction, and better Ctrl-C handling

Compare Source

This release introduces experimental shared install directories for multi-user environments, improves secret redaction in mise set and task output, and fixes several issues with Ctrl-C handling, tool auto-installation before prepare steps, and aqua symlink_bins behavior.

Highlights

  • Shared and system install directories -- Pre-install tools to /usr/local/share/mise/installs (or a custom path) so all users on a machine or in a container can share them without re-downloading. Ideal for Docker images, devcontainers, and bastion hosts.
  • Secret redaction in mise set -- Environment variables marked redact = true or matching redactions patterns are now hidden in mise set output by default, with --no-redact to override.
  • Faster latest-version resolution for GitHub tools -- The GitHub backend now hits the releases/latest API endpoint directly instead of paginating through all releases, which is significantly faster for repositories with many pre-releases.

Added

  • [experimental] Shared and system install directories -- mise install --system installs tools to /usr/local/share/mise/installs (or MISE_SYSTEM_DATA_DIR/installs), where every user's mise instance will find them automatically. mise install --shared <path> installs to a custom shared directory. Additional read-only lookup directories can be configured via the shared_install_dirs setting or MISE_SHARED_INSTALL_DIRS (colon-separated). Shared versions appear in mise ls with (system) or (shared) labels. See the updated Docker cookbook for usage examples. #​8581 by @​jdx

  • GitHub backend uses releases/latest endpoint -- Resolving the latest stable version for GitHub-hosted tools now calls the dedicated releases/latest API endpoint instead of paginating through all releases. This is especially helpful for repositories with many pre-releases (e.g. unikraft/kraftkit) where the old approach required fetching multiple pages. Falls back to the previous behavior if the endpoint fails or the result doesn't match a configured version_prefix. #​8516 by @​roele

  • vfox tool plugins record provenance in lockfiles -- mise lock and mise install now record and enforce supply-chain provenance (GitHub Attestations, SLSA, Cosign) for vfox tool plugins, bringing them to parity with aqua and github backends for downgrade-attack detection. #​8544 by @​malept

Fixed

  • mise set now redacts secrets by default -- Values with redact = true or matching redactions glob patterns are shown as [redacted] in mise set output. Age-encrypted values default to redacted unless explicitly redact = false. Use --no-redact to reveal raw values. Task-specific env vars from env._.file or task-level redact = true are also now properly redacted in mise run output. #​8583 by @​jdx

  • Aqua symlink_bins now works for packages without a files field -- When an aqua registry entry has no files field, symlink_bins = true previously left .mise-bins empty, making the tool invisible on PATH. Now the inferred main binary is included in the symlink directory, matching the existing install-time fallback logic. #​8550 by @​AlexanderTheGrey

  • Ctrl-C reliably interrupts tool downloads during mise run -- Previously, mise run disabled Ctrl-C exit handling before tool installation began, so pressing Ctrl-C during a download was silently ignored. Now Ctrl-C exits immediately during downloads, and during task execution the first Ctrl-C kills child processes while a second Ctrl-C force-exits mise. #​8571 by @​jdx

  • File task headers now allow spaces around = -- Task header lines like #MISE env._.file = "env.yaml" (with spaces around =) are now parsed correctly. Previously only #MISE env._.file="env.yaml" (no spaces) was recognized. #​8574 by @​roele

  • mise prepare installs config tools before running prepare steps -- On clean machines, prepare steps that depend on tools declared in [tools] (e.g. uv) would fail because the tools hadn't been installed yet. Now both mise prepare and mise run install all configured tools before executing prepare commands. #​8582 by @​jdx

Changed

  • MISE_SYSTEM_DIR has been renamed to MISE_SYSTEM_CONFIG_DIR for clarity alongside the new MISE_SYSTEM_DATA_DIR. The old name is still supported as a legacy alias. #​8581

New Contributors

Full Changelog: jdx/mise@v2026.3.8...v2026.3.9

v2026.3.8: : Wrapper recursion fix and lockfile provenance correction

Compare Source

A small patch release that fixes infinite recursion in mise exec when wrapper scripts and shims coexist in PATH, and corrects lockfile provenance detection for aqua tools with opts-only cosign configurations.

Fixed

  • mise exec no longer infinite-loops when wrapper scripts and shims are both in PATH -- In devcontainer setups (and similar environments), a wrapper script like .devcontainer/bin/gitleaks that calls mise x -- gitleaks would resolve back to itself instead of the real binary when the wrapper directory appeared before the shims directory in PATH. This caused infinite recursion until the environment exceeded ARG_MAX, producing confusing errors. The fix reorders the internal lookup PATH so that mise-managed tool bin directories are checked before system PATH entries, ensuring the real binary is always found first. The child process still inherits the full unmodified PATH. #​8560 by @​jdx

  • Lockfile no longer records unverifiable cosign provenance for opts-only aqua tools -- Tools like yamlfmt, trufflehog, and tflint configure cosign in the aqua registry with only CLI opts (e.g. --certificate-identity) but no key or bundle config. mise lock was recording provenance = "cosign" for these tools, but mise install can only verify cosign natively via key-based or bundle-based flows, causing "Lockfile requires cosign provenance ... but no verification was used" errors on install. Now cosign provenance is only recorded when the tool has a key or bundle config that can actually be verified. #​8559 by @​jdx

Added

  • turbo added to the registry -- Turborepo, the high-performance build system for JavaScript and TypeScript codebases, can now be installed via mise use turbo. #​8553 by @​igas
  • workmux added to the registry -- workmux, a tool for git worktrees + tmux windows for zero-friction parallel development, can now be installed via mise use workmux. #​8555 by @​ifraixedes

New Contributors

Full Changelog: jdx/mise@v2026.3.7...v2026.3.8

v2026.3.7: : Cleaner conda PATH handling

Compare Source

A small patch release that fixes conda packages polluting PATH with dozens of transitive dependency binaries.

Fixed

  • Conda backend no longer exposes transitive dependency binaries on PATH -- Installing a conda package such as conda:postgresql would previously add every binary from every transitive dependency to PATH. For example, conda:postgresql exposed 106 binaries including ncurses utilities (clear, reset, tput, tabs), openldap commands (ldapadd), and krb5 tools (kinit) -- all of which could shadow standard system commands. Now only binaries belonging to the main requested package are placed on PATH (e.g., psql, pg_dump, createdb, initdb, pg_ctl, postgres, etc.). Dependency binaries remain installed and available to packages that need them internally, but are no longer visible on PATH. No user configuration is needed -- this is automatic for all new conda installs, and existing installs gracefully fall back to the previous behavior. #​8543 by @​simonepri

New Contributors

Full Changelog: jdx/mise@v2026.3.6...v2026.3.7

v2026.3.6: : Per-environment lockfiles, Windows fixes, and fork bomb prevention

Compare Source

This release redesigns environment-specific lockfiles for better CI isolation, fixes a critical fork bomb caused by shim recursion in go: backend tools, and addresses several Windows-specific issues including locked .exe shims and env._.source support.

Highlights

  • Per-environment lockfiles replace the previous env tag system, so mise.test.toml now generates mise.test.lock instead of tagging entries in a shared mise.lock. This means CI caches are no longer invalidated by dev-only tool changes.
  • Fork bomb prevention strips mise shims from dependency environment PATHs, fixing infinite process spawning when go: backend tools are configured alongside an uninstalled Go version in shims mode.
  • Windows .exe shim handling gracefully renames locked shim executables instead of failing with "Access is denied" during reshim.

Changed

  • Lockfiles are now per-environment -- Environment-specific configs now get their own lockfiles (mise.test.toml -> mise.test.lock, mise.local.toml -> mise.local.lock) instead of using env = ["test"] tags in a single mise.lock. This improves CI cache isolation -- environments that don't set MISE_ENV only depend on mise.lock, so dev tool version bumps won't invalidate CI caches. Old lockfiles with env fields are silently accepted and migrated on the next mise lock. #​8523 by @​jdx

    Config file Lockfile
    mise.toml mise.lock
    mise.test.toml mise.test.lock
    mise.local.toml mise.local.lock
  • touch_outputs removed from prepare providers -- The touch_outputs configuration option has been removed from prepare providers. Freshness checking now uses blake3 content hashing exclusively, so touching output modification times is no longer necessary. #​8535 by @​jdx

Fixed

  • Fork bomb when using go: backend tools in shims mode -- When a go: backend tool (e.g., go:github.com/pulumi/upgrade-provider) was configured alongside a Go version that wasn't installed, and the version cache was cleared, mise could enter infinite shim recursion -- the Go shim would call mise exec, which would resolve the go: backend, which would call go list via the shim, and so on. The fix strips mise's shims directory from the PATH in dependency_env, ensuring dependency tools either resolve to a real installed binary or fail cleanly. This applies to all backends that use dependency environments (go, npm, gem, dotnet, spm, elixir). #​8475 by @​pose

  • Locked .exe shims on Windows during reshim -- mise reshim would fail with "Access is denied" on Windows when .exe shims were locked by running processes. The fix removes shims individually (instead of wiping the entire directory) and uses a rename-to-.old fallback for locked files, which Windows allows even when the file is in use. The .old files are cleaned up on the next reshim. #​8517 by @​davireis

  • env._.source now works on Windows -- env._.source would fail on Windows because it searched for bash without the .exe extension. The Windows API executable search now correctly looks for bash.exe. #​8520 by @​pjeby

  • GitHub @latest version resolution -- The github: backend would fail with a 404 when using @latest because it constructed /releases/tags/latest instead of using GitHub's /releases/latest API endpoint. This was a regression introduced in v2026.3.5. #​8532 by @​jdx

  • Fish shell shim PATH ordering on re-source -- When config.fish is re-sourced (e.g., in VS Code integrated terminals), mise activate fish --shims now correctly moves shims to the front of PATH using fish_add_path --global --move, instead of silently skipping them because they were already present. Other shells are unaffected. #​8534 by @​jdx

  • Task output prefix disambiguation -- When running the same task multiple times with different arguments (e.g., mise run greet alice ::: greet bob), output prefixes now include the arguments to distinguish runs ([greet alice] vs [greet bob]). Arguments are only included when disambiguation is needed; single-instance tasks keep clean prefixes. Long prefixes are truncated to 40 characters. #​8533, #​8536 by @​jdx

  • Non-MRI Ruby on Windows -- Requesting non-MRI Ruby engines (jruby, truffleruby, etc.) on Windows now fails early with a clear error message explaining that only standard MRI Ruby is supported via RubyInstaller2, instead of producing a confusing 404 from an invalid download URL. #​8539 by @​jdx

Added

  • Registry: tigerbeetle -- Added tigerbeetle (github:tigerbeetle/tigerbeetle) to the tool registry. #​8514 by @​risu729

Breaking Changes

  • Per-environment lockfiles: If you were relying on env tags within mise.lock for environment-specific version pinning, running mise lock will migrate to the new format automatically, creating separate mise.<env>.lock files. Make sure to commit the new lockfiles and update your .gitignore if needed for mise.<env>.local.lock files.
  • touch_outputs removed: If you were using touch_outputs in prepare provider configuration, that field is no longer recognized. Freshness is now determined entirely by blake3 hashing of source files.

New Contributors

Full Changelog: jdx/mise@v2026.3.5...v2026.3.6

v2026.3.5: : Provenance tracking in lockfiles and task deduplication fix

Compare Source

This release adds supply-chain security improvements by recording provenance verification results in lockfiles, exposes libc variant detection to vfox plugins, and fixes several bugs including duplicate task execution, offline mode hangs, and Windows binary identification.

Highlights

  • Provenance tracking in lockfiles prevents downgrade attacks by recording which verification mechanism was used for each tool, and refusing to install if that mechanism is later disabled.
  • Task delegation deduplication fixes a bug where shared dependency tasks could run multiple times when using run = [{ task }].
  • Offline mode fix prevents mise env, hook-env, activate, and exec from hanging when resolving "latest" versions behind private registries.

Added

  • Provenance verification results stored in lockfiles -- mise lock now records which provenance mechanism (SLSA, GitHub attestations, cosign, or minisign) was used to verify each tool per platform. On subsequent installs, mise refuses to proceed if the recorded verification mechanism is disabled or unavailable, protecting against downgrade/stripping attacks. The lockfile format also changes from inline tables to dotted-key subtables for platform entries, improving readability. Existing lockfiles remain backwards-compatible and will be updated on the next mise lock. #​8495 by @​jdx

  • RUNTIME.envType for vfox plugins -- Vfox Lua plugins can now check RUNTIME.envType to determine the libc variant at runtime ("gnu" for glibc, "musl" for musl Linux, nil on non-Linux). This lets plugins select the correct binary variant for the host system. #​8493 by @​malept

    if RUNTIME.envType == "musl" then
        -- download musl-compatible binary
    elseif RUNTIME.envType == "gnu" then
        -- download glibc-compatible binary
    end
  • Registry: portless -- Added portless (npm:portless) to the tool registry. #​8508 by @​risu729

Fixed

  • Shared dependency tasks no longer run multiple times with task delegation -- When a task uses run = [{ task }] to delegate, the sub-graph now inherits knowledge of tasks already completed in the parent graph, preventing shared dependencies from executing more than once. #​8497 by @​vadimpiven

  • "latest" version no longer triggers network calls in prefer-offline mode -- mise env, hook-env, activate, and exec with prefer_offline enabled would still make a remote call to resolve "latest" versions (e.g., npm:pkg = "latest"). If the registry held the connection open waiting for credentials, mise would hang indefinitely. This is now skipped, matching the existing offline guard for fully-qualified versions. #​8500 by @​jdx

  • Windows: mise binary correctly identified without .exe extension -- On Windows, argv[0] can resolve to mise (without .exe), mise.bat, or mise.cmd, all of which were incorrectly treated as shims. This caused mise --help and mise --version to silently fail in some environments (e.g., conda-forge CI). A unified is_mise_binary() helper now handles all these variants. #​8503 by @​jdx, with credit to @​salim-b for identifying the issue in #​8496

Full Changelog: jdx/mise@v2026.3.4...v2026.3.5

v2026.3.4: : Runtime musl detection, interactive tasks, and platform install fixes

Compare Source

A feature-rich release that adds runtime musl/glibc detection for correct binary selection on Linux, a new interactive task field for exclusive terminal access, and several important fixes for platform-specific tool installation, the standalone installer, and Ruby precompiled binary discovery.

Highlights

  • Runtime musl/glibc detection ensures mise downloads the right binary variant regardless of how mise itself was compiled, with lockfile support for both libc variants.
  • interactive task field provides a targeted way to give a task exclusive terminal access without forcing all tasks to run sequentially.
  • Platform install fixes correct multiple issues where registry-defined platform options were ignored or mangled, affecting tools like flyway and http-backend tools with platform-specific URLs.
  • Installer safety guard prevents accidental data loss when MISE_INSTALL_PATH points to an existing directory.

Added

  • interactive field for tasks -- Mark a task with interactive = true to give it exclusive terminal access (stdin/stdout/stderr) while other non-interactive tasks continue running in parallel. This is a more targeted alternative to raw = true, which forces jobs=1 globally -- interactive only blocks concurrent tasks while the interactive task is actively running. #​8491 by @​jdx

    [tasks.deploy]
    run = "deploy.sh"
    interactive = true  # gets exclusive stdin/stdout/stderr access
  • Runtime musl/glibc detection for correct libc variant selection -- mise now detects musl libc at runtime (by checking for /lib/ld-musl-*) instead of using compile-time configuration. This means a musl-built mise running on a glibc system (or vice versa) will correctly select the right binary variant. Lockfiles now include separate entries for linux-x64-musl and linux-arm64-musl platforms. Existing lockfiles without musl entries continue to work and will be updated on the next mise lock. #​8490 by @​jdx

  • Header comment in generated lockfiles -- mise.lock files now include a @generated header comment, making it clear the file is auto-generated and should not be edited manually. #​8481 by @​ivy

    # @&#8203;generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html
    
    [[tools.node]]
    version = "22.14.0"
    ...
  • Preserve .exe extensions on Windows -- The github, gitlab, forgejo, and http backends now automatically keep executable extensions (.exe, .bat, .cmd) when using bin or rename_exe options on Windows, fixing tools like yt-dlp that were broken by extension stripping. #​8424 by @​iki

Fixed

  • Registry platform options now applied during install -- Platform-specific options like asset_pattern defined in the tool registry were silently ignored during installation because nested TOML structures were flattened to strings. This caused tools like flyway to select the wrong asset (e.g., alpine instead of linux-x64). #​8492 by @​jdx

  • Tool opts stored as native TOML to fix platform switching -- Switching an http: tool from a single URL to platform-specific URLs ([tools."http:X".platforms]) could fail because cached options in .mise-installs.toml were mangled during round-tripping. Options are now stored as proper TOML fields with automatic migration of old manifests. #​8448 by @​jdx

  • Installer errors if MISE_INSTALL_PATH is a directory -- Setting MISE_INSTALL_PATH to an existing directory (e.g., ~/tmp instead of ~/tmp/mise) caused the installer to rm -rf that directory, potentially deleting important files. The installer now detects this and exits with a clear error message suggesting a file path. #​8468 by @​jdx

  • Prepare sources/outputs resolve relative to dir -- When a prepare provider sets dir, relative source and output paths now correctly resolve against project_root/dir instead of just project_root. This fixes freshness tracking in monorepo setups where prepare providers target subdirectories. #​8472 by @​jdx

  • Ruby precompiled binary lookup for older versions -- Precompiled Ruby discovery used paginated release listing (first page only), so versions beyond the first 30 releases (like Ruby 3.2.2) silently fell back to compiling from source. The lookup now fetches the specific release by tag directly. #​8488 by @​jdx

  • JSON schema supports structured objects in task depends -- The JSON schema for depends, depends_post, and wait_for now correctly accepts the structured { task, args?, env? } object syntax that the runtime already supported, fixing IDE validation errors. #​8463 by @​risu729

  • Broken pipe no longer panics in task output -- Task output macros used println!/eprintln! which panic on broken pipes (e.g., when piping mise output to head). Replaced with calm_io equivalents that gracefully handle closed stdout/stderr. #​8485 by @​vmaleze

  • Scoped npm package names no longer panic -- Using @scope/pkg (e.g., @anthropic-ai/claude-code) without the npm: backend prefix caused an internal panic. The parser now correctly treats the leading @ as part of the package name and provides a proper error message. #​8477 by @​jdx

New Contributors

Full Changelog: jdx/mise@v2026.3.3...v2026.3.4

twpayne/chezmoi (twpayne/chezmoi)

v2.70.0

Compare Source

Changelog

Features
  • c827252 feat: Support multiple externals to same target in one .chezmoiexternal file
  • d210129 feat: Add podman as an alias for docker command
Fixes
  • 44f73d3 fix: Adding exact subdir won't add exact parent
Documentation
  • 1499bfc docs: Clarify that edit --apply command does not apply scripts
  • 883fe13 docs: Add new articles on using chezmoi with coding agent configuration
  • 0bd0e48 docs: Add am package manager installation instructions
  • 7ef5efe docs: Add link to github.com/daptify14/chezit
  • 767015a docs: Add links to articles
  • 8e1b652 docs: Add link to article
  • 6f3e1db docs: Add link to podcast
  • 910481e docs: Add links to articles

Configuration

📅 Schedule: Branch creation - "before 10am on Tuesday" in timezone US/Eastern, Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

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

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


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

This PR has been generated by Renovate Bot.

@ppat-self-hosted-renovate-bot ppat-self-hosted-renovate-bot bot changed the title fix(cli-tools): update jdx/mise (v2026.3.3 -> v2026.3.5) fix(cli-tools): update cli-tools Mar 17, 2026
@ppat-self-hosted-renovate-bot ppat-self-hosted-renovate-bot bot force-pushed the renovate/cli-tools branch 2 times, most recently from c8d4e37 to ec24d0a Compare March 19, 2026 04:37
@ppat-self-hosted-renovate-bot ppat-self-hosted-renovate-bot bot merged commit d5b8aa4 into main Mar 22, 2026
16 checks passed
@ppat-self-hosted-renovate-bot ppat-self-hosted-renovate-bot bot deleted the renovate/cli-tools branch March 22, 2026 04:36
@homelab-workflows-bot
Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 2.22.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants