Pass one of agent, team, or workflow to the Slack constructor.
from agno.os.interfaces.slack import SlackSlack(agent=my_agent, streaming=True, prefix="/slack")
Parameter
Type
Default
Description
agent
Optional[Union[Agent, RemoteAgent]]
None
Agno Agent or RemoteAgent instance.
team
Optional[Union[Team, RemoteTeam]]
None
Agno Team or RemoteTeam instance.
workflow
Optional[Union[Workflow, RemoteWorkflow]]
None
Agno Workflow or RemoteWorkflow instance.
prefix
str
"/slack"
URL prefix for Slack endpoints (e.g., /slack means events arrive at /slack/events).
tags
Optional[List[str]]
None
FastAPI route tags for API documentation. Defaults to ["Slack"].
reply_to_mentions_only
bool
True
When True (default), the bot responds to @mentions in channels and all DMs. When False, responds to all channel messages.
token
Optional[str]
None
Bot token. Falls back to SLACK_TOKEN environment variable.
signing_secret
Optional[str]
None
Slack app signing secret. Falls back to SLACK_SIGNING_SECRET environment variable.
streaming
bool
True
Enable real-time streaming with task cards and live text updates.
loading_messages
Optional[List[str]]
None
Status messages shown while the agent processes. Rotated automatically by Slack.
task_display_mode
str
"plan"
How task cards render in the streaming UI. "plan" shows a collapsible plan block.
loading_text
str
"Thinking..."
Status text shown while the agent starts processing.
suggested_prompts
Optional[List[Dict[str, str]]]
None
Prompts shown when a user opens a new thread. Each dict has title and message keys. Defaults to Help and Search prompts.
ssl
Optional[SSLContext]
None
SSL context for the Slack WebClient.
buffer_size
int
100
Characters to buffer before flushing a streaming update.
max_file_size
int
1073741824
Maximum file size in bytes for uploads and downloads (default 1 GB).
resolve_user_identity
bool
False
Look up each user’s email and display name via the Slack users.info API. When enabled, the agent receives the user’s email as user_id instead of their Slack ID, and metadata includes user_name and user_id (the resolved email).
Handles Slack interactive components for Human-in-the-Loop (HITL) features: button clicks, form submissions, and approval/denial actions.
Status
Description
200
Interaction acknowledged. Processing happens in the background.
400
Missing Slack headers or malformed payload.
403
Invalid Slack signing signature.
HITL features require this endpoint. Configure Interactivity & Shortcuts in your Slack App settings and set the Request URL to {your-url}{prefix}/interactions.
Resolve channel names and IDs (called on every inbound event)
chat:write
Send messages and stream responses
im:history
Read DM history for thread context
All five scopes above are required for a functional streaming bot. Missing app_mentions:read means the bot won’t receive @mentions; missing channels:read causes channel name resolution to fail silently.