{"record":{"id":"ebdf67ea0a218c54","repo":"jdx/mise","slug":"tool-not-found-in-registry-or-installed-backend-catalogs","errorCode":null,"errorMessage":"tool {} not found in registry or installed backend catalogs","messagePattern":"tool (.+?) not found in registry or installed backend catalogs","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/search.rs","lineNumber":128,"sourceCode":"            Err(err) => {\n                if err.kind() == std::io::ErrorKind::Interrupted {\n                    // user interrupted, exit gracefully\n                    Ok(())\n                } else {\n                    Err(eyre!(err))\n                }\n            }\n        }\n    }\n\n    fn display_table(&self, catalog: &[ToolCatalogEntry]) -> Result<()> {\n        let tools = self\n            .get_matches(catalog)\n            .into_iter()\n            .map(|(short, description)| vec![short, description])\n            .collect_vec();\n        if tools.is_empty() {\n            bail!(\n                \"tool {} not found in registry or installed backend catalogs\",\n                self.name.as_ref().unwrap()\n            );\n        }\n\n        let mut table = MiseTable::new(self.no_header, &[\"Tool\", \"Description\"]);\n        for row in tools {\n            table.add_row(row);\n        }\n        table.print()\n    }\n\n    fn get_matches(&self, catalog: &[ToolCatalogEntry]) -> Vec<(String, String)> {\n        let name = self.name.as_deref().unwrap_or(\"\");\n        let mut fuzzy_matcher = FuzzyMatcher::default();\n        let fuzzy_pattern = FuzzyPattern::new(&name.to_lowercase());\n        let mut matches = catalog\n            .iter()","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/search.rs#L110-L146","documentation":"`mise search <name>` looks up tools matching a name in the registry and in catalogs of installed backends. If `get_matches` returns no rows, display_table bails because there is nothing to render. It means no registry shorthand and no installed backend knows this tool name.","triggerScenarios":"Running `mise search` with a misspelled or unregistered tool name; the tool exists only via an explicit backend (e.g. aqua:owner/repo) and is not installed, so no catalog lists it; registry entry removed or renamed.","commonSituations":"Typos in tool names; searching for internal/company tools that were never added to the curated registry; tools installed under a different shorthand than searched.","solutions":["Check spelling and try a partial name","Run `mise registry` to list valid registry shorthands","Install via explicit backend syntax (mise use aqua:owner/repo or github:owner/repo) instead of relying on the registry","Add the tool to a custom registry file if it is used widely enough"],"exampleFix":"// before\nmise search mytool   # error: not found in registry\n// after\nmise use aqua:owner/mytool   # explicit backend, no registry shorthand needed","handlingStrategy":"validation","validationCode":"mise registry | grep -qw \"$tool\" && mise search \"$tool\" || echo \"not in registry; use mise use aqua:owner/$tool\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check `mise registry` before searching or scripting installs","Use explicit backend syntax (aqua:/github:/cargo:) for tools not in the registry"],"tags":["cli","registry","search"],"backgroundTag":"entity-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"}