Security & compliance
Mushi Mushi handles raw bug reports: screenshots, console output, sometimes a user’s email. This page is the one-screen summary for whoever has to sign off on that. Every row links to the page with the mechanism and the evidence.
Short version. Your data is scoped to your project by row-level security, you can run diagnoses on your own model keys and keep screenshots in your own bucket, old reports are hard-deleted on your plan’s schedule, and the controls are checked by cron, not by promise. Mushi Mushi is not SOC 2 certified. It collects evidence toward SOC 2; see the last row.
Posture at a glance
| Control | What it means for you | Status | Details |
|---|---|---|---|
| Data residency | Pick a region (US, EU or JP) at project creation | All hosted data is in one Tokyo (ap-northeast-1) project today, whatever region you pick. Dedicated US and EU clusters are planned, not live | Data residency |
| Bring-your-own-key (BYOK) | Diagnoses run against your Anthropic / OpenAI / OpenRouter account. Keys are stored in Vault, never shown back in plaintext, and nothing is billed to Mushi Mushi’s provider account | Live | BYOK |
| BYO storage | Screenshots and crash dumps pinned to your own S3 / R2 / GCS / MinIO bucket; URLs signed server-side | Live | BYO storage |
| Retention sweep | Reports older than your plan window (Free 14 d · Builder 90 d · Studio 180 d · Enterprise custom) or your per-project policy are hard-deleted daily; legal holds are skipped | Live, daily | SOC 2 → retention |
| Tenant isolation | Row-level security is enabled on the public tables, and policies scope rows to the projects you own or belong to ((SELECT auth.uid())) | Live | No client data leakage |
| Nightly RLS coverage check | mushi_rls_coverage_snapshot() lists every public table and whether RLS is enabled; the soc2-evidence job records the result as control CC6.1 | Live, nightly | SOC 2 → automated controls |
| Prompt-injection defence | The diagnosis runs in two stages so the main model never reads raw report text; text sent to the fix and review agents passes sanitizeForLLM(); screenshots go to an image-only call; an OWASP LLM01-style corpus runs in CI | Live | Prompt-injection defence |
| Encryption | TLS in transit; Supabase disk encryption at rest; model and storage keys in Supabase Vault. Report columns are not encrypted separately | Live | SOC 2 readiness |
| Audit log | audit_logs records admin write actions per project, under RLS | Live | SOC 2 readiness |
| DSAR tracking | File and track data-subject requests per project in Compliance → DSARs. The row is the audit trail; you fulfil the request yourself | Live | SOC 2 → DSAR |
| SOC 2 | Readiness, not certification. A nightly job writes evidence snapshots for five controls (RLS, retention, audit-log volume, DSAR lag, availability) that an auditor could start from. No third-party audit has been performed | Evidence collection live · certification not started | SOC 2 readiness |
Operational transparency
- Status page: updown.io/p/b6lod — live availability and history for the API, hosted MCP, console, and docs. What is monitored and what we do and do not promise are on Status & uptime.
- Open source: the server that enforces all of the above is public under AGPLv3, so the policies, the cron jobs, and the tests can be read rather than trusted.
- Sub-processors, retention table, and your rights: on the Privacy Policy.
Report a vulnerability
Please do not open a public issue. Use either channel:
- GitHub private vulnerability reporting (preferred): github.com/kensaurus/mushi-mushi/security/advisories/new
- Email: kensaurus@gmail.com, subject
prefix
[mushi-security]
Acknowledgement within 2 days, triage within 7, and a fix for critical and high findings within 30. The full timeline, safe-harbor terms, and what to include are in SECURITY.md .
What we do not claim
- No SOC 2 Type 1 or Type 2 report exists yet.
- Dedicated US and EU clusters are not live; all hosted rows sit in Tokyo today, whatever region a project picked.
- No cross-region attestation runs yet, and report columns are not encrypted beyond Supabase’s disk encryption.
- No uptime SLA on any self-serve plan.
- Prompt-injection defences reduce risk; they do not make model output safe to merge unreviewed. Keep the fix agent on draft PRs.
The deeper pages: BYOK · Data residency · BYO storage · SOC 2 readiness · Prompt-injection defence · No client data leakage