Two weeks later, dozens of custom roles existed. Each was slightly different. Nobody could say exactly who had access to what. Engineers slowed down. Product updates became risky. Security audits turned into all-nighters. This is the silent creep of large-scale role explosion. And it starts with ad hoc access control.
Ad hoc access control happens when permissions are assigned case by case without a scalable model. It feels fast at first. You add a user, tweak their rights, create a role just for them, move on. But systems grow. People change teams. Products add features. Soon, role definitions multiply in tangled ways. The access map becomes impossible to reason about.
At small scale, role explosion is invisible. At medium scale, it’s annoying. At large scale, it’s a threat. Development slows. Onboarding new staff takes longer. Debugging permission issues steals engineering time. Security posture weakens because no one trusts the role list. Compliance checks fail because mapping actual access to policy is guesswork.
The root problem is relying on custom exceptions and layered patches instead of a clear, maintainable access control strategy. Letting “just this once” happen dozens of times creates brittle systems that collapse under the weight of their own complexity.