跳到主要内容
claudecookie
返回转换器

Claude Code 老是掉登录:解决「session expired, run /login」

Claude Code 在任务中途停下并提示「Your session has expired. Please run /login」,或者每隔几小时就悄悄退回登录界面。下面解释这条消息到底意味着什么,以及从简单到彻底的修复顺序。

最后更新: 2026-09-14

claude — session fix
claude
✗ Your session has expired. Please run /login to sign in again.
# first, make sure no API key is overriding the subscription:
echo $ANTHROPIC_API_KEY
sk-ant-api03-… ← unset this if you meant to use Pro/Max
/logout
Logged out. Cleared ~/.claude/.credentials.json.
/login
Opening browser to authenticate…
✔ Logged in as you@example.com — Claude Pro

「会话已过期」到底是什么意思

Claude Code 并不会在每个请求里发送你的密码。当你运行 /login 完成浏览器登录后,它会把一个 OAuth 令牌存到 ~/.claude/.credentials.json(或系统钥匙串)。这个访问令牌有效期很短,靠一个更长效的刷新令牌在后台续期。

「Your session has expired. Please run /login」意味着 Claude Code 持有的令牌已失效,而后台续期被拒绝了。这不是你代码或提示词的 bug,而是需要重新建立的登录状态。

最常见有效的做法:先 /logout 再 /login

在 Claude Code 里运行 /login 并完成浏览器登录。如果单独 /login 不生效,先 /logout 丢弃过期凭证,再从干净状态 /login。一个干净的 logout→login 循环能解决绝大多数情况。

如果浏览器步骤打开却无法完成,把授权链接复制到一个已登录 claude.ai 的浏览器里确认,再把返回的代码粘贴回终端。

如果反复出现或几小时后又掉

当 /login 成功、却很快又被登出时,是续期本身失败了。常见原因:你改了 Anthropic 密码、在别处退出了 claude.ai(或「退出所有会话」)、账号或管理员吊销了会话、机器休眠或离线超过了续期窗口,或者系统时钟不对——时钟漂移会让有效令牌看起来像过期。

先解决根因:把时钟设为自动同步,Claude Code 运行时别在网页端退出全部会话。然后做一次干净的 /logout → /login。

ANTHROPIC_API_KEY 陷阱

登录「留不住」最常见的原因,是 shell 配置里设了 ANTHROPIC_API_KEY 环境变量。Claude Code 会优先用 API Key 而不是你的订阅登录,而这个按量计费的 Key 可能已过期、撞了限额或权限不同——于是表现为鉴权错误,尽管你的订阅其实没问题。

检查一下:`echo $ANTHROPIC_API_KEY`(macOS/Linux)或 `echo %ANTHROPIC_API_KEY%`(Windows)。如果它被设了、而你本想用 Pro/Max 订阅,就从 shell 配置(~/.zshrc、~/.bashrc 或 Windows 环境变量)里删掉它,重启终端后再 /login。

最后手段:删除凭证文件

如果 /logout → /login 仍然反复,说明保存的凭证损坏了——可能是写了一半的 ~/.claude/.credentials.json,或 macOS 钥匙串里被锁定、不可写的条目。关闭 Claude Code,删除 ~/.claude/.credentials.json,重新打开并运行 /login 从头登录。在 macOS 上你可能还需要在「钥匙串访问」里删掉「Claude Code」条目。

这个文件里是实时凭证:像对待密码文件一样对待它,绝不要把它的内容贴进聊天或截图。

先确认你的会话到底还活着没

在花时间修复之前,先弄清底层的 claude.ai 会话是否还有效——也就是 Claude Code 登录的同一个账号。导出你的 claude.ai 会话 Cookie,用下方的检测跑一下:几秒内就能知道会话是否有效、是什么套餐、5 小时和每周限额还剩多少,从而把「会话过期」和「撞了用量限额」区分开。

参考来源

Claude Code 登录 — 常见问题

/login 背后的刷新令牌大约能维持 30 天的活跃期,但它签发的访问令牌很短、在后台续期。正常情况下你每隔几周才需要重新 /login——如果是每隔几小时,说明有东西在阻止续期(见上文 ANTHROPIC_API_KEY 和时钟的原因)。

基本不能——重装不会清掉 ~/.claude/.credentials.json,损坏的凭证依旧在。删除该文件(或钥匙串条目)再 /login 才是对症的做法;只有二进制本身坏了才需要重装。

不会。会话/登录错误不消耗用量也不花钱。但如果设了 ANTHROPIC_API_KEY,Claude Code 可能在按 token 计费那个 API Key,而不是用你的订阅——如果你本想用 Pro 或 Max,这就是删掉它的理由。

在 Pro/Max 上做交互式编码,用订阅登录(/login)并确保 ANTHROPIC_API_KEY 未设置。只有在需要按量计费、无浏览器步骤的自动化或 CI 里,才用 API Key。

机器休眠或离线超过续期窗口会让令牌失效,而 VPN 或代理可能让续期请求失败、或看起来像新的登录地点。重新联网、确认时钟正确,然后在稳定连接下 /login 一次。

你的 Claude 会话还活着吗?

粘贴你的 claude.ai 会话 Cookie,几秒内就能知道它是否有效、什么套餐,以及 5 小时和每周用量还剩多少。

检测 Cookie