Your security is our priority

Built with industry-best security practices
  • Protected by 256-bit strength HTTPS
  • Servers accessible only via SSH key pairs
  • Regularly scheduled server security audits
Minimize storage footprint
  • We only store lines relevant to code analysis
  • We don't clone or store your repo on our servers
  • Source lines are one-way hashed when longer-range code analysis necessary
Facilitate opt-out
  • Data is purged from disconnected repos
  • All data promptly removed if you cancel service
  • Full control over who can access your account

Frequently asked questions

How can I report a security vulnerability I've discovered?
Please email us at security@gitclear.com. We guarantee response within one business day. If you would like to send an encrypted message, please sign using our public PGP key:
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBF4fv4EBCADXdJp6Js9cqplvShgFGzNAK8PtYfJhjtw+9vTBu+MR97w4x0Fl Q9VEbHSdF/OBLNDFszOeCEQ3SeHqoSOfsJMS8PO/ROP3SrUvRYWrIcOYUkR0sxg8 JChzT58S87fjGiZ1fuAyk+LKtb859JUzqGlDX2e2+baW6lPxXnv2Avl0cbLiv+a6 lVRmQzXBAsHgRWV3VoB3HLw+niKVy8UHH9Jgsc/Uyu9GPb7lh4FBFCVvgLES7mK9 0pq1rtHx9bCj9W+E9JLfvDpTvag0ldpQpcqKuYZMZcvmBRDA8SdTMkEXmUQUiRH6 pDUZxLX2sSm5B78SW4sqF/Xuhs+UFs/drtdRABEBAAG0IEJpbGwgSGFyZGluZyA8 YmlsbEBnaXRjbGVhci5jb20+iQFUBBMBCAA+FiEEoHNj2HR+aFrMpQEjMXVZ5QIa fBYFAl4fv4ECGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQMXVZ 5QIafBbUUQf/a4ODpt9kNgpIWVtTVKGSHlTctrcEjfLqi/1bFienvhrW2omvq3Pr qpYToUZ9qK1TfZcvnjh+0F5IWeiNhIl13kmII+19vbjri5iDNQ0up3tpMeu+hJX5 3RHT/3WwT3F6gI6f+r3iFlyy5xq+q6t7TitRPguuGQFm1VXabiTfNZxhLhPJQz6q 2GXR6fYgToc52CtIDMozNF3vmV7qeV4k5IOXmcN4yL51bf3muOGTYstmG4hZmJg4 NyCYOL5/0TxLMIPH9D1K4j3/0BdXBO9+9LdYD4HVLFG0PSGki/jrEdoEhWFJU9tO ffnep82IuRVTJb1R+vSnbYZBB/buWHKCqLkBDQReH7+BAQgA5xOyz6J1SrYFim5X ZXxblJfT4gwVhdfttugQ+p/7HpP9KlhEZhN+sVULR2A2nslFxMRtuk4Mtx1sWS/5 CyQmPFAHdITaig955pqighl5iv3ztDVgjdaUyveU/S3WTowDjKm/SP6H/PBFFL9G miHJcA6KTLDU4eqRT//68LG4L/Yvc2jVF1NTNRKs0ZpzRNbqWoSp3g4u3lrrgbVg 0LTbHx7tKh+eKYI/roHaKZ5cqlD5yYLB2rrEzmvXPK9szujZh+7OQ25K9ObsRsMB p/EMNnjEAAKXpwqG6t7zmJHca1Nhz+V1FVdJWCQp9cEsaQ8i3FeXF6Nj1SH3+SJP bya2LwARAQABiQE8BBgBCAAmFiEEoHNj2HR+aFrMpQEjMXVZ5QIafBYFAl4fv4EC GwwFCQPCZwAACgkQMXVZ5QIafBYTKAf+OYDxAvJ6fmAAuYakXqBs5I7ZjFJq7NnV iXXXv2G1lkd5FrbeExeE5Q41l4UaNMEYphjXEconoMGza2DJABZm94RihKNI09Gd v8W45RgfC7N05HSudLQYsHmLEdA6h+wPBKivEU72nM98cQKqi6byu6mbFgwCfxOg dHdKt9G4E4+2HkDJc4BYcAHTqgsaOdOhHaqtdQCkDErxSwNMQXOEIPrHPkWs2zeZ eRpzLx72FQ2J9zfJ46UWg6CmX7OE2vYByQGSVYKlDca0/HVhiIAM/sfLAZFXPVLO bQvE6UxikoQQZ/NF5ljcxkkm3qZm3P1/F7X5axZCxFze+iaPAwbHsg== =21ks -----END PGP PUBLIC KEY BLOCK-----
Is my private source code secure?

