Skip to Content
v1.33.6 · shipped One-screen report · Looks like your app Read the changelog →
Admin consoleCompliance
PASS / WARN pills with inline JSON evidence · · open live demo ↗

Compliance

Route: /team?view=compliance (Team → Compliance; the old /compliance address redirects there)

Compliance needs the soc2 entitlement, which only the Enterprise plan includes. Without it the Team tab is hidden, and opening the address shows which plan includes it.

Scenario 1: A customer asks how you handle security before signing. You want to show the current control status and retention settings in one place, and export the audit log as a CSV (Team → Audit), without a meeting. Mushi Mushi is not SOC 2 certified; it collects evidence toward it.

Scenario 2: A user emails saying they want all their data deleted (GDPR Article 17). You need to log the request, track its status, and respond within 30 days.

The Compliance view in Mushi Mushi handles both in the console. It has five tabs: Overview, Evidence, Retention, DSARs and Residency.


On the Overview tab, filter chips focus the page:

ChipShows
AllEvery section: controls, DSARs, retention, residency
OpenFailing or warning controls, plus pending and in-progress DSARs
FailingFailing controls, plus open DSARs 21 days old or older
At riskControls with warnings
Legal holdProjects on legal hold; retention sweeps are paused

The snapshot strip shows Controls (passing out of total), Open DSARs, Legal holds and the Cluster region.


SOC 2 control evidence

The evidence table shows a snapshot of your control state across SOC 2 trust service criteria. Each row is a control that the soc2-evidence edge function assesses automatically.

StatusMeaning
PASS ✓Control is satisfied — evidence is clean
WARN ⚠Control is partially satisfied — needs attention
FAIL ✗Control is violated — action required before audit

The table shows Control, Label, Project, Status and Generated. The payload button on a row opens the raw JSON evidence that was used to compute the status.

To generate a fresh snapshot: click Refresh evidence. This triggers the soc2-evidence edge function which re-assesses all controls against the current state.

To export for an auditor: click Export PDF. It opens the browser’s print dialog for the page, so you can save it as a PDF.


Data residency

Each project can be pinned to a region: us, eu, jp or self.

Pinning records the region; it does not move data today. Mushi Mushi cloud runs on a single Supabase project, and the regional hostnames are reserved for future routing, so every region currently resolves to the same API. Once pinned, a project cannot be re-pinned from the console (the API answers 409); moving regions means contacting support.


Retention policies

Control how long Mushi Mushi keeps different data categories for each project. A project with no custom policy shows Set a custom policy.

CategoryDefaultWhen to change
Reports365 daysShorten if you have GDPR delete obligations; lengthen for longer-term trend analysis
Audit log730 daysKeep at 730 (2 years) for SOC 2 CC7.2; shorten only if legally required
LLM traces90 daysShorten for cost (storage); lengthen if you need longer A/B test history
BYOK audit365 daysKeep at 365 for key rotation audit trails

Place on legal hold / Lift legal hold: suspends automated deletion for a project. Use it when you receive a litigation hold notice.

Changing a value opens a confirmation that says what the nightly sweep will delete; the change saves when you confirm.


Data Subject Access Requests (DSAR)

Use this section to manage requests from users exercising their rights under GDPR, CCPA, or similar regulations.

Filing a DSAR

  1. On the DSARs tab, choose the Request type: Access, Export, Deletion or Rectification.
  2. Enter the Subject email, and the Subject user ID (optional) if you have it.
  3. Add Notes (optional) with any context from the user’s email.
  4. Click File DSAR.

The request appears in the DSAR table with status pending.

DSAR workflow

StatusActionWhen
pendingStart triageSoon after receipt
in_progressCompleteWhen data export/deletion is done
in_progressReject…Only with a valid legal basis; you must give a Rejection reason

Age turns amber at 21 days and shows overdue at 30 days for an open request. Open requests 21 days old or older also appear under the Failing chip.


Common tasks

Preparing for a SOC 2 audit

  1. Open the Failing filter and resolve every failing control first.
  2. Switch to At risk and plan remediation for controls with warnings.
  3. Click Refresh evidence to get a fresh snapshot.
  4. Click Export PDF and share with your auditor.

Responding to a deletion request (GDPR Article 17)

  1. Choose Deletion, enter the subject email, then File DSAR.
  2. Click Start triage.
  3. Delete the user’s data. Filing a DSAR does not delete anything by itself; your backend can call POST /v1/sdk/erase-subject for that end user.
  4. Click Complete once deletion is done.
  5. The DSAR row stays as your compliance record.

Checking a project’s recorded region

  1. Open the Residency tab.
  2. Find the project and its pinned region. Remember that pinning is a record today, not a separate data location (see Data residency).

API

GET /v1/admin/compliance/stats GET /v1/admin/compliance/evidence POST /v1/admin/compliance/evidence/refresh GET /v1/admin/compliance/retention PUT /v1/admin/compliance/retention/:projectId { reports_retention_days, audit_retention_days, llm_traces_retention_days, byok_audit_retention_days, legal_hold, legal_hold_reason } GET /v1/admin/compliance/dsars POST /v1/admin/compliance/dsars { projectId, request_type, subject_email, subject_id, notes } PATCH /v1/admin/compliance/dsars/:id { status, rejection_reason, evidence_url, notes } GET /v1/admin/residency PUT /v1/admin/residency/:projectId { region }

Last updated on