fix(acp): default Claude-runtime agents out of inheriting operator claude.ai connectors - #3550
Open
Tr1ckyMag1ca1 wants to merge 1 commit into
Open
Conversation
…aude.ai connectors
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.
Summary
Extends the per-runtime env-default mechanism introduced in #3420 to the Claude runtime. A Buzz-managed Claude agent currently inherits the operator's claude.ai account connectors (Gmail, Drive, HubSpot, ClickUp, etc.) straight into the agent's tool surface. Those connectors were wired up by the operator for their own use; once the agent is placed in a community and its inbound gate is opened past
owner-only, that same connector surface is reachable from a shared agent.This sets
ENABLE_CLAUDEAI_MCP_SERVERS=falseas a per-runtime default for the Claude command identities, exactly mirroring how #3420 defaultsHERMES_ACP_SKIP_CONFIGURED_MCP=1for Hermes: the connector surface becomes opt-in rather than inherited-by-default. Nothing else changes.Why this is the same shape as #3420
default_agent_env()already establishes the pattern: per-runtime env defaults, applied inAcpClient::spawnonly when the operator has not set the variable (thestd::env::var_os(key).is_none()guard). So an operator or persona that wants the connectors keeps them by settingENABLE_CLAUDEAI_MCP_SERVERS=truein the parent env or personaextra_env— the default never overrides an explicit choice. This is the identical escape-hatch semantics Hermes gets today.Scope — deliberately narrow, and honest about it
ENABLE_CLAUDEAI_MCP_SERVERSis honored by Claude Code from v2.1.63. Older builds ignore the unknown variable (same tolerance the existingGOOSE_SCHEDULER_DISABLED_ENVline relies on), so this is safe across versions — a no-op on old, effective on new..mcp.json, user-scopemcpServersin~/.claude.json) are a separate inheritance path this PR does not close. Fully isolating those needs--strict-mcp-config+--mcp-config, whose interaction with ACP session-provided MCP servers I have not verified end-to-end, so I've left it out rather than assert behavior I can't stand behind. Happy to follow up in a separate PR if maintainers want it.Test
Adds
default_agent_env_recognizes_claude_identities, mirroring the existing Hermes test. Both env tests pass;cargo fmt -p buzz-acp -- --checkis clean.Sources for the env var
Context: I self-hosted Buzz for a community, opened the agent's inbound gate to run a real greeter, and noticed the Claude runtime inherits the operator's connectors with no per-runtime isolation while Hermes now has exactly that. This brings the Claude runtime in line with the precedent #3420 set.