Hmbown/CodeWhale · error · anyhow::Error

only CodeWhale managed skills can be updated

Error message

only CodeWhale managed skills can be updated

What it means

Raised in update_skill when the skill's source_kind is not CodeWhaleManaged. The update path syncs skills that CodeWhale itself manages (installed/upgraded through its own machinery); externally sourced or user-provided skills are intentionally outside its update lifecycle.

Source

Thrown at crates/tui/src/skills/mutation.rs:867

                continue;
            }
            fs::copy(&path, &target)?;
        }
    }
    Ok(())
}

async fn update_skill(
    skill_id: AuditedSkillId,
    expected_digest: Option<String>,
    ctx: &MutationContext<'_>,
) -> Result<SkillMutationReceipt> {
    let (skill, path) = find_audited_skill(ctx, &skill_id)?;
    if !skill.root.is_writable_owned() {
        bail!("refusing to update skill outside CodeWhale-owned roots");
    }
    if skill.source_kind != SkillSourceKind::CodeWhaleManaged {
        bail!("only CodeWhale managed skills can be updated");
    }
    let skills_dir = validate_owned_skill_path(ctx, &skill, &path)?;
    // Imported skills carry `import:…` provenance and must not hit the registry.
    ensure_remote_updatable(&path)?;
    let before = verify_expected_digest(&path, expected_digest.as_deref())?;
    let scope = match skill.root.kind {
        SkillRootKind::CodeWhaleProject => SkillScope::Project,
        SkillRootKind::CodeWhaleGlobal => SkillScope::Global,
        _ => SkillScope::Logical,
    };

    let package_name = on_disk_package_name(&skill_id)?;
    validate_owned_skill_path(ctx, &skill, &path)?;
    let outcome = install::update_with_registry(
        package_name,
        &skills_dir,
        ctx.max_size,
        ctx.network,

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Update the skill through its original distribution channel instead
  2. Import an updated compatible external package to replace it
  3. Verify you referenced the intended AuditedSkillId; managed and external copies can share a canonical name
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/tui/src/skills/mutation.rs:867 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/4401d18c80aedabb. Report an issue: GitHub.