Microsoft 365 Copilot Cannot Be Assigned to Guest User: Fix
🔍 WiseChecker

Microsoft 365 Copilot Cannot Be Assigned to Guest User: Fix

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.

ADVERTISEMENT

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.

  1. Install the Microsoft Graph PowerShell module
    Open Windows PowerShell as an administrator. Run the command Install-Module Microsoft.Graph -Scope CurrentUser. If you already have the module installed, run Update-Module Microsoft.Graph to ensure you have the latest version.
  2. Connect to Microsoft Graph with the correct scope
    Run Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All". Sign in with a global administrator account that has license assignment permissions.
  3. Get the guest user’s object ID
    Run Get-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.
  4. Get the Copilot SKU ID
    Run Get-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.
  5. 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.
  6. Assign the license to the guest user
    Run Set-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.
  7. Verify the license assignment
    Run Get-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.

ADVERTISEMENT

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.

ADVERTISEMENT