jdx/mise · error
vfox-backend plugin ' ' exists but ' ' is not available or…
Error message
vfox-backend plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed What it means
Same family as errors 177/178 but for plugins registered as PluginType::VfoxBackend (vfox plugins wrapped as full backends). The plugin exists in install state, yet mise could not construct the backend for tool_name — the tool is not exposed by the plugin or the plugin installation is damaged.
Solutions
- Reinstall the plugin: mise plugin remove <name> then mise plugin add <name>
- Check the plugin registers the exact tool name requested
- Update the plugin to its latest version (mise plugin update <name>)
- Run mise doctor for a plugin health report
Example fix
# before mise use my-backend-tool@latest # plugin exists but tool not registered # after mise plugin update my-backend-tool mise ls-remote my-backend-tool # confirm the tool is listed mise use my-backend-tool@latest
Defensive patterns
Strategy: validation
Validate before calling
# confirm the plugin registers the tool
assert tool in registered_tools(plugin), f'{plugin} does not register {tool}' Try / catch
match backend {
Err(e) if e.to_string().contains("vfox-backend plugin") =>
update_and_verify_plugin(plugin),
r => r,
} Prevention
- Verify registration with ls-remote before pinning
- Keep plugins updated
- Avoid interrupting plugin installs
When it happens
Trigger: BackendArg::backend() sees PluginType::VfoxBackend for plugin_name and backend creation fails, e.g. the wrapped vfox-backend plugin does not register the requested tool or its metadata/scripts are missing.
Common situations: Requesting a tool name the vfox-backend plugin never registered; interrupted plugin install leaving partial files; version drift between the plugin and its vfox runtime.
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
- vfox plugin ' ' exists but ' ' is not available or the…
- asdf plugin ' ' exists but ' ' is not available or the…
- Impossible to find at least two unused byte codes in this…
- package plugin ' ' collides with a built-in package manager
- package plugin ' ' is not a tool backend
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/17f3040ccc9ba28a.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/args/backend_arg.rs:337
Ok(backend)
} else if let Some((plugin_name, tool_name)) = self.short.split_once(':') {
// Check if the plugin exists first
if let Some(plugin_type) = install_state::get_plugin_type(plugin_name) {
// Plugin exists, but the backend couldn't be created
// 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()View on GitHub (pinned to 533346cc37)