{"record":{"id":"827aedd26f497ea6","repo":"jdx/mise","slug":"plugin-name-is-not-a-valid-plugin-name","errorCode":null,"errorMessage":"{plugin_name} is not a valid plugin name","messagePattern":"(.+?) is not a valid plugin name","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/args/backend_arg.rs","lineNumber":347,"sourceCode":"                        );\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(\", \"),\n                    self.registry_version\n                        .as_ref()\n                        .map(|v| format!(\" for version {v}\"))\n                        .unwrap_or_default()\n                );","sourceCodeStart":329,"sourceCodeEnd":365,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/args/backend_arg.rs#L329-L365","documentation":"Thrown when the plugin name supplied to a BackendArg does not exist at all — mise looked up the plugin and found nothing, so the name is not a valid plugin name. It is a name-resolution failure for plugin-managed tools.","triggerScenarios":"Running a tool command (e.g. `mise x <name>@<ver> -- cmd`) where <name> matches no installed plugin and no known plugin name.","commonSituations":"Typo in a plugin name in .tool-versions or mise.toml; referencing a plugin that was never installed or was removed.","solutions":["Run `mise plugins ls-remote` to list valid plugin names and correct the typo.","Install the plugin first (`mise plugin add <name>`).","Use a registry backend shorthand instead of a plugin name."],"exampleFix":"// before (mise.toml)\n[tools]\nnodejs = \"22\"   # no such plugin\n// after\n[tools]\nnode = \"22\"","handlingStrategy":"validation","validationCode":"mise plugins ls-remote | grep -x <name>  # verify the plugin name exists","typeGuard":null,"tryCatchPattern":"mise x <name>@<ver> -- cmd 2>&1 | grep 'not a valid plugin name' && mise plugin add <name>","preventionTips":["Verify plugin names with `mise plugins ls-remote`.","Use registry shorthands to avoid plugin-name spelling issues.","Pin tool names in mise.toml and validate configs with `mise ls`."],"tags":["cli","plugin","not-found"],"backgroundTag":"resource-not-found","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"}