-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
Feature: Webchat / Control UI inline button support (buttons parameter, callback RPC, capabilities config) #46656
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Priority
None yet
Feature Request
Summary
The
messagetool supports abuttonsparameter for sending inline keyboard buttons, but this only works on Telegram today. Webchat (Control UI) clients silently drop thebuttonspayload — no rendering, no callback mechanism, and no capabilities config path exists for webchat.This is a feature request to bring full inline button support to the webchat/Control UI channel, matching the existing Telegram implementation.
Problem
When an agent sends a message via the
messagetool withbuttons, the gateway:callback_query, routes callback data to agentbuttonspayload; no buttons renderedThe system prompt already generates the hint:
But
webchat.capabilities.inlineButtonsdoes not exist in the config schema — the hint is aspirational, not functional.Additionally:
chat.sendWS method does not accept or relay abuttonsfieldchat.callbackWS RPC method exists for webchat clients to report button clicksUse Case
We run a multi-agent household with a content curation agent (Radar) that sends signal digests with action buttons (👍 Like / 👎 Skip / 📖 Read Later / 🔗 Open). This previously worked via Telegram inline keyboards. After migrating the primary interface to webchat (ClawDash), we lost all button interactivity.
Inline buttons are also useful for:
Proposed Solution
1. Capabilities Config
Add
webchat.capabilities.inlineButtonsto the config schema, matching the Telegram pattern:2. WS Chat Event —
buttonsFieldWhen
inlineButtonsis enabled and a message includes buttons, include them in thechatWS event payload:The
buttonsfield should use the same schema as the Telegrammessage send --buttonsparameter:{ text: string, callback_data: string, style?: "primary" | "success" | "danger" }callback_datamax length: 64 charactersstate: "final"events (not during streaming)3.
chat.callbackWS RPC MethodAdd a new WS RPC method for webchat clients to report button clicks:
Callback routing options (one or both):
callback_data: <value>as a user message into the sessionwebchat.callbackWebhookUrl, enabling n8n/automation workflows without triggering an agent turnWebhook payload example:
4. Control UI Rendering
The built-in Control UI should render buttons below the message text:
primary,success,danger(and a default neutral style)chat.callbackRPCCurrent Workarounds
Without gateway support, custom webchat clients must:
This works but is fragile, non-standard, and invisible to the built-in Control UI.
Related Issues
answerCallbackQueryfor TelegramEnvironment
2026.3.8 (3caab92)