The engine enforces the rules.
Field-level ACLs, purpose binding, WORM, and bitemporal semantics are enforced by the engine. Field read ACLs and purpose binding apply to Cypher queries sent over HTTP, through the SDK, or through the MCP Cypher tool. Field write ACLs are checked only when a Cypher CREATE creates a node. From 1.4.2 a graph can also carry an access policy by label and relationship type, and a constraint can require that a node of a label has a relationship of a given type (for example a claim to a supporting passage); see Known limitations for what each covers on this release.