zeroclaw-labs/zeroclaw · error · anyhow::Error

Open-skill markdown escapes repository root: {}

Error message

Open-skill markdown escapes repository root: {}

What it means

Error "Open-skill markdown escapes repository root: {}" thrown in zeroclaw-labs/zeroclaw.

Source

Thrown at crates/zeroclaw-runtime/src/skills/audit.rs:91

    Ok(report)
}

pub fn audit_open_skill_markdown(path: &Path, repo_root: &Path) -> Result<SkillAuditReport> {
    if !path.exists() {
        bail!(
            "Open-skill markdown not found: {}",
            path.display().to_string()
        );
    }
    let canonical_repo = repo_root
        .canonicalize()
        .with_context(|| format!("failed to canonicalize {}", repo_root.display().to_string()))?;
    let canonical_path = path
        .canonicalize()
        .with_context(|| format!("failed to canonicalize {}", path.display().to_string()))?;
    if !canonical_path.starts_with(&canonical_repo) {
        bail!(
            "Open-skill markdown escapes repository root: {}",
            path.display()
        );
    }

    let mut report = SkillAuditReport {
        files_scanned: 1,
        findings: Vec::new(),
        ..Default::default()
    };
    audit_markdown_file(&canonical_repo, &canonical_path, &mut report)?;
    Ok(report)
}

fn collect_paths_depth_first(root: &Path) -> Result<Vec<PathBuf>> {
    let mut stack = vec![root.to_path_buf()];
    let mut out = Vec::new();

View on GitHub (pinned to 88bb9c8533)

Solutions

  1. Remove path traversal from the skill path so it stays inside the repository root.

When it happens

Trigger: Thrown at crates/zeroclaw-runtime/src/skills/audit.rs:91 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23). Data as JSON: /api/errors/ced20d169f61d267. Report an issue: GitHub.