Repository navigation
release: 1.38.1 — stop asking to sign in again every morning - #47
Closed
writingdeveloper wants to merge 1 commit into
Closed
writingdeveloper wants to merge 1 commit into
writingdeveloper wants to merge 1 commit into
Conversation
The usage footer called an expired access token a lost sign-in. Claude's access token lives about 8 hours and Claude Code renews it only on its next API call, so every idle night left an expired one in ~/.claude/.credentials.json while the 30-day refresh token was still good. The footer then showed "Login expired" with a sign-in button, and re-authenticating fixed nothing the next reply would not have fixed on its own. - New usage state `refresh-pending`: the access token expired but a refresh token is present and unexpired. Last-good numbers stay on screen as stale with "Awaiting refresh" and a hint, no sign-in button; the next poll recovers once Claude Code renews the file. - `expired` (with the sign-in action) is kept for a missing/expired refresh token or a 401. - DevDeck still never refreshes the token itself: refresh tokens rotate, and running Claude Code sessions would be left holding a dead one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
writingdeveloper
added a commit
that referenced
this pull request
Oct 20, 2026
The usage footer called an expired access token a lost sign-in. Claude's access token lives about 8 hours and Claude Code renews it only on its next API call, so every idle night left an expired one in ~/.claude/.credentials.json while the 30-day refresh token was still good. The footer then showed "Login expired" with a sign-in button, and re-authenticating fixed nothing the next reply would not have fixed on its own. - New usage state `refresh-pending`: the access token expired but a refresh token is present and unexpired. Last-good numbers stay on screen as stale with "Awaiting refresh" and a hint, no sign-in button; the next poll recovers once Claude Code renews the file. - `expired` (with the sign-in action) is kept for a missing/expired refresh token or a 401. - DevDeck still never refreshes the token itself: refresh tokens rotate, and running Claude Code sessions would be left holding a dead one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
Owner
Author
|
Landed on main as 86ed195 via local squash merge (keeps the commit author on the noreply address; the GitHub squash used the account's public email). Tagged v1.38.1. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
refresh-pending: last-good numbers stay as stale with "Awaiting refresh" + hint, no sign-in button; the next poll recovers once Claude Code renews~/.claude/.credentials.json.expired(with sign-in) remains for a missing/expired refresh token or a server 401.Test plan
tsc --noEmitexpiresAt→refresh-pending🤖 Generated with Claude Code
https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY