You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cursor-native tools now run on the open stream (read, ls, grep, write, delete, shell, fetch) instead of being rejected back to MCP. The model keeps generating on the same Run RPC; Pi MCP tools remain for anything called that way. Paths stay inside the workspace.
Prompt history is always rebuilt from Pi's transcript, even when a checkpoint exists, so empty server-side placeholders cannot wipe earlier turns. Pi's system prompt stays on root_prompt_messages_json (<rules>). customSystemPrompt is not sent — Cursor maps that field to a --system-prompt CLI option this client path rejects (invalid_argument: unknown option '--system-prompt').
Hosted web search / fetch permission prompts are approved by default so those turns complete instead of forcing a re-plan. Pass approveWeb: false to reject.
Default x-cursor-client-version is cli-2026.07.23-e383d2b. Client heartbeats go out every 5s. HTTP CONNECT proxy support via PI_PROXY_CURSOR / PI_PROXY / HTTPS_PROXY.
Fixed
A Connect invalid_argument is no longer labeled as wire-protocol drift. The protocol-hint used to match any Connect error, so a rejected --system-prompt option told people to bump PI_CURSOR_CLIENT_VERSION.
resource_exhausted no longer retries the same dead conversation id. The conversation is rotated before the next attempt.
A transient Cursor internal or unavailable end-stream error no longer kills the turn. These arrive as an end-stream frame with exitCode: 0; the end-stream handler now stages the error so existing recovery owns the retry. Ports #22.
A checkpoint whose blobs the entry bound evicted is no longer kept and replayed with blank history.mergeBlobStore now drops the checkpoint whenever its trim evicts anything. Ports #21.