Slack integration
Slack access changes,
recorded and verifiable.
Governax records access changes from Slack into a tamper-evident ledger: workspace membership, channel membership and lifecycle, external sharing, and the outcome of access requests raised with /governax. Each change is appended to a per-entity, SHA-256 hash-chained record that anyone with read access to the entity can verify.
What lands in the ledger
What does Governax record from Slack?
Workspace membership
Members joining the workspace, role changes, deactivations and reactivations.
Channel membership
Members added to and removed from the channels the Governax bot has been added to.
Channel lifecycle
Channels created, renamed, archived, unarchived and deleted, for every public channel.
External sharing
Channels shared or unshared externally, and Slack Connect invites requested, approved, accepted or declined.
Workspace identity
Changes to the workspace name, domain and email domain.
Access requests
Requests raised with /governax, and the Approve or Deny decision on each one.
Not captured: Messages, file shares, reactions and ordinary conversation are not captured. Governax requests no message read permission, so it cannot read your messages.
How does the Slack connection work?
Slack is the fastest connector to set up: one OAuth authorisation, no app registration and no tokens to paste. Governax operates its own Slack app and you authorise it, which in most workspaces means being an admin or having admin approval.
Events arrive by webhook, typically within seconds. Private channels are visible only where the app has been added, and Slack only reports who joined or left a channel when the app is a member of it, so add the Governax bot to the channels you need covered.
Disconnecting revokes the token with Slack and erases the stored copy. Events already recorded stay in the ledger.
The baseline snapshot on connect
When you connect, Governax records every workspace member it has not seen before as an access.baseline_observed event, and records each channel, including archived ones, with whether it is private, archived or externally shared and how many members it has. Who is in which channel is not part of the snapshot: per-channel membership is captured from the moment you connect.
How do Slack access requests work?
Type /governax anywhere in the workspace. A dialog asks what you need, in free text, and who should approve it. The approver receives a direct message with the request and two buttons, Approve and Deny, and the message updates in place to show the outcome.
The ledger records decision.requested when the dialog is submitted, then decision.approved or decision.denied when the approver decides. Request and decision share a correlation identifier, so the pair can be matched, and both are append-only, hash-chained ledger events like every other.
- Approving records the decision. Nothing is provisioned, and a human still performs the grant.
- One approver per request, with no multi-stage approval or separation of duties.
- Nothing reminds, escalates or times out. A request that is never actioned stays pending.
- Governax does not check that the person who presses the button holds a particular role. The record shows who actually decided.
Scope
What Governax does not do
Governax is a system of record, not a control plane. It records Slack access changes after they have happened; it does not grant, revoke or block anything.
It does not read messages
There is no message read permission in the scopes Governax requests. The two scopes that can post exist only for the /governax approvals flow.
It does not grant access
Approving a /governax request records the decision. A human still performs the actual grant in whatever system the request concerns.
It does not chase approvals
A request has one approver. Nothing reminds, escalates or times out, and an unanswered request stays pending.
It does not block changes
Events arrive after a change has already taken effect in Slack. Governax records changes; it cannot stop one from happening.
How this helps with audits
When an auditor asks who had access in Slack and when it changed, the answer is a filtered view of the ledger rather than a folder of screenshots. Approvals are recorded for access requests raised with /governax in Slack. Filters combine tool, event type, actor and a date range, and the date range matches when the change happened in Slack, not when Governax recorded it.
Because a baseline snapshot is taken when you connect, the record starts from who already had access, not only from the changes that followed.
Every event is appended to the entity's SHA-256 hash chain, and database triggers reject every update and delete. Anyone given read access to the entity, an auditor included, can re-run verification, which recomputes every hash and checks every link.
Verification proves that what was recorded has not changed. It cannot prove that everything that happened was recorded. Governax records the evidence; it does not map it to controls, perform the audit or export reports.
Questions
Slack integration FAQ
Can Governax read our Slack messages?
No. Governax requests no message read permission, such as channels:history, and message content is not captured. The two scopes that can post, chat:write and im:write, exist only for the /governax approvals flow.
Does approving a /governax request grant the access?
No. Approving records the decision in the ledger and tells the requester. Nothing is provisioned: a human still performs the actual grant in whatever system the request concerns.
Does Governax see private channels?
Only the private channels the Governax app has been added to. Slack also only reports who joined or left a channel when the app is a member of that channel, so add the bot to the channels you need covered.
Does a /governax request expire?
No. A request that is never actioned stays pending indefinitely. Nothing reminds, escalates or times out, so if the approver is away, raise a new request naming someone else.
What happens when we disconnect Slack?
Disconnecting revokes the token with Slack and erases the stored copy. Events already recorded stay in the ledger, because the ledger is append-only.
Other integrations
- GitHubOrganisation, team and repository access, branch protection
- OktaUsers, groups, app assignments and admin roles
- Google WorkspaceUsers, groups, admin roles and third-party app grants
- AWSIAM users, roles and policies, read from CloudTrail
- Microsoft Entra IDDirectory roles, group membership and app consent
- GitLabGroup and project membership, tokens and deploy keys
Connect Slack and start the record.
Read the Slack setup guide, compare plans, or start free with one entity.