Incident Analysis • Edge & CDN Resilience

Cloudflare Outage — November 18, 2025: What Was Reported and What to Learn

By DevOps City Editorial• • Reviewed against the source on

About this article. This is an analysis based on public information. It is not a post-mortem written by DevOps City and we had no access to Cloudflare's internal systems. The facts and times below come from Cloudflare's own account, “Cloudflare outage on November 18, 2025”. Sections that are our own opinion are labeled as such. If Cloudflare updates its account, the original source takes precedence.

Illustration of a large internet edge network disrupted by a faulty configuration file
Illustration. A permissions change led to an oversized configuration file that stopped traffic processing across the network.

What happened

According to Cloudflare, its network began failing to deliver core traffic at about 11:20 UTC on November 18, 2025. Internet users saw error pages when visiting sites that use Cloudflare. Cloudflare stated that the issue was not caused, directly or indirectly, by a cyber attack or malicious activity.

Cloudflare reported that a change to database permissions caused a query to return duplicate rows. That query builds a “feature file” used by the Bot Management system, and the file roughly doubled in size. The software that reads the file had a limit on the number of features. The doubled file exceeded that limit and the software failed.

Timeline as reported by Cloudflare

Time (UTC)Event (per Cloudflare)
11:05Database access control change deployed.
11:28Impact starts: the change reaches customer environments and the first errors appear on customer HTTP traffic.
11:32–13:05The team investigates elevated errors in Workers KV. Cloudflare describes an early belief that the symptoms might be a large DDoS attack.
13:05Bypasses for Workers KV and Cloudflare Access reduce impact.
14:24Creation and propagation of new Bot Management configuration files stopped.
14:30A known-good configuration file is deployed globally; main impact resolved.
17:06All services resolved.

Source: Cloudflare's published timeline. Some rows are condensed.

The technical anatomy (as Cloudflare described it)

How the faulty file was produced

Why the failures came and went

  1. The permissions change was rolled out gradually across the ClickHouse cluster. The bad file was only generated when the query ran on an updated part of the cluster.
  2. As a result, every five minutes either a good or a bad file could be generated and propagated, and the network alternated between recovering and failing.
  3. Eventually every ClickHouse node produced the bad file and the failure became steady.
  4. The Bot Management module has a limit of 200 features, set well above the roughly 60 in normal use. The doubled file exceeded the limit, the proxy code hit an unhandled error, and requests that depended on the module returned HTTP 5xx errors.
Sequence of events reported by Cloudflare: database permissions change, duplicate query rows, oversized feature file, feature limit exceeded, proxy errors
Sequence as reported by Cloudflare: permissions change → duplicate rows → oversized feature file → feature limit exceeded → proxy errors. Simplified diagram.

The investigation

Cloudflare wrote that it initially suspected a hyper-scale DDoS attack. Two things contributed: the system recovered and failed again as good and bad files alternated, and Cloudflare's status page, which is hosted off Cloudflare's infrastructure, went down at the same time. Cloudflare says that was a coincidence. It later identified the Bot Management configuration file as the trigger.

Our takeaway (opinion): a configuration file that your own systems generate deserves the same validation as input from outside. Cloudflare lists the same idea among its follow-up actions.

Recovery as reported by Cloudflare

Recovery steps reported by Cloudflare: bypass affected services, stop the bad file, deploy a known-good file, restart the core proxy
Recovery steps as reported by Cloudflare. Simplified diagram.

Follow-up actions Cloudflare announced

Takeaways for platform teams (our opinion)

These are DevOps City recommendations drawn from the public account. They are not statements about Cloudflare's internal practices.

  1. Validate generated configuration. Check size, shape, and diff against the last good version before publishing, and keep a fast way to fall back to it.
  2. Review cross-system effects of access and schema changes. A permissions change in one system altered the output of a query in another. Ask which consumers depend on the old behavior.
  3. Plan for bounded failure. Decide in advance whether a component fails open or closed when its input is invalid, and avoid unhandled errors on the request path.
  4. Keep a kill switch for each feature on the critical path.
  5. Keep status and observability off the production path, and rehearse incidents where symptoms look like an attack but are not.

Signals worth watching (our suggestions)

If the table is cut off on your screen, scroll it sideways to see every column.

CategorySignalWhy it matters
Generated configurationFile size and entry-count change versus last goodEarly warning for unexpected growth or duplication
Proxy healthRate of 5xx errors and crash or restart countsDetects a bad configuration load quickly
Change managementPermission or schema changes linked to dependent jobsConnects a change to its downstream effect

Sources


Want a resilience review or a “config-storm” game day designed for your stack?