#2934

docs(legal): terms and privacy policy require 18+ and cover child safety reporting

OpenDanielButler1wants to merge intofrom

This PR updates the Terms of Service and Privacy Policy so users must be 18 or over, child sexual abuse material (CSAM) is explicitly prohibited, and both documents say how we detect, preserve and report it. It's the legal groundwork for CSAM screening: matching images against known-CSAM lists, even in log-only mode, creates a duty to report, so the terms need to say this before any screening starts.

What changed

Terms of Service (both pages' "last updated" dates are now 29 October 2026):

  • §2 Eligibility: the minimum age goes from 13 (under-18s with a parent's permission) to 18.
  • §4.3 Content moderation: we still don't monitor content generally, but we may use automated tools, including hash-matching against known CSAM.
  • §4.3 Child safety (new paragraph): zero tolerance. We remove the material, suspend the accounts involved without notice or refund, preserve related information we hold, and report to NCMEC, the Internet Watch Foundation or the National Crime Agency. This applies despite content handling, I/O logging and zero data retention promises. "Information we hold" covers zero data retention requests, where we never store content.
  • §5 Prohibited use: a new first item covers uploading, generating, requesting, storing or distributing CSAM or content that sexualises minors, and building tools that produce it.

Privacy Policy:

  • §3 Legal bases: a new purpose, detecting, preventing and reporting CSAM. Lawful basis: legal obligations and legitimate interests.
  • §4 Sharing: a new item for child-safety reports to NCMEC, the IWF, the NCA or other law enforcement.
  • §6 Retention: information preserved because of apparent CSAM is kept securely for up to a year, or longer where the law requires. This matches the US one-year preservation period.
  • §8 Children: the service is for adults 18 and over only.

Why

  • Phaseo accepts and returns images, and stores some (avatars, I/O logs). Providers such as Anthropic report CSAM matches against the account that sent them, which on managed traffic is ours.
  • The old terms didn't mention CSAM and said we don't monitor content. That would conflict with the hash-matching we're adding.
  • Allowing 13–17-year-olds risked bringing the UK Online Safety Act's children's safety duties into play for a developer API with almost no teenage users.

How

  • Text is changed in all 9 full locales (en-GB, de-DE, fr-FR, es-ES, pt-BR, ar-SA, hi, ja, zh-Hans). en-US has no legal overrides, so it uses en-GB. The edits were made by one script so every locale gets the same structural change. The translations are mine and haven't been reviewed by a native speaker. There's no "the English version prevails" clause, so a lawyer may want to add one.
  • The only new key is termsBody.childSafety, rendered under §4.3. The other additions are list items rendered with .map. Nothing reads these lists by index.

Before and after

BeforeAfter
Minimum age (terms + privacy)13, or under 18 with a guardian's permission18
CSAM mentionednowhereprohibited use, child-safety paragraph, legal basis, sharing, retention
Monitoring"We are not required to monitor User Content"no general monitoring; automated hash-matching allowed
Reporting and preservationnot mentionedNCMEC / IWF / NCA; preserve for up to one year

Verification

  • With main's apps/web and apps/docs plus these changes, every step of pnpm run validate:i18n passes: localisation validation, the message-scope self-test, client scopes, and the docs search check.
  • All 9 locale files round-trip through JSON unchanged before editing, so the diff contains only the intended keys (+135 / −27).
  • Not run locally: next build and the page render. They're left to CI and the Vercel preview.

Not legal advice

These are being published now, ahead of the screening work. A lawyer should still review them afterwards. Open points: whether the UK Online Safety Act applies to us, whether to add an English-prevails clause, and whether the age change needs notice to existing users.

Model: Claude Opus 5.5 (effort unknown) · Harness: Claude Code in T3 Code

🤖 Generated with Claude Code

Activity

6
vercel[bot]1d ago

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated
phaseo ReadyPreviewOct 29, 2026 5:10pm UTC

coderabbitai[bot]1d ago

WARNING

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 9 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5cbf17e1-5f5c-4684-ba46-b2c689a08c45
Commits

Reviewing files that changed from the base of the PR and between e8401f91c22182834b15ab3ac00afa7c9705a013 and 90bda4b308bbb1dc1a99a3360ca320ae1ffc30a0.

Files selected for processing: 12
  • .changeset/terms-child-safety-18-plus.md
  • apps/web/messages/ar-SA/site.json
  • apps/web/messages/de-DE/site.json
  • apps/web/messages/en-GB/site.json
  • apps/web/messages/es-ES/site.json
  • apps/web/messages/fr-FR/site.json
  • apps/web/messages/hi/site.json
  • apps/web/messages/ja/site.json
  • apps/web/messages/pt-BR/site.json
  • apps/web/messages/zh-Hans/site.json
  • apps/web/src/app/[locale]/(legal)/privacy/page.tsx
  • apps/web/src/app/[locale]/(legal)/terms/page.tsx
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

chatgpt-codex-connector[bot]1d ago

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code Review✅ Completed 2026-10-29T17:08:45.492615Z90bda4bPR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

github-actions[bot]1d ago

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None