Distribution · Slack app

Determine in Slack.
Prove it outside Slack.

When an agent proposes something that cannot be undone, Interlok holds it and posts a card into your channel: tier, target, fingerprint, expiry. A named human determines it. The determination is signed and chained in the Interlok ledger — Slack is the interface, never the record.

01

Create the app from the manifest

Slack → Your Apps → Create New App → From an app manifest. Paste the manifest served by this deployment; every URL is already correct.

02

Install into the workspace

Open Interlok → Slack in the console and press Install. The install link carries a signed, 10-minute state so the callback can trust which org is installing without a session.

03

Pick the determination channel

Choose where held-action cards are posted. The choice itself is recorded in the ledger — the channel a determination was made in is part of the evidence.

04

Link each approver

Every human who determines links their Slack member ID to their Interlok identity. An unlinked tap cannot determine: an agent may never approve an agent.

Scopes, and why each one exists

chat:writePost the determination card into the approval channel and update it once determined.
commandsServe /interlok so an approver can pull the held queue without leaving Slack.
users:readResolve the tapping member to a linked Interlok approver — a determination must be attributable.
im:writeDM the requesting human when their action is held, approved or refused.

No history scopes, no file scopes, no user token. Interlok reads nothing in your workspace; it posts, updates, and resolves the identity of the person who tapped.

Review checklist

What a Slack reviewer — or your own security team — should be able to confirm before this app is allowed near a production agent.

  1. 01
    Manifest served from the deployment

    GET /api/public/v1/slack/manifest returns the manifest with this deployment's URLs already filled in.

  2. 02
    Request signing verified

    Every interaction and slash command verifies the Slack signature over the raw body within a 5-minute window before it is processed.

  3. 03
    Install state is signed

    The OAuth callback trusts nothing from the browser: org and installer travel in an HMAC-signed, 10-minute state.

  4. 04
    Agent-may-never-approve-an-agent holds in Slack

    A tap resolves to a linked human Interlok member; unlinked or bot identities cannot determine.

  5. 05
    T3 requires two distinct humans

    Tier 3 cards collect two separate signatures; the same Slack member cannot satisfy both.

  6. 06
    Least data in Slack

    Cards carry the action fingerprint, tier and target reference — never the action payload.

  7. 07
    Uninstall is clean

    Disconnecting from the console revokes the stored bot token and records the revocation in the ledger.

What never enters Slack

  • — Action payloads. Cards carry the tier, target reference and payload fingerprint.
  • — Witness or customer signing keys. Determination signatures are produced against Interlok, not Slack.
  • — Credentials of any kind. Interlok stores fingerprints, never values.