jdx/mise · error
not found in mise tool registry Did you mean?
Error message
{self} not found in mise tool registry
Did you mean? What it means
BackendArg parsing failed to resolve a short tool name (e.g. the `foo` in `mise use foo`) against mise's registry, so it builds an enhanced error listing close matches from both the mise registry and the aqua registry; the message is the header of that suggestion list.
Solutions
- Use one of the suggested names printed after 'Did you mean?'.
- Search the registry (`mise registry | grep <name>`) for the correct shorthand.
- Install via explicit backend syntax instead of a registry shorthand (e.g. `mise use github:owner/repo`).
Example fix
// before [tools] ripgrep-all = "latest" # not in registry // after [tools] rga = "latest"
Defensive patterns
Strategy: validation
Validate before calling
mise registry | grep -w <tool>
Prevention
- Run `mise registry` to confirm the shorthand before adding a tool.
- Read the 'Did you mean?' suggestions in the error output.
- Use backend-explicit syntax (aqua:owner/repo) for tools not in the registry.
When it happens
Trigger: Any BackendArg resolution where the name (after stripping backend: prefixes) is absent from the registry and no backend:tool format matched — e.g. `mise x ndoe@22 -- ...`.
Common situations: Typos in tool names in mise.toml, .tool-versions, or CLI invocations; using an unofficial tool name that was never added to the registry.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- cannot encode # as JSON
- {msg}
- no task found Did you mean one of these? - Did you mean the…
- pre_use hook is not implemented
- is in the mise tool registry but none of its backends ( )…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/b704d8cc042e7788.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/args/backend_arg.rs:390
.filter(|s| *s != self.short)
.map(|s| s.to_string())
.collect();
let mise_names: HashSet<String> = suggestions.iter().cloned().collect();
for aqua in crate::aqua::aqua_registry_wrapper::aqua_suggest(&self.short) {
if !mise_names.contains(&aqua.name) {
suggestions.push(aqua.backend);
}
}
let mut msg = format!("{self} not found in mise tool registry");
if !suggestions.is_empty() {
msg.push_str("\n\nDid you mean?");
for s in suggestions.iter().take(5) {
msg.push_str(&format!("\n {s}"));
}
}
bail!("{msg}");
}
}
pub(crate) fn backend_type(&self) -> BackendType {
// Check if this is a valid backend:tool format first
if let Some((backend_prefix, _tool_name)) = self.short.split_once(':')
&& let Ok(backend_type) = backend_prefix.parse::<BackendType>()
{
return backend_type;
}
// Then check if this is a vfox plugin:tool format
// We cannot reliably determine backend type within install state so we check config first.
if let Some(backend_type) = plugin_backend_type(&self.short) {
return backend_type;
}
// Derive the backend type from the same resolved identifier used byView on GitHub (pinned to 533346cc37)