fix(desktop): explain open agent access - #2561
Merged
Merged
Conversation
daveh-beep
marked this pull request as ready for review
July 23, 2026 17:18
delkc
self-requested a review
July 23, 2026 17:18
delkc
approved these changes
Jul 23, 2026
Contributor
|
Good to me from a content/UX perspective. |
Contributor
|
Wonder if the language should be even more of a warning that this allows people to access your computer..I know if says it but in relation to tools which softens the warning a bit in my eyes |
daveh-beep
force-pushed
the
bumble/respond-to-access-warning
branch
from
July 28, 2026 15:10
fa114c6 to
280ff48
Compare
daveh-beep
added a commit
to daveh-beep/buzz
that referenced
this pull request
Jul 28, 2026
Contributor
Author
|
🤖 Addressed in 280ff48. The warning now leads with the direct consequence: “Anyone can send instructions to this agent and use it to access the computer or server where it runs.” I kept “computer or server” because agents may run remotely. |
daveh-beep
added a commit
to daveh-beep/buzz
that referenced
this pull request
Jul 28, 2026
daveh-beep
added a commit
to daveh-beep/buzz
that referenced
this pull request
Jul 28, 2026
Contributor
Author
|
🤖 @klopez4212 Here’s the final, one-sentence version for review. Open access warning
|
Contributor
|
@delkc to review again |
Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
delkc
force-pushed
the
bumble/respond-to-access-warning
branch
from
July 29, 2026 14:50
6a18861 to
dcd1998
Compare
Warn whenever a shared agent's respond-to mode hands host access to someone other than the owner — "Anyone" and "Selected people" both do, so both disclose it and only the audience phrase differs. The warning renders below the selector for "Anyone" but after the people picker for "Selected people", so it never sits between the user and the selection they came to make. Copy names the machine the agent actually runs on: a local agent reaches "your computer, including files, accounts, and connected tools"; a provider-backed one reaches "the server it runs on, including any accounts and tools available there" — deliberately not the owner's files, which aren't theirs to describe on a host they don't own. An unknown location falls back to the local wording rather than hedging with "computer or server", a concept an owner with no backend provider installed has never been shown. AgentDialog resolves the run location once and publishes it through AgentRunLocationContext, so the value doesn't have to be threaded through AgentDefinitionDialog and AgentInstanceEditDialog, which neither use it and are both already over the file-size ceiling. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Clay Delk <clay.delk@gmail.com>
Contributor
The instance-edit arm now wraps AgentInstanceEditDialog in AgentRunLocationProvider, so the routing test reads the form through the provider's children instead of asserting on the root element type. Adds coverage that the arm publishes the location resolved from the agent's backend record — local, remote, and unknown when there is no record. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Clay Delk <clay.delk@gmail.com>
delkc
enabled auto-merge (squash)
July 29, 2026 18:41
klopez4212
approved these changes
Jul 29, 2026
Contributor
|
lgtm |
tellaho
approved these changes
Jul 29, 2026
wpfleger96
added a commit
that referenced
this pull request
Jul 30, 2026
…chive * origin/main: (22 commits) feat(catalog): resolve publisher display name in catalog detail pane (#3640) feat(mesh): upgrade embedded mesh to v0.74 and harden shared compute (split 1/2 of #3467) (#3741) docs(nips): specify kind:30621 multi-repo projects (NIP-MP) (#3163) Refine agent sharing dialog (#3699) desktop: enable getUserMedia in the Linux WebKitGTK webview (#3607) fix: align responsive agent views (#3688) Add macOS agent menu-bar menu (#3565) Fix pending message feedback (#3543) fix(desktop): remove remaining Projects panel fills (#3742) feat(mobile): desktop-parity emoji and thread experience (#3485) desktop: restore direct community member adds (#3634) fix(desktop): explain open agent access (#2561) fix(cli): resolve agents from owner records (#3178) fix(desktop): remove Projects overview card fills (#3416) feat(replica): portable heartbeat-token fence with snapshot-local reader routing (#3268) fix(git): channel binding tooling + author remediation for unbound repos (#3626) feat: configure S3 URL addressing style (#3400) feat: add first-class OpenRouter provider support (#1975) feat(agent,acp): wire provider total_tokens through NIP-AM publish chain (#3593) chore(release): release Buzz Desktop version 0.5.2 (#3624) ... Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
wpfleger96
pushed a commit
that referenced
this pull request
Jul 30, 2026
…g-pipeline * origin/main: (25 commits) Refine agent sharing dialog (#3699) desktop: enable getUserMedia in the Linux WebKitGTK webview (#3607) fix: align responsive agent views (#3688) Add macOS agent menu-bar menu (#3565) Fix pending message feedback (#3543) fix(desktop): remove remaining Projects panel fills (#3742) feat(mobile): desktop-parity emoji and thread experience (#3485) desktop: restore direct community member adds (#3634) fix(desktop): explain open agent access (#2561) fix(cli): resolve agents from owner records (#3178) fix(desktop): remove Projects overview card fills (#3416) feat(replica): portable heartbeat-token fence with snapshot-local reader routing (#3268) fix(git): channel binding tooling + author remediation for unbound repos (#3626) feat: configure S3 URL addressing style (#3400) feat: add first-class OpenRouter provider support (#1975) feat(agent,acp): wire provider total_tokens through NIP-AM publish chain (#3593) chore(release): release Buzz Desktop version 0.5.2 (#3624) docs: add Linux rendering troubleshooting guide (#3573) fix(desktop): discover bun-installed agent CLIs in ~/.bun/bin (#3343) feat(tracing): correlate trace IDs in relay logs (#3608) ... Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
joahg
added a commit
to joahg/buzz-dev-mode
that referenced
this pull request
Jul 30, 2026
…-style * origin/main: fix(acp): preserve truncated thread context (block#3340) feat(catalog): resolve publisher display name in catalog detail pane (block#3640) feat(mesh): upgrade embedded mesh to v0.74 and harden shared compute (split 1/2 of block#3467) (block#3741) docs(nips): specify kind:30621 multi-repo projects (NIP-MP) (block#3163) Refine agent sharing dialog (block#3699) desktop: enable getUserMedia in the Linux WebKitGTK webview (block#3607) fix: align responsive agent views (block#3688) Add macOS agent menu-bar menu (block#3565) Fix pending message feedback (block#3543) fix(desktop): remove remaining Projects panel fills (block#3742) feat(mobile): desktop-parity emoji and thread experience (block#3485) desktop: restore direct community member adds (block#3634) fix(desktop): explain open agent access (block#2561) fix(cli): resolve agents from owner records (block#3178) fix(desktop): remove Projects overview card fills (block#3416) feat(replica): portable heartbeat-token fence with snapshot-local reader routing (block#3268) Signed-off-by: Joah Gerstenberg <joah@squareup.com>
wpfleger96
added a commit
that referenced
this pull request
Jul 30, 2026
* origin/main: (59 commits) Fix video reviews in thread replies (#3719) feat(release): make desktop releases immutable (#3568) Make relay reconnect backoff authoritative (#3774) feat(desktop): add password-protected backups in settings (#3701) fix(desktop): reuse profiles when joining communities (#2155) Render mobile agent mention chips (#3702) fix(catalog): update Amp description (#3758) fix(acp): preserve truncated thread context (#3340) feat(catalog): resolve publisher display name in catalog detail pane (#3640) feat(mesh): upgrade embedded mesh to v0.74 and harden shared compute (split 1/2 of #3467) (#3741) docs(nips): specify kind:30621 multi-repo projects (NIP-MP) (#3163) Refine agent sharing dialog (#3699) desktop: enable getUserMedia in the Linux WebKitGTK webview (#3607) fix: align responsive agent views (#3688) Add macOS agent menu-bar menu (#3565) Fix pending message feedback (#3543) fix(desktop): remove remaining Projects panel fills (#3742) feat(mobile): desktop-parity emoji and thread experience (#3485) desktop: restore direct community member adds (#3634) fix(desktop): explain open agent access (#2561) ... # Conflicts: # desktop/scripts/check-file-sizes.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Why
Hack-day feedback exposed a dangerous mismatch between the UI and the underlying access model. The
Anyonerespond-to mode appeared as a neutral dropdown choice, while a Buzz agent may act with the files, accounts, and tools available on the machine where it runs.People reasonably read this as sharing a bot in a channel. The current UI did not explain that it can also share the agent's available access.
What
Reframes
respond-toas agent access in user-facing UI.Uses plain audience labels: Only me, Anyone, and Selected people.
Warns for both sharing modes, not just
Anyone—Selected peoplealso hands host access to someone other than the owner, so only the audience phrase differs:Names the machine the agent actually runs on. A provider-backed (remote) agent reads:
The remote wording deliberately omits the owner's files — those aren't theirs to describe on a host they don't own.
Places the warning below the selector for
Anyone, but after the people picker forSelected people, so it never sits between the user and the selection they came to make.Removes Nostr, harness, pubkey, and
!shutdownjargon from the primary decision copy. Direct pubkey entry remains available as an advanced path.Replaces the green open-access avatar dot with an amber warning marker and accessible text. Selected access uses a separate blue status.
Aligns the sidebar action and profile field with the same language.
Records the shared-field disclosure contract in
desktop/src/features/agents/AGENTS.mdso future surfaces do not silently omit it.Design decisions
Persistent inline warning, not a confirmation modal. The setting does not autosave; the consequence remains visible beside the selection until the person chooses Save access. This gives the information before commitment without adding a dismiss-and-confirm ritual that would repeat in every create/edit surface.
An unknown run location falls back to the local wording. It does not hedge with "computer or server". A remote host requires an installed
buzz-backend-*provider, and without oneWhereToRunSectionnever renders — so "server" would name a concept the owner has never been shown. When it is remote, they picked that host from the selector themselves. Surfaces never synthesize a run location they don't have.One resolution site, published through context.
AgentDialogresolves the run location (runLocationForBackendfromManagedAgent.backend,runLocationForRunOnfrom the create flow'sWhereToRunDraft) and publishes it viaAgentRunLocationContext. It is not threaded as a prop throughAgentDefinitionDialog(1047 lines) orAgentInstanceEditDialog(1228 lines) — neither uses the value, and both are already over the file-size ceiling. Surfaces outside that tree (EditRespondToDialog) pass the prop directly.The copy follows the writing system's guidance for high-sensitivity decisions: lead with the material consequence, use plain actor/action language, keep helper text adjacent and persistent, and never rely on color alone.
Scope
Desktop only. The web and mobile clients do not currently expose this setting. No protocol, gate, runtime, persistence, or backend behavior changes.
This does not add team-scoped remote agents. It makes the current local-or-remote access model honest while that product work remains separate.
Validation
pnpm exec biome checkandpnpm exec tsc --noEmit— cleanlib/agentAccessWarning.test.mjs(8/8) — every mode × run-location copy variant, both resolvers, unknown-reads-as-local, blankrunOnis not a providerui/respondToFieldContract.test.mjs(8/8) — plain labels, both warning positions, source-order guard that theallowlistwarning follows the picker, helper-not-inline-copy guardagent-access-warning.spec.ts(3/3) — native local, provider-backed remote (asserts the server sentence and not "your computer"), persona-backed edit; includes a bounding-box check that theSelected peoplewarning renders below the picker