{"version":"2.1.323","anchor":"oauth-401-recovery-sdk-getoauthtoken-stale-handling","canonical_anchor":"oauth-401-recovery-sdk-getoauthtoken-stale-handling","heading":"SDK sign-in recovery no longer treats an unrefused reused token as a fault","tier":"internal","area":"SDK","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.323\/e\/oauth-401-recovery-sdk-getoauthtoken-stale-handling","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.323","markdown":"### SDK sign-in recovery no longer treats an unrefused reused token as a fault\n\nIf the SDK token callback returns the same token before any server has refused it, Claude Code no longer logs it as a fault\n\n**What**\n\nPrograms built with the SDK can hand Claude Code a sign-in token through a `getOAuthToken` callback. Sign-in recovery now records why it is running. If the callback returns the same token and the reason is that the token may be stale, Claude Code now logs that no server has refused the token and that this is not a fault. It then stops without retrying.\n\nRecovery also counts as successful when the stored token already differs from the one that was in use. Before, every same-token result was logged as the same expired token coming back.\n\n**Why**\n\nPrograms built on the SDK no longer see false sign-in faults in the logs when their token is simply reused.\n\n- Area: SDK\n- Names: `getOAuthToken`\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}