---
title: Consent
description: "Internal meetings transcribe by default. Client calls do not. The ruling is Ryan's."
---

# Consent

This page needs a **human ruling**, not a research finding. What follows is the
proposed rule and the mechanism that enforces it.

## Internal meetings

Recording-consent law is jurisdiction-dependent — one-party in some places,
all-party in others. The right move is a house rule, not a statute.

> **Proposed, needs sign-off:** every internal meeting is transcribed by
> default. The Zoom recording disclaimer is on and locked. Anyone can say
> "don't transcribe this one" and the host turns it off.

Zoom's mechanism already exists. The **Recording disclaimer** setting prompts
every participant to consent or leave when recording or transcription starts.
Turn it on account-wide and lock it — see
[Zoom settings](/be-pipeline-meeting-transcripts/zoom-settings). That makes
consent a thing the product does instead of a thing people forget.

**[UNVERIFIED]** Whether that prompt fires for AI-Companion-only meetings, where
there is no recording object, is undocumented. Check the console before relying
on it.

## Client calls are contract, not policy

An MSA or NDA may prohibit recording, require notice, require deletion on
request, or be silent — which is not the same as permission.

```text
  transcripts/internal/2026/08/…            ◀── agents glob this freely
  transcripts/client/acme-corp/2026/08/…    ◀── separate tree, explicit
                                                opt-in per agent
```

| | Internal | Client |
|---|---|---|
| Transcribe by default | yes | **no** — host opts in per meeting |
| Notice on the call | disclaimer prompt | prompt **and** say it out loud |
| Storage prefix | `transcripts/internal/` | `transcripts/client/<slug>/` |
| Agent access | default | only agents pointed at that path |
| `confidentiality` frontmatter | `internal` | `client` |

**The separate tree is the load-bearing part.** A general-purpose agent globbing
`transcripts/internal/**` cannot accidentally read a client call, and "delete
everything for ACME Corp" is one prefix delete.

## Deletion has to actually work

This is why the record lives in S3 and not a git repo. `delete-object` removes a
transcript and its versions. Removing content from git history needs
`filter-repo`, which `CLAUDE.md` forbids without explicit permission. See
[Storage](/be-pipeline-meeting-transcripts/storage).

Deleting our copy is not enough. The Zoom-side copy goes too, from Recording and
Transcript Management. Two places, one request. Write that runbook before the
first client call is transcribed, not after the first deletion request lands.

## The question nobody here can answer

Does a client call transcript in a private S3 bucket satisfy what the MSA says
about where client data lives? Nobody in this repo can answer that. It is
[open](/be-pipeline-meeting-transcripts/open-questions) and it is Ryan's.

Until it is answered, the safe default holds: **client calls are not
transcribed.** The internal pipeline ships without them.
