Skip to main content

bugbout

PyPI version Supported Python versions CI status License Development status Linted and formatted with Ruff Type checked with mypy in strict mode

Which coding agent actually fixes bugs in your codebase?

Public benchmarks tell you how coding agents do on someone else's code. bugbout tells you how they do on yours. It replays real bugs from your project's own history, lets agents race to fix them, and scores every patch with the tests your maintainers wrote alongside the real fix - tests no agent ever gets to see.

Why

  • Your code, not a leaderboard's. An agent that tops a benchmark can still stumble on your conventions, your framework and your test suite. Measure it where you will use it.
  • Scored by your own tests. Every task is a fix your team already shipped with a new test, and that test decides whether an agent's patch really fixes the bug.
  • Bring any agent. Codex, Claude Code, Gemini CLI and mini-swe-agent work out of the box, and any other agent with a command line takes a few lines of config - so you can also compare models, including local ones.
  • Cross-examination. Agents' tests are run against each other's patches, so you also learn whether an "agent jury" could pick, or gate, a patch on its own before you trust one in your workflow.
  • Safe to run. Agents work in history-free checkouts, inside an OS sandbox, with web access switched off.

Quickstart

You need macOS or Linux (on Windows, use WSL2), Python 3.12+, git, uv, and at least one coding agent CLI installed and logged in.

pip install bugbout   # or: uv tool install bugbout

cd your-project
bugbout init      # writes bugbout.toml from your layout and the agents you have
bugbout doctor    # checks everything before any agent spends quota
bugbout run       # mines tasks, races the agents, judges and scores
bugbout report --format markdown

A bout is resumable: stop it at any point and run it again to carry on. Add an agent later and only that agent runs.

How it works

  1. Mine. Fixes in your git history that name an issue and add a test become tasks.
  2. Ground truth. The maintainers' tests run before and after their fix; the tests that flip from failing to passing define what "fixed" means.
  3. Race. Each agent gets the issue and a checkout of the code before the fix - no git history, none of the fix's tests - and works inside a sandbox.
  4. Cross-examine. Every test the agents wrote runs against every patch.
  5. Judge and score. A policy picks one patch per bug from the executed evidence, then the hidden tests score every patch and every pick.

More in How it works.

Configuration

bugbout init writes a commented bugbout.toml. A minimal one looks like this:

[project]
source = "src/mypkg"
tests = "tests"

[[contestants]]
agent = "codex"

[[contestants]]
agent = "claude-code"
model = "sonnet"

Every setting is described in Configuration; the built-in agents, sandboxing and adding your own agent are covered in Agents.

From Python

from bugbout import Bout, render_markdown

report = Bout.load(".").run()
print(render_markdown(report))

From your coding agent

bugbout ships an Agent Skill that teaches coding agents to set up a bout, run it and explain the report. Install it in Claude Code (2.1.275 or later):

/plugin install bugbout --marketplace Keerthirajan58/bugbout

On older versions, run /plugin marketplace add Keerthirajan58/bugbout and then /plugin install bugbout@bugbout. For Codex, Cursor, Copilot, Gemini CLI and other agents:

npx skills add Keerthirajan58/bugbout

Or copy the skills/bugbout folder into your agent's skills folder, such as ~/.claude/skills/ or ~/.agents/skills/.

License

MIT

Metadata

Release files for bugbout 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bugbout 0.1.1
File Size Uploaded Provenance Actions
bugbout-0.1.1.tar.gz 98.0 kB Without provenance Details for bugbout-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for bugbout 0.1.1
File Interpreter ABI Platform Actions
bugbout-0.1.1-py3-none-any.whl Python 3 none any Details for bugbout-0.1.1-py3-none-any.whl

Total release size: 186.5 kB

Release files / bugbout-0.1.1.tar.gz

Download URL bugbout-0.1.1.tar.gz
Size 98.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f8eca3e0f663d5d454f0b1bfddea28fec55d667c3f7fa806523465f440d97b89
BLAKE2b-256 checksum
How to use checksums
64d6b4461ce7144888ab9e5164928152fb91fda4e8fa15faa147e8ef4c2b7320
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / bugbout-0.1.1-py3-none-any.whl

Download URL bugbout-0.1.1-py3-none-any.whl
Size 88.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec594eccae99d4cdf17528969d2731f80dc9c6c4121d8dd16cab646922bda9f1
BLAKE2b-256 checksum
How to use checksums
28d040561707cf6eabb105b965146f15c595285f5fb8b502a848e3bf54561eed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for bugbout 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page