Security

How semarch handles your code. Last updated 12 October 2026.

What happens on a pull request

GitHub sends a signed webhook. We verify the signature, queue the scan and start an isolated container in AWS (eu-north-1, Stockholm). The container receives a GitHub installation token valid for one hour, fetches only the two commits it compares (the merge base and the head, without history), builds the architecture model and exits. Its disk is discarded with it.

What we store

Reports are stored encrypted in a private S3 bucket and deleted after 90 days.

Who can see a report

Public repositories: anyone with the link, like the pull request itself. Private repositories: only people who sign in with GitHub and whose own account can read the repository. We ask GitHub at view time (cached for five minutes); we do not keep our own list of members. A report for a repository you cannot read looks exactly like a report that does not exist.

GitHub App permissions

Secrets and access

The App's private key, webhook secret and OAuth credentials live in AWS Secrets Manager. Your GitHub sign-in token stays on our servers in a session that expires after eight hours; the browser only holds an HttpOnly, Secure session cookie.

No AI on your code

The graph, the diff and the comment are computed deterministically. Your code is not sent to any language model.

Reporting a vulnerability

Write to security@semarch.dev. We reply within two working days.