[Bug]: kanban_show advertises task_id as optional but rejects the call outside a dispatcher-spawned worker
Summary
kanban_show advertises task_id as optional, but the call fails for any caller that is not a dispatcher-spawned worker. Agents in ordinary chat sessions hit this on their first turn, repeatedly.
Why it fires
The schema marks nothing required, and the parameter description invites omission:
KANBAN_SHOW_SCHEMA = {
"name": "kanban_show",
"description": "... Use this to (re)orient yourself before starting work ...",
"parameters": {"properties": {"task_id": ..., "board": ...}, "required": []},
}
_DESC_TASK_ID_DEFAULT = (
"Task id. If omitted, defaults to HERMES_KANBAN_TASK from the env "
"(the task the dispatcher spawned you to work on)."
)
HERMES_KANBAN_TASK is set in exactly one place, hermes_cli/kanban_db.py:10764, where the dispatcher spawns a worker. Any profile with the kanban toolset enabled that is not such a worker sees an optional argument plus a description telling it to orient itself, calls the tool with no arguments, and gets:
Error: task_id is required (or set HERMES_KANBAN_TASK in the env)
The remedy the message offers is not actionable from inside a chat session.
Observed
Across two profiles on hermes serve, always 6 to 9 seconds into a brand new session, which is what makes it look like a first-turn orientation reflex rather than a one-off:
08-20 07:24:50 profile A kanban_show
08-20 13:08:29 profile A kanban_show
08-21 09:50:00 profile A kanban_show
08-20 10:44:11 profile B kanban_comment (same class of error)
kanban_comment has the same shape: "task_id is required (use the current task id if that's what you mean, pulls from env but kept explicit here)".
Impact
Low. One wasted tool call and a red error block in the transcript; the agent recovers and continues. It is noise rather than breakage, but it is guaranteed noise for every kanban-enabled profile that also chats.
Suggested fix
Any of:
- When there is no
HERMES_KANBAN_TASKand notask_id, return thekanban_listview (or a hint pointing at it) instead of an error. The agent asked "what should I be looking at", and outside a worker that question has a good answer. - Make the error actionable for a chat caller: name
kanban_listrather than an env var it cannot set. - Or expose the env default only when the process actually has it, so a non-worker sees
task_idas required and supplies one.
Version: main @ 40643cbaf9, Linux, remote hermes serve with Desktop attached.
Source: NousResearch/hermes-agent