Published:
Nov 2, 2026
|
Last updated:
Nov 2, 2026
|
20
min read

3 Ways to Create Custom Permission Levels in SharePoint

Christian Buckley
Christian Buckley, a 16-time Microsoft MVP focused on SharePoint, Teams and Copilot for Microsoft 365, is an author, podcaster, Microsoft Regional Director and MGCI Regional Lead. He is known for practical guidance on AI adoption, governance and collaboration strategy.

SharePoint’s built-in permission levels work for most teams, but they can be too broad or too limited for specific business requirements. Custom permission levels let admins define exactly what users can do, such as edit content without deleting it or approve documents without managing site settings. This guide explains when custom roles make sense, when they create unnecessary complexity, and how to create them using three main approaches: the SharePoint interface, PnP PowerShell, or developer-led methods such as CSOM and the SharePoint REST API.

Executive summary

Custom permission levels help when SharePoint’s built-in roles cannot support a repeatable access requirement without granting excessive privileges. They should not compensate for poor site architecture, temporary exceptions, or unclear ownership. Define the business need first, copy the closest built-in level, change only the permissions that create risk, and assign the result through an appropriate group. Use the web interface for isolated changes, PnP PowerShell for repeatable deployment, and CSOM or REST for applications and provisioning. Long-term success depends on documentation, realistic testing, regular access reviews, and visibility into assignments, broken inheritance, and sharing links. CoreView can help teams identify and remediate those risks.

How to Create SharePoint Custom Permission Levels: UI, PowerShell, and APIs

A SharePoint custom permission level is a reusable collection of permissions that defines what users are allowed to do. It is useful when the built-in permission levels grant either too much or too little access for a clearly defined, repeatable business requirement.

  1. SharePoint web interface: Best for one-time changes, individual site collections, testing, and administrators who do not need automation.
  2. PnP PowerShell: Best for repeatable administration, standardization, and deployment across multiple site collections.
  3. CSOM or SharePoint REST API: Best for custom applications, provisioning systems, deployment pipelines, and integrations.
Core design principle
Permission levels define what users can do. Groups define who receives the permissions. Permission inheritance defines where the permissions apply.
Note
Custom permission levels are not a tenant-wide setting. They must be created and managed in the relevant SharePoint site context, and repeated consistently if the same role is needed across multiple site collections. This is one reason automation becomes important in larger environments.
How to break an access requirement into three questions before making a change.

What is a SharePoint custom permission level?

Before getting into the configuration options, it helps to be clear about what a custom permission level does, and what it does not do.

The easiest way to understand custom permission levels is to separate three questions: What can someone do? Who receives that access? And where does it apply? In SharePoint, permission levels, groups, and inheritance answer those questions separately.

A SharePoint custom permission level is a user-defined collection of individual permissions that controls what an assigned user or group can do.

  • Permission levels define the actions users can perform.
  • Groups organize the users who receive those permissions.
  • Inheritance determines where assignments apply within a site, library, folder, or item.

SharePoint’s standard permission levels include Read, Contribute, Edit, Design, and Full Control. A custom permission level is appropriate when those standard combinations do not meet a specific business requirement. For example, an organization might need contributors to upload and edit controlled documents while preventing them from deleting those documents or their version histories.

A custom level could include It could deliberately exclude
View, add, edit, and open items Delete items and versions
View pages and versions Manage permissions
Browse user information Manage the site

‍

A custom permission level does not grant access by itself. After creating it, an administrator must assign it to a user or, preferably, a SharePoint group at the appropriate scope. Creating the level also does not break permission inheritance. Creation, assignment, and inheritance are separate decisions.

Permissions Hierarchy

The difference between custom permission levels and unique permissions

This distinction is one of the most frequently misunderstood aspects of SharePoint security.

Over the years, I've reviewed environments where administrators created dozens of custom permission levels when the real requirement involved inheritance. I've also seen the opposite: inheritance broken repeatedly when the organization actually needed a different permission definition.

Understanding the difference between "what users can do" and "where they can do it" is fundamental to building a manageable access model.

A custom permission level defines what actions users can perform. Unique permissions determine where a permission assignment applies when an object no longer inherits its assignments from its parent.

If users need to edit documents but must not delete them, the requirement concerns user capabilities and may justify a custom permission level. If a confidential library must be accessible only to a legal team, the requirement concerns the location or scope of the assignment and may require a separate library or intentionally broken inheritance.

