{"record":{"id":"dc181d21b7063dae","repo":"tinyhumansai/openhuman","slug":"browser-backend-auto-needs-playwright-agent-bro-dc181d","errorCode":null,"errorMessage":"browser.backend='auto' needs Playwright, agent-browser tool, or computer-use sidecar","messagePattern":"browser\\.backend='auto' needs Playwright, agent-browser tool, or computer-use sidecar","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/browser.rs","lineNumber":275,"sourceCode":"\n                if Self::rust_native_compiled() {\n                    if let Some(err) = computer_use_err {\n                        anyhow::bail!(\n                            \"browser.backend='auto' found no usable backend (playwright missing, agent-browser missing, rust-native unavailable, computer-use invalid: {err})\"\n                        );\n                    }\n                    anyhow::bail!(\n                        \"browser.backend='auto' found no usable backend (playwright missing, agent-browser missing, rust-native unavailable, computer-use sidecar unreachable)\"\n                    )\n                }\n\n                if let Some(err) = computer_use_err {\n                    anyhow::bail!(\n                        \"browser.backend='auto' needs Playwright, agent-browser tool, browser-native, or valid computer-use sidecar (error: {err})\"\n                    );\n                }\n\n                anyhow::bail!(\n                    \"browser.backend='auto' needs Playwright, agent-browser tool, browser-native, or computer-use sidecar\"\n                )\n            }\n        }\n    }\n\n    /// Validate URL against allowlist\n    fn validate_url(&self, url: &str) -> anyhow::Result<()> {\n        let url = url.trim();\n\n        if url.is_empty() {\n            anyhow::bail!(\"URL cannot be empty\");\n        }\n\n        // Block file:// URLs — browser file access bypasses all SSRF and\n        // domain-allowlist controls and can exfiltrate arbitrary local files.\n        if url.starts_with(\"file://\") {\n            anyhow::bail!(\"file:// URLs are not allowed in browser automation\");","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/browser.rs#L257-L293","documentation":"Terminal error of browser.backend='auto' resolution in a build without browser-native and with no computer-use error to report: no backend (Playwright, agent-browser, computer-use sidecar) is present in the environment.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/browser.rs:275 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install Playwright (`pnpm --filter openhuman-app exec playwright install chromium-headless-shell`) or agent-browser.","Start and configure a computer-use sidecar.","Pin browser.backend once one is available."],"exampleFix":null,"handlingStrategy":"fallback","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"}