hermes - 💡(How to fix) Fix [Bug] /goal slash command times out on Discord — handler not registered in discord.py

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…

After upgrading to v0.13.0 (v2026.5.7), invoking the new /goal slash command on Discord fails with the Discord-native Application did not respond timeout (3-second interaction ack window). The CLI/router-side handling appears to exist, but the Discord platform never registers a handler for the slash command.

Error Message

No handler activation appears in journalctl --user -u hermes-gateway for the /goal invocation — no traceback, no log line referencing goal.

Root Cause

After upgrading to v0.13.0 (v2026.5.7), invoking the new /goal slash command on Discord fails with the Discord-native Application did not respond timeout (3-second interaction ack window). The CLI/router-side handling appears to exist, but the Discord platform never registers a handler for the slash command.

Fix Action

Fix / Workaround

Workaround (untested locally)

Add a slash_goal handler in gateway/platforms/discord.py:_register_slash_commands() that mirrors the chat-side dispatch (defer + call _handle_goal_command + send followup). Pattern looks identical to existing slash_steer (which takes a prompt: str arg) for new-goal text, with optional subcommand (status/pause/resume/clear/stop/done) for mid-run.

  • Severity: low — chat-message workaround appears available
  • Affected: any Discord-deployed v0.13.0 user who tries the documented /goal slash flow
  • First-wave bug suspected — v0.13.0 released 2026-05-07, this is the first slash-command attempt on our deployment

Code Example

slash_new, slash_reset, slash_model, slash_reasoning, slash_personality,
slash_retry, slash_undo, slash_status, slash_sethome, slash_stop,
slash_steer, slash_compress

---

$ grep -nE "async def slash_" gateway/platforms/discord.py
# 12 handlers above; no `slash_goal`
RAW_BUFFERClick to expand / collapse

Summary

After upgrading to v0.13.0 (v2026.5.7), invoking the new /goal slash command on Discord fails with the Discord-native Application did not respond timeout (3-second interaction ack window). The CLI/router-side handling appears to exist, but the Discord platform never registers a handler for the slash command.

Environment

  • Hermes Agent: v0.13.0 (v2026.5.7), git HEAD 498bfc7bc
  • Platform: Discord (single-user bot)
  • Host: NVIDIA DGX Spark / GB10, aarch64, Python 3.12
  • Backend LLM: local llama-server (gemma4-26b, OpenAI-compatible)

Reproduction

  1. Upgrade from v0.12.0 to v0.13.0 (no other config changes related to /goal)
  2. Restart hermes-gateway
  3. In Discord, type /goal (the autocomplete shows the command — Discord-side it is exposed)
  4. Submit the slash command

Expected: Hermes responds with goal status / sets a new goal as documented (gateway/run.py:5313, 5662, 8382).

Actual: Discord shows the native ephemeral message:

❗ 애플리케이션이 응답하지 않았어요 (Application did not respond)

No handler activation appears in journalctl --user -u hermes-gateway for the /goal invocation — no traceback, no log line referencing goal.

Code trace

The router/CLI side handles goal correctly:

  • gateway/run.py:5313 — mid-run /goal status/pause/clear handling
  • gateway/run.py:5662if canonical == "goal": return await self._handle_goal_command(event)
  • gateway/run.py:8382async def _handle_goal_command(self, event: "MessageEvent") -> str:
  • hermes_cli/goals.py — module exists

But on the Discord platform, gateway/platforms/discord.py:_register_slash_commands() (around line 2872) only registers 12 explicit slash handlers:

slash_new, slash_reset, slash_model, slash_reasoning, slash_personality,
slash_retry, slash_undo, slash_status, slash_sethome, slash_stop,
slash_steer, slash_compress

There is no slash_goal handler, so when Discord delivers the interaction, nothing replies within the 3-second ack window and Discord shows the native timeout.

$ grep -nE "async def slash_" gateway/platforms/discord.py
# 12 handlers above; no `slash_goal`

Workaround (untested locally)

Sending /goal <text> as a regular chat message (not via Discord's slash UI) likely routes through gateway/run.py:5662 (canonical == "goal") and may work. We have not confirmed this on our deployment.

Suggested fix

Add a slash_goal handler in gateway/platforms/discord.py:_register_slash_commands() that mirrors the chat-side dispatch (defer + call _handle_goal_command + send followup). Pattern looks identical to existing slash_steer (which takes a prompt: str arg) for new-goal text, with optional subcommand (status/pause/resume/clear/stop/done) for mid-run.

Impact

  • Severity: low — chat-message workaround appears available
  • Affected: any Discord-deployed v0.13.0 user who tries the documented /goal slash flow
  • First-wave bug suspected — v0.13.0 released 2026-05-07, this is the first slash-command attempt on our deployment

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