When to create a custom permission level in SharePoint

In my experience, organizations often arrive at custom permission levels only after discovering that one of SharePoint's built-in roles grants either too much or too little access.

That's not necessarily a problem. The key question is whether the requirement represents a legitimate and repeatable business need or simply a one-off exception.

Create a custom permission level when SharePoint’s built-in levels do not support a clearly defined, long-term business requirement without granting unnecessary capabilities. A custom permission level is usually worth considering when:

  • A standard permission level grants more access than users need.
  • A standard permission level lacks one or more required capabilities.
  • The requirement is about what users are allowed to do, not simply which users need access.
  • The same permission combination will be assigned repeatedly.
  • The requirement supports an established business or compliance process.
  • The organization can document, test, own, and periodically review the customization.

A decision framework for custom permission levels

When a request for a new permission level comes in, I try to slow things down and ask a few governance questions first.

Creating the role takes a few minutes. Supporting it for the next three years is the real commitment. Before I recommend a custom permission level, I work through the following questions to make sure we are solving the right problem rather than adding another exception that someone will need to untangle later.

  • Does an existing permission level already meet the requirement?
  • Can the requirement be addressed by changing SharePoint group membership?
  • Is the issue about where access applies rather than what users can do?
  • Is the requirement temporary or long-term?
  • Will the same definition be used in more than one location?
  • Who owns and maintains the business requirement?
  • Can another administrator understand its purpose from the name and documentation?
  • Has the combination been tested with a non-administrator account?
Decide whether you need a custom level, or whether another approach would solve the problem.

When not to create a custom permission level

Some of the best permission decisions involve not creating a new permission level at all.

As a consultant and administrator, I've seen environments accumulate dozens of custom roles over time. Most were created with good intentions. Unfortunately, many existed because administrators attempted to solve governance, architecture, or ownership problems with increasingly granular permissions.

Before introducing another custom definition, consider whether one of the following situations applies.

Do not create a custom permission level when the underlying requirement can be addressed more simply through groups, existing permission levels, inheritance, sharing controls, or improved site architecture.

The requirement is about membership

If Marketing, Human Resources, contractors, or a regional team need access, use an approved group-based access method and assign an existing permission level.

Access is temporary

Use an existing group and establish a process for reviewing and removing membership when the engagement ends.

The requirement concerns a location

If the requirement is to isolate sensitive content, first evaluate the site and information architecture. A separate site or library may produce a cleaner boundary.

The site architecture is the real problem

Custom permission levels should not compensate for mixed sensitive and general content, inconsistent ownership, unclear architecture, or excessive folder-level exceptions.

The proposed role mirrors a job title

Permission levels should describe reusable capabilities or business functions, not reporting structures or job titles.

The organization is trying to fix governance with more permissions

Establish ownership, document roles, review memberships and direct assignments, standardize patterns, and retire obsolete configurations before adding more roles.

How to create a custom permission level using the SharePoint web interface

For many administrators, the SharePoint interface remains the best starting point for creating custom permission levels.

Even when automation is the end goal, I like to build and test the permission level manually first. Seeing the individual permissions in the interface makes it much easier to spot an assumption or missing dependency before that configuration is repeated through PowerShell or code.

The SharePoint web interface is the most approachable method. It is best suited to one-time changes, testing, training, and configuration within a small number of site collections.

Step 1: Define the business requirement

Example scenario: A business team needs to collaborate on documents, but compliance policies require that only records managers can permanently delete content.

Before clicking through the settings interface, define exactly which actions should be allowed and which should be prohibited. Document all permitted and restricted actions, then identify the built-in permission level that most closely matches the requirement.

I suggest capturing the requirement in a short permission-design record before changing the site. At a minimum, specify:

  • Who needs the access and which SharePoint group should receive the permission level.
  • Where the access should apply, such as the site, library, list, folder, or item, and whether inheritance should remain intact.
  • Which actions users must be able to complete, including viewing, adding, editing, approving, managing metadata, or working with versions.
  • Which actions must be blocked, such as deleting items or versions, managing permissions, changing site settings, or accessing content outside the approved scope.
  • Which built-in permission level is the closest starting point and exactly which permissions must be added or removed.
  • Who owns and approves the requirement, how it will be tested with a non-administrator account, and when the role should be reviewed or retired.

This written baseline prevents the configuration from becoming a collection of unchecked boxes. It also gives administrators a clear standard for validating the custom level before assigning it broadly.

Step 2: Open advanced permission settings

Permission levels are managed from the Permission Levels page reached through Advanced permissions settings, rather than from the simplified sharing panel. This page manages the reusable role definitions available within the site collection, keeping creation of a permission level separate from granting or changing access for users and groups.

From the target site, select Settings, Site permissions, Advanced permissions settings, and then Permission Levels.

Site Permissions

Step 3: Review existing permission levels

Pause before creating anything new and compare the available definitions with the approved requirement from Step 1. Reusing an existing level avoids unnecessary duplication and reduces the number of custom roles administrators must support over time.

Look for a built-in level or existing custom level that already meets the requirement and identify redundant definitions.

Permission Levels

Step 4: Copy the closest existing permission level

Starting from the closest existing level preserves the supporting permissions that make common SharePoint tasks work. The goal is to make the smallest approved change rather than rebuild a complex permission set from scratch.

Open the closest level, select Copy Permission Level, provide a new name and description, and change only the approved permissions.

Editing Permissions Level
Copying Existing Permissions

Step 5: Use a descriptive name

The name should communicate the capability being granted or withheld so another administrator can understand the role without opening its configuration. Avoid department names, project codes, or temporary labels that may lose meaning as the organization changes.

Prefer names such as Contribute Without Delete, Content Approver, Records Coordinator, or Metadata Manager.

Naming New Permissions

Step 6: Add a meaningful description

A strong description records why the role exists and the boundary it is designed to enforce. This context becomes essential during access reviews, troubleshooting, and decisions about whether the role should be retained or retired.

Record the business purpose, such as allowing approved contributors to edit content without deleting items or versions.

Step 7: Select required permissions

Translate the approved actions from Step 1 into the smallest practical set of SharePoint permissions. Review each change against the level you copied, because removing a supporting permission can prevent otherwise approved tasks from working.

Retain required list and supporting site permissions, while excluding prohibited actions. Account for permission dependencies.

Note
Some SharePoint permissions depend on supporting permissions. If a custom level removes too much, users may lose the ability to open pages, browse user information, use remote APIs, or interact with documents in ways that are not obvious from the permission name alone. Always test with a standard user account before assigning the role broadly.
Modifying New Permissions

Step 8: Create the permission level

Treat creation as a controlled checkpoint rather than the end of the process. Review the final name, description, and selected permissions against the approved design before saving the reusable definition.

Verify the name, description, and least-privilege design, select Create, and confirm it appears in the list.

Step 9: Assign the level to a group

The new permission level does not grant access until it is assigned to a principal at the appropriate scope. Using a SharePoint group keeps the permission definition separate from user membership and makes future access reviews and staff changes easier to manage.

Defining a role does not itself grant anyone access.

For a group-connected team site, first determine whether membership should continue to be managed through the associated Microsoft 365 group. Assigning a custom permission level through a separate SharePoint group can be appropriate for a distinct role, but it creates an additional access path that administrators must document and review.

Granting New Permissions

Assign the custom level to a SharePoint group rather than directly to individual users whenever possible.

Assign Permissions to SharePoint Group

Step 10: Test with a non-administrator account

Test the custom permission level with a non-administrator account that receives access only through the intended group. Confirm that required actions succeed, including opening the site, viewing pages, browsing libraries, opening documents, editing content, updating metadata, and completing approvals. Then confirm that prohibited actions fail, including deleting items or versions, changing permissions, managing the site, and accessing content outside the approved scope. Use the same browser and device experience expected in production, document the results, and retain the test account or script for future reviews.

If testing reveals missing dependencies or unintended access, remove the custom role assignment from the test group before changing the permission level. Record the failed scenario, compare the role with the built-in level it was copied from, restore only the supporting permissions required for the approved task, and repeat the full positive and negative test cycle before approving the role for production use.

How to create SharePoint custom permission levels with PowerShell

Manual setup works well until the same permission level needs to appear in a second, fifth, or fiftieth site collection.

That is usually the point where I move the configuration into PowerShell so the definition can be repeated, reviewed, and kept under change control.

PnP PowerShell is the practical choice for that administrator-led work, especially when consistency matters across multiple site collections.

  • Create the same approved role across multiple site collections
  • Automate site provisioning
  • Standardize access models
  • Include permission changes in administrative change control
  • Verify and document configurations through scripts

Prerequisites

Before running the examples, make sure the administrative environment and authentication approach are ready for testing.

  • Install a supported version of PowerShell and the PnP PowerShell module.
  • Use an approved authentication method.
  • Ensure the identity or application has sufficient access.
  • Test scripts in a non-production environment.

Install and connect

Start by confirming that the PnP PowerShell module is available and that you can connect successfully to the target site. This basic validation separates authentication or environment problems from errors in the permission-level commands that follow.

Interactive authentication also requires a Microsoft Entra ID application registration and its client ID. Register or use an approved tenant application with the minimum permissions needed, then supply that client ID through the connection command or the supported PnP PowerShell environment-variable configuration.

Install-Module PnP.PowerShell -Scope CurrentUser
Get-Module PnP.PowerShell -ListAvailable

Connect-PnPOnline `
    -Url "https://contoso.sharepoint.com/sites/ProjectSite" `
    -Interactive

Get-PnPWeb

Review existing definitions

Before creating another role, inspect the permission definitions already available in the site. This check helps prevent duplicate or overlapping roles and gives you a baseline for naming and documenting the new definition consistently.

Get-PnPRoleDefinition |
Select-Object Name, Description

Create a custom level by cloning Contribute

Cloning the closest built-in permission level is generally safer than assembling a role from an empty permission set. It preserves the supporting permissions users need while allowing you to remove the specific capabilities that conflict with the approved business requirement.

Add-PnPRoleDefinition `
    -RoleName "Contribute Without Delete" `
    -Description "Allows users to add and edit content without deleting items or versions." `
    -Clone "Contribute" `
    -Exclude DeleteListItems, DeleteVersions

Verify and assign the permission level

Creating the role is only the first part of the process. Verify that the definition exists as expected, and then assign it to the intended SharePoint group so membership and permissions remain separate and easier to govern.

Get-PnPRoleDefinition -Identity "Contribute Without Delete"

Set-PnPGroupPermissions `
    -Identity "Project Members" `
    -AddRole "Contribute Without Delete"

Use an idempotent deployment pattern

A repeatable deployment should be safe to run more than once without creating duplicate permission levels or producing an avoidable failure. An idempotent pattern checks the current state first and creates the role only when it does not already exist.

$roleName = "Contribute Without Delete"
$existingRole = Get-PnPRoleDefinition | Where-Object { $_.Name -eq $roleName }

if ($null -eq $existingRole) {
    Add-PnPRoleDefinition `
        -RoleName $roleName `
        -Description "Allows users to add and edit content without deleting items or versions." `
        -Clone "Contribute" `
        -Exclude DeleteListItems, DeleteVersions
}
else {
    Write-Host "Permission level already exists: $roleName"
}
Production deployment gate
Before deploying the script in production, add structured logging and error handling, use an approved non-interactive authentication method where appropriate, run the script against a test site, confirm the resulting role definition and assignments, and route the change through the organization’s normal approval and rollback process.

How to create custom permission levels with SharePoint REST API or CSOM

PowerShell is usually enough for administrator-led automation. Once permissions become part of an application, provisioning engine, or integration, however, the conversation shifts to CSOM or REST.

At that point, the design is less about an administrator repeating a task and more about an application applying the same security model reliably.

The SharePoint REST API and Client-Side Object Model, commonly called CSOM, are developer-focused approaches for creating and assigning custom role definitions. They fit applications, provisioning systems, deployment pipelines, SPFx solutions, Azure-hosted integrations, and broader workflows.

Separate role definitions from role assignments

With developer-focused approaches, it helps to treat the permission definition and its eventual assignment as two separate operations.

  • Create or retrieve the role definition.
  • Identify the target principal, such as a SharePoint group.
  • Determine the assignment scope, such as a site, list, library, folder, or item.
  • Create the role assignment on that securable object.

Creating a custom permission level with CSOM

CSOM represents permissions through named PermissionKind values, which makes the intended capabilities easier to review than an unexplained numeric mask. The example first assembles the approved BasePermissions collection and then uses it to create the reusable role definition.

dotnet add package Microsoft.SharePointOnline.CSOM

This example illustrates how to assemble a permission set with named values; it is not a complete programmatic clone of Contribute. Before using it in production, compare the resulting BasePermissions collection with the source permission level and add every supporting permission required by the approved user experience.

using Microsoft.SharePoint.Client;

