By NHI Mgmt Group Editorial TeamBased on P0 Security: “OAuth scopes don’t equal secure MCP authorization” (February 1, 2026)

TL;DR: P0 Security shows that OAuth scopes are useful for broad delegated capability in MCP, but they cannot express role-aware, context-aware, or sequence-aware authorization. Least-privilege enforcement has to move to the server side if organisations want dynamic tool access without scope sprawl or overly persistent tokens.


At a glance

What this is: This analysis argues that OAuth scopes alone cannot secure MCP authorization because they are too coarse for role-aware, context-aware, and sequence-aware tool access.

Why it matters: IAM and platform teams need to treat MCP authorization as a server-side policy problem, not a token-design problem, if they want least privilege to survive dynamic roles and multi-step tool use.

👉 Read P0 Security's analysis of why OAuth scopes are not enough for MCP authorization


Context

OAuth scopes were designed to grant broad delegated API access, but MCP tools often need tighter decisions about which user can run which action, against which resource, and under what conditions. That makes MCP authorization a governance problem, not just an OAuth configuration problem.

The article’s core point is that static token claims cannot keep pace with changing roles, contextual entitlements, and chained tool calls. For identity programmes that are extending into machine workflows and AI-adjacent control planes, that gap is where least privilege starts to erode.


Key questions

Q: What breaks when AI agents rely on static OAuth scopes for MCP access?

A: Static OAuth scopes break because they describe delegated permission at the moment of issuance, not the live intent behind each agent action. In MCP, the agent can chain tool calls, change context, and trigger downstream effects that were never visible when the scope was granted. Security teams need per-action authorization, not just valid authentication.

Q: Why do static OAuth tokens create problems for dynamic MCP permissions?

A: Because they freeze authorisation state at issuance, while roles, projects, and policy expectations keep changing. If the token carries too much logic, it becomes hard to manage and slow to adapt. If it carries too little, the server cannot enforce current least privilege. The practical answer is to re-evaluate permission at the server on every request.

Q: How do security teams detect scope sprawl in an MCP deployment?

A: Look for tokens that keep growing as teams add new tools, new role variants, or new workflow exceptions. That usually means scopes are being used to encode policy details they were never meant to carry. A healthy MCP design keeps token capability broad and shifts the detailed decision-making into server-side controls.

Q: What is the difference between OAuth scopes and RBAC in MCP?

A: OAuth scopes mark broad delegated capabilities, while RBAC assigns permissions through roles that the server can interpret at runtime. In MCP, scopes can support the outer boundary, but RBAC is what lets the system decide whether a specific tool call is actually allowed.


Technical breakdown

Why OAuth scopes are too coarse for MCP tools

OAuth scopes describe broad permission surfaces, such as read or write access to a domain, and they work well when the resource server only needs to know whether a client may call an API on behalf of a user. MCP tool ecosystems are different because a single server can expose many actions that vary by user, role, project, and execution context. If scopes try to carry that detail, they stop being simple delegation markers and start acting like a brittle policy language. That creates scope sprawl, larger tokens, and a growing mismatch between the token’s static meaning and the runtime decision the server actually needs to make.

Practical implication: Treat scopes as coarse binding, not the final authorisation layer, and move fine-grained decisions into server-side policy.

Why static tokens conflict with dynamic policy

An OAuth token is a snapshot of permission at the moment it is issued. In MCP environments, that snapshot quickly becomes stale when users change roles, projects shift, or tool access needs immediate adjustment. If the system embeds too much policy into tokens, teams either mint many token variants or accept permissions that remain wider than they should. That is not just inefficient. It breaks the timing model of least privilege, because the server can no longer re-evaluate current identity context at request time. Runtime evaluation is the only way to keep policy aligned with live organisational state.

Practical implication: Design MCP servers to re-check role and policy context on each request instead of trusting token issuance-time state.

How sequence-aware authorisation changes the control model

MCP authorisation must account for more than a single approved call. A user may be allowed to perform each step in isolation but still not be allowed to combine those steps into a higher-impact outcome. That is the difference between action-level permission and sequence-aware control. OAuth scopes do not capture intent, call ordering, or cumulative effect. Once a tool ecosystem allows chaining, the authorisation model has to evaluate what a sequence of calls accomplishes, not just whether each call matches a broad scope. Without that, low-privilege users can assemble privileged outcomes from individually valid actions.

Practical implication: Model high-impact workflows as sequences and enforce policy at the server where cumulative effect can be evaluated.


NHI Mgmt Group analysis

Scopes are a delegation primitive, not an authorisation model. OAuth scopes were built to express broad client permission, not to replace role logic, contextual checks, or runtime policy evaluation. In MCP, that distinction matters because the server is the only place that can see the current user, resource, and action combination. Practitioners should stop treating scope design as sufficient authorisation design.

Scope sprawl is the symptom of using the wrong control boundary. When every tool or variation becomes a new scope, tokens get larger, policy becomes brittle, and governance shifts from decision logic to naming discipline. That is an access-control smell, not a scaling strategy. The right question is not how many scopes a token can hold, but which decisions belong outside the token entirely.

