Record who authorized what, when, and under what scope as a first-class provenance event. The EAA graph becomes a machine-readable consent ledger.
Legal Context
GDPR Art. 6: Processing of personal data requires a lawful basis — consent is one of the six. The consent must be informed, specific, freely given, and withdrawable. GDPR Art. 7: Controllers must demonstrate that consent was given. The provenance graph provides this audit trail. EU AI Act Art. 9: High-risk AI systems must have human oversight mechanisms.ext:authorization@1.0.0 records human approval of AI decisions.
CCPA / US state laws: Opt-in/opt-out signals for data processing must be recorded and honored.
The Pattern
Every authorization event is an action in the EAA graph. The actor (who granted access), the scope (what was authorized), and the target (what resource or capability) are all recorded.Recording Authorization
Referencing Authorization in AI Actions
When an authorized action is later performed, reference the consent CID:What Gets Recorded
Checking Authorization Before Processing
Consent Withdrawal
Record withdrawal as a new action that supersedes the original consent:Human Approval of AI Decisions
For supervised AI workflows where a human must approve each AI output before it becomes canonical:Querying the Consent Chain
GDPR Compliance Summary
| GDPR Requirement | How ProvenanceKit Records It |
|---|---|
| Art. 7(1): Demonstrate consent was given | Consent CID in provenance graph; entity who granted it; timestamp |
| Art. 7(3): Consent withdrawal | Withdrawal action with withdrawsCid back-reference |
| Art. 13/14: Inform data subjects | purpose field in ext:authorization@1.0.0 |
| Art. 17: Right to erasure | Record deletion action; consent withdrawal first |
| Art. 9: High-risk AI human oversight | Human verify action approving AI output before publishing |
Gotchas
- Authorization check is app responsibility: ProvenanceKit records the authorization event — it doesn’t enforce it. Your API middleware must check for valid, unexpired, unrevoked consent before processing.
- Withdrawal graph walk: To check if consent is still valid, you must walk the graph forward from the consent CID and check for withdrawal actions. A simple CID lookup is not sufficient.
- Scope granularity: Design scope strings carefully.
["ai:generate"]is specific;["*"]is too broad to be meaningful for audit purposes. - Consent versioning: If your consent terms change, use
consentVersionin the extension and re-collect consent. Old consent records remain in the graph as historical evidence.