AI API receipt · langchain-ai/langgraph

Python SDK loses the first SSE event type when the stream starts with a UTF-8 BOM

langchain-ai/langgraph#9225 · upstream bug reproduced by running the issue's own reproduction

Badgr cannot tell this response is wrong

A valid stream starting with a BOM reached the client with the first event type blanked.

Badgr's own check strips the one leading BOM the SSE spec allows, so the stream is accepted; the blanked event type is a bug in the client SDK's decoder. The receipt therefore records success. This is a limit of what the contract can prove, shown here so it is not mistaken for protection.

What the upstream returned (replayed)

The output the bug produces, taken from the issue’s reproduction and fed to Badgr’s validators. Not a live provider call.

\xef\xbb\xbfdata: {"choices": [{"index": 0, "delta": {"content": "hello"}, "finish_reason": null}]}
data: {"choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}
data: [DONE]

Badgr receipt

Written by Badgr’s receipt ledger and read back from GET /v1/receipts/replay-langgraph-9225-sse-leading-bom-loses-event-type.

{
  "request_id": "replay-langgraph-9225-sse-leading-bom-loses-event-type",
  "status": "success",
  "endpoint": "/v1/chat/completions",
  "stream": true,
  "failure_stage": null,
  "error_code": null,
  "error_message": null,
  "retryable": null,
  "provider_mode": "replay",
  "routing_decision": "replayed_upstream_output",
  "created_at": "1791543162.3278348"
}

Recorded 2026-10-09 in Badgr’s local development environment. Replay cases and verdicts are pinned by backend/test_ai_api_replay_cases.py.

← All AI API receipts