{"record":{"id":"68cdf95c448ac465","repo":"tinyhumansai/openhuman","slug":"missing-file-parameter","errorCode":null,"errorMessage":"Missing 'file' parameter","messagePattern":"Missing 'file' parameter","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/filesystem/update_memory_md.rs","lineNumber":225,"sourceCode":"        PermissionLevel::Write\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        self.execute_with_context(args, ToolCallOptions::default(), None)\n            .await\n    }\n\n    async fn execute_with_context(\n        &self,\n        args: serde_json::Value,\n        _options: ToolCallOptions,\n        context: Option<&ToolExecutionContext>,\n    ) -> anyhow::Result<ToolResult> {\n        let workspace_dir = self.workspace_dir_for_context(context);\n        let file = args\n            .get(\"file\")\n            .and_then(|v| v.as_str())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing 'file' parameter\"))?;\n\n        let action = args\n            .get(\"action\")\n            .and_then(|v| v.as_str())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing 'action' parameter\"))?;\n\n        let content = args\n            .get(\"content\")\n            .and_then(|v| v.as_str())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing 'content' parameter\"))?;\n\n        // Guard: only allow MEMORY.md and SKILL.md.\n        if !ALLOWED_FILES.contains(&file) {\n            return Ok(ToolResult::error(format!(\n                \"File '{file}' is not allowed. Permitted files: MEMORY.md, SKILL.md\"\n            )));\n        }\n","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/filesystem/update_memory_md.rs#L207-L243","documentation":"update_memory tool argument guard: the required 'file' argument (which memory markdown file to update) is missing or not a string. Fires before the workspace lock or any read-modify-write begins.","triggerScenarios":"Thrown at src/openhuman/tools/impl/filesystem/update_memory_md.rs:225 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass 'file' as a string naming the memory file (e.g. MEMORY.md)","Check the tool schema for other required arguments"],"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"}