Skip to main content
Slack provides AI agent tools for managing channels, user groups, and messages. Reference these tools in using @ mentions to automate channel provisioning, group access, Slack outreach, and Enterprise Grid workspace assignments during ticket handling. These tools use the same Slack integration as the workflow actions, but their inputs are built for an agent.

Manage channels

Create channel

Creates a new Slack channel. If the name is already taken, the tool returns an error rather than retrying, and asks the requester for a different name.Tool name: @Create Slack ChannelInput fields:
  • channelName (required) - Name for the new channel. Must be lowercase with no spaces.
  • isPrivate - Whether the channel should be private. Defaults to public.
  • topic - Channel topic.
  • purpose - Channel purpose.
Output data:
  • channelLink - Direct link to the new channel. Include it in the reply so the requester can navigate to it immediately.
Common use cases:
  • Create a dedicated channel for a new project or team
  • Provision an incident channel automatically when a P0 is filed
  • Set up an onboarding channel for a new hire
Example rule:

When someone requests a new Slack channel, ask for the name, whether it should be public or private, and a short purpose. Use @Create Slack Channel, then share the channel link in the reply.

Looks up a Slack channel by name or ID and returns whether it exists, along with its privacy and archive status.Tool name: @Check Slack Channel ExistsInput fields:
  • channelName (required) - Name of the channel to look for.
  • channelId - Slack channel ID (C…). Use when available for reliable lookup across workspaces.
Output data:
  • exists - true when the channel is found.
  • isPrivate - Whether the channel is private.
  • isArchived - Whether the channel is archived.
Common use cases:
  • Confirm a channel exists before adding members to it
  • Check whether a channel is archived before directing someone to it
  • Verify a channel name is free before suggesting it for a new request
Example rule:

When someone asks whether a Slack channel exists, use @Check Slack Channel Exists and report back whether it was found, whether it is private, and whether it is archived.

Renames a Slack channel or changes its topic and purpose. You can update one or all three in a single call.Tool name: @Update Slack ChannelInput fields:
  • channelName (required) - Current name of the channel to update.
  • channelId - Slack channel ID for reliable lookup.
  • newName - New name for the channel.
  • topic - New channel topic.
  • purpose - New channel purpose.
Common use cases:
  • Rename a channel when a project changes its name
  • Update the topic to reflect a current incident status
  • Set a purpose when a channel is created without one
Example rule:

When someone asks to rename a Slack channel or update its topic or purpose, confirm the current channel name and the change they want, then use @Update Slack Channel.

Archives a Slack channel. The channel history is preserved but members can no longer post.
Archiving a channel cannot be undone from the agent. Confirm with the requester before running this tool.
Tool name: @Archive Slack ChannelInput fields:
  • channelName (required) - Name of the channel to archive.
  • channelId - Slack channel ID for reliable lookup.
Common use cases:
  • Archive a project channel when the project ends
  • Clean up channels that have been inactive for a long time
  • Archive an incident channel after it is resolved
Example rule:

When someone asks to archive a Slack channel, use @Check Slack Channel Exists to confirm the channel and whether it is already archived. If it is not archived, repeat the channel name back to the requester and ask them to confirm before running @Archive Slack Channel.

Converts a Slack channel from public to private, or from private to public. The tool uses Slack’s admin.conversations.convertToPublic and admin.conversations.convertToPrivate APIs.
Converting a private channel to public exposes its full message history to everyone in the workspace. Confirm the channel and the target visibility with the requester before running this tool.
Requirements:
  • A Slack Enterprise Grid or Business+ plan.
  • A connected Enterprise admin token with the admin.conversations:write scope. A Slack org admin connects it from Settings → Integrations → Slack → Connect Enterprise Admin.
@Change Channel Visibility is a sensitive write tool because it changes who can access a channel. When Copilot drafts a rule that uses it, Copilot asks how the tool should run. See tool execution policies.Tool name: @Change Channel VisibilityInput fields:
  • channelName (required) - Name of the channel to convert.
  • channelId - Slack channel ID for reliable lookup.
  • visibility (required) - Target visibility. Either public or private.
