Redaction vault
Regulated tenants — healthcare, fintech, government — need to retain call transcripts for quality review without storing the PHI/PII values those transcripts contain. The redaction vault produces that copy: when a call’s transcript finalizes, Orbit runs a deterministic pattern-matching engine over it, replaces regulated values with sentinel markers, and stores the result as aredaction_vault artifact on the call record, together with a typed audit of exactly what was removed. Read this page before you build a QA export that must not carry PHI/PCI.
What the vault is
The vault is a write-time compliance copy pipeline. It runs after a call’s transcript finalizes, as one of the post-finalize side channels on the recording lifecycle. Two properties make it trustworthy for an audit:- Deterministic, not probabilistic. The engine is fixed pattern matching — the same redaction primitive Orbit uses everywhere PII is stripped — not an LLM judgment. The same transcript always yields the same redacted copy, and every removed span is counted and typed.
- Opt-in per tenant. The vault runs only when you enable it under Compliance → Recording redaction vault in your organization settings (
settings.compliance.recording_redaction_vault.enabled). A settings read failure fails closed: the vault stays disabled rather than risking an incomplete copy.
The artifact contract
The vault persists its result atredaction_vault on the call record’s metadata:
Two deliberate design choices to rely on:
- The raw transcript is untouched. The vault adds a copy; it never edits or replaces the original
transcripton the call record. Deleting the raw values is a destructive retention-policy decision, and it belongs to the retention pipeline (recording.retention_deleted— see the recording lifecycle), not to an additive redaction step. - The audit never carries what it removed. Counts and categories are typed; the redacted values themselves never appear in the artifact, the logs, or the webhook payload. The raw transcript remains the only place the original values exist.
Where it sits in the lifecycle
The vault fires after the recording and transcript finalize — it does not block any of them. It sits in the post-finalize side channels row of the recording lifecycle event table, alongside QC (recording.qc_failed), auto-chaptering (recording.chapters.ready), and the retention pre-notification (recording.retention_deleted). Like those, it never changes the recording’s lifecycle state; it reacts to the finished artifact. The capture path itself is the call recording pipeline.
What to branch on
Subscribe torecording.redaction_vault.ready to know when a call’s redacted copy exists:
call_idis the join key — read the artifact off the call record’sredaction_vaultmetadata after this event arrives.total_redactionsandby_categoryare counts and categories only; treat a nonzero total as “a sanitized copy exists,” never as a list of values.audio_redaction_segmentsis the muting map for playback exports: mute or beep each listed millisecond range before the audio leaves your control. An empty list means no timing data was available — the redacted transcript still stands, but the raw audio needs your own handling.compliance_topicstells you which regulatory surface the audit touched; route recordings taggedpcito your cardholder-data process andpiito your general identifier process.
Scoping by category
Enable the vault and it redacts every category by default. You can narrow it — a healthcare reviewer might bleep SSNs and emails while keeping phone numbers from the sanitized copy, for example — by setting a category list under the same vault settings:
Unknown entries are dropped, and a policy that resolves to nothing valid falls back to redacting everything — a malformed stored policy can never leave regulated values in the compliance copy. The artifact’s
audit.policy_categories records the exact scope each copy was produced under.
Tenant posture, stated precisely
The vault is a tenant-owned control, not a compliance guarantee. Enabling it gives you a deterministic, auditable sanitized copy of each call transcript; it does not by itself satisfy HIPAA, PCI-DSS, GDPR, or any other framework — what those frameworks require of your organization is your determination, and Orbit does not make it for you. Decide which categories to redact, when to export the redacted copy, and whether and when the raw transcript and audio are purged (retention). Orbit provides the control; the posture is yours. One distinction matters when you design the posture: the redaction vault is persisted-copy redaction — it seals a sanitized transcript on the call record at write time. It is separate from the LLM-prompt redaction gate (settings.privacy.pii_redaction_in_llm), which strips PII only from text sent into AI processing. The two are independent gates: one protects what the platform stores for you, the other protects what flows to a model. A HIPAA or PCI posture usually wants both, and neither implies the other.
Common pitfalls
- Exporting the raw transcript for QA. The redacted copy exists precisely so reviewers never need the raw one. Point QA exports at
redaction_vault.transcript_redacted, and keep raw-transcript access behind your own role gate. - Treating the vault as deletion. The artifact is additive — the raw transcript survives until your retention policy purges it. If your posture requires the raw copy to disappear, schedule that through retention, not through this vault.
- Playing back raw audio to reviewers. The audio segment list is the deterministic half of audio masking: mute or beep the listed ranges on the playback surface before reviewers hear it. Until you do, the redacted transcript and the playable audio tell two different stories.
- Assuming the event without enabling the control.
recording.redaction_vault.readyfires only when the vault is opted in. If you subscribed but never enabled the setting, no artifacts and no events appear — check the compliance settings first. - Enabling the vault and expecting historical calls to copy. The vault runs at write time, when a transcript finalizes. It seals copies for calls recorded after you enable it; it does not retroactively process your archive.