Request rejections are now identified from a structured marker rather than guessing from error wording.
What's wrong with this entry?
Claude Code now reads a capability_rejected: marker with a reason token out of 400 and 413 responses, rather than only lowercasing the error text and searching it for phrases. Token matching uses a word boundary, so image_block no longer matches image_blockade. Prose matching remains as a fallback, so nothing changes against servers that do not send the marker.
- Reason codes include prompt_too_long, mid_conv_system, cache_control_field, thinking_signature, effort_unsupported, media_budget, max_tokens_context_overflow, and per-beta-header entries.
capability_rejected:
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.229
Render errors are now reported instead of silently blanking
Both mention error
-
v2.1.234
Empty or malformed API responses now report what actually answered
Both mention error
-
v2.1.234
Safeguard and refusal notices now name the category and validate the request ID
Both mention error