t3-code-android-nightly/docs/user/cursor.md
Julius Marminge de34391427
feat(orchestrator): introduce new orchestrator (#2829)
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Vitalii Yehorov <vitalyiegorov@gmail.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nicholas Wasmiller <derped@mineperial.com>
Co-authored-by: PB <poilmb@gmail.com>
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: scratchyone <scratchywon@gmail.com>
Co-authored-by: Dominic Roy <dominic@sdko.org>
Co-authored-by: chukfinley <chuk@chuk.dev>
Co-authored-by: Primož Ajdišek <bigpod@bigpod.si>
Co-authored-by: benthecarman <benthecarman@live.com>
Co-authored-by: NaveDanan <nave0712@gmail.com>
Co-authored-by: aaditagrawal <103925638+aaditagrawal@users.noreply.github.com>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: Nick Anisimov <n.anisimov.23@gmail.com>
Co-authored-by: MacKinley Smith <smithmackinley@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: AKolenda <akole779@mtroyal.ca>
Co-authored-by: Guillermo Casanova <75276669+Gigioxx@users.noreply.github.com>
Co-authored-by: Otavio Salvador <otavio@ossystems.com.br>
Co-authored-by: Shirish Pothi <183252392+shirishpothi@users.noreply.github.com>
Co-authored-by: Ishaan Kothari <ishaanko.mail@gmail.com>
Co-authored-by: Bob Fowler <bob@rjf.ca>
Co-authored-by: Anton Bezdenezhnykh <gamer392@yandex.ru>
Co-authored-by: ValeraZSD <48602572+ValeraZSD@users.noreply.github.com>
Co-authored-by: Ephraim <ephraim39hr14m@gmail.com>
Co-authored-by: Ryan Ilano <ryanilano@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: maco <gosarmarcel7@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Tristan Knight <admin@snappeh.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: kamkm <99585688+Kamkmgamer@users.noreply.github.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
2026-10-02 12:22:22 -07:00

4.2 KiB

Cursor

Cursor V2 runs through the official @cursor/sdk TypeScript package. It does not use Cursor's ACP transport for V2 execution.

Prerequisites

  • Node.js 22.13 or newer. The repository's supported Node version satisfies this requirement.
  • Sign in with Cursor in Settings > Providers > Cursor, or provide a Cursor API key in CURSOR_API_KEY.
  • A model accepted by the Cursor SDK. auto is sent to the SDK as its default model selection.

The adapter currently uses the SDK's local-agent runtime so runs operate in the selected T3 Code workspace. Cursor cloud agents need repository and cloud-environment configuration that T3 Code does not expose yet.

Sign in

Choose Sign in, then open the sign-in page and complete it in your browser. T3 Code updates automatically when sign-in finishes. This works when connected to a remote environment too. On mobile, use Settings > Provider accounts for an already configured Cursor instance.

Each provider instance keeps its own login on the environment that runs it. Your Cursor editor and CLI login are separate. A configured CURSOR_API_KEY overrides browser sign-in; remove that override to use the browser flow.

Use Change account or Sign out in the same settings section. Both stop that instance's running threads and keep their history. Sign-out forgets the saved credential; to revoke the generated key before it expires, remove it from your Cursor dashboard's API keys.

V2 Capability Mapping

The adapter supports:

  • creating and resuming local Cursor agent threads;
  • changing the model and model parameters between turns;
  • assistant text, reasoning, tool activity, plans, and todo streaming;
  • thread-scoped T3 Code MCP tools;
  • image attachments;
  • interruption, queued app messages, and orchestrator-owned interrupt/restart steering;
  • provider conversation snapshots through Agent.messages.list();
  • Cursor task subagents, projected as read-only child app threads with their tool activity and final result.

The public SDK does not currently expose native agent fork, conversation rollback, active steering, or interactive approval callbacks. Direct active steering is advertised as unsupported, while V2 steering uses the orchestrator's interrupt-and-restart path and preserves the app run identity across provider turns. Same-provider Cursor forks use the orchestrator's portable full-thread context handoff into a fresh Cursor agent. The SDK has in-process custom callback tools, but the V2 adapter intentionally uses the authenticated, thread-scoped MCP server instead.

Portable handoffs summarize eligible timeline items and can omit the end of long messages. Read Context in portable handoffs before using a fork for work whose exact instructions must carry forward.

Cursor task events include an agentId, but the local SDK does not register that identifier as a resumable agent: Agent.resume() returns AgentNotFoundError. The adapter therefore does not attach a provider thread to native task projections or advertise subagent thread IDs. A projected child is read-only: send messages from the parent thread.

Runtime modes map to the controls the local SDK exposes: full access disables its sandbox, while restricted modes and explicit non-full-access sandbox policies enable it. Explicit approval policy overrides also control Cursor Auto-review. Auto-review is not represented as an interactive T3 Code approval flow.

The existing Cursor binary path and API endpoint settings belong to the CLI/ACP integration. Cursor V2 execution does not launch that binary, and the SDK does not expose an API endpoint override.

Replay And Live Testing

Cursor replay fixtures preserve the SDK boundary: agent open/resume, sends, ordered onDelta updates, terminal results, cancellation, message snapshots, and close. The real V2 adapter, orchestrator, event store, projections, and checkpoint logic still run in tests.

Record a fixture against the real SDK with:

pnpm --filter t3 record:cursor-replay --scenario simple

Use --out <path> to record a temporary probe without replacing a checked-in fixture. Supported scenarios are listed by the recorder when an invalid scenario is supplied.