From 82d570165ee2cb622da46400dcf000369ca9d346 Mon Sep 17 00:00:00 2001 From: Veritas-7 <234569343+Veritas-7@users.noreply.github.com> Date: Tue, 9 Jun 2026 11:58:32 +0900 Subject: [PATCH] fix(slack): ack reaction lifecycle events Register no-op Slack event handlers for inbound reaction_added and reaction_removed events so Slack Bolt does not log unhandled-request warnings for events Hermes does not consume. --- gateway/platforms/slack.py | 12 ++++++++++++ tests/gateway/test_slack.py | 2 ++ 2 files changed, 14 insertions(+) diff --git a/gateway/platforms/slack.py b/gateway/platforms/slack.py index 90bb4481c6e..6aac3bf4806 100644 --- a/gateway/platforms/slack.py +++ b/gateway/platforms/slack.py @@ -890,6 +890,18 @@ class SlackAdapter(BasePlatformAdapter): async def handle_file_change(event, say): pass + # Reactions are useful lightweight acknowledgements in Slack, but + # Hermes does not currently need to route them into the agent loop. + # Ack the events explicitly so high-traffic channels do not fill + # gateway.error.log with Slack Bolt "Unhandled request" warnings. + @self._app.event("reaction_added") + async def handle_reaction_added(event, say): + pass + + @self._app.event("reaction_removed") + async def handle_reaction_removed(event, say): + pass + @self._app.event("assistant_thread_started") async def handle_assistant_thread_started(event, say): await self._handle_assistant_thread_lifecycle_event(event) diff --git a/tests/gateway/test_slack.py b/tests/gateway/test_slack.py index 97618f4482a..9654927ef2a 100644 --- a/tests/gateway/test_slack.py +++ b/tests/gateway/test_slack.py @@ -234,6 +234,8 @@ class TestAppMentionHandler: assert "message" in registered_events assert "app_mention" in registered_events + assert "reaction_added" in registered_events + assert "reaction_removed" in registered_events assert "assistant_thread_started" in registered_events assert "assistant_thread_context_changed" in registered_events # Slack slash commands are registered via a single regex matcher