Slack workspace security checklist for small teams: your chat app is part of the perimeter
By the time a company is ten people, the workspace chat holds more sensitive material than most of its systems: customer screenshots, API tokens pasted "just for a second," production error logs, contract links, candid talk about salary and strategy. A compromised Slack account isn't a leaked joke — it's a second inbox with files attached. Slack knows this; the admin console has the controls. This checklist is the quarterly pass that turns them on, in one sitting, and keeps the chat perimeter as managed as the rest of your Google Workspace.
1. The admin handshake (do this first, it gates everything else)
- Confirm who actually owns the workspace. Many small-team workspaces were created by a founder's personal account or an early contractor. Workspace Settings → Permissions shows the owner. If it's someone who left, reclaim it today — this is the same forgotten-admin problem as a domain hijack, with a faster clock.
- Keep exactly two workspace owners. One primary (the founder or ops lead) and one backup, both with MFA on the underlying account. Zero owners is a deadlock; five owners is a hole. Every other admin sits at the Admin or Member tier.
- Check the admin list against the org chart. Admin → Members → filter by role. Every admin should be a current employee with a reason to be one. Demote the rest — it's one click and reversible.
- Turn on two-factor enforcement if you're on a plan that has it. If you're not, at minimum require MFA on the email addresses that control admin accounts, because MFA on the recovery path is what actually stops account takeover.
2. Invite controls (who can let strangers in)
- Require admin approval for invites. Workspace Settings → Invitations → "Members can send invitations: off" (or "admin approval required"). The default — any member can invite anyone — is how a well-meaning hire adds a client, a friend, and a trial vendor to the same workspace.
- Restrict invites to your email domain. The "only people with @yourcompany.com addresses" toggle kills the mistyped-address accident and blocks throwaway-domain signups.
- Disable or gate the invite link. A shareable join link is a useful thing for onboarding week and a liability forever after. Rotate it if it's ever been posted anywhere public — pasted in a job ad, a community thread, or a SlideShare deck.
- Review "invitable domains" and default teams if you use them. Anything that lets a new joiner auto-subscribe to channels containing customer data deserves a second look.
3. The guest audit (the accounts everyone forgets)
- Export the guest list. Admin → Members, filter Multi-Channel Guests and Single-Channel Guests. Compare it against whoever is actively working with you right now. The list should be short and fully explained.
- Kill single-channel guests from finished projects. The freelancer from the Q1 site redesign is still reading your #general the way it reads today — including the layoff talk, the customer complaints, the pricing arguments. Deactivate or downgrade them the day the engagement ends. This is the Slack branch of your offboarding checklist.
- Convert ongoing partners to the minimum channel set. A multi-channel guest with six channels usually needs two. Fewer channels, smaller blast radius.
- Set a guest review cadence. Once per quarter, fifteen minutes, with the vendor list open. Guests accrete exactly like SaaS subscriptions: one at a time, each defensible, the pile unaccountable.
4. Apps and bots (the third-party floor you never see)
- Turn on app approval. Admin → Apps → "Require admin approval before apps can be installed." From now on, nothing with a Slack token joins the workspace without a named human saying yes.
- Inventory the apps you already have. Every installed app holds a token that can read messages, post as users, or open files. For each: who installed it, what it does, does anything still use it? Uninstall the orphans on the spot. It's the same "who approved this?" reflex as a vendor review.
- Check the scary scopes. In the app directory, open each app's permissions.
readacross all channels is normal for a standup bot.readpluswriteplus files for a tool nobody remembers installing is not. - Re-verify apps after staff changes. The bot your departed engineer installed with their admin account keeps its token after they leave. If its owner is gone, it gets a new named owner or it gets removed.
5. Webhooks and integrations (the quietest leak path)
- Hunt down incoming webhooks. Teams paste webhook URLs into CI systems, scripts, and monitoring tools because it takes thirty seconds. Those URLs are bearer credentials — anyone holding one can post to your channels as your tools. Find them (Admin → Configure Apps → Custom Integrations), list owners, and rotate anything not written down.
- Never put secrets in the channel a webhook posts to. CI failure messages, deploy logs, and error trackers leak secrets with impressive regularity. If a deploy summary shows environment variables, that channel now needs to be treated like a leaked key, not a chat room.
- Keep secrets out of Slack entirely. The rule is short: tokens, passwords, private keys, and customer PII never get typed into chat — not "temporarily," not "then delete it," not in a DM. Deleted is not purged, and screenshots outlive deletions. The password manager link is the alternative that costs nothing: roll one out and share from there.
- Audit outgoing webhooks too. An outgoing webhook posts channel messages to an external URL. One pointed at a personal server is a one-way exfiltration pipe that no security tool will ever flag.
6. Message retention and data controls (decide what chat remembers)
- Set retention deliberately, not by default. Default Slack keeps everything forever. For a small team that's usually fine — but make it a decision, and write it down. If you choose shorter retention for specific channels (e.g. a customer-support channel carrying PII), configure per-channel retention and say so in the channel topic.
- Declaw the channels that carry customer data. If support tickets, screenshots of admin panels, or customer names flow through chat, that channel is a data store. Treat its membership like access to the customer database: named people, current need, reviewed quarterly.
- Enable file-text search awareness. PDFs and screenshots pasted into chat are searchable and retained like messages. Ask the audit question: "If a competitor read this workspace's file list, what would we be embarrassed by?"
- Know your export rights before you need them. On free and standard plans, full export is admin-gated and plan-dependent. Don't discover during an incident that you can't produce the message history your incident plan assumes exists.
7. External sharing and Slack Connect (the doors to other companies)
- Review Slack Connect settings. Connect lets your channels include people from other companies. It's genuinely useful for client work — and every Connect channel is a shared perimeter you don't fully control. Decide who can create Connect channels (default: restrict to admins) and require a named owner per channel.
- Label external channels loudly. Rename Connect channels with a visible prefix (e.g.
ext-). People behave differently — more carefully — in a channel they can see is shared with outsiders. - Set file-download rules for external conversations. Slack lets you require files shared in Connect conversations to be downloaded via a link with expiration instead of stored in the chat. Enable it for the channels that touch customer data.
- Watch for the social-engineering angle. A request that arrives over Connect from "another company" inherits borrowed trust. Treat unexpected attachments and urgent asks in Connect channels the same way you treat them in email — verify out-of-band. The phishing checklist applies with the serial numbers filed off.
8. Device and session hygiene (the account end)
- Review active sessions for admins. Profile → "Review sessions" or the admin console shows devices and browsers with live sessions. Revoke anything unrecognized. Admin sessions on a spare laptop in a drawer are a persistent back door.
- Revoke sessions after any suspicious event. Weird DMs, unexpected app installs, a member reporting password-reset emails: kill all sessions for that account, force a password change, and read the first 30 minutes playbook before deciding it was nothing.
- Put a passcode on mobile Slack. Slack mobile holds full history by default. If a phone is lost, a chat app with no lock is a corporate data dump in a rideshare. Lost device? Revoke its session remotely and run the lost device runbook.
- Keep desktop Slack updated and signed in per person. Shared workstation logins ("we all use the front desk Mac") mean shared identity in the audit log. One human, one session.
9. The quiet things that matter later (compliance, exits, audits)
- Write down the rules in one paragraph. A pinned post in #general: what never gets posted (secrets, PII), who approves apps and guests, and where to report anything odd. Rules people have seen get followed; rules that live in an admin's head don't.
- Decide your export-and-archive story. When someone leaves, does the workspace keep their DMs? (Usually yes; plan for it.) When a project ends, archive its channels instead of letting them rot with stale members.
- Tie Slack deactivation into every exit. The onboarding and offboarding checklists should both have a Slack line: deactivate account, reassign owned apps and webhooks, review their DMs only per policy. Add it once; it fires every time.
- Do the quarterly pass. Thirty minutes: admin list, guest list, new apps, Connect channels, sessions for admins. It's the same ritual as the annual security review at chat-app speed, and it catches everything above while it's still a one-click fix.
10. When something goes wrong anyway
- Compromised account: revoke all sessions for the account, change the password, check installed apps and webhooks created in the last 48 hours, and scan recent posts and DMs for links or files sent by the intruder — attackers use chat to propagate because chat links get clicked.
- Leaked secret in a channel: rotate the credential first, delete the message second. Deleting first feels cleaner and does nothing — the value was already read by every logged-in member and any retention backup.
- Malicious app discovered: remove the app, rotate every token it held, and re-post the warning to the channels it could read. Then run the full app-inventory pass from section 4, because one slipped through means the approval gate wasn't on.
- Not sure it happened: treat it as it did. The cost of an unnecessary session revocation is one login; the cost of a quiet intrusion reading your strategy channel for a month is unbounded.
Slack security for a small team is an afternoon, once: lock the admin tier, gate the invites, purge the guests, approve the apps, own the webhooks, decide the retention, and calendar the quarterly pass. The Ops Starter Kit ($14) includes the audit sheets that turn this checklist into a per-person, per-channel table — guest, channels, apps, verdict, owner — and the Automation Starter Pack ($19) automates the reviews so the purge happens without anyone remembering to remember. Launch week: 30% off any paid kit with code HIVE-LAUNCH30 at checkout.