Headroom says 'Sign-in lapsed': how to fix it
A Sign-in lapsed row means that account's Claude Code login can no longer be used. Click Sign In Again… in Headroom, or run /login in that account's folder.
"Sign-in lapsed." on a Headroom row means the Claude Code login saved for that account can no longer be used, so Headroom cannot read its usage. Click "Sign In Again…" on the row and finish signing in in your browser. If you prefer Terminal, start Claude Code in that account's folder and run /login.
Headroom is a free Mac menu bar app, independent of Anthropic and not made, endorsed or supported by it. It reads the sign-in Claude Code saved on your Mac. When that sign-in expires, the fix is a normal Claude Code sign-in.
Fix it from Headroom
- Open the panel and find the row that says "Sign-in lapsed."
- Click "Sign In Again…". It runs the same sign-in Headroom uses when you add an account, for that account's folder.
- Finish signing in in the browser. Sign in as the account on that row. If your browser is signed in to a different Claude account, switch accounts on that page first, or you will sign in as the wrong one.
- The row goes back to showing usage.
If the browser shows a code instead of finishing, click "The page shows a code?" in the sign-in window and paste the code into the field it opens. If you closed the browser tab, use "Open the Sign-In Page Again". The window is described step by step in Add a second Claude Code account to Headroom.
Fix it from Terminal
Start Claude Code in the folder named on the row, for example:
CLAUDE_CONFIG_DIR=~/.claude-work claude
If the row is your main account, a plain claude uses the default folder. Then run:
/login
and finish in the browser. This is what Anthropic's errors page recommends for expired logins (errors). Headroom picks up the new sign-in at its next check, which runs every five minutes and whenever you open the panel; the refresh button checks now.
Use the right folder. If you run /login in the wrong folder you replace that folder's account with another one. See CLAUDE_CONFIG_DIR explained.
Why a login lapses
Anthropic documents how expiry looks in Claude Code. At startup you may see "Your login expires in 3 days · run /login to renew". Once a login has expired and cannot be refreshed, requests fail with "Login expired · Please run /login", and /status shows a Login row marking the login as expired (Claude Code v2.1.210 or later) (authentication).
A lapsed row and those messages describe the same situation from two sides: the saved login can no longer be used, and only a new sign-in fixes it. The three-day warning appears in Claude Code only when you start a session. If you were not in a session, Headroom's row may be the first time you learn about it. Related messages:
| Message | Meaning, per Anthropic |
|---|---|
| "Login expired · Please run /login" | Expired and not refreshable |
| "Not logged in · Please run /login" | No valid credential |
| "OAuth token revoked · Please run /login" | Signed out everywhere or access removed |
For all three, the fix Anthropic's errors page gives is /login (errors). For the Claude Code side, see Claude Code login expired.
Things that can cause it
Anthropic's page tells you what the messages mean, not always why each happened. These are the situations it points to:
- Time passing. The login simply expired, as the three-day warning describes.
- Signing out elsewhere. Anthropic says "A revoked token means you signed out everywhere or an admin removed access" (errors). If you think access was removed, ask your admin.
- Running
/logoutin a session on that folder. Logging out removes all stored credentials, including saved MCP server logins (troubleshooting). - A Keychain that cannot be written. Anthropic's troubleshooting steps for macOS start with
claude doctor, which warns "macOS Keychain is not writable", then unlocking the login keychain. If a row keeps lapsing after you sign in again, that page is the place to look, and it also suggests checking the system clock if you are asked to log in often.
Users have also reported repeated login prompts on macOS, including one where Claude Desktop's embedded Claude Code rotated the CLI's refresh token (GitHub issue 94464, open), and a login expiring during overnight work (issue 104806), with a request for an earlier warning (issue 108372). Those are user reports, not documented behaviour.
What Headroom does before showing this
Headroom does handle one case itself: when an access token is stale, it asks Claude Code to renew it, and Headroom never handles refresh tokens. "Sign-in lapsed." is shown when that is not enough and a person has to sign in again. Headroom never sends a prompt, so checking usage does not use any of your limits.
If the row keeps coming back
- Run
/statusin Claude Code, started in that account's folder. It shows the account, and a Login row if the login is expired. - Check that no other tool is signing in or out of the same folder.
- If you no longer use the account, choose "Stop Tracking" in the opened row. That hides the account: it stays in the panel as a short "Not tracked" row with a "Track Again" link (also in the "…" menu), and its Claude Code sign-in is left as it is.
If you have several accounts and want to know which ones are working at a glance, Headroom's statuses explained covers the other row states. Get Headroom from the Headroom home page.