I am looking into rewriting the permissions API. There are some goals to do that I want to know what everyone thinks: Permission inheritance: The current parent-child relationship is ambiguous. Is there a clear way of evaluating permissions that we want to know? Permission predicates: Do we want to have, in addition to permission attachments, "predicate" classes that check the permission dynamically every time? This means the predicate will be executed every time hasPermission() is called. Might have significant performance impact if abused. Permission declaration: Do we want to check if every permission is declared in plugin.yml so that permission plugins can list them? Permission types: In addition to boolean (true/false) permissions, do we want to allow other types, such as integers (i.e. limit the number of blocks placed per hour)? Or do you think this is irrelevant to permissions? And if it is irrelevant, is there a good way we can implement a generic abstraction for these settings such that they can be set through permissions plugin without explicitly depending on one? Permission parameterization: In addition to more permission types, do we want to have permission parameters? For example, in SimpleWarp, instead of registering a permission for every new warp (e.g. simplewarp.warp.shop, simplewarp.warp.spawn, simplewarp.warp.jail, simplewarp.warp.toilet), what about having the simplewarp.warp permission for all of them and parameterize this permission? Note that many of the above suggestions have performance impacts. Permission parameterization, in particular, greatly increases the cost of calling hasPermission(), because the permissions plugin will have to recalculate the parameters every time. Feel free to add more suggestions.