tinyhumansai/openhuman · error

failed to spawn claude binary '{binary}': {source}

Error message

failed to spawn claude binary '{binary}': {source}

What it means

The Claude Agent SDK subprocess wrapper failed to spawn the claude CLI binary at the configured path — the OS-level exec failed (ENOENT if the binary is not installed/not on PATH, EACCES on permissions, etc.). The {source} is the underlying std::io::Error from the spawn call. This fires before any protocol exchange, so no inference request was made; the provider is simply unusable in this environment.

Source

Thrown at src/openhuman/inference/provider/claude_agent_sdk/subprocess.rs:57

        "-p".to_string(),
        "--model".to_string(),
        model.to_string(),
        "--output-format".to_string(),
        "stream-json".to_string(),
        "--no-color".to_string(),
    ];
    if let Some(budget) = max_budget_usd {
        args.push("--max-turns".to_string());
        args.push("10".to_string());
        args.push("--budget".to_string());
        args.push(format!("{budget:.4}"));
    }
    ClaudeInvocation { args, stdin }
}

fn spawn_error(binary: &str, source: std::io::Error) -> anyhow::Error {
    let message = format!("failed to spawn claude binary '{binary}': {source}");
    anyhow::Error::new(source).context(message)
}

impl ClaudeAgentSdkProvider {
    pub fn new(config: ClaudeAgentSdkConfig) -> Self {
        let model = config.default_model.clone();
        Self::for_model(config, model)
    }

    pub fn for_model(config: ClaudeAgentSdkConfig, model: impl Into<String>) -> Self {
        Self {
            config,
            profile: ModelProfile {
                provider: Some("claude-agent-sdk".to_string()),
                model: Some(model.into()),
                ..Default::default()
            },
        }
    }

View on GitHub (pinned to 7491200858)

Solutions

  1. Verify the claude binary is installed and the configured path resolves (which claude)
  2. Install the Claude Agent SDK CLI or fix the binary path in provider configuration
  3. Ensure the binary is executable by the user running the core (chmod +x)
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/openhuman/inference/provider/claude_agent_sdk/subprocess.rs:57 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/d8e07051a52ba85f. Report an issue: GitHub.