一句话总结

Gemini CLI 升级后出现强制重新登录的流程,但在主力 Google 账号上始终触发 This account requires setting the GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID env var 错误,经过一轮排查与尝试,最终确认这与旧的 Google Cloud 项目绑定有关,改用未启用 Gemini API 的账号即可无痛登录。

背景

过去几个月我一直用 Gemini CLI 写代码、发起快速问答,体验稳定。两天前升级到最新版后,命令行提示需要重新登录。照着提示打开浏览器,在 Google 的授权页面完成 OAuth 流程,回调页面显示 Login successful,看起来一切正常(参考官方成功回调页面示意 auth_success_gemini):

Google 登录成功回调页面示意(请替换为原始截图)

然而 CLI 这边随即抛出错误:

Failed to login. Message: This account requires setting the GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID env var. See https://goo.gle/gemini-cli-auth-docs#workspace-gca

重复多次依旧失败,说明问题发生在本地 CLI 与账户的后续校验阶段。

Gemini CLI 登录 403 报错示意(请替换为原始截图)

排查过程

  1. 确认是不是官方已知问题。 翻了下官方 GitHub 仓库 google-gemini/gemini-cli,issue 区确实有人反馈同样的报错,维护者在 #3001 建议设置 GOOGLE_CLOUD_PROJECT_ID 环境变量。
  2. 尝试官方论坛建议。 官方支持论坛也有一则 讨论串 建议删除主目录下的 .gemini 配置重新初始化。实际操作后完全无效,CLI 仍然报同样的错,可视为误导信息。
  3. 社区经验搜索。 Twitter/X 上不少开发者抱怨(例如 @imvihv@kiwiflysky)登录失败与 Workspace 账号限制、项目绑定有关。

综合来看,问题并非本地缓存,而是和 Google Cloud 项目绑定状态强相关。

临时可用但副作用巨大的方案

按照 issue #3001 的建议,登录前先在终端导出项目 ID:

export GOOGLE_CLOUD_PROJECT_ID=gen-lang-client-0698601424

项目 ID 可以在 Google Cloud 控制台的欢迎页面看到(控制台首页右上角的“项目 ID”字段,示例可参考下方 Google Cloud Console 链接)。

随后再执行 gemini login,确实可以通过验证。

但现实里这个方案有三个明显缺点:

  • 环境变量不持久。 每次重启终端都要重新 export,除非写进 ~/.bashrc~/.zshrc,使用体验很差。
  • 需要启用 Gemini API。 只有在 Google Cloud 项目中为账号启用了 Gemini API 后,CLI 才能继续调用,这一步有可能触发计费。一些网友反馈开启后免费额度失效,每日 200 次 Pro 模型额度和 Flash 免费调用都会被记入项目账单。
  • 账单风险不透明。 我的账号是在之前测试 Vertex AI 时自动生成的项目,没有设置付款方式,所以暂时没有被扣费;但一旦绑定信用卡,后续费用就不再可控。

下图是开启 Gemini API 后、控制台「费用」页提示“为此项目关联一个结算账号”的示意,虽然页面提示可以继续使用,但计费逻辑依旧不明朗,因此风险依旧存在:

开启 Gemini API 后的 Google Cloud 控制台费用页示意(请替换为原始截图)

如果只设置 Project ID 但未启用 API,会收到 403

如果只按照 issue #3001 的提示设置了 GOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_PROJECT_ID,但忘记在控制台里启用 Gemini API,会直接收到 403 错误:

 [API Error: [{
      "error": {
        "code": 403,
        "message": "Gemini for Google Cloud API has not been used in project gen-lang-client-0698601424 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/cloudaicompanion.googleapis.com/overview?project=gen-lang-client-0698601424 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
        "errors": [
          {
            "message": "Gemini for Google Cloud API has not been used in project gen-lang-client-0698601424 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/cloudaicompanion.googleapis.com/overview?project=gen-lang-client-0698601424 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
            "domain": "usageLimits",
            "reason": "accessNotConfigured",
            "extendedHelp": "https://console.developers.google.com"
          }
        ],
        "status": "PERMISSION_DENIED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.ErrorInfo",
            "reason": "SERVICE_DISABLED",
            "domain": "googleapis.com",
            "metadata": {
              "containerInfo": "gen-lang-client-0698601424",
              "activationUrl": "https://console.developers.google.com/apis/api/cloudaicompanion.googleapis.com/overview?project=gen-lang-client-0698601424",
              "consumer": "projects/gen-lang-client-0698601424",
              "service": "cloudaicompanion.googleapis.com",
              "serviceTitle": "Gemini for Google Cloud API"
            }
          }
        ]
      }
    }
  ]

对应的终端截屏示意如下,提示 Gemini API 未启用:

未启用 Gemini API 的 403 截屏示意

因此不要误以为设置变量就足够了,Google Cloud 侧的服务状态同样关键。

综上,这个方法只是权宜之计,风险远大于收益。

最终的稳定方案:更换 Google 账号

在排除环境变量方案之后,我尝试使用一个从未在 Google Cloud 开通过 Gemini 项目的个人账号重新登录:

  1. 退出 CLI:gemini logout,并清理 ~/.gemini 目录。
  2. 使用备用 Google 账号在浏览器完成 OAuth 授权。
  3. 回到终端执行 gemini login,这次没有再提示设置项目 ID,直接进入可用状态。

实测表明,只要账号没有绑定旧的 Gemini API 或 Workspace 限制,登录流程就和旧版本一样顺利。对于需要继续使用主力账号的同学,目前还没有官方给出的无风险修复,需要等待 CLI 后续更新。

Codex 给出的可操作建议

后续我又参考了 gpt-5-codex 给出的排查建议,步骤相对完整,也有助于理解整个登录流程的变化:

  1. 先确认 Project ID。 登录 Google Cloud Console 选取或新建一个项目,记录 Project ID(如 my-gemini-playground)。
  2. 通过环境变量告知 CLI。 临时会话可以执行 export GOOGLE_CLOUD_PROJECT=my-gemini-playground(或 GOOGLE_CLOUD_PROJECT_ID);若想持久保存,把同一行写进 ~/.zshrc 等 shell 配置,必要时顺便执行 gcloud config set project my-gemini-playground,让 gcloud 与 CLI 保持一致。
  3. 确认变量已生效再登录。 重新运行 gemini login 前先用 echo $GOOGLE_CLOUD_PROJECT 检查变量值。如果仍报错,再检查 403 是否与 API 未启用有关。
  4. 检查权限与 API 状态。 第一次使用该项目时需要在控制台启用 Vertex AI / Gemini API,并确保账号至少具备 Editor 权限。多终端环境下记得每个会话都要设置相同变量。
  5. 避免误删 .gemini 目录。 错误的关键不在本地缓存,而是项目上下文缺失;删目录不会带来帮助。

小结

  • 触发 GOOGLE_CLOUD_PROJECT_ID 报错的根源在于旧项目或 Workspace 限制,而非本地缓存。
  • 通过导出 GOOGLE_CLOUD_PROJECT_ID 可以临时登录,但需要启用 Gemini API,可能带来计费与额度损失。
  • 更换一个未启用 Gemini API 的 Google 账号是现阶段最稳妥的解决方案。

如果你也遇到相同问题,建议先确认自己是否在 Google Cloud 中启用了相关项目,再决定是承担计费风险继续使用,还是临时更换账号等待官方修复。

参考链接