diff --git a/backend/internal/service/gateway_forward_as_chat_completions.go b/backend/internal/service/gateway_forward_as_chat_completions.go index 32d38cf40d..0f6611c142 100644 --- a/backend/internal/service/gateway_forward_as_chat_completions.go +++ b/backend/internal/service/gateway_forward_as_chat_completions.go @@ -418,6 +418,15 @@ func (s *GatewayService) handleCCStreamingFromAnthropic( } processAnthropicEvent := func(event *apicompat.AnthropicStreamEvent) bool { + if event == nil { + return false + } + // Drop Anthropic keepalive pings before OpenAI conversion: + // leaking `event: ping` frames crashes OpenAI-stream clients. + // Error events must still forward — they carry upstream failures. + if event.Type == "ping" { + return false + } if firstChunk { firstChunk = false ms := int(time.Since(startTime).Milliseconds())