Originally created by: adityaharishch
Background
--use-pii-removal is already enabled in the screenpipe launchd plist and covers inline regex-based scrubbing at capture time (credit cards, SSNs, emails, phones, IPs, JWT tokens, API keys for Anthropic/OpenAI/Google/HuggingFace/GitHub/Stripe, connection strings with embedded passwords).
What this issue tracks
Add --async-pii-redaction to the screenpipe launch arguments as a belt-and-braces second pass. This background worker runs after capture and overwrites already-stored PII in ocr_text, audio_transcriptions, and ui_events columns — catching anything the regex pass missed.
Decisions needed before implementing
- Backend choice:
--pii-backend local (on-device ONNX, private by construction, slower on weak hardware) vs --pii-backend tinfoil (screenpipe-hosted confidential-compute enclave on H200, fast, requires network)
- Redaction labels: default is
secret only — consider expanding to email,phone,person,address depending on user privacy requirements
- Image PII (
--async-image-pii-redaction): blacks out PII regions in captured JPGs — requires rfdetr_v11.onnx at ~/.screenpipe/models/ and a screenpipe build with an onnx-* cargo feature; not available in the current npm build
Implementation
- Add
--async-pii-redaction --pii-backend <chosen> to the ProgramArguments in scripts/install-screenpipe-daemon.sh (the plist template)
- Optionally add
--pii-redaction-labels <labels> to expand beyond the secret default
- Update
meridian doctor to surface a warning if the async worker flag is absent (nice-to-have)