How to Update mise: Complete Guide to Self-Update and Package Manager Methods
Run mise self-update to upgrade the binary directly, or use your package manager (brew, apt, dnf) if you installed mise via a package manager.
Keeping mise current ensures you have the latest language runtimes, security patches, and CLI improvements. Depending on how you installed the tool—either as a standalone binary or through a system package manager—the update process differs significantly. This guide covers both pathways based on the official jdx/mise source code and documentation.
Checking if Self-Update is Available
Before attempting an update, verify whether your installation supports self-updating. Binary installations downloaded directly from GitHub releases include this feature, while package manager installations disable it to prevent conflicts.
Check your installation type by running:
mise self-update --help
If you see usage instructions, self-update is enabled. If you encounter the message "self-update is disabled for this install", you must use your package manager's upgrade workflow instead.
Updating mise via Self-Update
Binary installations can upgrade themselves without external package managers. The implementation in [src/cli/self_update.rs](https://github.com/jdx/mise/blob/main/src/cli/self_update.rs) handles the entire process: querying the GitHub releases API, downloading the appropriate binary for your OS and architecture, verifying TLS signatures, replacing the current executable, and regenerating shims.
Update to the Latest Release
To upgrade to the newest stable version:
mise self-update
This command automatically detects your platform, downloads the latest release, and refreshes all shims via mise reshim.
Update to a Specific Version
Pin your installation to a particular release tag when you need reproducible builds or want to test a specific version:
mise self-update v2024.10.0
Replace v2024.10.0 with your desired version tag from the GitHub releases page.
Force Reinstall
If you suspect binary corruption or need to reinstall the same version:
mise self-update --force
The --force flag bypasses the version check and reinstalls even when mise reports it is already up to date.
Updating via Package Managers
When installed through Homebrew, APT, DNF, or Pacman, mise disables its internal self-update mechanism to avoid permission conflicts and package database inconsistencies. Use your manager's standard update commands:
Homebrew
brew upgrade mise
Debian/Ubuntu
sudo apt update && sudo apt install --only-upgrade mise
Fedora
sudo dnf upgrade mise
Arch Linux
yay -S mise
Or using pacman directly:
pacman -Syu mise
The [docs/installing-mise.md](https://github.com/jdx/mise/blob/main/docs/installing-mise.md) file documents these platform-specific pathways in detail.
How Self-Update Works Under the Hood
The self-update process performs several critical safety checks before modifying your system. According to the source in src/cli/self_update.rs, the command:
- Contacts the GitHub releases API to fetch version metadata
- Downloads the correct binary for your operating system and architecture
- Verifies TLS signatures to ensure binary integrity
- Atomically replaces the existing mise executable
- Executes
mise reshimto regenerate all tool shims
On Windows, this process additionally updates the mise-shim.exe executable automatically.
Troubleshooting Self-Update Issues
When Self-Update is Disabled
Package maintainers can disable self-updates by placing a marker file named .disable-self-update (typically in lib/.disable-self-update). When present, mise self-update aborts immediately and directs you to use the package manager.
Some distributions ship a mise-self-update-instructions.toml file containing custom guidance. When this file exists, mise prints its contents before exiting, often showing commands like sudo apt update && sudo apt install --only-upgrade mise. These instruction files are generated during the packaging process (see scripts/build-deb.sh and scripts/build-rpm.sh).
Network Restrictions
If you operate behind a corporate proxy or MITM-inspecting firewall, recent mise versions include SOCKS proxy support for the self-update download. This allows the TLS-enabled download to traverse restricted networks that require proxy authentication.
Verify the Update
Regardless of your update method, confirm the new version is active:
mise version
This command, implemented in [src/cli/version.rs](https://github.com/jdx/mise/blob/main/src/cli/version.rs), displays the current version and will suggest running mise self-update if a newer release exists.
Summary
- Binary installations: Use
mise self-updatefor the latest release,mise self-update <version>for specific tags, or--forceto reinstall - Package manager installations: Use
brew upgrade mise,apt upgrade mise,dnf upgrade mise, or equivalent commands—self-update is disabled - Self-update mechanism: Downloads from GitHub releases, verifies signatures, replaces the binary, and reshims automatically
- Disabled updates: Look for
.disable-self-updatemarker files ormise-self-update-instructions.tomlfor custom upgrade paths
Frequently Asked Questions
Why is mise self-update disabled on my system?
Self-update is disabled when you install mise via a package manager like Homebrew, APT, or DNF. This prevents the binary from conflicting with the package database and ensures clean upgrades through your system's native toolchain. The presence of a .disable-self-update marker file in the installation directory triggers this behavior.
Can I downgrade mise to a previous version?
Yes. Use the specific version syntax: mise self-update v2024.09.0 (replace with your desired version). This forces mise to install that exact release rather than the latest stable version, effectively allowing you to roll back if you encounter regressions.
Does mise self-update affect installed tools?
No. The self-update command only replaces the mise binary itself and refreshes shims via mise reshim. It does not modify your installed language versions, global tool configurations, or project-specific .mise.toml files. Your development environments remain unchanged.
How do I verify the update succeeded?
Run mise version immediately after updating. This displays the currently active version string. If you updated via self-update, you can also run mise self-update --help to confirm the command remains available (disabled installations show a "self-update is disabled" message instead).
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →