{"record":{"id":"55b12e2e77e06886","repo":"router-for-me/CLIProxyAPI","slug":"onboard-user-did-not-complete-after-d-attempts","errorCode":null,"errorMessage":"onboard user did not complete after %d attempts","messagePattern":"onboard user did not complete after (.+?) attempts","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"internal/auth/antigravity/auth.go","lineNumber":377,"sourceCode":"\t\t\t}\n\n\t\t\ttime.Sleep(2 * time.Second)\n\t\t\tcontinue\n\t\t}\n\n\t\tresponsePreview := strings.TrimSpace(string(bodyBytes))\n\t\tif len(responsePreview) > 500 {\n\t\t\tresponsePreview = responsePreview[:500]\n\t\t}\n\n\t\tresponseErr := responsePreview\n\t\tif len(responseErr) > 200 {\n\t\t\tresponseErr = responseErr[:200]\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"http %d: %s\", resp.StatusCode, responseErr)\n\t}\n\n\treturn \"\", fmt.Errorf(\"onboard user did not complete after %d attempts\", maxAttempts)\n}\n","sourceCodeStart":359,"sourceCodeEnd":379,"githubUrl":"https://github.com/router-for-me/CLIProxyAPI/blob/78f0c4079e3e6273d65d03b5549cffc898703264/internal/auth/antigravity/auth.go#L359-L379","documentation":"Returned by AntigravityAuth.OnboardUser when all 5 poll attempts (1s-indexed loop, 2s sleep between attempts) received 200 responses with done=false. Google's long-running onboarding operation never transitioned to done within roughly 10 seconds of polling. The operation is still pending server-side; the error is a local give-up, not a hard failure.","triggerScenarios":"First-time account provisioning that legitimately takes longer than the ~10s polling window; Google-side latency during onboarding bursts; following the code path where every attempt returns {done: false}.","commonSituations":"Fresh accounts on their very first login; Google incidents slowing the daily endpoint; retrying login usually succeeds because prior progress persists.","solutions":["Re-run the login command — onboarding is idempotent and prior attempts make progress server-side","If it fails repeatedly, wait several minutes for Google provisioning to settle, then retry","Check https://status.cloud.google.com for incidents if large numbers of accounts all hit this"],"exampleFix":"// before (constant in auth.go)\nmaxAttempts := 5\n\n// after — slower accounts need a longer window\nmaxAttempts := 10","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"if _, err := auth.OnboardUser(ctx, token, tierID); err != nil && strings.Contains(err.Error(), \"did not complete after\") {\n    time.Sleep(10 * time.Second) // operation still pending server-side\n    _, err = auth.OnboardUser(ctx, token, tierID)\n    if err != nil { return err }\n}","preventionTips":["Retry the full login on give-up; onboarding is idempotent and prior attempts persist","Expect first-logins on fresh accounts to need more than one attempt"],"tags":["antigravity","polling","onboarding","transient"],"backgroundTag":null,"analyzedSha":"78f0c4079e3e6273d65d03b5549cffc898703264","analyzedAt":"2026-08-15T12:26:37.444Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}