tinyhumansai/openhuman · error
todo_remove: {e}
Error message
todo_remove: {e} What it means
Generic wrapper from todo_remove: deleting the card failed after the id argument read. The underlying {e} is the ops::remove error — most commonly no card with that id on the board.
Source
Thrown at src/openhuman/threads/todos/tools.rs:417
"properties": {
"thread_id": thread_id_prop(),
"id": { "type": "string", "description": "Card id to remove (required)." }
},
"required": ["id"]
})
}
fn permission_level(&self) -> PermissionLevel {
PermissionLevel::Write
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
log::debug!("[tool][todos] remove invoked");
let id = read_required_str(&args, "id")?;
let location = board_location(&self.config, &args);
let snapshot = ops::remove(&location, &id)
.await
.map_err(|e| anyhow::anyhow!("todo_remove: {e}"))?;
snapshot_to_result(snapshot)
}
}
/// Replace the entire board with a supplied card set. **Destructive** —
/// default-OFF.
pub struct TodoReplaceTool {
config: Arc<Config>,
}
impl TodoReplaceTool {
pub fn new(config: Arc<Config>) -> Self {
Self { config }
}
}
#[async_trait]
impl Tool for TodoReplaceTool {View on GitHub (pinned to 7491200858)
Solutions
- Run todo_list and copy the card id exactly
- Confirm you are targeting the same thread (or scratch) board the card lives on
- Read {e} for the concrete removal failure
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/openhuman/threads/todos/tools.rs:417 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/fd49bd2bb0b52c72.
Report an issue: GitHub.