Repository navigation
fix(plugins): read Square HTTPS sources with the Block SSH agent - #2465
Conversation
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Swish! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
ccee748 to
e3d7028
Compare
kazemek21
left a comment
There was a problem hiding this comment.
Kyle reviewed this PR and the Nexus review-tracker notes and approved with no comments.
Posted by Codex (gpt-6.1-sol) on behalf of kylez
e3d7028 to
b5ef7c2
Compare
Adding a plugin from an HTTPS URL for a private repository under github.com/squareup failed with "could not read Username for 'https://github.com': terminal prompts disabled". Imports run Git without credential helpers or prompts, so the HTTPS clone is anonymous. On macOS, when the Block agent socket exists, clone such HTTPS sources over ssh://[email protected]/squareup/... with that agent. The saved source keeps the HTTPS URL. Paths containing `%` no longer select the agent, because Git decodes SSH paths after the `/squareup/` check. Co-authored-by: mboston Implementer <932d3b6ebea6cc83e091551ae46d1c7e7f8f7d0fa8e9cef5e6facc8544af413b@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Matthew Boston <[email protected]>
b5ef7c2 to
f57b2c9
Compare
…punctuation * upstream/main: (78 commits) 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) perf(search): name searched people from the profile search response (block#2353) Use the merge queue for pull requests that require it (block#2452) fix(browser): load scheme-less address input over https, falling back to http (block#2467) fix(identity): stop one-click key unlinks and show the linked backed-up key (block#2486) fix(test): observe coordination transition events (block#2297) fix(profiles): keep the next view's profile reads through a shrink (block#2395) fix(channels): show Add and Send message errors above the Manage members list (block#2421) fix(threads): keep reply hooks off agent activity bubbles (block#2422) fix(channels): offer only Copy link in a not-joined preview's sidebar actions (block#2425) test: scope row menu placement checks to active section rows (block#2493) feat(relay): detach channel windows to a point in history (block#2042) feat(identity): decide a missing backup choice from community membership (block#2378) Offer Builderlab decisions in FI builds (block#2227) ... Signed-off-by: Cheng Peng <[email protected]> # Conflicts: # docs/buzz-help.md
…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 <[email protected]> Co-authored-by: Claude <[email protected]> # 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 <[email protected]> Co-authored-by: Cursor <[email protected]>
* 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 <[email protected]> Co-authored-by: Cursor <[email protected]>
* 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 <[email protected]> Co-authored-by: Cursor <[email protected]>
…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 <[email protected]>
* 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
Stacked on #2465. ## Why Plugin imports run Git without the user's Git or SSH configuration, credential helpers or prompts. Per-host setups that make `git clone` work in a terminal, such as an `insteadOf` rule that reads HTTPS over SSH or an `IdentityAgent` that selects an SSH agent, do not apply to them. Today the only fix is a hard-coded case for one GitHub organization (#2012, #2465), so every other organization or host needs a Buzz code change. ## What - A versioned `repository-access.json` beside the profile folders (same location rules as `managed-plugins.json`, overridable with `BUZZ_REPOSITORY_ACCESS`) declares which sources Git reads over which SSH user and agent socket, and whether matching HTTPS sources are read over SSH. - A rule can change only the scheme, SSH user and agent socket. Host, port and path stay as entered, the saved source keeps the entered URL, relay-authorized sources are never moved to SSH, and paths with `%` never match. No helpers, SSH config or other programs run. - The existing organization case becomes the one built-in rule with the same behavior. File rules are tried first; `builtInRules: false` turns built-ins off. - Invalid rules are dropped and reported; an unusable file leaves only the built-in rules. The desktop reads the file on each import and logs problems and matched rules. - A failed read names the rule and agent socket it used. - `buzzodz plugin access [URL]` shows the file, its status and problems, the rules in order, and for a URL the rule, clone URL and agent socket. - Docs: new `docs/repository-access.md`; `docs/plugin-architecture.md` links to it. ## Risk - With no rules file, behavior matches #2465. One wording change: the not-a-socket error is now `SSH agent path is not a socket: <path>`. - A rule that rewrites an HTTPS prefix sends public repositories under it through the agent too; the doc says how to limit a rule to SSH. - The first rule matching an HTTPS source decides it: a file rule with `rewriteHttps: false` keeps those sources on HTTPS even where the built-in rule would read them over SSH. ## Testing - Every slice was written test-first. Covered: each field validation, oversize/unsupported/absent files, the env override, rule order and `builtInRules`, built-in parity with the cases #2465 tested, other hosts, `rewriteHttps: false` (including shadowing the built-in rule), socket-less rules with and without `SSH_AUTH_SOCK`, platform filtering, `%` paths, relay-authorized imports (fails if authorization is ignored), the agent socket reaching the Git process, the failure suffix, and the CLI report. - `buzzodz-plugins`: 78 tests pass (3 runs), clippy and fmt clean. Tauri: clippy clean; lib tests pass except `window_state::tests`, which segfaults on this machine on the base branch too. - Ran `buzzodz plugin access` against a temporary home with absent, valid, partly invalid and unusable files, and with accepted and rejected URLs. - Not tested: Add a plugin in the native app with a rules file; Windows build (read only). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: Matthew Boston <[email protected]> Co-authored-by: mboston Implementer <932d3b6ebea6cc83e091551ae46d1c7e7f8f7d0fa8e9cef5e6facc8544af413b@buzz.block.builderlab.xyz> Co-authored-by: Claude Opus 5.5 <[email protected]>
Why
Adding a plugin from an HTTPS URL for a private repository under
github.com/squareupfails withGit could not read this repository: … could not read Username for 'https://github.com': terminal prompts disabled. Imports run Git without credential helpers or interactive prompts, so the HTTPS clone is anonymous. The same repository is readable over SSH with the Block agent the importer already supports forssh://[email protected]/squareup/…sources.What
On macOS, when the Block SSH agent socket exists, an
https://github.com/squareup/…source (default port, no relay authorization) is cloned overssh://[email protected]/squareup/…with that agent. The saved source keeps the HTTPS URL the user entered, so updates apply the same transport. Without the socket, or on other platforms, behavior is unchanged.Paths containing
%no longer select the Block agent for either form. Git decodes SSH paths, so%2F..could leave/squareup/after the prefix check.Risk
When the socket exists, public
squareuprepositories entered as HTTPS also go through the agent. If the agent is unusable they fail where anonymous HTTPS used to work. The plugin architecture doc states this.Testing
block_agent_reads_squareup_https_over_sshfailed on the rewrite assertion before the change and passes after it. The selection test now also covers non-Square HTTPS, non-default ports, lookalike hosts, and percent-encoded paths. It failed without the%guard.buzzodz-pluginstests, clippy (-D warnings), and fmt pass.SSH_AUTH_SOCKunset,prepare_gitreads a privatesquareuprepository from its HTTPS URL. The recorded source is the HTTPS URL.prepare_git_authorizedwiring between the clone URL and the saved source.🤖 Generated with Claude Code