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
- Run grok plugin list to confirm the exact installed name, then retry
- Install the plugin first: grok plugin install ... before enabling
- Check the registry file exists and contains the entry if plugins were copied manually
- 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
- Always install before enabling in setup scripts
- Use names copied from grok plugin list
- Don't hand-copy plugin dirs without registering them
- Verify registry state after CLI reinstalls
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
- session '{name}' not found
- Session does not exist: {}
- Session does not exist
- Marketplace source "{filter}" not found.
- worktree not found: {id_or_path}
AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31).
Data as JSON: /api/errors/88bdb7d94fbbee40.
Report an issue: GitHub.