OConsent Examples
Two end-to-end consent flows: an AI training gate and an agent memory permission, with the records, checks, and audit events involved.
These examples are illustrative and static. They show the shape of the records and decisions, not a live service.
AI training gate
A dataset contains user conversation exports. Before a fine-tuning job uses each asset, the pipeline calls verify() for purpose llm_training.
{
"row_id": "row_0481",
"subject": "user_123",
"asset": "conversation_export"
}{
"id": "rec_7f3a",
"subject": "user_123",
"asset": "conversation_export",
"purpose": "llm_training",
"actor": "model_pipeline_7",
"status": "active"
}{
"subject": "user_123",
"asset": "conversation_export",
"purpose": "llm_training",
"actor": "model_pipeline_7"
}{
"allowed": true,
"decision": "allow",
"reason": "active_consent_record_found",
"consent_record_id": "rec_7f3a",
"audit_event_id": "audit_91ac"
}{
"id": "audit_91ac",
"consent_record_id": "rec_7f3a",
"actor": "model_pipeline_7",
"asset": "conversation_export",
"purpose": "llm_training",
"decision": "allow",
"enforcement_point": "fine_tuning_pipeline"
}Agent memory permission
An AI agent wants to store a user-provided fact in long-term memory. OConsent verifies whether the agent may remember the fact for purpose agent_memory, and the result changes after revocation.
{
"subject": "user_123",
"asset": "user_fact_8842",
"fact": "Prefers vegetarian restaurants"
}{
"id": "rec_4c10",
"subject": "user_123",
"asset": "user_fact_8842",
"purpose": "agent_memory",
"actor": "assistant_agent_2",
"status": "active"
}{
"subject": "user_123",
"asset": "user_fact_8842",
"purpose": "agent_memory",
"actor": "assistant_agent_2"
}{
"allowed": true,
"decision": "allow",
"reason": "active_consent_record_found",
"consent_record_id": "rec_4c10"
}{
"id": "rev_77a2",
"consent_record_id": "rec_4c10",
"subject": "user_123",
"reason": "user_requested_revocation"
}{
"allowed": false,
"decision": "deny",
"reason": "consent_revoked",
"consent_record_id": "rec_4c10"
}See the full model.
These flows use the objects defined in the draft specification. Read the spec or the developer guide to implement them.