jdx/mise · error
Tool ' ' does not have an executable named
Error message
Tool '{}' does not have an executable named '{}' What it means
Tool stub execution resolved the tool successfully but the requested executable name was not among its exposed bins and the tool provides no other executables to suggest. The bail text includes the tool name and the missing executable; usually a bin-name mismatch after an install or rename.
Solutions
- List the tool's exposed binaries: `mise exec <tool> -- ls $(mise where <tool>)/bin` or check the package docs
- Correct the executable name in the command
- Check bin-paths configuration if custom bin paths were expected to expose the binary
Example fix
// before mise x node@22 -- npn -v // after mise x node@22 -- npx -v
Defensive patterns
Strategy: validation
Validate before calling
const dir = exec('mise where '+tool).trim();
const bins = exec(`ls ${dir}/bin`).split('\n');
if (!bins.includes(bin)) throw new Error(`${tool} has no bin ${bin}; have: ${bins}`); Type guard
const toolHasBin = (bin: string, bins: string[]) => bins.includes(bin);
Try / catch
try { exec(`mise x ${tool} -- ${bin}`); } catch (e) { if (/does not have an executable/.test(String(e))) console.error('check bin name with mise exec <tool> -- ls'); throw e; } Prevention
- Check package docs for shipped binary names before scripting
- Beware platform-dependent bin suffixes (python3 vs python)
- Inspect the install dir with `mise where <tool>` when unsure
When it happens
Trigger: `mise x node -- npn install` (typo), or calling a bin name the package genuinely does not ship, via `mise x`/`mise exec` against an installed tool.
Common situations: Typos in package-manager binary names (nodemon vs node-dev, pip3 vs pip); binaries exposed only under different names on some platforms; assuming a tool ships a CLI when it is a library.
Related errors
- Tool ' ' does not have an executable named ' '. Available…
- Tool ' ' not found
- bail!(msg) — dynamic message: uninstalled tool message from…
- cannot encode # as JSON
- no dotfiles matched target filter
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/3c23b4d2373b039b.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/tool_stub.rs:612
args,
env,
env_remove,
&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 533346cc37)