Skip to content

feat(ios): ask for consent before sending audio to AssemblyAI - #227

Merged
he-james merged 1 commit into
ios/org-owned-identifiersfrom
ios/ai-consent
Oct 14, 2026
Merged

he-james merged 1 commit into
ios/org-owned-identifiersfrom
ios/ai-consent

Conversation

@he-james

@he-james he-james commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

What & why

App Review 5.1.2(i) requires disclosing where personal data goes (third-party AI included) and getting explicit permission first. The iPhone app had no such step.

  • Consent sheet before the listening window first opens: names AssemblyAI, lists what's sent (voice while dictating, text before the cursor, recent dictations, key terms with contact names), links the privacy policy.
  • One gate: every path to the mic goes through startListening() (the button, the keyboard's blurt://start, in-app dictation), so it's checked there.
  • Versioned (AIConsent): sending something new means a new version, and users are asked again.
  • Settings › About links the privacy policy. The debug -BlurtStartListening flag grants consent so scripted runs keep working.

Stacked on #226.

How it was tested

  • scripts/ios-check.sh: 134/134 tests (3 new for AIConsent), BlurtiOSCore coverage 96.69%, analyze and periphery clean.

  • Concurrency review of the coordinator change: no issues.

  • Settings verified in the simulator. The sheet appears once a key is saved; worth a tap-through on review.

  • I read AGENTS.md and this doesn't reintroduce anything deliberately removed

  • Docs updated (iOS README, DESIGN.md)

🤖 Generated with Claude Code

App Review 5.1.2(i) requires clearly disclosing where personal data
goes, third-party AI included, and getting explicit permission first.

The listening window now won't open until the user agrees, in a sheet
that names AssemblyAI, lists what is sent (the voice while dictating,
the text before the cursor, recent dictations, key terms with contact
names) and links the privacy policy. Every path to the microphone goes
through startListening(), so one gate covers the button, the keyboard's
blurt://start and in-app dictation. Consent is versioned (AIConsent):
sending something new means a new version, and everyone is asked again.

Settings' About section links the privacy policy too. The debug
-BlurtStartListening flag grants consent, since scripted runs can't tap
through the sheet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@he-james
he-james marked this pull request as ready for review October 2, 2026 22:40
@he-james
he-james merged commit 34846c8 into ios/org-owned-identifiers Oct 14, 2026
1 check passed
@he-james
he-james deleted the ios/ai-consent branch October 14, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants