{"record":{"id":"11b3e07dc06c1f73","repo":"google-gemini/gemini-cli","slug":"projectid-is-not-defined-for-codeassistserver","errorCode":null,"errorMessage":"projectId is not defined for CodeAssistServer.","messagePattern":"projectId is not defined for CodeAssistServer\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/core/src/code_assist/server.ts","lineNumber":357,"sourceCode":"  async countTokens(req: CountTokensParameters): Promise<CountTokensResponse> {\n    const resp = await this.requestPost<CaCountTokenResponse>(\n      'countTokens',\n      toCountTokenRequest(req),\n    );\n    return fromCountTokenResponse(resp);\n  }\n\n  async embedContent(\n    _req: EmbedContentParameters,\n  ): Promise<EmbedContentResponse> {\n    throw Error();\n  }\n\n  async listExperiments(\n    metadata: ClientMetadata,\n  ): Promise<ListExperimentsResponse> {\n    if (!this.projectId) {\n      throw new Error('projectId is not defined for CodeAssistServer.');\n    }\n    const projectId = this.projectId;\n    const req: ListExperimentsRequest = {\n      project: projectId,\n      metadata: { ...metadata, duetProject: projectId },\n    };\n    return this.requestPost<ListExperimentsResponse>('listExperiments', req);\n  }\n\n  async retrieveUserQuota(\n    req: RetrieveUserQuotaRequest,\n  ): Promise<RetrieveUserQuotaResponse> {\n    return this.requestPost<RetrieveUserQuotaResponse>(\n      'retrieveUserQuota',\n      req,\n    );\n  }\n","sourceCodeStart":339,"sourceCodeEnd":375,"githubUrl":"https://github.com/google-gemini/gemini-cli/blob/5024443c7217464a66e98f80d73172a26440bd8f/packages/core/src/code_assist/server.ts#L339-L375","documentation":"Thrown by CodeAssistServer.listExperiments() when the server instance was constructed without a projectId. Several CodeAssistServer methods require a project ID to scope API requests; listExperiments enforces this eagerly with a guard. The projectId is passed during construction from setupUser() and can be undefined if no project was resolved from environment or user settings.","triggerScenarios":"Calling server.listExperiments(metadata) on a CodeAssistServer instance whose projectId constructor argument was undefined. This happens when setupUser could not determine a project and the server was still instantiated.","commonSituations":"The GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_PROJECT_ID env vars are unset and no default project was resolved; the user is on a tier that doesn't require a project but listExperiments was called anyway; a CodeAssistServer was constructed directly in tests without providing projectId; the OAuth flow completed but project onboarding was skipped.","solutions":["Set GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID to a valid project ID.","Run 'gcloud config set project YOUR_PROJECT_ID' before starting the CLI.","Ensure setupUser() completes project resolution before any CodeAssistServer method that requires projectId is called.","In code calling listExperiments, guard: if (!server.projectId) skip or prompt for project setup."],"exampleFix":"# Set the project ID environment variable\nexport GOOGLE_CLOUD_PROJECT=my-project-123\n\n// Or guard in code before calling listExperiments\nif (!server.projectId) {\n  console.error('Set GOOGLE_CLOUD_PROJECT before listing experiments');\n  return;\n}\nawait server.listExperiments(metadata);","handlingStrategy":"validation","validationCode":"// Verify projectId is set before calling methods that require it\nif (!server.projectId) {\n  throw new Error(\n    'CodeAssistServer requires a project ID. Set GOOGLE_CLOUD_PROJECT.'\n  );\n}\nawait server.listExperiments(metadata);","typeGuard":"function serverHasProjectId(\n  server: CodeAssistServer\n): server is CodeAssistServer & { projectId: string } {\n  return typeof server.projectId === 'string' && server.projectId.length > 0;\n}","tryCatchPattern":"try {\n  await server.listExperiments(metadata);\n} catch (e) {\n  if (e instanceof Error && e.message.includes('projectId is not defined')) {\n    console.error('Set GOOGLE_CLOUD_PROJECT before using Code Assist features.');\n    return;\n  }\n  throw e;\n}","preventionTips":["Always set GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID in the environment.","Guard CodeAssistServer methods with a projectId check before calling.","Complete project onboarding in setupUser before using server methods.","Add a startup check that warns if no project is configured."],"tags":["code-assist","project-id","configuration","gcp"],"backgroundTag":null,"analyzedSha":"5024443c7217464a66e98f80d73172a26440bd8f","analyzedAt":"2026-08-12T06:01:53.711Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}