Skip to main content

Privacy Policy

Last updated: October 3, 2026

1. Who We Are

CodeRifts is operated by Péter Zsób (sole proprietor), based in Budapest, Hungary. For privacy inquiries, contact: security@coderifts.com

2. Data We Collect

When you install and use the CodeRifts GitHub App, we process:

  • Configured specification files (Core Diff) from the base and head of a pull request. If none are configured, discovery reads OpenAPI-named files instead. When files are configured, the same discovery may also read OpenAPI-named files that are not in the list, to notice them. Opt-in MigraGuard reads migration files and application source references when a pull request changes a migration file. Opt-in ActionGuard reads workflow YAML when a pull request changes a workflow file. Those file reads are in memory and the file content is not persisted
  • Repository metadata (repository ID, installation ID, organization name)
  • Pull Request metadata (PR number, branch names, commit SHAs)
  • GitHub user identifiers associated with the installation

When you visit coderifts.com, we may collect:

  • Standard web analytics data via Google Analytics (page views, country, browser type, device info)
  • Email address if you voluntarily subscribe to our newsletter

We may also collect contact data from third-party sources (such as Apollo.io or similar data enrichment tools) for outreach purposes. This may include:

  • Name and email address
  • Job title and company name
  • Location (city, country)

You may opt out of outreach communications at any time by replying to any email or contacting security@coderifts.com.

When you use the CLI or REST API:

  • OpenAPI schema content submitted for analysis
  • Issued API keys are stored as salted SHA-256 hashes (prefix + hash + salt; never plaintext) until the key is revoked or deletion is completed. That store is authentication data at rest. It is not a session cookie. Schema bodies submitted for analysis are processed in memory and are not the key store

3. Data We Do NOT Collect

  • Repository and branch identifiers are stored; spec content is not. Core Diff reads configured specification files, and opt-in MigraGuard/ActionGuard read migration files, application source references and workflow YAML, in memory only; none of that file content is persisted
  • Personal data of your end users
  • Plaintext API keys, GitHub App private keys in the customer database, or your secrets. Hashed API keys are stored — see Data Retention
  • Payment information (no billing during beta)

4. How We Use Your Data

  • Comparing configured specification files between the base and head of a pull request, and the opt-in migration, source-reference, and workflow reads
  • Calculating risk scores and generating governance reports
  • Posting Pull Request comments with analysis results
  • Updating GitHub Check status (pass/fail)
  • Improving service reliability (operational logs)
  • Sending newsletter emails (only if you subscribed)

Schema content is processed in memory and is not stored persistently after the analysis is complete.

5. Data Retention

  • API key hashes: retained until the key is revoked or a deletion request is completed. The prefix is kept so a key can be identified without storing plaintext.
  • Schema content read for a pull request: Not retained after processing. Processed in memory only. A schema posted to the registration route is a different store, named in section 7.
  • Migration files, application source references, and workflow YAML: Not retained after processing. Processed in memory only.
  • Usage logs (request metadata): Retained for 90 days, then deleted automatically. IP addresses are stored only as truncated SHA-256 hashes — never in raw form; user agents are truncated.
  • Newsletter email addresses: Retained until you unsubscribe.
  • GitHub installation metadata: Retained while the app is installed. Deleted upon uninstall.

6. Data Sharing

We do not sell, rent, or share your data with third parties for marketing purposes. Your data may be processed by the following service providers (sub-processors) solely for operating the CodeRifts service:

  • Railway (app.railway.com) — Application hosting. The region is an operational fact. This page will not name US or EU until a console or API readout is dated on the Trust Center.
  • Cloudflare (cloudflare.com) — DNS, CDN, and web analytics
  • GitHub (github.com) — Platform integration and webhook delivery
  • Buttondown (buttondown.email) — Email newsletter delivery
  • Google Analytics (analytics.google.com) — Website usage analytics (property ID: G-KD3EFYTDS1)

7. Security

  • All communication is encrypted via HTTPS/TLS
  • Webhook payloads are verified using HMAC SHA-256 signature validation
  • GitHub App authentication uses JWT (RS256) with a private key
  • File content read for a pull request by Core Diff, MigraGuard, or ActionGuard is not written to disk or stored in a database. The analysis row keeps the repository, pull request, commit, branch, scores, and breaking-change path and field, not the file body. A caller who posts a tool schema to /api/v1/registry/tool-schemas has that schema stored. That store is not one of these file reads. A stored schema has no retention period and no deletion path.

8. Your Rights (GDPR)

If you are located in the European Economic Area (EEA) or United Kingdom, you have the following rights under GDPR:

  • Right of access: Request a copy of the personal data we hold about you
  • Right to rectification: Request correction of inaccurate or incomplete data
  • Right to restriction of processing: Request that we limit how we use your data while a concern is being resolved
  • Right to erasure: Request deletion of your personal data when it is no longer necessary for the purposes for which it was collected
  • Right to data portability: Request your data in a structured, commonly used, machine-readable format and transmit it to another controller
  • Right to withdraw consent: Where processing is based on consent (e.g., newsletter subscription), you may withdraw consent at any time without affecting the lawfulness of processing carried out before withdrawal

Our legal basis for processing is legitimate interest (providing the service you installed). For newsletter emails and outreach communications, the legal basis is consent. You also have the right to lodge a complaint with a supervisory authority if you believe your rights have been infringed.

To exercise any of these rights, contact: security@coderifts.com. We will respond within 30 days.

9. Data Deletion

Uninstalling the CodeRifts GitHub App automatically removes all associated installation data. To request deletion of any remaining data (e.g., operational logs, newsletter subscription), contact: security@coderifts.com

10. Cookies

