jdx/mise · error
is not a valid plugin name
Error message
{plugin_name} is not a valid plugin name What it means
Thrown when the plugin name supplied to a BackendArg does not exist at all — mise looked up the plugin and found nothing, so the name is not a valid plugin name. It is a name-resolution failure for plugin-managed tools.
Solutions
- Run `mise plugins ls-remote` to list valid plugin names and correct the typo.
- Install the plugin first (`mise plugin add <name>`).
- Use a registry backend shorthand instead of a plugin name.
Example fix
// before (mise.toml) [tools] nodejs = "22" # no such plugin // after [tools] node = "22"
Defensive patterns
Strategy: validation
Validate before calling
mise plugins ls-remote | grep -x <name> # verify the plugin name exists
Try / catch
mise x <name>@<ver> -- cmd 2>&1 | grep 'not a valid plugin name' && mise plugin add <name>
Prevention
- Verify plugin names with `mise plugins ls-remote`.
- Use registry shorthands to avoid plugin-name spelling issues.
- Pin tool names in mise.toml and validate configs with `mise ls`.
When it happens
Trigger: Running a tool command (e.g. `mise x <name>@<ver> -- cmd`) where <name> matches no installed plugin and no known plugin name.
Common situations: Typo in a plugin name in .tool-versions or mise.toml; referencing a plugin that was never installed or was removed.
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
- is not available
- no dotfiles matched target filter
- no history checkpoint matches
- no matching interrupted operation; `mise bootstrap dotfiles…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/827aedd26f497ea6.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/args/backend_arg.rs:347
);
}
PluginType::Vfox => {
bail!(
"vfox plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed"
);
}
PluginType::VfoxBackend => {
bail!(
"vfox-backend plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed"
);
}
PluginType::Package => {
bail!("package plugin '{plugin_name}' is not a tool backend");
}
}
} else {
// Plugin doesn't exist
bail!("{plugin_name} is not a valid plugin name");
}
} else {
// Check if the tool is in the registry but has no available backends
if let Some(rt) = REGISTRY.get(self.registry_short().as_str())
&& rt
.backends_for_version(self.registry_version.as_deref())
.is_empty()
&& !rt.backends.is_empty()
{
let all_backends: Vec<&str> = rt.backends.iter().map(|rb| rb.full).collect();
bail!(
"{self} is in the mise tool registry but none of its backends ({}) are supported in the current configuration{}",
all_backends.join(", "),
self.registry_version
.as_ref()
.map(|v| format!(" for version {v}"))
.unwrap_or_default()
);View on GitHub (pinned to 533346cc37)