claude-connect
Connect your Claude subscription to Clawdbot in one step.
Automatically:
- •✅ Reads Claude OAuth tokens from Keychain
- •✅ Writes them to Clawdbot in proper OAuth format
- •✅ Auto-refreshes every 2 hours (before expiry)
- •✅ Notifies you on success/failure
- •✅ Works with
clawdbot onboard(fixes OAuth auth-profiles bug)
Quick Start
1. Install the skill:
clawdhub install claude-connect cd ~/clawd/skills/claude-connect
2. Ensure Claude CLI is logged in:
claude auth # Follow the browser login flow
3. Run installer:
./install.sh
That's it! Tokens will refresh automatically every 2 hours.
What It Does
Fixes clawdbot onboard OAuth Bug
When you run clawdbot onboard --auth-choice claude-cli, it sometimes doesn't properly write OAuth tokens to auth-profiles.json.
This skill:
- •Reads OAuth tokens from macOS Keychain (where Claude CLI stores them)
- •Writes them to
~/.clawdbot/agents/main/agent/auth-profiles.jsonin proper OAuth format:json{ "profiles": { "anthropic:claude-cli": { "type": "oauth", "provider": "anthropic", "access": "sk-ant-...", "refresh": "sk-ant-ort...", "expires": 1234567890 } } } - •Sets up auto-refresh (runs every 2 hours via launchd)
- •Keeps your connection alive 24/7
Installation
Automatic (Recommended)
cd ~/clawd/skills/claude-connect ./install.sh
The installer will:
- •✅ Verify Claude CLI is set up
- •✅ Create config file
- •✅ Set up auto-refresh job (launchd)
- •✅ Run first refresh to test
Manual
- •
Copy example config:
bashcp claude-oauth-refresh-config.example.json claude-oauth-refresh-config.json
- •
Edit config (optional):
bashnano claude-oauth-refresh-config.json
- •
Test refresh:
bash./refresh-token.sh --force
- •
Install launchd job (optional - for auto-refresh):
bashcp com.clawdbot.claude-oauth-refresher.plist ~/Library/LaunchAgents/ launchctl load ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist
Configuration
Edit claude-oauth-refresh-config.json:
{
"refresh_buffer_minutes": 30,
"log_file": "~/clawd/logs/claude-oauth-refresh.log",
"notifications": {
"on_success": true,
"on_failure": true
},
"notification_target": "YOUR_CHAT_ID"
}
Options:
- •
refresh_buffer_minutes: Refresh when token has this many minutes left (default: 30) - •
log_file: Where to log refresh activity - •
notifications.on_success: Notify on successful refresh (default: true) - •
notifications.on_failure: Notify on failure (default: true) - •
notification_target: Your Telegram chat ID (or leave empty to disable)
Usage
Manual Refresh
# Refresh now (even if not expired) ./refresh-token.sh --force # Refresh only if needed ./refresh-token.sh
Check Status
# View recent logs tail ~/clawd/logs/claude-oauth-refresh.log # Check auth profile cat ~/.clawdbot/agents/main/agent/auth-profiles.json | jq '.profiles."anthropic:claude-cli"' # Check Clawdbot status clawdbot models status
Disable Notifications
Ask Clawdbot:
Disable Claude refresh success notifications
Or edit config:
{
"notifications": {
"on_success": false,
"on_failure": true
}
}
How It Works
Refresh Process
- •Read from Keychain: Gets OAuth tokens from
Claude Code-credentials - •Check Expiry: Only refreshes if < 30 minutes left (or
--force) - •Call OAuth API: Gets new access + refresh tokens
- •Update auth-profiles.json: Writes proper OAuth format
- •Update Keychain: Syncs new tokens back
- •Restart Gateway: Picks up new tokens
- •Notify: Sends success/failure message (optional)
Auto-Refresh (launchd)
Runs every 2 hours via ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist
Controls:
# Stop auto-refresh launchctl unload ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist # Start auto-refresh launchctl load ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist # Check if running launchctl list | grep claude
Troubleshooting
OAuth not working after onboard
Symptom: clawdbot onboard --auth-choice claude-cli completes but Clawdbot can't use tokens
Fix:
cd ~/clawd/skills/claude-connect ./refresh-token.sh --force
This will write tokens in proper OAuth format.
Tokens keep expiring
Symptom: Auth keeps failing after 8 hours
Fix: Ensure launchd job is running:
launchctl load ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist launchctl list | grep claude
No tokens in Keychain
Symptom: No 'Claude Code-credentials' entries found
Fix: Log in with Claude CLI:
claude auth # Follow browser flow
Then run refresh again:
./refresh-token.sh --force
Uninstall
cd ~/clawd/skills/claude-connect ./uninstall.sh
Or manually:
# Stop auto-refresh launchctl unload ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist rm ~/Library/LaunchAgents/com.clawdbot.claude-oauth-refresher.plist # Remove skill rm -rf ~/clawd/skills/claude-connect
Upgrade
If you previously installed an older version:
cd ~/clawd/skills/claude-connect ./validate-update.sh # Check what changed clawdhub update claude-connect # Update to latest ./install.sh # Re-run installer if needed
See Also
- •QUICKSTART.md - 60-second setup guide
- •UPGRADE.md - Upgrading from older versions
- •Clawdbot docs - Model authentication
Version: 1.1.0
Author: TunaIssaCoding
License: MIT
Repo: https://github.com/TunaIssaCoding/claude-connect