diff --git a/packages/server/src/server/agent/providers/acp-agent.ts b/packages/server/src/server/agent/providers/acp-agent.ts index caff01eb0..c2090540d 100644 --- a/packages/server/src/server/agent/providers/acp-agent.ts +++ b/packages/server/src/server/agent/providers/acp-agent.ts @@ -107,6 +107,11 @@ const ACP_CLIENT_CAPABILITIES: ACPClientCapabilities = { const COPILOT_AUTOPILOT_MODE = "https://agentclientprotocol.com/protocol/session-modes#autopilot"; +// Suppress interactive auth side-effects (e.g. Gemini CLI opening a Google +// sign-in URL in the browser) when probing an ACP agent for models/modes. +// NO_BROWSER is honored by Gemini CLI; other ACP agents ignore it. +const PROBE_ENV: Record = { NO_BROWSER: "true" }; + type ACPAgentClientOptions = { provider: string; logger: Logger; @@ -391,7 +396,7 @@ export class ACPAgentClient implements AgentClient { async listModels(options?: ListModelsOptions): Promise { const cwd = options?.cwd ?? process.cwd(); - const probe = await this.spawnProcess(undefined); + const probe = await this.spawnProcess(PROBE_ENV); try { const response = await probe.connection.newSession({ cwd, @@ -411,7 +416,7 @@ export class ACPAgentClient implements AgentClient { async listModes(options?: ListModesOptions): Promise { const cwd = options?.cwd ?? process.cwd(); - const probe = await this.spawnProcess(undefined); + const probe = await this.spawnProcess(PROBE_ENV); try { const response = await probe.connection.newSession({ cwd, @@ -432,7 +437,7 @@ export class ACPAgentClient implements AgentClient { async listPersistedAgents( options?: ListPersistedAgentsOptions, ): Promise { - const probe = await this.spawnProcess(undefined); + const probe = await this.spawnProcess(PROBE_ENV); try { if (!probe.initialize.agentCapabilities?.sessionCapabilities?.list) { return [];