Skip to main content
Glama

GitHub Marketplace

Would your tests catch it if the bug came back?

Bite checks whether an AI coding agent's "fixed" is actually true.

Try it now

Free, no key, and it never changes your files. If you have Python, paste these two lines into any terminal (PowerShell, cmd, Terminal):

python -m pip install bite-check
python -m bite_check --free

Outside a project, Bite first shows a demo on a tiny made-up one. To check your own project, type the second line and a space, drag your project's folder into the window (that types its path), and press Enter.

Other ways: pipx run bite-check --free or uvx bite-check --free (one line, no install; on Linux or a Mac, use one of these if pip says "externally managed"). Commits never say "fix"? Add --any. To keep a bite command installed: install guide.

Related MCP server: platao

Why you need this

When an AI fixes a bug for you, it often says "Fixed, and I added a test." If you don't read code, you can't tell if that's true.

A test is a tiny robot that checks one thing and shouts when it's wrong. Bite puts the old bug back on purpose and watches whether any test shouts. It's like testing a smoke alarm with real smoke instead of trusting the little green light.

If a test shouts, that fix is guarded. If they all stay quiet, the bug could come back and nobody would notice. Bite names that fix, so you can tell your AI: "add a test that fails without this fix."

bite --demo shows both cases on a tiny made-up shop:

  9661edcf ✅ noticed by test_discount_never_below_zero Fix discounts over 100% making the price negative
  e5c329ec ⚠️ NO TEST NOTICED           Fix totals showing long decimals like 0.30000000000000004

Bite does this: takes each recent fix back out of a copy of your project, runs your tests, and tells you whether any test noticed. It never changes your files or pushes anything.

You decide that: whether to add the missing test, or leave it because the change didn't need one (a rename, a tidy-up). A ✅ means a test would catch that fix breaking. It doesn't prove the code has no other bugs.

Works with pytest, npm test, cargo test, go test, dotnet test, Maven and Gradle (Java and Kotlin). Full list: SUPPORTS.md.

Everything else Bite can do

What

How

More

Check every pull request

Add the GitHub Action (below) or the bite-check app

Pull requests

Check Claude's "fixed" the moment it says it

/plugin marketplace add connabyss/bite, then /plugin install bite@bite

Live checks

Same, in Cursor, Copilot, Codex, Windsurf, Gemini CLI

bite mcp

Live checks

Ask in plain words

bite ask "is last week's login fix guarded?"

Ask

Catch a fix a later commit quietly undid

Built into every free check

Comeback alarm

Write the missing test (your own key)

bite --write-tests

Write tests

Score, badge, JSON for scripts

bite --json

Score and results

Speed up a slow check

bite --free --jobs 4

When a check is slow

The pull request check. Add this as .github/workflows/bite.yml. It runs the free check on each pull request's commits and fails when a change can be taken back out and your tests still pass. No key, no cost.

name: bite
on: pull_request
permissions:
  contents: read
  pull-requests: write
jobs:
  bite:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      # install what your tests need here, e.g. for Python:
      - uses: actions/setup-python@v7
      - run: python -m pip install pytest -r requirements.txt
      - uses: connabyss/bite@v1.0.5

