[BUG] Slack connector: slack_read_thread/slack_read_channel return blank author (no name, no user ID) for Slack Connect external members
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
- The same token resolves the same users directly: calling
slack_read_user_profilewith an external member's user ID (obtained out-of-band) returns their name successfully in the same session. - In-body mentions render fine:
<@U…|name>mentions inside message text are resolved and displayed correctly — only the author header is dropped. - Slack's underlying
conversations.history/conversations.repliesAPI always includes the author'suserID on every message, including external members, so the ID is available to the connector and is being discarded during rendering.
Steps to reproduce
- Connect the claude.ai Slack connector in a workspace that has a Slack Connect shared channel with active external-org members.
- Call
slack_read_thread(orslack_read_channel) on a thread/channel containing messages from those external members. - 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.