{"record":{"id":"b704d8cc042e7788","repo":"jdx/mise","slug":"self-not-found-in-mise-tool-registry-did-you-mean","errorCode":null,"errorMessage":"{self} not found in mise tool registry\n\nDid you mean?","messagePattern":"(.+?) not found in mise tool registry\n\nDid you mean\\?","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/args/backend_arg.rs","lineNumber":390,"sourceCode":"                    .filter(|s| *s != self.short)\n                    .map(|s| s.to_string())\n                    .collect();\n\n            let mise_names: HashSet<String> = suggestions.iter().cloned().collect();\n            for aqua in crate::aqua::aqua_registry_wrapper::aqua_suggest(&self.short) {\n                if !mise_names.contains(&aqua.name) {\n                    suggestions.push(aqua.backend);\n                }\n            }\n\n            let mut msg = format!(\"{self} not found in mise tool registry\");\n            if !suggestions.is_empty() {\n                msg.push_str(\"\\n\\nDid you mean?\");\n                for s in suggestions.iter().take(5) {\n                    msg.push_str(&format!(\"\\n  {s}\"));\n                }\n            }\n            bail!(\"{msg}\");\n        }\n    }\n\n    pub(crate) fn backend_type(&self) -> BackendType {\n        // Check if this is a valid backend:tool format first\n        if let Some((backend_prefix, _tool_name)) = self.short.split_once(':')\n            && let Ok(backend_type) = backend_prefix.parse::<BackendType>()\n        {\n            return backend_type;\n        }\n\n        // Then check if this is a vfox plugin:tool format\n        // We cannot reliably determine backend type within install state so we check config first.\n        if let Some(backend_type) = plugin_backend_type(&self.short) {\n            return backend_type;\n        }\n\n        // Derive the backend type from the same resolved identifier used by","sourceCodeStart":372,"sourceCodeEnd":408,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/args/backend_arg.rs#L372-L408","documentation":"BackendArg parsing failed to resolve a short tool name (e.g. the `foo` in `mise use foo`) against mise's registry, so it builds an enhanced error listing close matches from both the mise registry and the aqua registry; the message is the header of that suggestion list.","triggerScenarios":"Any BackendArg resolution where the name (after stripping backend: prefixes) is absent from the registry and no backend:tool format matched — e.g. `mise x ndoe@22 -- ...`.","commonSituations":"Typos in tool names in mise.toml, .tool-versions, or CLI invocations; using an unofficial tool name that was never added to the registry.","solutions":["Use one of the suggested names printed after 'Did you mean?'.","Search the registry (`mise registry | grep <name>`) for the correct shorthand.","Install via explicit backend syntax instead of a registry shorthand (e.g. `mise use github:owner/repo`)."],"exampleFix":"// before\n[tools]\nripgrep-all = \"latest\"  # not in registry\n// after\n[tools]\nrga = \"latest\"","handlingStrategy":"validation","validationCode":"mise registry | grep -w <tool>","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `mise registry` to confirm the shorthand before adding a tool.","Read the 'Did you mean?' suggestions in the error output.","Use backend-explicit syntax (aqua:owner/repo) for tools not in the registry."],"tags":["cli","registry","typo"],"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"}