Docs Site

Spira Docs

docs/Agent Channels

Slack

Bind your agent to Slack in Spira AI using a bot token and an app token.

Slack Setup

This guide helps you bind your agent to Slack in Spira AI.

To complete the setup, you only need to prepare two values from Slack and paste them into the Agent page:

  • Slack Bot Token
  • Slack App Token

You do not need to understand Slack's developer platform in depth. Just follow the steps below in order.

Before You Start

  • You have a Slack workspace you can manage
  • You can create and install a Slack app in that workspace
  • You already created the AI Influencer you want to set up in Spira AI

What You Need

Slack Bot Token
Example: xoxb-...
Slack App Token
Example: xapp-...

Setup Steps

1. Open Slack App Management

Open https://api.slack.com/apps.

2. Create a New App

Create a new app in Slack.

3. Choose From an app manifest

When Slack asks how you want to create the app, choose From an app manifest.

4. Choose the Correct Workspace

Select the Slack workspace where you want this agent to work.

Make sure this is the final workspace you want to use, because the tokens created later will belong to this workspace.

5. Paste the Configuration Template

In Slack's manifest editor, paste the configuration below.

You can treat this as a ready-to-use template. No extra editing is required unless your team has special Slack requirements.

{
  "display_information": {
    "name": "Spira AI Agent",
    "description": "Slack connector for your Spira AI agent"
  },
  "features": {
    "bot_user": {
      "display_name": "Spira AI Agent",
      "always_online": true
    },
    "app_home": {
      "messages_tab_enabled": true,
      "messages_tab_read_only_enabled": false
    },
    "slash_commands": [
      {
        "command": "/new",
        "description": "Start a new session",
        "usage_hint": "[model]"
      },
      {
        "command": "/reset",
        "description": "Reset the current session"
      },
      {
        "command": "/compact",
        "description": "Compact the session context",
        "usage_hint": "[instructions]"
      },
      {
        "command": "/stop",
        "description": "Stop the current run"
      },
      {
        "command": "/session",
        "description": "Manage thread-binding expiry",
        "usage_hint": "idle <duration|off> or max-age <duration|off>"
      },
      {
        "command": "/think",
        "description": "Set the thinking level",
        "usage_hint": "<off|minimal|low|medium|high|xhigh>"
      },
      {
        "command": "/verbose",
        "description": "Toggle verbose output",
        "usage_hint": "on|off|full"
      },
      {
        "command": "/fast",
        "description": "Show or set fast mode",
        "usage_hint": "[status|on|off]"
      },
      {
        "command": "/reasoning",
        "description": "Toggle reasoning visibility",
        "usage_hint": "[on|off|stream]"
      },
      {
        "command": "/elevated",
        "description": "Toggle elevated mode",
        "usage_hint": "[on|off|ask|full]"
      },
      {
        "command": "/exec",
        "description": "Show or set exec defaults",
        "usage_hint": "host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>"
      },
      {
        "command": "/model",
        "description": "Show or set the model",
        "usage_hint": "[name|#|status]"
      },
      {
        "command": "/models",
        "description": "List providers or models for a provider",
        "usage_hint": "[provider] [page] [limit=<n>|size=<n>|all]"
      },
      {
        "command": "/help",
        "description": "Show the short help summary"
      },
      {
        "command": "/commands",
        "description": "Show the generated command catalog"
      },
      {
        "command": "/tools",
        "description": "Show what the current agent can use right now",
        "usage_hint": "[compact|verbose]"
      },
      {
        "command": "/agentstatus",
        "description": "Show runtime status, including provider usage/quota when available"
      },
      {
        "command": "/tasks",
        "description": "List active/recent background tasks for the current session"
      },
      {
        "command": "/context",
        "description": "Explain how context is assembled",
        "usage_hint": "[list|detail|json]"
      },
      {
        "command": "/whoami",
        "description": "Show your sender identity"
      },
      {
        "command": "/skill",
        "description": "Run a skill by name",
        "usage_hint": "<name> [input]"
      },
      {
        "command": "/btw",
        "description": "Ask a side question without changing session context",
        "usage_hint": "<question>"
      },
      {
        "command": "/usage",
        "description": "Control the usage footer or show cost summary",
        "usage_hint": "off|tokens|full|cost"
      }
    ]
  },
  "oauth_config": {
    "scopes": {
      "bot": [
        "app_mentions:read",
        "assistant:write",
        "channels:history",
        "channels:read",
        "chat:write",
        "commands",
        "emoji:read",
        "files:read",
        "files:write",
        "groups:history",
        "groups:read",
        "im:history",
        "im:read",
        "im:write",
        "mpim:history",
        "mpim:read",
        "mpim:write",
        "pins:read",
        "pins:write",
        "reactions:read",
        "reactions:write",
        "users:read"
      ]
    }
  },
  "settings": {
    "socket_mode_enabled": true,
    "event_subscriptions": {
      "bot_events": [
        "app_mention",
        "channel_rename",
        "member_joined_channel",
        "member_left_channel",
        "message.channels",
        "message.groups",
        "message.im",
        "message.mpim",
        "pin_added",
        "pin_removed",
        "reaction_added",
        "reaction_removed"
      ]
    }
  }
}

Then keep clicking Next until the app is created.

6. Turn On Socket Mode and Get the App Token

After the app is created, go to the Socket Mode section in Slack, enable it, and generate the token there.

The value you get at this step is the Slack App Token. It usually starts with xapp-.

7. Install the App and Get the Bot Token

Click Install to Workspace and complete the installation.

After installation, Slack will show a Bot User OAuth Token. This is the Slack Bot Token.

It usually starts with xoxb-.

8. Paste Both Values into Spira AI

Go back to the AI Influencer Agent page in Spira AI, choose Slack, and paste:

  • Slack Bot Token
  • Slack App Token

Then save the configuration.

9. Start Using Slack

After the setup is saved successfully, your agent is bound to Slack and can start working there.

Quick Reminder

  • xoxb-... is the Slack Bot Token
  • xapp-... is the Slack App Token
  • You need both values before Spira AI can bind this agent to Slack

Common Pitfalls

  • Copying the two tokens into the wrong fields
  • Creating the app in the wrong Slack workspace
  • Forgetting to enable Socket Mode before generating the app token
  • Pasting tokens with extra spaces or line breaks

Troubleshooting

Save Button Is Disabled

Make sure both fields are filled in:

  • Slack Bot Token
  • Slack App Token

Also check that there are no extra spaces before or after the tokens.

Save Works But Slack Does Not Reply

Check these items first:

  • Socket Mode is enabled
  • The app was installed into the correct workspace
  • You copied the latest tokens
  • The Slack app was created from the full template above