mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-24 16:41:30 +02:00
A budget stop, a blocked model or an unroutable model all rendered as the NetBird deny envelope alone. LLM clients only parse their own provider's error shape, so the reason never reached the user: Claude Code showed an unexplained API error where it could have shown the policy message. Carry the resolved surface on the deny reason and add the vendor's error object next to the existing fields. The body stays a superset of what it was, so anything reading code, message, details or middleware is unaffected. Status codes are unchanged here: mapping window caps to 429 needs the window reset plumbed through the limits response before a correct Retry-After can be sent.