[BUG] Slack connector: `slack_read_channel` drops `sh_room_ended` events, making huddle duration inaccessible

Open 💬 0 comments Opened Jun 12, 2026 by Pathan-Amaankhan

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The slack_read_channel tool silently drops sh_room_ended system events from Slack's conversations.history response. These events contain the exact huddle duration that the Slack client displays as:

"A huddle happened - You and [name] were in the huddle for 24m."

Only the huddle start ("A huddle started") is returned as a plain Slackbot message. The end event and duration are completely absent - even when scanning 6+ hours past the huddle start time.

slack_search_public_and_private also returns no results when searching for this event type.

What Should Happen?

slack_read_channel should return the sh_room_ended event (or the "A huddle happened" Slackbot summary message) so that huddle duration is accessible. The data exists - Slack stores it, and the client renders it - but the MCP does not expose it. At minimum, the summary message visible in the Slack UI should be returned like any other Slackbot message.

Error Messages/Logs

No error is thrown. The event is silently absent from the response.

slack_read_channel response (truncated):
  - Slackbot 12:58:06 IST: "A huddle started"         ← present
  - [sh_room_ended event for same huddle]              ← missing
  - Next user message: 13:16:40 IST

Verified by scanning oldest=huddle_start, latest=huddle_start+25200 (7 hours).
Zero results for slack_search query: "were in the huddle for" in the same DM.

Steps to Reproduce

  1. Start and end a Slack Huddle in a DM channel (note the duration shown in the Slack client - e.g. "You and X were in the huddle for 24m.").
  1. Call slack_read_channel with:

``
channel_id = <DM channel ID>
oldest = <huddle start timestamp>
latest = <huddle start timestamp + 25200> (7 hours)
limit = 100
``

  1. Observe: only the "A huddle started" Slackbot message appears. No end event, no duration, no "A huddle happened" summary - anywhere in the response.
  1. Call slack_search_public_and_private with:

``
query = "were in the huddle for in:<@PARTNER_USER_ID>"
include_bots = true
channel_types = im
``

  1. Observe: 0 results returned despite the message being clearly visible in the Slack desktop client.

Claude Model

Sonnet (default)

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.1.175

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

The Slack client renders huddle end events from the sh_room_ended message subtype, which contains room.date_start, room.date_end, and room.duration fields. The MCP appears to filter out messages with this subtype entirely.

Workaround currently in use: Estimating duration from the timestamp of the last in-call message before a 10+ minute gap - this gives an approximation but not the actual duration.

Affected connector: Slack (slack-by-salesforce Claude connector).
Tested on: DM channels (channel IDs starting with D). Likely affects public/private channel huddles too.

Note: sh_room_ended is an undocumented Slack internal subtype - it appears in conversations.history responses but has no official API reference page.
The closest related official docs:

View original on GitHub ↗