diff --git a/open-sse/executors/antigravity.ts b/open-sse/executors/antigravity.ts index 91ba8fc5fb..2e18d1aa48 100644 --- a/open-sse/executors/antigravity.ts +++ b/open-sse/executors/antigravity.ts @@ -38,7 +38,13 @@ export class AntigravityExecutor extends BaseExecutor { transformRequest(model, body, stream, credentials) { const bodyProjectId = body?.project; const credentialsProjectId = credentials?.projectId; - const projectId = bodyProjectId || credentialsProjectId; + const allowBodyProjectOverride = process.env.OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE === "1"; + + // Default: prefer OAuth-stored projectId over incoming body.project to avoid + // stale/wrong client-side values causing 404/403 from Cloud Code endpoints. + // Opt-in escape hatch: set OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE=1. + const projectId = + allowBodyProjectOverride && bodyProjectId ? bodyProjectId : credentialsProjectId || bodyProjectId; if (!projectId) { throw new Error( diff --git a/open-sse/executors/gemini-cli.ts b/open-sse/executors/gemini-cli.ts index dabb0ee44d..42d14c4b95 100644 --- a/open-sse/executors/gemini-cli.ts +++ b/open-sse/executors/gemini-cli.ts @@ -20,7 +20,16 @@ export class GeminiCLIExecutor extends BaseExecutor { } transformRequest(model, body, stream, credentials) { - if (!body.project && credentials?.projectId) { + const allowBodyProjectOverride = process.env.OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE === "1"; + + // Default: prefer OAuth-stored projectId. Incoming body.project can be stale + // when clients cache older Cloud Code project values. + // Opt-in escape hatch: set OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE=1. + if (allowBodyProjectOverride && body?.project) { + return body; + } + + if (credentials?.projectId) { body.project = credentials.projectId; } return body;