# NousResearch/hermes-agent · Kanban tool visibility for orchestrator profiles and toolsets

## Open now

- Nothing open on GitHub.

These issues and fixes center on kanban tools not appearing correctly for orchestrator profiles depending on toolset configuration, including how wildcard aliases like 'all' and 'all/*' are handled. Related changes address which profiles can see kanban tools, worker identity claims in guidance, and documentation clarifying wildcard behavior.

## TL;DR

- 9 member(s): 0 open issue(s), 2 closed issue(s), 0 open PR(s), 3 merged PR(s), 4 PR(s) closed without merging.
- A fix was merged to main in PR #19427. Verify it addresses your case.
- **Recommended:** read PR #19427 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-19606,pr-35729`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.20`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #18968: Kanban tools not visible to orchestrator profiles with kanban toolset enabled
- #35581: \[Bug\]: kanban tools silently hidden when profile uses toolsets: \["all"\] — check_fn ignores the all/* alias

## Prior & competing PRs

- **#19427: fix(kanban): drop worker identity claim from KANBAN_GUIDANCE**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `agent/prompt_builder.py`
  - fix hunks:
  - `agent/prompt_builder.py`

    ```diff
    @@ -183,8 +183,8 @@ def _strip_yaml_frontmatter(content: str) -> str:
     )
     
     KANBAN_GUIDANCE = (
    -    "# You are a Kanban worker\n"
    -    "You were spawned by the Hermes Kanban dispatcher to execute ONE task from "
    +    "# Kanban task execution protocol\n"
    +    "You have been assigned ONE task from "
         "the shared board at `~/.hermes/kanban.db`. Your task id is in "
         "`$HERMES_KANBAN_TASK`; your workspace is `$HERMES_KANBAN_WORKSPACE`. "
         "The `kanban_*` tools in your schema are your primary coordination surface — "
    ```
- **#19606: fix(kanban): allow orchestrator profiles to see kanban tools via toolsets config**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `tests/tools/test_kanban_tools.py`, `tools/kanban_tools.py`
  - fix hunks:
  - `tests/tools/test_kanban_tools.py`

    ```diff
    @@ -467,8 +467,8 @@ def test_kanban_guidance_in_worker_prompt(monkeypatch, tmp_path):
             skip_memory=True,
         )
         prompt = a._build_system_prompt()
    -    # Header phrase
    -    assert "You are a Kanban worker" in prompt
    +    # Header phrase (identity-free — SOUL.md owns identity, layer 3 is protocol)
    +    assert "Kanban task execution protocol" in prompt
         # Lifecycle signals
         assert "kanban_show()" in prompt
         assert "kanban_complete" in prompt
    ```
  - `tools/kanban_tools.py`

    ```diff
    @@ -40,13 +40,31 @@
     # ---------------------------------------------------------------------------
     
     def _check_kanban_mode() -> bool:
    -    """Tools are available iff the current process has ``HERMES_KANBAN_TASK``
    -    set in its env, which the dispatcher sets when spawning a worker.
    +    """Tools are available when:
     
    -    Humans running ``hermes chat`` see zero kanban tools. Workers spawned
    -    by the kanban dispatcher (gateway-embedded by default) see all seven.
    +    1. ``HERMES_KANBAN_TASK`` is set (dispatcher-spawned worker), OR
    +    2. The current profile has ``kanban`` in its toolsets config
    +       (orchestrator profiles like techlead that route work via Kanban).
    +
    +    Humans running ``hermes chat`` without the kanban toolset see zero
    +    kanban tools. Workers spawned by the kanban dispatcher (gateway-
    +    embedded by default) and orchestrator profiles with the kanban
    +    toolset enabled see all seven.
         """
    -    return bool(os.environ.get("HERMES_KANBAN_TASK"))
    +    if os.environ.get("HERMES_KANBAN_TASK"):
    +        return True
    +
    +    # Check if the current profile has the kanban toolset enabled.
    +    # Uses load_config() which has mtime-based caching, so this adds
    +    # negligible overhead. The check_fn results are further TTL-cached
    +    # (~30s) by the tool registry.
    +    try:
    +        from hermes_cli.config import load_config
    +        cfg = load_config()
    +        toolsets = cfg.get("toolsets", [])
    +        return "kanban" in toolsets
    +    except Exception:
    +        return False
     
     
     # ---------------------------------------------------------------------------
    ```
- **#35729: docs(toolsets): clarify all/* wildcard does not enable kanban**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `website/docs/reference/toolsets-reference.md`
- **#18970: fix: allow kanban tools for orchestrator profiles with kanban toolset**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#19606`, `#19427`, `#18971`, `#18991`, `#18968`
- **#18971: fix(tools): allow orchestrator profiles to see kanban tools via toolsets config**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#18970`, `#19606`
- **#18991: fix(kanban): enable kanban tools for profiles with kanban in toolsets config**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#18970`, `#18971`, `#19606`
- **#35588: fix(kanban): honor all toolset aliases**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#35729`, `#35581`

## Fix status

- Merged to main in PR #19427 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-05-31`.
