Privacy
Seatbelt works like your coding agent. To check your code, it reads your code. Your agent already streams your whole project to an API on every edit. Seatbelt sends it once, to the hosted engine, to catch mistakes before you share the link.
Your source passes through the detector and is not stored. It is scanned in memory, then discarded, and only the redacted report is kept. Here is exactly what does and does not leave, a tighter pipe than the one you already trust.
What gets uploaded
A zip of your project source, built on your machine by the MCP. It is an allowlist, not a filter: only source and config file types go in, the code and config the check actually reads. Images, binaries, media, and fonts never leave your machine, because nothing outside the allowlist is ever added.
What never leaves
- Dependencies and history. node_modules, .git, common build dirs (.next, dist, build, …), and most dotfiles never leave, except .env files, which are scanned on purpose.
- Database contents. .sqlite and .db files are sent as empty placeholders. A database sitting in a public folder still trips the gate, but zero database bytes leave your machine.
- Your build. The build command is never uploaded. Hosted scans skip the build gate.
- Local secrets. Files like
.env.localstay on your machine. A committed.envwith real values is still flagged, because that one ships. - Large files. Anything over 512KB is skipped.
You choose what leaves
Anything you list under ignores in .seatbelt/config.json is never scanned or uploaded. Add a folder or file name there and it stays on your machine.
How it is handled
- Size cap. The zip is capped at 4.5MiB, checked on your machine before any bytes are sent. Over the cap you get a plain stop, never a partial upload.
- On the server. The zip is staged to a private temp directory, scanned in memory, then deleted. Only the report is stored, and its excerpts are redacted.
- Told at scan time. The privacy line prints on every hosted scan. Nothing is buried.
Or upload nothing
Point the MCP at a local API and it scans on your machine directly, uploading nothing. Teams that cannot let source leave their environment run the engine locally.