Skills
Messaging Official

Slack

Add Slack as a messaging channel. Uses Socket Mode — no public URL needed.

What it does

  • Connects NanoClaw to Slack via Socket Mode
  • No public URL or webhook endpoint required
  • Supports public channels, private channels, and DMs
  • Works alongside other channels or as a standalone
  • Full OAuth scope configuration for reading and writing messages

What you'll need

  • NanoClaw installed and running
  • A Slack workspace with admin access
  • Slack app created at api.slack.com
  • Socket Mode enabled with App-Level Token

Install

/add-slack

How it works

The /add-slack skill connects NanoClaw to Slack using Socket Mode. This is a WebSocket-based connection that doesn’t require a public URL or webhook endpoint — the bot connects outbound to Slack’s servers. This makes it ideal for running NanoClaw on your local machine or behind a firewall.

The skill applies the SlackChannel class through the skills engine, installs the @slack/bolt dependency, and integrates into the message pipeline. If you already have other channels like WhatsApp or Telegram, Slack is added alongside them.

Setting up the Slack app requires a few steps in the Slack API dashboard. The skill provides detailed instructions (and references a SLACK_SETUP.md guide with screenshots) for each step:

  1. Create the app at api.slack.com and enable Socket Mode.
  2. Generate an App-Level Token (xapp-...) with the connections:write scope. This is what allows Socket Mode.
  3. Subscribe to bot events: message.channels, message.groups, and message.im so the bot can receive messages from public channels, private channels, and DMs.
  4. Configure OAuth scopes: chat:write, channels:history, groups:history, im:history, channels:read, groups:read, and users:read.
  5. Install the app to your workspace to get the Bot Token (xoxb-...).

You paste both tokens (the App-Level Token and Bot Token) into the skill, and it saves them to your environment.

Registration

After the app is installed, you get the channel ID for the Slack channel where NanoClaw should operate. The easiest way is to right-click the channel name in Slack and select “View channel details” — the channel ID is at the bottom of the detail panel.

The skill registers this channel in the database. You can register multiple channels: one as your main channel and others as trigger-only.

Known limitations

Slack’s integration has a few current limitations to be aware of:

  • Threads are flattened — the bot sees threaded replies as regular messages. Thread context is not preserved.
  • No typing indicator — Slack’s API doesn’t support a persistent “typing” status the way other platforms do.
  • No file or image handling — file attachments in Slack messages are not currently processed by the agent.
  • Message splitting is basic — long responses are split at character boundaries rather than at natural paragraph breaks.

These are known and tracked for future improvement.

Tips

  • Socket Mode means you never need to expose a port or set up ngrok. The connection is outbound-only, which is simpler and more secure for personal use.
  • If the bot stops responding, check that both tokens are valid. App-Level Tokens don’t expire, but Bot Tokens can be revoked if the app is reinstalled.
  • Some Slack workspaces have admin policies that restrict which apps can be installed. If you hit a permissions wall, you may need workspace admin approval.
  • Invite the bot to the channel before registering it — Slack bots can only read messages in channels they’ve been explicitly added to.