Skip to content

feat(acp): add external frontier coding seats - #3092

Open
StephGlansberg wants to merge 20 commits into
block:mainfrom
StephGlansberg:codex/buzz-frontier-clis-main
Open

feat(acp): add external frontier coding seats#3092
StephGlansberg wants to merge 20 commits into
block:mainfrom
StephGlansberg:codex/buzz-frontier-clis-main

Conversation

@StephGlansberg

Copy link
Copy Markdown

Summary

Adds four disabled-by-default external coding seats for Buzz ACP:

  • Codex CLI
  • Claude Code
  • Cursor CLI
  • Grok CLI

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 passed
  • Current origin/main cherry-pick — conflict-free
  • Pre-push Rust unit gate — all five suites passed
  • Desktop Tauri — 1,781 passed, 14 ignored
  • Cursor runtime validation and native ACP handshake — passed
  • Grok runtime validation and native ACP handshake — passed
  • Live Cursor proof: Mechanon Buzz request → repository edit/test → signed Cursor reply
  • Live Grok proof: Nexus Buzz request → repository edit/test → signed Grok reply
  • LaunchAgent plists validate and remain RunAtLoad=false, KeepAlive=false

The 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.

@StephGlansberg
StephGlansberg requested a review from a team as a code owner July 27, 2026 07:59
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>
@StephGlansberg
StephGlansberg force-pushed the codex/buzz-frontier-clis-main branch from f42bb40 to 57ab06b Compare July 27, 2026 08:00

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment on lines +431 to +436
for key in [
"BUZZ_RELAY_URL",
"BUZZ_PRIVATE_KEY",
"BUZZ_ACP_PRIVATE_KEY",
"BUZZ_PRIVATE_KEY_FILE",
"BUZZ_EXPECTED_PUBLIC_KEY",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge 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 👍 / 👎.

Comment on lines +735 to +743
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;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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>
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.

1 participant