[BUG] Slack connector: slack_read_thread/slack_read_channel return blank author (no name, no user ID) for Slack Connect external members

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 22, 2026

Description

In Slack Connect shared channels, the claude.ai Slack connector's slack_read_thread and slack_read_channel tools return a blank author for messages posted by external-org members: the From: line is empty — no display name and no user ID fallback. Messages from same-workspace users and from bots resolve normally (e.g. From: Jane <jane@acme.com> (U0XXXXXXX), From: Linear (U0XXXXXXX)).

Because not even the raw user ID is emitted, the model has no way to attribute these messages at all — in Slack-Connect-heavy workspaces (external shared channels as the client interface), every client message arrives anonymous, and misattribution follows.

Evidence this is a resolution/join failure, not a Slack permission wall

  1. The same token resolves the same users directly: calling slack_read_user_profile with an external member's user ID (obtained out-of-band) returns their name successfully in the same session.
  2. In-body mentions render fine: <@U…|name> mentions inside message text are resolved and displayed correctly — only the author header is dropped.
  3. Slack's underlying conversations.history / conversations.replies API always includes the author's user ID on every message, including external members, so the ID is available to the connector and is being discarded during rendering.

Steps to reproduce

  1. Connect the claude.ai Slack connector in a workspace that has a Slack Connect shared channel with active external-org members.
  2. Call slack_read_thread (or slack_read_channel) on a thread/channel containing messages from those external members.
  3. Observe: external members' messages render with an empty From: line; internal users and bots render with name + ID.

Expected behavior

At minimum, emit the raw user ID when the profile can't be resolved (From: (U0XXXXXXX)), so the model can resolve it via slack_read_user_profile. Ideally, resolve the display name the same way the profile tool and in-body mentions already do.

Environment

  • Claude Code CLI with the claude.ai Slack connector (mcp__claude_ai_Slack__* tools)
  • Reproduces consistently across multiple Slack Connect channels and multiple external orgs

Related

Same class of silent-data-drop as #58232 / #60382 (bot attachments[] content not surfaced), but for the author field.

View original on GitHub ↗