jdx/mise · error

vfox plugin ' ' exists but ' ' is not available or the…

Error message

vfox plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed

What it means

Same diagnostic as the asdf variant but for vfox plugins: the plugin is registered as PluginType::Vfox, yet backend construction failed because the tool is unavailable or the plugin is broken/incomplete. vfox plugins are Lua-based, so a missing/broken plugin script commonly triggers this.

Solutions

  1. Reinstall the vfox plugin: mise plugin remove <name> && mise plugin add vfox:<name>
  2. Check the plugin directory contains required Lua files (manifest.lua, hooks) and is readable
  3. Verify the plugin exposes the tool name you requested
  4. Run mise doctor and check vfox plugin logs

Example fix

# before (incomplete vfox plugin)
mise use vfox:myplugin@1.0
# after
mise plugin remove myplugin
mise plugin add vfox:myplugin
mise use myplugin@1.0
Defensive patterns

Strategy: validation

Validate before calling

import os
pt = get_plugin_type(plugin)
if pt == 'vfox':
    assert (plugin_dir / 'manifest.lua').exists(), f'vfox plugin {plugin} incomplete'

Try / catch

match backend {
    Err(e) if e.to_string().contains("vfox plugin") =>
        reinstall_vfox_plugin(plugin),
    r => r,
}

Prevention

When it happens

Trigger: BackendArg::backend() resolves plugin_type to PluginType::Vfox but creating the vfox backend for tool_name fails — e.g. plugin directory lacks required Lua hooks or the plugin cannot list the requested tool.

Common situations: vfox plugin partially downloaded (missing manifest.lua/hooks.lua); tool name typo relative to what the plugin registers; corrupted plugin cache after an interrupted install.

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


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/43249cc9c92b7934. Report an issue: GitHub.

Appendix: source

Thrown at src/cli/args/backend_arg.rs:332

        //         bail!("{self} not found in mise tool registry");
        //     }
        // })?;
        // Ok(backend.clone())
        if let Some(backend) = backend::get(self) {
            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

View on GitHub (pinned to 533346cc37)