Hmbown/CodeWhale · error · anyhow::Error

skill '{name}' has unknown package digest; refusing mutation

Error message

skill '{name}' has unknown package digest; refusing mutation

What it means

resolve_owned_skill_by_name found exactly one matching owned skill, but its DigestState is Unknown — the on-disk package could not be hashed to a known digest. Mutations require a verified digest so content can be checked against the audit; without it the operation could act on unverified or corrupted content. The undigestable/unknown-digest skill package is the input at fault.

Source

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

                ctx.home,
                ctx.configured_skills_dir,
                SkillAuditMode::Compatible,
                None,
            );
            if compatible.skills.iter().any(|s| {
                s.id.canonical_name == canonical
                    && s.source_kind == SkillSourceKind::CompatibleExternal
            }) {
                bail!(
                    "skill '{name}' exists only in a compatible external root; \
                     import it with /skills (refusing to write external harness directories)"
                );
            }
            bail!("skill '{name}' not found in CodeWhale-owned project/global roots");
        }
        [only] => {
            let DigestState::Known(digest) = &only.digest else {
                bail!("skill '{name}' has unknown package digest; refusing mutation");
            };
            Ok(ResolvedOwnedSkill {
                id: only.id.clone(),
                digest: digest.clone(),
            })
        }
        _ => bail!(
            "skill '{name}' exists in both project and global CodeWhale roots; \
             specify --project or --global"
        ),
    }
}

fn find_audited_skill(
    ctx: &MutationContext<'_>,
    skill_id: &AuditedSkillId,
) -> Result<(AuditedSkill, PathBuf)> {
    let snap = scan_with_configured(

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Re-run the skills scan so the package digest is recomputed and cached
  2. Inspect the skill directory for corruption or unreadable files blocking digest computation
  3. Reinstall the skill to restore a well-formed package
Defensive patterns

Strategy: validation

When it happens

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