arizuko

arizukoconcepts › slack pane

slack pane

Voice was a modality every platform shares. The Slack pane is the opposite case: an affordance only one platform offers, which the agent can light up when it’s there. 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 richer 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. Where a platform has no pane, the same tool calls quietly no-op — the agent doesn’t branch on platform.

what it is

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.

why it matters

A DM is just a message stream. The pane adds affordances:

how it works

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:

  1. Upserts the pane_sessions row.
  2. Sets the pane title from ARIZUKO_ASSISTANT_NAME (falls back to the instance name) via bot.paneTitle() at slakd/bot.go:413.
  3. Stages default suggested prompts from the bot’s compiled starter list; the agent overrides them per pane with pane_set_prompts MCP calls.
  4. Synthesises an inbound with 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.

MCP tools

Both are no-ops on platforms without a pane (Discord, Telegram, etc).

how operators enable it

Slack app config (api.slack.com/apps):

  1. Agents & AI Apps — toggle on.
  2. OAuth scopes — add assistant:write (keep chat:write).
  3. Event Subscriptions — subscribe to assistant_thread_started and assistant_thread_context_changed. Keep message.im for inbound pane messages.

Full walkthrough in deploy on Slack.

go deeper

Spec: specs/7/D. The pane_sessions schema: pane_sessions. The MCP tool reference: pane_set_prompts, pane_set_title.