Skip to content

CI runs only what hasn't passed yet

With hushrun, a check that already passed on this exact code skips in CI. Tests that already passed on the files they read can be left out, and compiled code can be downloaded instead of rebuilt.

Free to start, with GitHub.

Or run this at your repository's root:

npx hushrun init

It finds your checks, signs you in with GitHub so results are shared with CI and your team, and shows every change before making it.

What CI doesn't do again Checks, tests, compiled code.

hushrun's output
hushrun: e2e skipped: this exact code passed 1 min ago (saves 16s)
hushrun: unit passed in 3s; reusing 98 tests saved about 1s; it won't run again on this code
hushrun: build: 226 of 360 crates reused (226 from the shared store), 134 built, saving about 2m 3s

Each line is hushrun's output as its docs print it: an example of what it says, not a measurement.

hushrun's own CI, counted Every run, from public logs.

hushrun/hushrun, every CI run9 to 11 Nov 2026, oldest first

hushrun's own repository, hushrun/hushrun: 290 checks in 26 CI runs, from November 9, 2026 to November 11, 2026. hushrun skipped 171 of them because this exact code had already passed, and ran 119. The skips saved 1 h 55 min.

290checks, in 26 CI runs

171skipped: already passed

1 h 55 minof checks not run again

The figure counts whole checks skipped in hushrun's own repository, not tests left out or compiled code reused, which have no count here yet. One repository is an example, not a promise: to put in your own numbers, use the CI cost calculator.

  • ran: no pass yet for this exact code
  • skipped: this exact code already passed

Counted from the repository's public job logs. A column is one CI run, and a row is one check.

Set it up in CI One command, then a push.

At the repository's root, npx hushrun init wraps your checks where they are, in a script or in CI's files. The commands stay the same.

  1. On GitHub Actions, commit and push

    init gives each job that runs a wrapped check id-token: write. The job's ID token proves which repository it runs for, so there's no secret to store. CI starts recording.

  2. On other CI, store two secrets

    GitLab CI, CircleCI, Buildkite, Jenkins and the rest use an agent token and a machine key, stored as masked secrets.

  3. Turn on test reuse where it pays

    It's off until you turn it on, check by check. Start by watching: every test runs, and the run says what reuse would have left out.

  4. Ask an admin for the shared store

    Reusing compiled code across machines is off for every organization until an admin turns it on, and then it starts by watching. In CI it works on GitHub Actions today.

Matrices, reusable workflows, merge queues and reports a later step reads: Set up CI.

What a skip doesn't save Know these before you count.

It saves repeats, not first runs: code nobody checked yet runs every check that covers it. What a skip saves.

Questions about CI

Does it work with GitHub Actions?
Yes, with no secret to store: each job that runs a wrapped check gets an ID token from GitHub. Reusing compiled code from the shared store works in CI on GitHub Actions only, for now.
Does it work with GitLab CI or other CI?
Checks skip on any CI. GitLab CI, CircleCI, Buildkite, Jenkins and the rest use an agent token and a machine key, stored as secrets. GitLab CI doesn't use the shared store of compiled code yet. Other CI
How much CI time will it save?
As much as the checks that come back to the same files take. A skip saves as long as that check's pass took, and the job still starts. Estimate savings, or put your numbers in the calculator.
Is it safe to skip a check in CI?
A check skips only for the exact files, command and check name that passed, signed by a member's machine, one of your agent tokens or your repository's CI. An admin can make a repository's CI skip only on CI's own passes. Why a skip is safe
What does it cost?
Skips are free. CI needs hushrun's hosted service, free up to 2,000 recorded checks a month: results kept on one machine are off in CI.

Try it on one workflow

Sign up with GitHub, then run one command at your repository's root.

Start free
npx hushrun init

Want help setting it up?

Leave your work email, and we'll write back.

We'll use your email only to write to you about hushrun.