Skip to content

0025 — The Slack Apps catalogue keeps credentials but mints none

Status: Accepted; applies 0008 and 0014 Date: 2026-10-01

Context

Besides its own App, the roster creates and installs Slack Apps the deployment declares as data (slackApps: an alert-posting App, for example), and keeps their bot tokens. 0008 and 0014 allow the issuer to mint a credential for another system only where membership there is governed here; Slack now is such a system, but a catalogue App's bot token is not minted per request, it is obtained once from Slack's own install.

Decision

The Slack Apps catalogue keeps the token Slack issued at install (<id>.slack_bot_token in <release>-slack-catalogue-apps) and nothing issues a token for a caller at request time. push copies only that bot token to a secret store, one PushSecret per entry. An install is refused unless Slack says it belongs to the team recorded for that workspace. The roster's own reconciler token is never exposed through the catalogue.

Consequences

A consumer reads a long-lived bot token from a secret store, rotated as one; Slack, not this issuer, decides its scopes. If a request-time token minter for Slack is ever wanted, it needs its own record against 0008.

Alternatives considered

An endpoint like /token for a Slack catalogue token. Rejected: it turns the catalogue into a minter without a governance reason.