You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ceef2c4
Browse filesBrowse the repository at this point in the historyBrowse files
fix(auth): qc login "Unauthorized" after session revocation (0.17.2)
The 2026-10-28 rotation of the auth server's signing keys and sessions
left every browser holding an access token that looked unexpired but was
refused (bad_jwt: unrecognized kid). /cli/authorize sent that token as a
hand-built Bearer, so Approve failed with a bare "Unauthorized" while the
page still showed the user signed in.
- auth-fetch: on a 401, refresh once and retry; a refresh token the
server no longer knows (4xx) signs out locally via onExpired, keeping
this device's E2EE keys. Network blips do not sign anyone out.
- /cli/authorize: let the wrapper add the token; a dead session now shows
"Sign in first" and /auth returns to the same approval link
(sessionStorage, /cli/authorize only, so no open redirect).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
<buttontype="button"className="secondary-button"onClick={()=>{msgStore.warning('Backup PIN skipped. You can set one later in Settings.');router.push('/chat');}}>Skip (Not Recommended)</button>
467
+
<buttontype="button"className="secondary-button"onClick={()=>{msgStore.warning('Backup PIN skipped. You can set one later in Settings.');router.push(afterSignInPath());}}>Skip (Not Recommended)</button>
467
468
</div>
468
469
</form>
469
470
</div>
@@ -485,7 +486,7 @@ export default function AuthPage() {
0 commit comments