Skip to content

Hotfix 8.10.1: Fix MCP sign-in for self-registered clients - #2722

Merged
ejsmith merged 7 commits into
release/8.10from
hotfix/8.10.1
Nov 5, 2026
Merged

ejsmith merged 7 commits into
release/8.10from
hotfix/8.10.1

Conversation

@ejsmith

@ejsmith ejsmith commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Hotfix for production MCP sign-in, without shipping the 9.0 work on main. Merging this does not deploy; pushing the v8.10.1 tag does.

flowchart LR
  A[v8.10.0] --> B[release/8.10]
  C[hotfix/8.10.1] -->|this PR| B
  B -->|tag v8.10.1| D[Prod deploy]
Loading

Commits

Commit From main Why it's needed
Patch System.Security.Cryptography.Pkcs #2662 v8.10.0 no longer restores: NuGet audit errors
Patch MessagePack #2671 Same audit failure, in the AppHost
Explain OAuth consent errors #2638 Shows the real OAuth error instead of a generic message
Let users grant every scope to self-registered clients #2721 The fix
Keep administrator settings when client metadata changes #2721 Stops a metadata refresh from lifting an admin restriction
Fix website build Deno compatibility #2599 Deno 2.5.7 can't run the docs build, which failed the Website check and the tag's website job

Differences from main

  • validation.test.ts: dropped three 422 cases that depend on a validation.ts change from Replace legacy Angular UI with root Svelte application #2608, which isn't on this base.
  • oauth-consent.e2e.ts now targets /next, because 8.10 serves the UI there.
  • oauth-live-consent.e2e.ts is removed here only. It needs routes and API origin handling this branch lacks; it still runs on main.

Verification

Run against a live local stack built from this branch, on ES 8.19.21.

Check Result
Scripted MCP client: discovery, registration, consent, PKCE, tools, refresh 44 of 44 pass
Real consent page in Chromium, through to an MCP write 9 of 9 pass
Mocked consent browser test Pass
OAuth and MCP backend test classes 230 of 230 pass
Frontend unit tests, before the final test-only edits 976 of 976 pass
Lint Pass
Docker build, full backend and browser e2e Left to CI
A real MCP client such as Claude Code Not tested before prod

Scenarios covered: clients registered with and without stacks:write, write allowed in approved orgs and denied in others, refresh keeping write, a user declining write, and admin restrictions.

After merge

  1. Land Let users grant every scope to self-registered OAuth clients #2721 on main first, so it has the fix too.
  2. Push the tag: git tag v8.10.1 origin/release/8.10 && git push origin v8.10.1
  3. Confirm https://api.exceptionless.io/api/v2/about reports 8.10.1.

The tag also publishes the website. Compared with the live site, only docs/docs/api/index.md changes (the new scope docs).

ejsmith and others added 4 commits November 5, 2026 10:16
* Patch MessagePack dependency to restore secure builds

* Include remaining MessagePack 2.5 security fixes

(cherry picked from commit fa3590a)
* Explain OAuth client scope consent failures

* Revalidate consent state when the authorization query changes

* Exercise live OAuth administrator consent and refresh flow

* Clarify validated OAuth consent controls and reuse problem messages

* Use concrete membership collection in OAuth regression test

* Address OAuth consent error handling review

(cherry picked from commit 731b471)
MCP clients request every scope discovery advertises, but a dynamically
registered client was stored without stacks:write. Consent rejected the
whole request with invalid_scope, so the client could never be approved.

A self-registered client chooses its own scopes and could register again
with all of them, so that list restricts nothing. Those clients may now
request any supported scope, and the user's consent limits the grant.
Scopes an administrator saved stay enforced: consent offers only the
allowed ones and the final authorization request is still strict.

(cherry picked from commit 190f6d7)
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-05T16:38:27.840329Z f466b97 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 474c3802ca

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

The consent tests from #2638 assume the Svelte application at the site
root, which landed after 8.10. Point the mocked consent test at /next and
remove the live consent test, which also depends on metadata routes and
API origin handling this branch does not have. Remove the validation test
cases that depend on a validation change from #2608 and format the file.
A metadata refresh overwrote an administrator's saved settings and reset
UpdatedByUserId, which made the application count as self-registered and
lifted its scope restriction. Skip the refresh once an administrator has
saved the application.

(cherry picked from commit 6690fdb)
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.Web 86% 70% 8711 ✔
Exceptionless.Core 77% 68% 10565 ✔
Exceptionless.AppHost 38% 40% 149 ❌
Exceptionless.Insulation 37% 35% 286 ❌
Summary 79% (26904 / 33886) 68% (12761 / 18672) 19711 ✔

@ejsmith
ejsmith merged commit 698830e into release/8.10 Nov 5, 2026
13 checks passed
@ejsmith
ejsmith deleted the hotfix/8.10.1 branch November 5, 2026 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants