tinyhumansai/openhuman · error
Missing 'message' parameter
Error message
Missing 'message' parameter
What it means
pushover's execute validates 'message' after the read-only and rate-limit gates pass; the value must be a string that trims to non-empty. This fires on missing, non-string, or whitespace-only message, before credentials are loaded.
Source
Thrown at src/openhuman/tools/impl/system/pushover.rs:146
// generating ghost approvals.
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
if !self.security.can_act() {
return Ok(ToolResult::error(
"[policy-blocked] Action blocked: autonomy is read-only",
));
}
if !self.security.record_action() {
return Ok(ToolResult::error("Action blocked: rate limit exceeded"));
}
let message = args
.get("message")
.and_then(|v| v.as_str())
.map(str::trim)
.filter(|v| !v.is_empty())
.ok_or_else(|| anyhow::anyhow!("Missing 'message' parameter"))?
.to_string();
let title = args.get("title").and_then(|v| v.as_str()).map(String::from);
let priority = match args.get("priority").and_then(|v| v.as_i64()) {
Some(value) if (-2..=2).contains(&value) => Some(value),
Some(value) => {
return Ok(ToolResult::error(format!(
"Invalid 'priority': {value}. Expected integer in range -2..=2"
)))
}
None => None,
};
let sound = args.get("sound").and_then(|v| v.as_str()).map(String::from);
let (token, user_key) = self.get_credentials().await?;
View on GitHub (pinned to 7491200858)
Solutions
- Include a non-empty "message" string in the notification arguments
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/tools/impl/system/pushover.rs:146 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/09492fffd7815583.
Report an issue: GitHub.