Agents claim. Evidence decides.

LLM agents hallucinate, overclaim, and mark work done that is not. It is structural, not a bug you can prompt away. Decision Gate is the external boundary where every claim must produce evidence before it can proceed: deterministic, fail-closed, audit-ready.

Watch a claim meet its gate:

Research agent

Agent

The agent claims:

Cited: Varghese v. China Southern Airlines, 925 F.3d 1339 (11th Cir. 2019).

Decision Gate Define

A citation beside an answer is still part of the claim, not proof of it. Decision Gate checks that the case exists, the reporter citation resolves to it, and the cited authorities are real.

  • Required case_records.count('Varghese v. China Southern') != 0
    Observed 0 records
    FAIL
  • Required citation.resolve('925 F.3d 1339')
    Observed different case
    FAIL
  • Required cited_authorities.resolve()
    Observed 0 of 3 resolve
    FAIL

Decision Gate Result

Every check contradicts the citation, so the claim is blocked. Plausible legal formatting cannot turn a fabricated source into an accepted fact.

BLOCKED 3 of 3 checks failed fail-closed: unproven claims do not proceed Evidence preserved for audit.

Coding agent

Agent

The agent claims:

Done. I added 5 tests and they all pass.

Decision Gate Define

“Done” contains three separate promises here: five new tests, every required test passing, and coverage of at least 90%. Decision Gate evaluates each one against the test evidence.

  • Required test_results.count == 5
    Observed 3 tests
    FAIL
  • Required test_results.all(status == 'PASSED')
    Observed 1 failing
    FAIL
  • Required coverage.line >= 90
    Observed 94.2
    PASS

Decision Gate Result

Coverage passes, but the claimed test count and pass state do not. A partially true completion claim is still not proven, so the workflow remains blocked.

BLOCKED 2 of 3 checks failed fail-closed: unproven claims do not proceed Evidence preserved for audit.

Release agent

Agent

The agent claims:

v2.1 is ready to ship.

Decision Gate Define

“Ready to ship” is defined before the agent says it: all tests pass, coverage clears 90%, and security approval is recorded.

  • Required tests.passed == tests.total
    Observed 512/512
    PASS
  • Required coverage.line >= 90
    Observed 94.2
    PASS
  • Required approvals.security == 'granted'
    Observed granted
    PASS

Decision Gate Result

All declared conditions are supported, so the release may proceed. “Ready” becomes an auditable decision rather than a phrase the agent is allowed to define.

PROCEED 3 of 3 checks passed proven: the claim advances Evidence preserved for audit.

For any claim X, require proof Y. If proof cannot be produced, the claim cannot proceed.

On this page Current section: How it works

How it works

  1. Declare the gate. Requirements are data, not prose: which evidence must exist, from which sources, before a claim may proceed.
  2. The agent does its work and makes its claim. Tests added, citation found, task complete. Claims are cheap; agents are stochastic.
  3. Evidence decides. The gate resolves each requirement against observed data. Proven claims proceed. Unproven claims are blocked, fail-closed, with the evidence preserved for audit.

Where it runs

  • Agent task verification: completion claims are checked against gates before the workflow advances.
  • CI/CD quality gates: releases hold until tests, coverage, and approvals are proven, not asserted.
  • Approval workflows: human sign-off is evidence like any other, and missing sign-off holds the gate.

Keep going

Start with Basics to trace a claim from assertion to accepted record. Applications shows where that same boundary belongs in real workflows. The Docs contain the complete reference.