Security

What aidep can touch, what it stores, and what it never sees.

Permissions

We request 3 permissions. Comparable tools request 10.

PermissionLevelWhy
MetadataReadMandatory for all GitHub Apps
ContentsRead and writeBranch creation requires it; the API cannot open a PR without it
Pull requestsRead and writeOpening and updating the PRs is the product

Your code

We fetch a tarball of your repo at scan time, scan it in memory, and discard it. We never store your source code. We store findings only: file path, line number, and the matched identifier. Repo access uses GitHub’s 1-hour installation tokens.

One exception, and only if you turn on evals: to draft the eval cases for a migration PR, we send the affected files to Anthropic once each, using our own key, to extract the prompts. The cases land in the PR for you to read before anything runs. Leave evals off (the default) and your code never leaves the scan.

Uninstalling the app purges all stored findings immediately.

Your inbox

We hold an email address only if you typed it: into notify in .github/aidep.json, or the waitlist form. It gets one confirmation mail with a link and nothing else until the link is clicked. After that, a plain-text digest when a scan finds a new exposure or a retirement is inside 30 days, sent through Resend. We never read an address from GitHub; that would be a fourth permission. Remove the address and the mail stops.

Your keys

The eval runs happen in your CI with your keys. We never hold the keys that run your prompts, and the held/drifted output stays in your repo as a PR comment. The one key we do hold is our own Anthropic key, used only to draft eval cases from your code when you opt in (see “Your code”).

Self-hosting

The whole product is a Next.js app and a Postgres; see the README. If your policy says no third-party app touches the code, run it yourself.

Found a vulnerability? Email security@aidep.dev.