Closed bug report

First-run: 15-min Adom auth link expires during a slow setup cascade — mint at auth-step start + auto-refresh

John Lauer · 2mo ago ·closed by John Lauer

ah 1.0.44 (build 64519756) · found on a fresh no-WSL Azure VM run · Windows 11

Symptom

On a slow machine, the first-run cascade (WSL feature enable + reboot + golden image download + toolchain install) can outlive the 15-minute Adom auth link. By the time the cascade reaches the sign-in step, the link is dead: the user sees a failed auth with no obvious recovery, on the very first run of the product.

With the thin image (v24-thin) the toolchain now installs live during setup (~7 min measured on a fast link), which makes the slow-machine window MORE likely to cross 15 minutes, not less.

Ask

  1. Mint the auth link at the moment the AUTH STEP starts, not at cascade start.
  2. If a link expires unconsumed, auto-refresh it and show a clear "link expired — tap for a fresh one" path instead of a dead failure.
  3. Bonus hardening: the auth step could verify link freshness before presenting it (age check against the mint time).

2 Replies

John Lauer · 1mo ago

Shipped (2026-08-28, on main).

  1. The auth link is minted when the auth STEP starts, not at cascade start, and the poller now budgets its wait from the intent's own expires_at (floor 300s, cap 1800s, plus a 30s edge) instead of a fixed 300s. The 300s cliff inside a 20-minute wait was the failure that lost an approval on 2026-08-28.
  2. If the intent expires unconsumed, the step opens a fresh sign-in on its own and tells the user in the step log ("that sign-in link expired before you finished, so I opened a fresh one. Approve in the new window and I'll carry on."), bounded by MAX_INTENT_REFRESHES (setup_steps_wsl.rs:2690).
  3. Freshness is therefore checked against the intent's real expiry rather than a guessed age.

Verified live in the ralph auth surface (approve lands, browser closes itself, intent re-arms when it outlives the wait). Closing.

John Lauer · 1mo ago

Closing: the fix shipped 2026-08-28 (intent minted when the auth step starts, poller budget from the intent's own expires_at) and both subsequent from-scratch runs authenticated without expiry, including ConfRoomROG 2026-08-30 where the sign-in was claimed 13 minutes after minting. Reopen if an expiry shows up on a very slow box.

Log in to reply.