TL;DR: OAuth plumbing needed to send Slack notifications from SaaS apps can be removed, with token storage, refresh, and per-user workspace connections handled so developers can post messages with a fresh access token, according to WorkOS. The identity lesson is that delegated access still needs governance even when the implementation is abstracted away.
At a glance
What this is: This is a tutorial on using WorkOS Pipes to send Slack notifications from an app without building the full OAuth flow, token storage, or refresh logic yourself.
Why it matters: It matters because delegated third-party access still creates identity, lifecycle, and secret-handling decisions for NHI, human, and integrated application programmes.
👉 Read WorkOS's tutorial on sending Slack notifications without OAuth plumbing
Context
Multi-tenant Slack integrations often fail for the same reason many delegated SaaS connections fail: the app needs persistent access on behalf of a user, but the underlying credential lifecycle is easy to get wrong. The identity problem is not the notification itself, it is how access is granted, stored, refreshed, revoked, and re-used across tenants.
In practice, this sits in the overlap between human consent, application identity, and non-human credential handling. The article focuses on a developer-friendly way to abstract OAuth, but the governance questions remain the same: who owns the token, how long does it live, what happens on revocation, and how do you keep per-user workspace access bounded.
Key questions
Q: How should security teams govern Slack integrations that use delegated workspace access?
A: Treat each connection as a scoped identity relationship with an owner, purpose, and revocation path. Restrict scopes to the exact notification need, separate channel lookup from message posting, and log which user, workspace, and channel each token supports. That keeps delegated access reviewable instead of allowing quiet privilege creep.
Q: What breaks when a Slack token is hidden behind a convenience layer?
A: What breaks is visibility into the token lifecycle. If the platform abstracts storage and refresh, teams can forget who owns the connection, how revocation is handled, and whether the app still needs the same scopes. The result is unmanaged delegated access that looks simple in the UI but still behaves like a credential.
Q: How do you know if per-user Slack connections are actually governed?
A: You should be able to answer three questions quickly: who owns each connection, what scopes it has, and when it was last validated or removed. If you cannot produce that mapping, the integration is operating as shadow identity infrastructure even if the product experience is clean.
Q: Should organisations allow Slack notifications to be sent on behalf of users?
A: Yes, but only when the business need is clear and the identity controls are explicit. Use user-scoped permissions, avoid broader workspace access than necessary, and make reconnection mandatory after revocation or uninstall events. If the notification workflow cannot tolerate those constraints, it should not be allowed to persist.
Technical breakdown
Delegated Slack access and per-user token isolation
Multi-tenant Slack messaging is not the same as a shared bot integration. Each user connects their own workspace, which means the application needs a distinct authorization context per user and per workspace. The Pipes model hides the OAuth authorisation code flow, but the underlying security pattern is still delegated access: a user grants the app permission, the app receives a scoped token, and the backend uses that token only when it needs to act. The hard part is preserving isolation so one user's connection cannot leak into another tenant's notification path.
Practical implication: treat each Slack connection as a distinct identity binding, not a generic integration.
Token refresh, revocation, and secret handling
The operational burden in OAuth integrations is usually not the first token exchange, but what happens after. Access tokens expire, refresh tokens can be revoked, and credentials need secure storage and retrieval. This tutorial shows a model where the platform handles refresh and returns a usable token on demand, which removes local token persistence and callback maintenance. Even so, the application still depends on timely revocation handling and clean failure states when the user disconnects or uninstalls the app.
Practical implication: design your notification flow to fail safely when token retrieval or reuse no longer succeeds.
Slack scopes, channels, and least-privilege messaging
Posting notifications requires more than chat write access if users must also choose a destination channel. The article uses chat:write for posting and channels:read for listing channels, then stores the selected channel ID for later use. That is a classic scope-to-function mapping problem. The identity mistake many teams make is granting broader workspace access than the workflow needs, then leaving the app with durable read capability long after the channel-selection step is complete.
Practical implication: separate channel discovery from message posting and keep scopes aligned to each function.
Breaches seen in the wild
- Salesloft OAuth token breach — hackers stole OAuth tokens to access Salesforce data via Salesloft.
- Dropbox Sign breach — compromised Dropbox Sign service account exposed API keys and OAuth tokens.
Read our 52 NHI Breaches Analysis report for a comprehensive view of breaches impacting Non-Human Identities including AI Agents.
NHI Mgmt Group analysis
Abstracting OAuth does not remove the identity problem, it relocates it. The application still depends on delegated access, token freshness, and revocation handling even when those controls are hidden behind a widget. That means the security conversation shifts from implementation burden to governance ownership, because the credential lifecycle is still present even if developers never write the plumbing. Practitioners should evaluate who owns the trust boundary, not just who writes the code.
Notification integrations are a non-human identity pattern disguised as product UX. A Slack token used by backend code to act on a user's behalf is a workload-side credential, not a human login flow. That places it squarely in NHI governance, where lifecycle, scope, and revocation matter more than front-end convenience. Teams should map these connections into their secret and access review processes instead of treating them as one-off app settings.
Channel-based messaging creates a narrow but durable privilege surface. The moment an app can post and enumerate channels, it gains a repeatable action path inside a tenant's collaboration environment. That path may look low risk, but it becomes materially important when the same pattern is extended across deployment alerts, billing reminders, and task workflows. The practitioner takeaway is that low-friction integrations still deserve entitlement review and logging.
OAuth abstraction increases adoption, which increases governance pressure. The easier it is to add Slack, GitHub, Google, or Salesforce as connected accounts, the faster organisations accumulate linked identities they do not fully inventory. That is how shadow integration sprawl starts: not with compromise, but with convenience. Security teams should assume the connection count will grow faster than the review process unless ownership is explicit.
From our research:
- 15% of commit authors have leaked at least one secret in their contribution history, according to The State of Secrets Sprawl 2025.
- Around 100,000 valid secrets were found in public Docker images, with ENV instructions alone accounting for 65% of all secret leaks in containers.
- For a broader view of why secret handling and lifecycle discipline matter, see Dropbox Sign breach and its implications for token exposure.
What this signals
Delegated access will keep expanding faster than most review cycles. As more applications hide OAuth complexity behind widgets and token brokers, the real control point moves to inventory, ownership, and revocation evidence. Security teams should expect connected-account sprawl unless they build a repeatable reconciliation process for every user-scoped integration.
Connection sprawl becomes identity sprawl when no one owns the binding. The same integration pattern that speeds development can also create long-lived, under-reviewed access across collaboration tools, SaaS apps, and downstream APIs. Organisations that already struggle with secrets hygiene should assume their delegated-access surface is just as easy to lose track of.
For teams formalising this model, the governance question is not whether Slack can be wired into the app, but whether that wiring can survive access reviews, offboarding, and incident response without hidden exceptions. That is where NHI lifecycle discipline and zero trust expectations start to converge.
For practitioners
- Inventory delegated SaaS connections as NHI assets Record every per-user Slack workspace binding, the scopes granted, the owning application, and the business purpose for the connection. Treat the connection as a credentialed identity relationship, not a UI preference.
- Separate channel discovery from message posting Use channels:read only for channel selection workflows and chat:write only for notification delivery. Revalidate whether private-channel access is actually needed before allowing it in production.
- Build revoke-and-reconnect handling into the workflow When token retrieval fails, route users back to the integrations page and mark the connection as inactive until they reconnect. Do not leave the backend retrying against a dead token or silently dropping notifications.
- Log token use and channel selection events Capture which user identity requested a token, which workspace it mapped to, and which channel received the message. Those logs support access review, incident triage, and entitlement cleanup later.
Key takeaways
- Slack notification integrations are identity problems in disguise, because every connected workspace depends on a credential lifecycle.
- Even when OAuth plumbing is hidden, the real risk remains uncontrolled token ownership, revocation, and scope creep across tenants.
- Teams should inventory delegated connections, constrain scopes, and make reconnect and offboarding workflows explicit before these links spread further.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 address the attack and risk surface, while NIST CSF 2.0 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-03 | Delegated Slack tokens need lifecycle handling and revocation discipline. |
| NIST CSF 2.0 | PR.AC-4 | Slack scopes are access permissions that should match business need. |
| NIST Zero Trust (SP 800-207) | AC-3 | Per-request token use reflects zero trust access decisions for each action. |
Track token ownership, rotation, and revocation for every user-scoped Slack connection.
Key terms
- Delegated Access: Delegated access is when one application acts on behalf of a user or organisation through a consented permission grant. In identity terms, the dangerous part is not the convenience, but the inherited scope, lifecycle, and revocation obligations that travel with the delegation.
- Token Refresh: Token refresh is the process of replacing an expiring access token with a new usable credential without re-prompting the user. It reduces friction, but it also creates lifecycle dependencies that must be monitored so expired, revoked, or orphaned access does not linger unnoticed.
- Scoped Workspace Binding: A scoped workspace binding is the link between a specific user, a specific SaaS workspace, and a limited set of permissions. It is the practical unit of governance for multi-tenant integrations because ownership, purpose, and revocation all need to be tracked at that level.
Deepen your knowledge
Slack integrations, delegated token handling, and lifecycle governance are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If your team is building user-scoped integrations like this one, it is worth exploring.
This post draws on content published by WorkOS: Send Slack notifications from your app without building OAuth. Read the original.
Published by the NHIMG editorial team on 2026-03-04.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org