AI Catchup

Cursor SDK 1.0.31 Adds Live Agent Steering and Background Subagent Results

By 4 min read

The latest Cursor SDK release adds live steering for local TypeScript agents, returns background subagent results to the parent run, and adds custom system prompts and MCP tool annotations. The new controls have language and runtime limits worth checking before you adopt them.

The latest Cursor SDK release adds controls for agents that are already running: you can steer a local TypeScript run, and background subagent results now return to the parent run instead of being dropped at the end of the parent turn. The same release adds replaceable system prompts and MCP annotations for custom tools. Cursor's SDK changelog provides the implementation details and runtime limits for each addition (Cursor on X, follow-up, follow-up, follow-up, follow-up).

The useful headline for developers building with the Cursor SDK is that runs can now accept input while work is in progress, while delegated work can finish in the background and still report back through the original run. The new behavior is not uniform across runtimes, so check the language and local-versus-cloud limits before changing an integration.

Steering a Running Agent

The TypeScript SDK adds run.steer(text). Cursor says the method can steer an agent while it runs; the changelog specifies that the message is injected into the turn in flight. If a subagent is running when you steer, it moves to the background and continues working. This feature is for local TypeScript runs. A cloud run returns revert_to_followup, indicating that the message should be sent as a normal follow-up instead (Cursor SDK changelog; Cursor's announcement).

That gives a local integration a way to redirect active work without cancelling the whole run. The response value matters: code should handle revert_to_followup rather than assume that every steering message was delivered into the active turn.

Background Subagents Return Their Results

Previously, a parent turn could finish while a subagent continued in the background. With this release, the subagent's result returns to the parent as a follow-up turn on the same run. run.stream() keeps yielding through those turns, and run.wait() resolves after them. Cursor lists this behavior for local agents in both TypeScript and Python (Cursor SDK changelog; Cursor on X).

For developers, this makes background delegation easier to consume through the run's existing stream or wait path: the child result becomes part of the parent run's completion rather than a separate result channel.

Custom Prompts and MCP Tool Annotations

Two additional changes give developers more control over a local agent's setup:

  • Replace the system prompt. TypeScript agents can set systemPrompt on Agent.create() to replace Cursor's built-in prompt for the main agent loop. Rules, skills, and tool schemas still load, and subagents retain their own prompts. The override is local-only, must be passed again to Agent.resume(), and is being enabled account by account (Cursor SDK changelog; Cursor on X).
  • Pass MCP annotations to custom tools. A TypeScript local.customTools entry can include annotations, including title, readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. Cursor says these are descriptive hints passed to the model; the SDK does not enforce them (Cursor SDK changelog; Cursor on X).

The practical caveat: steering and prompt replacement are limited to local TypeScript agents, while background results are supported for local TypeScript and Python agents. Tool annotations are not a security boundary. Treat them as model-facing descriptions, and keep actual authorization and safety checks in the host application.

What to Check Before Updating

CapabilityRuntime and language in the changelogImportant limit
run.steer()Local TypeScriptCloud runs return revert_to_followup
Background subagent resultsLocal TypeScript and PythonResults return as follow-up turns on the same run
Custom systemPromptLocal TypeScriptPass it again on Agent.resume(); access is enabled per account
MCP annotations on custom toolsTypeScriptDescriptive hints only; not enforced by the SDK

If your integration is already on the Cursor SDK, the most actionable first step is to check the changelog, then add explicit handling for steering fallback and for the extra follow-up turns produced by background subagents.

Sources

Frequently Asked Questions

What did Cursor add to the SDK?

The release adds live steering for local TypeScript runs, background subagent results that return to the parent run, replaceable system prompts for local TypeScript agents, and MCP annotations for custom tools in TypeScript.

Can I steer a Cursor SDK cloud run?

No. Cursor's SDK changelog says run.steer() is for local TypeScript runs; cloud runs resolve with revert_to_followup instead.

Do MCP annotations enforce permissions?

No. Cursor describes them as descriptive hints passed to the model. The SDK does not enforce them.

Get the weekly AI Catchup

Tools, practices, and what matters, in your inbox every week.