Privacy

Data we collect and how to remove it.

What OSS Protector collects, how it's used, and how to ask us to change or delete it.

What we store

  • GitHub-public account data for accounts that show up in webhook payloads or imported sources: login, GitHub user ID, avatar URL, account type. We do not store private email addresses.
  • Maintainer report text — the body of any @oss-protector command captured from PR or issue comments, plus its author_association value from GitHub.
  • Pull request metadata: title, body, base ref, changed-file counts, and head SHA. Public repositories may also store short patch excerpts used by the analysis model.
  • Webhook event log: one minimized row per GitHub delivery, retained for debugging and abuse audit.
  • Imported external sources: name, URL, and per-account row count from public blocklists like UnsafeLabs / Bounty-Hunters.

What we don't store

  • Cookies or tracking pixels on the public site.
  • Visitor IP addresses beyond Cloudflare's transient edge logs.
  • Third-party analytics. The site ships no analytics scripts to the browser.
  • API access tokens beyond the short-lived GitHub App installation tokens we mint per webhook to post our own comments.

Who can see what

The public clanker directory (/api/clankers and the /clankers page) expose only:

  • Login, avatar URL, GitHub profile URL.
  • Status (allow / watch / review / high_risk / block).
  • Score (0-100), confidence, last-seen timestamp.
  • Reason codes and aggregate counts.

Maintainer report bodies, private repository names, private PR links, and webhook payloads are not exposed via the public API.

Retention

Webhook event logs are retained indefinitely while the project is operating, since they're our audit trail against retroactive edits. Risk profile rows are retained as long as the listing is published. If your listing is removed via the contest path, the profile score drops to 0 and the entry disappears from the public directory, but the audit log of the underlying events stays.

Removing your data

Use the contest a listing page. The fastest path is asking a maintainer of the repo where the report came from to run @oss-protector dismiss or @oss-protector allow.

Infrastructure

OSS Protector runs on Cloudflare Workers and Cloudflare D1. AI classification uses OpenRouter. Public repository PR titles, bodies, file names, and short patch excerpts may be sent to OpenRouter for scoring. Private repositories are not sent to OpenRouter unless their repo-local policy explicitly opts in. No persistent training is performed by OSS Protector and OpenRouter's own data policy governs upstream model use.

Contact

Open an issue against lord007tn/oss-protector.