hermes - 💡(How to fix) Fix Dashboard/TUI slash path reports Unknown command for /sessions

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

  • #18993: Plugin-registered TUI slash commands could run through tui_gateway.slash_worker instead of the live TUI gateway process. Related because it involves the same slash-worker/TUI boundary, but this report concerns the built-in /sessions command returning unknown.
  • #16094: Gateway quick-command aliases to built-in slash commands can surface Unknown command. Related class of slash dispatch/routing mismatch, but this report is not about quick-command aliases.
  • #18362: /busy is registered/documented in some contexts but unavailable through gateway paths. Similar symptom pattern: a command appears valid but is not wired for a given interface. Different command/platform path.
  • #4829: Historical /model slash-command wiring gap. Similar command-registration-vs-dispatch pattern, but already closed/fixed and not an exact duplicate.

Fix Action

Workaround

Use CLI session commands directly, e.g.:

hermes sessions list

or use /resume when the target session name/id is known.

Code Example

/home/ubuntu/.hermes/hermes-agent/venv/bin/python - <<'PY'
import subprocess, sys, json
p = subprocess.Popen(
    [sys.executable, '-m', 'tui_gateway.slash_worker', '--session-key', 'test', '--model', 'test'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True,
    cwd='/home/ubuntu/.hermes/hermes-agent',
)
p.stdin.write(json.dumps({'id': 1, 'command': '/sessions'}) + '\n')
p.stdin.flush()
print(p.stdout.readline().strip())
p.terminate()
PY

---

Unknown command: /sessions
Type /help for available commands

---

{"id": 1, "ok": true, "output": "\^[[1;31mUnknown command: /sessions\^[[0m\n...Type /help for available commands..."}

---

hermes sessions list
RAW_BUFFERClick to expand / collapse

Bug Description

Typing /sessions in the Dashboard/TUI slash-command path returns Unknown command: /sessions, even though /sessions is registered as a valid command and session browsing/resume support exists elsewhere.

Steps to Reproduce

  1. Start Hermes Agent v0.13.0 with the TUI/Dashboard slash-command path available.
  2. Enter /sessions as a slash command.
  3. Observe the result.

I also reproduced the backend worker behavior directly from the repo with:

/home/ubuntu/.hermes/hermes-agent/venv/bin/python - <<'PY'
import subprocess, sys, json
p = subprocess.Popen(
    [sys.executable, '-m', 'tui_gateway.slash_worker', '--session-key', 'test', '--model', 'test'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True,
    cwd='/home/ubuntu/.hermes/hermes-agent',
)
p.stdin.write(json.dumps({'id': 1, 'command': '/sessions'}) + '\n')
p.stdin.flush()
print(p.stdout.readline().strip())
p.terminate()
PY

Expected Behavior

/sessions should open/list resumable sessions, or route to the same session picker/resume flow used by the TUI.

Actual Behavior

The command returns:

Unknown command: /sessions
Type /help for available commands

Direct slash-worker reproduction returned:

{"id": 1, "ok": true, "output": "\^[[1;31mUnknown command: /sessions\^[[0m\n...Type /help for available commands..."}

Evidence / Notes

  • /sessions is registered in hermes_cli/commands.py:
    • CommandDef("sessions", "Browse and resume previous sessions", "Session")
  • The TUI has session picker/session resume code paths.
  • The slash worker path goes through CLI command handling and currently reports /sessions as unknown.
  • hermes sessions list works from the CLI, so the underlying session listing capability exists.

Related Issues Checked

After filing this, I did a follow-up duplicate/related-issue search. I did not find an exact duplicate, but these appear related and may be useful context for triage:

  • #18993: Plugin-registered TUI slash commands could run through tui_gateway.slash_worker instead of the live TUI gateway process. Related because it involves the same slash-worker/TUI boundary, but this report concerns the built-in /sessions command returning unknown.
  • #16094: Gateway quick-command aliases to built-in slash commands can surface Unknown command. Related class of slash dispatch/routing mismatch, but this report is not about quick-command aliases.
  • #18362: /busy is registered/documented in some contexts but unavailable through gateway paths. Similar symptom pattern: a command appears valid but is not wired for a given interface. Different command/platform path.
  • #4829: Historical /model slash-command wiring gap. Similar command-registration-vs-dispatch pattern, but already closed/fixed and not an exact duplicate.

So this may fit the broader family of slash command routing/wiring issues, but I believe /sessions in the Dashboard/TUI slash path is a distinct case.

Environment

  • Hermes Agent: v0.13.0 (2026.5.7)
  • Project: /home/ubuntu/.hermes/hermes-agent
  • Python: 3.11.15
  • OpenAI SDK: 2.24.0

Impact

Users can see or reasonably expect /sessions to be valid, but in this path it fails as unknown. This makes session browsing/resume appear broken even though related functionality exists.

Workaround

Use CLI session commands directly, e.g.:

hermes sessions list

or use /resume when the target session name/id is known.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING