decolua/9router · error · Error
Onboarding timeout - please try again
Error message
Onboarding timeout - please try again
What it means
Thrown by AntigravityService.completeOnboarding after polling onboardUser maxRetries (10) times with 5-second sleeps, and the response never contained done === true. Google's onboarding is asynchronous; this means it did not complete within ~50 seconds. The method is fail-loud by design — it does not return a partial result.
Source
Thrown at src/lib/oauth/services/antigravity.js:179
if (result.done === true) {
// Extract final project ID from response
let finalProjectId = projectId;
if (result.response?.cloudaicompanionProject) {
const respProject = result.response.cloudaicompanionProject;
if (typeof respProject === 'string') {
finalProjectId = respProject.trim();
} else if (respProject.id) {
finalProjectId = respProject.id.trim();
}
}
return { success: true, projectId: finalProjectId };
}
// Wait 5 seconds before retry
await new Promise(resolve => setTimeout(resolve, 5000));
}
throw new Error("Onboarding timeout - please try again");
}
/**
* Fetch Project ID from loadCodeAssist API (legacy method for compatibility)
*/
async fetchProjectId(accessToken) {
const { projectId } = await this.loadCodeAssist(accessToken);
if (!projectId) {
throw new Error("No cloudaicompanionProject found in response");
}
return projectId;
}
/**
* Save Antigravity tokens to server
*/
async saveTokens(tokens, userInfo, projectId) {
const { server, token, userId } = getServerCredentials();View on GitHub (pinned to 90b52e06ff)
Solutions
- Simply re-run the antigravity connect command — provisioning often completes by the next attempt
- Wait a few minutes for Google to finish provisioning the Gemini Code Assist tier, then retry
- Verify at https://console.cloud.google.com that the project shows Gemini Code Assist enabled before retrying
- Raise maxRetries or the 5s delay when calling completeOnboarding if provisioning is consistently slow in your region
Defensive patterns
Strategy: retry
Validate before calling
const pre = await service.loadCodeAssist(token);
if (pre.tierId === 'legacy-tier' && !pre.raw.allowedTiers) console.warn('No tiers advertised — onboarding may never report done'); Type guard
function isOnboardDone(r) { return r != null && r.done === true; } Try / catch
try {
await service.completeOnboarding(token, projectId, tierId);
} catch (e) {
if (e.message === 'Onboarding timeout - please try again') {
await sleep(60000); // wait for backend provisioning
await service.completeOnboarding(token, projectId, tierId); // one more round
} else throw e;
} Prevention
- Retry the whole connect command — provisioning usually completes between attempts
- Allow extra time for brand-new GCP projects before first connect
- Pass a higher maxRetries to completeOnboarding in slow regions
- Confirm tier provisioning in Cloud Console before concluding the flow is broken
When it happens
Trigger: Every call to onboardUser returns HTTP 200 but with done:false (or a missing done field) for all 10 attempts — Google is still provisioning the Code Assist tier for the project.
Common situations: Brand-new GCP projects where backend provisioning is slow; free-tier accounts during high load; network keep-alives masking a stuck backend. Users on flaky connections may also lose the flow if they abort before a later retry would have succeeded.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- Failed to onboard user: ${errorText}
- Vertex: failed to mint access token from Service Account JSO
- Vertex: failed to refresh access token from ADC JSON (author
- loadCodeAssist failed: HTTP ${response.status} ${errorText.s
- onboardUser HTTP ${response.status}: ${errorText.slice(0, 20
AI-assisted analysis of decolua/9router@90b52e06ff (2026-08-30).
Data as JSON: /api/errors/eb7bce79def420ae.
Report an issue: GitHub.