Slack

Slack integration.

Turn Slack messages into Speakeasy requests — with explicit control over which channels are watched, what gets created, and what stays private.

Overview

Speakeasy connects to Slack as a bot using OAuth installation and a signed HTTP Events API. One Slack app serves a Speakeasy deployment; each workspace installs it and is isolated as its own tenant. Socket Mode is not used.

Once installed and a channel is mapped to one of your organizations, messages in that channel can become Speakeasy requests according to the policy you set.

Installing the App

Install from the Speakeasy web app: Settings → Integrations → Slack → Connect Slack. You'll be redirected to Slack's OAuth consent screen and back. After install, confirm the workspace appears with the bot user.

Inviting the bot: Speakeasy auto-joins mapped public channels. For private and Slack Connect channels, a human must run /invite @Speakeasy — Slack does not allow bots to self-join private channels.

Channel Mapping

Each mapped channel binds a Slack channel to one Speakeasy organization, with a few policy fields:

  • Capture mode - which explicit triggers may create a request (mention and/or the “Send to Speakeasy” message shortcut).
  • Evaluation mode - whether plain messages (no mention or shortcut) are evaluated at all.
  • Output Channel - where Speakeasy posts the request thread, lifecycle updates, and follow-up prompts.
  • Source channel audience - internal or client_visible. Marking a source channel client-visible suppresses automated acknowledgement posts back into that channel.

Request Creation Modes

When a message qualifies, what happens next depends on the mode:

  • Manual review - stages the request for a human to start. Nothing runs automatically. Safe default.
  • Auto-investigate & review - automatically runs a read-only investigation and presents findings. No changes are deployed without approval.
  • Auto-execute - enqueues the request for the full agent immediately.

Message Evaluation

In channels set to evaluate all messages, each non-explicit message is scored by an actionability classifier. A request is only created when the score meets the channel's actionability threshold. Bot messages are ignored by default, and you can choose to ignore thread replies.

Explicit triggers (mention or the message shortcut) create a request directly, subject to the capture-mode rules.

Data Handling

What leaves your workspace

In channels configured to evaluate all messages, message text plus channel, organization, and sender context is sent to Anthropic (Claude Haiku) to classify whether the message is actionable. Channels that only react to explicit mentions or the shortcut do not require this classification step. Enable evaluate-all only on channels where that data flow is acceptable.

Credentials and tokens are stored encrypted, and inbound Slack requests are verified with Slack's request signature (including a 5-minute replay window).

Request Threads

When a request is created, Speakeasy posts a brief acknowledgement in the source channel (suppressed for client-visible sources) and opens a request thread in the Output Channel.

Replying in that thread talks to the agent. Follow-up replies are routed back into the request, and lifecycle updates (paused, approval needed, completed, failed) are posted to the same thread automatically.

Limitations

  • Slash commands are not active. The bot does not currently expose any slash command.
  • Private channels require a manual invite. Only public channels are auto-joined.
  • DMs are off by default. Direct-message events are not subscribed unless explicitly enabled.