---
title: "Slack connector"
description: "Connect Slack to Overlane: Post messages and approval requests to Slack channels, let people answer approvals there, and answer questions put to the project assistant by mentioning the app. Auth, setup, typed actions with their autonomy class, and events."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.overlane.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack connector

{/* Generated from the connector's declaration and setup text by `pnpm --filter @overlane/sdk generate`. Do not edit. */}

Post messages and approval requests to Slack channels, let people answer approvals there, and answer questions put to the project assistant by mentioning the app. The native path is Overlane's own threads and approvals; this adds Slack on top.

Connectors are optional on every plan. The Overlane-native path is Overlane team threads and approvals in the web app; nothing in Overlane needs Slack connected. Read [how connectors work](/developers/connectors/) first.

## Auth

OAuth. Scopes: `channels:read`, `chat:write`, `chat:write.public`, `app_mentions:read`.

## Set it up

1. Create a Slack app for your workspace and add the bot scopes listed above (channels:read, chat:write, chat:write.public, app_mentions:read).
2. Install the app to the workspace and copy the Bot User OAuth Token.
3. Store it: put the token in an environment variable and run the connect command below. The token goes to the tenant vault and is never shown again.

```sh
overlane connector connect slack --secret-env SLACK_TOKEN
overlane connector show slack
```

The credential is read from the environment variable (or standard input with `--secret-stdin`), stored in your team's encrypted vault and never shown again. Storing, rotating or revoking a credential is in the `secrets` [autonomy class](/developers/approval-rule/). Revoke it with `overlane connector revoke`, which deletes the stored secret.

## Actions

Run one with `overlane connector run`. The class says what the call needs from the autonomy gate; see [the approval rule](/developers/approval-rule/).

| Action | Kind | Autonomy class | What it does |
| --- | --- | --- | --- |
| `list_channels` | read | none | List public channels |
| `post_message` | write | `bots` | Post a message to a channel |
| `reply_message` | write | `bots` | Reply in a message thread |
| `request_approval` | write | `bots` | Post an approval card with Approve and Deny buttons |
| `delete_message` | destructive | `deletion` | Delete a message the app posted |

```sh
overlane connector run slack list_channels
```

## Events

In the app's Event Subscriptions and Interactivity settings, set the Request URL to `https://api.overlane.app/webhooks/connectors/<team>/slack`, subscribe to the app_mention bot event and add the app_mentions:read scope, then store the app's signing secret with `overlane connector connect slack --webhook --secret-env SLACK_SIGNING_SECRET`. Map each Slack user who may answer approvals or ask the project assistant to a team member with `overlane connector chat-user`. A mention of the app in a channel it is in is answered in that message's thread, with that member's role and the same tools as in the app.

| Event type | Meaning |
| --- | --- |
| `event.message` | A message was posted in a channel the app is in |
| `event.app_mention` | The app was mentioned |
| `approval.answered` | A person pressed Approve or Deny on an approval card |

Each event is verified against the stored webhook secret and kept once by the provider's event ID, so a replay changes nothing. List them with `overlane connector events`.

## Limits and content

Overlane makes at most 40 Slack calls a minute for one team, to protect the provider's own quota. A call over it returns `429` with `Retry-After`. A rate limit from the provider itself is waited out with its `Retry-After` and retried.

Everything Slack returns is data, labelled `untrusted_data`, never instructions. If the text looks like it is written to instruct an AI reader, the label says so and the text is returned unchanged; nothing in it changes what Overlane does.

## Sources

- [Slack: verifying requests](https://api.slack.com/authentication/verifying-requests-from-slack)
- The connector follows the provider's documentation as of 2026-10-01.

Source: https://docs.overlane.app/developers/connectors/slack/index.mdx
