Gemini CLI 修复 OAuth 缓存投毒:失败初始化 promise 不再永久卡死

adityajai119 · ghdev · 2026-11-14

开发者向 google-gemini/gemini-cli 提交 PR #30296,修复 getOauthClient() 中的一个缓存缺陷:当 initOauthClient() 因授权超时、用户取消同意或网络瞬断而失败时,被拒绝的 promise 会一直留在 oauthClientPromises 缓存里,导致该 authType 后续所有调用都直接重抛旧错误,直到进程重启。

修复方案是在缓存条目上挂 .catch() 处理器,仅当缓存仍指向该被拒绝的 promise 时才删除条目(避免 clearOauthClientCache() 之后迟到的 rejection 误删新缓存的客户端),然后重抛错误。该 PR 修复 issue #29052,附带了完整的单测、构建与 lint 验证步骤,作者已在 Windows 上验证通过。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →