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:
bash
clawdhub install claude-connect
cd ~/clawd/skills/claude-connect
2. Ensure Claude CLI is logged in: ```bash claude auth
Follow the browser login flow
**3. Run installer:**
```bash
./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:
1. Reads OAuth tokens from macOS Keychain (where Claude CLI stores them)
2. Writes them to ~/.clawdbot/agents/main/agent/auth-profiles.json in proper OAuth format:
json
{
"profiles": {
"anthropic:claude-cli": {
"type": "oauth",
"provider": "anthropic",
"access": "sk-ant-...",
"refresh": "sk-ant-ort...",
"expires": 1234567890
}
}
}
3. Sets up auto-refresh (runs every 2 hours via launchd)
4. 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:
bash cp claude-oauth-refresh-config.example.json claude-oauth-refresh-config.jsonEdit config (optional):
bash nano claude-oauth-refresh-config.jsonTest refresh:
bash ./refresh-token.sh --forceInstall launchd job (optional - for auto-refresh):
bash cp 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:
json
{
"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: ```bash
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:
bash
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:
bash
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: ```bash claude auth
Follow browser flow
Then run refresh again:
```bash
./refresh-token.sh --force
Uninstall
cd ~/clawd/skills/claude-connect
./uninstall.sh
Or manually: ```bash
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