SlopGradeby Maxor Global LLC
Sign inStart free
CI gate · AI-written code

AI writes your code.
slopGrade decides: it passes or it blocks.

A deterministic gate on every PR. Slop and cross-tenant leaks never reach main — no score, no debate.

Open-source client — audit every line. 11 open-source classes block free forever, no card. Turn on the full 124 when you trust the gate.
0 egresskeyless OIDCinstalls in 2 min
PR #128acme/billing-apigate live
Pushed · the gate reads the diff
export async function listInvoices(orgId){- return db.from('invoices').select('*') }
!Blockedquery with no org filter · cross-tenant leak
fix pushed
Re-pushed · the gate re-runs
export async function listInvoices(orgId){+ return db.from('invoices').select('*').eq('org_id', orgId) }
Passesorg_id filter added · ready to merge
Merge disabled while the slop check is red
Read-only on your diffs Writes only a check status 0 egress — code never leaves your runnergate live
01The problem

Your team merges code no human wrote.

AI agents open PRs faster than review can keep up. Slop slips through, queries forget the org filter, a key leaks into a log. At volume, human review catches nothing — you need a deterministic gate, not an opinion.

02How it works

One loop: detect → block → verify

The gate lives in your GitHub Actions CI. It reads each PR's diff, decides, and writes its verdict as a required check. No code leaves your runner.

detectblockverify
01 · install

Copy the snippet

One GitHub Actions workflow pasted into your repo. Keyless OIDC — nothing to store.

- uses: slopgrade/ci@v0.3.1
02 · detect

The PR opens

The gate reads the diff on the runner and classifies it against {gates} classes of slop and tenant leaks.

$ slop scan --diff origin/main…HEAD
03 · block

Pass / block verdict

One required check, true or false. Red → merge is disabled by the branch ruleset.

slop · blocked → merge disabled
04 · verify

The fix goes green

The agent fixes, re-pushes, the gate re-runs. Green → the PR is mergeable again.

slop · pass → ready to merge
no riskStart in advisory on all your repos — it flags reds without blocking anything. Watch what it catches on your real PRs, then switch to blocking when you trust the gate.
03The firewall

124 classes of gate. 5 layers. 0 false positives.

The cross-tenant leak — a query with no org filter — is the class CodeQL and human review miss, and it's our #1. The moat isn't the mechanism: it's the curated, turnkey rulepack, calibrated to zero false positives on 5,000+ real repos before every release. You turn it on; you don't write it.

Free · open-source · forever
11 open-source classes
The unambiguous catastrophes — advisory on all your repos, blocking free on one private repo and every public repo. Audit the client, fork it.
SQLiCmd injectionXSSSSRFXXEDeserializationPath traversalHardcoded secretsBroken cryptoCORS
Firewall · blocking
124 classes
The other 113 closed-source classes + interprocedural taint + Go/.NET/Java breadth + zero-FP calibration. The gate that actually blocks the merge.
Rulepack coverage11 free · 124 blocking
11 open-source classes — block free124 classes — blocking, paid
Classes by categorylive catalog
Injection6149%
Crypto2621%
Auth1512%
Infra1512%
Access54%
Supply-chain22%
L1

Tenant isolation

Every org-scoped query must carry its filter. The #1 cross-tenant leak in prod, caught before merge.

L2

Secrets & injection

Hardcoded keys, SQL/command/XXE/SSRF, deserialization — the bulk of the catalog.

L3

Crypto & auth

Weak algorithms, short keys, RSA padding, reflected CORS, missing access control.

L4

Deterministic slop

Invented numbers, dead guards, hand-rolled native controls — the formula, never an LLM.

L5

Physical split, 0 egress

Extraction stays on your runner; only a verdict leaves. The code doesn't travel.

04The catalog

Every class, with the code it blocks.

A sample of the 124 classes — grouped by category, each with the exact pattern it catches before it reaches main. Detection runs on your runner; this is what it looks for.

Access5
Cross-tenant · access-control
db.from('invoices').select('*')
A query with no org filter — every tenant's rows leak in prod.
RLS · SECURITY DEFINER
create view billing as select * … security definer
A definer view that skips row-level security.
Mass-assignment
User.create(req.body) // is_admin passes through
Request body bound straight to the model — privilege fields slip in.
Injection61
SQL injection
db.query('select * from u where id = ' + req.params.id)
User input concatenated into a SQL string.
Command / code
exec('convert ' + req.query.file)
User input reaching a shell command.
SSRF
fetch(req.query.url) // hits 169.254.169.254
A server fetch to a user-controlled URL — reaches the metadata endpoint.
XXE
libxml.parseXml(body, { noent: true })
XML parsed with external entities enabled.
Auth15
JWT alg-none / bypass
jwt.verify(t, key, { algorithms: ['none'] })
A token accepted with the 'none' algorithm — forgeable.
Hardcoded secrets
const stripe = 'sk_live_4eC39Hq…'
A live key committed into source (and git history forever).
CSRF disabled
app.use(csrf({ ignoreMethods: ['POST'] }))
CSRF protection turned off on a mutating route.
Crypto26
Weak crypto
crypto.createHash('md5').update(password)
MD5 / SHA-1 where a password hash is required.
TLS-verify off
new https.Agent({ rejectUnauthorized: false })
Certificate verification disabled on an outbound call.
Static / hardcoded IV
createCipheriv('aes-256-cbc', key, ZERO_IV)
A reused / zero IV — the same plaintext encrypts identically.
Supply-chain2
CI/CD mutable pins
uses: some/action@main # not a SHA
A CI action pinned to a branch, not a SHA — silently swappable.
Mutable deps · slopsquat
"lodahs": "*" // typo'd name, floating range
A floating range on a typo-squatted package name.
Infra15
IaC open-ingress
cidr_blocks = ["0.0.0.0/0"] # port 22
A security group open to 0.0.0.0/0 on SSH.
Docker unpinned
FROM node:latest
A base image pinned to :latest — non-reproducible, it drifts.
Debug mode in production
DEBUG = True
Debug mode left on in production.

