mise upgrade
- Usage:
mise upgrade [FLAGS] [INSTALLED_TOOL@VERSION]… - Aliases:
up - Effect: modifies state
- Source code:
src/cli/upgrade.rs
Upgrade outdated tools
By default, keeps the range in mise.toml: with node = "20", it installs the newest 20.x release. Use --bump to upgrade to the newest release overall and update the version in mise.toml. Also updates mise.lock when lockfiles are enabled; see https://mise.jdx.dev/dev-tools/mise-lock.html
The version you upgraded from is removed after the upgrade.prune_after setting's grace period unless a tracked config or tool stub still uses it. Pass --prune to remove it now or --no-prune to keep it.
Arguments
[INSTALLED_TOOL@VERSION]…— Tools to upgrade, such as node@20 python@3.10Upgrades every configured tool when omitted.
Flags
-b --bump— Upgrade past the configured range to the newest release, and update the config to matchThe config keeps its precision:
node = "20"becomesnode = "22", andnode = "20.0.0"becomesnode = "22.1.0". If you name a version on the command line (node@latest,node@3, ornode@prefix:3), that request is written instead;mise upgrade node@latest --bumpwriteslatest. With thepinsetting on, a version request such asnode@3is written as the version it resolved to. Requests that do not come from a config file mise can write, such asMISE_NODE_VERSION, are upgraded but not written.-i --interactive— Choose which tools to upgrade from a multiselect menu-j --jobs <JOBS>— Number of jobs to run in parallel (default: thejobssetting)Environment Variable:
MISE_JOBS-n --dry-run— Show what would change without changing anything-x --exclude <INSTALLED_TOOL>— Tools to exclude from upgrading, such as go python--dry-run-code— Like --dry-run, but exit with code 1 if there are outdated toolsUse it in scripts that check whether tools need upgrading.
--inactive— Also upgrade installed tools that the current config does not request--global— Only upgrade tools defined in the global configUpgrades the requests in the global and system config (~/.config/mise/config.toml, /etc/mise/config.toml), even where a project config or a
MISE_<TOOL>_VERSIONenvironment variable sets its own version of the tool. It runs as if from outside any project, so project config, lockfiles, and[env]are neither read nor changed. Tools that update themselves, such as coding agents, run this instead of their own updater; see https://mise.jdx.dev/dev-tools/self-updating-tools.html--local— Only upgrade tools defined in project config filesSkips tools defined in the global config (~/.config/mise/config.toml) and tools set through
MISE_<TOOL>_VERSIONenvironment variables.--minimum-release-age <MINIMUM_RELEASE_AGE>— Only upgrade to versions released before this date or older than this durationSupports absolute dates such as "2024-06-01" and relative durations such as "90d" or "1y".
Applies only to requests that can match several versions, such as "20" or "latest". Exact versions such as "22.5.0" are not filtered.
--no-prune— Do not uninstall the versions that were upgraded away fromThe old version is left in place and is not scheduled for removal. Use this when something outside mise points at the install directory.
Set
upgrade.auto_prune = falseto make this the default.--prune— Immediately uninstall the versions that were upgraded away fromUse this to bypass
upgrade.prune_after, or to overrideupgrade.auto_prune = falsefor a single run.--raw— Connect the install commands' stdin, stdout, and stderr to the terminalImplies
--jobs=1.-h --help— Print help
Examples
Upgrade every configured tool within its range
mise upgradeUpgrade only node
mise upgrade nodeUpgrade every tool to its newest release and update mise.toml
mise upgrade --bumpShow what would be upgraded
mise upgrade --dry-runUpgrade everything except go
mise upgrade --exclude goChoose tools from a menu
mise upgrade --interactiveUpgrade claude within the global config's request, leaving project config alone
mise upgrade --global claudeDeprecation:
The -l shorthand for --bump is deprecated and will be removed in mise 2027.8.5. After removal, -l will become shorthand for --local. Use -b or --bump instead.