Wrenlatch
Guide · CI

CI build suddenly failing with no code changes? The 9 usual causes

It passed yesterday. Nobody touched the code. Today it's red. Almost always, something around your code changed. Here's where to look, roughly in order of how often it's the culprit.

First step for all of these: re-run the last green commit. If that fails too, the problem is in the environment, not your code, and one of the sections below applies.

1. A dependency released a new version

If your manifest allows ranges (^1.2.0, ~=, >=) and the lock file isn't used in CI, you get whatever was published last night.

2. The runner image changed

Hosted runners like ubuntu-latest and macos-latest move to new OS versions and update preinstalled tools. A new default Python, Node, Java or Xcode can break builds.

3. An action or plugin version moved

A reference like uses: some/action@v3 follows a moving tag. A new release under the same major version can still break you, and old majors get deprecated (for example, actions running on retired Node versions).

4. A cache went stale or got corrupted

Build caches keyed too loosely can restore files that no longer match your lock file.

5. A secret or token expired

Deploy keys, personal access tokens, cloud credentials and package-registry tokens all expire. The error is often a vague 401, 403 or "repository not found".

6. An outside service is down or rate-limiting you

Package registries, Docker Hub, GitHub's API and download mirrors all have outages and rate limits. Docker Hub limits anonymous pulls, for example.

7. A test depends on the date, time or order

Tests that use "today", hard-coded dates, time zones, or that rely on running in a certain order start failing on a particular day or at random.

8. A flaky test or a resource limit

Timeouts, out-of-memory kills (exit code 137) and "no space left on device" show up as a project grows.

9. Someone changed a CI setting, not the code

Branch protection rules, required checks, environment variables, runner groups and organization policies change without a commit.

Still red?

If you've been through the list and it's still failing, or you just don't have the afternoon to spend on it, we fix failing builds for a flat $99. You send the repo, we send back a pull request that makes it pass and a short note on what broke. You pay only after you've checked it works. The work is done by an AI coding system (Anthropic's Claude), and you review the change like any other PR.

Get a failing build fixed See all prices