tinyhumansai/openhuman · error

missing required boolean argument `approve`

Error message

missing required boolean argument `approve`

What it means

todo_decide_plan rejected its input: the required 'approve' argument is absent or not a boolean. Guard fires before any plan decision is recorded.

Source

Thrown at src/openhuman/threads/todos/tools.rs:364

                "thread_id": thread_id_prop(),
                "id": { "type": "string", "description": "Card id (required)." },
                "approve": { "type": "boolean", "description": "Approve or reject the plan (required)." }
            },
            "required": ["id", "approve"]
        })
    }

    fn permission_level(&self) -> PermissionLevel {
        PermissionLevel::Write
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        log::debug!("[tool][todos] decide_plan invoked");
        let id = read_required_str(&args, "id")?;
        let approve = args
            .get("approve")
            .and_then(serde_json::Value::as_bool)
            .ok_or_else(|| anyhow::anyhow!("missing required boolean argument `approve`"))?;
        let location = board_location(&self.config, &args);
        let snapshot = ops::decide_plan(&location, &id, approve)
            .await
            .map_err(|e| anyhow::anyhow!("todo_decide_plan: {e}"))?;
        snapshot_to_result(snapshot)
    }
}

/// Remove a single card. **Destructive** — default-OFF.
pub struct TodoRemoveTool {
    config: Arc<Config>,
}

impl TodoRemoveTool {
    pub fn new(config: Arc<Config>) -> Self {
        Self { config }
    }
}

View on GitHub (pinned to 7491200858)

Solutions

  1. Pass 'approve' as an explicit JSON boolean true (approve) or false (reject)
  2. Do not use strings like "yes"/"true"
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/threads/todos/tools.rs:364 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/9ba0a7b82b8d4fa3. Report an issue: GitHub.