tinyhumansai/openhuman · error

config load: {e}

Error message

config load: {e}

What it means

notify_user rejected its input: the 'message' argument was absent, not a string, or whitespace-only after trimming. This is the argument-validation guard for the outward-facing notification tool; nothing was sent to the user.

Source

Thrown at src/openhuman/subconscious/user_thread.rs:127

        PermissionLevel::Write
    }

    fn scope(&self) -> ToolScope {
        ToolScope::AgentOnly
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        let message = args
            .get("message")
            .and_then(|v| v.as_str())
            .map(str::trim)
            .filter(|s| !s.is_empty())
            .ok_or_else(|| anyhow::anyhow!("notify_user: `message` is required and non-empty"))?;
        let subject = args.get("subject").and_then(|v| v.as_str());

        let config = crate::openhuman::config::load_config_with_timeout()
            .await
            .map_err(|e| anyhow::anyhow!("config load: {e}"))?;

        notify_user(config.workspace_dir, message, subject);
        Ok(ToolResult::success(
            "Message delivered to the user.".to_string(),
        ))
    }
}

/// All user-facing-thread tools, for registration into the tool registry.
pub fn all_user_thread_tools() -> Vec<Box<dyn Tool>> {
    vec![Box::new(NotifyUserTool)]
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]

View on GitHub (pinned to 7491200858)

Solutions

  1. Pass a non-empty string in the 'message' argument
  2. Trimmed-only whitespace does not count as a message; provide real content
  3. Optionally add a 'subject' string as well
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/subconscious/user_thread.rs:127 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/fabb3eb1fea9950f. Report an issue: GitHub.