Drop a persisted client registration that can't serve loopback login.
stored_loopback_port explains why the authorize request's
redirect_uri must match the one registered against the persisted
client_id. When that registered URI is not a reusable loopback
callback (e.g. a portless http://localhost/callback left by an earlier
non-loopback login), no port can be reused, so a CLI login binds a fresh
random port and the server rejects the mismatched redirect_uri
("invalid or missing redirect_uri"). Removing the stale client_info
makes the SDK perform a fresh DCR with the loopback redirect URI it will
actually use.
Only discards when no token is persisted at all, so a session with a
usable (or refreshable) token is never downgraded to a full re-auth.
The presence check is deliberately conservative: it errs toward keeping
the registration, never toward deleting one that might still be needed.