We've designed our platform with multiple layers of protection to keep your data secure. Our in-depth defense approach includes physical security at our secure facility, encrypting all data in transit (via HTTPS), industry standard protection including firewalls, network vulnerability scanning, network security monitoring, and intrusion detection systems.

Who has access to my imported data?

The development team at GitClear has access to the main GitClear database, which stores data per the policies outlined in the "Where is my data stored?" question. Users can configure whether GitClear developers are permitted to simulate account login for the purposes of debugging problems you may report to us. If you prevent simulated login, we will be unable to assist in debugging most account-related issues, but we leave that choice up to you.

Where is my data stored?

As we analyze your code, we store lines that are relevant to the specific commits being analyzed. We do not clone or check out repos in whole. The source code lines we store are transformed using a one-way hash algorithm that allows us to detect revised lines without keeping the original content of those lines in our database. Any code line content we store is purged from our database via a scheduled cron job based upon the time of creation. If you request to view a commit that lies outside the storage window, we recreate your specific commit content from its source (i.e., GitHub or GitLab) at that time. Thus the reason that viewing older commits in your repo may require a 1-3 minute delay while we reconstruct their content.

Do you offer 2-factor authentication?

We expect to have native 2-factor auth implemented by November. It would have been higher on our development roadmap if not for the fact that both GitLab and GitHub (our available login services) implement their own 2-factor options. Assuming that you have enabled 2-factor on the service used to create your GitClear account, you will incur 2-factor security by proxy when accessing GitClear.

Why do you need write access to my repos?

GitHub's permission scopes don't allow us to specify fine-grained read/write permissions, which means we need read/write for your entire repo to enable our code analysis.

Specifically, write access to your repo allows us to create a webhook that notifies us of relevant events (i.e., push events, new branches, merges, etc). It also allows us to post comments on commits on your behalf.

GitLab's scopes for API access don't differentiate between "read" and "write" access, hence, even as we only read data from your commit diffs, we have to use whole API access to read it ("read" access only lets us clone repositories, which we do not do).

What do you do with each of the authorizations you ask for?

For GitHub:

  • "Write" permissions: create webhooks on repos/organizations so we're notified of relevant events, post comments on commits to GitHub.
  • "Read" permissions: list public and private repos and organizations, read source code, read public user data (name, avatar).
  • Repo: Grants read access to repo, commit statuses.
  • User:email: Grants read access to a user's email address so we can contact you if you request to be notified (e.g. there is a new GitClear user from your org)

For GitLab:

  • "api" access grants us access to read data from your repositories via the API.
  • "openid" access grants us access to authorize your account via OAuth.
  • "read_user" access grants us access to your /user endpoint, letting us fill out your user profile.

These authorization scopes are pretty broad and cannot be constrained to specific actions. However, we will never create pull requests, merge pull requests, or delete branches without your explicit approval. Here's some information on GitHub's authorization scope and GitLab's token scopes. You can revoke all of these permissions at any time via your authorized applications settings page on GitHub, or your applications page on GitLab, but doing so may result in an interruption of service.

Do you offer a bug bounty for disclosing security vulnerabilities?
Yes, we are open to discussing payment for security testers who can present us vulnerabilities that we can verify. We target payouts in the $500-1000 range for security improvement ideas that are implemented in production.