BasePermissions permissions = new BasePermissions();
permissions.Set(PermissionKind.ViewListItems);
permissions.Set(PermissionKind.AddListItems);
permissions.Set(PermissionKind.EditListItems);
permissions.Set(PermissionKind.OpenItems);
permissions.Set(PermissionKind.ViewVersions);
permissions.Set(PermissionKind.ViewPages);
permissions.Set(PermissionKind.Open);
permissions.Set(PermissionKind.BrowseUserInfo);
permissions.Set(PermissionKind.UseRemoteAPIs);

// DeleteListItems and DeleteVersions are intentionally omitted.

RoleDefinitionCreationInformation roleInfo =
    new RoleDefinitionCreationInformation
{
    Name = "Contribute Without Delete",
    Description = "Allows users to add and edit content without deleting items or versions.",
    BasePermissions = permissions,
    Order = 500
};

RoleDefinition newRole = context.Web.RoleDefinitions.Add(roleInfo);
context.Load(newRole);
context.ExecuteQuery();

Assign the role to a SharePoint group with CSOM

After creating the role definition, retrieve both the target SharePoint group and the custom role by name. The binding collection connects those two objects, while the role assignment applies that relationship at the selected site scope.

Group targetGroup = context.Web.SiteGroups.GetByName("Project Members");
RoleDefinition customRole = context.Web.RoleDefinitions.GetByName("Contribute Without Delete");
RoleDefinitionBindingCollection bindings = new RoleDefinitionBindingCollection(context);
bindings.Add(customRole);
context.Web.RoleAssignments.Add(targetGroup, bindings);
context.ExecuteQuery();

Retrieving and assigning role definitions with REST

With REST, retrieve the available role definitions first so the application can resolve and validate the correct role definition ID. The assignment request shown here combines that ID with the target group ID and creates the role assignment on the site represented by the web endpoint. Assigning the role to a list, library, folder, or item requires calling the role-assignment endpoint for that securable object and managing inheritance separately.

GET https://contoso.sharepoint.com/sites/ProjectSite/_api/web/roledefinitions?$select=Id,Name,Description,RoleTypeKind
Accept: application/json;odata=nometadata
Authorization: Bearer {access-token}

POST https://contoso.sharepoint.com/sites/ProjectSite/_api/web/roleassignments/addroleassignment(principalid={group-id},roledefid={role-definition-id})
Accept: application/json;odata=nometadata
Authorization: Bearer {access-token}

A REST request that creates a role definition must include a validated base-permission mask. Do not copy an unexplained numeric mask into production.

Unlike the assignment request shown above, creating a role definition through REST requires a BasePermissions payload that represents the approved permission set. Because that payload is expressed as permission masks rather than a readable list of named permissions, generate and validate it from a known configuration, document how it was produced, and test it in a non-production site before using it in an automated deployment.

Inheritance warning
Do not make breaking inheritance an automatic side effect of provisioning. Confirm the approved security boundary, whether existing assignments should be copied, and how the exception will be reviewed.

How to choose the right method

No single creation method is objectively better than the others.

The best choice depends on who is performing the work, how often it needs to happen, and whether the permission level becomes part of a broader provisioning or governance process.

When clients ask which method to use, the deciding factor is rarely a SharePoint limitation. It is usually whether the organization needs a one-time configuration, a repeatable administrative process, or a permission model embedded in an application or provisioning workflow.

Requirement Recommended method Why
Create a permission level once SharePoint web interface Fastest option with no scripting
Test a new permission model SharePoint web interface Easy to inspect interactively
Repeat the same definition across sites PnP PowerShell Supports consistency and automation
Include the role in provisioning PnP PowerShell or CSOM Depends on administrator-led or application-led provisioning
Build a strongly typed .NET solution CSOM Uses named permission values and SharePoint objects
Integrate with an HTTP-based application SharePoint REST API Fits solutions already calling SharePoint through HTTP
Assign an existing role by ID SharePoint REST API Direct fit for programmatic assignments

‍

Simple selection rule
Do this once: use the web interface. Repeat it as an administrator: use PnP PowerShell. Embed it in an application or integration: use CSOM or REST.
Select a method based on who is doing the work and how often it needs to be repeated.

Best practices for setting custom permission levels

A custom permission level is straightforward to create. The harder part is making sure someone can still explain, test, and govern it a year from now.

These are the habits I see in SharePoint environments where custom roles remain understandable and manageable over time.

Follow least privilege

