ConnectionsSource connectors

Slack connector

Capture specific Slack threads into a GitHub context repository by mentioning the ctx| bot.

Fully managed app flow

This page covers the fully managed ctx| app, where one Slack app is owned by the deployment. Self-hosted operators must create and configure their own Slack app first. See Self-host Slack.

The Slack connector promotes durable engineering context — decisions, incidents, and design debates — from Slack into a git-backed context repository. It does not mirror whole channels, index the workspace, or sync banter in the background. Captures are auditable (git history records who captured, when, and which Slack thread), not a reviewed pull-request gate.

Connect Slack to ctx|, bind a context repository, then @mention the bot in Slack. Mentioning the bot starts a small in-thread agent. Ask it to capture this, or mention it with no extra text, to snapshot the thread as Markdown under slack/channels/. Later mentions on the same thread update the same file. Other intents get a short capability reply; v1 does not answer product questions in Slack.

A Slack workspace can be connected to one ctx| organization.

Two ways to work with Slack

ApproachJob
ctx| Slack connector (this page)Durable, auditable context: capture chosen threads into git for indexing
Slack MCP serverQuery-time access: search and read the live workspace from your developer agent

If you want general access to your Slack workspace from tools such as Cursor or Claude, add Slack’s MCP server to your developer environment. See Slack’s Guide to Model Context Protocol in Slack. ctx| does not replace Slack MCP, and Slack MCP does not create the same git-native, ingested context that the connector does.

Prerequisites

  • An active GitHub connection in ctx|.
  • A context repository (we recommend ctxpipe-context).
  • Permission to install the ctx| Slack app in the workspace.
  • Ability to /invite the bot into any channel where you will capture threads.

Setup flow

Start from Connectors

Open Connectors, choose Add connection, then Slack.

Authorise the workspace

Complete the Slack OAuth popup. ctx| stores an encrypted bot token for that workspace connection. One Slack workspace maps to one ctx| org.

Bind a context repository

Select the repository that should receive captured threads. ctx| commits snapshots to its default branch. Prefer a separate private repo when captures may include sensitive private-channel content. The ctx| GitHub App must have access to the selected repository and permission to write contents.

Capture threads in Slack

In each channel where you want capture, /invite the bot (use its Slack @handle from the connector card), then mention it inside an existing thread — a channel-top-level mention is refused:

@your-bot-handle capture this

A bare mention with no extra text also captures. ctx| replies in the thread with ctx| agent working…, then updates that message (or posts a new reply if the update cannot land) to Engineering context captured with a View in GitHub link, or a short capability reply if you asked for something else. Later replies are not mirrored unless you mention the bot again on that thread (that recapture overwrites the same snapshot).

What is captured

  • Thread-first Markdown under slack/channels/<slug>--<channelId>/threads/…
  • Frontmatter identity: captured_at, Slack permalink, channel and thread ids, and captured_by handle + name (never a Slack user id)
  • File and image attachments as Markdown links to the Slack permalink (no binaries and no private download URLs in git)
  • The in-thread status reply is excluded from the snapshot
  • Threads longer than 500 messages are truncated (oldest kept); Slack status calls that out. Hosted deployments share one Slack app quota.

What is out of scope (v1)

  • Continuous channel mirroring or history backfill
  • Direct messages and multi-party DMs
  • Automatic refresh when someone replies after a capture
  • Slack Q&A / retrieval in-thread (future tool on the same agent)
  • Full video or file binary archival (attachments are permalink stubs)
  • Deleting git history when you uninstall Slack. Uninstall marks the connection revoked; captured files stay in the repository.

Troubleshooting

Capture does nothing

Confirm the connector status is Connected (repository bound), the bot is invited to the channel, and you used Slack autocomplete to @mention the bot. Bare mention or “capture this” snapshots the thread. Self-hosted operators should confirm Event Subscriptions include app_mention and that MODEL_PROVIDER* is set so the mention agent can interpret extra text — see Self-host Slack. If the Slack app's bot scopes were changed after installation, re-authorise the workspace; existing bot tokens do not gain new permissions automatically.

Private channel

Private channels work only after the bot is a member. Direct messages are not supported in v1.