jdx/mise · error · eyre::Report
Tool '{}' not found
Error message
Tool '{}' not found What it means
A mise shim/tool-stub was executed, and while resolving which installed tool provides the binary, the tool named by the request had no installed versions at all — BinPathError::ToolNotFound, surfaced at src/cli/tool_stub.rs:593. The tool is typically referenced in config but its install directory is empty/missing.
Source
Thrown at src/cli/tool_stub.rs:593
}
if let Some((backend, _tv)) = toolset.list_current_installed_versions(config).first() {
let btp = backend
.dependency_toolset(config)
.await?
.list_paths(config)
.await;
for p in btp {
path_env.add(p);
}
}
env.insert(crate::env::PATH_KEY.to_string(), path_env.to_string());
crate::cli::exec::exec_program(bin_path, args, env, &Default::default(), false).await
}
Err(e) => match e {
BinPathError::ToolNotFound(tool_name) => {
bail!("Tool '{}' not found", tool_name);
}
BinPathError::BinNotFound {
tool_name,
bin,
available_bins,
} => {
if available_bins.is_empty() {
bail!(
"Tool '{}' does not have an executable named '{}'",
tool_name,
bin
);
} else {
bail!(
"Tool '{}' does not have an executable named '{}'. Available executables: {}",
tool_name,
bin,
available_bins.join(", ")View on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Install everything the config references: `mise install` (run in the project)
- Install the specific tool: `mise install <tool>@<version>` or add it with `mise use <tool>` (which installs too)
- If the tool should not be managed by mise, remove it from mise.toml/.tool-versions and clear stale shims (`mise prune`)
Example fix
# before $ node -v # error: Tool 'node' not found # after $ mise install $ node -v
Defensive patterns
Strategy: validation
Validate before calling
# ensure config tools exist before running shims
mise install
tool="node"
mise ls --installed "$tool" >/dev/null 2>&1 || { echo "$tool not installed" >&2; exit 1; }
$tool --version Try / catch
command -v node >/dev/null && node -v || { mise install && exec node "$@"; } Prevention
- Make `mise install` the first step of every bootstrap/CI job that runs mise-managed binaries
- Enable auto-install (mise settings set auto_install true) so missing tools install on first shim use
- Run `mise ls` after checkout to catch configured-but-missing versions early
When it happens
Trigger: Running a shim (e.g. `node`, `rg`) when the tool is referenced by mise.toml/trusted config but `mise install` was never run; after uninstalling the tool while shims/config remain; a lockfile pins a version not present on this machine.
Common situations: Fresh clone of a repo where teammates assume mise auto-installs (and auto-install is disabled or MISE_AUTO_INSTALL=0); post-uninstall leftover shims on PATH; CI job that forgot the install step.
Related errors
- Tool '{}' does not have an executable named '{}'
- Tool '{}' does not have an executable named '{}'. Available
- No executable found for configured tool: {bin_name}
- {bin_name} is a mise bin however it is not currently active.
- rename_exe: cannot rename '{}' to '{}': target already exist
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/038ab96cfbfc3d58.
Report an issue: GitHub.