feat(acp): add external frontier coding seats - #3092
Conversation
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
f42bb40 to
57ab06b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f42bb40117
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
| for key in [ | ||
| "BUZZ_RELAY_URL", | ||
| "BUZZ_PRIVATE_KEY", | ||
| "BUZZ_ACP_PRIVATE_KEY", | ||
| "BUZZ_PRIVATE_KEY_FILE", | ||
| "BUZZ_EXPECTED_PUBLIC_KEY", |
There was a problem hiding this comment.
Strip the mirrored Nostr signer when publisher access is disabled
When Desktop launches the harness with git-credential-nostr available, managed_agents/runtime.rs sets NOSTR_PRIVATE_KEY to the same secret as BUZZ_PRIVATE_KEY; because this removal list does not clear it, --no-agent-publisher-credentials still exposes the signer to the arbitrary ACP child, which can invoke the credential helper to create signed NIP-98 authentication and access relay-hosted repositories. Remove NOSTR_PRIVATE_KEY at every spawn and add it back only through the publisher-credential opt-in path.
Useful? React with 👍 / 👎.
| const claudeScrubPrefix = ANTHROPIC_CREDENTIAL_ENV.flatMap((name) => ["-u", name]); | ||
| const cursorScrubPrefix = CURSOR_OVERRIDE_ENV.flatMap((name) => ["-u", name]); | ||
| const grokScrubPrefix = GROK_OVERRIDE_ENV.flatMap((name) => ["-u", name]); | ||
| const scrubPrefix = | ||
| selector === "claude_cli" | ||
| ? claudeScrubPrefix | ||
| : selector === "cursor_cli" | ||
| ? cursorScrubPrefix | ||
| : grokScrubPrefix; |
There was a problem hiding this comment.
Scrub ambient Buzz signers before using key files
When any generated LaunchAgent runs in a launchd environment containing BUZZ_PRIVATE_KEY or legacy BUZZ_ACP_PRIVATE_KEY, these prefixes remove only provider-specific variables, so buzz-acp receives both the manifest's --private-key-file and an environment-provided --private-key; Clap rejects those conflicting inputs and the worker exits before startup. Codex bypasses /usr/bin/env entirely, while the other selectors need the Buzz credential names added to their scrub prefix.
Useful? React with 👍 / 👎.
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
…lis-main Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com> # Conflicts: # crates/buzz-acp/src/config.rs
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Signed-off-by: StephGlansberg <StephGlansberg@users.noreply.github.com>
Summary
Adds four disabled-by-default external coding seats for Buzz ACP:
The workers share one supervisor, retain distinct signed Buzz identities, subscribe to the same eight AEON rooms, use existing local CLI authentication, and expose their native coding/files/shell capabilities. LaunchAgent generation remains inert until explicitly installed and started.
Related issue
N/A. No matching open issue or PR found.
Testing
node --test deploy/local/aeon-external-cli/worker.test.mjs— 35 passedorigin/maincherry-pick — conflict-freeRunAtLoad=false,KeepAlive=falseThe Cursor ACP catalog currently exposes the fast Grok 4.5 variant only; the manifest reports that limitation rather than claiming the requested non-fast variant is active.