{"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":334,"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.short.as_str())\n                && rt.backends().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(\", \")\n                );\n            }","sourceCodeStart":316,"sourceCodeEnd":352,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/cli/args/backend_arg.rs#L316-L352","documentation":"Bailed from BackendArg::backend() (src/cli/args/backend_arg.rs:334) when a 'plugin:tool' spec resolves through install state to PluginType::Package. Package plugins contribute tasks/bins to mise; they do not implement the tool-version backend interface, so mise refuses to treat one as a source of installable tool versions.","triggerScenarios":"mise use/install/upgrade with a spec like 'pkg-plugin:name' or 'pkg-plugin:name@version' where install_state::get_plugin_type() returns Package - the name was installed as a package plugin, not an asdf/vfox tool plugin.","commonSituations":"Installing a mise package for its tasks and then trying to 'mise use' a tool from it; assuming every installed plugin provides versions; names colliding between a package plugin and a real backend.","solutions":["Request the tool from a real backend instead: 'mise use aqua:owner/repo', 'github:owner/repo', 'npm:<pkg>', 'cargo:<crate>'","Check what the plugin actually provides: 'mise plugin ls' plus the plugin's README (tasks, bins)","If a tool of that name should exist, look it up: 'mise registry <name>' and use the listed backend"],"exampleFix":"# before\nmise use my-pkg:cli@1.0   # my-pkg is a package plugin\n# Error: package plugin 'my-pkg' is not a tool backend\n\n# after\nmise use aqua:owner/cli@1.0","handlingStrategy":"validation","validationCode":"# bash: only known backends may appear before ':' in a tool spec\nif [[ \"$SPEC\" == *:* ]]; then\n  prefix=\"${SPEC%%:*}\"\n  case \"$prefix\" in\n    aqua|github|gitlab|npm|pipx|gem|cargo|go|dotnet|conda|asdf|vfox) ;;\n    *) echo \"'$prefix' is not a backend; package plugins cannot install tools\" >&2; exit 1 ;;\n  esac\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep tool backends and package plugins in separate scripts/namespaces","Check what a plugin provides ('mise plugin ls' + its README) before scripting plugin:tool","Default to aqua:/github: for binary installs"],"tags":["mise","package-plugin","backend-resolution","plugin"],"backgroundTag":"unsupported-backend-type","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}