Security

Responsible disclosure

We welcome security research conducted in good faith. If you follow the rules below, we won’t pursue legal action against you, and we’ll credit you on our hall of fame (your choice — anonymous or named).

The 5-step version

  1. Email security@meandai.io, encrypted with our PGP key (below).
  2. Tell us what you found, how to reproduce it, and what you think the impact is.
  3. Don’t publicly disclose until we’ve had a chance to fix it.
  4. We’ll acknowledge within 72 hours and aim to fix critical issues within 30 days where possible.
  5. We’ll credit you on our hall of fame — your choice, anonymous or named.

In scope

  • meandai.io, www.meandai.io — public marketing.
  • app.meandai.io — authenticated dashboard.
  • *-production.up.railway.app — meandai-owned API services. Please rate-limit yourself.
  • If you’re unsure whether a target is ours, please ask before testing.

Out of scope

  • Upstream providers — Anthropic, OpenAI, Clerk, Cloudflare, Railway, Neon, Inngest, PostHog, Resend, AWS. Report findings against them to their respective programs. We’ll act on findings affecting our configuration of those services (e.g. an unverified webhook signature) but not on flaws in the providers themselves.
  • DoS / volumetric attacks. Please don’t take us offline. If you spot a resource-exhaustion vector, describe it — don’t exercise it.
  • Social engineering of meandai personnel, customers, or upstream providers.
  • Physical attacks on meandai property, owner residence, etc.
  • Self-XSS, missing security headers without demonstrated impact, missing CAPTCHAs on non-sensitive forms, clickjacking on pages without state-changing actions, and other low-impact findings unless chained into something exploitable.
  • User-uploaded content — PDFs, brand packs, and other tenant-supplied blobs are treated as opaque untrusted data. Findings here should be against our handling of such content (PromptArmor scope), not the content itself.
  • Automated scanner output without manual verification — we will not action raw Acunetix / Burp / Nessus reports. Please verify each finding before submission.

Rules of engagement

  • No data exfiltration. If you can prove access to data you shouldn’t have, stop and document. Don’t read more than is necessary to demonstrate impact, don’t copy data off-platform, don’t share with third parties.
  • No persistent access. If you find a way in, document it and report. Don’t install backdoors, don’t pivot, don’t maintain access.
  • No degradation of service. No DoS, no resource exhaustion, no actions affecting other customers.
  • Responsibly disclose — give us 90 days before any public mention. We may request an extension for hard fixes; if so, we’ll explain why.
  • Don’t hold the report ransom. Threats of disclosure for payment void any safe harbour.

What we commit to

  • Acknowledgement within 72 hours from security@meandai.io.
  • Triage with severity within 7 days. We’ll tell you whether we’re going to fix, downgrade, or risk-accept.
  • Critical fixes within 30 days where possible; high-severity within 7. We’ll keep you in the loop on progress.
  • Credit on the hall of fame with your preferred handle (or anonymous).
  • Safe harbour. Good-faith research that stays within the rules above will not result in legal action under the Computer Fraud and Abuse Act or its non-US equivalents.

PGP key

Encrypt sensitive details with our PGP key. The key fingerprint is published here so you can verify out-of-band before sending anything sensitive.

Fingerprint: AAAA BBBB CCCC DDDD EEEE 1111 2222 3333 4444 5555 (provisional — to be published after Stefan generates the key on a clean YubiKey-attached machine; tracked as Track 0.C kickoff item)

Key download: /.well-known/pgp-key.txt (placeholder until provisioning).

Plain-text email is fine for non-sensitive coordination (acknowledgements, timelines), but please encrypt the actual vulnerability details.

If we’re slow

If we don’t acknowledge within 72 hours, please escalate by emailing the same address with [ESCALATION] in the subject line. Worst-case timing assumes Stefan is unavailable; acknowledgement should still arrive within 5 business days.


Policy version 1.0 — published 2026-05-04. The full engineering version of this policy lives at docs/security/RESPONSIBLE_DISCLOSURE.md in our codebase.