Output data:
  • message - Confirmation of the channel and its new visibility.
Common errors:
  • Missing scope - The admin token lacks admin.conversations:write. Reconnect the Enterprise admin token from Settings → Integrations → Slack.
  • Feature not enabled - The Slack plan is not Enterprise Grid or Business+.
  • Restricted action - A Slack workspace admin policy blocks converting the channel. Contact a Slack workspace admin.
Slack also blocks converting org-wide default channels, and converting Slack Connect channels to private.Common use cases:
  • Make a channel private when it starts holding sensitive discussions
  • Open a private project channel to the wider workspace
  • Lock down an incident channel during a security investigation
Example rule:

When someone asks to make a Slack channel public or private, use @Check Slack Channel Exists to confirm the channel and its current visibility. If it differs from what they asked for, repeat the channel name and target visibility back to the requester and ask them to confirm before running @Change Channel Visibility. When making a channel public, remind them that its full message history becomes visible to the workspace.

Adds one or more users to a Slack channel by email. Users already in the channel are skipped.Tool name: @Add Users to Slack ChannelInput fields:
  • channelName (required) - Name of the channel.
  • channelId - Slack channel ID for reliable lookup.
  • userEmails (required) - Email addresses of users to add.
Output data:
  • addedCount - How many users were added.
  • alreadyInChannel - How many of the requested users were already members.
  • failedEmails - Addresses that could not be resolved to a Slack user.
Common use cases:
  • Add new hires to team and project channels during onboarding
  • Grant channel access when someone joins a project
  • Bulk-add participants to an incident channel
Example rule:

When an onboarding ticket is approved, use @Add Users to Slack Channel to add the new hire to each channel listed on the ticket. Report how many were added and flag any emails that could not be resolved.

Removes one or more users from a Slack channel by email.Tool name: @Remove Users from Slack ChannelInput fields:
  • channelName (required) - Name of the channel.
  • channelId - Slack channel ID for reliable lookup.
  • userEmails (required) - Email addresses of users to remove.
Output data:
  • removedCount - How many users were removed.
  • failedEmails - Addresses that could not be resolved.
Common use cases:
  • Remove a departing employee from internal channels during offboarding
  • Revoke channel access when someone rolls off a project
  • Remove a contractor from channels when their engagement ends
Example rule:

When an offboarding ticket is filed, use @Remove Users from Slack Channel to remove the person from each channel listed on the ticket. Confirm how many removals succeeded and list any emails that failed.

Checks whether a specific user is a member of a Slack channel.Tool name: @Check Slack Channel MembershipInput fields:
  • channelName (required) - Name of the channel.
  • channelId - Slack channel ID for reliable lookup.
  • userEmail (required) - Email address of the user to check.
Output data:
  • isMember - true when the user is in the channel.
Common use cases:
  • Verify someone is in a channel before directing them to post there
  • Confirm membership before removing a user from a channel
  • Audit who has access to a sensitive channel
Example rule:

When someone says they cannot see a Slack channel, use @Check Slack Channel Membership to verify whether they are a member. If they are not, offer to add them with @Add Users to Slack Channel.

Sends Slack Connect invitations to external users so they can join a shared channel. Use this for partners and customers outside your organization, not for users who already have access to your workspace.Tool name: @Invite Slack Connect MembersInput fields:
  • channelName (required) - Name of the Slack Connect channel.
  • channelId - Slack channel ID for reliable lookup.
  • emails (required) - Email addresses of external users to invite.
Common use cases:
  • Invite a vendor or partner to a shared project channel
  • Onboard an external collaborator to a Slack Connect channel
  • Send a Slack Connect invitation as part of a customer onboarding flow
Example rule:

When a vendor access request is approved, use @Invite Slack Connect Members to send Slack Connect invitations to the addresses listed on the ticket. Confirm how many invitations were sent.


Manage user groups

