[BUG] Slack tools return empty `Text:` for bot messages using legacy `attachments[]` field
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?
Summary
A Slack message with attachments (like the one in the image below) can't be read by the Slack MCP:
<img width="807" height="167" alt="Image" src="https://github.com/user-attachments/assets/d9c53f53-0fa9-4b09-a09d-e526ab714247" />
More details
mcp__slack__slack_read_thread, slack_read_channel, and slack_search_public
return only metadata (no body) for messages whose content lives in
attachments[].text / attachments[].fallback rather than the top-level text
or modern blocks[]. The data IS retrievable from Slack — Slack's search index
matches against it — but Claude Code's response formatter does not emit it.
Repro
- Find a channel that contains messages from the Buildkite Slack app (or any
bot that posts via attachments — many CI bots do).
slack_read_threadon that message ts: response showsText:empty.slack_search_publicwithinclude_bots=trueand a query containing tokens
from inside the attachment (e.g. the build number): Slack matches and
returns the message, but the rendered Text: is still empty.
Expected
When text is empty but attachments[] has text/fallback, render that
content (e.g. concatenated or under an "Attachments:" section). Same for
blocks[] if not already.
Why it matters
Most legacy/CI bots (Buildkite, GitHub, PagerDuty, CircleCI, etc.) post via
attachments. Currently their messages appear empty in Claude Code, so any
skill or workflow that consumes alerts from these bots requires manual copy-
paste of the alert content. A one-place fix in the response formatter unlocks
a large class of integrations.
Evidence the data is reachable
The same search query "#<build-number>" with include_bots=true returns the
specific bot message as a single match, proving Slack's search index sees the
attachment text. The MCP response just doesn't emit it.
Environment
Claude Code <your version>, macOS. Slack workspace: standard config, no
non-default scopes required.
What Should Happen?
It should be possible for the slack MCP to read slack messages posted via attachments.
Error Messages/Logs
Steps to Reproduce
For example, a slack message like this can't be read by the Slack MCP:
<img width="807" height="167" alt="Image" src="https://github.com/user-attachments/assets/d9c53f53-0fa9-4b09-a09d-e526ab714247" />
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.143 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