Recover Google Messages auth without re-pairing - #19
Merged
Conversation
Phloraxx
marked this pull request as ready for review
July 27, 2026 10:04
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.
Problem
The live Google-account/libgm session can remain phone-paired while Google's browser/session authentication becomes invalid. In production this presented as
SESSION_COOKIE_INVALID/ HTTP 401. The previous manager treated every fatal poll error as reconnectable, causing a roughly 2-second reconnect loop and misleadinglastConnectedAtupdates becauselibgm.Connect()returns before its asynchronous long poll is actually ready.Fix
reauth_requiredinstead of reconnecting indefinitely on Google 401/403 / invalid credentials;POST /api/connector/gmessages/reauth/google;libgm.Connect()returned nil;Final validation
Exact head:
4fe85c522d43d2e91486bcd56f170fe2b3157f60npm ci,npm audit --audit-level=high, typecheck and production build passed;gofmt/git diff --check, full uncached Go suite, race detector andgo vetpassed;nonroot:nonroot;No real SMS bodies, Google cookies, pairing tokens, or session contents are included in this PR.