Slack
What it indexes
The Slack connector indexes message threads from non-archived public channels and private channels that the Slack bot can access. A root message and its replies become one searchable document. Direct messages are not part of the connector’s channel crawl.
By default, bot and app messages are filtered out. You can include them when automated feeds are useful. You can also limit channels by exact lowercase names or full-match regular expressions, then apply a separate exclusion list after the include filter.
Prerequisites
- An OpenCore Admin must be able to create a credential and connector.
- Install a Slack app in the workspace and make sure its bot can see every channel you intend to index. Add the bot to private channels explicitly.
- The built-in OAuth flow requests channel history/read, private-channel history/read, channel join, user and email read, user-group read, and IM history scopes. It does not request
team:read. A normal single-workspace installation can use this built-in OAuth flow; the indexed connector still crawls public and private channels, not direct messages. - Enterprise Grid validation calls
auth.teams.list. The current built-in OAuth does not requestteam:read, so Grid deployments must use a manual Bot Token withteam:readunless the deployment has explicitly extended the built-in OAuth scope. - Built-in OAuth requires
OAUTH_SLACK_CLIENT_ID,OAUTH_SLACK_CLIENT_SECRET, a correctWEB_DOMAIN, and the deployment’s OAuth state store. If those are unavailable, create a bot-token credential manually.
Credentials
OAuth is implemented for Slack. OAuth availability in the Admin UI is deployment-dependent. For Enterprise Grid, use the manual Bot Token path unless your deployment has extended the built-in OAuth request to include team:read.
Configure in OpenCore
- In the Admin panel, open Connectors, choose Slack, and create or select the Slack credential. Use built-in OAuth for a normal workspace; for Enterprise Grid, use a manual Bot Token with
team:readunless OAuth was extended by the deployment. - Enter an optional channel include list. Channel names are normalized to lowercase.
- Enable include regex only when every value is a valid full-match pattern.
- Add exact or regex exclusions for channels that must never be indexed.
- Decide whether bot and app messages should be included.
- Choose the document access mode your deployment exposes, set refresh and pruning options, and create the connector.
- Run the initial index attempt before attaching the resulting document set to an Agent.
Permissions
Slack source-permission sync is a conditional deployment capability. When Auto Sync Permissions is available and selected, OpenCore resolves channel access and stores source access for indexed threads. Private channels are restricted to resolved members.
For an Enterprise Grid public channel, OpenCore restricts access to the resolved union of users in its workspaces only when the workspace/team mapping is known and non-empty and that union has no more than 5,000 entries. If the mapping is unknown or empty, the channel’s workspace is absent from the mapping, or the user union exceeds the 5,000-entry implementation limit, permission sync fails open for that public channel and stores it as OpenCore Public. Every OpenCore user can then search it, which can be broader than Slack workspace membership. This fallback applies to public channels only; it does not turn private channels Public.
When source-permission sync is not available or is not selected, Slack channel membership is not enforced automatically in search. Use the OpenCore Private access mode with explicitly assigned user groups for restricted content, or Public only when every OpenCore account may see all indexed Slack content.
Verify
- Confirm credential validation can authenticate and list at least one public channel.
- Start an index attempt and verify it finishes without
invalid_auth,not_authed,token_revoked, ormissing_scopeerrors. - Search for a recent root message and a reply from an included channel.
- Confirm excluded channels and default-filtered bot messages do not appear.
- If Auto Sync Permissions is selected, test with one user who can access a private channel and one who cannot.
- On Enterprise Grid, also test a public channel with an OpenCore user outside every Slack workspace where the channel is shared. If that user can search it, treat the channel as fail-open OpenCore Public and verify that every OpenCore user is permitted to see its contents before release.