the Agents & AI Apps sidebar · ← concepts
Slack ships a dedicated sidebar UI for installed agent apps — the user clicks the AI icon and gets a split pane with the bot. It’s a richer surface than a DM: the bot can set a title, suggest follow-up prompts, show a typing indicator, and know which channel the user is currently viewing.
The pane is a special Slack thread with a fixed thread_ts opened by Slack on the user’s click. Slack delivers two extra events to the app: assistant_thread_started when the user opens the pane, and assistant_thread_context_changed when the user navigates to a different workspace channel while the pane is open. Outbound, the app can call assistant.threads.setStatus, setTitle, and setSuggestedPrompts.
A DM is just a message stream. The pane adds affordances:
pane_set_prompts after a reply so the next click is fast.setStatus("thinking…") while the agent runs.Per pane, slakd stores a row in pane_sessions keyed by (team_id, user_id, thread_ts) with the pane DM channel and the optional context_jid the user is viewing. When assistant_thread_started arrives, slakd:
pane_sessions row.ARIZUKO_ASSISTANT_NAME (falls back to the instance name) via bot.paneTitle() at slakd/bot.go:413.pane_set_prompts MCP calls.verb="pane_open" so the route table can match on it.On every agent reply in a pane, slakd posts via chat.postMessage with thread_ts set to the pane’s thread, then optionally calls setSuggestedPrompts with whatever the agent staged via pane_set_prompts.
pane_set_prompts(jid, prompts) — stage 3-4 follow-up buttons that appear after the next reply lands.pane_set_title(jid, title) — override the pane title for the current conversation.Both are no-ops on platforms without a pane (Discord, Telegram, etc).
Slack app config (api.slack.com/apps):
assistant:write (keep chat:write).assistant_thread_started and assistant_thread_context_changed. Keep message.im for inbound pane messages.Full walkthrough in deploy on Slack.
Spec: specs/7/D. The pane_sessions schema: pane_sessions. The MCP tool reference: pane_set_prompts, pane_set_title.