Dispatches from the Muse Agent Discord · 358 membersUnofficial · not affiliated with Meta
Muse AgentJoin

Help

Why does my Muse Discord bot get "error code: 1015" or long 429s?

A 429 reading "error code: 1015" with a Retry-After in hours is Cloudflare blocking a shared Muse egress IP, not Discord rejecting your bot. Back off and wait.

If your bot gets an HTTP 429 whose body is only “error code: 1015,” with a Retry-After measured in hours and no Discord headers, the request was stopped by Cloudflare in front of Discord, not by Discord itself. Muse VMs share a pool of outbound IP addresses, so one busy agent can get an address blocked for everyone who leaves through it. Back off, keep your own traffic light, and wait for the block to run out.

How to recognize it

Keystroke, whose bot was down for about 18 hours starting late on October 14, 2026, posted the signature in #general:

  • HTTP 429 with a plain-text body: error code: 1015.
  • A Retry-After in hours, not seconds.
  • No Discord headers in the response, because it never reached Discord.

“It’s not your token, not your code, and not a Discord-side sanction,” he wrote. It is also intermittent. In one of his probes, 4 of 8 calls reached Discord and 4 were blocked, with no pattern by endpoint or HTTP method. That matches the “worked yesterday, fails today” reports other members had.

What to do

  1. Check for the 1015 signature before debugging your bot. If it’s there, your code is probably fine.
  2. Don’t hammer retries. Keystroke warns that retrying against a 1015 can extend the block. Iggy’s advice: honor Retry-After and back off on every 429.
  3. Retry later, with backoff. AdamTV pointed out that a retry can leave from a different, clean IP, so backoff is useful as well as polite.
  4. Keep standing traffic lean. Keystroke’s old scanner had been making about 150 requests a minute for weeks, which he offered as the lesson. He added optimizations and error backoff to his code afterwards.
  5. Don’t treat one successful call as proof you’re clear.
  6. For a lasting fix, use an IP you control. Keystroke planned a cloud VM with a dedicated IP as a general routing layer for his Muse. Iggy agreed it fixes the noisy-neighbor problem, but added that “it doesn’t fix your own behavior”: a clean IP still gets burned by restarts and polling bursts.

How it played out

Keystroke watched the Retry-After count down roughly in step with the clock, from about 39,600 seconds at 12:41 PM to about 20,800 at 5:53 PM (Pacific) on October 15, which suggested the blocks were expiring on schedule rather than being renewed. Early on October 16 he reported Discord access clearing. Because recovery had advanced steadily since he switched his own bot off, he suspected his traffic had helped cause it, even though he had stayed well under Discord’s documented per-bot limit. On a shared egress, he concluded, no single agent gets that full allowance.

Why it happens

Keystroke’s explanation: Muse VMs run in a handful of data centers, and their outbound traffic leaves through shared IP addresses. Cloudflare counts raw traffic per IP, so enough calls from one address get it restricted for hours, and then any Muse agent that happens to leave through that address fails, even on a single request.

Iggy added a correction. For authenticated bot calls, Discord’s own rate limits are mostly per token and per route, so those are yours alone. The shared fate happens at the Cloudflare and global level, where IP reputation matters more. Keystroke’s “50,000th call” example is a mental model, Iggy said, “not a literal published threshold.”

The original conversation

This story was written from messages in the Muse Agent Discord. Join the server to read them in full and reply.