hermes-agent/website/docs/user-guide/features
Teknium 558dab0e3e feat(slack): opt-in reaction triggers, removed events, hooks, channel handoff
Build the full reaction pipeline on top of the #29916 base:

- Opt-in gate: slack.reaction_triggers (default OFF — reaction events
  stay acked-and-dropped so busy channels don't wake the agent on every
  emoji). 'true' routes reactions on the bot's OWN messages; an explicit
  emoji-name list routes those emojis from any message (handoff flows).
- reaction_removed events now route too, distinguished by the
  cross-platform text convention reaction:added:<emoji> /
  reaction:removed:<emoji> (matches the Feishu and Photon adapters, so
  agents and skills see one shape everywhere).
- Authorization: the reactor becomes the synthesized message's user, so
  the early _is_user_authorized gate and allowed_channels whitelist
  apply exactly as for typed messages. _hermes_force_process only skips
  the mention requirement (a reaction on the bot's own message is
  definitionally addressed to the bot), mirroring Feishu/Photon.
- Gateway hooks (#33111 by @johnkattenhorn): every human reaction on a
  message item fires reaction:added / reaction:removed through the new
  BasePlatformAdapter.set_reaction_handler → GatewayRunner
  ._handle_reaction_event → HookRegistry.emit, independent of the
  routing opt-in. Documented in hooks.md.
- Channel handoff (#45265 by @Kev-fs): slack.reaction_trigger_target
  routes the reaction turn to a configured channel (top-level via
  _hermes_no_thread_response + reply-anchor suppression in
  gateway/platforms/base.py) or C123:<ts> thread.
- Manifest: reaction_removed event subscription added alongside
  reaction_added/reactions:read.
- Docs: slack.md Reaction Triggers section; hooks.md event table rows.

Also credits #44508 by @harrisonmedmedmetrics (inbound reaction_added
handling — same plumbing class, superseded by this consolidated shape).

Co-authored-by: johnkattenhorn <john.kattenhorn.personal@gmail.com>
Co-authored-by: Kev-fs <kevin@fleetsmarts.net>
Co-authored-by: harrisonmedmedmetrics <harrison@medmetricsrx.com>
2026-07-23 11:50:08 -07:00
..
_category_.json feat: add documentation website (Docusaurus) 2026-03-05 05:24:55 -08:00
acp.md rip out brew + pip/PyPI wheel support (#68217) 2026-07-22 16:51:01 -04:00
api-server.md fix(api): stop producers after run transport expires 2026-07-12 04:15:47 -07:00
batch-processing.md feat(reasoning): add max and ultra effort levels (#62650) 2026-07-12 00:26:49 -07:00
browser.md fix: widen headed-mode gate to config, add browser.headed default, tests, docs 2026-07-18 10:07:46 -07:00
built-in-plugins.md docs: Plugins subcategory under Extending + secret-source plugin guide + 1Password sidebar fix (#59613) 2026-07-06 12:11:31 -07:00
code-execution.md fix: drain thread no longer crashes on fd-less stdout streams (#34789) 2026-05-29 12:16:57 -07:00
codex-app-server-runtime.md docs(codex): document live app-server display; AUTHOR_MAP entries 2026-07-17 13:44:12 -07:00
computer-use.md docs(computer-use): document Windows UIPI elevated-window limitation (#51121) 2026-06-23 08:41:33 -07:00
context-files.md feat(prompt): make context-file truncation limit configurable 2026-06-16 11:28:35 -07:00
context-references.md docs: comprehensive documentation audit — fix stale info, expand thin pages, add depth (#5393) 2026-04-05 19:45:50 -07:00
credential-pools.md docs: warn that mid-session model switches break prompt caching (#58747) 2026-07-05 04:34:05 -07:00
cron.md fix(cron): harden execution attempt ledger 2026-07-17 04:58:35 -07:00
curator.md feat(curator): make skill consolidation opt-in (prune stays default-on) (#47840) 2026-06-17 05:20:32 -07:00
delegation.md feat(delegation): let subagents use execute_code (#69325) 2026-07-22 06:58:45 -07:00
deliverable-mode.md feat(skills): bundle docx, xlsx, and pdf office skills; refresh powerpoint (#68595) 2026-07-21 05:39:23 -07:00
extending-the-dashboard.md docs(desktop): document the desktop plugin SDK (@hermes/plugin-sdk) (#67301) 2026-07-19 04:02:17 +00:00
fallback-providers.md fix(compression): give fallback candidates their own timeout budget + escalate repeat-timeout cooldowns (#65143) 2026-07-15 12:28:09 -07:00
goals.md feat(goals): completion contracts for /goal — evidence-based judging (#50501) 2026-06-22 12:20:09 -07:00
honcho.md docs(honcho): clarify pinUserPeer pins only non-agent users 2026-06-15 21:34:09 +00:00
hooks.md feat(slack): opt-in reaction triggers, removed events, hooks, channel handoff 2026-07-23 11:50:08 -07:00
image-generation.md feat(image-gen): support Codex image inputs 2026-07-02 17:12:24 +05:30
kanban-tutorial.md docs(kanban): clarify decomposer profile roles 2026-06-06 19:29:00 -07:00
kanban-worker-lanes.md refactor(kanban): fold worker/orchestrator skills into injected guidance (#50473) 2026-06-21 17:06:48 -07:00
kanban.md docs(kanban): explain why an unblocked task can later land in triage 2026-07-17 15:47:39 -07:00
lsp.md fix(lsp): never report stale diagnostics — wait for fresh post-edit data 2026-07-20 13:43:36 -04:00
mcp.md docs(mcp): document redirect_uri proxied callbacks + redirect_host WAF workaround 2026-07-16 06:14:34 -07:00
memory-providers.md docs: clarify OpenViking local setup 2026-07-22 14:05:28 +05:30
memory.md feat(background-review): aux-model selector for the self-improvement review (#49252) 2026-06-22 14:54:53 -07:00
mixture-of-agents.md fix(moa): route per-slot reasoning effort through the canonical parser 2026-07-16 06:14:58 -07:00
overview.md docs: fix 25 documentation/code inconsistencies (audit round 3) 2026-07-16 04:47:40 -07:00
personality.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
pets.md docs: reconcile docs with code across last 3 releases (#54254) 2026-06-28 12:47:50 -07:00
plugins.md docs: Plugins subcategory under Extending + secret-source plugin guide + 1Password sidebar fix (#59613) 2026-07-06 12:11:31 -07:00
provider-routing.md fix(routing): preserve profile and delegation parity 2026-07-10 13:10:45 +05:30
skills.md fix(skills): bind bundles to exact files and origins 2026-07-12 02:59:27 -07:00
skins.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
spotify.md docs(spotify): document 6-month re-auth cycle and add client-level invalid_grant test 2026-06-20 23:23:47 -07:00
subscription-proxy.md feat(cli): make hermes portal the human-readable Portal onboarding alias 2026-06-04 01:19:28 +05:30
tool-gateway.md docs: deep audit — registry drift, stale claims, 2-week PR coverage, dashboard screenshot (#40952) 2026-06-07 01:39:06 -07:00
tool-search.md docs: reconcile docs with code across last 3 releases (#54254) 2026-06-28 12:47:50 -07:00
tools.md docs: reconcile docs with code across last 3 releases (#54254) 2026-06-28 12:47:50 -07:00
tts.md docs: fix 25 documentation/code inconsistencies (audit round 3) 2026-07-16 04:47:40 -07:00
vision.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
voice-mode.md feat(voice): desktop flags interrupted submits 2026-07-22 17:53:06 -05:00
web-dashboard.md rip out brew + pip/PyPI wheel support (#68217) 2026-07-22 16:51:01 -04:00
web-search.md docs: fix 25 documentation/code inconsistencies (audit round 3) 2026-07-16 04:47:40 -07:00
x-search.md docs(x_search): comment out reasoning_effort in sample config blocks 2026-07-19 23:58:33 -07:00