AI Coding Agent Lie Detector

Mantiz Hunts

AI coding agent lie detector.
Scans diffs and PRs for the patterns agents use to fake a passing test suite.
Your agent cheats. Mantiz doesn't.

mantoz.png
Scroll
Live Playground

Try the Evasion Playground

Select a cheat template or paste a diff to see how the AST scoring engine rates the code in real-time.

diff-editor

Scan Pending

Select a template and click "Analyze Diff Live" to see the engine's verdict.

0+
Diffs Scanned
0
Labeled PRs
0
Detection Patterns
0%
Overlap Accuracy

What Mantiz Detects

Patterns your AI agent might be using to fake a passing test suite

Hallucinated AssertionCritical
Assertion TamperingCritical
Mock-to-Avoid-FailureHigh
Disabled AssertionCritical
Silent Catch-and-PassHigh
Mutation SusceptibilityMedium
Claim-Diff MismatchMedium
Tree-sitter ASTHigh
Historical BehavioralInfo
AI-Assisted DetectionHigh
AI JudgeInfo
Hallucinated AssertionCritical
Assertion TamperingCritical
Mock-to-Avoid-FailureHigh
Disabled AssertionCritical
Silent Catch-and-PassHigh
Mutation SusceptibilityMedium
Claim-Diff MismatchMedium
Tree-sitter ASTHigh
Historical BehavioralInfo
AI-Assisted DetectionHigh
AI JudgeInfo
Hallucinated AssertionCritical
Assertion TamperingCritical
Mock-to-Avoid-FailureHigh
Disabled AssertionCritical
Silent Catch-and-PassHigh
Mutation SusceptibilityMedium
Claim-Diff MismatchMedium
Tree-sitter ASTHigh
Historical BehavioralInfo
AI-Assisted DetectionHigh
AI JudgeInfo
3-Step Pipeline

From Diff to Verdict

Paste any diff. Mantiz scans every line through 11 detection engines.
No signup needed. No GitHub required.

Paste a Diff

Paste any GitHub-style diff or PR link. Mantiz parses every changed line into structured hunks.

diff --git a/test.js b/test.js
@@ -10,7 +10,7 @@
function testAdd() {
+ // assert.equal(add(2,3), 5)
}
- assert.equal(add(2,3), 5)

11 Detection Engines

Each line is scanned against 11 patterns. Findings are ranked by confidence and severity.

Disabled AssertionAssertion TamperingMock Avoid FailureClaim-Diff MismatchSilent Catch-PassTree-sitter ASTHist. BehavioralMutation Suscpt.AI-AssistedAI Judge

Get the Verdict

Trust score (0-100) with ranked findings and evidence excerpts for every detection.

Trust Score42
Disabled AssertionHIGH
Assertion TamperingHIGH
11 Detection Engines

What Mantiz Detects

Every pattern is backed by AST-level analysis. No regex tricks. No guesswork.

Critical

Hallucinated Assertion

Non-existent Jest/Vitest matchers hallucinated by AI agents (e.g. .toExist(), .toBeString()). Precision: 77.8%.

diff preview
- expect(result).toExist() // AI-hallucinated matcher
+ expect(result).toBeDefined() // fixed
Critical

Assertion Tampering

Expected value in a test changed to match broken output, with no corresponding spec change. Precision: 100%.

diff preview
- expect(result).toBe(42) // original
+ expect(result).toBe(-1) // tampered
High

Mock-to-Avoid-Failure

New mock introduced around a previously-failing real call path, with no coverage of the real path. Precision: 100%.

diff preview
+ jest.mock('./api', () => ({ // NEW mock
+ fetchData: () => mockData
+ }))
Critical

Disabled Assertion

Test or assertion commented out, wrapped in if(false), or marked .skip() in the same diff that claims a fix. Precision: 45.5%.

diff preview
- // assert.equal(add(2,3), 5) // commented out
+ assert.equal(add(2,3), 5)
High

Silent Catch-and-Pass

Empty catch block newly added around code that previously threw and failed a test. Precision: 33.3%.

diff preview
+ try {
+ riskyOperation()
+ } catch (e) { // empty — swallows error
+ // TODO
+ }
Medium

Mutation Susceptibility

Detects fragile tests with low assertion density that can be easily mutated to pass with broken code. Precision: 30.0%.

diff preview
- expect(result).toBe(true) // single assertion
+ expect(result).toBe(true)
+ expect(result.id).toBeDefined()
+ expect(result.name).toBeString()
Medium

Claim-Diff Mismatch

Commit message claims to fix behavior X, but the diff contains zero changes to files related to X.

diff preview
> fix(auth): resolve login timeout
src/styles.css // only CSS changed
src/utils.ts // no auth-related files
High

Tree-sitter AST

Multi-language AST analysis via WASM parsers — Python, Go, Java, Ruby, Rust, and PHP detection.

diff preview
+ def test_add(): // Python
+ assert add(1,2) == 3
- def test_add_skip(): // skipped
- pass
Info

Historical Behavioral

Tracks author behavior patterns — style changes, odd-hour commits, score volatility, and frequency anomalies.

diff preview
> Author: "bot-user-1337"
> PR #1: Score 100 (3 AM)
> PR #2: Score 95 (4 AM)
> PR #3: Score 100 (3:30 AM)
High

AI-Assisted Detection

LLM-powered semantic analysis detects test weakening, assertion removal, and coverage reduction. Requires GROQ_API_KEY.

diff preview
> LLM analysis: pattern detected
> Test weakening: ✓
> Assertion removal: ✓
> Coverage reduction: ✓
Info

AI Judge

Reviews static findings and filters false positives using LLM reasoning. Increases precision by removing invalid detections.

diff preview
> D6 flagged "toBeString"
> AI Judge: false positive
> → Valid custom matcher
> Finding downgraded
Pipeline

How Detection Works

Mantiz analyzes diffs through a multi-stage pipeline: static pattern matching, AST parsing, behavioral analysis, and optional AI-powered detection.

Diff Input

Paste a raw git diff or provide a GitHub PR URL. Mantiz parses every changed file and line.

Static Analysis

11 detection engines scan every line. Findings ranked by severity and confidence with per-detector calibrated weights.

AI + Behavioral

Optional LLM-powered analysis detects semantic bypass and coverage reduction. Historical tracking catches author pattern anomalies.

Trust Score

Weighted scoring: findings deduct points based on confidence level. Score ≥ 80 means the code passes the honesty check.

Why this matters: A loop without a real checker doesn't fail loudly — it hallucinates progress. Mantiz is the honesty detector for the entire pipeline.

Don't Trust Your Agent

A loop without a real checker doesn't fail loudly. It hallucinates progress. Mantiz is the checker for the checker.