Skip to content

Custom MCP Connector OAuth flow uses prompt=consent blocking non-admin users in enterprise Entra ID tenants #169

Description

@Armexa-Shane

MCP server URL or name

https://{dataverseOrgName}.crm.dynamics.com/api/mcp

How are you connecting to this server?

From a custom connector URL I entered manually

Where does the issue occur?

In the authorization screen

When did you last reproduce this?

2026-4-10 - 17:00 MST

Browser and OS

Any browser on Mac or Windows

Describe the issue

Custom MCP connectors in Claude.ai send prompt=consent in the OAuth 2.0 authorize URL on every connection and reconnection attempt. This forces Microsoft Entra ID to display a consent screen to users regardless of whether tenant-wide admin consent has already been granted for the application. In enterprise tenants with restricted user consent policies (which is standard security practice), non-admin users cannot complete the consent screen and receive an "Approval required" or "Need admin approval" error, permanently blocking them from using the connector.

The prompt=consent parameter is included even when the connector is configured with an OAuth Client ID and Client Secret in Advanced settings, meaning the admin has explicitly pre-registered and pre-authorized the application. There is no option in Claude's connector configuration to control or override this behavior.

Error details

Entra ID sign-in error code: 90095

Failure reason: "Admin consent is required for the permissions requested by this application. An admin consent request may be sent to the admin."

OAuth authorize URL generated by Claude includes prompt=consent at the end of every request

Full example URL: https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?response_type=code&client_id={app-id}&redirect_uri=https://claude.ai/api/mcp/auth_callback&code_challenge=...&code_challenge_method=S256&state=...&scope=openid+profile+offline_access+https://armexa.crm.dynamics.com/api/mcp/mcp.tools&resource=https://{dataverseOrgName}.crm.dynamics.com/api/mcp&prompt=consent

Attempted mitigations that did NOT resolve the issue: granting admin consent via App Registrations, granting admin consent via Enterprise Applications, creating

AllPrincipals OAuth2PermissionGrants via Microsoft Graph PowerShell, classifying all permissions as Low impact, verifying publisher identity, toggling all three user consent policy options

Manually changing prompt=consent to prompt=login in the browser URL immediately resolves the issue and allows non-admin users to authenticate successfully

Expected behavior

Claude should use prompt=login (or omit the prompt parameter entirely) instead of prompt=consent when authenticating to custom connectors that have been configured with an OAuth Client ID and Client Secret in Advanced settings. The use of pre-registered credentials signals that the admin has intentionally set up and authorized the application. Forcing a consent prompt on every connection is unnecessary and incompatible with enterprise Entra ID tenant configurations where user consent is restricted. At minimum, the prompt parameter should be configurable in the connector's Advanced settings so admins can control this behavior.

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions