Repository navigation
docs(governance): require User.Read.All for Entra group access - #1242
Merged
andrewconnor-arcade merged 1 commit intoOct 13, 2026
Merged
Conversation
The Entra backend needs User.Read.All as well as GroupMember.Read.All. With GroupMember.Read.All alone, Microsoft Graph returns 403 for every user-centric membership call (memberOf, transitiveMemberOf, checkMemberGroups, by UPN or object ID), so every gated tool is hidden from every caller. Document both permissions and what each is for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
andrewconnor-arcade
marked this pull request as ready for review
October 13, 2026 00:19
andrewconnor-arcade
enabled auto-merge (squash)
October 13, 2026 00:53
sdreyer
approved these changes
Oct 13, 2026
andrewconnor-arcade
deleted the
andrewconnor/group-access-entra-permissions
branch
October 13, 2026 01:49
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The group access page says an Entra ID backend needs only
GroupMember.Read.All. With only that permission, Microsoft Graph refuses every user-centric membership lookup, so every gated tool is hidden from every caller, including group members. This changes the Entra section to requireUser.Read.Allas well, and says what each permission is for.What we saw
While setting up group access with the Entra backend for the Arcadia Wealth demo project, we granted
GroupMember.Read.All(application, admin consent granted; the app's token carriedroles: ["GroupMember.Read.All"]). A member of the required group was refused (tool_not_found) the same as an unknown user.Probing Graph with the same app's credentials:
GroupMember.Read.AllonlyUser.Read.AllGET /users/{upn}/memberOfGET /users/{objectId}/memberOfGET /users/{objectId}/transitiveMemberOfPOST /users/{objectId}/checkMemberGroupsThis matches Microsoft's docs for listing another user's memberships, which list no app-only path through
GroupMember.Read.All.After adding
User.Read.Alland waiting out the 5-minute membership cache, the group member'sMath.Addcall completed and an unknown user was still refused.Change
User.Read.Allalone returning IDs without names is kept in the table row forGroupMember.Read.All.Draft until the end-to-end setup is fully confirmed.
🤖 Generated with Claude Code