The coderifts.com website uses cookies and similar technologies. These fall into three categories:

  • Essential / Session cookies — Required for the service to function correctly. These include session identifiers and security tokens used during authentication. They cannot be disabled without breaking core functionality.
  • Functionality cookies — Remember user preferences such as theme settings and dismissed banners. These improve your experience but are not strictly necessary for the service to operate.
  • Tracking and Performance cookies — Third-party analytics cookies set by Google Analytics (property ID: G-KD3EFYTDS1) to help us understand how visitors use the site. These cookies collect anonymized usage data including page views, session duration, traffic sources, and device information. You can opt out of Google Analytics by installing the Google Analytics Opt-out Browser Add-on.

We do not use advertising pixels or remarketing tools.

11. Children’s Privacy

Our service is not directed at anyone under the age of 16, and we do not knowingly collect personal data from minors. If we become aware that we have inadvertently collected personal data from a person under 16, we will take steps to delete that information as promptly as possible. If you believe that a minor has provided us with personal data, please contact us at security@coderifts.com.

12. GitHub repository files

When you connect your GitHub repositories to CodeRifts (via the GitHub App, GitHub Actions, or any other integration), we process the following data solely to provide the service:

  • Repository files — Core Diff reads the configured specification files from the base and head of a pull request. If none are configured, discovery reads OpenAPI-named files instead, and when files are configured the same discovery may also read OpenAPI-named files that are not in the list. Opt-in MigraGuard reads migration files and application source references when a pull request changes a migration file. Opt-in ActionGuard reads workflow YAML when a pull request changes a workflow file. openapi.yaml and swagger.json are read when they are the configured specification files. They are not the whole read.
  • Webhook event data — We receive webhook payloads from GitHub containing pull request metadata (PR number, branch names, commit SHAs, repository identifiers) to trigger and contextualize the analysis.

We do not store or use that file content for any purpose other than analysis within the user’s own account. That file content is processed in memory and discarded after the analysis completes. We do not train models on your data, share that file content with third parties, or retain it beyond the processing window.

The Claude Code plugin (api-governance)

Read 2026-10-04 from the api-governance 1.2.5 README, section What this plugin sends, and where.

The mod checks a Write, Edit or MultiEdit of a contract file with one POST to https://app.coderifts.com/api/v1/preflight. The request carries the file's whole before and after text and its type (openapi, graphql, grpc, asyncapi or mcp_manifest). The file is named only by the fixed id api; its path is not sent. When the api_key option is set, the request is preflight_mode=authorize, with your key in the Authorization header and the fixed context operation=merge, environment=staging; otherwise it is preflight_mode=analyze with no key. It also carries the header X-CodeRifts-Source: claude_marketplace, which tells CodeRifts the call came from this plugin; it identifies the plugin, not you. To decide whether a call touches a contract, it reads .coderifts.yml on every Write, Edit, MultiEdit and Bash call, the file being edited, and, for a Bash command, the names of the files under the directories the command can write (not their contents). A Bash command's text is read on your machine and never sent. It sends no other file, no prompt and no transcript, and it contacts no other host.

Since api-governance 1.2.7 (tag v1.2.7, 2026-10-06 12:49 UTC), an MCP client configuration is never a contract file, and the mod does not read it or send it. Since api-governance 1.2.9 (tag v1.2.9, tagger 2026-10-09 16:22 UTC, commit 437e397ea67980d015f75b5a4a1952bc6aa0d6d0), .mcp.json, .cursor/mcp.json, .vscode/mcp.json, claude_desktop_config.json and (cline_)mcp_settings.json are client configurations and are never read. Any other mcp.json is read where it is, on your machine, and decided by its content: mcpServers or servers and no tools is a client configuration, counted as no file, and never sent; anything else is a contract (a tools key, an object without a server list, or a parsed value that is not an object); both at once, or text that does not parse, is not read into a contract and is not sent. The mod asks. The gate and the App give a decided red with one sentence. That reaches an install only after the plugin is updated.

That POST is preflight_mode=authorize with your key in the Authorization header when the api_key option is set, and preflight_mode=analyze with no key otherwise.

It reads .coderifts.yml and the file being edited on your machine to build that request.

The MCP server coderifts is https://app.coderifts.com/mcp. What you or Claude pass to its tools is sent there.

The skill sends nothing by itself.

From the Your API key section of that same README: the key is stored in your platform's secure credential store, not in settings.json.

Read 2026-10-03 in coderifts-app src/db/persist-decision.js at commit 45d24c5: the decisions table stores the decision envelope and not the POST body.

The envelope keeps the decision, the hashes, the timestamp, and the evidence list of breaks.

The file text is not in that envelope.

When an authorize result carries authorized paths, decision_authorized_paths stores the path, the after hash, and the change type, and not the file text.

This plugin's POST with no key sets preflight_mode=analyze.

That response carries no decision envelope, so the decisions table does not get a row from it.

The analysis_attempts row for the call keeps the artifact type, the outcome, and a hashed subject, and it does not keep the file text.

The sweep in src/db/retention.js deletes decisions, decision_authorized_paths, and analysis_attempts rows older than 90 days.

The trust center says that 90 days is what the sweep does today, not a commitment about tomorrow.

A live row's age was not measured on 2026-10-03.

An authorize answer of REQUIRE_APPROVAL can open an approval case that keeps a pending state, the operation, the target, the environment, and a fingerprint, and not the file text.

That case row is not on the 90-day sweep, so how long it is kept is not measured.

This plugin's POST does not send an idempotency key.

A different caller that sends one can have the response cached for 24 hours, and that response artifact does not carry the before and after text.

13. Changes to This Policy

We may update this Privacy Policy from time to time. Material changes will be posted on this page with an updated “Last updated” date. Continued use of the service after changes constitutes acceptance.

14. Contact

For privacy-related inquiries: