tinyhumansai/openhuman · error
workspace_update_persona: {e}
Error message
workspace_update_persona: {e} What it means
Writing the updated persona file to the workspace failed at the ops layer; the tool name prefix marks it for the LLM. Arguments were already validated, so this is a workspace IO/permission failure during the write.
Source
Thrown at src/openhuman/config/workspace/tools.rs:107
"properties": {
"filename": { "type": "string", "enum": ["SOUL.md", "IDENTITY.md"] },
"contents": { "type": "string" }
},
"required": ["filename", "contents"]
})
}
fn permission_level(&self) -> PermissionLevel {
PermissionLevel::Write
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
log::debug!("[tool][workspace] update_persona invoked");
let filename = req_str(&args, "filename")?;
let contents = args
.get("contents")
.and_then(Value::as_str)
.ok_or_else(|| anyhow::anyhow!("missing required string argument `contents`"))?;
let outcome = rpc::write_workspace_file(&self.config.workspace_dir, &filename, contents)
.map_err(|e| anyhow::anyhow!("workspace_update_persona: {e}"))?;
Ok(ToolResult::success(serde_json::to_string(&outcome.value)?))
}
}
/// Reset a persona file to its bundled default. Default-OFF.
pub struct WorkspaceResetPersonaTool {
config: Arc<Config>,
}
impl WorkspaceResetPersonaTool {
pub fn new(config: Arc<Config>) -> Self {
Self { config }
}
}
#[async_trait]
impl Tool for WorkspaceResetPersonaTool {
fn name(&self) -> &str {
"workspace_reset_persona"
}View on GitHub (pinned to 7491200858)
Solutions
- Check write permissions on the workspace directory
- Inspect the wrapped error for the IO cause
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/openhuman/config/workspace/tools.rs:107 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/18bec343d613f649.
Report an issue: GitHub.