Something broke. Find your symptoms below and get back to shipping.
The agent isn't running or keeps crashing on launch. Check tmux, systemd, and port conflicts.
tmux attach -t tinyclaw returns "no session". Agent appears offline in Telegram.
tmux ls
# If no "tinyclaw" session is listed, it's gone# Re-run the restart script
~/tinyclaw-restart.sh
# Verify it's back
tmux attach -t tinyclawsystemctl --user status tinyclaw.service shows failed or inactive (dead).
systemctl --user status tinyclaw.service
journalctl --user -u tinyclaw.service --no-pager -n 30# Reset the failed state and restart
systemctl --user reset-failed tinyclaw.service
systemctl --user restart tinyclaw.servicejournalctl logs after every reboot to catch service failures early. Add a daily cron job that checks service status and alerts you.Service restarts repeatedly. Logs show rapid start/stop cycles with errors like EADDRINUSE or missing config.
journalctl --user -u tinyclaw.service --since "10 min ago"
tinyclaw logs all | tail -50Stop the service, fix the underlying issue (usually a config error or port conflict), then restart.
systemctl --user stop tinyclaw.service
# Fix the issue (check config, kill port conflicts)
tinyclaw config validate
# Restart once fixed
systemctl --user start tinyclaw.serviceError: listen EADDRINUSE: address already in use :::3000sudo lsof -i :3000# Kill the process holding the port
sudo kill -9 <PID>
# Or use a different port in TinyClaw configLocked out of your droplet, Tailscale problems, or SSH key misconfigurations.
ssh youruser@droplet-ip returns Connection refused or Permission denied. You disabled password auth and public SSH.
Use the DigitalOcean web console (Droplets → your droplet → Access → Launch Recovery Console).
# Re-enable SSH temporarily to fix keys
sudo ufw allow OpenSSH
sudo ufw reload
# Fix your authorized_keys file
nano /home/youruser/.ssh/authorized_keys
# Once you can SSH in via Tailscale, re-lock
sudo ufw delete allow OpenSSH
sudo ufw reloadTailscale shows NeedsLogin in status. The machine disappeared from your Tailscale admin panel.
sudo tailscale statusRe-authenticate via the DigitalOcean console (since SSH over Tailscale is down).
sudo tailscale up
# Follow the auth URL in your browser@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/youruser/.ssh/authorized_keys' are too open.chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $(whoami):$(whoami) ~/.sshDroplet rebooted (manually or via unattended-upgrades) and Tailscale SSH isn't accepting connections.
sudo systemctl status tailscaled
sudo tailscale statussudo systemctl enable tailscaled
sudo systemctl start tailscaled
sudo tailscale up
sudo tailscale set --sshtailscaled is enabled on boot with systemctl is-enabled tailscaled. It should show enabled.Authentication failures, context window issues, and API rate limits.
Claude Code returns 401 Unauthorized or "Invalid API key". Agent stops responding to tasks.
# Re-authenticate Claude Code
claude
# Follow the browser auth flow
# Then restart TinyClaw
systemctl --user restart tinyclaw.serviceAgent starts producing incoherent or repetitive output mid-task. Responses lose context of earlier instructions.
Break the task into smaller pieces. Send a new message to reset the conversation context.
@coder /clear
@coder Continue from step 3 of the auth refactor. Here's the current state: [paste relevant context]todo.md to track multi-step work across sessions.Agent accepted a task but hasn't responded in 10+ minutes. Heartbeat still pinging but no work output.
tmux attach -t tinyclaw
# Check if the process is stuck or waiting for input# In the tmux session, send Ctrl+C to interrupt
# Then restart TinyClaw
~/tinyclaw-restart.shError: 429 Too Many Requests - Rate limit exceeded. Please retry after 60 seconds.Wait for the rate limit window to reset (usually 60 seconds). The agent should auto-retry, but if it doesn't:
# Restart after waiting a minute
sleep 60
systemctl --user restart tinyclaw.serviceTelegram bot stopped responding, webhooks went stale, or messages aren't getting through.
Messages to the bot get no response. Bot shows "Bot is not running" in BotFather or the Telegram app.
tinyclaw status
# Check if the Telegram channel shows "disconnected"Regenerate the bot token in BotFather and update TinyClaw config.
# Update the bot token in TinyClaw
tinyclaw config set telegram.token "NEW_BOT_TOKEN_HERE"
systemctl --user restart tinyclaw.serviceBot was working but stopped receiving messages. No error logs, just silence.
# Reset the Telegram webhook
tinyclaw channel reconnect telegram
# Verify it's receiving
tinyclaw logs channelTinyClaw is running and connected, but your messages in Telegram aren't reaching the agent.
tinyclaw logs channel | tail -20
# Look for "message received" or errorsEnsure you're messaging the correct bot and that the chat ID matches the configured channel. Re-run setup if needed:
tinyclaw channel setup telegramtinyclaw status and send a test message.Running out of disk space, memory, or CPU on a small droplet.
Writes fail with No space left on device. Builds fail, logs stop writing, git operations break.
df -h
du -sh ~/* | sort -rh | head -10# Clear old logs
sudo journalctl --vacuum-time=3d
# Remove unused node_modules
find ~ -name node_modules -type d -prune -exec rm -rf {} +
# Clean npm/yarn cache
npm cache clean --force
# Prune Docker if used
docker system prune -afdf -h as part of daily ops.Processes randomly die. dmesg shows Out of memory: Killed process.
dmesg | grep -i "oom\|killed"
free -hAdd swap space to give the system breathing room.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Make it permanent
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabDroplet becomes sluggish. Agent responses take much longer than usual.
top -bn1 | head -15
# Look for processes using >50% CPU# Kill the runaway process
kill -9 <PID>
# If it's a Node process from a hung build
pkill -f "node.*build"Credential errors, push rejections, and build failures on the droplet.
remote: Support for password authentication was removed.
fatal: Authentication failed for 'https://github.com/...'# Authenticate with GitHub CLI
gh auth login
# Or set up the credential helper
gh auth setup-git! [rejected] main -> main (non-fast-forward)
error: failed to push some refs# Pull remote changes first
git pull --rebase origin main
# Resolve any conflicts, then push
git push origin maineas build fails with credential errors, provisioning profile issues, or build server timeouts.
eas build:list --limit 5
# Check the build logs for the failed build# Re-authenticate EAS
eas login
# Clear credentials and rebuild
eas credentials
eas build --platform ios --clear-cacheAgent created commits that conflict with your local work, or pushed to the wrong branch.
# See what the agent changed
git log --oneline -10
# Cherry-pick good commits to a clean branch
git checkout -b clean-branch main
git cherry-pick <good-commit-hash>AGENTS.md.The agent modified its own config or environment and broke itself. Here's how to recover.
Agent behavior changed unexpectedly. It's ignoring rules, using wrong models, or acting outside its defined role.
# Check if config files were modified
ls -la ~/.tinyclaw-workspace/AGENTS.md
git -C ~/.tinyclaw-workspace diff# Restore from git
cd ~/.tinyclaw-workspace
git checkout -- AGENTS.md
systemctl --user restart tinyclaw.serviceAgent installed/removed packages, changed PATH, or modified shell config. Tools no longer work.
# Check recent changes to shell config
git diff ~/.bashrc
which node npm claude tinyclaw# Restore shell config
cp ~/.bashrc.bak ~/.bashrc
source ~/.bashrc
# If no backup exists, rebuild the PATH
echo 'export PATH="$HOME/.local/bin:$HOME/.nvm/versions/node/v24.0.0/bin:/usr/local/bin:/usr/bin:/bin"' >> ~/.bashrc.bashrc with cp ~/.bashrc ~/.bashrc.bak before letting the agent run. Add "never modify shell config" to your AGENTS.md safety rules.Workspace is in an unrecoverable state. Agent has made too many changes to untangle.
# Stop the agent
systemctl --user stop tinyclaw.service
# Find the last known-good commit
cd ~/.tinyclaw-workspace
git log --oneline -20
# Reset to that commit
git reset --hard <good-commit-hash>
# Restart
systemctl --user start tinyclaw.serviceIf you set up the resurrection script from Phase 06, use it to automate recovery.
# The restart script handles tmux + TinyClaw
~/tinyclaw-restart.sh
# Verify the agent is responding
tinyclaw status
# Send a test message via Telegram0 4 * * * cd ~/.tinyclaw-workspace && git push origin mainUFW conflicts with Tailscale, DNS issues, and outbound request failures.
Can't reach the droplet via Tailscale after enabling UFW. Connection times out.
sudo ufw status verbose
# Check for rules allowing tailscale0 interfacesudo ufw allow in on tailscale0
sudo ufw allow 41641/udp
sudo ufw reloadnpm install, git clone, or API calls fail with getaddrinfo ENOTFOUND or Could not resolve host.
nslookup github.com
cat /etc/resolv.conf# Add reliable DNS servers
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.confAgent can't reach external APIs (Anthropic, GitHub, npm registry). Connections time out or get refused.
curl -v https://api.anthropic.com
sudo ufw statusEnsure outbound traffic is allowed. Your UFW config should have default allow outgoing.
sudo ufw default allow outgoing
sudo ufw reloaddefault deny outgoing unless you have a specific allowlist. The agent needs outbound access to APIs, package registries, and GitHub.