问题

在 JetBrains IDEA 中安装 Claude Code GUI 插件(v0.18.2)后,点击工具栏按钮并不能直接使用,而是反复弹出登录界面:

How do you want to log in?Claude Code can be used with your Claude subscription or billed based on API usage through your Console account.

即便你在系统环境变量中已经配置了 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN,插件依然不认。

而 VS Code 的 Claude Code 扩展却能直接读取本地配置正常工作。

这是为什么?怎么解决?

原因分析

根本原因一:插件用 execFile 启动 Claude,无法运行 .cmd 包装器

Claude Code GUI 插件的 Node.js 后端在检测登录状态时,使用 child_process.execFile() 执行 claude auth status

execFile不带 shell 的——它直接创建一个操作系统进程。这在 Linux/macOS 上没问题,但在 Windows 上:

  • npm 全局安装的 claude 实际上是一个 .cmd 文件claude.cmd

  • .cmd 文件必须通过 cmd.exe 才能运行

  • execFile 不经过 cmd.exe,所以执行 .cmd 文件会报 EINVAL 错误

结果:插件调用 auth status 失败,认为你没有登录。

根本原因二:插件会清理环境变量

即使你在系统环境变量中设置了 ANTHROPIC_AUTH_TOKEN,插件在启动 Claude 子进程时,会主动剥离它认为敏感的变量:

const STRIPPABLE_AUTH_ENV_KEYS = [  "ANTHROPIC_API_KEY",  "CLAUDE_CODE_OAUTH_TOKEN",];

它会把从父进程继承来的这些变量清掉,防止意外泄漏。

两个原因叠加

问题

后果

execFile 不能执行 .cmd

auth status 失败 → 插件认为未登录

环境变量被清理

即便换用 .exe,系统 env 也被插件屏蔽

这就造成了登录页面反复出现的现象。


解决方案

两步解决,不需要改插件代码。

第一步:把 cliPath 指向原生的 claude.exe

找到插件配置文件:

C:\Users\<你的用户名>\.claude-code-gui\settings.js

cliPath.cmd 改为直接指向真正的可执行文件:

export default {  // ❌ 原来(npm 安装的 cmd 包装器,execFile 无法运行)  // cliPath: "C:\\Users\\<用户名>\\AppData\\Roaming\\npm\\claude.cmd",  // ✅ 改为(直接指向原生 exe 二进制文件)  cliPath: "C:\\Users\\<用户名>\\AppData\\Roaming\\npm\\node_modules\\@anthropic-ai\\claude-code\\bin\\claude.exe",  nodePath: "C:\\Program Files\\nodejs\\node.exe",  theme: "system",  fontSize: 13,  debugMode: true,  logLevel: "debug",};

💡 如何确认这个文件存在?在终端执行:

dir "C:\Users\<用户名>\AppData\Roaming\npm\node_modules\@anthropic-ai\claude-code\bin\claude.exe"

第二步:把认证配置放到 ~/.claude/settings.json 的 env 字段

插件虽然清理环境变量,但它有一个例外:你在 settings.jsonenv 字段里显式声明的变量,它会保留

所以,编辑(或创建):

C:\Users\<你的用户名>\.claude\settings.json

写入:

{  "env": {    "ANTHROPIC_AUTH_TOKEN": "你的认证令牌",    "ANTHROPIC_BASE_URL": "你的API端点地址",    "ANTHROPIC_MODEL": "你的模型名称"  }}

示例:火山引擎 Ark

{  "env": {    "ANTHROPIC_AUTH_TOKEN": "0916cf87-xxxx-xxxx-xxxx-xxxxxxxxxxxx",    "ANTHROPIC_BASE_URL": "https://ark.cn-beijing.volces.com/api/coding",    "ANTHROPIC_MODEL": "ark-code-latest",    "ANTHROPIC_SMALL_FAST_MODEL": "ark-code-latest"  }}

⚠️ 注意:ANTHROPIC_AUTH_TOKEN 是令牌,不是 API Key。具体值请去你的 API 服务商后台获取。


验证方法

修改完成后,可以用 Node.js 直接验证:

node -e "const { execFile } = require('child_process');execFile(  'C:\\Users\\<用户名>\\AppData\\Roaming\\npm\\node_modules\\@anthropic-ai\\claude-code\\bin\\claude.exe',  ['auth', 'status'],  (err, stdout) => {    if (err) console.error('错误:', err.message);    else console.log('输出:', stdout);  });"

期望输出包含 loggedIn: true


最终效果

完成上述两步后:

  1. 重启 IDEA

  2. 点击 Claude Code GUI 工具栏按钮

  3. 不再弹出登录页面,直接进入对话界面


为什么 VS Code 没问题?

VS Code 的 Claude Code 扩展使用的是 VS Code 的终端 APIvscode.window.createTerminal),它在 Windows 上默认走 shell。所以:

  • .cmd 文件可以正常运行 ✅

  • 不涉及 execFile 的 EINVAL 问题 ✅

  • 环境变量继承自 VS Code 进程,不被剥离 ✅

因此 VS Code 用户通常不会遇到这个问题。而 JetBrains 插件用 Node.js 子进程直接管理 Claude,走的是不同的路径。


常见问题

Q: 还是显示登录界面怎么办?

检查日志:

cat ~/.claude-code-gui/logs/*.log | grep -E "GET_ACCOUNT|auth status|credentials|ERROR" | tail -10

常见原因:

  • cliPath 拼写错误(确认路径存在)

  • settings.json 格式错误(JSON 不能有注释)

  • ANTHROPIC_AUTH_TOKEN 已过期

Q: 我用的是 ANTHROPIC_API_KEY 不是 AUTH_TOKEN?

都可以。插件能识别 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKENCLAUDE_API_KEY 等多种变量名。

Q: 每次 IDEA 更新都要重设吗?

不需要。配置文件保存在用户目录下,不会随 IDEA 更新而丢失。


总结

步骤

文件

改动

1

~/.claude-code-gui/settings.js

cliPath → 指向原生 claude.exe

2

~/.claude/settings.json

env

里写入认证令牌和 API 地址 |

两个改动都只需要编辑文本文件,不用改插件代码,不用装额外工具。做完重启 IDEA 即可。