Skip to content

Slack

api.slack.com/apps → Create New App → From scratch.

Under OAuth & Permissions, add scopes:

  • chat:write — send messages
  • channels:read — list channels
  • channels:history — read channel history
  • search:read — search messages
  • users:read — resolve user IDs to names

Redirect URL: https://tappass.example.com/providers/slack/callback

Terminal window
SLACK_CLIENT_ID=<id>
SLACK_CLIENT_SECRET=<secret>
SLACK_SIGNING_SECRET=<signing-secret>
Terminal window
tappass provider connect slack --agent chat-bot
# opens Slack's install flow
OperationOp groupEndpoint
send_messagewritePOST /chat.postMessage
list_channelsreadGET /conversations.list
channel_historyreadGET /conversations.history
search_messagesreadGET /search.messages
get_userreadGET /users.info
# Send a message
agent.call_provider(
provider="slack",
operation="send_message",
params={"channel": "#support", "text": "Ticket 123 escalated"},
)
# Read recent history
messages = agent.call_provider(
provider="slack",
operation="channel_history",
params={"channel": "C0123456", "limit": 50},
)

Prevent an agent from posting to any #exec-* channel:

package tool_decision
deny[msg] {
input.provider == "slack"
input.operation == "send_message"
startswith(input.params.channel, "#exec-")
msg := "cannot post to exec channels"
}

Outbound Slack messages are scanned for PII (email, SSN, credit card) before posting. Configure what gets masked in config/policies/detection.yaml:

detection:
outbound:
- provider: slack
action: mask # or "block"
categories: [pii.email, pii.phone, pii.financial]