A mix of features and correctness work: a native GitHub OAuth token source (experimental) that drops the dependency on gh/ghtkn, mise oci commands scoped to the current project by default, and two registry-lookup performance wins — plus fixes across activate, exec, java, lock, pipx, and vfox.
Added
-
(cli) Add
--before <date>tomise ls-remoteandmise lockfor release-date-aware version discovery (#9269) by @risu729 -
(config) Hooks can now be defined as a table —
{ run = "...", shell = "bash -c" }— to pick a shell inline, alongside the existing string form (#9718) by @risu729 -
(github) Add native GitHub OAuth device-flow token source (experimental) — no dependency on
gh/ghtkn(#9654) by @jdx. Create a GitHub App with device flow enabled, then authorize once:mise settings set experimental true mise settings set github.oauth_client_id Iv1.yourgithubappclientid mise token github --oauth
mise caches and refreshes the token for its own GitHub API calls, and auto-exports it as
GITHUB_TOKENto shells started undermise activate/execsogh,git, and other GitHub-aware tools pick it up too. See GitHub Tokens → Native GitHub OAuth for the full setup. -
(oci)
mise oci build/run/pushare now scoped to the current project's config by default; pass--include-globalto opt back into the previous behavior of including global config (#9766) by @jdx -
(outdated) Prefixed-version requests now resolve to the latest within the prefix — e.g.
temurin-17.0.19+10for atemurin-17.xrequest, instead of jumping ahead totemurin-26.x(#9767) by @roele
Fixed
- (activate) Guard bash
chpwd_functionsexpansion underset -uso activated shells no longer fail withchpwd_functions[@]: unbound variable(#9716) by @risu729 - (backend) Date-check the
latest_stable_versionfast path when--beforeorminimum_release_ageis active, instead of returning a too-new version (#9650) by @risu729 - (config) Parse core tool options consistently between table and bracket syntax, so
[depends=...]andos=set the named core fields (#9742) by @risu729 - (exec) Nested
mise -C <dir> execcorrectly resolves the inner toolset's tools again —__MISE_DIFFis now propagated to children so the child no longer inherits a mutated PATH that hides its own tools (#9765) by @jdx - (forgejo) Include prereleases when
prerelease = true/MISE_PRERELEASES=1is set (#9717) by @risu729 - (github) Avoid caching empty release-asset responses, refetching instead (#9616) by @risu729
- (java) Resolve
core:javalockfile URLs/checksums from mise Java metadata, fixingmise install --lockedfor Java (#9719) by @risu729 - (lock) Cache
github_attestations = "unavailable"so locked installs stop hitting the GitHub attestation API for artifacts known to have none (#9741) by @risu729 - (pipx) Preserve
uvx_args/pipx_args/extras/uvx = falsewhen pipx tools are reinstalled after a Python upgrade (#9663) by @risu729 - (python) Skip redundant GitHub attestation re-verification when the lockfile already has checksum +
provenance = "github-attestations"(#9739) by @risu729 - (vfox) Run vfox plugin
pre_uninstallhooks before removing install directories (#9662) by @risu729 - Quote
programandargsincmd::cmd(..)debug output so logged commands are unambiguous (#9777) by @ktetzlaff
Performance
- (aqua) Bake aqua registry packages as rkyv blobs for much faster lookup (#9535) by @risu729
- (registry) Use
phffor the mise registry lookup table, around 3.3x faster than the previousBTreeMappath (#9769) by @risu729
Registry
- Added
vector(#9761) by @kquinsland - Added
openshift-installand anhttp:backend foroc(#9669) by @konono
New Contributors
- @konono made their first contribution in #9669
- @kquinsland made their first contribution in #9761
- @ktetzlaff made their first contribution in #9777
Full Changelog: v2026.5.5...v2026.5.6
💚 Sponsor mise
mise is built by @jdx under en.dev — an independent studio making developer tooling (mise, aube, and more). Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at en.dev. Individual and company sponsorships keep mise fast, free, and independent.