Security & Data Flow
Your source code never leaves the machine in readable form.
Encrypted diffs if you're using an IDE, and project meta-data if you're using Claude Code.
VSCode, JetBrains, Emacs, Vim. Reads your working tree.
Local onlyClaude Code, Cursor, etc. Calls our MCP tools as it pair-programs with you.
Local onlyComputes diffs from the editor. Identifies decisions and extracts intents from MCP calls. Encrypts code blocks with a repo-derived key the server never sees.
Encrypts hereSees encrypted blobs as opaque bytes. Routes intent and decision data to your team over our secure API.
Zero-knowledge for diffsEncrypted code blobs in Google Cloud Storage. Intent/decision metadata in MongoDB Atlas. Both hosted in the United States.
Encrypted at restClient-side encryption boundary (zero-knowledge) · TLS in transit
Every category of data, audited.
| Data | Encrypted client-side? | Stored where |
|---|---|---|
| Source code, diffs Zero-knowledge | ✓ AES-256-GCM | Google Cloud Storage encrypted blob |
| Intent code blocks Zero-knowledge snippet, code content |
✓ AES-256-GCM | MongoDB Atlas encrypted field |
| Intent & decision management information titles, descriptions, scope, constraints, rationale |
— TLS in transit | MongoDB Atlas |
| Account info email, profile, billing metadata |
— TLS in transit | MongoDB Atlas |
| Payment details | — TLS in transit | Stripe we never see card numbers |
| LLM calls (Translation add-on) | — TLS in transit | Not retained after response never seen if you BYOK |
| Local cache ~/.kawa-code/.storage.caw |
✓ locally generated key | Your machine only |
Intent and decision management information — titles, descriptions, scope, constraints, rationale — is shared with your team via our secure API.
What our API enables for your team:
For teams that need every byte to stay on their own infrastructure, the self-managed deployment is available.
What we protect against, and what we don't.
Specifics of the client-side encryption boundary.
Cipher
AES-256-GCM
Authenticated encryption with a 128-bit auth tag.
Key derivation
PBKDF2-HMAC-SHA256
600,000 iterations, 32-byte output.
IV / Nonce
12 random bytes per message
Generated fresh from the OS CSPRNG on each encryption.
In transit
TLS 1.2+
All API and storage connections.
Local cache
Locally generated key
Encrypts ~/.kawa-code/.storage.caw at rest. Stays on your machine.
How we confirm team access without ever touching your repository.
Non-invasive securityFor teams that don't require zero-delay response to membership changes, our non-intrusive security model lets us share work alongside your team without requesting access to your code repository.
This means we route diffs between teammates for private repositories without ever holding repo access tokens, OAuth credentials, or read permissions on your git provider.
Note: Teams that need direct access control through their existing identity provider (SSO / AuthNZ) should use the Enterprise plan, which adds strict B2B authentication on top of swarm.
Google Cloud Platform, dual-region in the United States. Cloudflare for DNS and edge.
MongoDB Atlas, hosted in a private VPC with no public internet exposure. Encryption at rest, automated backups, and IP allowlisting on the operator path. Intent code blocks are encrypted client-side before they ever reach the database — even with full DB access, our team cannot read them.
Google Cloud Storage. Encrypted blobs only — we cannot decrypt them.
Our internal processes are designed around SOC 2 controls. We have not yet completed a third-party audit; the report is on the roadmap. We will update this page when certification is in hand.
Team membership is established by continuously confirmed commit SHA matches — not by granting Kawa Code access to your repository.
For teams that need every byte to stay on-prem, the self-managed deployment removes the hosted API entirely.
No. The encryption keys for diffs and code blocks are derived on your machine from inputs we never receive. Even with full database and storage access, our team cannot reconstruct your code.
No. The desktop app reads your local working tree only. The server never has repository access — that's what swarm authentication exists to avoid.
All hosted infrastructure is in the United States.
EU and Japan data residency is on the roadmap; reach out if you need it sooner.
Yes. Deleting your account purges your account record, intent and decision management information, and the encrypted blobs associated with your repositories. See the Privacy Policy for retention details.
Found something? We want to know.
Email
mark@kawacode.ai