entra-agent-user
Lets your agent act like a digital worker. It creates user identities for agents in Microsoft systems, giving them identity capabilities.
What it does
This tool creates user identities for AI agents in Microsoft Entra ID. This allows AI agents to act as digital workers, accessing services like email and Teams.
When to use it
- ✓When an AI agent needs to send emails.
- ✓When an AI agent needs to join Teams meetings.
- ✓When an AI agent needs to access resources requiring a user identity.
Example of what to ask your AI
“Create an agent user for my marketing agent named 'Marketing Agent' with UPN 'marketing@mycompany.com', linked to agent identity 'abc-123'.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool uses an existing AI agent's identity to create a new user identity within Microsoft Entra ID. This new user identity is granted permissions to act like an employee.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add github/awesome-copilot --skill entra-agent-userOr download just the file:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/entra-agent-user/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
SKILL: Creating Agent Users in Microsoft Entra Agent ID
Overview
An agent user is a specialized user identity in Microsoft Entra ID that enables AI agents to act as digital workers. It allows agents to access APIs and services that strictly require user identities (e.g., Exchange mailboxes, Teams, org charts), while maintaining appropriate security boundaries.
Agent users receive tokens with idtyp=user, unlike regular agent identities which receive idtyp=app.
Prerequisites
- A Microsoft Entra tenant with Agent ID capabilities
- An agent identity (service principal of type
ServiceIdentity) created from an agent identity blueprint - One of the following permissions:
AgentIdUser.ReadWrite.IdentityParentedBy(least privileged)AgentIdUser.ReadWrite.AllUser.ReadWrite.All
- The caller must have at minimum the Agent ID Administrator role (in delegated scenarios)
Important: The
identityParentIdmust reference a true agent identity (created via an agent identity blueprint), NOT a regular application service principal. You can verify by checking that the service principal has@odata.type: #microsoft.graph.agentIdentityandservicePrincipalType: ServiceIdentity.
Architecture
Agent Identity Blueprint (application template)
│
├── Agent Identity (service principal - ServiceIdentity)
│ │
│ └── Agent User (user - agentUser) ← 1:1 relationship
│
└── Agent Identity Blueprint Principal (service principal in tenant)
| Component | Type | Token Claim | Purpose |
|---|---|---|---|
| Agent Identity | Service Principal | idtyp=app |
Backend/API operations |
| Agent User | User (agentUser) |
idtyp=user |
Act as a digital worker in M365 |
Step 1: Verify the Agent Identity Exists
Before creating an agent user, confirm the agent identity is a proper agentIdentity type:
GET https://graph.microsoft.com/beta/servicePrincipals/{agent-identity-id}
Authorization: Bearer <token>
Verify the response contains:
{
"@odata.type": "#microsoft.graph.agentIdentity",
"servicePrincipalType": "ServiceIdentity",
"agentIdentityBlueprintId": "<blueprint-id>"
}
PowerShell
Connect-MgGraph -Scopes "Application.Read.All" -TenantId "<tenant>" -UseDeviceCode -NoWelcome
Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/beta/servicePrincipals/<agent-identity-id>" | ConvertTo-Json -Depth 3
Common mistake: Using an app registration's
appIdor a regular application service principal'sidwill fail. Only agent identities created from blueprints work.
Step 2: Create the Agent User
HTTP Request
POST https://graph.microsoft.com/beta/users/microsoft.graph.agentUser
Content-Type: application/json
Authorization: Bearer <token>
{
"accountEnabled": true,
"displayName": "My Agent User",
"mailNickname": "my-agent-user",
"userPrincipalName": "my-agent-user@yourtenant.onmicrosoft.com",
"identityParentId": "<agent-identity-object-id>"
}
Required Properties
| Property | Type | Description |
|---|---|---|
accountEnabled |
Boolean | true to enable the account |
displayName |
String | Human-friendly name |
mailNickname |
String | Mail alias (no spaces/special chars) |
userPrincipalName |
String | UPN — must be unique in the tenant (alias@verified-domain) |
identityParentId |
String | Object ID of the parent agent identity |
PowerShell
Connect-MgGraph -Scopes "User.ReadWrite.All" -TenantId "<tenant>" -UseDeviceCode -NoWelcome
$body = @{
accountEnabled = $true
displayName = "My Agent User"
mailNickname = "my-agent-user"
userPrincipalName = "my-agent-user@yourtenant.onmicrosoft.com"
identityParentId = "<agent-identity-object-id>"
} | ConvertTo-Json
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/users/microsoft.graph.agentUser" `
-Body $body -ContentType "application/json" | ConvertTo-Json -Depth 3
Key Notes
- No password — agent users cannot have passwords. They authenticate via their parent agent identity's credentials.
- 1:1 relationship — each agent identity can have at most one agent user. Attempting to create a second returns
400 Bad Request. - The
userPrincipalNamemust be unique. Don't reuse an existing user's UPN.
Step 3: Assign a Manager (Optional)
…
FAQ
What is an 'agent user'?
It's a special identity in Microsoft Entra ID that allows an AI agent to act as a digital worker, with access to resources like email and Teams.
Why does an AI agent need a user identity?
Some Microsoft 365 services require a user identity for access, not just an application identity. An agent user allows the AI agent to meet these requirements.
Can an agent user have a password?
No, agent users cannot have passwords. They authenticate using the credentials of their parent agent identity.
Details
Original description by the author
Create Agent Users in Microsoft Entra ID from Agent Identities, enabling AI agents to act as digital workers with user identity capabilities in Microsoft 365 and Azure environments.
repo: github/awesome-copilot
Popularity
- GitHub stars
- 40k
- Ranking position
- #5133
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
acquire-codebase-knowledge
Helps your agent understand and document an existing code project. It's useful for onboarding new people or getting an overview of the architecture.
github/awesome-copilot
acreadiness-assess
Enables your agent to assess a project's readiness for AI and generate a report. It's useful for understanding how well a project is prepared to use AI tools.
github/awesome-copilot
acreadiness-generate-instructions
Helps your agent create instructions for AI tools based on an assessment. It's useful for improving how AI interacts with code and closing identified gaps.
github/awesome-copilot
acreadiness-policy
Enables your agent to help define or apply policies for AI project assessment. It's useful for standardizing how projects are evaluated and ensuring compliance.
github/awesome-copilot
Similar skills
benchmark
Helps your agent measure code speed and performance. It's useful for ensuring things are fast and finding slowness issues.
affaan-m/ECC
content-hash-cache-pattern
Lets your agent use content hashes to cache file processing results. This avoids repeated processing and auto-invalidates the cache when content changes. Useful for speeding up slow tasks.
affaan-m/ECC
parallel-execution-optimizer
Makes your agent speed up complex tasks by breaking them into smaller parts and running them in parallel. It ensures everything is verified at the end.
affaan-m/ECC