{"record":{"id":"260c2efc612e6fdb","repo":"tinyhumansai/openhuman","slug":"missing-id-parameter-for-get-action","errorCode":null,"errorMessage":"Missing 'id' parameter for get action","messagePattern":"Missing 'id' parameter for get action","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/system/schedule.rs","lineNumber":111,"sourceCode":"        !matches!(\n            args.get(\"action\").and_then(|v| v.as_str()),\n            Some(\"list\") | Some(\"get\")\n        )\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> Result<ToolResult> {\n        let action = args\n            .get(\"action\")\n            .and_then(|value| value.as_str())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing 'action' parameter\"))?;\n\n        match action {\n            \"list\" => self.handle_list(),\n            \"get\" => {\n                let id = args\n                    .get(\"id\")\n                    .and_then(|value| value.as_str())\n                    .ok_or_else(|| anyhow::anyhow!(\"Missing 'id' parameter for get action\"))?;\n                self.handle_get(id)\n            }\n            \"create\" | \"add\" | \"once\" => {\n                if let Some(blocked) = self.enforce_mutation_allowed(action) {\n                    return Ok(blocked);\n                }\n                self.handle_create_like(action, &args)\n            }\n            \"cancel\" | \"remove\" => {\n                if let Some(blocked) = self.enforce_mutation_allowed(action) {\n                    return Ok(blocked);\n                }\n                let id = args\n                    .get(\"id\")\n                    .and_then(|value| value.as_str())\n                    .ok_or_else(|| anyhow::anyhow!(\"Missing 'id' parameter for cancel action\"))?;\n                Ok(self.handle_cancel(id))\n            }","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/system/schedule.rs#L93-L129","documentation":"The read-only 'get' action requires the job's 'id'; this fires when action=get arrives without an 'id' string. Because get is non-mutating, no approval gate was needed — this is pure argument validation.","triggerScenarios":"Thrown at src/openhuman/tools/impl/system/schedule.rs:111 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the \"id\" of the scheduled job to inspect, obtainable from the list action"],"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"}