Conversation
🦋 Changeset detectedLatest commit: 76f4d26 The changes in this PR will be included in the next version bump. This PR includes changesets to release 17 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
All contributors have signed the CLA ✍️ ✅ |
|
OpenClaw exact-head review closeout Result: completed / clean Target: emdash-cms/emdash PR 2188 Source-blind behavior: Node/SQLite and local workerd/D1 satisfy the selectable-scope contract. Reduced grants, unrequested-scope injection, restricted clients, empty grants, and refresh non-broadening passed in both runtimes. OpenClaw result: completed / clean Gates honored: read-only review; no merge, deploy, release, customer sends, secrets, account changes, or destructive cleanup. |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/registry-verification
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
Co-authored-by: Cursor <cursoragent@cursor.com>
6179d69 to
76f4d26
Compare
|
OpenClaw exact-head review closeout — supersedes the prior SHA Result: completed / clean The prior head was rewritten only to bind the commit author/committer to Bobby's existing CLA-linked GitHub identity. Patch content is unchanged. Target: emdash-cms/emdash PR 2188 OpenClaw result: completed / clean Gates honored: read-only review; no merge, deploy, release, customer sends, secrets, account changes, or destructive cleanup. |
|
@saariuslystoned can you not include the OpenClaw comments. They are noisy and distracting. |

What does this PR do?
Makes authorization-code consent scopes individually selectable so users can remove permissions an MCP client does not need before approving access. Requested scopes remain selected by default for compatibility, while submitted selections are constrained to the original request and continue through existing client- and role-based clamps.
Empty effective grants now return
invalid_scope, duplicate requested scopes render once, plugin-specific MCP scopes remain selectable, and the consent copy reflectscontent:writecompatibility grants.Closes #2093
Type of change
Checklist
pnpm typecheckpassespnpm lintpassespnpm testpasses (or targeted tests for my change)pnpm formathas been runmessages.pochanges except in translation PRs — a workflow extracts catalogs on merge tomain. (N/A: this extends the existing standalone server-rendered OAuth consent surface, not the Lingui admin SPA.)AI-generated code disclosure
Screenshots / test output
Exact source identity:
7d28ce940a7bc05043bd01c79cae07c7a1d008986179d69f1e3536bd922eaed7db75ab30d41612beVerification:
pnpm typecheck: passedpnpm lint: passed with warnings deniedpnpm format:check: passeddemos/simpleNode/SQLite behavior: passeddemos/cloudflarelocal workerd/D1 behavior: passed/varvs/private/varpath assertion failed invirtual-modules.test.tsInternal proof root:
/Users/cp-1/Developer/_machine-runs/emdash-upstream-2093-scoped-grants-20260721/Made with Cursor