{"version":"2.1.223","anchor":"oauth-token-refresh-shared-save-path-dead-token-handling-and","canonical_anchor":"oauth-token-refresh-shared-save-path-dead-token-handling-and","heading":"OAuth token refresh: shared save path, dead-token handling and strict credential reads","tier":"notice","area":"Auth","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.223\/e\/oauth-token-refresh-shared-save-path-dead-token-handling-and","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.223","markdown":"### OAuth token refresh: shared save path, dead-token handling and strict credential reads\n\nLogin token refresh retries saving and stops cleanly on dead tokens instead of failing quietly.\n\n**What**\n\nSaving refreshed OAuth tokens now goes through one routine with retries and explicit outcomes, and two failure paths that previously carried on regardless now stop and report.\n\n**Details**\n\n- the shared save routine CAS-writes the new tokens up to 3 times and distinguishes 'saved', 'adopted_sibling' and 'save_failed', emitting the matching telemetry including a save-exception event that names the storage backend\n- refresh bails out early when the refresh token is already known to be dead\n- a failed strict read of the credential store under the lock returns `lock_error` with new telemetry instead of continuing\n\n**Evidence**\n\n`tengu_oauth_token_refresh_locked_read_failed`\n\n- Area: Auth\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 0\/5"}