xai-org/grok-build · error

Plugin "{name}" not found. Run `grok plugin list` to see ins

Error message

Plugin "{name}" not found.
Run `grok plugin list` to see installed plugins.

What it means

`cmd_enable` looks the plugin up in the on-disk InstallRegistry; if `registry.find_plugin(name)` returns None, it bails with this message that includes a hint to run `grok plugin list`. Enabling requires the plugin to already be installed and registered; the command will not enable anything by name alone.

Source

Thrown at crates/codegen/xai-grok-pager/src/plugin_cmd.rs:605

            }
            RepoUpdateOutcome::Pinned { repo_key, ref_name } => {
                println!("{repo_key}: pinned to {ref_name}, skipping");
            }
            RepoUpdateOutcome::LiveLocal { repo_key } => {
                println!("{repo_key}: local symlink, already live");
            }
            RepoUpdateOutcome::Failed { repo_key, error } => {
                eprintln!("{repo_key}: update failed: {error}");
            }
        }
    }
    Ok(())
}

fn cmd_enable(name: &str) -> Result<()> {
    let registry = InstallRegistry::load();
    if registry.find_plugin(name).is_none() {
        bail!(
            "Plugin \"{name}\" not found.\n\
               Run `grok plugin list` to see installed plugins."
        );
    }
    if let Err(e) = xai_grok_shell::config::remove_disabled_plugin(name) {
        tracing::warn!("failed to remove from disabled list: {e}");
    }
    xai_grok_shell::config::add_enabled_plugin(name)
        .map_err(|e| anyhow::anyhow!("Failed to enable plugin: {e}"))?;
    println!("Enabled plugin: {name}");
    Ok(())
}

fn cmd_disable(name: &str) -> Result<()> {
    let registry = InstallRegistry::load();
    if registry.find_plugin(name).is_none() {
        bail!(
            "Plugin \"{name}\" not found.\n\

View on GitHub (pinned to bc7f02eddd)

Solutions

  1. Run grok plugin list to confirm the exact installed name, then retry
  2. Install the plugin first: grok plugin install ... before enabling
  3. Check the registry file exists and contains the entry if plugins were copied manually
  4. Reinstall the plugin to regenerate its registry entry

Example fix

// before
$ grok plugin enable widget
Error: Plugin "widget" not found.

// after
$ grok plugin install marketplace:official/widget --trust
$ grok plugin enable widget
Defensive patterns

Strategy: validation

Validate before calling

// check registry before enabling
fn can_enable(registry: &InstallRegistry, name: &str) -> Result<(), String> {
    if registry.find_plugin(name).is_none() {
        return Err(format!("plugin '{name}' is not installed; run grok plugin list"));
    }
    Ok(())
}

Type guard

fn is_installed(registry: &InstallRegistry, name: &str) -> bool {
    registry.find_plugin(name).is_some()
}

Try / catch

match result {
    Err(e) if e.to_string().contains("not found") => {
        eprintln!("Install the plugin first (grok plugin install ...), then enable.");
    }
    other => other?,
}

Prevention

When it happens

Trigger: `grok plugin enable <name>` where the name is absent from the install registry: never installed, typo'd, already uninstalled, or registry file stale/missing (e.g. plugins installed by hand or by another tool that doesn't write the registry).

Common situations: Fresh machine where the plugins directory was copied manually without the registry entry; registry reset by reinstalling the CLI; trying to enable a plugin from a marketplace that was never installed.

Related errors


AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31). Data as JSON: /api/errors/88bdb7d94fbbee40. Report an issue: GitHub.