Where does the bug appear (feature/product)?
Cursor SDK
Describe the Bug
Summary
- Platform: Intel macOS 14.8 (x86_64)
- Node: v24.12.0
- @cursorcursorcursorcursor/sdk: 1.0.30
- Platform pac@cursorcursorage: @cursor/[email protected] present (cursorsandbox, rg)
Local@cursorcursoragents via @cursor/sdk consistently fail right after start:
- stream status RUNNING
- stream status ERROR, message “[unknown] [internal]”
- run.wait() → status “error”, error.message “[unknown] [internal]”
- run.conversation() → empty
Same CURSOR_API_KEY + model composer-2.5 succeeds with cloud: { repos: } and returns “OK”.
This blocks a long-running Node host (webhook → Agent.create/resume → send → wait → local cwd).
Related: Local Cursor SDK agents fail with opaque RUNNING -> ERROR on local repos
Steps to Reproduce
- Node [email protected] on Intel ma@cursorOS 14.8;@cursornpm/pnpm in@cursortall @cursor/s@[email protected] (ensure @cursor/sdk-darwin-x64 is present).
- Set CURSOR_API_KEY (a key that can call [email protected] and succee@cursor on cloud agen@cursors).
- R@cursorn:
import { Agent } from “@cursor/sdk”;
import fs from “node:fs”;
import os from “node:os”;
import path from “node:path”;
const apiKe@cursor = process.env.CURSOR_API_KEY!;
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), “sdk-smoke-”));
fs.writeFileSync(path.join(tmp, “README.md”), “hi\n”);
const local = await Agent.prompt(“Reply with exactly: OK”, {
apiKey,
model: { id: “composer-2.5” },
local: { cwd: tmp, settingSources: },
});
console.log(local.status, local.error, local.requestId, local.durationMs);
- Observe local.status === “error”, error.message === “[unknown] [internal]”, conversation empty (~15–21s).
- Contrast: same prompt with cloud: { repos: } → status “finished”, result “OK”.
Also fails with Agent.create + send + stream/wait. Reproduced with and without HTTPS_PROXY. Fresh create (no resume) still fails.
Expected Behavior
Local Agent.prompt / send+wait should either:
- finish with assistant text “OK”, or
- return a structured error (code + actionable message), not only opaque “[unknown] [i@cursorystemternal]” @cursorVersionith an empty c@cursornversation.
Operating @cursorystem
MacOS
@cursorVersion Information
@cursor/sdk: 1.0.30
@cursor/sdk-darwin-x64: 1.0.30
Node: v24.12.0
OS: macOS 14.8 (darwin), arch x86_64 (Intel)
Run@cursorime under tes@cursor: local (cwd = tiny temp dir); cloud empty-repos works
Not an IDE UI bug — reproduced with stock Agent.prompt in Node only
For AI issues: which model did you use?
composer-2.5 (also tried default via Cursor.models.list — both fail on local; composer-2.5 succeeds on cloud)
For AI issues: add Request ID with privacy disabled
71b70da1-8bed-457f-a6c4-31fb922637b5
Additional Information
Network context:
- From mainland China; without a system/global proxy, https://api.cursor.com is unreachable.
- With global proxy enabled, Cursor.models.list and cloud Agent.prompt (repos: []) succeed; local Agent.prompt fails with RUNNING → ERROR “[unknown] [internal]”.
- CURSOR_USE_HTTP1 is unset (not forcing HTTP/1.1 via that env var).
- So we cannot test “direct HTTP/2 without proxy” as suggested in related threads; proxy appears required for any Cursor API access from this network.
Ruled out:
- Missing platform package (darwin-x64 linked; cursorsandbox + rg present)
- Large monorepo / project rules (settingSources: ; tiny temp cwd)
- Stuck prior run / resume (fresh Agent.prompt / Agent.create still fails)
- Proxy-only (fails with HTTPS_PROXY cleared)
- Bad model id (listed in Cursor.models.list(); cloud works)
- App wrapper bugs (stock Agent.prompt outside our host fails the same way)
After failure, Agent.getRun(id, { runtime: “local”, cwd }) still only shows opaque error; conversation . Looks like the run dies before any turn.
Ask:
- Known local-runtime regression on 1.0.30 / Node 24 / macOS x64?
- Can you map the requestIds above to a real backend cause?
- Any entitlement required for local agents beyond cloud?
- Recommended workaround while local is broken (cloud is OK for smoke; we need local cwd for product)?
Does this stop you from using Cursor
No - Cursor works, but with this issue