jdx/mise · error
{self} not found in mise tool registry
Error message
{self} not found in mise tool registry What it means
The terminal fallback of BackendArg::backend() (src/cli/args/backend_arg.rs:380): the name produced no backend, no plugin, and no registry entry. Before bailing, mise builds a 'Did you mean?' list from close registry shorts (similarity threshold 0.8) plus aqua registry suggestions, so the correction is usually printed with the error.
Source
Thrown at src/cli/args/backend_arg.rs:380
let mise_names: HashSet<String> = suggestions.iter().cloned().collect();
for aqua_id in crate::aqua::aqua_registry_wrapper::aqua_suggest(&self.short) {
// Skip aqua suggestions whose tool name matches an existing mise suggestion
let name = aqua_id
.rsplit_once('/')
.map_or(aqua_id.as_str(), |(_, n)| n);
if !mise_names.contains(name) {
suggestions.push(format!("aqua:{aqua_id}"));
}
}
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 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 9dcfcaa0dc)
Solutions
- Read the 'Did you mean?' block and re-run with the suggested short or 'aqua:owner/repo' form
- Spell the backend explicitly: 'mise use npm:<pkg>' / 'cargo:<crate>' / 'go:<module>' / 'github:owner/repo'
- Search the registry: 'mise registry | grep -i <fragment>'
- Update mise to pick up a larger bundled registry
Example fix
# before mise use nodee@20 # Error: nodee not found in mise tool registry # Did you mean? # node # after mise use node@20
Defensive patterns
Strategy: validation
Validate before calling
# bash: verify the short name exists in the registry before scripting it
mise registry 2>/dev/null | awk '{print $1}' | grep -qx "$TOOL" || { echo "unknown tool: $TOOL" >&2; exit 1; } Try / catch
# bash: fail loudly and show mise's own suggestions if ! mise use "$TOOL" 2>err.log; then sed -n '/Did you mean?/,$p' err.log exit 1 fi
Prevention
- Pin tools by explicit backend (aqua:owner/repo) in configs; registry shorts can change
- Update mise regularly so the bundled registry grows with new tools
- Run 'mise registry' when unsure of a name
When it happens
Trigger: 'mise use nodee@20' (typo); a bare internal/company tool name that only exists as a private repo; an npm/cargo package name used without its backend prefix; a registry short that was renamed between mise versions.
Common situations: Typos at the CLI; scripts assuming mise resolves every package name by default; offline installs with an old bundled registry; names copied from other managers (brew formula names, etc.).
Related errors
- {self} is in the mise tool registry but none of its backends
- fetching {url} failed: {}{hint} {}
- fetching blob {url} failed: {}
- fetching {manifest_url} failed: {}
- starting blob upload failed: {} {}{}
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/52696cbc061fe7f7.
Report an issue: GitHub.