hermes - ✅(Solved) Fix Slack slash command: use profile name instead of hardcoded /hermes [1 pull requests, 1 participants]

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…
GitHub stats
NousResearch/hermes-agent#11832Fetched 2026-04-18 05:58:41
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×1referenced ×1

Fix Action

Workaround

None clean. Currently only one bot in the workspace can use /hermes. The others have no slash command access, which means no /hermes new (session reset), /hermes status, etc.

PR fix notes

PR #11836: fix: use profile name as Slack slash command instead of hardcoded /hermes

Description (problem / solution / changelog)

Summary

  • Derives the Slack slash command name from the active profile instead of hardcoding /hermes
  • Default profile → /hermes (backward compatible)
  • Named profiles → /<profile_name> (e.g. /foo, /bar)

Problem

When running multiple hermes profiles as separate Slack bots in the same workspace, each registers /hermes. Slack only allows one app per slash command name — the last to register wins, others lose all slash command access (/hermes new, /hermes status, etc.).

Test plan

  • Default profile: /hermes new still works
  • Named profile "foo": /foo new resets session
  • Multiple profiles in same workspace: each command routes to correct bot
  • Profile with no Slack (CLI only): no regression

Fixes #11832

Changed files

  • gateway/platforms/slack.py (modified, +10/-2)

Code Example

@self._app.command("/hermes")

---

from hermes_cli.profiles import get_active_profile_name

profile_name = get_active_profile_name()
cmd_name = "hermes" if profile_name == "default" else profile_name

@self._app.command(f"/{cmd_name}")
RAW_BUFFERClick to expand / collapse

Problem

The Slack adapter registers /hermes as the slash command (hardcoded at gateway/platforms/slack.py:203):

@self._app.command("/hermes")

When running multiple hermes profiles as separate Slack bots in the same workspace (e.g. default + "foo" + "bar"), each bot tries to register /hermes. Slack only allows one app per slash command name in a workspace — the last app to register wins, and all others lose the command.

Proposed solution

Use the active profile name as the slash command name:

from hermes_cli.profiles import get_active_profile_name

profile_name = get_active_profile_name()
cmd_name = "hermes" if profile_name == "default" else profile_name

@self._app.command(f"/{cmd_name}")

This way each profile registers its own command automatically:

  • Default profile → /hermes (backward compatible)
  • Profile "foo" → /foo
  • Profile "bar" → /bar

Environment

  • Multiple hermes profiles on same host, each with its own Slack App and gateway process
  • All bots in the same Slack workspace
  • Socket Mode (no shared Request URL)

Workaround

None clean. Currently only one bot in the workspace can use /hermes. The others have no slash command access, which means no /hermes new (session reset), /hermes status, etc.

extent analysis

TL;DR

Use the active profile name as the slash command name to allow multiple hermes profiles to coexist in the same Slack workspace.

Guidance

  • Modify the gateway/platforms/slack.py file to use the active profile name as the slash command name, as proposed in the solution.
  • Ensure the get_active_profile_name function from hermes_cli.profiles is correctly imported and used to determine the profile name.
  • Test the modified code with multiple profiles to verify that each profile registers its own unique slash command.
  • Consider the backward compatibility of the default profile, which should still register the /hermes command.

Example

from hermes_cli.profiles import get_active_profile_name

profile_name = get_active_profile_name()
cmd_name = "hermes" if profile_name == "default" else profile_name

@self._app.command(f"/{cmd_name}")

Notes

This solution assumes that the get_active_profile_name function correctly returns the active profile name. If this function is not reliable, the solution may not work as expected.

Recommendation

Apply the proposed workaround by modifying the gateway/platforms/slack.py file to use the active profile name as the slash command name, as it allows multiple hermes profiles to coexist in the same Slack workspace without conflicts.

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