tinyhumansai/openhuman · error
'scope' must be a string
Error message
'scope' must be a string
What it means
handle_set reads the optional 'scope' field; this fires when scope is present but not a string (number/array/object), before the value is matched against the allowed scopes.
Source
Thrown at src/openhuman/tools/impl/system/proxy_config.rs:172
}))?))
}
async fn handle_set(&self, args: &Value) -> anyhow::Result<ToolResult> {
let mut cfg = self.load_config_without_env()?;
let previous_scope = cfg.proxy.scope;
let mut proxy = cfg.proxy.clone();
let mut touched_proxy_url = false;
if let Some(enabled) = args.get("enabled") {
proxy.enabled = enabled
.as_bool()
.ok_or_else(|| anyhow::anyhow!("'enabled' must be a boolean"))?;
}
if let Some(scope_raw) = args.get("scope") {
let scope = scope_raw
.as_str()
.ok_or_else(|| anyhow::anyhow!("'scope' must be a string"))?;
proxy.scope = Self::parse_scope(scope).ok_or_else(|| {
anyhow::anyhow!("Invalid scope '{scope}'. Use environment|openhuman|services")
})?;
}
match Self::parse_optional_string_update(args, "http_proxy")? {
MaybeSet::Set(update) => {
proxy.http_proxy = Some(update);
touched_proxy_url = true;
}
MaybeSet::Null => {
proxy.http_proxy = None;
touched_proxy_url = true;
}
MaybeSet::Unset => {}
}
match Self::parse_optional_string_update(args, "https_proxy")? {View on GitHub (pinned to 7491200858)
Solutions
- Pass "scope" as a string, one of environment|openhuman|services
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/tools/impl/system/proxy_config.rs:172 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/477112d12d3fcb11.
Report an issue: GitHub.