{"record":{"id":"3e7b3cac8310f7bb","repo":"tinyhumansai/openhuman","slug":"browser-computer-use-endpoint-must-use-https-wh","errorCode":null,"errorMessage":"browser.computer_use.endpoint must use https:// when allow_remote_endpoint=true and host is public","messagePattern":"browser\\.computer_use\\.endpoint must use https:// when allow_remote_endpoint=true and host is public","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/browser.rs","lineNumber":184,"sourceCode":"\n        let scheme = parsed.scheme();\n        if scheme != \"http\" && scheme != \"https\" {\n            anyhow::bail!(\"browser.computer_use.endpoint must use http:// or https://\");\n        }\n\n        let host = parsed\n            .host_str()\n            .ok_or_else(|| anyhow::anyhow!(\"browser.computer_use.endpoint must include host\"))?;\n\n        let host_is_private = is_private_host(host);\n        if !self.computer_use.allow_remote_endpoint && !host_is_private {\n            anyhow::bail!(\n                \"browser.computer_use.endpoint host '{host}' is public. Set browser.computer_use.allow_remote_endpoint=true to allow it\"\n            );\n        }\n\n        if self.computer_use.allow_remote_endpoint && !host_is_private && scheme != \"https\" {\n            anyhow::bail!(\n                \"browser.computer_use.endpoint must use https:// when allow_remote_endpoint=true and host is public\"\n            );\n        }\n\n        Ok(parsed)\n    }\n\n    fn computer_use_available(&self) -> anyhow::Result<bool> {\n        let endpoint = self.computer_use_endpoint_url()?;\n        Ok(endpoint_reachable(&endpoint, Duration::from_millis(500)))\n    }\n\n    async fn resolve_backend(&self) -> anyhow::Result<ResolvedBackend> {\n        let configured = self.configured_backend()?;\n\n        match configured {\n            BrowserBackendKind::AgentBrowser => {\n                if Self::is_agent_browser_available().await {","sourceCodeStart":166,"sourceCodeEnd":202,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/browser.rs#L166-L202","documentation":"computer_use_endpoint_url requires https:// for a public host even when allow_remote_endpoint=true. Plain HTTP to a public sidecar would expose browser-session traffic in cleartext across the network, so the config is rejected as insecure.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/browser.rs:184 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Serve the remote sidecar over TLS and use an https:// endpoint.","Switch to a local/private endpoint if TLS is not available."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}