Skip to main content

Detect AI-hallucinated packages before you install them.

Project description

slopcheck

Detect AI-hallucinated packages before you install them.

When your AI coding assistant suggests flask-gpt-helper or easy-requests, those packages probably don't exist. But someone might register them as malware before you notice. That's slopsquatting.

slopcheck catches it first.

Install

pip install slopcheck

Or one-liner if you're in a hurry:

Mac/Linux:

curl -fsSL https://raw.githubusercontent.com/0xToxSec/slopcheck/main/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/0xToxSec/slopcheck/main/install.ps1 | iex

Usage

Scan your project

# Auto-detect dependency files in current directory
slopcheck .

# Scan a specific file
slopcheck requirements.txt

Check a single package

slopcheck flask-gpt-helper --pkg pypi
slopcheck react-ai-utils --pkg npm
slopcheck easy-http --pkg crates.io
slopcheck github.com/fake/module --pkg go

Output

  [SLOP] flask-gpt-helper (pypi)
    > Package 'flask-gpt-helper' does not exist on pypi. Your AI made it up.
    > Name ends with '-helper' -- classic LLM naming pattern

  [SLOP] reqeusts (pypi)
    > Package 'reqeusts' does not exist on pypi. Your AI made it up.
    ? Did you mean: requests

  [SUS] easy-requests (pypi)
    > Name starts with 'easy-' -- classic LLM naming pattern. Package exists but the name screams 'LLM bait'.

  [OK] requests (pypi)

JSON output (for CI)

slopcheck requirements.txt --json

What it detects

  • Non-existent packages -- the #1 signal. If it's not on the registry, your AI made it up.
  • Brand new packages -- created in the last 7 days? Probably registered to trap you.
  • Low downloads -- under 100 downloads means nobody uses it.
  • Hallucination patterns -- LLMs love naming packages {popular-lib}-{ai|gpt|helper|utils}. We check for these patterns.
  • Typosquats -- Levenshtein distance check against popular packages with "did you mean?" suggestions.
  • Missing repo links -- legitimate packages almost always link to source code.

Supported ecosystems

Ecosystem Dependency files Registry
PyPI requirements.txt, pyproject.toml pypi.org
npm package.json npmjs.org
crates.io Cargo.toml crates.io
Go go.mod proxy.golang.org

Exit codes

Code Meaning
0 Clean -- all packages check out
1 Suspicious -- some packages deserve a second look
2 Slop detected -- hallucinated or dangerously new packages found

Options

slopcheck [target] [options]

target          Directory, file, or package name (default: .)
--pkg ECOSYSTEM Check single package (pypi, npm, crates.io, go)
--workers N     Parallel registry checks (default: 10)
--json          JSON output for CI pipelines

GitHub Action

Add this to your repo at .github/workflows/slopcheck.yml and every PR that touches dependency files gets scanned automatically:

name: slopcheck

on:
  pull_request:
    paths:
      - 'requirements*.txt'
      - 'pyproject.toml'
      - 'package.json'
      - 'Cargo.toml'
      - 'go.mod'

jobs:
  slopcheck:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
      - uses: 0xToxSec/slopcheck@main
        with:
          path: '.'
          fail-on: 'slop'

If slop is found, the action fails the check and drops a comment on the PR with the full report. Set fail-on: 'sus' to be stricter.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slopcheck-0.2.0.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slopcheck-0.2.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file slopcheck-0.2.0.tar.gz.

File metadata

  • Download URL: slopcheck-0.2.0.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for slopcheck-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dfb0341fc396f63f195884e9a9a6392b90716eb390a7ba7acdbf354cf1661939
MD5 4ec6e1b0097dd9826e9ba843ee001419
BLAKE2b-256 25d7e13f342a6644446d1ba48c61071bbf7693766189754fadb370eeb3225851

See more details on using hashes here.

File details

Details for the file slopcheck-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: slopcheck-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for slopcheck-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9ef08966051cf11c6883d0e9a6f31ba6e16e2722b6776892ad19375fd2046a08
MD5 db1fe6294509a613fce05d781d7ad388
BLAKE2b-256 1404278b1849f23b1c8a007314281d2aabea732fc5970c7da06c2e444c5ae71d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page