tinyhumansai/openhuman · error · anyhow::Error

read_workflow_resource: {e}

Error message

read_workflow_resource: {e}

What it means

Reading a workflow resource file failed inside `read_workflow_resource`. The id and allowlist checks passed; the failure is in the filesystem/resource read layer — missing resource file inside the skill bundle, permission denial, or path resolution against the profile skills root, with `{e}` carrying the underlying IO error.

Source

Thrown at src/openhuman/skills/tools.rs:325

        log::debug!("[tool][workflows] read_resource invoked");
        let skill_id = read_workflow_id(&args)?;
        let profile_local = profile_local_skill_ids(self.profile_skills_root.as_deref());
        if !skill_allowed_including_profile(&self.skill_allowlist, &profile_local, &skill_id) {
            log::debug!(
                "[profiles] read_workflow_resource blocked by profile allowlist: {skill_id}"
            );
            return Ok(ToolResult::error(format!(
                "read_workflow_resource: workflow `{skill_id}` is not available to the active agent profile"
            )));
        }
        let relative_path = read_required_str(&args, "relative_path")?;
        let content = read_workflow_resource_with_profile(
            &self.workspace_dir,
            &skill_id,
            Path::new(&relative_path),
            self.profile_skills_root.as_deref(),
        )
        .map_err(|e| anyhow::anyhow!("read_workflow_resource: {e}"))?;
        Ok(ToolResult::success(serde_json::to_string(&json!({
            "workflow_id": skill_id,
            "relative_path": relative_path,
            "content": content,
        }))?))
    }

    fn is_concurrency_safe(&self, _args: &serde_json::Value) -> bool {
        true
    }
}

/// List recent skill runs.
pub struct WorkflowRecentRunsTool {
    workspace_dir: PathBuf,
    active_profile_id: Option<String>,
    skill_allowlist: SkillAllowlist,
    profile_skills_root: Option<PathBuf>,

View on GitHub (pinned to 7491200858)

Solutions

  1. Check `{e}` for the IO cause (missing vs permission)
  2. Verify the resource path exists inside the installed workflow bundle
  3. Reinstall the skill if its bundle is incomplete
  4. Confirm the profile skills root is readable
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at src/openhuman/skills/tools.rs:325 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/9d44528c0a988bc2. Report an issue: GitHub.