inspector/clients/web/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall b339ad49f0 fix(oauth): persist the filtered scope after an ordinary grant
Copilot review round 11 on #2114. The docs claimed the persisted scope
"self-heals on the next grant"; on the ordinary authorization leg it
did not.

`authenticate()` never set `pendingAuthorizationScope` — only the
step-up paths did — so `completeOAuthFlow` called
`resolvePersistedScopeAfterGrant(tokens.scope, undefined)`. When the
token response omits `scope` (RFC 6749 §5.1: omitted means the grant
matched the request), the fallback was undefined, nothing was saved,
and the stale `offline_access` stayed in storage where
`resolveEffectiveGrantedScope` keeps reporting it as granted.

`authenticate()` now records the scope it actually requested, read once
from the filtering getter so what is recorded is what went out.

Gated on the filter being active rather than applied unconditionally.
The general version is arguably more RFC-correct, but it would change
what lands in storage for every server that never touched this setting,
inside a PR whose contract is that nothing changes unless the box is
unchecked. With the grant declared, request and storage agree and there
is nothing to heal.

Three tests; the omitted-scope one fails when the recording is removed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013hzwzS8UvBsr4yZm7o7sev
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-24 23:52:14 -04:00
..
components fix(oauth): pass the raw challenge scopes to the step-up scope filter 2026-08-24 23:35:00 -04:00
hooks Merge pull request #2087 from modelcontextprotocol/v2/fix/1914-surface-post-add-refresh-failure 2026-08-23 20:48:01 -04:00
lib fix(web): move the app origin off 6276, bound the publish route 2026-08-24 08:45:40 -04:00
test fix(oauth): persist the filtered scope after an ordinary grant 2026-08-24 23:52:14 -04:00
theme fix(a11y): make the form error color meet WCAG AA in both schemes 2026-08-23 12:56:13 -04:00
types chore: close a batch of quality-gate & tidy gaps (#1785 #1787 #1789 #1790 #1767) (#1792) 2026-07-26 10:43:11 -04:00
utils docs(web): describe the accepted subset, not "parses as a source expression" 2026-08-24 01:20:18 -04:00
App.css feat(web): use the Ace editor for the request-metadata JSON 2026-08-23 16:55:23 -04:00
App.test.tsx test(oauth): prove the opt-out against a real authorization server 2026-08-24 21:03:41 -04:00
App.tsx feat(oauth): make the refresh_token grant opt-out per server 2026-08-24 19:50:57 -04:00
index.ts feat: port CLI, TUI, and launcher from v1.5 into v2 (#1452) 2026-06-14 20:27:49 -04:00
main.tsx fix(a11y): make the form error color meet WCAG AA in both schemes 2026-08-23 12:56:13 -04:00