Claude OAuth Auto-Renewal
VerifiedAutomatically detect and renew expired Claude Code OAuth tokens via heartbeat. 3-tier renewal: refresh token → Chrome browser automation → user alert.
$ Add to .claude/skills/ About This Skill
# Claude Code OAuth Auto-Renewal
Automatically detect and renew expired Claude Code OAuth tokens during OpenClaw heartbeat cycles. Prevents agent downtime caused by token expiration.
When to Use
✅ USE this skill when:
- Your OpenClaw agent uses Claude Code as the AI provider
- You want uninterrupted agent operation without manual token renewal
- You're running OpenClaw on macOS with Chrome browser
How It Works
3-Tier Renewal Strategy
``` Heartbeat triggers check-claude-oauth.sh │ ├─ Token healthy (>6h remaining) → silent exit ✓ │ ├─ Tier 1: claude auth status (refresh token) │ ├─ Success → silent exit ✓ │ └─ Fail ↓ │ ├─ Tier 2: Browser automation (osascript + Chrome JXA) │ ├─ Start claude auth login │ ├─ Auto-click "Authorize" on claude.ai │ ├─ Extract auth code from callback page │ ├─ Feed code back to CLI via expect │ ├─ Success → silent exit ✓ │ └─ Fail ↓ │ └─ Tier 3: Alert user → agent notifies via configured channel ```
Token Storage
Claude Code stores OAuth tokens in macOS Keychain under the service name `Claude Code-credentials`. The token JSON includes:
- `accessToken` — API access token (prefix `sk-ant-oat01-`)
- `refreshToken` — Used for automatic renewal (prefix `sk-ant-ort01-`)
- `expiresAt` — Unix timestamp in milliseconds
Prerequisites
- macOS with `security` CLI (Keychain access)
- Claude Code installed and previously authenticated
- Google Chrome with `View → Developer → Allow JavaScript from Apple Events` enabled (for Tier 2)
- python3 available in PATH
- expect available (ships with macOS)
Setup
1. Copy the script
```bash cp skills/claude-oauth-renewal/scripts/check-claude-oauth.sh scripts/check-claude-oauth.sh chmod +x scripts/check-claude-oauth.sh ```
2. Add to HEARTBEAT.md
Add as the first step in your heartbeat execution:
```markdown ## Execution Order
- Run `bash scripts/check-claude-oauth.sh` — if output exists, relay as highest priority alert
- (your other heartbeat checks...)
- ```
3. Test
```bash # Normal check (silent if token healthy) bash scripts/check-claude-oauth.sh
# Force trigger by setting high threshold WARN_HOURS=24 bash scripts/check-claude-oauth.sh ```
Configuration
| Environment Variable | Default | Description | |---------------------|---------|-------------| | `WARN_HOURS` | `6` | Hours before expiry to start renewal attempts |
Troubleshooting
"无法读取 Claude Code token" - Run `claude auth login` manually to establish initial credentials - Verify keychain access: `security find-generic-password -s "Claude Code-credentials" -a "$(whoami)" -g`
Tier 2 (browser automation) not working - Enable Chrome JXA: `View → Developer → Allow JavaScript from Apple Events` - Or via CLI: `defaults write com.google.Chrome AppleScriptEnabled -bool true` (restart Chrome) - Ensure you're logged into claude.ai in Chrome
JSON parsing errors - The script uses regex extraction (not `json.loads`) to handle truncated keychain output - If `security -w` truncates long values, the `-g` flag is used as fallback
Notes
- Tier 1 (refresh token) handles most cases silently
- Tier 2 (browser) is only needed when refresh token itself expires (typically weeks)
- Tier 3 (alert) is the last resort when no automated renewal is possible
- The script never stores or logs actual token values
Use Cases
- Prevent OpenClaw agent downtime by auto-renewing expired Claude Code OAuth tokens
- Integrate token health checks into heartbeat cycles for unattended agent operation
- Fall back to Chrome browser automation when refresh tokens themselves expire
- Alert operators through configured channels when all automated renewal tiers fail
- Monitor token expiry timestamps stored in macOS Keychain without manual inspection
Pros & Cons
Pros
- +Three-tier renewal strategy covers most failure scenarios automatically
- +Silent operation when tokens are healthy — zero noise in normal conditions
- +Integrates directly into OpenClaw heartbeat without additional scheduling
Cons
- -macOS-only — relies on Keychain and Chrome JXA for browser automation
- -Tier 2 browser automation requires enabling JavaScript from Apple Events in Chrome
- -Documentation primarily in Chinese
FAQ
What does Claude OAuth Auto-Renewal do?
What platforms support Claude OAuth Auto-Renewal?
What are the use cases for Claude OAuth Auto-Renewal?
100+ free AI tools
Writing, PDF, image, and developer tools — all in your browser.
Next Step
Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.