Repository navigation
chore(deps): update dependency jdx/mise to v2026 - #220
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
6 times, most recently
from
July 30, 2026 03:03
b069281 to
4210d96
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 5, 2026 03:26
7255dd3 to
18a73a9
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
3 times, most recently
from
August 12, 2026 20:16
2752ba1 to
661a5bf
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 20, 2026 23:10
6445a85 to
c5325ef
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
August 26, 2026 03:48
9dd559c to
fac6f2e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 3, 2026 00:28
61548e9 to
844f10e
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 11, 2026 04:03
b504efd to
25c7628
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
6 times, most recently
from
September 18, 2026 07:31
5986910 to
e80a868
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
4 times, most recently
from
September 27, 2026 11:53
64f8ae1 to
980f1fd
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
7 times, most recently
from
October 5, 2026 11:58
224319d to
e51efa8
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
7 times, most recently
from
October 14, 2026 13:03
b9bfa99 to
0aa2b64
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
from
October 15, 2026 12:37
0aa2b64 to
c858e85
Compare
renovate
Bot
force-pushed
the
renovate/jdx-mise-2026.x
branch
from
October 17, 2026 02:53
c858e85 to
7ec1940
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
Test plan: CI should pass with updated dependencies. No review required: this is an automated dependency update PR.
Release Notes
jdx/mise
v2026.10.12: : Per-tool Python runtimes for PyPI tools, Gradle workspace discovery, and env file find_upCompare Source
PyPI and pipx tools can now choose their own Python runtime, the workspace graph can read Gradle multi-module builds, and
env._.filecan search parent directories. When mise-versions is having an outage, GitHub lookups now retry onapi.github.com, and_.sourcescripts no longer pick up~/.bashrcwhen mise is launched from an editor.Added
Per-tool Python for
pypi:tools. Setpythonto a minor series or an exact version, and mise installs that runtime and passes it to uv or pipx for that tool only. The runtime stays private to the tool and does not become your shell's default Python.mise lockrecords the selected Python with the tool, andmise prunekeeps any runtime that a retained tool environment still uses. You can't combinepythonwith--python/-pinuvx_argsorpipx_args. Tools that don't setpythonbehave as before. #14479 (@jdx)If you change a tool's
python, mise installs a new environment instead of reusing the old one. If that install fails, the previous working environment is left untouched. #14504 (@jdx)Gradle workspace discovery.
mise tasks graphandmise run --affectednow find projects listed byincludeinsettings.gradleorsettings.gradle.kts, using Groovy or Kotlin syntax. Project IDs follow Gradle paths::appbecomesgradle::app, and the root project isgradle::. Literalproject(":lib")references in a project's top-leveldependencies {}block become graph edges. mise reads the scripts as text and never runs Gradle. If anincludeis computed or conditional, aprojectDirisn't a plainfile("...")literal, or both settings files exist, mise reports an error that points to[monorepo.projects."gradle:..."]overrides. Editing the settings script marks every Gradle project as affected. Based on a prototype by @Jarvvski. #14512 (@jdx)find_upforenv._.file. Withfind_up = true, mise looks for a relative path in the current directory and in every parent, so a global config can load each project's.envfiles. Files load from the root down, so values in closer files win. The default isfalse, and the option has no effect on absolute paths. #14497 (@jdx)Detect git-rewritten files in
watch_fileshooks. mise setsMISE_WATCH_FILES_GIT_REWRITTEN=1when every changed file was last written before git's most recent HEAD move (checkout, pull, rebase). Commits don't count as HEAD moves. Hooks such as format-on-edit can use this to skip files the user didn't edit.git stash pop/applydon't move HEAD, so mise doesn't detect them. #14511 (@jdx).terasources inferred for dotfile group templates. Amode = "template"entry in[dotfile_groups]no longer needs asourcejust to point at a.terafile. If the exact path doesn't exist, mise falls back to the same path with.teraadded. An explicitsourcestill takes precedence, and the.terafile is not also deployed under its suffixed name. #14502 (@jdx)mise lockwarns about unsupported platforms. If you name platforms withlockfile_platformsormise lock --platform, mise prints a warning for each tool version that has no build for one of them, for exampleapko@0.30.0 is not available for windows-x64; it will not install there. The default platform set still only logs this at debug level, and the exit status is unchanged. #14500 (@jdx)Registry: added
martin(github:maplibre/martin). #14488 (@ivan-ivkovic, @jdx)Fixed
429or5xx, mise now retries the lookup onapi.github.com, using your GitHub token if one is set. This covers releases, tags, repository contents, attestations andself-update. A404,403or empty answer from mise-versions is still trusted and not retried, so normal use doesn't spend GitHub's anonymous rate limit. If both sources fail, the error shows both failures, and a previously cached version list is still used. #14501 (@jdx)_.sourceno longer loads~/.bashrc. When mise's stdin was a socket andSHLVLwas unset, which happens when an editor extension such as the VS Code mise extension starts it, bash sourced~/.bashrcbefore the script. That leaked variables into the environment and could drop the script'sPATHentries. The script now runs with--norc. #14487 (@pikeas)prerelease = trueon alatestentry made a separate"1"entry resolve to a prerelease. #14476 (@JamBalaya56562, @risu729)go.work),mise tasks graphandmise run --affectedfailed for the whole repo. Declaring a project in that provider's namespace under[monorepo.projects]now replaces the provider's output and clears its error. Providers with no declared projects still fail loudly. #14508 (@jdx)Documentation
mise activatekeeps shims onPATH#14493 (@jdx), and clarified the platform-specific mise cache paths for CI #14506 (@zeitlinger).Full Changelog: jdx/mise@v2026.10.11...v2026.10.12
💚 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.10.11: : Much faster installs and far fewer GitHub API callsCompare Source
mise is much faster in this release and calls the GitHub API far less. Version lists, release tags, attestations and other public GitHub metadata now come from mise-versions, so everyday commands like
mise install,exec, shims,outdated,lockandself-updateare quicker and users without a GitHub token no longer run into the 60-requests-an-hour limit. Cached version lists are reused for longer, so repeat installs skip most lookups. It also addsmise bootstrap --upgradeandmise env --paths, and closes a trust gap in remote task files.Speed and GitHub API usage
Cold-cache timings for v2026.10.10 versus v2026.10.11, measured with hyperfine on one Linux x64 machine with no GitHub token set:
mise ls-remote pythonmise install(jq, ripgrep, fd, bat, gh, shellcheck)mise outdated(same six tools installed)The install and
outdatedruns are noisy (±0.1–0.4s over 4 runs) and the install time includes downloads, so treat them as rough. Requests toapi.github.comin a coldmise installofgithub:tools dropped from 2 to 0. Coldmise outdatedmade 8 network requests before and none now.use_versions_hoston (the default), release lists,latest, git tags (aquagithub_tagpackages, ubi and go), artifact attestations (including aqua'spredicate_typefilters) and the digest in the checksum-mismatch hint are read from mise-versions instead ofapi.github.com. GitHub is still asked directly for repositories mise-versions doesn't list when you have a token (the private-repository case), and in paranoid mode for attestations. The direct API is also used withuse_versions_host = false, GitHuburl_replacementsand customapi_urls. #14460, #14461, #14469, #14481, #14477, #14443mise x,mise exec, shims andhook-envuse mise-versions when they auto-install a tool. #14458mise self-updatereads mise's releases from mise-versions and downloads the archive from github.com release downloads. Packslip and zipsign verification are unchanged. #14464mise lockdownloads artifacts for provenance checks from github.com instead of the API asset endpoint. #14465mise install,useandrunnow reuse a cached version list for the tool'sminimum_release_agewindow minus one hour, clamped to 1–24h. With the default 24h cutoff, that is 23h.outdated,upgrade,ls-remote,lockandlateststill refresh after 1h. If you setfetch_remote_versions_cacheyourself, your value applies to every command. #14484, #14485, #14457mise outdatedcan resolve many registry tools with one request to the mise-versions index. #14473latestis resolved without refetching the list. #14456aqua:jqlang/jqreuse the registry tool's version list. #14459mise ls-remote python,outdated,upgradeand fuzzymise use python@3.12read the python-build definitions from mise-versions. A cold listing took about 960ms before and about 90ms now. pyenv is still cloned when mise compiles Python, whenpython.pyenv_repopoints at a fork, when you're offline, or whenuse_versions_host = false. Some definitions that had no date before now have one, so they are held back byminimum_release_ageuntil they are old enough. #14455mise oci buildnow requires root forapt:packages, as it already did for apk, and fails up front with a clear message. If apt-get still fails, the error now includes the last lines of dpkg's output. #14447native-sdknow installs from npm (@native-sdk/cli), so thenativecommand works. It requires Node 24+. #14431Security
mise.tomlwith only[tasks]loads without trust. Before this fix, if one of those tasks setfileto a remote URL,mise tasks ls,mise tasks infoandmise tasks validaterendered the file's#MISEheaders, so a template like{{ exec(...) }}ran without a trust prompt. Remote files now follow the same rule as local task includes: if the headers contain template syntax, the config that references them must be trusted first. Remote files with plain headers still list without trust, and braces in the script body need no trust. #14416 (@JamBalaya56562, @risu729)Added
mise bootstrap --upgradeinstalls what is missing and then upgrades what is already installed, in a single run. In the packages phase it runs the same upgrade asmise bootstrap packages upgrade, and pins are respected. In the tools phase it runsmise upgradewithout--bump, so configured version ranges hold. Both run before the matching post hooks and dependent services.--dry-runpreviews both steps and--skipworks as before. It does not update mise itself, repositories or images, and it does not restart services. #14433mise self-update --yes && mise bootstrap --upgrademise env --pathsprints the PATH entries mise manages, one per line and in PATH order: tool bin directories,_.pathentries, and inherited directories that mise moves forward, such as~/.cargo/bin. This lets CI integrations export only mise's additions without diffingPATH. #14429The install script downloads pinned versions from mise.jdx.dev.
curl https://mise.run | MISE_VERSION=<version> shnow tries mise.jdx.dev first and falls back to GitHub Releases if that download fails. Checksums for pinned versions still come only from GitHub'sSHASUMS256.txt. If no checksum is found, the script refuses to install.MISE_INSTALL_FROM_GITHUB=1still uses GitHub only. #14446Registry:
gdalinstalls the GDAL/OGR command-line tools from conda-forge (conda:libgdal-core). #14440 (@ivan-ivkovic)Fixed
mise upgradeno longer installs lazy tools that have never been installed. Naming the tool still installs it. A lazy tool that already has a version installed upgrades as before. A missing lazy tool is still installed if an upgraded tool depends on it.mise outdatednow marks these tools as[MISSING] (lazy), and the bare upgrade no longer looks up their versions. #14422 (@ryanrhughes), #14444stack limit reachederrors on the static musl builds, for example on Ubuntu 26.04. These errors broke aquaversion_filterparsing and made shims such as kubectl's report "not a valid shim". #14450mise lock --platform ...run on Alpine or NixOS no longer records Node source builds for other platforms. Only an explicitnode.compileorall_compile = trueforces source builds for those targets. #14432mise upgrade --bumpand hand-edited version pins no longer drop a pipx tool's locked uv dependency graph. Before,mise install --lockedthen failed on a fresh checkout. #14426 (@wislertt)fnox@1now skip releases this host can't install, the same waylatestdoes. Each skipped release gets a warning, and if no match can be installed, mise reports a clear error. #14467bashshim ahead of/binno longer causes a false "shim fallback recursion detected" error for commands likebash -c 'bash --version'. The docs now recommend installing shells with the system package manager instead of[tools]. #14475interfacenow render the incoming direction (ufw allow in on tailscale0 ...), which fixesInvalid token 'on'errors. #14480files: applyprompt, mise now lists each file it will create, overwrite or remove and warns that local edits will be replaced. The prompt now defaults to No. #14430mise dot add --changednow also captures edited files that a copy-modedotfile_groupsroot discovers automatically, not just files listed explicitly inentries. #14436Documentation
mise.lock, so CI and Docker builds skip version lookups. #14453New Contributors
Full Changelog: jdx/mise@v2026.10.10...v2026.10.11
💚 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.10.10: : Task skip_if, snap and COPR in bootstrap, and dotfiles pull fixesCompare Source
Tasks can now skip themselves with a
skip_ifcheck, and bootstrap gains Snap packages, Fedora COPR repositories, and branch selection for--adopt. This release also fixes severalmise dot pullproblems that could loop, stall, or leave sharing paused on long histories. On the Windows side, it fixes.mise-binsexecutables and npm installs restored from a cache.Added
skip_iffor tasks. Before a task runs, mise runs itsskip_ifshell command. If the command exits 0, mise skips the task and counts it as successful. Any other exit status runs the task as usual. #14399The check runs after
dependsand beforeconfirm. It uses the task's directory, shell, environment, sandbox andtimeout, and it supports Tera templates and task arguments. Its output is discarded and it gets no stdin. It does not receive the task'ssecrets. File tasks can set it with#MISE skip_if="...".mise run --forceskips the check,--dry-runprints it without running it, andmise tasks infoshows it. If the check can't start, times out, or is killed, the task fails.Snap packages in bootstrap. On Linux, you can declare snaps in
[bootstrap.packages]alongside apt and flatpak, with optionalchannelandclassic, andstate = "absent"to remove a snap. If a snap tracks a different channel than you declared,statusshows it andapplymoves it withsnap refresh --channel. snapd can't install or hold a specific version, soapplyandupgradeskip entries with a version pin and print a warning. #14402COPR repositories with
[bootstrap.dnf.repos]. You can declare a COPR next to thednf:packages that come from it, instead of using apre-packageshook. mise writes the same/etc/yum.repos.dfile thatdnf copr enabledoes. It does not need the copr plugin, so this also works on Fedora Atomic hosts that layer packages. The chroot is chosen from/etc/os-release(Fedora, EL, Amazon Linux). Without--yes, mise asks before enabling any COPR. mise never disables or removes repositories, butmise bootstrap unapplynames any leftover files. #14401mise bootstrap --adopt <url>?ref=<branch>adopts a branch other than the default, either for global config or for a setup history. This also works withmise bootstrap remote. The ref must be a branch: tags, commits and missing branches are refused before anything is cloned. mise never switches an existing~/.config/misecheckout to another branch, even with--update, so usegit switchfirst. The docs now also explain howmise dot origin setrelates to an adopted global config. #14400GitHub OAuth refresh token in the Secure Enclave. On a Mac with Touch ID, set
github.oauth_cache_secure_enclave = trueto keep the native GitHub OAuth refresh token behind Touch ID instead of in plaintext ingithub-oauth-tokens.toml. Touch ID asks for a fingerprint only when the token needs refreshing. If you cancel the prompt, mise skips the refresh and keeps the cached access token. This needs the Developer ID-signed release build. Homebrew and source builds print a warning and keep the token in the cache file. #14413Changed
experimental = truenow turns on the identity install layout by itself, which keeps deep npm, pipx and Java trees under the 260-character path limit. Only new installs use it. Existing installs stay where they are, andmise installs migratecan move them. To keep the old layout, setinstall_layout = "legacy"(orMISE_INSTALL_LAYOUT=legacy). Linux and macOS still needinstall_layout = "identity"set explicitly. #14392Fixed
Dotfiles
mise dot watchcould publish commits endlessly without any real edits. Now mise keeps the ciphertext that history already has whenever it decrypts to the same content, mode and recipients. Machines that are already looping settle after one more sync. #14405mise dot pullon long histories is much faster. The number of git processes no longer grows with the length of the history: in one test with 2,000 commits, a pull went from 137 s to under 6 s. #14407, #14415mise dot pullby hand. Now, if nothing has been written yet, mise retries on the next attempt and the watcher keeps applying changes. #14414mise dot pull --yesno longer fails with "local saved history changed since planning". The pull now recovers the interrupted operation before it plans. #14410mise dot pull --take-remote <path>again for a path an earlier pull already resolved no longer fails with "is not a conflict". #14411Windows
mise xand shims now run the original executable instead of its copy in.mise-bins, for tools installed with aquasymlink_bins, githubfilter_bins, or packslip. Programs that look for DLLs or data next to their own executable, such as exiftool, now start correctly. Tools installed by older versions needmise install --forceto get this. A shell frommise activatethat finds the copy onPATHstill runs the copy. #14397ERR_MODULE_NOT_FOUND. #14418Tools and installs
rust@nightly,mise ls-remote rust, andmise outdated/upgradenow read the nightly manifest fromRUSTUP_DIST_SERVER, so a mirror such as panamax no longer needs access tostatic.rust-lang.org. If[env]setsRUSTUP_DIST_SERVERorRUSTUP_UPDATE_ROOT, mise also passes them torustup-initandrustup toolchain install. #14384minimum_release_age,mise use --tool-option minimum_release_age=0s <tool>now installs the actual latest version instead of the version the global cutoff allows. #14398 (@halms)mise lock --globallocked with a dependency graph now regenerates the graph for the new version, including with--bump. Before, the upgrade dropped the graph and the nextmise install --lockedfailed. #14419 (@altendky)compiling with kerlwhile the build runs, instead of staying onverifying checksum. kerl's output now prints above the progress row instead of writing over it. #14391mise prunenow shows a progress line while it scans for unused versions, instead of printing nothing for what could be a long time. #14420env._.pythonand itsvenvoptions, matching what mise already refused at load time. Editors now flag these mistakes. #14387 (@JamBalaya56562, @risu729)Documentation
[bootstrap.apt.sources]. #14396Full Changelog: jdx/mise@v2026.10.9...v2026.10.10
💚 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.10.9: : path: tool versions require trust; apt repositories, login items and run0/doas in bootstrapCompare Source
This release fixes a trust bypass: an untrusted
path:tool version could put a directory onPATH. It also adds several bootstrap features: apt repositories and PPAs, macOS login items, rpm-ostree layering on Fedora Atomic, andrun0/doassupport. Beyond that, it improvesmise dot status, adds GitHub OAuth conveniences, and fixes problems across npm, prune, brew and dotfiles sync.Security
path:tool versions now require trust. Before, an untrusted repository could shipnode path:./localin.tool-versionsormise.toml.mise activatewould then put./local/binahead of yourPATHon the nextcd, without asking for trust, so alocal/bin/gitthere would run in place of your realgit. Configs with apath:version are now skipped until trusted, and you see the usualis not trusted, run mise trustwarning. Aftermise trust,path:works as before. Other version forms are unaffected. Reported by Anthropic and Ada Logics. #14358mise bootstrap --adoptnow rejects repository URLs that embed credentials (auser:TOKEN@part). It used to quietly fall back to a plain clone, which left the token in.git/config. Use a Git credential helper or SSH agent. #14315tool%2F..%2Fpwned.tar.gz, orC:names on Windows) can no longer point outside the download directory. Ordinary escapes such as%20still decode. #14274 (@JamBalaya56562, @hktitof)Added
Bootstrap
[bootstrap.apt.sources]declares PPAs and vendor apt repositories next to the packages that come from them. You no longer need apre-packageshook that runsadd-apt-repository. Each source is written as a deb822 file at/etc/apt/sources.list.d/mise-<name>.sources. Its signing key is fetched, trimmed to the fingerprints you declared, and stored inline in that file, so deleting the file removes both the repository and its key. PPAs need onlyppa = "owner/name"and are added only on Ubuntu and Ubuntu-based distros, so the same config also works on Debian. Other repositories needuris,keyandfingerprint;suitesandcomponentsare optional. An unpinnedapt:package that is installed from the distro is moved to the declared source. Inline keys require apt 2.4 or later (Ubuntu 22.04, Debian 12). #14306, #14348macOS login items.
[bootstrap.macos.login_items]declares the apps listed under "Open at Login".statusandplanreport missing apps, andmise bootstrapadds them. The list is additive by default, so apps that register themselves are left alone. Setexclusive = trueto have the config own the whole list. #14354Fedora Atomic hosts. On ostree-booted hosts (Silverblue, Bazzite, secureblue, ...),
dnf:installs now stop with an explanation instead of failing inside dnf on read-only/usr. To layer packages instead, setsystem_packages.ostree = "layer". mise then runs onerpm-ostree installfor the whole batch and reports layered packages aspending rebootuntil you reboot. Version pins are skipped, andupgradepoints you torpm-ostree upgrade. #14353, #14357run0anddoasfor privilege elevation. On hosts withoutsudo, mise uses the first ofsudo,run0ordoasit finds onPATH. To always use a specific one, setsystem_packages.elevate_with(orMISE_SYSTEM_PACKAGES_ELEVATE_WITH), for example"run0". #14351dnf package groups. Entries such as
"dnf:@development-tools" = "latest"are now installed, upgraded and checked as groups. Before,statusalways reported them as missing. Environment groups (@^name) are not supported. #14347Templated
[bootstrap.repos]paths. Repo keys can use templates, so each machine can choose its own clone location with a var answered once throughmise vars prompt. Unanswered vars use theirdefault. #14359Tools and backends
libc()andavx2()template functions forhttp:URLs. They let one entry pick-musland no-AVX2-baselinebuilds: append{{ avx2(yes="", no="-baseline") }}{{ libc(gnu="", musl="-musl") }}to theurltemplate after{{ os() }}-{{ arch() }}.mise lockrecords every variant. #14298pypi.registry_urlis not a/jsonURL, mise now asks for the PEP 691 JSON format. If the index supports it, upload times come from the index, sominimum_release_agenow works with private indexes. HTML-only indexes behave as before. #14352RUSTUP_UPDATE_ROOTis set,rustup-initis downloaded from{root}/dist/<host-triple>/rustup-initinstead ofsh.rustup.rs. This lets mirrors such as panamax serve the first download too. mise also forwardsRUSTUP_DIST_SERVERandRUSTUP_UPDATE_ROOTfrom config env to rustup. #14356GitHub OAuth
github.oauth_copy_codecopies the one-time device code to the clipboard duringmise token github --oauth, likegh auth login --clipboard. When the setting is unset, mise asks in an interactive terminal. Only the device code is copied, never the token. #14269github.oauth_cache_getandgithub.oauth_cache_setkeep the long-lived refresh token in a password manager or keychain, so the plaintext cache file holds only the 8-hour access token. Both settings must be set and can only go in global config. An existing cached refresh token moves into the store at the next refresh. If the store can't be read, mise keeps the cached token. If it can't be written, mise warns and keeps the token in the file. #14360Dotfiles and skills
mise dot statusoutput is grouped into sections: Tracking, Repository, Conflicts, Automatic capture and Bootstrap, followed by a "Next steps" list of commands. The table now lists only entries that need attention and counts the rest. Use--verbose/-vto list every entry.--jsonand--missingare unchanged. #14361mise dot statusnow shows tracked entries whose variants don't match this machine asnot on this machine (variants: work), instead of plaintracked. In--json,statestaystrackedand areasonfield is added. #14266mise skills syncnow lists the skill links it creates, plus.mise-skills.json, in the repository's.git/info/exclude, so they stay out ofgit status. Your hand-written skills are unaffected, and nothing in the repository itself changes. #14374Changed
opencodenow installs OpenCode 2 from npm (npm:@opencode/cli).opencode@latestmoves to v2 on your next upgrade.opencode@1keeps v1 from aqua. #14295go.modorgo.workhas an exactgo X.Y.Zline and notoolchainline, mise now uses it as the toolchain version and no longer shows the deprecation warning. This matches how Go reads the file. The old advice to add atoolchainline didn't work, becausego mod tidyremoves it.go X.Ylines without a patch version are still deprecated. #14308-debianDocker image now includeslibatomic1, so Node.js 26 installs and runs without extra steps. #14303Fixed
Tools, shims and updates
auto_updatenow updates only tools that are already installed. Since 2026.10.7, the first shell prompt could install every lazy tool declared withauto_update. #14368 (@ryanrhughes)mise exec,mise xand shims now retry up tohttp_retries, likemise install. Before, they made a single attempt. Remote version lookups still make one attempt, so shims don't get slower. #14342<version>~aube~<digest>, in another config that requestslatestor a version prefix without a lockfile. Withinstall_layout = "identity", unlocked requests get their own plain install, separate from the project's lockfile-built one. The same applies to uv-locked pipx tools. #14307, #14309mise pruneno longer removes tool versions used only by inline tasktools. It also keeps a uv-lockedpipx:/pypi:tool's installs for every Python version, not just the one in the current directory. #14334, #14335[wrappers]command wrappers defined in other projects. #14355skills.auto_sync,mise upgradenow relinks agent skills to the new version. Before, the links kept pointing at the replaced install, whichprunecould then delete. #14373GIT_INDEX_FILE). Fixed by updating gix to 0.89. #14316 (@any-victor)release-plz.ymltorelease.yml, now upgrade when both workflows are in theworkflowlist.mise lockalso keeps the signer of a renamed or transferred project. #14338, #14362tool-updateservice no longer opens a console window that stops the updater when you close it. #14344Homebrew and system packages
etc/varfiles and run the formula'spost_install_steps. For example,openssl@4now gets its CA bundle andopenssl.cnf. Existing files are kept, and the bottle's copy is saved next to them as.default. Protectedcopysteps (overwrite: false) are respected. #14272, #14311uses_from_macosdependencies are now installed. This fixes runtime errors such aslibbz2.so.1.0missing forbrew:chafa. #14288 (@itskyf)mise bootstrapno longer runschownon a Homebrew prefix owned by another non-root user. It stops with an explanation instead. #14345generate_completions_from_executablestanza. #14255 (@pmmmwh)mise oci buildno longer runs the host's apt hooks against the image. Those hooks broke non-root builds that install packages such ascmake. #14296Dotfiles
not applied here, andmise dot pullapplies it, or stops with a conflict that you resolve with--take-remoteor--keep-local. #14275mise bootstrap --adopt, unchanged encrypted files reuse the ciphertext already in history. Before, they were re-encrypted, andmise dot syncpaused on a conflict. #14300/homeis a symlink (Fedora Atomic), adopting now restoresconfig/entries, andmise dot origin setno longer shows a false "Not portable" warning. #14315mise dot applyapplies entries that write mise's own config first, then plans everything else from the new config. A newly added entry now takes effect in a single run. #14339mise dot diffnow shows per-file hunks, missing files and type mismatches for directory copy entries. #14333Schema
[bootstrap.secrets],[bootstrap.groups],[bootstrap.users], and table forms ofvars._.fileandvars._.source. Editors and linters such as tombi and Taplo no longer flag configs that mise accepts. #14322, #14340, #14383 (@JamBalaya56562, @risu729)Documentation
mise bootstrap --fromversus--adopt, whyfish = "auto"is recommended for fish activation, when to usemise dot sync,pullandapply, and how to check from a shim whether a tool is installed. #14301, #14304, #14343, #14337Upgrade notes
path:tool version, runmise trustin it.mise dot statusshould add--verboseor switch to--json.opencode@latestmoves to OpenCode 2. Pinopencode@1to stay on v1.mise bootstrap --adoptwith a URL that contains credentials now fails. Use a credential helper or SSH agent instead.Registry
Alice39s/xmtr,bufbuild/protoschema-plugins/protoc-gen-jsonschemaandtakumin/qemu-bin.New Contributors
Full Changelog: jdx/mise@v2026.10.8...v2026.10.9
💚 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.10.8: : Stableglobalinstall link for IDEsCompare Source
Each tool's install directory now has a
globallink that follows your global config, which gives IDEs a path that doesn't change when you switch versions. This release also retries downloads whose response body drops partway through, fixes lockfile checks for release tags that contain@, and stops dotfiles history from rewriting files that haven't changed.Added
globalruntime symlink. Each tool's install directory now has agloballink to the version your global and system config select. Programs that can't run mise, such as IDEs, can point at this path and followmise use -gchanges. #14271The link is updated along with the other runtime symlinks (
latest,3, ...), for example aftermise use -g,mise installandmise upgrade. Project config andMISE_*_VERSIONdon't change it. If no global config selects the tool, mise removes the link. A real directory namedglobalis left alone. The link is always on, and no setting turns it off.Fixed
http_retries, when the response body drops partway through. Before, only the request and headers were retried, so a version list or release page cut off mid-transfer failed witherror decoding response body. This applies to text, JSON and byte requests, and to version lists read withversion_regex. #14253 (@JamBalaya56562)mise installno longer rejects lockfile entries whose release tag contains@, such ascli@0.46.0.mise lockwrites these tags percent-encoded (cli%400.46.0), and the locked-URL check read that as version400.46.0. Re-runningmise lockcouldn't fix it. #14252mise dot savefail withanother history operation is running. #14249outputs = { auto = false }on tasks, so editors and linters such as tombi and Taplo no longer flag it. mise's behavior is unchanged:auto = falsemeans the same as leavingoutputsunset. #14265 (@JamBalaya56562)Documentation
Registry
runxhq/runxandtakumin/passt-bin.Full Changelog: jdx/mise@v2026.10.7...v2026.10.8
💚 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.10.7: : Background tool updates at the shell prompt, a verified download cache, andmise upgrade --globalCompare Source
Tools with
auto_updatenow update in the background from an activated shell, and a newtool_update.global_autosetting turns this on for every global tool. mise also keeps finished downloads in a content-addressed cache and checks them again before reusing them. This release also fixes.envparsing regressions from 2026.10.3 and a crash inmise run.Added
Automatic updates at the shell prompt. Before,
auto_updateonly ran when a shim ormise execlaunched a tool. Withmise activate, tools run straight fromPATH, so they were never updated. Now, when a check is due,mise hook-envstarts the update in a detached background process. The prompt doesn't wait and nothing is printed. The next command after the update finishes uses the new version. The existing rules still apply: only global config counts, exact versions don't move, nothing updates offline, in CI or withlocked, andminimum_release_ageis honored. While thetool-updateservice is running, prompts leave updates to it. Failed background updates show up inmise doctor. #14239tool_update.global_autoturns on automatic updates for every tool in global config at once. It takes the same values asauto_update:truechecks everytool_update.check_duration(24h by default), and a duration sets the interval. A tool's ownauto_updatetakes precedence, soauto_update = falseopts a tool out. Projects can't enable this setting. You can also set it withMISE_TOOL_UPDATE_GLOBAL_AUTO.self_update.autonow accepts an interval too, for exampleself_update.auto = "1d". #14237mise upgrade --globalandmise outdated --globalact only on the tool requests in global and system config, even inside a project that pins its own version or whenMISE_<TOOL>_VERSIONis set. The project'smise.toml, lockfile and[env]are not read or changed.--bumpwrites to the global config.--globalcan't be combined with--localor--inactive. A new "Self-updating tools" docs page explains how tools that update themselves, such as coding agents, can detect a mise install and update through mise instead of overwriting their own install. #14243Verified download cache. Finished downloads are stored once in
$MISE_CACHE_DIR/downloads-casand hashed again before every reuse. A cached file that no longer matches is dropped and downloaded again. #14222, #14242ETagorLast-Modifiedheader, the nConfiguration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.