{"version":"2.1.312","anchor":"401-recovery-now-tells-apart-withheld-and-refused-credential","canonical_anchor":"401-recovery-now-tells-apart-withheld-and-refused-credential","heading":"Fewer needless re-login prompts when a credential was held back on purpose","tier":"notice","area":"Auth","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.312\/e\/401-recovery-now-tells-apart-withheld-and-refused-credential","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.312","markdown":"### Fewer needless re-login prompts when a credential was held back on purpose\n\nA rejected request whose credential was deliberately withheld no longer triggers a token refresh or the sign-in failure path\n\n**What**\n\nWhen a server answers a request with a 401 error, which means \"not authorized\", Claude Code tries to recover by refreshing your sign-in. It now tells two cases apart:\n\n- Withheld: the request was sent without a credential on purpose.\n\n- Refused: a credential was sent and the server rejected it.\n\nOnly the refused case is treated as a real sign-in failure. When Claude Code tries to create a code session and gets a 401 for a withheld credential, it now gives up quietly instead of running its sign-in failure handling.\n\n**Why**\n\nA 401 caused by a credential that was held back on purpose says nothing about whether your sign-in is still good. Treating it as a failure could prompt you to sign in again for no reason, and this change should cut down on those prompts.\n\n- Area: Auth\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}