faultgate 0.3.1 · fixes from the first outside test, 180 real tau2-bench runsRead the changelog →

AI RELIABILITY & EVALS PLATFORM

Non-deterministic models.
Deterministic decisions.

FAULTLINE measures how AI agents behave across repeated runs, turns that into rule-checked release decisions, and guards tool calls at runtime. Open-source tools, and services when you want us to run it with you.

OPEN SOURCE · MIT · FAULTLINE EVALS · FAULTGATE 0.3.1 · MCP-GUARD

ONE CONTINUOUS LOOP · EVALUATE → GATE → GUARD
LOOP
Evaluate01 / WORKBENCH

Measure the agent over repeated runs with a deterministic oracle

1,350 graded runs · deterministic oracle, no LLM judge
Gate02 / RELEASE GATE

Turn test runs into rule-checked release decisions in CI

PASS / FAIL / INCONCLUSIVE in CI
Guard03 / RUNTIME FIREWALL

Check tool calls at runtime against pinned tool definitions

Flags poisoned tool descriptions · blocks unknown tools and rug-pulls in enforce mode

One continuous loop: FAULTLINE Evals in the lab, faultgate in CI, and mcp-guard at runtime.

16
RESEARCH PROJECTS
684
TESTS
2
PAPERS
6
MODELS TESTED

01 / WHY NOW

Why now: empirical proof of the agent release problem.

Same model, same inputs, different results.

27 pts

Same model, same 30 inputs, five runs: pass rate moved from 0.60 to 0.87.

1 change

A new model, prompt or tool can break an agent that passed yesterday. Every one is a release.

0 decisions

Tracing tools show what happened. A person still has to decide whether to ship.

κ 0.98

Our code check for search loops agrees with human labels (κ 0.98, n = 200). Model judges on the same question: κ 0.09 or below.

Models will stay non-deterministic. Our job is to make every decision about them deterministic.

Samir Sawarkar, Founder

03 / HOW IT WORKS

Three tools in one closed loop.

Block regressions before they merge, in three commands.

01Evaluate

Measure the agent over repeated runs with a deterministic oracle; get a noise band, not a single score.

02Gate

On every change, faultgate returns PASS, FAIL or INCONCLUSIVE in CI; business rules are a hard block.

03Guard

At runtime, mcp-guard checks tool calls against pinned tool definitions.

GITHUB ACTIONS · RUN IN CI
- uses: Faultline-lab/faultgate@main
  with:
    traces: traces/candidate.json
    band: traces/band.json
    policy: traces/policy.json
    comment: "true"

04 / SEE A RELEASE DECISION

The faultgate GitHub Action posts the verdict, failing traces, latency change and a local repro command on your pull request.

See exactly why a release failed, on the PR.

faultgate · comment on PR #214faultgate: FAIL

Gate: clean rate 0.30 vs band [0.80, 0.87] from 2 baseline runs · fail below 0.70 · p=0.000

Regressions (clean in every baseline run, not now): r-0214, r-0216, r-0226, r-0258, r-0279, r-0286, r-0292, r-0317, r-0320, r-0322, r-0324, r-0330, r-0332, r-0344, r-0350

21/30 traces failed · judge none · redaction builtin

