Skip to content

Privacy Baseline (Pre-Beta)

Generated from the repository source of truth. Source file: /docs/PRIVACY-BASELINE.md.

This document defines the minimum privacy controls expected when adopting aioc before 0.1.0-beta.1.

aioc provides runtime hooks and trace primitives. Storage governance and data lifecycle controls remain application responsibilities.

Latest adoption snapshot: docs/PRIVACY-ADOPTION.md.

This baseline applies to:

  • any use of run(..., { record })
  • any environment where run records may contain business-sensitive or personal data
ControlSDK primitiveSDK defaultRequired application actionVerification
Context minimization before persistencerecord.contextRedactorpass-through (no redaction)redact, hash, or drop sensitive fields from context snapshotsunit test with redacted output + manual record inspection
Prompt text capture controlrecord.includePromptTextfalsekeep disabled unless there is an explicit legal and operational needassert promptSnapshots[*].promptText is undefined by default
Metadata hygienerecord.metadatafree-formenforce metadata allowlist; never write raw secrets, tokens, emails, or full identifierslint/check in adapter layer + sample records audit
Trace storage securityrecord.sink (adapter)noneenforce encryption at rest/in transit and strict access controlsinfra policy review + access test
Retention and deletionsink-side onlynonedefine TTL, archival, and deletion process per data classautomated retention job + deletion test
Access accountabilitysink-side onlynonelog read/write access to stored run recordsaccess audit logs enabled
Tenant boundary separationsink-side onlynoneenforce tenant-scoped partitioning and access filtersintegration test with cross-tenant denial
Replay dataset safetypromptSnapshots, requestFingerprints, itemsavailable when record enabledbuild replay datasets from redacted records onlysampling + replay dry run
await run(agent, input, {
context,
policies,
record: {
includePromptText: false,
contextRedactor: (ctx) => ({
contextSnapshot: {
actor: {
userId: "[redacted]",
groups: ctx.actor.groups,
},
},
contextRedacted: true,
}),
metadata: {
appBuildVersion: process.env.APP_BUILD_VERSION,
scenario: "customer-support",
},
sink: runRecordSink,
},
});

Recommended metadata shape in record.metadata:

  • appBuildVersion: host application build/version identifier
  • scenario: bounded scenario identifier
  • tenantRef (optional): pseudonymous tenant reference
  • traceClass (optional): data classification label (public, internal, restricted)

Avoid storing:

  • access tokens, API keys, raw session identifiers
  • plain email addresses and phone numbers
  • full legal names when a pseudonymous id is sufficient

All items should be true before 0.1.0-beta.1:

  1. contextRedactor is configured in production run-record pipelines.
  2. includePromptText remains disabled by default.
  3. Sink adapters enforce encryption and access controls.
  4. Retention/deletion policy is documented and implemented.
  5. Metadata allowlist and sensitive-field ban are documented.
  6. At least one redaction-focused test exists in CI or release checks.