@temper in a channel. The mention agent — an eve app| team id | author | principalId | principalType |
|---|---|---|---|
| yes | human | slack:<team>:<user> | user |
| yes | bot | slack:<team>:bot:<user> | service |
| no | human | slack:<user> | user |
| no | bot | slack:bot:<user> | service |
:. Only a human principalprincipalType === "user") is admitted; bots surface as service and are(auth_provider = 'slack', auth_provider_user_id = <the whole
principal>) to a profile_id, with a uniqueness constraint that means a{"slack_principal_id": "..."}.emailauth_provider = 'slack', the opaque principal, theprofile_id. This row holds no secret.temper slack disconnect (self-serve) and temper admin slack disconnect
<principal> (operator) both run one chokepoint that:kb_principal_standing) before decrypting anything, and theexp, set by the IdP when it mintedslack vault key fingerprint: …. When a grant will| The grant was sealed under | Mention result |
|---|---|
a key you listed in SLACK_VAULT_RETIRED_KEY_FINGERPRINTS | "reconnect here", with a fresh link. The user re-links from Slack. |
| the configured key, yet it will not open (a tampered row) | "reconnect here". An error is logged: investigate the row. |
| any other key | an error (HTTP 500), and the grant is left untouched. The log names both fingerprints. Deploy the right key and every such grant works again. |
SELECT DISTINCT encode(key_fingerprint, 'hex') FROM kb_slack_grant_vault)SLACK_VAULT_RETIRED_KEY_FINGERPRINTSunstamped to the list.@temper again. The principal is unlinked, so the normal flow