Every tool that acts on an existing user group identifies it by the group’s name or handle.
Lists all Slack user groups. Use it to discover groups before adding or removing members, or when a request names a group loosely.Tool name: @List Slack User GroupsInput fields:
  • filter - Text matched against group names and handles.
Output data:
  • groups - Each group’s groupId, name, handle, and isDisabled status.
  • totalCount - How many groups matched.
Common use cases:
  • Find the exact name or handle of a group before acting on it
  • Show a requester which user groups match a search term
  • Audit all groups before a cleanup
Example rule:

When someone asks to join a Slack user group but does not give its exact name, use @List Slack User Groups with a filter from their request. If more than one group matches, ask which one they mean before making any change.

Looks up one Slack user group by name or handle and returns its details. When the agent only has part of a name, have it call @List Slack User Groups first.Tool name: @Find Slack User GroupInput fields:
  • name (required) - Name or handle of the group to find.
Output data:
  • found - false when no group matches.
  • groupId, name, handle - The group’s details when found.
Common use cases:
  • Confirm a group exists before adding or removing members
  • Resolve a group name to its handle before referencing it in a message
  • Check a group exists before creating one with the same name
Example rule:

When someone asks for the handle of a Slack user group, use @Find Slack User Group and reply with the name and handle. If the group is not found, use @List Slack User Groups to suggest close matches.

Creates a new Slack user group and optionally adds initial members in the same call.Tool name: @Create Slack User GroupInput fields:
  • name (required) - Name for the new user group.
  • description - What the group is for.
  • memberEmails - Email addresses of initial members to add.
Output data:
  • groupId, name, handle - The new group’s details.
  • addedCount - How many initial members were added.
  • failedEmails - Addresses that could not be resolved.
Common use cases:
  • Create a group for a new team with its members in one step
  • Set up a user group to manage channel notifications
  • Provision a group as part of a team onboarding workflow
Example rule:

When someone requests a new Slack user group, use @Find Slack User Group to confirm the name is not taken. If it is free, use @Create Slack User Group with the requested name, description, and any initial member emails. Reply with the group's handle.

Renames a Slack user group or changes its description. You can update one or both in a single call.Tool name: @Update Slack User GroupInput fields:
  • groupName (required) - Current name of the group to update.
  • newName - New name for the group.
  • description - New description for the group.
Common use cases:
  • Rename a group when a team changes its name
  • Update the description to reflect a group’s current purpose
  • Correct a typo in a group’s name
Example rule:

When someone asks to rename a Slack user group or update its description, confirm the current group name and the change, then use @Update Slack User Group.

Disables a Slack user group so it can no longer be @mentioned. The group can be re-enabled later by a Slack admin.
Disabling a user group removes it from @mention autocomplete immediately. Confirm with the requester before running this tool.
Tool name: @Archive Slack User GroupInput fields:
  • groupName (required) - Name of the group to archive.
Common use cases:
  • Disable a group when a team or project is dissolved
  • Clean up groups that are no longer in use
  • Archive a temporary group after an event or incident
Example rule:

When someone asks to archive a Slack user group, use @Find Slack User Group to confirm it exists, then repeat the group name back to the requester and ask them to confirm before running @Archive Slack User Group.

Adds one or more users to a Slack user group by email. Users already in the group are skipped.Tool name: @Add Users to Slack User GroupInput fields:
  • groupName (required) - Name of the user group.
  • userEmails (required) - Email addresses of users to add.
Output data:
  • addedCount - How many users were added.
  • alreadyInGroup - How many were already members.
  • failedEmails - Addresses that could not be resolved.
Common use cases:
  • Add a new hire to their team’s user groups during onboarding
  • Grant access managed by a user group when someone joins a project
  • Sync group membership after a team reorganization
Example rule:

When an onboarding ticket is approved, use @Add Users to Slack User Group to add the new hire to each user group listed on the ticket. Report how many were added and flag any addresses that could not be resolved.

Removes one or more users from a Slack user group by email.Tool name: @Remove Users from Slack User GroupInput fields:
  • groupName (required) - Name of the user group.
  • userEmails (required) - Email addresses of users to remove.
