Skip to content

mise installs migrate ​

Reinstall legacy installations into the identity install layout

Installations made before install_layout = "identity" was turned on stay in installs/<tool>/<version> and keep working; mise never moves them on its own, because tools record their own path in shebangs, virtual environments and package-manager files. This reinstalls each one into its own <label>-<hash> directory, then removes the old directory and puts the version link in its place, so a path that pointed into the old directory still resolves.

Each version is reinstalled from its backend, not copied, so the files are written for their new path. Run it while nothing is using the tools: the old directory is moved aside while its replacement installs, and put back if that fails. Versions whose recorded backend is not the one their tool resolves to now are left alone, as are tools that keep the legacy layout (http:, rust, dotnet).

A version that cannot be reinstalled (its release was withdrawn or is signed by someone else now, or the network is unavailable) is not an error: its directory is moved as it is into the identity layout, behind the same version link. Only a version that cannot be moved either keeps its old directory, reported as kept in the legacy layout. The command ends with a count of what was migrated, relocated, kept and failed, and fails only when a migration itself broke.

Arguments ​

  • [TOOL@VERSION]… — Only migrate these tools, or these versions of them

    Defaults to every legacy installation.

Flags ​

  • -n --dry-run — Show what would move without changing anything
  • -h --help — Print help

Examples ​

List the legacy installations that would move

mise installs migrate --dry-run

Move every installed node and one python version

mise installs migrate node [email protected]
MIT LicenseCopyright © 2026jdx.dev