Where purposes come from
Two paths:- Generalize from observation — Inviolet’s
Generalizeworkflow suggests purposes based on observed query patterns. Best for teams with 2+ weeks of observation data. - Manual declaration — write a purpose against a known workflow. Best for greenfield use cases.
Anatomy of a purpose
elementsis the column allowlist. Anything outside this list will be rewritten or blocked at the database proxy.ttl_secondsbounds the lifetime of any intent token minted under this purpose.identity_requiredforces an IdP-authenticated user_id to be present on every call.approval_requiredroutes the call through a Slack / email approval queue before any intent token is minted.
Create the purpose
- App dashboard → Purposes → Compose (new in Phase 18 lifecycle)
- Fill the form fields above
- Save — the purpose is created in shadow mode by default
Run in shadow mode
Shadow mode evaluates the policy on every matching tool call but does NOT block anything. The decision feed shows what would have happened. Watch this for a week or two.Promote to live
Once the shadow stats look right (low false-positive denials, high match-rate on intended traffic), promote with one click: App dashboard → Purposes → pick the purpose → Promote to live Promotion is immediate. The next matching tool call gets a live decision written to the audit log.Read next
- Generalize from observation — the alternate creation path
- Intent tokens — what gets minted on approval