> Find the commit that broke prod.
bisect is an AI debugging agent that replays your git history against a failing trace, isolates the exact change, and drafts the fix with a regression test — from your terminal, in minutes.
$ curl -fsSL bisect.dev/install | sh
macOS · Linux · CI containers — MIT-licensed core
$ bisect run "checkout returns 500 after deploy"
> attaching trace… 47 candidate commits since last green
> replaying in sandbox: 47 → 12 → 3 → 1
✓ root cause: a1f9c3e — "refactor: inline tax service"
· TaxService.round() drops the half-cent carry
· introduced 2026-07-14 · blast radius: 3 endpoints
$ bisect fix --draft-pr
> opened PR #2381 · patch + failing test ▮
// runs in ci at
stridepayvantleopsgridferroceneplexo.devkorematsu.io+ 2,400 more orgs// 01 — how it works
> Three commands between failure and fix
$ 01 — pipe a failure
Feed it anything that fails
A stack trace, a failing test, a Sentry link, or plain English — "signup emails stopped Tuesday." bisect turns the symptom into a reproducible check.
$ bisect run <trace | test | url>
$ 02 — replay & narrow
Binary-search your history
Every candidate commit is replayed against the check in an ephemeral sandbox — deterministic clocks, pinned deps, recorded network. No flakes, no guessing.
> 47 → 12 → 3 → 1 · 6m 12s
$ 03 — land the fix
A PR, not a paragraph
bisect drafts the minimal patch plus the regression test that would have caught it. You review the diff; it never pushes to a protected branch.
$ bisect fix --draft-pr
// 02 — features
> Built for the way incidents actually go
> all featuresreplay
Deterministic trace replay
Frozen time, pinned dependencies, recorded I/O. If it fails once, it fails every time — which is what makes bisection possible at all.
engine
Log-time bisection
10,000 commits is 14 replays, not 10,000. The agent prunes by ownership graph first, so most hunts finish in single digits.
fix
newDraft PRs with proof
Every patch ships with the regression test that fails before and passes after. Reviewers see evidence, not vibes.
sentinel
CI sentinel
Watches every merge to main. When a check goes red, bisect has usually filed the root cause before the on-call has opened their laptop.
memory
betaCodebase memory
Learns your invariants from past hunts — "rounding bugs live in billing/", "this service is timezone-cursed" — and narrows faster each time.
trust
Your code stays yours
Runs local or self-hosted. Zero training on customer code, ephemeral sandboxes, and a signed audit log of every command the agent ran.
// 03 — a real hunt, uncut
$ bisect run https://sentry.io/stridepay/PAYMENTS-8817
> parsed: DecimalError in InvoiceTotal.compute · first seen 02:47 UTC
> building repro from trace… ✓ fails deterministically (3/3)
> window: last green v418 → failing v465 · 47 commits
> pruning by ownership graph: 47 → 12 (billing/, lib/money)
> replay v441 … pass · replay v453 … fail · replay v447 … fail
✓ isolated: a1f9c3e in 6m 12s · confidence 0.98
# hypothesis: bankers-rounding removed in refactor; carry lost on
# sub-cent line items. 3 endpoints affected, ~0.4% of invoices.
$ bisect fix --draft-pr --assign @on-call
> PR #2381 · +9 −2 · test_half_cent_carry.py added ▮
03:12 — paged. The trace link is all the on-call typed.
No repro steps, no log spelunking. The Sentry URL is enough to build a deterministic failing check.
03:15 — pruned before replaying.
The ownership graph cut 47 candidates to 12 before a single sandbox spun up. Replays are the expensive part; bisect spends them carefully.
03:19 — back to bed.
The PR waited for human review at 09:00. Total human time spent: reading one diff.
8 min
median time-to-root-cause
94.2%
drafted fixes merged as-is
3.1M
commits replayed last quarter
0
pushes to protected branches
// 04 — field reports
/*
We stopped println-debugging regressions entirely. The sentinel files the root cause before the incident channel finishes arguing about who deployed.
— Priya Raman · staff engineer, stridepay
*/
/*
The regression test in every draft PR is the whole product. It converted our most AI-skeptical reviewer in one sprint.
— Tomás Herrera · platform lead, opsgrid
*/
/*
Self-hosted in our VPC in an afternoon. The signed audit log of agent commands is what got it past security review.
— Anneke Visser · SRE manager, ferrocene
*/
// 05 — pricing, briefly
oss
$0
MIT-core CLI, local replays, bring your own model key.
team
popular$30
Per seat / month. CI sentinel, draft PRs, 500 hosted replays.
enterprise
custom
Self-hosted, SSO/SCIM, audit export, private model endpoints.
> Ship the fix, not the guess.
One command to install. Your first hunt is free on any plan.
$ curl -fsSL bisect.dev/install | sh ▮