Slack Integration
Connect Atmos Pro to Slack, configure each channel, use slash commands and AI chat, and understand permissions, notifications, and credit usage.
Bring infrastructure context into the channels where your team works. Atmos Pro can send component failure, successful apply, drift,
and deployment approval notifications, summarize GitHub pull requests, and answer questions using
your workspace's infrastructure data.
Notifications follow per-channel subscriptions. Connecting Slack does not subscribe every
channel or send every workspace event to a default channel.
- An Atmos Pro workspace with a connected GitHub repository.
- A workspace owner or admin to install and configure the integration.
- Permission to install apps in your Slack workspace. Your Slack administrator may need to approve the app.
- Membership in both the Slack channel and the Atmos Pro workspace to use authenticated commands.
- For AI answers: a Teams, Business, or Enterprise plan with Atmos Chat, AI chat enabled for the integration, and available AI credits.
You do not need to create your own Slack app, copy API tokens, or configure webhooks.
- 1Open Workspace Settings → Integrations → Slack in the Atmos Pro workspace you want to connect.
- 2Click Add to Slack, choose your Slack workspace, and review the requested permissions.
- 3Complete Slack's authorization flow. You return to Atmos Pro with the connected workspace shown.
- 4Open a Slack channel and invite Atmos Pro using Add apps or
/invite @Atmos Pro. - 5Choose a default channel in the integration settings and use Send test message to check delivery.
- 6Add subscriptions for the notifications that channel should receive.
You can also select @Atmos Pro from Slack's mention autocomplete and send a message.
If the bot has not joined that channel, accept Slack's invitation prompt to add it.
Choose the environment-specific app name when using a QA installation. Inviting the bot
does not automatically subscribe the channel to notifications.
The default channel is a workspace-wide setting used by features that need a default destination.
Your explicit channel subscriptions control component execution, drift, and approval feeds. Changing the default channel
does not copy subscriptions or move an existing channel's configuration.
Installing the app connects the two workspaces. Each person separately links their Slack identity
to their Atmos Pro account.
Run
/atmos account in a channel containing the bot, or open the app's Home tab. If your account
is not linked, Atmos Pro sends a connection link visible only to you. Open it, sign in to Atmos Pro,
and complete the linking flow. Return to Slack and repeat your command.The linked account must remain an active member of the connected Atmos Pro workspace. Slack
membership alone does not grant access to infrastructure data or permission to change settings.
Never share your personal connection link.
One app installation can serve multiple public or private channels. Invite the bot separately to
each channel, then configure its subscriptions independently.
For example, an operations channel can subscribe to the
production stack while a networking
channel subscribes to the vpc component in the same repository. Changing one channel's targets
does not change the other channel's targets.- 1Open Atmos Pro → Home in Slack.
- 2Home opens an available channel automatically. Select another channel in the picker to manage its subscriptions. Only channels you and the bot have joined are shown; use Refresh channels after inviting or re-adding the app.
- 3Review each subscription's target, repository, enabled notifications, and reminder interval. Use Previous and Next for additional subscriptions.
- 4Click + Subscribe, choose a repository and Stack or Component, then click Next.
- 5Search the dropdown and select an existing name. For a target that does not exist yet, leave the dropdown empty and use Or enter a new name.
- 6Choose the notifications to deliver and submit. Repeat to add another target.
- 7Use the Configure button on a subscription to change its events and reminders, or its Unsubscribe button to remove it.
Removing the app from a channel hides the channel from Home and removes its feed subscriptions;
it does not delete the Slack channel. After re-adding the app, refresh Home and add the desired subscriptions again.
The target field currently accepts one stack or component name per subscription. You can add
several subscriptions to the same channel. Names are case-sensitive exact matches; enter the full
name with the same capitalization used in Atmos. For example,
prod does not match plat-use2-prod.
Substrings, wildcards (such as *-prod), and regular expressions are not supported.
A name that does not match an existing target can be saved for future infrastructure, and the
confirmation warns that nothing currently matches.Each subscription has its own Notifications to deliver checklist:
| Event | Delivered when | Default |
|---|---|---|
| Drift detected | A matching component first becomes drifted. | On |
| Drift resolved | A matching component returns to sync. | On |
| Approval requested | A matching deployment needs approval. | On |
| Approval approved | A matching deployment approval is granted. | On |
| Approval rejected | A matching deployment approval is rejected. | On |
| Approval cancelled | A matching deployment approval is cancelled. | On |
| Component execution failed | A reported Terraform plan or apply fails for a matching component. | Off |
| Apply succeeded | A reported Terraform apply succeeds for a matching component. | Off |
Failure and success events use the component's execution result. Terraform plan exit code
2
means changes were found and is not treated as a failure. Successful plans do not trigger
Apply succeeded. Execution notifications require Atmos to report the component's execution
summary; a workflow that fails before reporting a component result cannot produce this alert.Clear every checkbox to mute a subscription without removing it. Different channels can use
different event selections for the same target. If several subscriptions in one channel match
an event, the channel receives one notification. Outcome-only subscriptions receive standalone
messages when there is no earlier request or drift alert to update.
Under Configure → Repeat drift alerts, choose Off, Hourly, Every 6 hours, or
Daily. These are minimum intervals: the next drift check that still detects drift after
that interval sends a reminder. They are not a separate timer. Drift detected must also be
enabled for reminders to be delivered. Resolving drift stops reminders.
/atmos subscribe owner/repo stack production
/atmos subscribe owner/repo component vpc
/atmos subscriptions
/atmos unsubscribe owner/repo component vpcYou can also mention the bot:
@Atmos Pro subscribe owner/repo stack production
@Atmos Pro subscribe owner/repo component vpc
@Atmos Pro list subscriptions
@Atmos Pro unsubscribe owner/repo component vpcSpecify
owner/repo when the workspace has multiple repositories. Subscribing to a stack follows
its components. Subscribing to a component follows that component across stacks in the selected
repository. The confirmation identifies the target, repository, and events you will receive.Subscriptions created through commands start with drift and deployment approval events enabled.
Use a subscription's Configure button in Home to change the checklist, including opting into
component failures and successful applies. The AI chat toggle applies to the whole installation;
subscription filters do not restrict the repositories an authorized workspace-wide AI question can query.
Workspace owners and admins can open Workspace Settings → Integrations → Slack → Feed subscriptions.
Use Edit to change a target's notification checklist or drift reminders. Use Delete and confirm to
remove that subscription from its channel. Other subscriptions and the Slack connection remain active.
Your personal Slack account must be linked, and both you and the bot must belong to the channel.
Changes made here and in Slack use the same stored settings.
The shared MCP catalog provides:
| Tool | Purpose |
|---|---|
list_slack_channels | List channels shared by your linked Slack identity and the bot. |
get_slack_channel_settings | Inspect the channel's subscriptions, events, and reminders. |
update_slack_channel_settings | Subscribe, update, or delete one stack/component subscription. |
For example, ask Atmos Pro in Slack: “Enable component failures and successful applies for the vpc
component in acme/infra in this channel.” The verified Slack channel is the default. External MCP
clients must supply a channel ID returned by
list_slack_channels.External clients need
ws:chat_channels:read to inspect settings and explicit consent for
ws:chat_channels:manage to change them. Existing clients may need to reconnect and grant these scopes.
Write access is never included in scope-less OAuth defaults. These scopes cannot override your current
workspace role or the token's repository restrictions.Owners, Admins, and Members receive channel-management permission. Viewers and Auditors remain read-only,
even if an older token still has a write scope. Every operation checks active workspace membership and
linked Slack identity. Access to a channel additionally requires membership by both the caller and the bot;
workspace admins do not automatically gain access to private Slack channels. Installation-wide settings,
including connecting and disconnecting Slack, retain their separate owner/admin permission.
The update tool preserves omitted fields, replaces the event checklist when provided, and accepts an empty
checklist to mute. Repeating
subscribe preserves an existing subscription. Dashboard and MCP changes record
the acting user and before/after settings in the audit log. AI chat retains its normal plan and credit requirements;
direct MCP calls and App Home controls do not require an AI conversation.Type commands in the main channel composer. Slack does not support custom app slash commands
inside message threads. In an established Atmos Pro AI thread, reply normally instead.
| Command | What it does | Where the response appears |
|---|---|---|
/atmos help | Shows command syntax and examples. | Only visible to you. |
/atmos account | Checks your account connection or supplies a private linking prompt. | Only visible to you. |
/atmos credits | Shows the current credit balance, reset date, pack prices, and purchase link. Does not spend AI credits. | Only visible to you. |
/atmos subscriptions | Lists this channel's targets and links to App Home to manage them. | Only visible to you. |
/atmos subscribe owner/repo stack NAME | Adds a stack subscription to this channel. | A channel thread. |
/atmos subscribe owner/repo component NAME | Adds a component subscription to this channel. | A channel thread. |
/atmos unsubscribe owner/repo stack NAME | Removes that stack subscription from this channel. Use component NAME for a component. | A channel thread. |
/atmos ask QUESTION | Starts an AI conversation using your Atmos Pro access. | A channel thread, visible to channel members. |
/atmos list is an alias for subscriptions, /atmos tokens for credits, and /atmos connect for
account. Text without a recognized command is treated as an AI question. Use ask explicitly to
make your intent clear.QA installations use an environment-specific command such as
/atmos-qa-2 so they can coexist
with the production app. Replace /atmos in the examples with the command for the installed app./atmos ask Why did the last deployment fail?
/atmos ask Which stacks have drift?
@Atmos Pro summarize this pull requestUse an @mention to start a conversation in an existing notification or PR thread. Once Atmos Pro
has answered, follow-up replies in that same thread do not need another @mention. The bot uses
the prior turns as conversation context and shows Slack's working indicator while generating an answer.
It ignores ordinary channel chatter, bot messages, and message edits.
When you mention Atmos Pro in an existing thread, it reads earlier messages from that thread so
requests such as
do that ↑ can refer to your discussion. Authors retain their Slack IDs in the
quoted context. Both you and the bot must still belong to the channel. Each read is bounded to
one page of up to 100 messages and 16,000 text characters; unavailable or incomplete context is
marked so the bot can ask you to quote missing details. Files and reaction history are not imported.
Earlier participants' raw messages are not copied into Atmos Pro's chat history; the bot reloads
that context on follow-up turns and combines it with the conversation's saved requests and answers.Atmos Pro ignores bot-authored webhook events and checks its own user ID at both webhook and worker boundaries,
so mentioning itself cannot start another AI response. Slack delivery retries reuse the same event
ID. Individual AI turns also have tool-step and output-token limits and require available credits.
Conversations started on an indexed repository notification inherit that repository context.
A new conversation can query the connected workspace within the linked user's permissions.
Subscription filters select notifications; they are not an access-control boundary for AI chat.
Slack conversations also appear in Atmos Pro's chat history with a Slack source icon. Messages and
answers posted to a Slack channel are visible to that channel's members, so choose the appropriate
channel for the information you want to discuss.
Drift detection times and credit-reset timestamps use Slack's native date formatting, which displays
the instant in each reader's local timezone. AI replies are instructed to use the same formatting.
Relative analytics requests such as "the last seven days" use the current UTC time; chart date buckets
and downloaded reports retain their stated timezone because they are static files.
The bot can format answers with native Slack headings, sections, fields, context, and dividers.
Messages with one or two distinct links keep Slack previews. With three or more distinct links,
automatic preview cards are suppressed so link-heavy answers stay compact. Links remain clickable.
Explicitly requested image blocks and generated file attachments still appear.
Its formatting tool cannot create interactive controls or perform actions. Requested repository badges
from the authorized MCP badge tools are rendered as PNG attachments, so they display as images.
These are snapshots; open the badge link for its current state.
The agent can use
add_slack_reaction when a reaction adds useful context. Reactions are optional,
including on a bare mention. They target the current user's mention or thread reply, and do not
replace an answer when one is needed. A bare mention receives a short invitation to ask a question.The tool exposes a curated set of standard Slack emoji names with suggested meanings:
| Emoji | Slack name | Suggested use |
|---|---|---|
| 👍 | thumbsup | Acknowledgment or agreement |
| 👀 | eyes | Looking into a request |
| 🤔 | thinking_face | Considering a question |
| 🔍 | mag | Investigating details |
| ⏳ | hourglass_flowing_sand | Waiting on an actual pending result |
| ✅ | white_check_mark | Confirmed success or completion |
| ✔️ | heavy_check_mark | Verified result |
| ☑️ | ballot_box_with_check | Checked item |
| ❌ | x | Confirmed failure |
| ⚠️ | warning | Caution |
| ⛔ | no_entry | Confirmed blocker |
| 💡 | bulb | Useful idea |
| 🤝 | handshake | Agreed next steps |
| 🎉 | tada | Celebration |
| ❤️ | heart | Appreciation |
| 🫣 | face_with_peeking_eye | Acknowledging the bot's own small mistake, alongside a clear correction |
| 😅 | sweat_smile | Relief after a minor hiccup |
Checkmarks and failure reactions require evidence. Playful mistake reactions should not trivialize
serious incidents or blame the user. These meanings guide the agent; they do not force a reaction.
Names were checked against the standard emoji catalog linked by Slack.
Reactions use your current channel management permission and live Slack channel access.
Viewers and Auditors retain read-only AI access and cannot invoke this state-changing tool.
The tool cannot select a different channel or message. Duplicate reactions are harmless.
Slack AI uses the same underlying Atmos Pro MCP tool catalog as in-product chat, with additional
permission and repository restrictions for Slack. It does not connect to arbitrary external MCP
servers. Raw file-content and log-dump tools are excluded from Slack conversations.
Ask the bot to generate a PDF or attach a Markdown file after reviewing the document in
the thread. It uses the shared
create_pdf or create_markdown MCP tool, saves the document in
Atmos Pro, and attaches it to the same Slack thread. Markdown exports preserve the source; PDF
exports use Atmos Pro's document styling and display the document title once. You can also open the
protected download from chat history./atmos ask Draft a deployment summary for owner/repo.Then reply in that thread:
Generate the approved summary as a PDF or Attach it as a Markdown file.
Document creation requires your role's artifact-creation permission. Slack administrators must
approve the app's file-upload permission; use Reauthorize in the integration settings after
an update adds it. If an upload fails, the document remains available in Atmos Pro.Uploaded copies are visible to members of the Slack channel and follow Slack's file retention and
sharing rules. Disconnecting Atmos Pro or unlinking an account does not delete files already shared
in Slack. Choose the channel accordingly. Atmos Pro download links still require workspace access.
The bot attaches up to four generated documents per response, with a 10 MB limit per file.
Ask for a sparkline, line chart, bar chart, donut, or metric card to visualize your infrastructure
summaries. The bot uses the shared MCP chart tools and attaches a PNG preview to the same thread.
For example:
Show a sparkline of workflow runs per day for the last seven days.
Charts use your permitted data and require Slack's existing file-upload permission. They are static
images in Slack; the chart data is also saved in the Atmos Pro conversation for inline rendering.
The bot can attach up to four charts per response, with up to eight series and 500 points per series
(or twelve donut categories). If a chart cannot be attached, the reply reports the failure and valid chart data remains in Atmos Pro.
PNG previews use the bundled Latin font; labels requiring additional fonts or emoji remain available
in the web conversation rather than being sent to an external font service.See MCP Server for the shared catalog and client setup.
Enable Component execution failed to receive an alert when a matching component reports a failed
plan or apply. Enable Apply succeeded separately to receive successful apply results. Cards identify
the repository, stack, component, command phase, and exit code, with resource counts when available
and a View in Atmos Pro link. A retry of notification delivery does not post the same result twice.
When that execution captured output, the app shares only the matching component's plan or apply text
in the same thread: a code block for short output, a text snippet up to 1 MB, or a downloadable file
up to 10 MB. Output delivery can retry independently of the original notification.
With Drift detected enabled, a matching subscription receives a notification when an instance becomes
drifted. Repeated checks send reminders only when configured and the minimum interval has elapsed.
With Drift resolved enabled, resolution updates the existing conversation or posts a standalone
message if no earlier alert was delivered. Remediate opens the instance in Atmos Pro for review and confirmation.
When Atmos has collected the drift run's execution output, the app posts short output as a code
block in the alert's thread. Larger plans are uploaded as native Slack text snippets (
.txt, up
to 1 MB), which can be viewed, copied, or downloaded. Plans above 1 MB are uploaded as regular
downloadable text files, up to the application's 10 MB limit. Output includes only that component from the
exact run, with terminal colors removed. Missing or oversized logs do not prevent the alert from
being posted; inspect the execution in Atmos Pro if an attachment is unavailable.Matching subscriptions receive approval requests and subsequent granted, rejected, or cancelled
outcomes. These are deployment approvals, separate from GitHub pull request reviews.
Cards show the component and stack together, link the repository, and include the associated PR title
and number when available. Changes without a PR show their branch and short commit SHA instead.
Approve and Reject open confirmation for the specific deployment job in Atmos Pro.
Review in Atmos Pro opens the approval details. Sign in to the workspace associated with the
notification to act. Atmos Pro validates your permissions and the current approval state;
clicking a Slack button alone never approves, rejects, or remediates infrastructure.
Receiving a notification does not grant approval rights.
Paste a GitHub PR URL for a connected repository into a channel containing the bot. Atmos Pro posts
an updating card with PR status, checks, review information, and available infrastructure impact.
Impact can include affected components and planned resource creations, changes, and deletions.
Missing or pending execution data is shown as unknown rather than counted as zero.
Use Open in Atmos Pro to inspect the PR with its infrastructure context or Open in GitHub
to view the source PR. Deployment approval status and PR review approval are distinct.
Native previews for Atmos Pro URLs are not available yet. GitHub PR cards are currently the
supported automatic link-summary flow.
Use
/atmos credits for current values. It works even when the workspace has no credits remaining
and does not invoke an AI model. You can also ask the AI about credits while AI chat is available;
it can consult the shared get_ai_credit_balance MCP tool.- Credits are a spending allowance, not a fixed count of model tokens. Cost depends on the model and work performed.
- Included credits reset on the first day of each calendar month at 00:00 UTC.
- Purchased credits carry over across monthly resets until their individual grant expires.
- The command lists current pack prices and an Add credits link. A workspace billing administrator completes the purchase.
- When AI credits run out, the bot supplies a link to Workspace Billing. You can add credits or wait for the included allowance to reset.
- If your plan does not include Atmos Chat, upgrade to Teams, Business, or Enterprise.
Turning AI chat off does not disable drift notifications, approval notifications, or subscription
commands. Account, help, subscriptions, and credit commands do not require an AI generation.
Atmos Pro rechecks linked-account membership and applies the user's permissions when handling
commands. AI answers also require the applicable plan, available credits, and tool access.
Viewers and Auditors do not need a Licensed User seat for read-only AI; other human roles retain the seat requirement.
Viewers and Auditors retain their read-only protections. Only workspace owners and admins can
install, reconfigure, or disconnect the integration.
The bot must be invited to a channel before it can operate there. Private channels work when both
the user and bot are members. Direct-message conversations are not supported.
Slack OAuth tokens are encrypted in Atmos Pro's integration storage. Signed Slack requests are
verified before processing. Personal account-link prompts are sent privately. You do not need to
supply a bot token to individual users.
| Scope | Purpose |
|---|---|
files:write | Upload generated document files to the originating channel thread. |
commands | Register and receive the app's slash command. |
chat:write | Post and update messages, send private prompts, and show working status. |
reactions:write | Mark notification outcomes with reactions. |
channels:read, groups:read | Find accessible public/private channels and verify channel membership. |
channels:history, groups:history | Receive messages for PR cards and replies in established bot conversations. |
app_mentions:read | Receive questions and subscription commands addressed to the bot. |
im:history | Receive direct-message events so the app can decline unsupported DM conversations. |
team:read, users:read | Resolve Slack workspace and user information. |
The app does not request Slack email addresses or permission to post to every public channel
without joining. When a release adds a required scope, a workspace administrator may need to
select Reauthorize under Workspace Settings → Integrations → Slack. Choose the
same Slack workspace to preserve channel subscriptions and linked accounts, then approve the
updated permissions. Refresh Slack if the new command does not immediately appear.
A workspace owner or admin can disconnect Slack under Workspace Settings → Integrations → Slack.
This revokes the active connection in Atmos Pro so new work cannot use it. A message already
accepted by Slack may still appear while disconnection finishes.
Use Add to Slack to reconnect. Check the connected Slack workspace, invite the bot to the
required channels, and review each channel's subscriptions in App Home. Do not assume a new
installation has restored every previous channel setting. Removing the bot from a channel also
cleans up that channel's subscriptions.
Generated PDF and Markdown documents become workspace artifacts. Workspace members with artifact-read permission can open them, including documents created from a private chat. The originating chat keeps its own visibility settings; making the chat private does not make its exported documents private. This applies consistently to download links and MCP artifact tools. Documents originating in Slack additionally require current channel membership and a linked identity; workspace artifact permission alone does not grant access.
Each document accepts up to 100,000 characters of Markdown source. Slack attachments also have a 10 MB export limit; larger exports remain available through Atmos Pro when rendering succeeds.
| Symptom | What to check |
|---|---|
| The slash command is missing from autocomplete. | Confirm the correct app is installed in this Slack workspace, use its environment-specific command name, and complete any requested reauthorization. An Atmos Pro deployment alone does not register a command in Slack. |
| A slash command will not run in a thread. | Use the main channel composer. Reply normally in an existing bot AI conversation. |
| A command acknowledges but no result appears. | Make sure the bot is invited to the channel and your account is linked. Retry after a brief wait; contact support if it continues. |
| The bot asks me to connect my account. | Complete the private connection link, then repeat the command. Workspace app installation and personal account linking are separate steps. |
| No notifications arrive. | Run /atmos subscriptions, confirm the selected channel and repository, and check the exact stack/component name. A connected app with no subscriptions has no drift/approval feed. |
| A subscription says nothing matches. | Correct a typo or keep it if the target will be created later. Repository and target names must match. |
| I see notifications but cannot get AI answers. | Check the AI chat toggle, eligible plan, seat when required for your role, current workspace membership, and /atmos credits. |
| The bot cannot perform an action I can see in the dashboard. | Slack exposes a restricted tool set. Open the relevant Atmos Pro page to perform supported actions with permission checks and confirmation. |
| The default channel changed but my feed did not move. | Subscriptions belong to individual channels. Add targets to the new channel and remove them from the old one. |
| A PR card has unknown impact. | Wait for the matching execution results and open the PR in Atmos Pro. Unknown data is not evidence of no infrastructure changes. |
If you need help, include the command or notification type, approximate time, channel name, and
Atmos Pro workspace. Avoid sending bot tokens, signing secrets, or personal account-link URLs.
A Slack workspace connects to exactly one Atmos Pro workspace, and an Atmos Pro workspace has
one Slack connection. Reauthorizing the same Slack workspace preserves the connection. Disconnect
before choosing a different Slack workspace. Finish authorization in the same signed-in browser
where you started it; switching the active Atmos workspace does not change the installation target.
Each connected channel has one Atmos Pro workspace owner, including Slack Connect channels shared
between companies. The first authorized use establishes ownership. Browsing the channel picker does
not reserve a channel. Another Atmos workspace cannot send through an owned channel or inspect its
configuration. Removing the bot suspends use but keeps ownership; explicitly disconnecting the
integration releases ownership. Verified Slack channel-ID changes preserve the channel's association.
Removing the bot also deactivates that channel's feed subscriptions. After inviting the bot back,
an authorized channel command resumes the existing channel association; add the desired subscriptions
again. Other channels and their subscriptions are unaffected. Existing Slack apps must subscribe to
channel_left and group_left, as included in the generated app manifest, to receive removal events.Slack conversations are labeled Slack channel members in Atmos Pro. To see their messages,
titles, previews, search results, or associated files, you must have active Atmos workspace membership,
a linked Slack identity, and current channel membership. The bot must also remain in the channel.
These checks apply to the conversation's creator too. Public links and workspace sharing cannot widen
access. Historical conversations stay attached to the original connection after disconnection; they
are not transferred to a new owner.
Viewers and Auditors can ask questions in Slack and web Ask AI without a Licensed User seat. The
workspace still needs Atmos Chat entitlement, an eligible model tier, and available credits. Normal AI
usage is billed. Their tools can only read: they cannot create or update issues, pull requests,
comments, approvals, deployments, remediation, configuration, subscriptions, or generated artifacts.
Permissions are checked again when each tool executes. Deployment permissions and seat requirements
for operational roles are unchanged.