Least privilege in MCP is only credible when evaluation happens at request time. Static tokens cannot track promotions, role changes, or project-specific entitlements without becoming overbroad or unmanageable. That means the server-side policy layer is not an optimisation, it is the actual control plane. Teams should treat MCP authorisation as a live decision problem, not a static entitlement checklist.

Sequence-aware access is the real gap in tool-rich environments. MCP tools can be individually safe and collectively unsafe when chained into a higher-impact workflow. OAuth scopes do not reason about cumulative effect, so they cannot prove that a user is still within intent. Practitioners should view multi-step tool chains as authorisation paths, not isolated API calls.

Role-aware MCP governance belongs in the server, where context exists. The article’s strongest lesson is architectural: broad capability belongs in the token, but fine-grained permission belongs where the request is executed. That division keeps tokens manageable while preserving enforceable least privilege. Security teams should make the server the enforcement point for contextual access decisions.

From our research library:

What this signals

MCP authorisation should be treated as a live decision system, not a token-shaping exercise. The practical divide is between what a client is broadly allowed to touch and what the server will actually allow in context. That is where identity teams should focus their design effort, because static token semantics will not keep up with dynamic enterprise roles.

Runtime policy is the only control that can absorb context drift. Promotions, project changes, and tool chaining all change the authorisation question after token issuance. If the server does not re-evaluate access at the point of use, least privilege becomes a provisioning claim instead of an enforced property.


For practitioners

  • Separate broad capability from fine-grained enforcement Use OAuth scopes only to bind a client to a broad MCP domain, then enforce role, resource, and context checks in the server at request time.
  • Model tool access as runtime policy Review which MCP decisions still depend on token claims alone and move those checks into server-side policy that can evaluate the current user, project, and action.
  • Reduce scope sprawl before it becomes policy debt Inventory scopes that exist only to simulate roles or per-tool permissions, then collapse them into fewer broad scopes with richer server-side rules.
  • Test multi-step authorisation paths Map tool sequences that are safe one call at a time but unsafe in combination, and require the server to evaluate cumulative effect before granting the next step.

Key takeaways

  • OAuth scopes are useful for delegating broad MCP capability, but they are too blunt to carry the full authorisation decision.
  • Static tokens and rapidly changing roles do not align well, which is why server-side evaluation becomes the real enforcement point.
  • Multi-step tool chains can produce outcomes that no single scope was designed to authorise, so cumulative effect must be checked at runtime.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Agentic AI Top 10 and OWASP API Security Top 10 address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Agentic AI Top 10ASI03 — Identity & Privilege AbuseMCP tools can be over-authorised when identity context is flattened into token scope.
Recommendation — Separate token capability from runtime privilege checks to prevent overbroad tool access.
OWASP API Security Top 10API2 — Broken AuthenticationThe article centres on how token-based delegation fails when used as the whole authorisation story.
Recommendation — Use server-side checks to verify the caller’s current authorisation context, not token claims alone.
NIST CSF 2.0PR.AA-05 — Access Permissions, Entitlements and AuthorizationsMCP server decisions depend on current entitlements, not only issued scopes.
Recommendation — Enforce current entitlements at request time so permissions reflect live identity state.
NIST SP 800-53 Rev 5AC-6 — Least PrivilegeThe article argues that least privilege fails when token scopes substitute for real access decisions.
Recommendation — Apply least-privilege controls at the server where contextual authorisation can be evaluated.
NIST Zero Trust (SP 800-207)Policy Enforcement Point — Policy Enforcement PointThe MCP server functions as the place where access decisions must be enforced in context.
Recommendation — Make the MCP server the policy enforcement point for tool-level access decisions.

Key terms

  • OAuth Scope: An OAuth scope is a permission string that defines what an application can do on behalf of a user. In practice, scopes set the blast radius of delegated access, because the token carries the right to read, write, or administer resources until it is revoked or expires.
  • Server-side authorization: The practice of deciding access on the backend where an action actually executes. It prevents direct endpoint calls from bypassing UI checks and is the only place where an application can reliably stop an unauthorised mutation or data read before it happens.
  • Scope Sprawl: Scope sprawl is the accumulation of excessive, duplicated, or stale OAuth permissions across many applications and users. It usually grows when teams approve broad access for convenience and never remove it, leaving a large and poorly understood delegated-access surface.
  • Sequence-Aware Authorization: Sequence-aware authorization evaluates what a series of valid actions can accomplish together, not just whether each call is allowed in isolation. In MCP environments, this is important because multiple tool calls can combine into an effect that exceeds the intended privilege boundary.

What's in the full article

P0 Security's full analysis covers the operational detail this post intentionally leaves for the source:

  • Examples of MCP tool scenarios where scopes fail to distinguish who can act on which resource
  • The server-side RBAC pattern for separating broad token capability from fine-grained authorisation
  • How role hierarchies and dynamic reassignment fit into MCP policy design
  • Why token size, scope naming, and policy combinatorics become operational problems as tool counts rise

👉 The full P0 Security article expands on scope sprawl, contextual access, and server-side RBAC for MCP tools.

Deepen your knowledge

NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
NHIMG Editorial Note
Published by the NHIMG editorial team on June 24, 2026.
Updated on October 7, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org