Hmbown/CodeWhale · error

only user-scope bundles installed via /plugin install can be

Error message

only user-scope bundles installed via /plugin install can be updated; `{selector}` is a {} bundle

What it means

update_plugin scope guard: mutation via this surface is restricted to user-scope bundles originally installed through /plugin install; the selected bundle belongs to another scope (built-in, workspace, etc. — shown in the placeholder). Those are managed in their own roots, so update is refused here.

Source

Thrown at crates/tui/src/plugins/mutation.rs:171

            installed_content_hash: Some(installed.installed_content_hash),
            outcome: PluginMutationOutcome::Installed,
        },
        PluginInstallOutcome::NeedsApproval(host) => blocked(host, true),
        PluginInstallOutcome::NetworkDenied(host) => blocked(host, false),
    })
}

async fn update_plugin(
    selector: &str,
    ctx: &PluginMutationContext<'_>,
    registry: &mut PluginRegistry,
) -> Result<PluginMutationReceipt> {
    let plugin = registry
        .get(selector)
        .with_context(|| format!("Plugin bundle `{selector}` was not found"))?
        .clone();
    if plugin.scope != PluginScope::User {
        bail!(
            "only user-scope bundles installed via /plugin install can be updated; \
             `{selector}` is a {} bundle",
            plugin.scope.as_str()
        );
    }
    let plugins_dir = user_plugins_dir(registry)?;
    let outcome = install::update(plugin.name(), &plugins_dir, ctx.max_size, ctx.network).await?;
    Ok(match outcome {
        PluginUpdateResult::NoChange => PluginMutationReceipt {
            name: plugin.name().to_string(),
            path: None,
            content_hash: None,
            installed_content_hash: None,
            outcome: PluginMutationOutcome::NoChange,
        },
        PluginUpdateResult::Updated(installed) => PluginMutationReceipt {
            name: installed.name,
            path: Some(installed.path),

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Update the bundle in its own root/scope
  2. Or install a user-scope copy via /plugin install and update that
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at crates/tui/src/plugins/mutation.rs:171 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/d86fc6814309570a. Report an issue: GitHub.