openclaw - 💡(How to fix) Fix Slack tooling: `slack` tool is invisible to Claude Code, and admin actions (channel/app create, invite, member lookup) are missing [2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#74757Fetched 2026-05-01 05:41:43
View on GitHub
Comments
2
Participants
2
Timeline
15
Reactions
2
Author
Timeline (top)
subscribed ×7mentioned ×4commented ×2cross-referenced ×2

Two related gaps in the Slack extension surfaced while wiring up notifications for a side project (flight-watch). Filing them together because they have one root cause (Slack tooling that the agent should be able to drive end-to-end is partly missing, partly invisible).

Error Message

Token resolution: prefer appConfigToken for manifest ops, userToken for admin ops, fall back to botToken for things it can do, error clearly otherwise.

Root Cause

Two related gaps in the Slack extension surfaced while wiring up notifications for a side project (flight-watch). Filing them together because they have one root cause (Slack tooling that the agent should be able to drive end-to-end is partly missing, partly invisible).

Fix Action

Fix / Workaround

The skill file is loaded into the system prompt fine (so the agent knows about the tool), but cannot actually call it — even basic actions like react or sendMessage are unreachable from the agent. The current workaround is to bypass the tool entirely and curl Slack Web API directly with the bot token from ~/.openclaw/openclaw.json.

Code Example

ToolSearch query: "select:slack"No matching deferred tools found
ToolSearch query: "+slack"No matching deferred tools found
ToolSearch query: "slack react messages send" → returns ExitPlanMode/Monitor/etc., not slack

---

{
     "channels": {
       "slack": {
         "botToken": "xoxb-…",
         "userToken": "xoxp-…",          // new
         "appConfigToken": "xoxe.xoxp-1-…" // new
       }
     }
   }
RAW_BUFFERClick to expand / collapse

Summary

Two related gaps in the Slack extension surfaced while wiring up notifications for a side project (flight-watch). Filing them together because they have one root cause (Slack tooling that the agent should be able to drive end-to-end is partly missing, partly invisible).

1. slack tool is not discoverable via ToolSearch

In a Claude Code main session running on Slack, the slack tool described in dist/extensions/slack/skills/slack/SKILL.md (react / sendMessage / readMessages / pins / memberInfo / etc.) is not loadable via the deferred-tools ToolSearch mechanism:

ToolSearch query: "select:slack"        → No matching deferred tools found
ToolSearch query: "+slack"              → No matching deferred tools found
ToolSearch query: "slack react messages send" → returns ExitPlanMode/Monitor/etc., not slack

The skill file is loaded into the system prompt fine (so the agent knows about the tool), but cannot actually call it — even basic actions like react or sendMessage are unreachable from the agent. The current workaround is to bypass the tool entirely and curl Slack Web API directly with the bot token from ~/.openclaw/openclaw.json.

Expected: the slack tool surface (already implemented in extensions/slack/src/actions.ts) is exposed alongside the rest of the mcp__openclaw__* tools — either as mcp__openclaw__slack or as a top-level slack tool that ToolSearch can find.

2. Slack admin operations are not provided

Even with (1) fixed, the existing tool only covers a Bot Token's scope (chat:write, reactions, pins, basic reads). Several common workflows still require the user to leave the agent and click around in Slack's web UI:

  • Creating a channel (conversations.create)
  • Inviting members to a channel (conversations.invite)
  • Looking up a workspace user by email (users.lookupByEmail)
  • Listing workspace members (users.list)
  • Creating or updating a Slack App from a manifest (apps.manifest.create / apps.manifest.update) — useful for self-installing notification bots
  • Archiving a channel (conversations.archive)

These need either a User Token or, for the manifest endpoints, an App Configuration Token. Today there is no plumbing for either in channels.slack config.

Proposed direction

  1. Fix tool exposure — investigate why slack doesn't show up in the deferred-tools list visible to Claude Code main sessions. (Possibly an MCP registration issue; the tool is wired for the OpenCode/ACP side but not the Claude harness.)

  2. Add slack_admin action group to the existing tool, gated on a configured admin token:

    {
      "channels": {
        "slack": {
          "botToken": "xoxb-…",
          "userToken": "xoxp-…",          // new
          "appConfigToken": "xoxe.xoxp-1-…" // new
        }
      }
    }

    New actions (initial set):

    • createChannel({ name, isPrivate?, topic? })
    • inviteToChannel({ channelId, userIds })
    • lookupUserByEmail({ email })
    • listMembers({ cursor?, limit? })
    • createAppFromManifest({ manifestPath | manifestYaml })
    • archiveChannel({ channelId })

    Token resolution: prefer appConfigToken for manifest ops, userToken for admin ops, fall back to botToken for things it can do, error clearly otherwise.

  3. Action-group toggle in config (matches the existing actionGroups pattern in the slack extension) so admins can keep this off by default.

Why now

The flight-watch project (notification bot living on this Mac) needed (a) a dedicated channel created and (b) a Slack App created from slack_app_manifest.yaml. Both required manual web-UI steps. Closing this gap means the agent can stand up its own notification surface end-to-end without the user touching Slack.

I'll send the PR

Happy to drive this myself — opening this issue first to lock down the surface (especially around token plumbing and the slack_admin action-group flag) before sending the PR.

extent analysis

TL;DR

The slack tool is not discoverable via ToolSearch and lacks admin operations, which can be fixed by exposing the tool and adding an slack_admin action group with the necessary token configurations.

Guidance

  • Investigate the MCP registration issue to fix the tool exposure, ensuring the slack tool is properly registered and visible to Claude Code main sessions.
  • Add a slack_admin action group to the existing tool, gated on a configured admin token, to provide the necessary admin operations.
  • Update the channels.slack config to include userToken and appConfigToken for the new admin operations.
  • Implement token resolution to prefer appConfigToken for manifest ops, userToken for admin ops, and fall back to botToken for compatible operations.

Example

{
  "channels": {
    "slack": {
      "botToken": "xoxb-…",
      "userToken": "xoxp-…",
      "appConfigToken": "xoxe.xoxp-1-…"
    }
  }
}

Notes

The proposed direction involves fixing the tool exposure and adding the slack_admin action group, which should address the gaps in the Slack extension. However, the implementation details and token management will require careful consideration to ensure secure and proper functionality.

Recommendation

Apply the proposed workaround by fixing the tool exposure and adding the slack_admin action group, as it addresses the root cause of the issue and provides the necessary admin operations.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING