Skip to content

[Bug]: kanban_create accepts toolset names in skills field, causing immediate worker crash #22921

@clickmonkey

Description

@clickmonkey

Summary

The kanban_create tool (and the skills column in the Kanban DB) accepts any string array without validation. When toolset names like "web", "browser", "terminal", or "file" are passed as skills, the dispatcher spawns a worker with --skills web browser, which immediately crashes:

Error: Unknown skill(s): web, browser

This is a very common mistake — the distinction between skills (named skill bundles like kanban-worker, blogwatcher) and toolsets (runtime capabilities like web, browser, terminal) is not obvious, and orchestrator agents frequently put toolset names in the skills field.

Steps to Reproduce

  1. Create a kanban task with toolset names as skills:
    kanban_create(title="Research competitors", assignee="researcher", skills=["web", "browser"])
  2. Dispatcher picks up the task and spawns a worker
  3. Worker crashes immediately with Error: Unknown skill(s): web, browser
  4. Task increments consecutive_failures and eventually gets auto-blocked

Expected Behavior

kanban_create should validate the skills parameter against known skill names and reject toolset names before the task is created — fail fast at creation time, not at dispatch time.

Suggested Fix

  1. Add a validation step in kanban_create that checks each entry in skills against the known skills registry (or at minimum against a deny-list of known toolset names: web, browser, terminal, file, hermes-cli, discord, etc.)
  2. If invalid entries are found, return a clear error: "web" is a toolset name, not a skill name. Add it to the profile config under toolsets: instead.
  3. Optionally: add a migration/lint that scans existing tasks for toolset-name skills and clears them.

Environment

  • Hermes Agent v2.x
  • Observed across multiple sessions and profiles
  • Affects both CLI-created and agent-created tasks

Workaround

Manual DB surgery:

UPDATE tasks SET skills = [] WHERE id = t_xxx;

Then hermes kanban unblock t_xxx && hermes kanban dispatch

This is documented in the kanban-orchestrator skill pitfalls section.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havecomp/pluginsPlugin system and bundled pluginstype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions