jdx/mise · error

vfox plugin '{plugin_name}' exists but '{tool_name}' is not

Error message

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

What it means

mise parses a tool argument like `vfox:<plugin>/<tool>` and found the vfox plugin registered/installed, but the requested tool inside it could not be resolved — either the tool name is wrong for that plugin or the plugin is not fully installed. Thrown from `BackendArg::execute`'s plugin-type dispatch when the vfox plugin exists but tool resolution fails.

Source

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

        //         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 afd2eddd3a)

Solutions

  1. Run `mise plugins ls` and verify the vfox plugin is properly installed; reinstall with `mise plugin install <name>` if needed.
  2. Check the correct tool name the plugin exposes (e.g. via the plugin's repo README) and fix the tool segment after `vfox:<plugin>/`.
  3. Update the plugin (`mise plugin update <name>`) in case the tool list changed upstream.

Example fix

// before
mise exec vfox:nodejs/nodes -- node -v
// after
mise exec vfox:nodejs/node -- node -v
Defensive patterns

Strategy: validation

Validate before calling

mise plugins ls | grep -q '^<plugin> ' && mise ls-remote vfox:<plugin>/<tool> >/dev/null || echo 'tool not available'

Prevention

When it happens

Trigger: Running any command with an argument of the form `vfox:<plugin_name>/<tool_name>` where the plugin name matches an installed vfox plugin but `tool_name` is not one the plugin provides, or the plugin directory is incomplete/corrupted.

Common situations: Typos in the tool segment (e.g. `vfox:nodejs/nodes`), a plugin that was partially installed or whose metadata is stale, or referencing a tool a plugin stopped supporting after an update.

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@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/43249cc9c92b7934. Report an issue: GitHub.