Graph Permissions Finder Beta
Say what you're trying to do. Get the least-privileged Microsoft Graph permissions for it — delegated or application.
11,221 operations · 919 permissions (742 delegated, 705 application) · pulled 2026-08-26 · changelog
Least-privileged per Microsoft's published operation mapping — the same data behind Graph Explorer's permissions tab and
Find-MgGraphPermission. Microsoft publishes one mapping for both v1.0 and beta, so answers here are
version-agnostic. Everything resolves in your browser; nothing you select is sent anywhere.
1 · Access type
2 · What are you trying to do?
Reporting & inventory
Mail & calendar automation
Endpoint management
Collaboration provisioning
User lifecycle
Identity & security review
11,221 operations across 44 resource areas
- Users & profiles410
- Groups86
- Mail277
- Calendars & events207
- Contacts80
- Files & drives1,702
- SharePoint sites205
- Teams & channels265
- Chats & messages64
- Online meetings & calls197
- OneNote143
- Planner, To Do & tasks215
- Bookings38
- Places & rooms44
- Viva & employee experience94
- Directory & organization377
- Entra devices55
- App registrations & service principals414
- Directory roles & privileged access142
- Policies & conditional access248
- Identity providers & authentication465
- Identity governance350
- Identity protection & risk34
- Licensing40
- Audit & sign-in logs12
- Intune: managed devices189
- Intune: configuration & compliance1,001
- Intune: apps425
- Intune: scripts & remediations366
- Intune: enrollment & Autopilot101
- Intune: reports & analytics95
- Intune: roles, tenant & other780
- Cloud PC (Windows 365)142
- Security & threat protection422
- Compliance & eDiscovery280
- Global Secure Access228
- Backup storage75
- Usage reports222
- Search & external connections97
- Universal Print75
- Education139
- Copilot & AI agents66
- Business Central77
- Service admin & tenant settings277
3 · Permissions
Nothing selected
Loading the permissions dataset…
Choose an access type to resolve
Delegated and application access have genuinely different answers for most operations — and thousands of operations have no application permission at all. There is no sensible default, so nothing resolves until you pick one.
Saved sets & history
Saved sets
No saved sets yet.
Recent resolutions
Nothing resolved yet in this browser.
What this answers, and what it doesn't
Microsoft publishes, for every Graph request URL and HTTP method, which permissions can call it and which of those is the least-privileged. This tool inverts that mapping: you describe a task, it collects the operations that task makes, takes the least-privileged permission for each one, unions them, and collapses anything a broader permission in the set already covers. That is the entire algorithm — there is no scoring, no heuristic, and no model involved anywhere in the answer.
Two limits worth stating plainly. First, this is the answer to “what does this request need”, not “what does my task
need”. If your integration only ever touches one SharePoint site, the per-operation answer is still
Sites.Read.All, because Microsoft's mapping has no way to know your scope — the narrower answer is
Sites.Selected with per-site grants. A handful of scenarios carry a note where that gap is sharp
enough to matter, but a note is all it is: the resolved set stays Microsoft's answer.
Second, there is no permission-centric browser here — you cannot start from
Mail.ReadWrite and page through everything it unlocks. That is a different tool with a different
shape, and building half of it would be worse than not building it. Searching the operation picker by permission name is the
closest thing, and it is deliberately just a search.
How permissions get collapsed
When a selection ends up needing both Mail.Read and Mail.ReadWrite,
only Mail.ReadWrite appears — the broader grant already covers the narrower one. That collapse runs
off a hand-curated list, never off pattern-matching the permission name, because the naming genuinely does not hold:
Files.ReadWrite.Selected does not cover Files.Read.All despite the
longer name, and Policy.ReadWrite.ConditionalAccess does not cover
Policy.Read.All. Any pair the curated list does not cover stays uncollapsed and both permissions
show — verbose is recoverable, a wrong collapse is not. Every collapse is listed under the results so you can audit it.
Deliberately not collapsed
These come up often enough that “we chose not to” is worth distinguishing from “we forgot”.
Delegated vs application
Delegated permissions let an app act as a signed-in user, and the effective access is the intersection of the permission and what that user could already do. Application permissions let an app act with no user at all, and the effective access is the whole tenant — which is why so many of them require admin consent and why an application answer is usually broader than the delegated one for the same task. Around 2,421 operations in Microsoft's mapping have no application permission at all; this tool lists those explicitly instead of quietly leaving them out.
Admin consent is shown as a fact, not a warning. Most useful application permissions require it, and colouring that red would make the entire results panel look like a problem.
Building the app registration afterwards? The manifest block copies as a requiredResourceAccess
entry with real permission GUIDs and the right Scope/Role type.
Microsoft has not published GUIDs for part of its own preview permission surface; anything in that group is named in the copy
confirmation rather than emitted with a made-up id.