jdx/mise · error
{} runtime symlink repair(s) failed: {}
Error message
{} runtime symlink repair(s) failed:
{} What it means
`runtime_symlinks::run_all_rebuilds` collects every individual rebuild error into a vector and, if any failed, returns a single aggregated error "N runtime symlink repair(s) failed:" followed by each error's full chain. It is an aggregation wrapper over per-item symlink repairs, not a root-cause error itself.
Source
Thrown at src/runtime_symlinks.rs:49
rebuild_symlinks_in_dir(config, ts, &backend, &installs_dir).wrap_err_with(|| {
format!(
"failed to rebuild runtime symlinks for {} in {}",
backend.ba().short,
installs_dir.display()
)
})
})
}
fn run_all_rebuilds<T>(
rebuilds: impl IntoIterator<Item = T>,
mut rebuild: impl FnMut(T) -> Result<()>,
) -> Result<()> {
let errors = rebuilds
.into_iter()
.filter_map(|item| rebuild(item).err())
.collect_vec();
if errors.is_empty() {
return Ok(());
}
Err(eyre::eyre!(
"{} runtime symlink repair(s) failed:\n{}",
errors.len(),
errors.iter().map(|err| format!("{err:#}")).join("\n")
))
}
pub(crate) async fn migrate_real_dirs(config: &Config) -> Result<()> {
for backend in backend::list() {
for installs_dir in install_dirs_for(&backend) {
migrate_real_dirs_in_dir(config, &backend, &installs_dir)?;
}
}
Ok(())
}
View on GitHub (pinned to afd2eddd3a)
Solutions
- Read each line of the aggregated error to see which tools failed repair.
- Reinstall the affected tool (`mise install <tool>`), then re-run the command or `mise reshim`.
- Check symlink/privilege support on the installs directory (Windows Developer Mode, or avoid network filesystems).
- Wipe stale state for the failing tool and reinstall from scratch.
Example fix
// before # node runtime symlinks broken after manual delete // after mise install node && mise reshim
Defensive patterns
Strategy: validation
Validate before calling
mise ls --json | jq '.[] | select(.installed == null)' # find tools with missing install paths before commands that trigger repair
Prevention
- Reinstall tools whose install dirs were moved or manually deleted.
- Avoid symlink-hostile filesystems (network shares, Windows without Developer Mode).
- Run `mise reshim` after external changes to installs directories.
- Restore mise state and installs together from backups, never independently.
When it happens
Trigger: Any command that triggers runtime symlink repair where one or more `rebuild(item)` calls return Err — typically broken/unwritable symlink targets or missing tool install paths.
Common situations: Core tools (node/python/go) whose install paths were moved or deleted; HOME or installs dir on a filesystem without symlink permission (some Windows configs); stale mise state after restores from backup.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- failed to create file symlink: {err}
- expected world-writable ancestor to be refused
- expected symlinked appdir tail to be rejected
- expected pre-planted symlink destination to be refused
- edits: cannot diff these entries, fix them manually: {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/34954842c2da981b.
Report an issue: GitHub.