Adds allowedSlackUserIds: a list of Slack user IDs permitted to interact with the bot. A user not on the list is ignored silently — no reply, no ephemeral, no reaction handling, no approval decision. Nothing at all.
Enforcement sits at the gateway wiring, so it covers every inbound surface: DMs, @mentions, thread replies, the /paperclip slash command, approval button clicks, and ask_human emoji/thread responses. Denials are logged and counted (slack.access.denied, tagged by surface).
An empty list (the default) means the allowlist is disabled and any workspace member can use the bot — so upgrading changes nothing until you populate it. Slack user IDs come from a member's profile → "Copy member ID" (e.g. U01ABC2DEF3).
Matching trims whitespace and ignores case; a blank user id against a non-empty list is denied (fail closed).
177 tests, including a per-surface denial test for each of the five paths — each verified to fail if its guard is removed.
🤖 Generated with Claude Code