Skip to content

v1.4.31

Choose a tag to compare

@Rahularya01 Rahularya01 released this 04 Sep 14:13
· 43 commits to main since this release
v1.4.31
8557f92

Changed

  • 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.