Slack
Reads the public Slack channels that the LightHouse app has been added to, a thread at a time, so agents can answer from what the team has already said. A person adding the app to a channel is the decision to let the agents read it.
At a glance
Section titled “At a glance”| Collector | Slack, version 1.0.0 |
|---|---|
| Reads | Slack: Slack Web API (the vendor's documentation) |
| Family | Communication |
| Kind | Chat |
| Ways to connect | Access token, OAuth approval |
| Scopes |
|
| Read only | Yes |
| Vendor's API can move money | No |
| Personal data | Content, Identity |
| Hosts it may contact | slack.com |
| Vendor API versions | Slack Web API (auth.test, conversations.list, conversations.history, conversations.replies) |
| Lowest engine version | 0.45.0 |
What it reads
Section titled “What it reads”- Public channels the app is a member of (by name with
channels, or every such channel). Private channels, direct messages and group messages are never read; the scopes asked for cannot reach them. - A thread is one record: the first message and its replies, in order, with the channel and who wrote it. Slack’s mentions and links are turned into readable text.
- Each pull reads the last
recent_days(seven by default) of every channel, which catches new messages and replies to recent threads. Everyreconcile_hours(six by default) the wholehistory_dayswindow (365 by default) is listed and held to what the cursor knows: a thread that has gone is withdrawn, one whose replies changed is read again, and one older than the window leaves the corpus. - A channel the app has left, that was archived, or that you take out of
channelshas its threads withdrawn. - Never read: files, joins and other channel events.
How to connect
Section titled “How to connect”- A workspace administrator installs the LightHouse Slack app (or your own app, which can be the one Octy answers in) with the bot scopes below. The bot token begins
xoxb-. - A person adds the app to each public channel to be read.
- In LightHouse, open Connectors, choose Slack, name the channels (optional), the label and how often to read, and approve the install or paste the bot token.
- In code, give the deployment the bot token as
SLACK_TOKENfrom your secret store and add akind: slacksource card withlabel, optionalchannels,history_daysandrequires.
Permissions
Section titled “Permissions”Bot scopes channels:read (which public channels the app is in), channels:history (their messages and threads), users:read and team:read. The collector sends only GET requests to slack.com: auth.test, conversations.list (public channels only), conversations.history and conversations.replies. It never posts. Its read-only test proves it on every change.
Limits
Section titled “Limits”history_daysis 1 to 3650 andrecent_days1 tohistory_days; channel names are lower-case letters, digits,_and-.- A channel the app is not a member of is not read.
- A thread older than the window leaves the corpus.
- Slack’s
ok: falseanswers are reported by code only (for examplenot_in_channel,missing_scope). - Requests are paced and back off when Slack asks (
Retry-After).
Data handling
Section titled “Data handling”- Message text is copied into the deployment’s corpus under the source’s
label, with the sender’s display name. Chat names people and holds personal data of any kind. - The bot token stays in your secret store and is never written to logs or run notes; the error reports Slack’s error code, never a body.
- Nothing leaves the deployment: only counts reach LightHouse.
Troubleshooting
Section titled “Troubleshooting”| What you see | What it means | What to do |
|---|---|---|
not Slack channel names |
A channel is not written as a lower-case Slack name | Use the channel’s name without # |
history_days is 1 to 3650, and recent_days 1 to history_days |
A window is out of range | Correct the numbers |
credential variable 'SLACK_TOKEN' is not set |
The bot token variable is empty | Set it to the bot token |
Slack refused: invalid_auth |
The token is wrong or revoked | Reinstall the app and use its new bot token |
Slack refused: missing_scope |
The app lacks channels:read or channels:history |
Add the scope and reinstall |
Slack refused: not_in_channel |
The app is not in the channel | Add the app to the channel |
| Read succeeded, 0 written | Nothing new in the recent window | Nothing to do |
Certification
Section titled “Certification”Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See How collectors are certified.
| Date | Collector | Engine | Vendor API | Method | Expires |
|---|---|---|---|---|---|
| 10 November 2026 | 1.0.0 | 0.45.0 | Slack Web API | Fixtures only: built, not certified | Not applicable |
Security posture
Section titled “Security posture”From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.
| Last scanned | 10 November 2026 |
|---|---|
| Critical findings | 0 |
| High findings | 0 |
| Medium findings | 0 |
| Low findings | 0 |
| Info findings | 0 |
| Release blocked | No |
| Network allow-list check | Pass |
| Read-only behavioural test | Pass |
| SBOM (CycloneDX) | Produced |
| Dependency licences | Pass |
| Scanners | bandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only |