Rensei docs

Slack

Outbound notifications.

The Slack integration enables workflows to send notifications to Slack channels when events occur: agent completions, incident escalations, deployment milestones, and custom alerts. This is a notification-only integration (no inbound Slack events).

What you can do

  • Post messages to Slack channels
  • Format messages with rich text, code blocks, and mentions
  • Batch notifications from workflows and agent completions
  • Status updates from incident handling and approvals

Connect Slack

Slack requires you to create a Slack app in your workspace, grant it the required scopes, and then paste the bot token into Rensei.

Create a Slack app

  1. Go to api.slack.com/apps
  2. Click Create New AppFrom scratch
  3. App Name: e.g., "Rensei Notifications"
  4. Workspace: select your workspace
  5. Click Create App

Grant bot token scopes

  1. In the left menu, click OAuth & Permissions
  2. Scroll to Scopes → Bot Token Scopes and add:
    • chat:write - post messages to channels
    • users:read - look up user IDs for <@mention> formatting
  3. Click Save Changes

These are the minimum scopes. The users:read scope is optional but required if you use <@USERID> mentions in workflow messages.

Install the app to your workspace

  1. In the left menu, click Install App
  2. Click Install to Workspace
  3. Review the permission summary and click Allow
  4. Copy the Bot User OAuth Token - it starts with xoxb-

The token is workspace-scoped and does not expire unless you explicitly revoke it.

Add the token to Rensei

  1. In Rensei, go to Settings → Integrations
  2. Select the Slack card
  3. Paste your Bot User OAuth Token (xoxb-...)
  4. Enter the default channel (e.g., #deployments or alerts)
  5. Click Connect

The platform validates the token and confirms channel membership by calling conversations.info. If the bot is not yet in the channel, you will see a validation error - invite the bot first (step 5 below).

Invite the Rensei bot to your channels

For every channel Rensei will post to:

  1. Open the channel in Slack
  2. Type /invite @Rensei Notifications (or whatever you named the app)
  3. Confirm the invitation

Slack requires the bot to be a channel member before it can post. Rensei validates membership on connect and will report an error if the bot is not invited.

Credential summary

Credential fieldValue
Bot User OAuth Tokenxoxb-...
Default channele.g., #deployments
Scopes requiredchat:write, users:read
StoredAES-GCM encrypted at workspace level

Workflow nodes

Slack integration provides one primary workflow node:

NodeDescription
slack.postPost a message to a channel

Post messages

Example: Notify on workflow completion

- id: notify_slack
  type: slack.post
  inputs:
    channel: "#deployments"
    message: |
      Workflow completed successfully
      Status: {{ $workflow.status }}
      Duration: {{ $workflow.duration }}ms
    threadTs: "{{ $trigger.slack_thread_id }}"  # optional; reply in thread

Message formatting:

Use standard Slack message syntax:

  • *bold* - bold text
  • _italic_ - italic text
  • `code` - inline code
  • \``\nblock\n```- code block (use\n` for newlines in expressions)
  • <@USERID> - mention a user (requires user ID, not name)
  • <#CHANNELID> - mention a channel

Example: Rich formatted message

- id: post_alert
  type: slack.post
  inputs:
    channel: "#alerts"
    message: |
      :warning: *High Priority Alert*
      
      Status: `{{ $trigger.status }}`
      Severity: *{{ $trigger.severity }}*
      
      Details:
      • Issue: {{ $trigger.issue_url }}
      • Assigned: <@{{ $trigger.assignee_slack_id }}>
      • Timeline: {{ $trigger.created_at }} → now
      
      _Posted by Rensei_

Message threading

To reply in an existing Slack thread, include the threadTs (thread timestamp):

- id: reply_in_thread
  type: slack.post
  inputs:
    channel: "#alerts"
    threadTs: "{{ $trigger.original_message_ts }}"  # timestamp of the first message
    message: "Agent response: {{ $steps.agent.output }}"

Notifications from agent workflows

Agent completions can post a summary to Slack via the SDLC template or custom workflows:

steps:
  # ... agent work ...
  
  - id: notify_completion
    type: slack.post
    condition: "{{ $workflow.status == 'success' }}"
    inputs:
      channel: "#general"
      message: |
        :white_check_mark: Agent completed task
        
        Issue: {{ $trigger.linear.issue.url }}
        Agent: {{ $workflow.agent.name }}
        Result: {{ $steps.agent.summary }}

Credential and permissions

The Slack integration requires one credential:

  • Bot User OAuth Token (xoxb-*) - grants chat:write and users:read scopes

The token is stored encrypted at the workspace level. All workflows in the organization share the same token.

For multi-workspace setups, create one integration per workspace and reference it by name in workflow steps (advanced; not yet fully supported).

Cost and rate limits

Slack's API has rate limits (100+ requests/second per workspace for messaging). Rensei batches notifications intelligently, so typical workflows will not exceed this.

Cost is zero - Slack includes API calls in your workspace plan.

Troubleshooting

"Channel not found"

  • Ensure the channel exists and is spelled correctly (e.g., #alerts or alerts)
  • Verify the Slack app has been invited to the channel:
    • Go to the channel in Slack
    • Click the channel name → Integrations
    • Verify "Rensei" is listed

"Authentication failed"

  • Verify your Bot User OAuth Token is still valid
  • Check the token has not been revoked in Slack
  • Re-authorize in Settings → Integrations

"Permission denied"

  • Ensure the token has chat:write scope
  • Re-install the app to your workspace in Slack

Limitations

  • Incoming webhooks: Rensei cannot receive Slack messages or events (one-way integration)
  • Slash commands: Not supported (would require command infrastructure)
  • File uploads: Not currently implemented (messages only)
  • Thread tracking: You must manually pass threadTs to reply in a thread; the integration does not auto-track threads

For more advanced Slack automation, consider building a custom workflow step or using Slack's Workflow Builder to trigger Rensei workflows.

Next steps

On this page