Common issues and solutions for TinyClaw.
If you see:
Error: This script requires bash 4.0 or higher (you have 3.2.57)
macOS ships with bash 3.2 by default. Install a newer version:
# Install bash 5.x via Homebrew
brew install bash
# Add to your PATH (add this to ~/.zshrc or ~/.bash_profile)
export PATH="/opt/homebrew/bin:$PATH"
# Or run directly with the new bash
tinyclaw start# Clear npm cache and reinstall
rm -rf node_modules package-lock.json
npm cache clean --force
PUPPETEER_SKIP_DOWNLOAD=true npm install# Check logs
tinyclaw logs whatsapp
# Reset WhatsApp authentication
tinyclaw channels reset whatsapp
tinyclaw restartCommon causes:
- QR code expired (scan within 60 seconds)
- Session files corrupted
- Multiple WhatsApp Web sessions active
Solution:
- Delete session:
rm -rf .tinyclaw/whatsapp-session/ - Restart:
tinyclaw restart - Scan new QR code immediately
# Check logs
tinyclaw logs discord
# Update Discord bot token
tinyclaw setupChecklist:
- ✅ Bot token is correct
- ✅ "Message Content Intent" is enabled in Discord Developer Portal
- ✅ Bot has permissions to read/send messages
- ✅ Bot is added to your server
# Check logs
tinyclaw logs telegram
# Update Telegram bot token
tinyclaw setupCommon issues:
- Bot token is invalid or revoked
- Bot wasn't started (send
/startto your bot first) - Bot removed from group
# Attach to tmux to see the QR code
tmux attach -t tinyclawThe QR code appears in the WhatsApp pane. If it's not visible:
- Check if WhatsApp is enabled:
cat .tinyclaw/settings.json | jq '.channels.enabled' - Check WhatsApp process:
pgrep -f whatsapp-client.ts - View logs:
tail -f .tinyclaw/logs/whatsapp.log
# Check queue processor status
tinyclaw status
# Check incoming queue
ls -la .tinyclaw/queue/incoming/
# View queue logs
tinyclaw logs queueChecklist:
- ✅ Queue processor is running
- ✅ Claude Code CLI is installed:
claude --version - ✅ Messages aren't stuck in processing:
ls .tinyclaw/queue/processing/
This happens when the queue processor crashes mid-message:
# Clear stuck messages
rm -rf .tinyclaw/queue/processing/*
# Restart TinyClaw
tinyclaw restart# Check outgoing queue
ls -la .tinyclaw/queue/outgoing/
# Check channel client logs
tinyclaw logs discord
tinyclaw logs telegram
tinyclaw logs whatsappIf you see "Agent 'xyz' not found":
-
Check agent exists:
tinyclaw agent list
-
Verify agent ID is lowercase and matches exactly:
cat .tinyclaw/settings.json | jq '.agents'
-
Check settings file is valid JSON:
cat .tinyclaw/settings.json | jq
If messages go to the wrong agent:
-
Check routing prefix: Must be
@agent_idwith space after- ✅ Correct:
@coder fix the bug - ❌ Wrong:
@coderfix the bug(no space) - ❌ Wrong:
@ coder fix the bug(space before agent_id)
- ✅ Correct:
-
Verify agent exists:
tinyclaw agent show coder
-
Check logs:
tail -f .tinyclaw/logs/queue.log | grep "Routing"
If @agent /reset doesn't work:
-
Check reset flag exists:
ls ~/tinyclaw-workspace/{agent_id}/reset_flag -
Send a new message to trigger reset (flag is checked before each message)
-
Remember: Reset is one-time only
- First message after reset: Fresh conversation
- Subsequent messages: Continues conversation
If agent can't execute (error: command not found):
For Anthropic agents:
# Check Claude CLI is installed
claude --version
# Install if missing
# Visit: https://claude.com/claude-codeFor OpenAI agents:
# Check Codex CLI is installed
codex --version
# Authenticate if needed
codex loginIf agents aren't being created:
-
Check workspace path:
cat .tinyclaw/settings.json | jq '.workspace.path'
-
Verify workspace exists:
ls ~/tinyclaw-workspace/ -
Check permissions:
ls -la ~/tinyclaw-workspace/ -
Manually create if needed:
mkdir -p ~/tinyclaw-workspace
If new agents don't have .claude/, heartbeat.md, or AGENTS.md:
-
Check templates exist:
ls -la ~/.tinyclaw/{.claude,heartbeat.md,AGENTS.md} -
Run setup to create templates:
tinyclaw setup
-
Manually copy if needed:
cp -r .claude ~/.tinyclaw/ cp heartbeat.md ~/.tinyclaw/ cp AGENTS.md ~/.tinyclaw/
If you see "Could not fetch latest version":
-
Check internet connection:
curl -I https://api.github.com
-
Check GitHub API rate limit:
curl https://api.github.com/rate_limit
-
Disable update checks:
export TINYCLAW_SKIP_UPDATE_CHECK=1 tinyclaw start
If bundle download fails during update:
-
Check release exists:
- Visit: https://github.com/jlia0/tinyclaw/releases
- Verify bundle file is attached
-
Manual update:
# Download bundle manually wget https://github.com/jlia0/tinyclaw/releases/latest/download/tinyclaw-bundle.tar.gz # Extract to temp directory mkdir temp-update tar -xzf tinyclaw-bundle.tar.gz -C temp-update # Backup current installation cp -r ~/tinyclaw ~/.tinyclaw/backups/manual-backup-$(date +%Y%m%d) # Replace files cp -r temp-update/tinyclaw/* ~/tinyclaw/
If update breaks TinyClaw:
# Find your backup
ls ~/.tinyclaw/backups/
# Restore from backup
BACKUP_DIR=$(ls -t ~/.tinyclaw/backups/ | head -1)
cp -r ~/.tinyclaw/backups/$BACKUP_DIR/* $HOME/tinyclaw/
# Restart
tinyclaw restart# Check which process is using CPU
top -o cpu | grep -E 'claude|codex|node'Common causes:
- Long-running AI tasks
- Stuck message processing
- Too many concurrent operations
Solutions:
- Wait for current task to complete
- Restart:
tinyclaw restart - Reduce heartbeat frequency in settings
# Check memory usage
ps aux | grep -E 'claude|codex|node' | awk '{print $4, $11}'Solutions:
- Restart TinyClaw:
tinyclaw restart - Reset conversations:
tinyclaw reset - Clear old sessions:
rm -rf .tinyclaw/whatsapp-session/.wwebjs_*
-
Check queue depth:
ls .tinyclaw/queue/incoming/ | wc -l -
Check processing queue:
ls .tinyclaw/queue/processing/
-
Monitor AI response time:
tail -f .tinyclaw/logs/queue.log | grep "Processing completed"
# Set log level (in queue-processor.ts or channel clients)
export DEBUG=tinyclaw:*
# Restart with debug logs
tinyclaw restartFind errors:
grep -i error .tinyclaw/logs/*.logTrack message routing:
grep "Routing" .tinyclaw/logs/queue.logMonitor agent activity:
tail -f .tinyclaw/logs/queue.log | grep "agent:"Check heartbeat timing:
grep "Heartbeat" .tinyclaw/logs/heartbeat.log-
Check status:
tinyclaw status
-
View all logs:
tinyclaw logs all
-
Restart from scratch:
tinyclaw stop rm -rf .tinyclaw/queue/* tinyclaw start -
Report issue:
- GitHub Issues: https://github.com/jlia0/tinyclaw/issues
- Include logs and error messages
- Describe steps to reproduce
Quick reference for common recovery scenarios:
# Full reset (preserves settings)
tinyclaw stop
rm -rf .tinyclaw/queue/*
rm -rf .tinyclaw/channels/*
rm -rf .tinyclaw/whatsapp-session/*
tinyclaw start
# Complete reinstall
cd ~/tinyclaw
./scripts/uninstall.sh
cd ..
rm -rf tinyclaw
curl -fsSL https://raw.githubusercontent.com/jlia0/tinyclaw/main/scripts/remote-install.sh | bash
# Reset single agent
tinyclaw agent reset coder
tinyclaw restart