ClaudeCode CLI 配置自定义 API 后仍然要求登录 Anthropic 的解决方法

意外富翁 · 1个月前 · News · 54 · 0

ClaudeCode CLI 使用 CC-Switch 配置了自定义的 api,但是还是一直要求登录 Anthropic

image.png

解决方法:

~/.claude.json 添加:"hasCompletedOnboarding": true

注意不是添加到 ~/.claude/settings.json

原理说明:

这个问题涉及 Claude CLI 工具的初始化逻辑状态持久化机制

简单来说,这是因为 Claude CLI 在启动时会进行一次(Guard Clause)检查,如果不手动修改这个状态,程序就会死板地认为你是一个“新用户”,从而强制执行官方的登录流程。

以下是详细的原理分析:

  • 官方流程预期: 官方设计认为用户必须先通过浏览器登录 Anthropic 账号来获取授权。
  • 自定义 API 的冲突: 当你使用 CC-Switch 或手动配置自定义 API Endpoint(中转/反代)时,你通常使用的是 API Key(sk-xxx),而不是官方的 OAuth Token。
  • 绕过检测: 添加 "hasCompletedOnboarding": true 就像是给程序出示了一张“免检通行证”。它欺骗 CLI,让程序认为“这个用户已经登录过了,不用再弹浏览器了”,程序才会继续往下执行,去读取你配置好的自定义 URL 和 Key。

2. 为什么是 ~/.claude.json 而不是 settings.json

这涉及到配置文件的层级和硬编码路径

  • ~/.claude.json (Root Config):

    • 这是 CLI 的根状态文件
    • 通常用于存储全局认证信息(Auth Tokens)、安装状态(Onboarding status)和遥测 ID
    • CLI 的源码中,检查“是否完成初始化”的代码逻辑,被硬编码为只读取这个文件。
  • ~/.claude/settings.json (Settings Config):

    • 这是 CLI 的功能配置文件
    • 通常用于存储具体的使用偏好,比如:是否允许终端命令执行、主题颜色、允许的工具(Tools/MCP)配置等。
    • 程序是在通过了“根状态”检查之后,才会去加载这个文件里的详细设置。

比喻:

  • ~/.claude.json大门门禁(你要么进得来,要么进不来)。
  • ~/.claude/settings.json装修手册(进门之后,沙发怎么摆,墙刷什么颜色)。

如果你把通行证(hasCompletedOnboarding)扔进了装修手册里,门口的保安(CLI 启动程序)是看不到的,所以依然会把你拦在外面要求登录。

已复制到剪贴板

评论 0 条

暂无评论,来种下第一颗种子。