tinyhumansai/openhuman · error
Host '{host}' is not in browser.allowed_domains
Error message
Host '{host}' is not in browser.allowed_domains What it means
Allowlist enforcement in BrowserOpenTool::validate_url. After https-only and configured-allowlist checks, the extracted host is matched against browser.allowed_domains (normalize_allowed_domains-applied); a host that matches no entry (including wildcard suffixes) is refused. It fires whenever the user opens a URL on a domain not explicitly allowlisted in config.toml — a deliberate security boundary, not a misconfiguration.
Source
Thrown at src/openhuman/tools/impl/browser/browser_open.rs:49
if !url.starts_with("https://") {
anyhow::bail!("Only https:// URLs are allowed");
}
if self.allowed_domains.is_empty() {
anyhow::bail!(
"Browser tool is enabled but no allowed_domains are configured. Add [browser].allowed_domains in config.toml"
);
}
let host = extract_host(url)?;
if is_private_or_local_host(&host) {
anyhow::bail!("Blocked local/private host: {host}");
}
if !host_matches_allowlist(&host, &self.allowed_domains) {
anyhow::bail!("Host '{host}' is not in browser.allowed_domains");
}
Ok(url.to_string())
}
}
#[async_trait]
impl Tool for BrowserOpenTool {
fn name(&self) -> &str {
"browser_open"
}
fn description(&self) -> &str {
"Open an approved HTTPS URL in Brave Browser. Security constraints: allowlist-only domains, no local/private hosts, no scraping."
}
fn parameters_schema(&self) -> serde_json::Value {
json!({View on GitHub (pinned to 7491200858)
Solutions
- Add the host (or wildcard pattern) to [browser].allowed_domains.
- Choose a URL on an already-allowed domain.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/tools/impl/browser/browser_open.rs:49 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/d2c8ea5fcd14e9e7.
Report an issue: GitHub.