# How to Update mise: Complete Guide to Self-Update and Package Manager Methods

> Learn how to update mise using simple commands. Upgrade your mise binary directly or leverage your package manager for seamless updates. Get the latest version now.

- Repository: [jdx/mise](https://github.com/jdx/mise)
- Tags: how-to-guide
- Published: 2026-08-09

---

**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:

```bash
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)](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:

```bash
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:

```bash
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:

```bash
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

```bash
brew upgrade mise

```

### Debian/Ubuntu

```bash
sudo apt update && sudo apt install --only-upgrade mise

```

### Fedora

```bash
sudo dnf upgrade mise

```

### Arch Linux

```bash
yay -S mise

```

Or using pacman directly:

```bash
pacman -Syu mise

```

The [[`docs/installing-mise.md`](https://github.com/jdx/mise/blob/main/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`](https://github.com/jdx/mise/blob/main/src/cli/self_update.rs), the command:

1. Contacts the GitHub releases API to fetch version metadata
2. Downloads the correct binary for your operating system and architecture
3. Verifies TLS signatures to ensure binary integrity
4. Atomically replaces the existing mise executable
5. Executes `mise reshim` to 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`](https://github.com/jdx/mise/blob/main/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`](https://github.com/jdx/mise/blob/main/scripts/build-deb.sh) and [`scripts/build-rpm.sh`](https://github.com/jdx/mise/blob/main/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:

```bash
mise version

```

This command, implemented in [[`src/cli/version.rs`](https://github.com/jdx/mise/blob/main/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-update` for the latest release, `mise self-update <version>` for specific tags, or `--force` to 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-update` marker files or [`mise-self-update-instructions.toml`](https://github.com/jdx/mise/blob/main/mise-self-update-instructions.toml) for 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`](https://github.com/jdx/mise/blob/main/.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).