hermes - 💡(How to fix) Fix Slack: full Block Kit support for rich interactions (select menus, modals, execution plans, structured outputs)

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…

Hermes on Slack currently uses Block Kit only for the narrow approval-button flow that shipped as part of #503 Phase 1. The broader Block Kit surface — select menus, multi-select, date/time pickers, overflow menus, modals with form inputs, structured execution plans, rich result cards — is not wired up and, as far as I can tell, is not tracked as an umbrella issue.

#503 was closed with the note that Phase 2/3 (structured execution plans, rich cards, polls) "didn't make it, but they're better tracked as concrete narrow issues if/when someone wants to drive them." There are a few narrow Slack-Block-Kit issues open (#18918 markdown-pipe tables → Block Kit tables, #8552 modern markdown block type, #29483 progress drafts as plan cards), but they each cover one slice. This issue asks for a tracking issue for the rest of the Slack Block Kit surface so Slack reaches feature parity with the Telegram/Discord interaction story.

Root Cause

Hermes on Slack currently uses Block Kit only for the narrow approval-button flow that shipped as part of #503 Phase 1. The broader Block Kit surface — select menus, multi-select, date/time pickers, overflow menus, modals with form inputs, structured execution plans, rich result cards — is not wired up and, as far as I can tell, is not tracked as an umbrella issue.

#503 was closed with the note that Phase 2/3 (structured execution plans, rich cards, polls) "didn't make it, but they're better tracked as concrete narrow issues if/when someone wants to drive them." There are a few narrow Slack-Block-Kit issues open (#18918 markdown-pipe tables → Block Kit tables, #8552 modern markdown block type, #29483 progress drafts as plan cards), but they each cover one slice. This issue asks for a tracking issue for the rest of the Slack Block Kit surface so Slack reaches feature parity with the Telegram/Discord interaction story.

RAW_BUFFERClick to expand / collapse

Summary

Hermes on Slack currently uses Block Kit only for the narrow approval-button flow that shipped as part of #503 Phase 1. The broader Block Kit surface — select menus, multi-select, date/time pickers, overflow menus, modals with form inputs, structured execution plans, rich result cards — is not wired up and, as far as I can tell, is not tracked as an umbrella issue.

#503 was closed with the note that Phase 2/3 (structured execution plans, rich cards, polls) "didn't make it, but they're better tracked as concrete narrow issues if/when someone wants to drive them." There are a few narrow Slack-Block-Kit issues open (#18918 markdown-pipe tables → Block Kit tables, #8552 modern markdown block type, #29483 progress drafts as plan cards), but they each cover one slice. This issue asks for a tracking issue for the rest of the Slack Block Kit surface so Slack reaches feature parity with the Telegram/Discord interaction story.

Motivation

Slack is the daily-driver chat surface for a lot of Hermes users (mine included). Today, every interaction beyond the dangerous-command approval is plain text:

  • clarify with multiple choices renders as a numbered text list — users type "2" instead of clicking.
  • Long structured outputs (todo lists, plans, search results, tool outputs) arrive as prose blocks that are hard to scan in a Slack thread.
  • Confirmations that aren't dangerous-command approvals (e.g. "apply this diff?", "send this draft?") fall back to text.
  • There is no native equivalent of Discord's lazy-install views or Telegram's update-prompt keyboards.

Discord and Telegram both got a meaningful interaction upgrade in #503 Phase 1. Slack got the approval-button wiring but stopped there, so the in-Slack agent experience feels noticeably more text-bot-y than the same agent in Discord.

Proposed scope

Treat this as the Slack equivalent of the #503 Phase 1/2 work that already landed on Telegram and Discord. Concretely:

  1. clarify tool → Block Kit actions. Render the multi-choice variant as a section + actions block with one button per choice, falling back to a static select when choice count > 5 (Slack action-row limit). Wire the button callback back to the pending clarify future the same way Discord/Telegram do.
  2. Generic non-dangerous confirmations. Extend the approval primitive so any tool can request "native confirm" and get a Block Kit button pair, not just tools/approval.py's dangerous-command path.
  3. Structured execution plans (#503 Phase 2 on Slack). When the agent emits a plan / todo list, render it as a Block Kit section block with checklist-style text + an actions block (Execute / Modify / Cancel), and update the message in place as steps complete (Slack chat.update). #29483 covers "progress drafts as plan cards" — this issue would either subsume it or, if maintainers prefer, sit above it as the umbrella.
  4. Modals for multi-field input. Use views.open for tools that today require multiple back-and-forth text turns (e.g. configuring a cron, filling a structured form). Submission posts back to the gateway via view_submission.
  5. Select / multi-select / date / time / overflow menus. Make these available to any tool that wants them via the same abstract component model proposed in #503 (SelectMenu, Checklist, etc.) — Slack adapter renders them as the corresponding Block Kit elements.
  6. Rich result cards. Tool results that are structured (tables, key-value summaries, search hits) render as Block Kit sections/fields instead of fenced markdown prose. Overlaps with #18918 and #8552 — those can stay as the narrow markdown-rendering tickets; this issue tracks the result-card pattern itself.

Out of scope for this issue: WhatsApp interactive buttons, CLI/TUI components, and the cross-platform abstract component model itself (that belongs upstream in the #503 follow-ups / #15311). This issue is specifically about lighting up the Slack adapter.

Relationship to existing issues

  • #503 (closed) — original umbrella; closure note explicitly invites narrow follow-ups.
  • #15311 — generic action buttons / inline keyboards (Telegram-leaning). Cross-platform component model lives there.
  • #18918 — Slack: pipe tables → Block Kit tables. Stays narrow.
  • #8552 — Slack: modern markdown block type instead of legacy mrkdwn. Stays narrow; this issue depends on it for nicer section text.
  • #29483 — Slack: progress drafts as plan cards. Either folded into item (3) above or kept as the concrete implementation ticket under this umbrella — maintainer's call.
  • #19111 — Discord clarify-as-buttons. Same idea, different platform; useful prior art for item (1).

Happy to break this into per-item tickets if maintainers prefer that shape — flagging it as one umbrella issue first since #503's closure note specifically asked for the gap to be tracked somewhere.

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 Slack: full Block Kit support for rich interactions (select menus, modals, execution plans, structured outputs)