jdx/mise · error
package plugin ' ' is not a tool backend
Error message
package plugin '{plugin_name}' is not a tool backend What it means
mise's BackendArg resolver found a plugin installed via a plugin manager but of type 'Package', which is a package-style plugin rather than a tool backend, so it cannot be used as a tool backend for the requested tool. This guard exists because package plugins do not expose tool-resolution APIs.
Solutions
- Use the actual tool/backend name instead of the package plugin name (check `mise plugins ls`).
- Install the tool via a supported backend (registry shorthand, aqua:, github:, cargo:, etc.).
- Remove or rename the package plugin so it does not shadow the tool name.
Example fix
// before mise use somepkg@1.2 # somepkg is a package plugin // after mise use aqua:owner/somepkg@1.2
Defensive patterns
Strategy: validation
Validate before calling
mise plugins ls | grep <plugin> # confirm it is a tool plugin, not a package plugin
Prevention
- Check `mise plugins ls` before referencing a plugin as a tool.
- Prefer registry backends over ad-hoc plugins for tools.
- Keep plugin names distinct from tool names.
When it happens
Trigger: Calling `mise x/install/use <tool>@<version>` (or anything that resolves a BackendArg) where <tool>'s name maps to an installed plugin whose PluginType is Package.
Common situations: A user installs a plugin that is a package (e.g. via a plugin manager) and then references it as a tool in mise.toml or on the CLI, e.g. `mise use myplugin@1.0`.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- asdf plugin ' ' exists but ' ' is not available or the…
- is not available
- package manager ' ' does not support pruning
- package plugin ' ' does not support uninstall; add…
- Plugin is not installed
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/5b7a89fc579413de.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/args/backend_arg.rs:342
// This could be due to the tool not being available or plugin not properly installed
match plugin_type {
PluginType::Asdf => {
bail!(
"asdf plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed"
);
}
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(", "),View on GitHub (pinned to 533346cc37)