Include only the permissions required for the approved business function, and revisit that decision when the function or assigned group changes.

Start with the closest built-in level

Copy or clone the closest built-in level, then make only the targeted changes required. This retains supporting permissions, reduces unexpected behavior, and gives you a familiar baseline for testing.

Manage membership through groups

For communication sites and other sites managed through SharePoint groups, assign custom levels to a group rather than directly to individuals. For group-connected team sites, keep standard owners and members in the associated Microsoft 365 group, and create a separate SharePoint group only for a documented role the standard membership model cannot support.

Use meaningful names

Name the role for the capability it grants or restricts, not for a department, person, or temporary project. A future administrator should understand its purpose without opening the permission definition.

Document why it exists

Record the business purpose, owner, approval, permissions changed, intended groups and sites, test results, review date, and retirement criteria. Keep that record with the deployment script or governance documentation so another administrator can find it.

Standardize repeated definitions

Use one approved permission definition, description, test plan, and deployment process across site collections. Treat local variations as documented exceptions rather than creating nearly identical roles.

Test positive and negative scenarios

Use a non-administrator account that receives access only through the intended group. Confirm that required actions succeed, restricted actions fail, and the result matches the browser and device experience users will have in production.

Review regularly

Confirm that the role is still necessary, assigned to the right groups, and applied at the intended scope. Consolidate or retire it when the original requirement no longer exists.

Keep role creation separate from inheritance

Decide where the role should apply separately from defining what the role allows. Break inheritance only when the approved security boundary requires a unique assignment, and document that exception for future review.

Creating a permission level is the beginning of an ongoing governance process

Use cases for SharePoint custom permission levels

Most organizations do not need dozens of custom permission levels.

In fact, I recommend limiting customization to a small number of clearly defined business functions. The following scenarios tend to justify custom roles because they support repeatable operational requirements.

  • Allow users to edit but not delete content. Users can upload files, edit documents, update metadata, and view version history while Delete Items and Delete Versions are withheld. Example: a controlled procedures library where process owners maintain current documents, but a records or compliance team controls deletion. Test the exact permission combination because SharePoint permissions have dependencies, and use retention controls when content must be preserved independently of user permissions.
  • Support content approval. A custom level can include Approve Items while withholding broader rights such as Manage Permissions or site administration. Example: a policy library in which subject-matter experts submit drafts and a designated approver accepts or rejects them. Content approval or the relevant approval feature must also be enabled on the list or library; the permission level alone does not create an approval process.
  • Delegate limited administration. A custom level can grant selected management capabilities, such as Manage Lists, without granting Full Control or Manage Permissions. Example: a departmental data steward who maintains columns, views, content types, or settings for a specific list or library while central administrators retain site-wide security and configuration control. Assign the role at the intended scope and test carefully because management permissions can enable more than day-to-day content editing.
  • Support a documented compliance process. A custom role can reduce high-risk user actions, such as deleting items or versions, while preserving the capabilities required for an approved workflow. Example: contributors update regulated operating procedures, but only records managers can remove content. Permission levels support least privilege, but they do not replace Microsoft Purview retention, records management, auditing, or other controls required to preserve content and enforce policy.
  • Create reusable functional roles. Roles such as Records Coordinator, Content Approver, Department Publisher, Metadata Manager, Compliance Reviewer, or Knowledge Manager can standardize a stable set of capabilities. Example: every policy library within a site collection uses the same Content Approver role for designated reviewers. Permission levels are defined within a site collection, so organizations that need the same role in multiple site collections should deploy and govern an equivalent definition consistently.
  • Support controlled self-service publishing. A custom role can let designated authors create and edit content in the Site Pages library without giving them permission to manage site security or broader site settings. Example: regional communicators draft local news and pages while a central communications team approves publication. Page approval, publishing configuration, and restrictions on creating modern pages are separate controls and should be configured and tested alongside the permission level.

Common mistakes that make custom permission levels difficult to manage

Custom permission levels usually become difficult to manage because of a familiar set of mistakes. Administrators create a custom role when group membership would solve the problem, break inheritance at the folder or item level without review, assign custom levels directly to individuals, name roles after departments instead of capabilities, deploy inconsistent definitions across sites, test only with administrator accounts, or leave roles in place after the original business need has disappeared.

A new permission level often feels like a quick win: the setup is fast, users get what they need, and everyone moves on.

The trouble surfaces later, when the next administrator finds a collection of overlapping roles with thin documentation and no obvious owner.

