Adom Google
Public Made by Adomby adom
Drive your whole Google Workspace from the terminal, run by your AI. Read Gmail, write Google Docs, build Google Sheets and Google Slides, search Google Drive, manage Google Calendar and Google Tasks, and post to Google Chat, plus any Google API and a zero-setup personal Gmail.
OAuth gateway session TTL is ~120s, but the client waits 10 min — leads to confusing 'Session Expired' when user clicks late
The OAuth gateway session TTL (~120s) is much shorter than the client-side WS wait (600s / 10 min). The banner in adom-google auth reads "Waiting for the gateway… (up to 10 min)", but a fresh state token is dead within 2 minutes.
Repro (measured on 2026-06-30)
Start a fresh auth, then poll the gateway's /health every 15s. The pending counter tracks live sessions:
t+0s pending=1 ← state registered, WS open
t+15s pending=1
t+31s pending=1
t+46s pending=1
t+61s pending=1
t+76s pending=1
t+91s pending=1
t+106s pending=1
t+120s pending=0 ← session dropped (gateway-side)
True gateway TTL is in (105, 120] seconds — almost certainly a hard 120s ceiling. The client-side WS stays open, silently oblivious, until its own 10-min timer fires. If the user clicks Allow after the ~120s window, Google POSTs the code to /callback, the gateway can't find the state → user sees "Session Expired. This authorization link has expired or was already used."
Where the numbers live
- Client:
_minimal_ws_roundtrip(ws_url, send_msgs, want_types, timeout=600)inadom-google(safe/full path). The"up to 10 min"string is at thecmd_authprint in the same file. - Gateway:
oauth-9mycwxij7tif.adom.cloud— TTL not exposed via/health(only showspending+uptime+brokerApps). Source repo not visible from user containers.
Ask
Either bump the gateway session TTL to match the client (600s = 10 min, so the banner is accurate), or shorten the client banner to reflect the real ~90-second comfortable window (build in some margin below the 120s gateway TTL for network + user reaction time).
If TTL asymmetry has to stay, at least log a clearer message client-side when a session-expired page comes through the gateway — e.g. include a hint like "gateway sessions currently expire in ~120s — re-run adom-google auth if you got the 'Session Expired' page" — so users don't wait out the full 10 minutes on a dead session.
Real-world impact
Bit us twice today in an agent-driven workflow (Adom Claude Code posting the URL to the user, user clicking it a couple minutes later). The failure mode is confusing because the CLI still says "Waiting for the gateway…" for another 8 minutes while the session is already dead. Losing that 8 minutes on a botched attempt is expensive when the user is on their phone or between meetings.
Happy to test a fix.