tinyhumansai/openhuman · error · anyhow::Error

run_subagent(`{agent_id}`) failed: {e}

Error message

run_subagent(`{agent_id}`) failed: {e}

What it means

The triage escalation path wrapped a failed run_subagent turn: the sub-agent's harness run itself errored (model/provider failure, turn timeout, or harness error) after the definition lookup and parent context build succeeded. The prefix names the dispatch site; the underlying error is the harness's.

Source

Thrown at src/openhuman/agent/triage/escalation.rs:299

    // is initialised, so this lookup for the target definition is safe here.
    let registry = AgentDefinitionRegistry::global()
        .ok_or_else(|| anyhow!("AgentDefinitionRegistry not initialised"))?;
    let definition = registry
        .get(agent_id)
        .ok_or_else(|| anyhow!("agent definition `{agent_id}` not found in registry"))?;

    tracing::debug!(
        agent_id = %agent_id,
        model = %parent_ctx.model_name,
        tool_count = parent_ctx.all_tools.len(),
        "[triage::escalation] dispatching run_subagent with parent context"
    );

    let outcome = with_parent_context(parent_ctx, async {
        subagent_runner::run_subagent(definition, prompt, SubagentRunOptions::default()).await
    })
    .await
    .map_err(|e| anyhow!("run_subagent(`{agent_id}`) failed: {e}"))?;

    tracing::debug!(
        agent_id = %agent_id,
        elapsed_ms = outcome.elapsed.as_millis() as u64,
        iterations = outcome.iterations,
        output_chars = outcome.output.chars().count(),
        "[triage::escalation] run_subagent completed"
    );

    Ok(outcome.output)
}

/// Load the linked card from its board and hand it to the deterministic task
/// dispatcher (claim → autonomous run → write-back). Errors (card not found,
/// or claim rejected because another card is already in progress) propagate to
/// the caller, which treats them as benign skips.
async fn dispatch_linked_card(
    link: &TaskCardLink,

View on GitHub (pinned to 7491200858)

Solutions

  1. Inspect the wrapped error for the harness/model cause
  2. Verify the provider configured for the sub-agent is reachable
  3. Retry the turn; transient provider failures commonly resolve
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/openhuman/agent/triage/escalation.rs:299 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/45bfe98304d4e6d5. Report an issue: GitHub.