OAuth tokens not persisting - requires /login for each web handoff session
Resolved 💬 5 comments Opened Jan 11, 2026 by natierau1 Closed Feb 26, 2026
Environment
- OS: macOS 15.6.1 (Sequoia)
- Claude Code Version: 2.1.4
Problem
OAuth tokens are not being persisted to disk. Each new terminal session requires running /login before the & (web handoff) feature works.
Expected Behavior
After authenticating once, the OAuth tokens should persist across terminal sessions, allowing & web handoff to work without re-authentication.
Actual Behavior
~/.claude.jsoncontainsoauthAccountwith account metadata (email, org UUID, display name)- No
accessToken,refreshToken, orexpiresAtfields are stored - Must run
/loginin each new terminal session to use&web handoff - After
/login, web handoff works correctly for that session
Diagnostic Output
$ cat ~/.claude.json | python3 -c "import sys,json; d=json.load(sys.stdin); print(json.dumps(d.get('oauthAccount', {}), indent=2))"
{
"accountUuid": "...",
"emailAddress": "...",
"organizationUuid": "...",
"hasExtraUsageEnabled": false,
"displayName": "...",
"organizationRole": "admin",
"workspaceRole": null,
"organizationName": "..."
}
Note: No token fields present. Grep for token|accessToken|refreshToken|expires only returns API usage token counts, not OAuth credentials.
Additional Context
~/.config/claude-code/directory does not exist- No keychain entry found for "claude-code"
autoUpdatesis set tofalsein config
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