Skip to content

0022 — The console archives only ordinary channels, only when asked

Status: Accepted; refines 0017 Date: 2026-10-01

Context

Forgetting a console channel's record leaves the channel in Slack. Operators asked for the channel to be archived at the same time. Archiving is the one Slack action that cannot be undone from here, and on a Slack Connect channel it closes the channel for every organisation in it.

Decision

The delete dialog of a console channel has an opt-in, off by default: "Also archive #name in Slack". It is offered only for a workspace whose controller reports that it acts (a dry run, or no report, is archived by hand). Ticked, the server first checks, with nothing changed on a refusal, that the workspace acts and asks Slack (conversations.info) whether the channel is shared; only then does it delete the record and call conversations.archive, under the same operator role as the delete, audited as roster.slack_channel.archived. A Slack Connect channel is never archived from the console, whoever hosts it: Slack is asked, not the controller's report, so a held record whose channel became shared is caught too. A channel the bot cannot see, or a Slack that does not answer, is refused the same way. If the archive call itself then fails, the record is already deleted and the note says to archive it by hand. A channel the policy defines cannot be deleted from the console at all. The reconciler itself never archives.

Consequences

Archiving a shared channel is a manual act in Slack, by someone who sees the other organisations. The record deletion and the archive are two audit records. The archive option costs one conversations.info call and needs a fresh enough report: with none, the operator archives by hand.

Alternatives considered

Archive whenever a record is deleted. Rejected: a default that destroys.

Allow archiving a Slack Connect channel for its host. Rejected: the host should not be able to close another organisation's channel from a delete button.