{"record":{"id":"ac4bc4d6bf97f4f0","repo":"tinyhumansai/openhuman","slug":"browser-args-must-be-a-json-object","errorCode":null,"errorMessage":"browser args must be a JSON object","messagePattern":"browser args must be a JSON object","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/browser.rs","lineNumber":623,"sourceCode":"                self.validate_coordinate(\"from_y\", from_y, self.computer_use.max_coordinate_y)?;\n                self.validate_coordinate(\"to_y\", to_y, self.computer_use.max_coordinate_y)?;\n            }\n            _ => {}\n        }\n        Ok(())\n    }\n\n    async fn execute_computer_use_action(\n        &self,\n        action: &str,\n        args: &Value,\n    ) -> anyhow::Result<ToolResult> {\n        let endpoint = self.computer_use_endpoint_url()?;\n\n        let mut params = args\n            .as_object()\n            .cloned()\n            .ok_or_else(|| anyhow::anyhow!(\"browser args must be a JSON object\"))?;\n        params.remove(\"action\");\n\n        self.validate_computer_use_action(action, &params)?;\n\n        let payload = json!({\n            \"action\": action,\n            \"params\": params,\n            \"policy\": {\n                \"allowed_domains\": self.allowed_domains,\n                \"window_allowlist\": self.computer_use.window_allowlist,\n                \"max_coordinate_x\": self.computer_use.max_coordinate_x,\n                \"max_coordinate_y\": self.computer_use.max_coordinate_y,\n            },\n            \"metadata\": {\n                \"session_name\": self.session_name,\n                \"source\": \"openhuman.browser\",\n                \"version\": env!(\"CARGO_PKG_VERSION\"),\n            }","sourceCodeStart":605,"sourceCodeEnd":641,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/browser.rs#L605-L641","documentation":"Guard in execute_computer_use_action: the browser tool args are not a JSON object, so params cannot be extracted for the computer-use call. Caused by the model emitting an array/string/primitive instead of an object mapping action parameters.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/browser.rs:623 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Send the tool arguments as a JSON object","Wrap action parameters in an object, e.g. {\"action\":\"open\",\"url\":\"...\"}"],"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"}