TypeClawTypeClaw
Reference

Slack bot

Socket Mode adapter — scopes, tokens, thread stickiness, and capabilities

Part of the channel adapters family.

Transport: Socket Mode (no public URL required). Setup walkthrough: Add a channel.

Auth

Two tokens, both stored in secrets.json:

FieldValue
channels.slack-bot.botTokenxoxb-… bot token
channels.slack-bot.appTokenxapp-… app-level token (Socket Mode)

CLI: typeclaw channel add slack-bot (interactive), typeclaw channel set slack-bot (rotate).

reactions:write is required

The bot token must have the reactions:write scope. Without it, Slack returns missing_scope on the auto-:eyes: engage reaction and every channel_react call. See the app manifest in Add a channel for the full scope list.

Capabilities

FeatureSupportedNotes
Outbound messagesyesSlack markdown block; ~11,500 char chunk limit
Multi-chunk messagesyesAdditional chunks thread under the first
Reactions (add + remove)yesRequires reactions:write scope
Typing indicatorlimitedOnly in Slack AI Assistant threads via assistant.threads.setStatus; top-level and non-threaded chats get no indicator
Channel-name resolutionyes
Self identityyes
HistoryyesLimit 200 messages
Attachmentsyes
Membershipyes

Thread stickiness

Replies in the same Slack thread route to the same session. New top-level messages start fresh sessions. The app_mention event is required for the bot to hear mentions in channels where it is not a member.

Slash commands

/help, /stop, /reload, /restart. Thread !cmd syntax also works.

Config

{
  "channels": {
    "slack-bot": {
      "enabled": true,
      "engagement": {
        "trigger": ["mention", "reply", "dm"],
        "stickiness": { "perReply": { "window": 900000 } }
      },
      "history": {
        "prefetch": {
          "thread": { "head": 3, "tail": 10 },
          "channel": { "tail": 10 }
        }
      },
      "quotedReply": { "enabled": true, "queueDelayMs": 10000 }
    }
  }
}

All fields above are shared across adapters. No adapter-specific extensions exist for slack-bot. Credentials live in secrets.json#channels.slack-bot.

See also

On this page