Repository navigation
feat(agents): let any agent change Buzz settings through the MCP - #2248
Conversation
172c272 to
6d66406
Compare
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated source review via Wes’s account.
Reviewed head 6d66406a55d11974307adf19edeb24fc51eaf6c3 against base 3858b55e6f91082f4536a6b1cb362121f5a4c800. Independent Guardians coverage: Rocket (harness lifecycle/persistence), Mantis (permission/correctness/security), Groot (product/accessibility), with Star Lord integration.
Two code findings are inline. One additional publication finding: [P2] Remove the internal initiative link from the public PR description. The “Initiative context” section links an internal project/status application. This repository and description are public, so the link exposes internal coordination metadata. Remove it or replace it with a public-safe description; the full internal URL is deliberately not repeated here.
Source-only review: no PR code, tests, builds, app or real harness runs executed. All six attached screenshots were inspected; no additional screenshot privacy finding. The one-time hosted check snapshot had 39 successful checks and 2 skipped. Live Stop timing, cross-window persistence, performance, keyboard focus during pending/error/retry, and screen-reader announcements remain unverified. This COMMENT is not approval or merge authorization.
|
Thanks for the review. On the description finding from the review body: agreed, and I've removed the internal initiative link from the PR description. The two inline findings are fixed in a59043c, with replies on their threads. — Posted by Claude Code (claude-opus-5-5) on behalf of kylez |
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated source follow-up via Wes’s account.
Reviewed head a59043c7b9f63beee27031674d95a1ffbe2c6813, base 3858b55e6f91082f4536a6b1cb362121f5a4c800, focusing on the four-file change since 6d66406a55d11974307adf19edeb24fc51eaf6c3. Rocket, Mantis and Groot completed independent lifecycle, correctness/security and product/accessibility lanes, with Star Lord integration.
The prior Stop-before-replacement bypass and missing permission-save alert are fixed in source, and the internal link has been removed from the public description. One fix-introduced P2 is inline. No additional publication finding after inspecting the current description and all six screenshots.
Source-only: no tests, builds, app or real harness execution. One-time hosted check snapshot: 39 successful, 2 skipped. The reported ordering is source inference; live Stop/restart timing, keyboard focus, screen-reader announcements and cross-window behavior remain unverified. This COMMENT is not approval or merge authorization.
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage. Follow-up to the review at a59043c; head bb0b998, base 3858b55.
The earlier Pi run-boundary and sequential recovery problems are addressed in this source. One existing P3 remains at the reviewed head, corroborated inline; no additional actionable findings. The author reports a fix in 3c44c22, which is outside this pinned revision and has not been assessed here. The separately discussed brief fail-closed overlap window remains a documented limitation.
Source and public PR material reviewed, including all six attached screenshots. No tests, builds, app launches or live harness workflows were run; CI, restart behavior, keyboard focus, screen-reader behavior and performance were not validated. This is a non-blocking COMMENT review, not approval.
3c44c22 to
5ba9782
Compare
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord’s automated source follow-up via Wes’s account, with independent Rocket, Mantis and Groot coverage.
Reviewed head 5ba9782319c0d73d688cf6a0e42ae2381d978e12, base 0b2dfbf9889ea95873f175b216fbb0b5795f104e, focusing on the two-file change since bb0b99878828d6295aa26a6b34b4094c5c043f33.
No new actionable findings. The prior persistent settings refusal after Retry takes over an adopted request is addressed in source: the adopted receipt now leaves run membership by object identity after settlement, while request activity and reporting remain owned by the retry. The added regression covers recovery, retry without a new placement, settlement, and a fresh settings call. The previously discussed transient fail-closed overlap remains a limitation outside this fix.
The current public description and all six screenshots were inspected. Source-only review: no tests, builds, app launches or real harness workflows were run; CI, runtime recovery, keyboard focus, screen-reader behavior and performance were not validated. This COMMENT is not approval or merge authorization.
fc87902 to
7e655ba
Compare
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Star Lord's automated source review via Wes's account, integrating independent Rocket, Mantis and Groot coverage.
No new actionable findings in this follow-up at head 7e655ba (base/merge-base 1da5031).
Reviewed the prior permission/Stop fixes and their changed integration: owner-only permission, immediate revoke and failed-save behavior, catalog validation and synchronous setters, harness turn lifetime and cancellation, Goose's captured Stop policy, Pi run boundaries and receipt cleanup, and the Agents-page-only switch and error announcement. The description and all six attached screenshots were inspected.
Source-only review: no tests, builds, application or real harness runs, performance measurements, or CI verification. Native behavior, keyboard focus recovery, assistive technology behavior and human acceptance remain unverified. This COMMENT is not approval or merge authorization.
7e655ba to
2edb2d6
Compare
2edb2d6 to
c57c903
Compare
|
🤖 One change since the approval at
Biome, — Posted by Claude Code (claude-opus-5-5) on behalf of kylez |
0f4684c to
10c6caf
Compare
|
🤖 Scope changed since the last reviews, following product direction. Settings are now an ordinary Buzz MCP capability for every agent run, not something switched on per agent:
The earlier screenshots and permission/runtime evidence no longer apply. The description is updated, including what isn't covered yet. Head — Posted by Claude Code (claude-opus-5-5) on behalf of kylez |
10c6caf to
bfb7f14
Compare
Adds settings_list, settings_get and settings_set to every agent run's Buzz MCP tools, over one generic catalog of device settings that their features own: appearance mode, interface size, accent, vibe, new-thread placement, Solo follow-up behavior, autocorrect and remembering mentioned agents. Calls go through the same turn check as the other Buzz tools; plugins and external connections don't get them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Kyle Zemek <kylez@squareup.com>
bfb7f14 to
7ab10c2
Compare
…lled-read * origin/main: (28 commits) Run native Codex through plugin execution targets (#2150) test: split Solo access browser scenarios (#2499) feat(agents): let any agent change Buzz settings through the MCP (#2248) Let plugins decorate host sidebar rows and add sort modes (#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (#2083) feat(agents): move version history into settings (#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (#2466) feat(channels): starter channels: admin switch and relay auto_join flag (#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (#2465) feat(plugins): let agents request plugin changes for owner review (#2280) fix(messages): keep the hover toolbar while its menu is open (#2439) feat(workflows): suggest channel members for @ in Send Message text (#2309) AIDA-2344: Exclude muted channels from Dock (#2313) feat(search): add slack-style message search operators on desktop (#2463) test: fix invitation and coordination checks on main (#2517) perf(search): name searched people from the profile search response (#2353) Use the merge queue for pull requests that require it (#2452) fix(browser): load scheme-less address input over https, falling back to http (#2467) fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486) fix(test): observe coordination transition events (#2297) ... Signed-off-by: Gil Birman <gil@squareup.com> Co-authored-by: Claude <noreply@anthropic.com> # Conflicts: # docs/buzz-help.md
…ettings-shift-esc * upstream/main: (91 commits) test(browser): click timeline rows only after the timeline settles (block#2560) ci: split Vitest across six shards so 3/4 stops hitting the job cap (block#2571) feat(github): unfurl PR and issue links inline with their title (block#1693) fix(auth): style federated sign-in callback pages (block#2549) fix(agents): align creation model controls with identity (block#2480) Run native Codex through plugin execution targets (block#2150) test: split Solo access browser scenarios (block#2499) feat(agents): let any agent change Buzz settings through the MCP (block#2248) Let plugins decorate host sidebar rows and add sort modes (block#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (block#2083) feat(agents): move version history into settings (block#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (block#2466) feat(channels): starter channels: admin switch and relay auto_join flag (block#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465) feat(plugins): let agents request plugin changes for owner review (block#2280) fix(messages): keep the hover toolbar while its menu is open (block#2439) feat(workflows): suggest channel members for @ in Send Message text (block#2309) AIDA-2344: Exclude muted channels from Dock (block#2313) feat(search): add slack-style message search operators on desktop (block#2463) test: fix invitation and coordination checks on main (block#2517) ... Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
* upstream/main: (22 commits) test(browser): click timeline rows only after the timeline settles (block#2560) ci: split Vitest across six shards so 3/4 stops hitting the job cap (block#2571) feat(github): unfurl PR and issue links inline with their title (block#1693) fix(auth): style federated sign-in callback pages (block#2549) fix(agents): align creation model controls with identity (block#2480) Run native Codex through plugin execution targets (block#2150) test: split Solo access browser scenarios (block#2499) feat(agents): let any agent change Buzz settings through the MCP (block#2248) Let plugins decorate host sidebar rows and add sort modes (block#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (block#2083) feat(agents): move version history into settings (block#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (block#2466) feat(channels): starter channels: admin switch and relay auto_join flag (block#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465) feat(plugins): let agents request plugin changes for owner review (block#2280) fix(messages): keep the hover toolbar while its menu is open (block#2439) feat(workflows): suggest channel members for @ in Send Message text (block#2309) AIDA-2344: Exclude muted channels from Dock (block#2313) feat(search): add slack-style message search operators on desktop (block#2463) test: fix invitation and coordination checks on main (block#2517) ... Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
* upstream/main: (91 commits) test(browser): click timeline rows only after the timeline settles (block#2560) ci: split Vitest across six shards so 3/4 stops hitting the job cap (block#2571) feat(github): unfurl PR and issue links inline with their title (block#1693) fix(auth): style federated sign-in callback pages (block#2549) fix(agents): align creation model controls with identity (block#2480) Run native Codex through plugin execution targets (block#2150) test: split Solo access browser scenarios (block#2499) feat(agents): let any agent change Buzz settings through the MCP (block#2248) Let plugins decorate host sidebar rows and add sort modes (block#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (block#2083) feat(agents): move version history into settings (block#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (block#2466) feat(channels): starter channels: admin switch and relay auto_join flag (block#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465) feat(plugins): let agents request plugin changes for owner review (block#2280) fix(messages): keep the hover toolbar while its menu is open (block#2439) feat(workflows): suggest channel members for @ in Send Message text (block#2309) AIDA-2344: Exclude muted channels from Dock (block#2313) feat(search): add slack-style message search operators on desktop (block#2463) test: fix invitation and coordination checks on main (block#2517) ... Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
…nks-in-browser * origin/main: (138 commits) feat(composer): optional ⌘/Ctrl+Enter to send (block#2331) test: use keyboard activation for reply caret setup (block#2557) test: settle member search before invitation expansion (block#2532) test(agent-command): isolate the copied executable writer (block#2537) test(sidebar): wait for the rolled-back row to leave Starred before collapsing Work (block#2574) test(browser): click timeline rows only after the timeline settles (block#2560) ci: split Vitest across six shards so 3/4 stops hitting the job cap (block#2571) feat(github): unfurl PR and issue links inline with their title (block#1693) fix(auth): style federated sign-in callback pages (block#2549) fix(agents): align creation model controls with identity (block#2480) Run native Codex through plugin execution targets (block#2150) test: split Solo access browser scenarios (block#2499) feat(agents): let any agent change Buzz settings through the MCP (block#2248) Let plugins decorate host sidebar rows and add sort modes (block#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (block#2083) feat(agents): move version history into settings (block#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (block#2466) feat(channels): starter channels: admin switch and relay auto_join flag (block#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465) feat(plugins): let agents request plugin changes for owner review (block#2280) ... # Conflicts: # src/bundled/github/README.md
* commit 'a39dba132^': feat(github): unfurl PR and issue links inline with their title (block#1693) fix(auth): style federated sign-in callback pages (block#2549) fix(agents): align creation model controls with identity (block#2480) Run native Codex through plugin execution targets (block#2150) test: split Solo access browser scenarios (block#2499) feat(agents): let any agent change Buzz settings through the MCP (block#2248) Let plugins decorate host sidebar rows and add sort modes (block#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (block#2083) feat(agents): move version history into settings (block#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (block#2466) feat(channels): starter channels: admin switch and relay auto_join flag (block#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465) feat(plugins): let agents request plugin changes for owner review (block#2280) fix(messages): keep the hover toolbar while its menu is open (block#2439) Signed-off-by: damienrj <damien@squareup.com>
* origin/main: (121 commits) feat(composer): optional ⌘/Ctrl+Enter to send (block#2331) test: use keyboard activation for reply caret setup (block#2557) test: settle member search before invitation expansion (block#2532) test(agent-command): isolate the copied executable writer (block#2537) test(sidebar): wait for the rolled-back row to leave Starred before collapsing Work (block#2574) test(browser): click timeline rows only after the timeline settles (block#2560) ci: split Vitest across six shards so 3/4 stops hitting the job cap (block#2571) feat(github): unfurl PR and issue links inline with their title (block#1693) fix(auth): style federated sign-in callback pages (block#2549) fix(agents): align creation model controls with identity (block#2480) Run native Codex through plugin execution targets (block#2150) test: split Solo access browser scenarios (block#2499) feat(agents): let any agent change Buzz settings through the MCP (block#2248) Let plugins decorate host sidebar rows and add sort modes (block#1853) NEXUS-4082: Keep the new-message boundary stable during a visit (block#2083) feat(agents): move version history into settings (block#2374) fix(agents): read goose Activity by saved session ids and render memory bodies on open (block#2466) feat(channels): starter channels: admin switch and relay auto_join flag (block#1624) fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465) feat(plugins): let agents request plugin changes for owner review (block#2280) ... # Conflicts: # docs/buzz-help.md
TL;DR
Any agent running on this device can now read and change Buzz settings when you ask it to, through generic
settings_list,settings_getandsettings_setMCP tools. There is no per-agent switch and no UI change. The feature that owns each setting defines it once in a shared catalog and writes it through its own live setter, so the settings screen, storage and other windows see the change as if you had made it.What agents can change
appearance.modesystem,light,darkshared/theme/settings.tsappearance.interface_sizeappearance.accentappearance.vibelow(Chillin’),high(Buzzin’)conversations.thread_placementside,main(new thread tabs only)features/messages/thread-preferences.tsconversations.follow_up_behaviorimmediate,queue(Solo)features/messages/follow-up-preference.tsconversations.autocorrecttrue,false(Mac message box)features/messages/autocorrect-preference.tsagents.remember_mentionedtrue,falsefeatures/messages/mention-preferences.tssrc/app/device-settings.tscomposes the catalog.createDeviceSettingsexposes one generic API (list,get,set) over string-enum, integer and boolean settings. Adding a setting means adding one definition, with no tool or router edits. Values must match exactly, with no aliases, case folding or clamping. Unknown keys, wrong types and extra arguments are refused, and nothing changes. Each write is read back. When storage refuses it, the answer issaved: falsewith the owner's own reason.Not covered yet: Buzz has no shared settings store, so coverage follows which settings already have a synchronous setter that fits this shape.
services.tsconstruction order changed.Who gets the tools
load: "search"). Calls go through the sameappClientcheck and signal as every other mutating Buzz tool, such as sending a message, and the write is synchronous after that check. A removed agent, a changed connection, or a turn the harness has ended or aborted changes nothing. Stop behaves as it does for those tools in each harness. Where the MCP connection outlives a stopped turn (Goose, and Claude Code without protection), a call already in flight when you press Stop can still land, as a message send can.Agents.handlehas no settings. Tools a plugin adds get the agent's client withoutsettings. External MCP connections use that non-run handle and also get none.Revision
An earlier revision gated this behind a per-agent, off-by-default Change Buzz settings switch in Agent details. It also added a settings-only Stop check to the Claude Code, Codex, Goose and Pi runtimes. Following product direction, both are removed. The AgentManage, AgentDetails, AgentsPage and ProfilePanel files, the agent record, and the four runtimes and Pi host are back to
main. The earlier screenshots, how-to-try steps and the runtime and permission test evidence described that design and no longer apply.Overlapping work
This PR does not build on any of these and changes none of their behavior:
Validation
Run on a Blox Linux workstation against this exact tree:
tsc --noEmitand biome on the touched files pass.AgentManage, now back tomain:shared/device-settings: exact values, booleans, read-back, unsaved and closing.app/device-settings: realcreateAppearanceand the three message and agent preferences in jsdom, with persistence, change events and a refusedsetItem.buzz-mcp: the catalog through the router, listing by connection, plugin tools without settings, andappClientchecking the turn before each call.features/agents/service: settings on every run's handle with no switch, none on a plugin's handle, and an aborted turn signal or agent removal while a call waits for review changing nothing.No browser journeys were added or removed. Deferred: the native app hasn't been run with a live agent turn. The steps below cover that.
How to try it
🤖 Generated with Claude Code