The policy runs in the extraction pipeline, not in the LLM prompt. It cannot be talked around, and its behavior is identical for the same input every time.
How it works
Everyadd goes through the boundary in two stages:
- Source gate — if
allow_sourcesis set, an add is only accepted when itsmetadata.sourceis on the list; an add whose source is indeny_sourcesis skipped entirely (nothing from that add is stored). - Content deny — the enabled category packs and your custom
deny_keywordsare compiled into one lowercased keyword list. Each extracted fact, episode, and procedure is matched case-insensitively; any that contain a denied keyword as a substring are dropped, the rest are kept.
Fields
Built-in category packs
credentials is a belt-and-suspenders layer. Secrets are already redacted on import (client-side) and again server-side in extraction — enabling this pack additionally drops any fact that mentions a credential, not just the secret value.GET /v1/capture-policy under available_categories, so you never have to hardcode it.
Read the current policy
Set the policy
PUT replaces the stored policy. Send only the fields you want; omitted or empty fields are cleared.
400 with the list of valid categories.
Notes
- The policy is per account and applies to every
add, from every SDK, integration, and MCP client. - It affects new captures only — it does not retroactively remove memories stored before the rule existed.
- Dropped items are silently omitted from extraction results; the add still succeeds for anything that passes.
- You can also manage the policy visually from the Capture Policy section of the dashboard.