{"record":{"id":"60e150bb0f41d8e6","repo":"zeroclaw-labs/zeroclaw","slug":"blocked-local-private-host-host","errorCode":null,"errorMessage":"Blocked local/private host: {host}","messagePattern":"Blocked local/private host: (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-tools/src/browser.rs","lineNumber":485,"sourceCode":"        }\n\n        let host_str = parsed\n            .host_str()\n            .ok_or_else(|| anyhow::Error::msg(\"URL must include a host\"))?;\n\n        let is_ipv6 = host_str.parse::<std::net::Ipv6Addr>().is_ok();\n        let host = if is_ipv6 {\n            format!(\"[{host_str}]\")\n        } else {\n            host_str.to_lowercase()\n        };\n\n        let private_host = domain_guard::is_private_or_local_host(&host);\n        let private_host_allowed = private_host\n            && domain_guard::host_matches_allowlist(&host, &self.allowed_private_hosts);\n\n        if private_host && !private_host_allowed {\n            anyhow::bail!(\"Blocked local/private host: {host}\");\n        }\n\n        if private_host_allowed {\n            return Ok(());\n        }\n\n        if !domain_guard::host_matches_allowlist(&host, &self.allowed_domains) {\n            anyhow::bail!(\"Host '{host}' not in browser.allowed_domains\");\n        }\n\n        Ok(())\n    }\n\n    /// Execute an agent-browser command\n    async fn run_command(&self, args: &[&str]) -> anyhow::Result<AgentBrowserResponse> {\n        let mut cmd = self.agent_browser_command();\n\n        // Add --json for machine-readable output","sourceCodeStart":467,"sourceCodeEnd":503,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-tools/src/browser.rs#L467-L503","documentation":"Error \"Blocked local/private host: {host}\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-tools/src/browser.rs:485 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not browse local/private hosts, or explicitly allowlist the host if intended."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}