| name | mise-toolchains |
| description | Use when debugging runtime version issues, toolchain not found errors, or version conflicts across projects. Symptoms - wrong node/rust/python/go version active, mise shim errors, RUSTUP_TOOLCHAIN conflicts, tool not found after install, global version overriding project version. |
mise Toolchains
Overview
mise manages language runtimes (Rust, Node, Python, Go, uv) via .mise.toml files. Two config layers interact — this is the most common source of toolchain confusion:
| File | Scope |
|---|
<repo>/.mise.toml | Project-local runtimes + tasks |
~/.config/mise/config.toml | Global — pins override project entries silently |
When a toolchain behaves unexpectedly, check global config first.
Debugging Toolchain Issues
mise current
cat ~/.config/mise/config.toml
mise doctor
mise install
printenv | grep -i mise
Rust-Specific
mise sets RUSTUP_TOOLCHAIN so cargo uses the right version:
echo $RUSTUP_TOOLCHAIN
mise which cargo
rustc --version
Common Operations
mise install
mise current
mise ls
mise ls --current
mise which <binary>
mise use rust@1.84
mise use -g node@22
Task Runner
.mise.toml doubles as a task runner ([tasks.<name>] sections with run, description, depends). Three equivalent runners:
mise run <task>
just <recipe>
make <target>
mise tasks
mise run menu
Common Mistakes
| Mistake | Fix |
|---|
Project version wrong despite .mise.toml | Check ~/.config/mise/config.toml for global override |
Tool not found after mise install | Reload shell: exec $SHELL or open new terminal |
cargo uses wrong toolchain | RUSTUP_TOOLCHAIN set by mise — check mise current |
| Task not found | Check spelling; tasks live in .mise.toml, not mise.local.toml |
mise run fails with env error | mise.local.toml (gitignored) for machine-specific env overrides |