When you try to assign a Microsoft 365 Copilot license to a guest user in your tenant, the assignment often fails silently or returns an error. This happens because guest user accounts have identity and licensing restrictions that prevent Copilot from being assigned through standard methods. The root cause involves how Azure AD B2B collaboration handles service plans and license dependencies. This article explains why this restriction exists and provides the exact steps to resolve the issue.
Key Takeaways: Fixing Copilot License Assignment for Guest Users
- Microsoft 365 admin center > Users > Active users > Guest user > Licenses and apps: The primary UI where assignment fails for guest accounts due to missing service plan dependencies.
- Azure AD B2B collaboration user type: Guest users have a UserType of Guest, which blocks direct Copilot license assignment in most tenants.
- PowerShell cmdlet Set-MgUserLicense: The only reliable method to assign a Copilot license to a guest user by bypassing the UI restrictions.
Why Copilot License Assignment Fails for Guest Users
Microsoft 365 Copilot requires a specific set of dependent service plans that are not automatically enabled for guest user accounts. When you attempt to assign a Copilot license through the Microsoft 365 admin center, the system checks the user’s UserType property. Guest users have a UserType of Guest, which triggers a validation rule that blocks the assignment of licenses with certain service plan dependencies. This is a deliberate design to prevent guest users from consuming services that are intended for full members of the organization.
The technical root cause is that Copilot relies on the Exchange Online and Microsoft Graph service plans. Guest users in Azure AD B2B collaboration are provisioned with a limited set of service plans by default. When you try to add Copilot, the licensing engine sees that the required dependent plans are either missing or disabled for the guest user type. The admin center UI does not provide a way to override this check. The only workaround is to use Microsoft Graph PowerShell to assign the license programmatically.
License Dependency Chain
Copilot for Microsoft 365 depends on the following service plans being active on the user account:
- Exchange Online (Plan 2) or Exchange Online (Plan 1) with specific add-ons
- Microsoft Teams
- Microsoft Graph API access
- SharePoint Online (Plan 2) for file grounding
Guest users often have only a subset of these plans. The licensing assignment fails because the system cannot activate the required dependencies for a guest account.
Steps to Assign a Copilot License to a Guest User Using PowerShell
The only reliable fix is to use the Microsoft Graph PowerShell module. You will assign the Copilot license directly to the guest user object, bypassing the admin center UI restrictions.
- Install the Microsoft Graph PowerShell module
Open Windows PowerShell as an administrator. Run the commandInstall-Module Microsoft.Graph -Scope CurrentUser. If you already have the module installed, runUpdate-Module Microsoft.Graphto ensure you have the latest version. - Connect to Microsoft Graph with the correct scope
RunConnect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All". Sign in with a global administrator account that has license assignment permissions. - Get the guest user’s object ID
RunGet-MgUser -Filter "userType eq 'Guest'" | Select-Object Id, DisplayName, UserPrincipalName. Note the Id of the guest user you want to assign the Copilot license to. - Get the Copilot SKU ID
RunGet-MgSubscribedSku | Where-Object {$_.SkuPartNumber -eq "COPILOT_Microsoft_365"} | Select-Object SkuId, SkuPartNumber. Copy the SkuId value. This is the unique identifier for the Copilot license in your tenant. - Create a license assignment object
Run the following PowerShell commands to create a hashtable with the license details:$License = @{SkuId = "YOUR_SKU_ID_HERE"}
Replace YOUR_SKU_ID_HERE with the SkuId you copied in the previous step. - Assign the license to the guest user
RunSet-MgUserLicense -UserId "GUEST_USER_ID" -AddLicenses @($License) -RemoveLicenses @(). Replace GUEST_USER_ID with the Id of the guest user from step 3. The command should complete without errors. - Verify the license assignment
RunGet-MgUserLicenseDetail -UserId "GUEST_USER_ID" | Select-Object SkuPartNumber. Confirm that COPILOT_Microsoft_365 appears in the list.
After the license is assigned, the guest user may need to sign out of all Microsoft 365 apps and sign back in. Copilot features should become available within 30 minutes.
If Copilot Still Has Issues After the Main Fix
Guest User Cannot Activate Copilot in Word or Excel
Even after the license is assigned, the guest user might see Copilot grayed out in desktop apps. This happens because the guest user’s home tenant does not have the Copilot service enabled. The user must sign in to the resource tenant explicitly. Instruct the guest user to open Word, go to File > Account, and switch the connected account to the resource tenant’s account. Copilot should appear after a few minutes.
Copilot Returns “You don’t have access to this feature”
This error occurs when the guest user’s account is missing the required Microsoft Graph permissions. Run Get-MgUser -UserId "GUEST_USER_ID" -Property "UserType", "UserPrincipalName" | fl to confirm the user type is Guest. If the user type is Member, the license assignment should work through the admin center. If it is Guest, the PowerShell method is the only option. Additionally, ensure the guest user has consented to the required permissions for the resource tenant. You can trigger a consent prompt by having the user visit https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&response_type=code&scope=openid%20profile%20email%20offline_access with your tenant ID and a registered app client ID.
License Appears in Admin Center but Not in User’s Account
Sometimes the license shows as assigned in the admin center but the user cannot use Copilot. This is a replication delay. Wait 24 hours. If the issue persists, remove the license using PowerShell with Set-MgUserLicense -UserId "GUEST_USER_ID" -AddLicenses @() -RemoveLicenses @(@{SkuId = "YOUR_SKU_ID"}) and then reapply it using the steps above.
Copilot License Assignment Methods: Admin Center vs PowerShell
| Item | Microsoft 365 Admin Center | Microsoft Graph PowerShell |
|---|---|---|
| Supported user types | Member users only | Member and Guest users |
| Dependency check | Automatic validation blocks assignment for Guest | No validation block; assigns directly |
| Time to complete | 2-5 minutes via UI | 10-15 minutes including module setup |
| Error messages | “License assignment failed” with no detail | Detailed error output in PowerShell console |
| Bulk assignment | Not supported for guest users | Supported via CSV import and foreach loop |
The admin center is faster for member users but completely fails for guest users. PowerShell is the only viable method for guest accounts. For bulk assignments, use PowerShell with a CSV file containing guest user IDs and the Copilot SKU.
You can now assign a Microsoft 365 Copilot license to any guest user in your tenant using the PowerShell method described above. After the license is assigned, verify the user can access Copilot in Word, Excel, and Teams. For ongoing management, consider creating a scheduled PowerShell script that checks for new guest users and automatically assigns the Copilot license if they meet your organization’s criteria. This approach eliminates the manual workaround and ensures consistent license coverage for external collaborators.