OAuth token not persisted/refreshed for --print mode, breaks automation
Resolved 💬 13 comments Opened Mar 22, 2026 by honzastim Closed Apr 21, 2026
Bug Description
When using claude --print in automation (e.g., Paperclip AI agent orchestration), the OAuth token expires after approximately 8 hours. After expiry:
- The
.credentials.jsonfile gets wiped (all fields becomenull/empty strings) claude --printreturns "Not logged in · Please run /login"- There is no
refreshTokenstored, so automatic refresh is impossible - An interactive
claudesession started before expiry continues to work (in-memory token), but any NEW process fails
Expected Behavior
- OAuth refresh token should be stored in
.credentials.json - Token should auto-refresh using the refresh token when it expires
- OR: provide a
claude auth refreshcommand for automation use cases
Environment
- Claude Code v2.1.81
- Windows 11
- Auth type: claudeAiOauth
- Usage: Paperclip AI spawns
claude --print --dangerously-skip-permissionsas agent workers
Impact
This makes 24/7 autonomous operation impossible. Every ~8 hours, all automation stops and requires manual /login intervention.
Reproduction Steps
- Run
claudeand/loginto authenticate - Use
claude --print -p "echo ok"- works - Wait ~8 hours for token to expire
claude --print -p "echo ok"→ "Not logged in"- Check
~/.claude/.credentials.json→ all fields are null/empty
This issue has 13 comments on GitHub. Read the full discussion on GitHub ↗