{"record":{"id":"7493c2e1e32692a7","repo":"jdx/mise","slug":"tool-not-found-in-registry","errorCode":null,"errorMessage":"tool {} not found in registry","messagePattern":"tool (.+?) not found in registry","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/search.rs","lineNumber":117,"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) -> Result<()> {\n        let tools = self\n            .get_matches()\n            .into_iter()\n            .map(|(short, description)| vec![short, description])\n            .collect_vec();\n        if tools.is_empty() {\n            bail!(\"tool {} not found in registry\", self.name.as_ref().unwrap());\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) -> 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 = self\n            .get_tools()\n            .iter()\n            .filter_map(|(short, rt)| {\n                if name.is_empty() {","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/cli/search.rs#L99-L135","documentation":"`mise search <name>` matches registry tools against the query and displays them as a table. When no registry entry matches the given name, `display_table` bails with this error before rendering. It only searches mise's curated registry — it does not search GitHub or package registries.","triggerScenarios":"Running `mise search <name>` where no registry shorthand or description matches; misspelled tool names; searching for tools not present in the curated registry.","commonSituations":"Looking for niche or internal tools that are not in the registry; typos in the search term; expecting search to cover aqua/GitHub catalogs.","solutions":["Retry with a shorter or corrected search term (search matches substrings of shorthands and descriptions)","List everything with `mise search` (empty/short term) or browse `mise registry`","Install unregistered tools directly with backend syntax: `mise use aqua:owner/repo`, `mise use github:owner/repo`"],"exampleFix":"// before\nmise search nodejsxyz  # tool nodejsxyz not found in registry\n// after\nmise search node   # lists node, nodejs-style entries","handlingStrategy":"fallback","validationCode":"const hits = child_process.execSync(`mise search ${q}`).toString().trim();\nif (!hits) console.warn(`No registry match for \"${q}\"; falling back to explicit backend install`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Search with short, root-word terms (e.g. \"node\" not \"nodejs-runtime\")","Treat the registry as curated: fall back to aqua:/github: backend syntax when search is empty","Browse the full `mise registry` list when unsure of naming"],"tags":["cli","search","registry"],"backgroundTag":"empty-result-set","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}