SlopGradeby Maxor Global LLC
Sign inStart the free 14-day trial
Auth gate · CWE-798

Stop a live key from reaching git history.

AI pastes a real key "just to test" and it lands in a commit — where it lives forever, even after you delete the line. SlopGrade catches the hardcoded secret in the PR, before the merge, and emits only its location — never the value itself.

CWE-798
Gate catalog
0
lines of source stored
MIT
open-source client — read every line
JS/TS · Python · Go · .NET
Languages
The bug

A production key, committed to source.

The secret is now in the repo and its git history — a rotation is the only real fix, and every clone has a copy. The gate stops it at the PR so rotation is never needed.

What the AI shipped

config/stripe.ts — a live secret in source
const stripe = new Stripe('sk_live_4eC39HqLyjWDarjtT1zdp7dc')

What leaves your runner

CWE-798
{ "file": "config/stripe.ts", "line": 12, "kind": "hardcoded-secret" }

Even a secret match emits only {file, line, kind} — never the secret value. Audit it with --print-payload.

How the gate catches it

Detect → adapt → verify. By default, nothing else leaves.

01 · DETECT

In your runner, on the diff

The open-source client walks the pull request and flags the pattern locally — intra-function dataflow. By default, no code leaves the machine.

→
02 · ADAPT

Server verdict + gate

The structural fingerprint is classified server-side. A hard hit blocks the check on a paid private repo; public repos are gated free; the paywall fails open.

→
03 · VERIFY

Posted inline, re-checked on push

The finding is posted on its exact line. For the few classes with a safe deterministic rewrite (TLS verification off, debug on, yaml.load…), a fix is generated AND verified in your runner; otherwise you fix it and the next push re-checks.

→
Questions teams ask

Does the secret value get sent anywhere?

No. Even on a match, only the location and kind are emitted — never the value. Run --print-payload to see the exact bytes. Source leaves only on the opt-in deep scan (heisen-slop), on a paid repo.

What about test/placeholder keys?

Recognized shapes of live secrets (provider prefixes, high-entropy tokens) are flagged; obvious placeholders and test-mode keys are calibrated out. It blocks only what the pull request introduces; on 52,089 ordinary open-source pull requests the static gate blocked 59 (0.11 %).