hermes - 💡(How to fix) Fix Discord plugin: profiles without explicit `discord:` block silently get `require_mention=true` + `auto_thread=true` (regression in cc8e5ec2a)

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…

When a Hermes profile's config.yaml does not contain a discord: block, the bundled Discord plugin silently applies plugin-internal defaults that differ from the documented "default profile" config — most notably require_mention=true and auto_thread=true. The result: bots in a multi-profile fleet silently stop responding to unmentioned channel messages and create a new thread for every reply, with no log line indicating the message was dropped or threaded.

This regressed in cc8e5ec2a (refactor: migrate Discord adapter to bundled plugin, 2026-05-22). Before that commit, all profiles inherited the same effective defaults via the old gateway config loader.

Error Message

  1. Warn loudly at startup when a Discord-enabled profile has no discord: block (or any unset key falling back to plugin default).

Root Cause

On my host, 5 non-default Discord profiles (smaug, ceo, indi, loremaster, zane) went silent for ~2 days after git pull brought in cc8e5ec2a. Default profile (Preciousss) was unaffected because its config.yaml happens to ship a fully-populated discord: block.

Fix Action

Workaround

Add an explicit discord: block to every non-default profile mirroring the default-profile values:

discord:
  require_mention: false
  auto_thread: false
  # ... plus the other 10 keys for full explicitness

Code Example

discord:
  require_mention: false
  auto_thread: false
  # ... plus the other 10 keys for full explicitness
RAW_BUFFERClick to expand / collapse

Summary

When a Hermes profile's config.yaml does not contain a discord: block, the bundled Discord plugin silently applies plugin-internal defaults that differ from the documented "default profile" config — most notably require_mention=true and auto_thread=true. The result: bots in a multi-profile fleet silently stop responding to unmentioned channel messages and create a new thread for every reply, with no log line indicating the message was dropped or threaded.

This regressed in cc8e5ec2a (refactor: migrate Discord adapter to bundled plugin, 2026-05-22). Before that commit, all profiles inherited the same effective defaults via the old gateway config loader.

Impact

On my host, 5 non-default Discord profiles (smaug, ceo, indi, loremaster, zane) went silent for ~2 days after git pull brought in cc8e5ec2a. Default profile (Preciousss) was unaffected because its config.yaml happens to ship a fully-populated discord: block.

Reproduction

  1. Create a second profile via hermes profile create foo and wire a Discord bot.
  2. Do NOT add a discord: block to ~/.hermes/profiles/foo/config.yaml.
  3. Send an unmentioned message in the bot's allowed channel.
  4. Observe: no reply, no log line. on_message fires, but _handle_message silently returns at the require_mention gate (plugins/platforms/discord/adapter.py ~line 4555).
  5. @-mention the bot. It replies — and creates a new thread.

Workaround

Add an explicit discord: block to every non-default profile mirroring the default-profile values:

discord:
  require_mention: false
  auto_thread: false
  # ... plus the other 10 keys for full explicitness

Proposed fix (any of)

  1. Inherit defaults from the default profile, not from plugin-internal constants. Then "empty discord block" means "same as default profile" — least-surprise behavior.
  2. Warn loudly at startup when a Discord-enabled profile has no discord: block (or any unset key falling back to plugin default).
  3. Log silent drops at INFO, not DEBUG, when require_mention filters a message. The current logger.debug call (adapter.py:4519) is invisible at default log level — making this class of bug nearly impossible to diagnose without source-patching.

Happy to PR any of the three if maintainers have a preference.

Environment

  • Hermes Agent: cea87d913 (main, 2026-05-25)
  • discord.py 2.7.1, Python 3.11.15
  • 6 profiles, 5 Discord bots

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

hermes - 💡(How to fix) Fix Discord plugin: profiles without explicit `discord:` block silently get `require_mention=true` + `auto_thread=true` (regression in cc8e5ec2a)