Gate checks each request against written rules in Cedar before it reaches your systems. The first two rules are the lane's grants and the third is the tipping-off control. The denial reads the same whether a case exists or not, so it tells the agent nothing. Routine contact carries on as it would for any customer, so a sudden silence cannot tip the customer off either. Each audit line names the policy version that decided it, so an examiner can replay last year's access against the rules as they stood that day.
// The structuring lane reads core banking, risk ratings and registries,
// and reads and drafts the cases of its own typology.
permit (principal in Lane::"structuring", action == Action::"read", resource in Sources::"structuring");
permit (principal in Lane::"structuring", action in [Action::"read", Action::"draft"], resource in Cases::"structuring");
// Agents that write to customers never read a case.
forbid (principal in Group::"customer-contact", action, resource is Case);