-
-
Notifications
You must be signed in to change notification settings - Fork 68.8k
Slack native streaming: missing_recipient_team_id error on chat.stopStream #19839
Description
Description
Slack native text streaming (chat.startStream/appendStream/stopStream) introduced in 2026.2.17 fails with missing_recipient_team_id on stopStream calls, causing the streamed message to disappear after generation.
Steps to Reproduce
- Enable Slack native streaming (default in 2026.2.17) with
assistant:writescope added and app reinstalled - Have a multi-account Slack setup (two bot accounts: default + secondary)
- Send a message to either bot in a Slack channel
- Bot starts streaming (message appears and text is generated live)
- On
stopStream, the API returnsmissing_recipient_team_idand the message vanishes
Expected Behavior
Stream should finalize and the message should persist.
Actual Behavior
[slack] slack-stream: failed to stop stream: Error: An API error occurred: missing_recipient_team_id
The message disappears from Slack after streaming completes.
Environment
- OpenClaw: 2026.2.17
- Slack: Socket mode, multi-account (2 bot tokens)
- Not Enterprise Grid — standard Slack workspace
- Both apps have
assistant:writeandchat:writescopes - Apps reinstalled after adding scopes
Analysis
Per Slack API docs, chat.startStream and chat.stopStream require a recipient_team_id parameter. This appears to not be passed by OpenClaw's Slack streaming implementation.
The fix is likely to fetch team_id via team.info at startup (or from event payloads) and pass it as recipient_team_id in all streaming API calls.
Workaround
Disable native streaming and use block streaming with message_end break:
{
"channels": {
"slack": {
"streaming": false,
"blockStreaming": true
}
},
"agents": {
"defaults": {
"blockStreamingBreak": "message_end"
}
}
}This gives one message per model turn instead of the old per-chunk spam, while avoiding the broken streaming API.