镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

fix(mcp): accept create scopes in durable approvals - #2650

Merged
kalvinnchau merged 1 commit into
mainfrom
fix/mcp-create-approval
Nov 5, 2026
Merged

kalvinnchau merged 1 commit into
mainfrom
fix/mcp-create-approval

Conversation

@kalvinnchau

Copy link
Copy Markdown
Contributor

Fix main's TS2322 after external MCP added create while durable approvals still accepted only read and post. Align the host approval type and native scope validation. Empty, duplicate, and unknown scopes remain rejected; existing grants do not widen.

Validation: TypeScript check and 41 external-connection tests passed. The new native scope regression failed on the old validator as expected; post-fix native execution is deferred. Independent agent review found no blockers in the intended final validator. No browser cases added or removed. No full test suite run; pre-push hooks skipped at the author's explicit request. Native live consent/persistence and human testing remain deferred; keep draft.

align the host approval type and native validation with external create access. preserve scope uniqueness and exact approval binding.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
@kalvinnchau
kalvinnchau marked this pull request as ready for review November 5, 2026 18:55
@kalvinnchau
kalvinnchau requested a review from a team as a code owner November 5, 2026 18:55

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Carl, an automated reviewer, commenting via Wes's GitHub account.

Verdict: no blockers at d2d4bb9. This is not an approval.

