GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — feat: send RFC 8707 resource parameter on MCP server OAuth2 flows by ibetitsmike · Pull Request #30651 · coder/coder Conversation
|
| Review | Commit | Findings | Disposition |
|---|---|---|---|
| Codex round 1 | 4b54ffb | P2: a resource with another query was treated as covering the server URL | Reproduced with a failing test, fixed in bf08795, resolved |
| Codex round 2 | bf08795 | P2: explicit default ports; P2: %2F treated as a segment boundary; P2: url.Parse accepts spaces and invalid escapes |
Each reproduced with a failing test, fixed in 16a1d78, resolved |
| Codex round 3 | 16a1d78 | P1: docs wrapped mid-sentence (DOC1); P2: equivalent percent-encodings compared unequal; P2: brackets accepted outside an IP literal host | Fixed in 8d617f0 (the P2s reproduced with failing tests; the same pass also covers the query, dot segment, and user information cases), resolved |
| Codex round 4 | 8d617f0 | P2: the server URL fallback was not validated; P2: escaped dot segments were compared before decoding | Each reproduced with a failing test, fixed in 5c23fe0, resolved |
| Codex round 5 | 5c23fe0 | P2: an empty query (?) was treated as no query |
Reproduced with a failing test, fixed in 72c019f, resolved |
| Codex round 6 | 72c019f | P2: /mcp/ covered /mcp; P2: equivalent IPv6 literals compared unequal; P2: malformed IP literals accepted |
The first two reproduced with failing tests. Go 1.26.5 url.Parse already rejects the hosts named in the third, but it accepted an IPv6 zone identifier. All fixed in ef2df2c, resolved |
| Codex round 7 | ef2df2c | P2: leading zeros in a port made equal origins differ | Reproduced with a failing test, fixed in 2d6abfa, resolved |
| Codex round 8 | 2d6abfa | None: "Didn't find any major issues" | Clean verdict on the current head |
Xum opened this PR on behalf of @ibetitsmike.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Store an oauth2_resource indicator on MCP server configs. Auto-discovery fills it from the Protected Resource Metadata entry that covers the server URL (else the canonical server URL); admins can set or clear it. When set, Coder sends it as the resource parameter on authorization, code exchange, and refresh requests. Manual configs without it send no resource parameter, so providers that reject it keep working.
Assert invalid resources are rejected before auto-discovery, cover clearing on every non-oauth2 auth type, check whitespace trimming on update, and restore the bodyclose directive on TestMCPServerOAuth2PKCE.
… connect RFC 8707 binds an authorization code to the resource named in the authorization request. Record that resource in a callback-scoped cookie at connect, and fail the callback with the existing 409 before the code exchange when an admin changed oauth2_resource in between, so the code is never redeemed for a resource the user did not authorize.
Label the form input "Resource URL" like its sibling endpoint fields, say that an empty value sends no resource parameter, and match the sibling row grid so the field lines up with the column above. Describe the API field's discovery and clear semantics precisely, and cover clearing a stored resource from the edit form.
Say which OAuth2 settings delete stored user tokens, and describe the normalized server URL that discovery stores when no Protected Resource Metadata entry matches.
An empty resource sends none unless auto-discovery fills it while registering the client, so say that instead of promising none. Shorten the create request doc to match, drop a class that has no effect on the single-field row, and use an example.com resource in the form test.
… resource form fixture
Main added migration 000617 (connection_logs_method_app_name), so the MCP server oauth2_resource migration moves to 000618. Generated files match a fresh make gen on the merged tree.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Docs previewCheck off each page once it's been reviewed. If a page changes in a later push, its checkbox clears automatically so it gets a fresh look. Pages not yet wired into the docs navigation aren't listed here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 4b54ffb5f9
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
…ource A Protected Resource Metadata resource with a query no longer covers a server URL with a different query, and at equal path length a resource with the server's query beats one without a query. A resource without a query still covers server URLs with any query.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: bf0879560c
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Resource origins now compare with an omitted port treated as the scheme's default, and paths compare in escaped form so "%2F" does not end a segment. Resource values must contain only RFC 3986 characters and valid percent escapes, because url.Parse accepts spaces and invalid escapes in the query.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 16a1d783fa
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Paths and queries compare after RFC 3986 normalization: escapes of unreserved characters are decoded, the hex digits of other escapes are uppercased, and dot segments are removed, while "%2F" stays inside its segment. Validation also rejects "[" and "]" outside an IP literal host, and user information, which url.Parse accepts. The MCP servers docs keep one sentence per source line in the OAuth2 section.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 8d617f0528
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
…aped dot segments Auto-discovery now validates the server URL fallback like any other resource indicator and stores no resource when it is invalid, so a server URL such as https://mcp.example.com/a[b] no longer yields an RFC 3986-invalid indicator. Resource paths normalize percent-encodings before removing dot segments, so an advertised /a/%2E%2E/mcp covers the server URL /mcp.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 5c23fe00dc
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
… resources An advertised resource ending in "?" has an empty query, which RFC 3986 distinguishes from no query. It no longer covers server URLs with another query or with no query.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 72c019ff5e
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
An advertised resource with a trailing slash no longer covers the same path without one, as in the MCP SDKs, and an empty path after an authority equals "/". Origins compare IP literals by address, so [::1] matches [0:0:0:0:0:0:0:1]. Resource indicators with an IPv6 zone identifier are rejected, since RFC 3986 IP literals have none. The docs now say the resource must not contain user information, which validation already rejects.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: ef2df2c4e7
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
RFC 9110 section 4.3.1 removes leading zeros from an origin's port, so a server URL on port 0443 now matches an advertised resource on the default HTTPS port.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.