What are Permissions?
Permissions define access control rules that determine which users can perform specific actions on collections and items. The permission system in Directus operates through policies that are assigned to roles, with each permission rule specifying allowed actions, fields, and conditional filters.Directus uses a policy-based permission system where permissions are grouped into policies, which are then assigned to roles. Users inherit permissions from their roles.
Permission Structure
A permission defines a single access rule:Permission Actions
From@directus/constants, supported actions are:
create- Create new itemsread- Read/view itemsupdate- Modify existing itemsdelete- Remove itemsshare- Share items (app-specific)
Fields Access
Thefields array controls field-level access:
How Permissions Work
Permission Evaluation
When a user attempts an action, Directus:- Retrieves the user’s role(s)
- Fetches all policies assigned to those roles
- Collects permissions from all policies
- Evaluates permissions for the requested action and collection
- Applies filters and field restrictions
- Returns accessible data
~/workspace/source/api/src/services/permissions.ts:88-97):
Admin Users
Users with
admin: true in their accountability bypass all permission checks and have unrestricted access.Conditional Permissions
Thepermissions field uses filter syntax to conditionally grant access:
Example: User’s Own Items Only
Example: Published Items Only
Example: Multiple Conditions
Dynamic Variables
Permissions support dynamic variables:$CURRENT_USER- Current user’s ID$CURRENT_ROLE- Current user’s role ID$NOW- Current timestamp$CURRENT_POLICIES- Current user’s policy IDs
Validation Rules
Thevalidation field enforces data integrity during create/update:
Presets
Presets automatically apply field values:Creating Permissions
~/workspace/source/api/src/services/permissions.ts:40-46), creating a permission:
- Validates the permission structure
- Saves to
directus_permissionscollection - Clears system cache to apply changes immediately
App Minimal Permissions
From the source code (~/workspace/source/api/src/services/permissions.ts:34-38), Directus automatically adds minimal permissions for the app to function:
Policies and Roles
Permissions are organized through policies:- User has a Role
- Role has multiple Policies (via
directus_access) - Policies contain Permissions
- Reusable permission sets (policies)
- Multiple policies per role
- Flexible permission combinations
Example Structure
Public Role
The public role grants access to unauthenticated requests:System Permissions
Key system collections:- directus_users - Requires special handling for password fields
- directus_roles - Should only be accessible to admins
- directus_permissions - Manages access control itself
- directus_files - Controls asset access
Permission Patterns
Read-Only Access
Full CRUD for Own Items
Department-Based Access
Time-Based Access
Common Use Cases
Content Workflow
Define permissions for draft, review, and published states with role-based approval processes.
Multi-Tenant Systems
Isolate data by organization or client using conditional permissions on tenant ID fields.
Public API
Expose read-only access to published content for public consumption without authentication.
Team Collaboration
Grant department or team-based access to shared resources while maintaining data isolation.
Best Practices
Related Concepts
- Users & Roles - Users and roles that permissions are assigned to
- Collections - Target collections for permission rules
- Items - Data subject to permission filtering