Context actions
A compact row of feedback and icon buttons, typically under an AI-generated message.
context_actions holds a small row of interactive elements, feedback buttons and icon
buttons, the way context holds a row of static text and images. Slack shows it under an
assistant’s response for a “was this helpful” prompt, paired with actions like copy or retry.
Fields
typestring
Always `context_actions`.
stringelements(FeedbackButtons | IconButton)[]
The row's elements, in order. Slack allows up to 5.
(FeedbackButtons | IconButton)[]block_id?string
A unique identifier for this block. Auto-generated if omitted. Maximum length is 255 characters.
stringOnly two element types are allowed here: feedback buttons (a thumbs-up/thumbs-down pair) and icon buttons (a single small glyph button). See those pages for their own fields and interactivity.
Examples
Feedback and a remove action
The same row as above, matching how this appears under an AI agent’s message: feedback buttons first, then a trailing icon button for a secondary action.
Icon buttons only
A row doesn’t need feedback buttons: any mix of up to 5 icon buttons works too.
Interactivity
Each element dispatches its own action shape. A feedback button sends its picked button’s value
and text:
{
"type": "feedback_buttons",
"action_id": "feedback",
"block_id": "b1",
"action_ts": "1706000000.000100",
"value": "positive",
"text": { "type": "plain_text", "text": "Good response" }
}
An icon button sends a plain action, with value only when the element sets it:
{
"type": "icon_button",
"action_id": "remove",
"block_id": "b1",
"action_ts": "1706000000.000100"
}
Feedback buttons also toggle: picking a thumb writes { type: "feedback_buttons", value } to
state.values, and clicking the same thumb again clears it. Icon buttons never write to
state.values, since they’re one-shot actions. See feedback buttons and
icon button for the full details.