This widens the durable approval type and native validator to the three-scope contract main already uses (#2411 + #2464). Existing read/post grants don't gain create. Native renew and check_current still require the approval to match exactly, and resume still requires the saved scopes to match the requested scopes exactly. The consent copy already describes create and the 30-day renewal. Tool calls still check scope one by one in src/buzz-mcp/external.ts. No other native or TS scope allowlist is still missing create.

Validation gaps

  • The new Rust regression hasn't run post-fix locally. The hosted Rust/JS checks were still pending when I looked.
  • Live native consent, keychain persistence and resume with a create grant haven't been exercised.
  • The body says "keep draft", but the PR is marked ready for review.

Merge criteria: hosted Rust and JS checks green, plus one manual approve → restart → resume pass with a create-scoped app if you want live evidence before merge.

@kalvinnchau
kalvinnchau merged commit 3ce52ce into main Nov 5, 2026
41 checks passed
@kalvinnchau
kalvinnchau deleted the fix/mcp-create-approval branch November 5, 2026 19:02
johnmatthewtennant added a commit that referenced this pull request Nov 5, 2026
Co-authored-by: Simone <0828be588d5c9c4d092c5b1cf01761d5aef63d6b104807fd8e8284d517dd1a99@buzz.block.builderlab.xyz>

* origin/main:
  fix(mcp): accept create scopes in durable approvals (#2650)
  feat(bestie): Bestie tab and Remembers you for a hosted Bestie (#2478)
  fix(relay): p-tag a one-to-one DM's agent partner on new messages (#2475)
  fix(agents): show each message author's username and display name (#2628)
  fix(agents): preserve visible edits in conversation history (#2355)
  fix(canvas): keep todo edits from approving unrelated instructions (#2350)
  fix(messages): keep messages in their canonical channel (#2349)
  NEXUS-4165: Add Thinking to agent creation (#2409)
  feat(plugins): let a plugin paint a backdrop behind the shell (#2437)
  feat(search): lead empty quick open with unread conversations (#2634)
  NEXUS-4170: Allow external apps to create private Solo chats (#2411)
  fix(acp): count grouped thinking levels when checking a synced level (#2640)

Signed-off-by: John Tennant <jtennant@squareup.com>
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…leanup

* origin/main:
  fix(mcp): accept create scopes in durable approvals (#2650)
  feat(bestie): Bestie tab and Remembers you for a hosted Bestie (#2478)
  fix(relay): p-tag a one-to-one DM's agent partner on new messages (#2475)
  fix(agents): show each message author's username and display name (#2628)
  fix(agents): preserve visible edits in conversation history (#2355)
  fix(canvas): keep todo edits from approving unrelated instructions (#2350)
  fix(messages): keep messages in their canonical channel (#2349)
agude-sq added a commit to agude-sq/buzz-app that referenced this pull request Nov 5, 2026
* origin/main: (28 commits)
  fix(mcp): accept create scopes in durable approvals (block#2650)
  feat(bestie): Bestie tab and Remembers you for a hosted Bestie (block#2478)
  fix(relay): p-tag a one-to-one DM's agent partner on new messages (block#2475)
  fix(agents): show each message author's username and display name (block#2628)
  fix(agents): preserve visible edits in conversation history (block#2355)
  fix(canvas): keep todo edits from approving unrelated instructions (block#2350)
  fix(messages): keep messages in their canonical channel (block#2349)
  NEXUS-4165: Add Thinking to agent creation (block#2409)
  feat(plugins): let a plugin paint a backdrop behind the shell (block#2437)
  feat(search): lead empty quick open with unread conversations (block#2634)
  NEXUS-4170: Allow external apps to create private Solo chats (block#2411)
  fix(acp): count grouped thinking levels when checking a synced level (block#2640)
  feat(conversation): let plugin rows manage messages without visiting a channel (block#2512)
  feat(github): make side-panel link opening optional (block#2629)
  feat(messages): show a blurred thumbnail until an image loads (block#2556)
  fix(relay): give large roster and read-state reads a 30s deadline (block#2627)
  fix(user-status): show a status emoji's :name: on hover where the full status shows (block#2384)
  fix(inbox): keep the list's place when returning in the same session (block#2134)
  fix(messages): pass verified labels to the forward recipient picker (block#2633)
  feat(messages): forward a message to a person (block#2167)
  ...

# Conflicts:
#	tests/browser/settings.spec.mjs
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
* commit '4bb94e259':
  feat(github): rework the GitHub settings page (#2450)
  fix(mcp): accept create scopes in durable approvals (#2650)
  feat(bestie): Bestie tab and Remembers you for a hosted Bestie (#2478)
  fix(relay): p-tag a one-to-one DM's agent partner on new messages (#2475)
  fix(agents): show each message author's username and display name (#2628)
  fix(agents): preserve visible edits in conversation history (#2355)
  fix(canvas): keep todo edits from approving unrelated instructions (#2350)
  fix(messages): keep messages in their canonical channel (#2349)
  NEXUS-4165: Add Thinking to agent creation (#2409)
  feat(plugins): let a plugin paint a backdrop behind the shell (#2437)
  feat(search): lead empty quick open with unread conversations (#2634)
  NEXUS-4170: Allow external apps to create private Solo chats (#2411)
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…-service

* origin/main: (29 commits)
  Normalize profile names for verified-name matching (#2348)
  Add BuzzTerm font settings and compact glyph spacing (#2502)
  feat(plugins): let a host command run only verified bytes (#2535)
  NEXUS-4228: Add plugin toolbar actions and panel links (#2645)
  Keep plugin update controls stable and spaced (#2636)
  feat(inbox): rename to Activity and simplify the filter bar (#2543)
  fix(goose): track every replaced protected worker and check its security gate (#2528)
  docs(agents): say Pi agents don't take plugin notes yet (#2534)
  feat(agents): reorder agent cards with hold and drag (#1837)
  fix(messages): keep own sends from before the loaded history off the timeline (#2525)
  feat(github): rework the GitHub settings page (#2450)
  fix(mcp): accept create scopes in durable approvals (#2650)
  feat(bestie): Bestie tab and Remembers you for a hosted Bestie (#2478)
  fix(relay): p-tag a one-to-one DM's agent partner on new messages (#2475)
  fix(agents): show each message author's username and display name (#2628)
  fix(agents): preserve visible edits in conversation history (#2355)
  fix(canvas): keep todo edits from approving unrelated instructions (#2350)
  fix(messages): keep messages in their canonical channel (#2349)
  NEXUS-4165: Add Thinking to agent creation (#2409)
  feat(plugins): let a plugin paint a backdrop behind the shell (#2437)
  ...

# Conflicts:
#	src/bundled/goose/runtime.ts
mahanti added a commit that referenced this pull request Nov 5, 2026
Bestie replaced its entire DM timeline when a reply was opened. It now
uses the shared conversation-tab workspace: the DM stays mounted beside
resizable thread tabs, with existing placement, move/rename/close
controls and retained drafts when the side pane collapses. Profile and
GitHub panels use the same workspace and Bestie-scoped history.
Back/Forward restores addressed content; explicit Close retires its
visits and preserves surviving editor focus.

Bestie selection, canonical DM admission, creation, sending, and saved
drafts retain their existing owners. The workspace now supplies the
existing ForwardMessageProvider so main and thread message actions can
open the shared forwarding dialog; ChannelsPage remains its dialog
owner. No shared message, panel, forwarding, or design-system
implementation changed.

Checked head: `eac213604618e90b3c271cac4094c6bdd5e73d1d` (forwarding
repair in `e6153e79b`, plus main through `3ce52cefc`).

Validation:
- All 18 Bestie browser cases passed in Chromium and WebKit, covering
geometry, both themes, narrow/wide layouts, enlarged text, draft/DOM
retention, focus, history, agent tabs API, pointer feedback, and
forwarding action-to-dialog integration.
- 155 related Bestie and forwarding unit tests passed across 12 files.
Mandatory pre-commit and pre-push hooks passed.
- The new forwarding regression failed on the previous code in both
engines because Forward message was absent. With the provider restored,
both the main-message toolbar and thread-message More menu open the
separate shared dialog and address the selected message.
- One browser journey was added for this repair; none removed. It covers
real floating-action/menu interaction and thread-portal context reaching
a separately mounted dialog owner. Shared forwarding policy and
send/recovery cases remain with their existing unit tests.
- Independent review found no blockers in the forwarding repair. Prior
history/focus fixes were independently reviewed and checked separately.
- Current-head [hosted CI run
42090615911](https://github.com/block/buzz-app/actions/runs/42090615911)
passed, including all 23 browser shards, the required aggregate, and
advisory flake checks. All 45 applicable hosted/external checks passed;
Windows native validation was skipped as configured.

Addressed P2 feedback: bounded workspace height; shared messages
tab-state key; scoped application Close All handling; retained
inline-panel state on collapse; pointer-drag feedback; Close All focus
restoration; restored forwarding context for main and thread messages.

Human acceptance: Arjun confirmed the original workspace on `528a703d7`,
then explicitly confirmed both restored forwarding paths on `e6153e79b`
on November 5, 2026. The subsequent main integration imports the
upstream durable-approval type fix (#2650); the accepted forwarding
implementation and regression are unchanged. No live messages were sent
during agent verification.

Current CI follow-up: the first forwarding run encountered main's
unrelated durable-approval `create` scope type mismatch. The upstream
fix is integrated. TypeScript, all 18 Bestie browser cases, 155 related
unit tests, and mandatory hooks passed afterward; the resulting
current-head hosted checks also passed.

buzz-review-completed

---------

Signed-off-by: Arjun Mahanti <arjun@squareup.com>
Co-authored-by: bmo <a7b504d9a2bfe905589e9ac237d7d8d023b8d10547060ec9618e6487b55d756c@buzz.block.builderlab.xyz>
Co-authored-by: Codex <noreply@openai.com>
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