OrgPulse

Salesforce permission set expiration dates: a guide

Permission set and permission set group assignments can carry an expiration date. At 11:59 PM in the chosen time zone the user keeps the assignment but loses its permissions, and Salesforce sends no warning. List what is about to expire with SOQL, and remember expired rows are hidden unless you ask for them.

Checked against Salesforce documentation on 11 October 2026.

What happens at expiry

The user stays assigned but “can't access the permissions”. Anything the same permissions get from a profile or another set that does not expire still applies, so expiry only removes access granted by that one assignment. Expired assignments are soft-deleted: ordinary SOQL does not return them.

Set an expiry date

  1. Turn on “Permission Set & Permission Set Group Assignments with Expiration Dates” in User Management Settings.
  2. Open the permission set or group, Manage Assignments, Add Assignment, choose the users.
  3. Specify the expiration date (for example 30 days, or a custom date) and the time zone, then Assign.

Through the API, set PermissionSetAssignment.ExpirationDate (API 52.0 or later). Assignments never expire unless you set a date.

List upcoming expirations

SELECT Assignee.Name, PermissionSet.Name,
       PermissionSetGroup.DeveloperName, ExpirationDate
FROM PermissionSetAssignment
WHERE ExpirationDate = NEXT_N_DAYS:30

To audit what already expired, add ALL ROWS. A report on a custom report type for Permission Set Assignments works too, but covers custom permission sets and groups only.

Limits

  • A set or group that contains Assign Permission Sets, Manage Profiles and Permission Sets, or Manage Users cannot have an expiration date.
  • The feature arrived in beta in Summer '21, became generally available in Summer '22 and was enforced as a release update in Winter '23.

Common mistakes

  1. Choosing My Local Time Zone, which expires the assignment at 11:59 PM in the admin's time zone, not the user's.
  2. Expecting expiry to remove access that a profile or another set also grants.
  3. Auditing with plain SOQL, which hides expired rows.
  4. Relying on the report for standard permission sets, which it excludes.

Or let OrgPulse watch it

OrgPulse checks your org every day and alerts you by email or Slack before these dates arrive. It only reads your org, and the first org is free.

Sources

  1. Considerations for permission set assignment expiration
  2. Assign permission sets and groups with expiration dates
  3. Report on custom permission set and group assignments
  4. Winter '23 release notes, PDF
  5. Object Reference (PermissionSetAssignment), PDF