mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-24 16:41:30 +02:00
Gateway records enable body-level identity so LiteLLM's tag-budget check can read it, and the injector wrote "user" and "metadata.tags" into every JSON object regardless of dialect. Claude Code reaches those same records on /v1/messages, where "user" is not a permitted top-level field and metadata accepts only "user_id", so the upstream rejected the request with a 400 naming a field the client never sent. Rewriting the body also changed the bytes a gateway-side prompt cache keys on. Gate the body write on the surface llm_request_parser resolved from the path. Header stamping is untouched, so spend tracking and per-end-user budgets keep working on the surfaces that lose the body path.