A draft position paper for European teams. Worst case first, mechanism second, no adjectives.
This paper was written by the people who build KyGit. It is not legal advice, and it has not yet been reviewed by counsel. Every legal statement below carries its date and its source, because several of them are moving. Read it as a map to hand to your own lawyer, not as a substitute for one. Corrections and disagreements are welcome at info@kychee.com.
Kychee is a US company. KyGit's storage is Amazon S3, in the United States. If you came here looking for a European host, we are not one, and we would rather say so in the first paragraph than in the fine print. What we are is a code-hosting arrangement in which the US host cannot read what it holds — and that property is the one European transfer guidance singles out as sufficient on its own.
The honest map first, because a product page that starts with the product is a product page that is hiding something. None of what follows is a reason to buy anything. It is what we found when we asked whether European teams are required to move, and the answer is that they are not.
The GDPR applies to personal data. A repository of source code is mostly not personal data. What can be: commit author names and email addresses (your employees' and contributors' data, on every commit, forever), test fixtures and seed data copied from production, datasets and notebooks, log files checked in by mistake. If your repositories are clean of all of that, the transfer rules may not touch them at all, and the rest of this paper matters for trade secrets and contracts rather than data protection. If they are not clean, the transfer rules apply to the whole repository, because you cannot transfer half a git object.
Transfers of personal data to the United States currently rest on the European Commission's July 2023 adequacy decision for the EU–US Data Privacy Framework. The first direct challenge, Latombe v Commission (T-553/23), was dismissed by the General Court on 3 September 2025. That judgment was appealed to the Court of Justice on 31 October 2025 (C-703/25 P); as of this writing no hearing date has been announced, and commentators do not expect a ruling before late 2026 or 2027. Separately, on 29 June 2026 the US Supreme Court held in Trump v. Slaughter that the President may remove Federal Trade Commission commissioners without cause; privacy advocates argue this weakens the independent-oversight structure the adequacy decision cites.
We do not predict the outcome. We note two facts. The Court of Justice struck down both previous frameworks, Safe Harbor in 2015 and Privacy Shield in 2020. And the fallback is already written: standard contractual clauses plus supplementary measures, per the EDPB's Recommendations 01/2020. That document is the subject of the next section.
Since 2025 a clause forbidding the vendor from training models on customer data has become standard in enterprise contracts. It is worth being precise about what it reaches. It covers customer data, which lives in your database, not in your repository. It does not reach your own source code unless the code is itself the deliverable (agencies and contractors), the repository contains customer data (see above), or your customer simply asks. Where it reaches a platform that stores its users' code, it bites directly, because the platform is the AI company. We say this plainly because we would rather you not buy KyGit for a reason that does not apply to you.
Dated facts, not accusations. GitHub states that private repository content at rest is not used to train its models. From 24 April 2026, interaction data from Copilot Free, Pro, and Pro+ — prompts, suggestions, and surrounding context, including while working in private repositories — is used for training unless the user opts out; Copilot Business and Enterprise are excluded. An organisation on Business or Enterprise seats is contractually covered today. The point is structural rather than about any one host: a policy is something a host can change, and this one changed once this year. A key the host never received is not a policy.
The EDPB's Recommendations 01/2020 on measures that supplement transfer tools (final version adopted 18 June 2021) describe, in Annex 2, a handful of situations in which a technical measure makes a transfer acceptable even where the destination country's law would otherwise be a problem. The first is titled “Data storage for backup and other purposes that do not require access to data in the clear.” Paraphrased below; read the original before you rely on any of it.
The exporter uses a hosting provider in a third country to store data, and the provider does not need to see the data in the clear. The EDPB considers the encryption an effective measure when, in short:
The reasoning is short. When all six hold, the importer holds ciphertext and no way to open it, so there is nothing for its authorities to compel from the importer. The transfer is of bytes, not of readable data.
Condition by condition, with the place to verify each one without taking our word for it. The fourth row is the one we meet least well today, and it says so.
| Condition | KyGit | Where to check |
|---|---|---|
| 1. Encrypted before transmission | Encryption happens on your machine, inside a plain git push, before a byte leaves it. Your repository ciphertext moves directly between your machine and storage — our servers never handle it. |
What happens on push; the protocol specification. |
| 2. State-of-the-art algorithm | Published standards only, in mainstream open-source implementations: Ed25519, HPKE (RFC 9180), XChaCha20-Poly1305, HKDF-SHA-256, SHA-256/HMAC. What is ours is the protocol that composes them. | The suite and the security FAQ. |
| 3. Key strength vs. confidentiality period | 256-bit symmetric keys, one HKDF-derived key per object, forward-only epoch rotation when a recipient is removed. No date after which the ciphertext is expected to weaken within the horizon a trade secret needs. | Keys, envelopes, and what losing them means. |
| 4. Verified implementation | Not independently reviewed yet. What exists today: two independently built open-source implementations (a TypeScript client and a Rust verifier that shares no code with it), a frozen test-vector set both must pass, and a recorded adversarial review. An independent cryptographic review is the next gate, and until it is done the vocabulary on this page is the ceiling on what we will claim. | Two implementations, the vectors, the review. |
| 5. Keys managed by the exporter | Keys are generated on your machine and live in your keystore. Teammates receive sealed envelopes; a removed teammate is cut off by epoch rotation. Run402 holds zero vault keys, so there is no key-management duty on our side to audit. | Keys and envelopes; removing a teammate. |
| 6. Keys solely under the exporter's control | Run402 cannot decrypt your gitvault or repository history. The confidentiality claim is scoped to the vault: source payload and repository-history content are ciphertext-only; the substrate retains only enumerated plaintext metadata and holds zero vault keys. | Who sees what; the threat model. |
This is not zero-knowledge hosting, and an assessment that says otherwise will not survive review. The control plane sees that a vault exists and whose it is, principal identities and access times, object counts, ciphertext sizes and ids, generations and cadence. That list is closed and enumerated in the threat model; anything beyond it is a protocol violation. It is also exactly what a subpoena or government order served on us would yield — the legal-process answer states the worst case first and does not claim the metadata is harmless.
An assessment that relies on a host's policy has to be redone every time the policy, or the host's owner, changes. An assessment that relies on the host's incapacity does not. We hold no key to change our minds with, and that holds against a future us too, including a future us, after an acquisition. That is the sentence we would put in front of a regulator, and it is the reason this page exists.
Your ciphertext replicates to a bucket you own. We can't decrypt your repository history — and we can't hold it either. If that bucket is in Frankfurt or Dublin, the ciphertext copy stays in the EU, and the exit strategy DORA asks you to write is one paragraph long: if we disappeared tomorrow, your repository is recoverable from a bucket listing and your keys, with an open-source tool. No server required. Provable, not promised.
Read this section twice. It is the one your assessor will read first.
What to cite, in the order an assessor will ask for it:
On request we will provide, in writing, a data processing agreement, the sub-processor list (Amazon Web Services), and the same worst-case statement above signed by the company. Ask at info@kychee.com.
Sentences you may quote verbatim from this site: “Run402 cannot decrypt your gitvault or repository history.” “Your ciphertext replicates to a bucket you own.” “We hold no key to change our minds with.” Please do not paraphrase them into something stronger; the exact wording is what we can stand behind.
We are talking to European teams now, before we build anything more around this, to learn whether the question above is one you actually get asked. If you are a data-protection officer, a security lead, or an engineering lead at a European company and can spare twenty minutes, we would like to hear where source-code custody sits on your list — including “nowhere.” That answer is as useful to us as the other one.
info@kychee.com, subject “KyGit in Europe.” We are in Amsterdam; a coffee works too.
Made with ❤️ in Amsterdam