From 5ec4ea9b4d425269c9e9052503ad85b5caaa976e Mon Sep 17 00:00:00 2001 From: christine betts Date: Fri, 8 Aug 2025 15:35:47 +0000 Subject: [PATCH] [ide-mode] Wire up env variables to sandbox (#5804) --- packages/cli/src/utils/sandbox.ts | 11 +++++++++++ packages/core/src/ide/ide-client.ts | 11 ++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/utils/sandbox.ts b/packages/cli/src/utils/sandbox.ts index 3550f45b..dfd2065f 100644 --- a/packages/cli/src/utils/sandbox.ts +++ b/packages/cli/src/utils/sandbox.ts @@ -614,6 +614,17 @@ export async function start_sandbox( args.push('--env', `COLORTERM=${process.env.COLORTERM}`); } + // Pass through IDE mode environment variables + for (const envVar of [ + 'GEMINI_CLI_IDE_SERVER_PORT', + 'GEMINI_CLI_IDE_WORKSPACE_PATH', + 'TERM_PROGRAM', + ]) { + if (process.env[envVar]) { + args.push('--env', `${envVar}=${process.env[envVar]}`); + } + } + // copy VIRTUAL_ENV if under working directory // also mount-replace VIRTUAL_ENV directory with /sandbox.venv // sandbox can then set up this new VIRTUAL_ENV directory using sandbox.bashrc (see below) diff --git a/packages/core/src/ide/ide-client.ts b/packages/core/src/ide/ide-client.ts index 508dfea1..5ffcc2e3 100644 --- a/packages/core/src/ide/ide-client.ts +++ b/packages/core/src/ide/ide-client.ts @@ -324,7 +324,7 @@ export class IdeClient { version: '1.0.0', }); transport = new StreamableHTTPClientTransport( - new URL(`http://localhost:${port}/mcp`), + new URL(`http://${getIdeServerHost()}:${port}/mcp`), ); await this.client.connect(transport); this.registerClientHandlers(); @@ -345,3 +345,12 @@ export class IdeClient { } } } + +function getIdeServerHost() { + const isInContainer = + fs.existsSync('/.dockerenv') || + fs.existsSync('/run/.containerenv') || + !!process.env.SANDBOX || + !!process.env.container; + return isInContainer ? 'host.docker.internal' : 'localhost'; +}