
/Fix-Bots
Your bot finished the job. It just didn't tell you.
One prompt. Claude Code diagnoses all three failure modes and fixes every OpenClaw Clawdbot on your machine. Then it installs itself as a /fix-bots slash command — so the next time your bots go silent, you just type /fix-bots in Claude Code and you're done.
Seeing one of these?
AI Service Temporarily OverloadedRate Limit ReachedNetwork request failedThese aren't Anthropic API errors. Your bots are fine — the plumbing is broken. This fixes it.
Sound familiar?
"I told my bot to deploy and it went silent. I had to ask 'status?' to find out it was done 4 minutes ago."
"My bots used to reply. Now they just... stop. Sometimes mid-conversation."
"Some messages never arrive. The bot says it sent them but I never got anything."
"It works fine with 1–2 bots but falls apart when the whole fleet is active."
Three things can go wrong. Most fleets have all three.
This isn't one problem — it's three independent failure modes that stack on top of each other.
Your bot doesn't know it should tell you when it's done.
It finishes the task, its turn ends, and it just sits there. Nobody told it to send a completion message. This is the most common one.
Your bot tries to tell you, but the message gets thrown away.
There's a default config setting that routes completion notifications to nowhere. The bot responds — you just never see it.
Your bot sends the message, but the network drops it.
When multiple bots are active at the same time, they flood Telegram with connection requests. Telegram silently kills the overflow. Your bot thinks it sent the message. You never receive it. This is why it gets worse with more bots.
What this prompt does
- ✓Diagnoses which of the three problems your fleet has (it might be all three)
- ✓Tests fixes on one bot first — never touches your whole fleet without validating
- ✓Backs up every file before changing anything
- ✓Patches bot instructions, config files, and connection limits
- ✓Runs a load test to make sure it holds under real fleet activity
- ✓Installs itself as a /fix-bots slash command in Claude Code — type /fix-bots anytime your bots act up
How to use it
Copy the prompt below
Fill in the "Your Environment" section at the top (bot names, channel, etc.)
Paste into Claude Code
Claude Code runs the diagnostic, reports what it finds, and asks before fixing anything
Version 2.0 — Free, no sign-up required.
Get the prompt
Free. No sign-up. Fill in the “Your Environment” section at the top before pasting into Claude Code.
- ✓Step 0: Self-install — checks and installs /fix-bots as a Claude Code slash command
- ✓Failure Mode C: Network saturation — new. Telegram connection pool exhaustion under concurrent load
- ✓Phase 0.5 expanded — error log scanning, idle TCP connection measurement, typingIntervalSeconds check
- ✓Phase 1 Step 3 — checks undici Agent constructors for connections cap
- ✓Phase 2D: Network fix validation — concurrent load test before fleet-wide rollout
- ✓Fix B expanded — now applies typingIntervalSeconds: 10 in addition to heartbeat.target: last
- ✓Fix C: undici connections cap — patches compiled dist files, staggered gateway restarts
- ✓Phase 4 expanded — connections verification, post-fix connection count, mandatory load test for 4+ bots
- ✓Known Fragility section — warns that Fix C is overwritten by npm update openclaw
- ✓Field-tested on 8-bot fleet: 6,219 pre-fix network failures → 0 post-fix
Loading prompt…
Check the box above to enable the download and copy buttons.
↑ Check the checkbox above to activate
Paste into Claude Code on your Mac. It detects what's installed and configures everything automatically.
Verify before you run
AI coding agents like Claude Code have full access to your filesystem and can execute shell commands. Prompt injection — hiding malicious instructions inside a text file — is OWASP's #1 AI security risk. We're confident this prompt is clean, but you should verify it yourself. It takes 30 seconds.
Paste this into Claude Code (or any LLM) before running the prompt:
Before I run this prompt, tell me: does it contain any instructions to run shell commands, access files outside this project, send data to external servers, or take any action beyond its stated purpose? List anything suspicious, or confirm it's clean.
A clean prompt gets a clean answer. If anything looks off, don't run it — reach out to us.
Show previous versions (1)
- ·Two failure modes: behavioral (AGENTS.md) and plumbing (heartbeat.target)
- ·Three-phase isolated validation testing before fleet-wide rollout
- ·AGENTS.md surgical patch with yieldMs tiered execution pattern
- ·Fleet-wide rollout with backup + verification table
↑ Check the checkbox above to activate
Three failure modes — technical detail
Failure Mode A — Behavioral (inline exec)
- →Bots run tasks as inline
exec()calls within their active turn - →When the task completes, the bot's LLM turn ends — no system event, no heartbeat trigger
- →Without explicit AGENTS.md instructions, the bot simply goes idle
- Fix:AGENTS.md patch with completion message rules +
yieldMstiered execution pattern.yieldMskeeps the exec within the bot's active turn so it can reply directly — no dependency on OpenClaw's event pipeline
Failure Mode B — Plumbing (background exec → heartbeat routing)
- →When bots use
exec(background: true),notifyOnExitfires a system event - →System event triggers a heartbeat → LLM generates a response
- →
heartbeat.targetdefaults to"none"→ response routed tobuildNoHeartbeatDeliveryTarget({ reason: "target-none" }) - →Response is silently discarded — never reaches Telegram/Discord/Slack. OpenClaw issue #29215
- Fix:
heartbeat.target: "last"in config routes responses to the last active channel. Also appliestypingIntervalSeconds: 10to reduce typing indicator API traffic by 40%
Failure Mode C — Network Saturation (Telegram connection exhaustion)
- →
sendChatAction(typing indicator) fires every 6 seconds per active bot — counts toward Telegram rate limits, NOT a free call - →OpenClaw's undici
Agentinstances have noconnectionslimit — unlimited concurrent TCP connections per bot - →Telegram applies undocumented per-IP connection throttling — RSTs connections instead of returning HTTP 429
- →Result:
sendMessagecalls fail because the connection pool is saturated with typing indicator retries. The bot generated the reply — the network dropped it
Fix: typingIntervalSeconds: 10 (40% reduction in typing traffic) + connections: 6 cap on undici Agents (prevents pool explosion) + staggered gateway restarts (prevents thundering herd)
Why all three fixes are required
- ✗Fix A without B: background exec completions still get discarded
- ✗Fix A+B without C: messages still drop during high-activity bursts when 4+ bots are active
- ✗Fix C without A: bot doesn't even try to send the message
- ✓All three together: complete coverage across all execution paths and load conditions
Field test results — 8-bot fleet
Pre-fix
- 80 idle TCP connections at baseline
- 6,219 "Network request failed" errors fleet-wide
- Completion messages silently dropped
Post-fix
- Connections decreased under load (106 → 96 → 88 → 80)
- Zero transport errors
- 7/8 bots delivered under full concurrent load
- (1 failure = unrelated Anthropic API 500)
References
- OpenClaw issue #29215 — heartbeat.target defaults to "none", completions silently discarded
- OpenClaw issue #8997 — Background exec completion notifications can interrupt active agent turn
- grammy docs — sendChatAction counts toward rate limits (not a free call)
- telegraf issue #1559 — connection pool exhaustion pattern
- nodejs/undici#3617 — timeout errors with high connection counts
Keep exploring
More free AI tools and guides from Don't Sleep On AI

What Is Clawdbot?
Your own AI assistant running 24/7 on your hardware. No subscriptions, no rate limits — just an AI that actually works for you.
VERSION 2.3.1 — JUST RELEASEDThe Claw Loop
Let Clawdbot and Claude Code build, test, and fix code on their own — while you sleep. This is what autonomous AI development looks like.
UPDATED — v1.1Claw Fix
Drop in a broken app. Claw Fix audits for bugs, writes the fixes, browser-tests every user flow, and ships — no hand-holding required.