I have reviewed environments where no one could explain why many of the custom permission levels still existed. The roles continued to work, but the people, projects, and exceptions that originally justified them were long gone. When that happens, customization has outpaced governance.

Creating a custom permission level may take only a few minutes. Supporting it can become a long-term responsibility. Every custom role adds an object that administrators must understand, document, deploy, test, troubleshoot, audit, review, update, and retire.

  • Nobody remembers why a permission level was created.
  • Several levels have nearly identical names.
  • Administrators cannot explain the differences between roles.
  • Users receive custom levels through direct assignments.
  • Custom roles are deployed differently across site collections.
  • Testing is performed only with administrator accounts.
  • No owner or review schedule is documented.
  • More roles are created whenever an access problem appears.

The most sustainable SharePoint permission model is usually not the most granular one. It is the simplest model that meets approved business, security, and compliance requirements. Start with built-in levels, use groups for membership, preserve inheritance where practical, and customize only when a defined requirement cannot be met another way.

How CoreView helps manage custom permission levels

Custom permission levels are easy to create, but harder to govern once they spread across sites, libraries, folders, and files. CoreView helps manage what happens after those roles are created: where they are used, whether access is still appropriate, and how quickly risky permissions can be reviewed and remediated.

CoreView Control for SharePoint gives teams tenant-wide visibility into SharePoint access risk, including file- and folder-level permissions that are difficult to manage through native tools alone. This helps administrators spot where custom permission levels may be combined with risky sharing links, direct user assignments, broken inheritance, or non-inherited permissions that undermine the intended access model.

CoreView also helps organizations move from reporting to action. Teams can identify risky access patterns, assign ownership, trigger reviews, and remediate issues such as excessive sharing or direct access grants from within the platform. Every action is tracked, giving IT and compliance teams clearer evidence of who had access, what changed, and how issues were resolved.

For larger environments, CoreView also supports delegated SharePoint governance. Site owners or scoped admins can review the areas they are responsible for without needing broad tenant-wide privileges, while central IT keeps oversight through dashboards and reporting. This makes it easier to manage custom permission levels at scale without turning every access issue into a central IT ticket.

In practice, CoreView complements the creation methods covered in this article. SharePoint, PowerShell, CSOM, and REST help you create custom permission levels. CoreView helps you govern them over time by surfacing risk, supporting reviews, simplifying remediation, and producing audit-ready evidence across the tenant.

Take control of SharePoint access risk

See how CoreView helps your team find risky permissions, review access, and remediate issues across your tenant.
Explore CoreView Control for SharePoint

FAQs

What is a custom permission level in SharePoint?

A custom permission level is a reusable set of SharePoint permissions that defines what users can do, such as view, add, edit, approve, or delete content. It does not grant access by itself; you still need to assign it to a user or, preferably, a SharePoint group.

When should I create a custom permission level in SharePoint?

Create a custom permission level when the built-in options, such as Read, Contribute, Edit, or Full Control, give users either too much or too little access for a repeatable business requirement. For example, you may need users to edit documents but prevent them from deleting files or versions.

What is the difference between custom permission levels and unique permissions?

Custom permission levels define what users can do. Unique permissions define where those permissions apply after inheritance is broken. If users need different capabilities, consider a custom permission level. If a specific library, folder, or item needs different access, the issue is probably inheritance or scope.

What is the best way to create custom permission levels in SharePoint?

Use the SharePoint web interface for one-time changes or testing. Use PnP PowerShell when you need repeatable deployment across multiple sites. Use CSOM or the SharePoint REST API when custom permission levels need to be built into applications, provisioning workflows, or integrations.

Should custom permission levels be assigned directly to users?

In most cases, no. Direct assignments are harder to review, troubleshoot, document, and remove when people change roles or leave the organization. Use the associated Microsoft 365 group for standard membership on a group-connected team site; where a distinct custom role is required, assign it through a documented SharePoint group rather than directly to individual users.

How do I manage custom permission levels across many SharePoint sites?

Start with a small number of approved custom roles, document why each one exists, deploy them consistently, and review their assignments regularly. Tools such as CoreView can help by showing where SharePoint access risk exists, surfacing file- and folder-level permission issues, supporting remediation, and producing audit-ready evidence across the tenant.

Other related blogs

Continue exploring the wider SharePoint permissions model.

Get a personalized demo today

Created by M365 experts, for M365 experts.