how nittim handles your code

Security

How nittim handles your source code, tokens, and the reports it generates.How nittim handles your code, your passwords and keys, and the reports it generates.How nittim handles your code, tokens, and reports.

Source snapshot — never written to disk

When you run an audit, nittim fetches a source snapshot from GitHub over HTTPS. The snapshot is held in server memory for the duration of the analysis — it is never written to disk, never stored in our database, and never logged. As soon as the analysis pipeline completes, the snapshot is gone.When you run a check, nittim pulls a copy of your project's code from GitHub over an encrypted connection. That copy is held in server memory only for as long as the check runs — it is never written to a hard drive, never stored in our database, and never logged. The moment the check finishes, that copy is gone.nittim fetches your source from GitHub over HTTPS, holds it in server memory for the run, then discards it. Never written to disk, never stored, never logged.

To keep a single pass focused and fast, each pass is bounded: up to 500 files and 5 MB of content. Binaries, build output, and dependencies are excluded before analysis begins. A full-scan audit can run more than one pass to cover a larger repository beyond that bound; a standard audit (the default for the web app, a zip upload, or the API) stops at one.To keep each pass focused and fast, every pass is capped: up to 500 files and 5 MB of content. Compiled files, build output, and ready-made packages your project depends on are excluded before the check begins. Full Audit can run more than one pass to cover a bigger project past that cap; a standard check (the default for the website, a zip upload, or the API) stops after one.Each pass is bounded to 500 files and 5 MB, excluding binaries, build output, and dependencies. Full Audit can run more than one pass on a larger repo; a standard audit stops at one.

GitHub tokens — used once and discarded

Auditing a private repository requires a GitHub token. That token is forwarded to the GitHub API for the single HTTPS call that downloads the source snapshot. After that call completes, the token is discarded from memory. It is:Checking a private project requires a GitHub token — a temporary key that proves you have access. That token is forwarded to GitHub for the single call that downloads your code. Once that call finishes, the token is thrown away. It is:A private repository needs a GitHub token. It's used once, for the call that downloads your source, then discarded. It is:

  • —Not stored anywhere.
  • —Not logged in any request or application log.
  • —Not passed to Anthropic or any other downstream service.Not passed to Anthropic (our AI provider) or any other outside service.Not passed to Anthropic or any other service.
  • —Not retained between requests — each audit that needs a token must supply one.Not kept between requests — every check that needs a token must supply its own.Not retained between requests — each audit supplies its own token.

Report storage

The audit report — findings, scores, verdict, and the repository name — is stored in Supabase (managed Postgres, us-east-1) so you can retrieve it later via a shareable link or the API. Data is encrypted in transit (TLS 1.2+) and at rest.The report — findings, scores, verdict, and the project name — is stored in Supabase (a managed database service) so you can come back to it later through a shareable link or the API. Your data is encrypted both while it travels (TLS 1.2+) and while it sits stored.Reports — findings, scores, verdict, repo name — are stored in Supabase (us-east-1), retrievable later via a link or the API. Encrypted in transit (TLS 1.2+) and at rest.

Private repository reports are access-gated. Only the account that requested the audit — or a member of that account’s organization — can retrieve the report. Requests from anyone else receive no information, including no confirmation that an audit for that id exists.Reports for private projects are locked down. Only the account that requested the check — or someone else on that account's team — can pull up the report. Anyone else gets nothing back, not even a confirmation that a check with that id exists.Private repository reports are gated: only the requesting account or its org can retrieve them. Anyone else gets nothing back, not even confirmation the id exists.

Secrets management

Service credentials (Supabase service-role key, Anthropic API key, GitHub token) live exclusively in Vercel environment variables. They are never committed to source control and never included in any client bundle. The audit pipeline runs entirely server-side.Our own passwords and keys — the Supabase service-role key, our Anthropic API key, a GitHub token — live only in Vercel's environment variables (a secure settings store, never in the code itself). They're never checked into our source code, and never shipped down to your browser. The whole check runs on our servers, never in your browser.Service credentials live only in Vercel environment variables — never committed to source, never shipped to the client. The pipeline runs entirely server-side.

Responsible disclosure

Found a vulnerability? Report it to Found a security bug? Report it to Found a vulnerability? Report it to security@nittim.com or through our contact form. We acknowledge a report within 48 hours and aim to patch a critical issue within 7 days. We'll keep you posted while we work on it, and we credit researchers who ask to be named once a fix ships.We acknowledge a report within 48 hours and aim to fix a critical problem within 7 days. We'll keep you posted while we work on it, and we'll credit researchers who ask to be named once a fix ships.We acknowledge a report within 48 hours and aim to patch a critical issue within 7 days. We'll keep you posted while we work on it, and we credit researchers who ask to be named once a fix ships. A paid bounty program is on the way; until it opens, security@nittim.com and the contact form are the route.

Safe harbor. If you make a good-faith effort to stay in scope — testing against your own account and data, never accessing or exfiltrating anyone else's, and reporting privately before any public disclosure — we won't pursue legal action over that research, and we'll work with you to get it fixed.If you make a genuine, good-faith effort to stay in scope — testing only against your own account and data, never anyone else's, and telling us privately before saying anything in public — we won't take legal action over that research, and we'll work with you to get it fixed.If you make a good-faith effort to stay in scope — testing against your own account and data, never accessing or exfiltrating anyone else's, and reporting privately before any public disclosure — we won't pursue legal action over that research, and we'll work with you to get it fixed.

Ground rules. Test against your own account. Don't run scans that could degrade the service for other customers, don't attempt to read or modify anyone else's data or code, and don't publish a report before we've had a chance to fix it — or 7 days have passed since you told us, whichever comes first.Test against your own account only. Don't run anything that could slow the service down for other customers, don't try to read or change anyone else's data or code, and don't publish a report before we've had a chance to fix it — or 7 days have passed since you told us, whichever comes first.Test against your own account. Don't run scans that could degrade the service for other customers, don't attempt to read or modify anyone else's data or code, and don't publish a report before we've had a chance to fix it — or 7 days have passed since you told us, whichever comes first.

In scope

  • —nittim's production web app (nittim.com) and its API
  • —The nittim GitHub App, and its OAuth / installation flow
  • —The nittim MCP server

Out of scope

  • —A finding inside an audit report itself — that's a product-accuracy issue, not a security issue; report it through the general contact form instead
  • —Third-party services nittim depends on (GitHub, Anthropic, Supabase, Vercel, Stripe) — report those to the vendor directly
  • —Denial-of-service or volumetric attacks against nittim's infrastructure
  • —Social engineering against nittim staff or its customers
  • —Automated scanning that degrades the service for other users

Preferred language: English. Machine-readable copy at /.well-known/security.txt.