You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Represent authorization as alternative execution paths with conjunctive
requirements and per-requirement accepted scopes. Resolve conditional tool
policies from call arguments while preserving legacy scope metadata.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: docs/scope-filtering.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,19 @@ When the server starts with a classic PAT, it makes a lightweight HTTP HEAD requ
22
22
23
23
With OAuth, the remote server can dynamically request additional scopes as needed. With PATs, scopes are fixed at token creation, so the server proactively hides tools you can't use.
24
24
25
+
## Scope Policies
26
+
27
+
Tool scopes are modeled as authorization paths rather than a flat list:
28
+
29
+
- A tool may support multiple paths, and satisfying any path is sufficient.
30
+
- Every independent requirement within the selected path must be satisfied.
31
+
- A requirement may accept multiple alternative scopes, including broader scopes from the hierarchy.
32
+
- Argument-dependent tools resolve the exact path at call time before an OAuth challenge is issued.
33
+
34
+
For example, repository deletion requires `repo`**and**`delete_repo`, while listing issue fields requires `repo` for a repository request or `read:org` for an organization request. Updating an ordinary file requires `repo`; updating a workflow file requires both `repo` and `workflow`.
35
+
36
+
PAT filtering runs before call arguments are known, so it keeps a tool when any supported path is usable. OAuth challenges resolve the actual arguments and request only the preferred missing scopes for that call.
37
+
25
38
## OAuth Scope Challenges (Remote Server)
26
39
27
40
When using the [remote MCP server](./remote-server.md) with OAuth authentication, the server uses a different approach called **scope challenges**. Instead of hiding tools upfront, all tools are available, and the server requests additional scopes on-demand when you try to use a tool that requires them.
0 commit comments