Flagged during v0.5.22 release review (Security / Chaos Gremlin persona).
Up to 5 sample differing rows — including their raw values — appear in data_diff tool output (packages/opencode/src/altimate/tools/data-diff.ts ~L220) and up to 100 in aggregated partitioned diffs (native/connections/data-diff.ts mergeOutcomes). For tables containing PII (email, SSN, credit_card) this:
- Flows into LLM context (shipped to model providers, including Altimate backend)
- Appears in session transcripts / Recap traces on disk
- Is not redacted or gated
Short-term mitigation (shipped in 0.5.22): tool description + permission prompt warns users; recommends algorithm='profile' for PII-bearing tables.
Proper fix (this issue):
- Add
include_sample_rows: boolean param (default false OR default true with a config flag)
- If false, strip
diff_rows[].values before returning, keep counts
- Optional: integrate with
schema.detect_pii (if available) to gate automatically
- Document in the data-parity skill
Deferred because: requires a product policy decision on the default (ship safe vs ship useful) and a compat path for existing skill users.
Flagged during v0.5.22 release review (Security / Chaos Gremlin persona).
Up to 5 sample differing rows — including their raw values — appear in
data_difftool output (packages/opencode/src/altimate/tools/data-diff.ts~L220) and up to 100 in aggregated partitioned diffs (native/connections/data-diff.tsmergeOutcomes). For tables containing PII (email, SSN, credit_card) this:Short-term mitigation (shipped in 0.5.22): tool description + permission prompt warns users; recommends
algorithm='profile'for PII-bearing tables.Proper fix (this issue):
include_sample_rows: booleanparam (default false OR default true with a config flag)diff_rows[].valuesbefore returning, keep countsschema.detect_pii(if available) to gate automaticallyDeferred because: requires a product policy decision on the default (ship safe vs ship useful) and a compat path for existing skill users.