SlopCop

What’s the weak link in your repo?

Static analysis deep enough for CI, fast enough for your coding agent to run on every edit.

Create your account.

Free for one repository. You’ll pick it next.

or

At least 15 characters. We’ll email you a code to confirm the address.

Have an account?

By creating an account you accept the privacy policy.

Catch bugs while
the context is fresh.

Your coding agent runs SlopCop after each edit, fixes what it finds and keeps working, without waiting for CI.

  1. Your agent edits a file.
  2. SlopCop checks the change.
  3. The agent fixes what it finds and keeps going.

Again on the next edit.

When the task is done, you push. Analyzers this deep usually run once, in CI, after the agent has moved on.

Problems don’t stay
in one file.

A request parameter can cross three files before it reaches a SQL query, and SlopCop follows it the whole way.

routes.pyLines 8–10
8@app.get("/users")9def search():10    return find_user(request.args["name"])1 2
users.pyLines 4–5
4def find_user(name):5    return run_query(FIND_USER % name)3 4
db.pyLines 3–7
3FIND_USER = "SELECT id, email FROM users WHERE name = '%s'"4 5def run_query(sql):6    with sqlite3.connect("app.db") as conn:7        return conn.execute(sql).fetchall()5 6

Ruff 0.16.10, every rule on

14 warnings, none about the injection.

  • D100Missing docstring in public module×3
  • CPY001Missing copyright notice at top of file×3
  • ANN201Missing return type annotation for public function×3
  • D103Missing docstring in public function×3
  • ANN001Missing type annotation for function argument×2

Its SQL check looks for SQL written into the string. Here the SQL is in db.py, so nothing is flagged.

SlopCop

1 finding: the SQL injection.

A request parameter reached the query argument of Connection.execute(sql)
Certainty: definite; proof: proven; completeness: complete
  1. 1sourceroutes.py:10:22request.args["name"]
  2. 2callroutes.py:10:12find_user(…)
  3. 3propagationusers.py:5:34name
  4. 4callusers.py:5:12run_query(FIND_USER % name)
  5. 5propagationdb.py:7:29sql
  6. 6sinkdb.py:7:16conn.execute(sql)

It follows the value from the request to the query, so your agent sees where the input came from before it changes anything.

Nothing to
second-guess.

SlopCop checks code with Bifrost, an open-source static analysis engine rather than a language model, so every finding traces back to a rule and the lines that triggered it.

Same code, same findings
Running the check twice on the same code gives the same result, so a finding that disappears was fixed rather than missed.
Checks half-finished edits
It reads the source as written, so your agent can check a change before the project builds again.
Right when it answers
Each finding says whether it is proven, and a check that runs out of budget is reported as incomplete rather than as a pass.

Languages

  • C
  • C++
  • C#
  • Go
  • Java
  • JavaScript
  • Kotlin
  • PHP
  • Python
  • Ruby
  • Rust
  • Scala
  • TypeScript

Coverage differs by language. Bifrost is written in Rust and licensed under Apache-2.0.

Answers it can prove

On DataFlowBench v0.9.0, Bifrost answers fewer of the 952 kernel data-flow assertions than CodeQL, and gets every one it answers right.

Bifrost524 answered, all correct

CodeQL741 answered, 145 wrong

See the benchmark

Get set up
on a call.

Tell us about your codebase, and we’ll get on a call to set SlopCop up in your team’s coding agents and CI, so problems are caught on every edit and again before every merge.

Meet the team

Find the weak link
before it ships.

Create an account, pick a repository, and SlopCop starts indexing it.

Read-only access. SlopCop never builds or runs your code.Security details

The GitHub App reads source in the repositories you select. Sending a deep-review action as an issue requires optional Issues write permission and your confirmation.

Anyone holding a valid report-access link can view the report. Links are unlisted, and access is not restricted to your GitHub collaborators. Treat private-code report links as sensitive.

Credential-like matches are reported by location without the matched value. Flagged files are excluded from source excerpts. Detection is bounded and does not guarantee that every secret is found.

Set it up with us.

Leave your email and we’ll arrange a call about running SlopCop in your team’s coding agents and CI, or anything else you’d like to know.

We’ll use your email to respond. No scan or report is needed.