{"version":"2.1.311","anchor":"x-should-retryfalse-honored-for-429503529-in-retry-logic","canonical_anchor":"x-should-retryfalse-honored-for-429503529-in-retry-logic","heading":"Claude Code respects a server's do-not-retry signal on rate-limit and overload errors","tier":"notice","area":"Elsewhere","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.311\/e\/x-should-retryfalse-honored-for-429503529-in-retry-logic","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.311","markdown":"### Claude Code respects a server's do-not-retry signal on rate-limit and overload errors\n\nIf a server replies to a rate-limit or overload error with x-should-retry: false, Claude Code now stops instead of retrying\n\n**Unclear.** Exactly which 503 responses honour the header is not stated.\n\n**What**\n\nA server can send the header `x-should-retry: false` to tell Claude Code not to try a request again. Claude Code used to look at this header only after its other retry rules had been checked, so a request that hit one of those rules was retried anyway.\n\nThe header is now checked earlier. Claude Code no longer retries when the header comes with these error responses:\n\n- 429, which means too many requests.\n\n- 529, which means the service is overloaded.\n\n- 503, which means the service is unavailable. This one is honoured only under certain conditions.\n\nThere is an exception: if the response also carries a header marking the problem as a fetch error, other conditions decide what happens.\n\n**Why**\n\nThis changes how Claude Code behaves when the service is busy. If you run a gateway or proxy, sending `x-should-retry: false` with these errors now stops Claude Code from retrying.\n\n- Area: Elsewhere\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}