Between July 8 and July 10, 2026, Vercel's build pipeline broke twice — in two different ways. First, Pro customers on standard machine types lost access to Build Logs for roughly 18 hours. Two days later, before that incident had fully faded from the status page, a second one started: an elevated build failure rate that required an emergency rollback. Two distinct faults, same shared pipeline, three days apart.
Neither incident was catastrophic on its own — logs came back, failed builds could be retried, nobody's production app went permanently dark. But that's exactly what makes them worth examining. This is what it looks like when the thing that turns your git push into a running deploy is a multi-tenant service you don't operate: failures are usually survivable, recurring, and largely invisible until the build that silently fails — or the one you can no longer see the logs for — is yours.
The three days, in order
Here's what Vercel's own status history shows, in sequence:
- July 8, 19:05 UTC — Some Pro customers on standard machine types start experiencing missing Build Logs. New builds appear to run, but the logs that would tell you why one failed are gone.
- July 9, 13:16 UTC — The Build Logs issue is marked resolved, roughly 18 hours after it started.
- July 10, 21:05 UTC — A second, unrelated fault begins: some customers experience an elevated build failure rate. Vercel identifies the issue and starts a rollback.
- July 10, later — The rollback completes; failed deployments can be retried and succeed. Vercel also resolves a related, same-day incident where a budget-miscalculation bug sent erroneous spend-management notifications, pausing deployments for teams that had budget caps configured to auto-pause projects.
Two builds-related incidents, three days apart, in the same shared system — plus a third same-day fault that could pause your deploys over a phantom budget number. None of this is a story about Vercel being unusually fragile. It's a story about what "build pipeline" means when it's a multi-tenant service: a fault anywhere in that shared system is a fault every tenant riding on it can hit, at a time none of them chose.
Why one pipeline produced two unrelated faults
Vercel has been public about how its build infrastructure works, and the architecture explains why "two incidents in the same pipeline" isn't a coincidence — it's what a shared system does under load.
Every customer build runs inside a cell: a Firecracker microVM, one per build, managed by a box daemon running on physical hosts Vercel calls Boxes. When you push code, a separate build-pipeline layer decides which pool of Boxes (a "Hive") should handle the build, then requests a cell from that Hive's control plane. The system also queues builds — a concurrency queue holds new builds when a team's concurrent build slots are all in use, releasing them as slots free up.
That's a well-designed system for the problem it solves: Vercel says it now runs over 1 million builds a day, each spinning up and tearing down its own microVM. But every layer in that chain — the control plane that hands out cells, the daemon that manages a Box, the queue that sequences builds, the log-shipping path that streams output back to your dashboard — is shared infrastructure. A fault in the log-shipping path doesn't care whose build triggered it; it just stops shipping logs for everyone routed through that path. A fault in the scheduler doesn't fail one customer's build; it raises the failure rate across whatever slice of the fleet it touched. You don't get to opt out of a shared control plane's bad day just because your own code is fine.
This wasn't a one-off — it's the pattern for 2026
Zoom out past this one week and the cadence becomes the more interesting fact than either individual incident:
| Date (2026) | What broke |
|---|---|
| Jan 23 | Domain registration failures, ~55 minutes |
| Jan 26 | Delayed data ingestion across Dashboard, Speed Insights, Web Analytics, ~2h47m |
| Jan 28 | Elevated connection latency, Dublin edge region, ~3 hours |
| Feb 3 | Multi-component outage — Dashboard, API, and Builds — escalating to full disruption for 30 minutes |
| Jul 1 | Workflow runs stuck pending/failed |
| Jul 2 | Degraded CDN/Dashboard/Functions performance, Washington + Cleveland regions |
| Jul 8–9 | Missing Build Logs, ~18 hours |
| Jul 10 | Elevated build failure rate + erroneous budget-pause notifications, same day |
Eight distinct incidents across roughly six months, several of them touching the build path directly. No single one is a scandal — this is a normal incident rate for a service running a million builds a day across a fleet of that size. That's precisely the point: at this scale, "shared infrastructure had a bad day" isn't a rare event, it's a recurring cost line every tenant on the platform pays a small, unpredictable slice of, on a schedule none of them set.
What "invisible until it's yours" costs — including for the agents doing the pushing
The two July incidents illustrate two different flavors of that cost, and neither is catastrophic in isolation — which is exactly what makes them easy to under-rate.
Missing Build Logs doesn't fail your build; it fails your ability to explain a build that already went sideways for some other reason. For 18 hours, a Pro customer with a broken deploy had no way to see why it broke through the normal channel. The failure is invisible right up until the moment your build is the one that needed those logs.
The elevated build-failure-rate incident is more recoverable in the literal sense — Vercel confirmed retried builds succeeded once the rollback landed — but it's still lost time: a build failing for reasons that have nothing to do with your code, discovered only after you've gone looking for what you broke.
There's a sharper version of this cost for one specific slice of Vercel's own customer base. Vercel has said that the share of its deployments triggered by coding agents rather than humans went from under 3% to more than half in about six months. An agent pushing code and watching a build fail doesn't have the human instinct to check a status page, recognize "oh, it's not me," and wait it out — it needs the failure to be legible and attributable, or it burns cycles debugging a problem that isn't in its diff at all. A shared pipeline's invisible failure mode is a minor inconvenience for a human with Twitter open. For an autonomous agent whose job is to interpret build output and act on it, an inexplicable failure or a missing log is a dead end with no signal to recover from.
That gap matters more as the share of agent-triggered deploys grows, not less. An agent that receives a normal, attributable build error can retry, patch, or roll back the specific thing it broke. An agent that receives a silent failure or an empty log has no differentiating signal between "my change is broken" and "the platform had an outage" — the two failure modes look identical from where it sits, and only one of them is actionable by editing code.
What owning the pipeline actually changes
None of this is an argument that Vercel runs bad infrastructure — running a million builds a day with an incident rate like this is a legitimately hard engineering problem, and it's being solved well by most measures. It's an argument about what changes structurally when the build pipeline is a service you rent versus infrastructure you own.
On a self-hosted platform where the build pipeline runs on a tenant's own reconciled fleet — provisioned and managed by something like Cluster API rather than a shared multi-tenant control plane — a build failure is a local, debuggable event. The logs are wherever your own cluster puts them, not gone because a shared log-shipping path had an outage nobody told you about. A scheduler bug affects your fleet's build queue, not an unknown number of other tenants riding the same Hive at the same time. When something breaks, you're debugging your own infrastructure with your own visibility into it — not waiting on someone else's status page to tell you whether it's safe to stop worrying.
The honest trade-off cuts the other way, too: owning that pipeline means you own patching it, scaling its capacity, and being the one who gets paged when it breaks — there's no vendor absorbing that operational load for you. What you're trading isn't "risk of failure" for "no risk of failure"; it's a shared, invisible failure domain you don't control for a local, visible one you do.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, with the build pipeline running on your own fleet instead of a shared multi-tenant one. Star the repo on GitHub or deploy your first app today.