Output data:
  • removedCount - How many users were removed.
  • failedEmails - Addresses that could not be resolved.
Common use cases:
  • Remove a departing employee from user groups during offboarding
  • Revoke access controlled by a user group when someone leaves a team
  • Clean up group membership after a project ends
Example rule:

When an offboarding ticket is filed, use @Remove Users from Slack User Group to remove the person from each user group listed on the ticket. Confirm how many removals succeeded and list any addresses that failed.

Checks whether a specific user is a member of a Slack user group.Tool name: @Check Slack Group MembershipInput fields:
  • groupName (required) - Name of the user group.
  • userEmail (required) - Email address of the user to check.
Output data:
  • isMember - true when the user is in the group.
Common use cases:
  • Confirm membership before adding or removing someone from a group
  • Explain why someone is or is not receiving group notifications
  • Audit group access before approving a role change
Example rule:

When someone asks whether they are in a Slack user group, use @Check Slack Group Membership and reply with the result. If they are not a member and want to join, offer to add them with @Add Users to Slack User Group.


Send messages

Sends a private Slack DM to one or more users. When multiple emails are provided, a separate DM goes to each person.Tool name: @Send Slack DMInput fields:
  • userEmails (required) - Email addresses of users to message. Pass multiple to send the same message to each.
  • message (required) - Message text. Supports Slack mrkdwn formatting.
Output data:
  • sentCount - How many DMs were sent successfully.
  • failedEmails - Addresses that could not be resolved or reached.
Common use cases:
  • Notify a new hire privately about their access details
  • Send a confidential password or code without putting it in the ticket
  • Alert a manager when their team member’s access request is approved
Example rule:

When an access request is approved, use @Send Slack DM to notify the requester privately with their new access details. Send any passwords or temporary credentials through a DM, not in the ticket reply.

Posts a message to a Slack channel. Can also reply in an existing thread by passing the messageTs from a previous result as threadTs.Tool name: @Send Slack Channel MessageInput fields:
  • channelName (required) - Name of the channel to post in.
  • channelId - Slack channel ID for reliable lookup.
  • message (required) - Message text. Supports Slack mrkdwn formatting.
  • threadTs - Timestamp of the parent message to reply to in its thread. Only pass this when a previous call to this tool returned a messageTs. Never invent a value.
Output data:
  • messageTs - Timestamp of the posted message. Pass it as threadTs on a follow-up call to reply in the same thread. Not returned when the tool runs in testing mode.
Common use cases:
  • Post a status update to an incident channel when a ticket is updated
  • Notify a team channel when an access request is resolved
  • Post a thread follow-up with details after a brief top-level summary
Example rule:

When a P1 incident ticket is opened, use @Send Slack Channel Message to post a summary to the incident channel named on the ticket. Include the ticket link and the reported impact.


Manage Enterprise Grid workspace access

The tools in this section only work on Slack Enterprise Grid installs that have an admin token connected. A Slack org admin must complete the connection from Settings → Integrations → Slack → Connect Enterprise Admin before these tools can run. @Change Channel Visibility also requires the Enterprise admin token. Other channel, user group, and messaging tools do not.
Adds a user who already exists in your Enterprise Grid org to a specific workspace. No invite email is sent. You must explicitly choose a role for the user before calling this tool.Tool name: @Assign User to Slack Enterprise WorkspaceInput fields:
  • teamId or teamName - The workspace to assign the user to. teamId is the Slack team ID (T…); teamName is the workspace display name, resolved automatically. One must be provided.
  • userId or email - The user to assign. userId is the Slack user ID (U…); email is resolved automatically. One must be provided.
  • role (required) - The workspace role. Must be chosen explicitly by the requester. Options: regular for a full member, multi_channel_guest for access to specific channels only, single_channel_guest for access to exactly one channel.
The tool enforces the user’s org-level role: a Single-Channel Guest can only be assigned as Single-Channel Guest or lower. To upgrade a user’s org-level guest type, a Slack org admin must do that manually at admin.slack.com.Common use cases:
  • Add a new hire to the right workspaces as part of onboarding
  • Grant a contractor guest access to a project workspace
  • Move a user into an additional workspace when their team changes