The paid step (optional). With your own Anthropic API key, Bite writes one small test of a commit's exact claim and runs it; --budget caps what a run spends ($1 by default). It runs on Anthropic's Agent SDK, so it needs an API key and never uses a Claude login or plan (Anthropic's Agent SDK rule: https://code.claude.com/docs/en/agent-sdk/overview). Setup: install guide.

Updating Bite

bite --version says when a newer one is out. This line always gets the newest version:

pipx install --force bite-check --pip-args="--no-cache-dir"

Installed with pip? python -m pip install --upgrade --no-cache-dir bite-check. Why not pipx upgrade: install guide. What changed: CHANGELOG.md.

Does it work?

In prosemirror-py, a Claude commit said it fixed a memory leak. Bite wrote a test of that claim: it fails on that commit and on today's code. After 20,000 documents the cache still held all 20,000, using 35 MB. The tested fix was merged upstream. (The full story.)

"Reverting the claimed fix and making the change prove itself under a real test is exactly the kind of check that should exist for every "fixed" commit."

— Ivan Zdravkov, on DEV

Famous repos Bite has checked with bite --free (Oct 30-31, 2026):

Project

Language

Changes checked

Noticed by a test

Real gaps

Rich

Python

37

15

1 small: <kbd> keys in Markdown

Click

Python

37

30

1 small: help on custom setting types

qs

JavaScript

40

40

none ✅

chi

Go

27

21

2 small: a test that only works in a terminal, XML compression

serde_json

Rust

16

12

none ✅

FluentValidation

C#

9

5

none ✅

More: the full scoreboard (20 projects, 5 languages), and bugs fixed or merged upstream in pyclibrary, django-tailwind-cli, west, mizani, pamqp and more.

Limits, plainly

  • Most claims hold. Across all rounds so far, Bite tested 137 "fixed" claims that it could run tests for (all from commits made with Claude Code, the AI those rounds looked at). 8 were false (about 1 in 17), and 4 of those were still broken on today's code. On well-reviewed projects it usually finds nothing, and that's the right answer.

  • Quiet is not a pass. Bite only shows a failing test that the second check calls fair and real. That second check has thrown out more than 10 failing tests that weren't. A claim that holds proves that one claim, not that the commit has no other bugs.

  • It needs the project's tests to run. If they don't run on a clean copy, Bite can't check that commit.

  • Bug hunting is weaker than claim checking. In a 10-project overnight hunt, two blind AI judges rated 21 of 22 proven fixes as real bugs and none as wrong, but Bite found only 1 of the 10 bugs the maintainers fixed soon after.

  • Small samples, AI judges. The judges read code without running it. The human checks are the maintainers' fixes and merges listed above.

Join in

Here for Hack Week or your first open-source PR? These good first issues are small, and each one says where to look and when it's done. Comment on one to claim it. Or try to fool Bite: sneak a "fix" past it.

🏆 Fooled Bite: nobody yet. Be the first: your name, your trick, and the test that now catches it go right here. (How to enter. Bite's own 2 known blind spots are in Still fools Bite, so they don't count.)

Bug reports, fixes and AI-assisted PRs are all welcome. See CONTRIBUTING.md. If Bite flagged something wrongly, or missed a claim you know was false, please open an issue.

Thank you to Bite's first contributors:

MIT licensed.

Available Tools

2 tools
ask_biteBite: is this past fix guarded by a test?A
Read-only

Ask in plain words about a fix already committed, like "is last week's login fix guarded?". Bite finds the matching commit(s) by their messages, changed file names and the time named (today, yesterday, last week, the last 10 days...), takes each change back out of a copy and runs the tests. The answer opens in a few words (Yes, No or Partly), then a short block per commit, with its id. Free, needs no key, never touches the user's files. If nothing matches, ask again with words from the commit message.

NameRequiredDescriptionDefault
lastNoHow many recent commits to look through (default 100).
folderNoThe project folder you changed (any folder inside its git repository). Leave it out to use the folder Bite was started in.
questionYesThe question, in plain words.
check_fixBite: does a test notice my fix?A
Read-only

Call this after you change code to fix a bug, before you tell the user it's fixed. Bite takes your change back out of a copy of the project and runs the project's tests. If they still pass, no test shows your fix does anything: add a test that fails without your change and passes with it, then call this again. Free, needs no key, never touches the user's files. Can take as long as the tests do.

NameRequiredDescriptionDefault
sinceNoCheck the changes since this commit or branch (for example main). Default: the changes since the last commit, including uncommitted ones.
folderNoThe project folder you changed (any folder inside its git repository). Leave it out to use the folder Bite was started in.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.5
    • First observedask_bite
    • First observedcheck_fix

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are cleanly separated by target: check_fix operates on the code change the agent just made, while ask_bite queries already-committed fixes described in plain language. Each description explicitly states its trigger condition ('after you change code' vs 'about a fix already committed'), leaving no realistic selection ambiguity.

Naming Consistency4/5

Both names are snake_case verb_object constructions (check_fix, ask_bite), which is consistent. Minor deviation: ask_bite embeds the server name as its object, so the second token is not a domain entity like the first.

Tool Count3/5

Two tools is thin for a general-purpose server, though bite's scope is genuinely narrow (revert-and-test verification). Each tool earns its place, but the surface offers no room for adjacent operations such as listing matchable commits.

Completeness4/5

The core lifecycle is covered: verify a new fix has a failing-without/passing-with test, and interrogate history for whether an old fix is guarded. The only rough edge is the dead end when ask_bite finds no commit match, requiring the agent to rephrase with commit message words rather than browse candidates.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to run deterministic completeness audits on code before declaring 'done'—catching unwired modules, placebo tests, swallowed errors, and stubs via AST analysis, entirely offline and free.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding assistants to scan a repository for code that cannot prove its usefulness, attribute it to AI-assisted or human commits, prove candidate deletions against the project's own tests, and pull a payoff report or run history, all without ever writing to the repository. The test command and any model judging stay under a person's control through environment configuration.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Checks what local coding agents such as Claude Code, Codex and Cursor really did: files changed, commands run and test results read from test output, not the agent's word. Unclear test results can be double-checked by Laya (on your computer) or TypeSafe's Jev (cloud, your own API key). Read-only.
    10
    28 npm
    60
    MIT