jdx/mise · error

tool not found in registry: {name}

Error message

tool not found in registry: {name}

What it means

The `mise registry` command looks up a tool shorthand (e.g. `node`, `golang`) in mise's built-in registry mapping shorthands to backends. When the requested name is not a known registry entry (and the tool was also not found as an installed/known tool), the command fails fast with this bail. It is a lookup failure, not an installation failure.

Source

Thrown at src/cli/registry.rs:96

    short: String,
    backends: Vec<String>,
    bins: Vec<String>,
    description: Option<String>,
    aliases: Vec<String>,
}

impl Registry {
    pub(crate) async fn run(self) -> Result<()> {
        if let Some(name) = &self.name {
            if let Some(rt) = REGISTRY.get(name.as_str()) {
                if self.json {
                    let tool = to_output(self.output_args(name, rt), self.security).await;
                    miseprintln!("{}", serde_json::to_string_pretty(&tool)?);
                } else {
                    miseprintln!("{}", self.filter_backends(rt).join(" "));
                }
            } else {
                bail!("tool not found in registry: {name}");
            }
        } else if self.complete {
            self.complete()?;
        } else if self.json {
            self.display_json().await?;
        } else {
            self.display_table()?;
        }
        Ok(())
    }

    fn filter_backends(&self, rt: &RegistryTool) -> Vec<&'static str> {
        if let Some(backend) = &self.backend {
            rt.backends()
                .into_iter()
                .filter(|full| full.starts_with(&format!("{backend}:")))
                .collect()
        } else {

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Check the exact registry shorthand with `mise registry` (lists all entries) and correct the name
  2. Use `mise search <name>` to find the closest registered tool
  3. Install without the registry using explicit backend syntax: `mise use github:owner/repo`, `mise use cargo:name`, `mise use aqua:owner/repo`, etc.
  4. If the tool is genuinely widely used, consider submitting a registry entry (note: high popularity bar, thousands of stars required)

Example fix

// before
mise registry mycompanytool   # tool not found in registry: mycompanytool
// after
mise use github:myorg/mycompanytool   # or pick a registered shorthand from `mise registry`
Defensive patterns

Strategy: validation

Validate before calling

const registered = JSON.parse(child_process.execSync('mise registry --json').toString());
if (!registered.some(t => t.name === toolName)) {
  throw new Error(`${toolName} has no registry shorthand; use explicit backend syntax`);
}

Prevention

When it happens

Trigger: Running `mise registry <name>` (or `mise registry --complete`-adjacent lookups) where `<name>` is misspelled, uses an unsupported alias, or refers to a tool that must be installed via explicit backend syntax (e.g. `cargo:foo`) instead of a registry shorthand.

Common situations: Typos in tool names; tools removed or renamed in the registry; internal/company tools that were never added to the curated registry; expecting `mise registry` to know about arbitrary GitHub repos it does not map.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/0b501f14473d5ce4. Report an issue: GitHub.