CHECKS
checkfired
search_loop18
abstention0
policy0
repeated_call0
unrecovered_tool_error0
context_overflow0
wrong_answer3
truncation3
Failing traces (first 20 of 21)
scenariotracecheckreason
r-03364dc5e933abe8wrong_answerexpected 'Alto-5275' not found in answer
r-03364dc5e933abe8truncationanswer has 'Alto' but not 'Alto-5275'
r-022151c15300072bsearch_loopno answer, 24 steps (cap), 62% empty results
r-0286b6f824a010a7search_loopno answer, 24 steps (cap), 79% empty results
r-02327e74e68d7296search_loopno answer, 24 steps (cap), 58% empty results
r-021610fa2370723esearch_loopno answer, 24 steps (cap), 50% empty results
r-029210a63caed2d6search_loopno answer, 24 steps (cap), 62% empty results
r-021404a16662742esearch_loopno answer, 24 steps (cap), 67% empty results
r-0263b80e27d064fesearch_loopno answer, 24 steps (cap), 75% empty results
r-0344ab3503d28cdasearch_loopno answer, 24 steps (cap), 62% empty results
r-03204d6f5e788fe1search_loopno answer, 24 steps (cap), 67% empty results
r-0350316bcde0d931search_loopno answer, 24 steps (cap), 79% empty results
r-02248fd42bacf992search_loopno answer, 24 steps (cap), 67% empty results
r-033209a946f2c89dwrong_answerexpected 'Gossamer-5255' not found in answer
r-033209a946f2c89dtruncationanswer has 'Gossamer' but not 'Gossamer-5255'
r-027954f099f8147esearch_loopno answer, 24 steps (cap), 67% empty results
r-0330ac2a7d9eaf68search_loopno answer, 24 steps (cap), 67% empty results
r-02266f508650cff0search_loopno answer, 24 steps (cap), 62% empty results
r-025825465761c097search_loopno answer, 24 steps (cap), 83% empty results
r-03244c78f65e849dwrong_answerexpected 'Talc-5218' not found in answer
r-03244c78f65e849dtruncationanswer has 'Talc' but not 'Talc-5218'
r-03228e4ab8196357search_loopno answer, 24 steps (cap), 75% empty results
r-0317a3131ab0f714search_loopno answer, 24 steps (cap), 79% empty results
LATENCY AND COST VS BASELINE
metricbaselinethis runΔ
latency / run16.5 s21.9 s+32.9%
REPRODUCE LOCALLY
pip install 'faultgate==0.3.0'
faultgate check examples/gate/candidate_gpt.json --band examples/gate/band.json --golden examples/gate/golden.json

Real output of faultgate 0.3.0 on the examples in its GitHub repo. PR number is illustrative.

Reproduce it

05 / SERVICES

Use the tools for free, or have us run the work with you.

Want us to run it with you?

Readiness Review

$7,5005 business days

We write your policy.json rules, import your traces, run 3+ baselines, and deliver your verdict and audit pack.

Custom eval suite build

Contact usScope and price agreed per engagement

Scenarios built from your agent's real tasks with deterministic checks and CI integration in your repo.

Tool-poisoning red-team

Contact usScope and price agreed per engagement

Attack battery across MCP tool-description injection, function hijacking, and parameter injection with paired reports.

Ongoing reliability retainer

Contact usScope and price agreed per engagement

Periodic re-baselining when models change, release verdict reviews, and rule-pack maintenance.

06 / WORKS WITH YOUR STACK

Point it at an export from the tool you already use.

Reads the traces you already record.

07 / FINDINGS

What the evidence says. Four results, each bound to a frozen protocol.

What 1,800 paired runs taught us about agent failure.

−21.9 pp
POOLED ATTACK SUCCESS, ARM A → B

A client-side provenance contract on tool-call arguments removed 421 attack successes and induced 26. McNemar exact p = 5.6e-93, six models, 1,800 paired runs.

2.5 pp
PASS^K VS NAIVE INDEPENDENCE

Repeated trials compound almost exactly as (pass@1)^k at k = 3. 150 held-out scenarios, 1,350 runs, deterministic oracle, no model judge.

94 %
FAILURES OWNED BY THE RETRIEVER

32 of 34 R2 failures never surfaced a required chain document. A stronger model does not fix that; oracle retrieval rescues all 32 at 3.1× fewer tokens.

0.60 – 0.87
SAME MODEL, FIVE RUNS, PASS RATE

Serving variance moves a fixed model across 27 points. Release gates must be tolerance bands graded on a pinned golden set, not thresholds.

08 / SECURITY

faultgate runs where your CI runs.

Your traces stay in your CI.

Turn on an API judge and only a redacted copy goes to your model provider.

01

Local-first

faultgate reads traces in memory and writes no trace payloads anywhere. Rules, policy, bands and the local judge never send anything off the machine.

02

Redacted by default

anything that leaves (API-judge input, reasons in CI logs and PR comments) is masked: emails, Luhn-checked cards, SSNs, phones, IPs, API keys, bearer tokens, JWTs. Presidio optional.

03

Auditable

every run can write verdict.json with the SHA-256 of every input, failing_traces.json and repro.sh. No prompts, answers or tool payloads are copied.

04

Open source

MIT, one dependency (pydantic), runs in your CI runner. Read every line.

RELEASE VERDICT IN CI

Make your agent's next release a deterministic decision.

Free and open source today. Gate, the managed layer, is on the roadmap. Design partners help build it.

pip install faultgateTalk to the founderSee pricing