Skip to content

Streaming SSE response silently dropped between proxy and Slack delivery #68412

@noodleprincss-ai

Description

@noodleprincss-ai

Summary

When using a Claude Code hybrid proxy (port 8086) as an OpenAI-compatible provider, a model response was generated, streamed to completion via SSE (stop_reason=end_turn), and received by the OpenClaw gateway — but never delivered to Slack. No error was logged. The user only received the tool progress markers (🔧 / ✅) but not the actual text response (~4,300 chars).

Evidence

  • Claude Code session transcript (3b9e60f0) confirms the model generated a full response and completed normally
  • Proxy logs: No BrokenPipeError, no orphaned result saved (client connection was intact)
  • OC gateway logs: No error entries between response completion (22:42:19 MDT) and next message arrival (22:43:50 MDT)
  • Next message worked fine: A new session bootstrapped at 22:43:51 and delivered its response to Slack successfully

Timeline (2026-04-17, MDT)

Time Event
22:41:37 OC bootstraps session, sends message to hybrid proxy
22:41:40 Model emits text: "I'll pull up that SVG..." (57 chars)
22:41:41 Model calls Read tool → tool progress SSE chunks sent
22:42:00 Model emits response part 1 (1,958 chars)
22:42:19 Model emits response part 2 (2,340 chars), stop_reason=end_turn
22:42:19 Proxy sends final SSE chunk + [DONE]
22:43:50 User sends next message → new session bootstrapped
22:43:51 New session responds normally ✅

Suspected Root Causes (unconfirmed)

  1. Slack draft update failure: Tool progress markers were delivered as draft updates; the subsequent large text body may have failed a Slack API update (rate limit, size) — silently swallowed
  2. SSE accumulation error: Gateway's SSE consumer accumulated text but failed to finalize the draft into a permanent Slack message
  3. Race with next message: User's next message at 22:43:50 may have caused the session manager to abort/reset the streaming consumer before delivery, even though the proxy had already completed

Environment

  • OpenClaw 2026.4.2
  • Hybrid proxy v1.3.2 on port 8086
  • Provider config: claudecode-hybrid with baseUrl: http://localhost:8086/v1
  • Channel: Slack (slack_mrkdwn)

Impact

Intermittent — first observed occurrence. User saw tool progress indicators but no response text, and had to send another message to get a reply. The "lost" response was a detailed analysis that took ~40 seconds of model compute.

Notes

  • Proxy-side logging has been improved (tee writer to dedicated request log file) to capture future occurrences
  • No proxy-side bug identified — the SSE stream completed normally with all text chunks delivered and connection intact

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions