{"record":{"id":"5b7a89fc579413de","repo":"jdx/mise","slug":"package-plugin-plugin-name-is-not-a-tool-backe","errorCode":null,"errorMessage":"package plugin '{plugin_name}' is not a tool backend","messagePattern":"package plugin '(.+?)' is not a tool backend","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/args/backend_arg.rs","lineNumber":342,"sourceCode":"                // This could be due to the tool not being available or plugin not properly installed\n                match plugin_type {\n                    PluginType::Asdf => {\n                        bail!(\n                            \"asdf plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed\"\n                        );\n                    }\n                    PluginType::Vfox => {\n                        bail!(\n                            \"vfox plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed\"\n                        );\n                    }\n                    PluginType::VfoxBackend => {\n                        bail!(\n                            \"vfox-backend plugin '{plugin_name}' exists but '{tool_name}' is not available or the plugin is not properly installed\"\n                        );\n                    }\n                    PluginType::Package => {\n                        bail!(\"package plugin '{plugin_name}' is not a tool backend\");\n                    }\n                }\n            } else {\n                // Plugin doesn't exist\n                bail!(\"{plugin_name} is not a valid plugin name\");\n            }\n        } else {\n            // Check if the tool is in the registry but has no available backends\n            if let Some(rt) = REGISTRY.get(self.registry_short().as_str())\n                && rt\n                    .backends_for_version(self.registry_version.as_deref())\n                    .is_empty()\n                && !rt.backends.is_empty()\n            {\n                let all_backends: Vec<&str> = rt.backends.iter().map(|rb| rb.full).collect();\n                bail!(\n                    \"{self} is in the mise tool registry but none of its backends ({}) are supported in the current configuration{}\",\n                    all_backends.join(\", \"),","sourceCodeStart":324,"sourceCodeEnd":360,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/args/backend_arg.rs#L324-L360","documentation":"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.","triggerScenarios":"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.","commonSituations":"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`.","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."],"exampleFix":"// before\nmise use somepkg@1.2   # somepkg is a package plugin\n// after\nmise use aqua:owner/somepkg@1.2","handlingStrategy":"validation","validationCode":"mise plugins ls | grep <plugin>  # confirm it is a tool plugin, not a package plugin","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["cli","backend","plugin"],"backgroundTag":"unsupported-operation","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}