Sandchest — Add a hacker to your team

Sandchest

2 min read Original article ↗

Sandchest acts like a real hacker embedded in your team, using abliterated, unrestricted models to find real vulnerabilities in your code before attackers do.

Find the exploit before someone else does

Attackers already use abliterated models to scan code for holes. Sandchest runs the same models on your repos and sends you what it finds. Every finding comes with:

  • The attack path, step by step, with file and line
  • A proof of concept you can run
  • What the fix must guarantee, and what it mustn’t break
  • A ready-to-run prompt for your coding agent, with a regression test

Surfacing right now

New advisories as they’re published, and what Sandchest is digging up in the code it watches. Live.

Advisories from OSV. Findings show only their kind and severity, never the code or whose it is.

Unrestricted, not unleashed

Abliterated means the model won’t refuse. It doesn’t get any more access. Here is all it gets:

  • Read-only access to the repositories you pick. It never pushes code or opens issues.
  • Its own virtual machine for each scan, deleted the moment the scan ends
  • No shell and no network. It never runs your code or the exploits it writes.
  • Nothing kept: your code isn’t stored, only the findings and the few lines that explain them

How your code is handled, or read the source and host it yourself.

  1. 01

    Install the GitHub app

    Pick the repos your hacker can see. It maps each one for free.

  2. 02

    Choose your hacker

    Give them a name, a look and a voice. They sign everything they find.

  3. 03

    Scan your codebase

    Pick a repository and your hacker deep scans it, every file, end to end. Run another whenever you like.

  4. 04

    Open pull requests as usual

    Each one gets reviewed. Findings land on the exact lines, with a fix prompt for your agent.

What a finding looks like

redacted/redacted#418 · Add invoice download

app/api/invoices/[id]/route.ts

11 export async function GET(req: Request, { params }: Ctx) {12   const session = await requireSession(req);13   const { id } = await params;14+  const invoice = await getInvoice(id);15+  return Response.json(invoice);16 }

Sandchest found 1 high-severity issueReviewed · 2 credits

An example. Identifying details are redacted. Click around the demo to see whole findings, and a scan as it runs.