Custom Permissions are admin-defined permission flags that you can grant via Profiles or Permission Sets and check in Apex / Validation Rules / Flow / Visualforce. They let you build feature gates without inventing custom "is enabled" checkbox fields per user.
- Open Setup → Custom Permissions
Setup gear → Quick Find: Custom Permissions → Custom Permissions.
- Click New
Top-right.
- Set Label, Name, Description
Label is the admin-facing name; Name is the API used in code.
- Tick Protected Component if applicable
Same as Custom Labels — ISV protection toggle.
- Save
Permission is created. By itself it does nothing — it has to be granted.
- Open a Profile or Permission Set → Custom Permissions section → Add
Grant the permission to the right population.
- Reference from code or admin tools
Apex: FeatureManagement.checkPermission('MyPermission'). Validation Rule: $Permission.MyPermission. Flow: $Permission.MyPermission. Visualforce: $Permission.MyPermission.
Custom Permissions can require other Custom Permissions — a dependency tree. Useful for tiered features ("Advanced" requires "Basic").
Either path works; modern best practice is Permission Set.
Apex (FeatureManagement.checkPermission), Validation Rules ($Permission.X), Flow ($Permission.X), Visualforce ($Permission.X).
- Custom Permissions are a flag, not a value. They're true or false per user — no parameters. For configurable values per user, use Custom Settings instead.
- Granting a Custom Permission via Profile is the same as via Permission Set — but modern best practice is to use Permission Sets so granting is composable.
- Permission Sets that include Custom Permissions but reference renamed permissions break at runtime. The renamed permission resolves to null — check the Permission Set after a rename to confirm references.