Trail of Bits' regression-hunt skill only reports a bug a fresh agent can reproduce

3 weeks ago

Trail of Bits added regression-hunt to its skills marketplace: it confirms a regression in a pull request or commit only after the same proof of concept passes on the old code, fails on the new code, and a fresh agent replays it. Its companion plugin, patching-bugs, fixes one known bug and proves the fix on baseline, patched and reverted trees. https://github.com/trailofbits/skills/pull/471 https://github.com/trailofbits/skills/tree/main/plugins/regression-hunt https://github.com/trailofbits/skills/tree/main/plugins/patching-bugs

Ask about this presentation

Chapters

  1. 0:00Trail of Bits' regression-hunt skill only reports a bug a fresh agent can reproduce
  2. 0:24A regression is a new defect that breaks behavior that used to work
  3. 0:39A finding counts only after it runs on both versions
  4. 1:01Only a reproduced regression counts toward the total
  5. 1:15patching-bugs fixes one known bug and proves it on three trees
  6. 1:38A patch that causes a regression is marked Not ready
  7. 1:54regression-hunt 1.2.0 and patching-bugs 0.5.1 run in Claude Code and Codex
Show transcript
  1. Trail of Bits added a plugin called regression-hunt to its skills marketplace on October 20. It confirms a bug in a pull request only when the same proof of concept passes on the old code, fails on the new code, and a fresh agent reruns it. If you merge agent-written changes, the bug report now comes with a failure you can run.

    Slide text
    github.com/trailofbits/skills
    nothing reproduced · clean REPRODUCED_REGRESSION
    trailofbits/skills PR #471 · merged Oct 20, 2026
  2. A regression here is a new defect from the change that breaks supported behavior that used to work, on a path a user or attacker can reach. It hunts security flaws, broken features, slowdowns, and builds or tests that now fail.

    Slide text
    regression-hunt 1.2.0 · regression definition
    Security blocked before, allowed now
    Functional a working feature breaks
    Performance same workload, slower
    Build and test CI or release now fails
    plugins/regression-hunt/docs/regression-definition.md
  3. Separate fresh agents reproduce each candidate, replay it and judge it, on real builds of both versions through a real entry point. The proof has to show correct behavior before the change and the failure after it. Synthetic tests, failures inside one helper, and simulated dependencies can't establish a regression.

    Slide text
    regression-hunt 1.2.0 · seven skills
    prepare › hunt › reproduce › replay › adjudicate › report
    cannot establish a regression
    synthetic tests helper-only failures simulated dependencies invented internal states
    regression-hunt/SKILL.md · docs/regression-definition.md
  4. Only a reproduced regression counts toward the total. A fix that missed a caller, an old bug the change exposed, and a finding still missing proof each get their own label. And a complete run still doesn't mean the code is bug-free.

    Slide text
    regression-hunt 1.2.0 · report labels
    REPRODUCED_REGRESSION proved live, replayed, adjudicated
    INCOMPLETE_FIX the repair missed a caller or input
    LATENT_BUG the change exposed an existing defect
    PREEXISTING_BUG reachable before the change
    UNRESOLVED evidence still missing
    Coverage COMPLETE does not mean bug-free.
    plugins/regression-hunt/docs/report-definitions.md
  5. The second plugin, patching-bugs, takes one bug you name. One agent reproduces it, and a different agent reruns that proof without seeing the first one's transcript. The fix lands as a single local commit, and a fresh agent checks three trees. The original fails. The patched tree passes. Fully reverting the patch makes it fail again.

    Slide text
    patching-bugs 0.5.1 · prove-patch
    baseline
    fails
    the bug reproduces
    patched
    passes
    one local commit
    fully reverted
    fails
    the bug comes back
    plugins/patching-bugs/README.md · skills/prove-patch/SKILL.md
  6. It gets up to three repair attempts. Each proven patch then goes through regression-hunt, and any reproduced regression marks it Not ready. Only a ready patch gets a maintainer report, and the plugin never pushes or opens a pull request.

    Slide text
    patching-bugs 0.5.1 · coordinator
    attempts  up to 3 repairs, each proved by a fresh agent
    check     regression-hunt on baseline..patch_commit
    verdict   reproduced regression Not ready
    handoff   maintainer report only when READY
    never     pushes, opens a PR, or files an issue
    plugins/patching-bugs/skills/patching-bugs/SKILL.md
  7. Both plugins need an agent host that can start fresh agents and run your code. Without that, candidates stay unresolved, and confirmations still need a human review. Both load in Claude Code and Codex. Which agent would you run regression-hunt in?

    Slide text
    github.com/trailofbits/skills

    Without fresh independent agents and tools that run the code, candidates stay unresolved. Confirmations still need human review.

    Which agent would you run regression-hunt in?
    github.com/trailofbits/skills/pull/471
    regression-hunt README · report-definitions.md · PR #471

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York