feat(gateway): auto-respond in Slack threads without @mention#2764
Closed
ondraz wants to merge 1 commit into
Closed
feat(gateway): auto-respond in Slack threads without @mention#2764ondraz wants to merge 1 commit into
ondraz wants to merge 1 commit into
Conversation
Port the Discord thread participation tracking to the Slack adapter.
When the bot has already participated in a thread (via @mention), it
will now respond to follow-up messages in that thread without requiring
a new @mention — matching the existing Discord behaviour.
The feature is off by default and can be enabled via config.yaml:
slack:
auto_respond_threads: true
Or via env var: SLACK_AUTO_RESPOND_THREADS=true
- Track thread IDs where the bot has participated, persisted to
~/.hermes/slack_threads.json (capped at 500 entries)
- Skip the mention check for messages in tracked threads (when enabled)
- Add config bridging in gateway/config.py (slack.auto_respond_threads → env var)
- Add 6 tests covering the new behaviour
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
19 tasks
jeremiahrthompson
pushed a commit
to sumofagents/hermes-agent
that referenced
this pull request
Apr 1, 2026
Add two new hook events that fire in BasePlatformAdapter for ALL platform adapters without requiring per-adapter modification: - message:received: fires before session registration, hooks can set context['should_process']=False to drop the message silently. Uses asyncio.wait_for with configurable 5s timeout (HERMES_HOOK_TIMEOUT). Fail-open on timeout and exception (hooks never break message delivery). - message:processed: fires after agent response is sent (or on error), includes response text, success flag, and error string. Both hooks use the existing HookRegistry. set_hooks() added to BasePlatformAdapter to wire the registry from GatewayRunner. No adapter files modified — all 12 adapters inherit hook support via BasePlatformAdapter. Ref: NousResearch#3539 NousResearch#2764 NousResearch#3434
10 tasks
Contributor
|
Thanks for this PR @ondraz! The core feature — auto-responding in Slack threads where the bot has participated without requiring a repeat @mention — has since been implemented on This is an automated hermes-sweeper review. Evidence:
Design differences worth noting:
If either of those gaps matters to you (opt-in flag for users with |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
~/.hermes/slack_threads.json(capped at 500 entries) so it survives restartsconfig.yamlor env var:Or:
SLACK_AUTO_RESPOND_THREADS=trueChanges
gateway/platforms/slack.py: Add thread participation tracking (_bot_participated_threads) and gate the mention-skip on the new config flaggateway/config.py: Bridgeslack.auto_respond_threadsfrom config.yaml to env vartests/gateway/test_slack.py: 6 new testsTest plan
Platforms tested
🤖 Generated with Claude Code