From 7292ddef0ecd1aebfd8ed3dead6adcf59cd22c8c Mon Sep 17 00:00:00 2001 From: A <258483684+la14-1@users.noreply.github.com> Date: Fri, 3 Apr 2026 17:54:38 -0700 Subject: [PATCH] fix(cursor): use real API key instead of dummy spawn-proxy value (#3169) Cursor CLI validates CURSOR_API_KEY before connecting to the configured endpoint. The dummy value "spawn-proxy" fails validation immediately, causing an infinite restart loop. Use the actual OPENROUTER_API_KEY as CURSOR_API_KEY so it passes Cursor's key format check. Fixes #3166 Agent: ux-engineer Co-authored-by: B <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.5 --- manifest.json | 3 ++- packages/cli/src/__tests__/agent-setup-cov.test.ts | 8 ++++++++ packages/cli/src/shared/agent-setup.ts | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 55a85f30..1a033f97 100644 --- a/manifest.json +++ b/manifest.json @@ -299,7 +299,8 @@ "install": "curl https://cursor.com/install -fsS | bash", "launch": "agent", "env": { - "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}" + "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}", + "CURSOR_API_KEY": "${OPENROUTER_API_KEY}" }, "config_files": { "~/.cursor/cli-config.json": { diff --git a/packages/cli/src/__tests__/agent-setup-cov.test.ts b/packages/cli/src/__tests__/agent-setup-cov.test.ts index c04d95c2..95452fee 100644 --- a/packages/cli/src/__tests__/agent-setup-cov.test.ts +++ b/packages/cli/src/__tests__/agent-setup-cov.test.ts @@ -222,6 +222,14 @@ describe("createCloudAgents", () => { } }); + it("cursor agent uses real API key as CURSOR_API_KEY (not a dummy value)", () => { + const envVars = result.agents.cursor.envVars("sk-or-v1-real-key"); + const cursorKeyVar = envVars.find((v: string) => v.startsWith("CURSOR_API_KEY=")); + expect(cursorKeyVar).toBeDefined(); + // Must use the actual API key, not a dummy like "spawn-proxy" + expect(cursorKeyVar).toBe("CURSOR_API_KEY=sk-or-v1-real-key"); + }); + it("all agents have launchCmd returning non-empty string", () => { for (const agent of Object.values(result.agents)) { const cmd = agent.launchCmd(); diff --git a/packages/cli/src/shared/agent-setup.ts b/packages/cli/src/shared/agent-setup.ts index f743a34a..b4e3d8a2 100644 --- a/packages/cli/src/shared/agent-setup.ts +++ b/packages/cli/src/shared/agent-setup.ts @@ -1093,7 +1093,7 @@ function createAgents(runner: CloudRunner): Record { ), envVars: (apiKey) => [ `OPENROUTER_API_KEY=${apiKey}`, - "CURSOR_API_KEY=spawn-proxy", + `CURSOR_API_KEY=${apiKey}`, ], configure: () => setupCursorProxy(runner), preLaunch: () => startCursorProxy(runner),