Example rule:

When an onboarding ticket is approved, present the three role options (regular member, multi-channel guest, single-channel guest) and wait for the requester to choose explicitly. Then use @Assign User to Slack Enterprise Workspace to add the new hire to the workspace named on the ticket with the chosen role. Confirm the assigned role in the reply.

Sets or updates the access expiration timestamp for a guest user in an Enterprise Grid workspace. Use this to enforce time-bound access for contractors and vendors.Tool name: @Set Enterprise User Access ExpirationInput fields:
  • teamId or teamName - The workspace the guest belongs to. One must be provided.
  • userId or email - The guest user to update. One must be provided.
  • expirationTs (required) - Unix timestamp in seconds when guest access should expire.
Common use cases:
  • Set an end date when granting contractor or vendor access
  • Extend an existing guest’s access when their engagement is renewed
  • Shorten access when a project wraps up early
Example rule:

When a contractor access request is approved, use @Set Enterprise User Access Expiration to set the guest's expiration to the contract end date on the ticket. Reply to the requester with the new expiration date.

Removes a user from a single workspace inside the Enterprise Grid org. The user keeps their Slack account and access to any other workspaces they belong to.Tool name: @Remove User from Slack Enterprise WorkspaceInput fields:
  • teamId or teamName - The workspace to remove the user from. One must be provided.
  • userId or email - The user to remove. One must be provided.
Common use cases:
  • Remove a user from a workspace when they change teams
  • Clean up guest access after a project ends
  • Revoke workspace membership as part of partial offboarding
Example rule:

When a project closeout ticket is resolved, use @Remove User from Slack Enterprise Workspace to remove each contractor listed on the ticket from the project workspace. Post a summary of removed users back to the ticket.

A tool with no execution policy set runs without asking. When Copilot drafts a rule, it suggests Requires confirmation for write tools and Requires approval for delete tools, and you can change either per rule. See tool execution policies.

Setup

1

Install the Slack integration

Follow the Slack setup guide to connect Slack to Ravenna.
2

Connect the Enterprise admin token (optional)

To use the Enterprise Grid workspace access tools, a Slack org admin must connect the Enterprise admin token from Settings → Integrations → Slack → Connect Enterprise Admin. Without this token, those three tools return an ENTERPRISE_ADMIN_TOKEN_REQUIRED error. @Change Channel Visibility also requires the token. Other channel management, user group, and messaging tools do not require it.
3

Configure your agent

Open your agent’s settings and confirm the Slack tools appear in the Tools section under Capabilities.
4

Create rules

Write that reference the Slack tools using @ mentions.
5

Test the tools

Test rules against non-production channels and groups first to confirm the agent takes the action you expect.

Best practices

  • Prefer email over IDs in rule prompts. All tools accept email addresses for users and resolve them automatically. Emails are easier for end users to provide than Slack user IDs.
  • Use the channel ID when you have it. When a ticket references a channel as #[name](channelId:ID), pass the ID as channelId. It resolves reliably across Enterprise Grid workspaces where the same channel name can appear in multiple workspaces.
  • Find before you create. Pair @Find Slack User Group with @Create Slack User Group so the agent catches name conflicts before writing.
  • Send credentials privately. Use @Send Slack DM for temporary passwords and access codes. DMs keep sensitive details out of the ticket and out of shared channels.
  • Always confirm the role before assigning. The role choice on @Assign User to Slack Enterprise Workspace is not reversible without removing and re-adding the user. Have the rule present all three options and wait for an explicit choice.
  • Gate the destructive tools. Put @Archive Slack Channel and @Archive Slack User Group behind Requires approval in any rule an agent can reach on its own.
  • For full offboarding, use your identity provider. @Remove User from Slack Enterprise Workspace removes the user from one workspace only. To deactivate a Slack account entirely, use Okta, Microsoft Entra, or another identity provider instead.
Learn more about configuring agents and writing effective rules
Last modified on October 23, 2026