jdx/mise · error · eyre::Report
Tool '{}' does not have an executable named '{}'
Error message
Tool '{}' does not have an executable named '{}' What it means
A mise shim ran, the referenced tool IS installed, but the requested executable name is not among the tool's bins — BinPathError::BinNotFound with an empty available-bins list (src/cli/tool_stub.rs:601). The tool's install directory exposes no executables for mise to dispatch to.
Source
Thrown at src/cli/tool_stub.rs:601
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(", ")
);
}
}
},
}
}
/// Execute a tool stubView on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Inspect what the install actually ships: `ls "$(mise where <tool> 2>/dev/null || echo ~/.local/share/mise/installs/<tool>/<version>)"/bin`
- Reinstall the tool version: `mise uninstall <tool>@<version> && mise install <tool>@<version>`
- Remove/recreate the stale shim (`mise prune` or regenerate shims) if it references a bin that no longer exists
Example fix
# before $ mise x terraform -- tf # error: Tool 'terraform' does not have an executable named 'tf' # after $ ls ~/.local/share/mise/installs/terraform/*/bin # see real bin name 'terraform' $ mise x terraform -- terraform
Defensive patterns
Strategy: validation
Validate before calling
tool="terraform"; bin="terraform"
inst="$(mise where "$tool" 2>/dev/null)" || { mise install "$tool"; inst="$(mise where "$tool")"; }
[ -x "$inst/bin/$bin" ] || { echo "$tool has no bin '$bin'" >&2; exit 1; }
"$inst/bin/$bin" -version Try / catch
mise x "$tool" -- "$bin" "$@" || { echo "bin '$bin' missing — inspect $(mise where $tool)/bin and reinstall if empty" >&2; exit 1; } Prevention
- Verify the install's bin directory after installing tools that are known to rename binaries
- Reinstall on version bumps rather than reusing possibly-partial installs
When it happens
Trigger: Executing a shim whose name doesn't match any bin the installed tool version ships (e.g. a hand-created shim or renamed bin); tool version installed but broken/partial so its bin directory is empty.
Common situations: Custom shims created with `mise generate`/manually pointing at a nonexistent bin; tool upgraded and the old binary name dropped; corrupted install where the bin directory is empty.
Related errors
- Tool '{}' does not have an executable named '{}'. Available
- Tool '{}' not found
- cannot write Windows launcher because {} is not a generated
- cannot write Windows launcher because {} is not a regular fi
- Either --url or --platform-url must be specified
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/3c23b4d2373b039b.
Report an issue: GitHub.