See all 124 classes →

05Vs the alternatives

Not another scanner. A turnkey gate.

CodeQL and Semgrep are engines you configure and tune. Human review doesn't scale to agent-speed PRs. slopGrade is the curated rulepack you turn on — 124 classes calibrated to zero false positives across 5,000+ real repos, including the cross-tenant leak you'd otherwise write and tune the query for yourself.

slopGrade
CodeQL
Semgrep
Human review
Setup
One workflow snippet · keyless OIDC · 2 min
Write your own queries
Author & tune rules
Hire & schedule reviewers
Cross-tenant leak (#1)
Curated & calibrated — flagship class
Write & tune the query
Author the rule
Invisible to the eye
False positives
Calibrated to 0 on 5,000+ repos
Tune per repo
Notoriously noisy
Fatigue at volume
Verdict
Pass / block — a required check
SARIF findings list
Findings list
A comment thread
Your code leaves the runner
Never — 0 egress, split IP
Runner-local
Cloud or local
n/a
Scales to agent-speed PRs
Deterministic, every PR
Yes, if maintained
Yes, if maintained
No
06The proof
124
gate classes
Derived from the live catalog — 6 categories, growing weekly.
5,000+
calibration repos
Each class hits 0 false positives on the corpus before release.
0 egress
code doesn't leave
Split IP: extraction on your runner, classifier closed server-side.
2 min
to install
Keyless OIDC, one workflow snippet, protects main.

Deterministic by design · open-source client, auditable · we run it on slopGrade itself before it ships to you.

07Pricing

Free advisory forever. From $24 per repo, tapering.

You pay for what you protect, not per head. A dormant repo costs $0 — and the more you protect, the less each repo costs. Unlimited users, always.

Compare plansSee every leak for free. Block the merge when you're ready.
Free · advisory$0 / forever
The productFirewall · blockingfrom$24 / repo / month
Classes covered
11 critical
124 classes
Mode
Advisory — flags reds
Blocking — branch ruleset
Repos
All repos · 1 private + all public blocking
N private repos (slots)
Taint analysis
Intra-function
Interprocedural + cross-file
Language breadth
Core
+ Go / .NET / Java
Tenant isolation
Flagged
Enforced
Open-source client
auditable
auditable
0-FP calibration
5,000+ repos
Price per repo · tapering with volume
1–4$24 /repo
5–10$15 /repo
most common11–20$11 /repo
Up to 20 private repos on the graduated curve — as low as $11/repo. 20 repos = $296/mo. Beyond 20, Team is flat $299/mo, unlimited. A dormant repo stays $0.
Beyond per-repo
Team — $299/mo flat · unlimited private repos & users · all 124 classes
Enterprise — negotiated · SSO-SAML, air-gapped self-hosted engine, custom packs, SLA
14 days free
No card. Up to 5 repos. Nothing charged; if there's no card on day 14 the trial just ends.
After the trial
Keep the repos you want — or fall back to free advisory. No interruption, no surprise bill.
One leak caught
A single cross-tenant leak stopped before merge = years of subscription. The gate pays for itself once.
08FAQ

Straight answers.

QWhat is slopGrade?

A deterministic CI gate for AI-written code: on every GitHub pull request it decides pass or block before the code reaches main. No score, no debate.

QDoes my code leave my CI?

No — 0 egress. Extraction stays on your GitHub Actions runner; only a verdict leaves. The code doesn't travel (physical split).

QHow much does it cost?

Advisory (scan without blocking) is free forever on all your repos. Blocking mode is $24 per repo per month, down to $11 at volume.

QIs there a free trial?

Yes: 14 days free, up to 5 repos, no credit card. After the trial you keep the repos you want or fall back to free advisory.

QWhat does the firewall detect?

The 11 most critical classes block free (open-source client); the full firewall covers 124 classes across six categories — injection, crypto, infra, auth, access, supply-chain — including the #1 cross-tenant leak. Calibrated to 0 false positives on 5,000+ real repos.

Put a gate between the AI and your main branch.

Create an account, paste the snippet, protect your first repo in two minutes. 14 days free, up to 5 repos, no card.