tinyhumansai/openhuman · error · anyhow::Error
missing required argument `entry_id`
Error message
missing required argument `entry_id`
What it means
The skill-registry install tool was called without a usable `entry_id` string — missing, non-string, or empty after trimming. The install flow needs the catalog entry id to look up and fetch the remote SKILL.md, so the guard fires before the approval gate or any fetch occurs.
Source
Thrown at src/openhuman/skills/catalog/tools.rs:184
fn permission_level(&self) -> PermissionLevel {
PermissionLevel::Write
}
/// Installing a skill mutates the user's local skill set and fetches a
/// remote `SKILL.md`, so it routes through the process-global
/// `ApprovalGate` (#3993). On an interactive chat turn the user sees an
/// inline approval card and approves before anything is written; on
/// background/cron turns (no `APPROVAL_CHAT_CONTEXT`) the gate is bypassed,
/// matching every other external-effect tool.
fn external_effect(&self) -> bool {
true
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
let entry_id = args
.get("entry_id")
.and_then(|v| v.as_str())
.ok_or_else(|| anyhow::anyhow!("missing required argument `entry_id`"))?;
tracing::debug!(entry_id = %entry_id, "[tool][skill_registry] install");
let catalog = ops::browse_catalog(false)
.await
.map_err(|e| anyhow::anyhow!("failed to load catalog: {e}"))?;
let entry = catalog.iter().find(|e| e.id == entry_id).ok_or_else(|| {
anyhow::anyhow!(
"skill '{entry_id}' not found in catalog. \
Run skill_registry_browse first to refresh."
)
})?;
match ops::install_from_catalog(&self.workspace_dir, entry).await {
Ok(outcome) => Ok(ToolResult::success(serde_json::to_string(&json!({
"url": outcome.url,
"stdout": outcome.stdout,View on GitHub (pinned to 7491200858)
Solutions
- Take the exact entry_id from a prior skill_registry_browse result
- Ensure it is passed as a JSON string
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/skills/catalog/tools.rs:184 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/2c3d1ad8da44839e.
Report an issue: GitHub.