{"schemaVersion":"1.0","publication":{"slug":"pivot-cursor","name":"Cursor HQ","description":"Product updates and proven workflows for building software with Cursor.","audience":"Engineers and product teams using the Cursor editor.","geography":null},"edition":{"id":"ba26855b-39af-4a4c-9a3a-95a1d20b0864","date":"2026-10-09","status":"locked","createdAt":"2026-10-08T15:33:54.669Z","storyCount":6,"newsletterSubject":"Cursor iOS app messaging desktop agents, Claude Haiku 5.5 costs tenth of Haiku 4.5, Slack bots handle release checks like users"},"updatedAt":"2026-10-08T15:30:59.337Z","stories":[{"id":"95c26f8d-ca5a-4ea6-b609-67d7123b7e5d","title":"Cursor's iOS app can now read and message agents running on your own computer","dek":"Cursor's Remote Control feature lets you pair the Cursor iOS app with your desktop, then check what a local coding agent is doing and send it a message, while the agent keeps running on your machine.","bodyMd":"Cursor's iOS app can now list the local agents running on your computer, show what each one is doing, and let you send it a message. Cursor's changelog calls the feature Remote Control. It is on by default for everyone except Enterprise organizations.\n\nSetup is short. Download the Cursor iOS app and sign in, and the computers on your account appear automatically. Tap your computer, then approve the pairing request in the Cursor desktop app. Your local agents show up as a list, and tapping one opens its activity and a way to reply.\n\nNothing moves to the phone. Cursor says Remote Control \"doesn't move your agents anywhere\": they keep running on your computer and the app connects to it. One of Cursor's posts on X puts the upside this way: the agent keeps working even if your phone loses signal. The flip side is that your computer has to stay on and online, or the app has nothing to connect to.\n\nFor people who step away from their desk, Cursor offers a setting called \"Keep this computer awake,\" under Remote Control in the desktop settings. It stops the machine from sleeping. The changelog says the computer needs to be plugged in with the lid open, so a laptop in a bag is not covered.\n\nEnterprise teams start with the feature off. Admins can turn it on under Org settings, then Security and identity, then Remote control, and Cursor's post tells Enterprise users to ask their admin. The changelog also says Remote Control does not require cloud agents to work, so teams that only run agents locally can use it.","status":"published","storyType":"news","category":"Release","clusterKey":"cursor-ios-app-control-local-agents","slug":"cursor-s-ios-app-can-now-read-and-message-agents-running-on-your-own-com-95c26f","url":"https://cursorhq.ai/news/cursor-s-ios-app-can-now-read-and-message-agents-running-on-your-own-com-95c26f/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/95c26f8d-ca5a-4ea6-b609-67d7123b7e5d","role":"lead","position":0,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cursor-s-ios-app-can-now-read-and-message-agents-running-on-your-own-com-95c26f/5025e84d47360fbb-d9ea6ee01d8fb536/web_hero.webp","imageAlt":"A desktop computer tower connected to a handheld device by a single thick cable, representing a remote link between a local machine and a mobile phone.","createdAt":"2026-10-07T01:46:42.654Z","updatedAt":"2026-10-07T02:00:36.425Z","sources":[{"role":"primary","title":"Cursor Now Lets You Control Local Agents From Your iPhone","url":"https://cursor.com/changelog/remote-control-local-agents","sourceName":"Cursor Changelog","author":"Cursor Changelog","publishedAt":"2026-10-06T12:00:00Z"},{"role":"supporting","title":"Cursor Launches iOS App to Control Local Agents From Your Phone","url":"https://x.com/cursor_ai/status/2107618677470494728","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-10-06T23:47:05Z"},{"role":"supporting","title":"Cursor Launches iOS App to Control Local Agents From Your Phone","url":"https://x.com/cursor_ai/status/2107618665751576970","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-10-06T23:47:02Z"}]},{"id":"8b97bd30-c44c-42ab-89c3-b0061bb3f5a2","title":"Claude Haiku 5.5 arrives in Cursor at about a tenth of Haiku 4.5's cost on short requests","dek":"Cursor lists the model at $0.10 per million input tokens and $0.50 per million output tokens, where tokens are the chunks of text, roughly three quarters of a word each, that a model reads and charges for.","bodyMd":"Cursor added Anthropic's Claude Haiku 5.5 to its model list on October 7. Cursor says that on shorter requests it costs 10x less than Claude Haiku 4.5. To use it, open Cursor Settings > Models and turn it on.\n\nThe price is $0.10 per million input tokens and $0.50 per million output tokens. Input is what you send the model (your prompt and the code it reads). Output is what it writes back. Cursor lists a separate tier above 100k input tokens, where the rates are $0.50 per million input and $2.50 per million output. Cursor's posts do not define \"shorter requests\" and do not say how the 10x comparison to Haiku 4.5 applies beyond that wording.\n\nCursor also cut the price of cache reads for Claude Sonnet 5.5 to $0.10 per million tokens, down from $0.20. Cache reads are the charge for reusing context the model has already been sent, so the change halves that line item for Sonnet 5.5 users.\n\nCursor links its CursorBench page at cursor.com/evals for comparing Haiku 5.5.","status":"published","storyType":"news","category":"Models","clusterKey":"cursor-claude-haiku-55-model","slug":"claude-haiku-5-5-arrives-in-cursor-at-about-a-tenth-of-haiku-4-5-s-cost-8b97bd","url":"https://cursorhq.ai/news/claude-haiku-5-5-arrives-in-cursor-at-about-a-tenth-of-haiku-4-5-s-cost-8b97bd/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/8b97bd30-c44c-42ab-89c3-b0061bb3f5a2","role":"item","position":1,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/claude-haiku-5-5-arrives-in-cursor-at-about-a-tenth-of-haiku-4-5-s-cost-8b97bd/cb69fa9e2df158a0-d3dd1eba57109aac/web_hero.webp","imageAlt":"A modular data cartridge is being removed from a larger housing unit which features two distinct storage tiers.","createdAt":"2026-10-07T19:54:24.078Z","updatedAt":"2026-10-07T20:00:37.727Z","sources":[{"role":"primary","title":"Cursor Adds Claude Haiku 5.5 at 10x Lower Cost for Short Requests","url":"https://x.com/cursor_ai/status/2107897257651769464","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-10-07T18:14:03Z"},{"url":"https://x.com/cursor_ai/status/2107897245282799864","title":null,"sourceName":"x.com","author":"Cursor","publishedAt":"2026-10-07T18:14:00.000Z","role":"supporting"}]},{"id":"54ce3b39-1888-400a-a264-50a0de89e998","title":"One team hands release checks to Slack bots (automated chat helpers) and 10+ AI agents that use the build like real users","dek":"Before each release, the agents click through the new build the way customers would, hunting for bugs, and Cursor Projects then handle fixing the serious ones.","bodyMd":"A developer says they automated their team's release process and the testing before it, using two Slack bots built with Grok Bot. A Slack bot is an automated helper account that sits in Slack and exchanges messages with people. One, called sandcastle, acts as release manager. The other is an engineer bot that takes the bug fixes.\n\nAn agent, in this setup, is an AI program that carries out a task on its own, such as running a build and clicking through it. Here is the flow as described:\n\n1. **Start the cut.** In a Slack channel made for managing releases, the developer tells sandcastle they want to cut a release.\n2. **Notify contributors.** Sandcastle DMs every contributor with links to their PRs, so each person knows what goes into the release. Contributors can DM the bot back with blockers or objections.\n3. **Build and watch.** Sandcastle kicks off the build and monitors it automatically.\n4. **Run the fuzz swarm.** It then starts a group of agents, usually 10 or more, running on Grok 4.7 at xhigh. They run the build and click around it like a real user, using the team's verification skills and a feature map. Some are directed. A few act as \"chaos monkeys\" that click things at random to see what breaks.\n5. **Hand off the bugs.** When the swarm finds an issue, the developer tells sandcastle to @ mention the engineer bot. That bot spins up a Cursor Project to own triaging and fixing the high-priority issues.\n6. **Choose how the fix ships.** Depending on severity, the developer may have the fix cherry-picked into the release branch and cut a patch release. A pre-existing issue still gets fixed, but goes out in the next release instead.\n\nThe developer calls it one more tedious task Grok Bot now handles for the team.\n\nThe source describes one team's setup. It gives no figures on time saved or bugs caught.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-projects-release-qa-bots","slug":"one-team-hands-release-checks-to-slack-bots-automated-chat-helpers-and-1-54ce3b","url":"https://cursorhq.ai/guides/one-team-hands-release-checks-to-slack-bots-automated-chat-helpers-and-1-54ce3b/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/54ce3b39-1888-400a-a264-50a0de89e998","role":"item","position":2,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/one-team-hands-release-checks-to-slack-bots-automated-chat-helpers-and-1-54ce3b/22b0a7b17ceb54cb-34bdfefef0f7246f/web_hero.webp","imageAlt":"A central control module connected to ten small, mechanical sensing units that are probing a separate modular hardware chassis.","createdAt":"2026-10-06T20:12:01.747Z","updatedAt":"2026-10-06T20:31:07.963Z","sources":[{"role":"primary","title":"How One Team Automated Full Release QA With Grok Bot and Cursor","url":"https://x.com/poteto/status/2107527180263829827","sourceName":"@poteto","author":"@poteto","publishedAt":"2026-10-06T17:43:30Z"}]},{"id":"8f2ca42c-5d85-4f98-9369-ec64bd295c64","title":"A permissions.json file in a project's .cursor folder breaks Cursor's agent, one user reports","dek":"One Windows user says a file named permissions.json (a configuration file, meaning a small file of settings) in the project's .cursor folder, even an empty one, makes the agent fail every action, such as reading a file or running a command, until the file is deleted.","bodyMd":"A user on the Cursor forum reports that a file named `permissions.json` in a workspace's `.cursor` folder makes every agent action fail. The agent is the part of Cursor that takes actions for you, and the actions in this report are running a shell command, reading a file, searching with Glob or calling an MCP tool. A `.cursor` folder at the workspace level is simply a folder with that name inside the project you have open, and `permissions.json` is a configuration file, a small file of settings, in that folder. The user says even a valid empty `{}` triggers the problem. Each action returns `Invalid arguments: <field> Required`, and the user says the arguments are stripped before they reach the tool.\n\n**What the user found**\n\nThe user says removing `permissions.json` from the workspace-level `.cursor` folder fixed the agent immediately.\n\n**What the user saw**\n\n- The failures began around 3:30 PM PT on Oct 5, in the middle of a session.\n- They persisted across new chats, an app restart and an app update.\n- The setup was Cursor 3.22.12 (user setup, Stable, Agent Window layout) on Windows 10.0.26200 with PowerShell, using the GLM 5.3 Flash Low model.\n- The user could not retrieve a Request ID from the chat UI and said Cursor was unusable for them.\n\nThe thread had 11 posts from 4 participants when captured.","status":"published","storyType":"tip","category":"Agents","clusterKey":"cursor-permissions-json-bug","slug":"a-permissions-json-file-in-a-project-s-cursor-folder-breaks-cursor-s-age-8f2ca4","url":"https://cursorhq.ai/guides/a-permissions-json-file-in-a-project-s-cursor-folder-breaks-cursor-s-age-8f2ca4/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/8f2ca42c-5d85-4f98-9369-ec64bd295c64","role":"item","position":3,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/a-permissions-json-file-in-a-project-s-cursor-folder-breaks-cursor-s-age-8f2ca4/29665cf516a6f299-51987fcc30497704/web_hero.webp","imageAlt":"A square metal cartridge being removed from a storage folder, showing an empty slot where it was previously held.","createdAt":"2026-10-07T08:07:10.481Z","updatedAt":"2026-10-07T08:30:32.482Z","sources":[{"role":"primary","title":"Cursor Agent Tools Break When permissions.json Exists in .cursor Folder","url":"https://forum.cursor.com/t/agent-tool-calls-fail-with-invalid-arguments/173834","sourceName":"wylibroda","author":"wylibroda","publishedAt":"2026-10-06T01:42:36Z"}]},{"id":"fa3f695d-b150-42e7-a137-9936397626b1","title":"Cursor user reports $22.95 in extra charges despite a $5 spending limit","dek":"A Cursor user says extra usage charges beyond their plan reached $22.95 against a $5 limit they set, attributed to expensive, high-cost AI models they had switched off, while their laptop was offline.","bodyMd":"A Cursor user says the editor recorded about $22.95 in on-demand usage (extra charges for usage beyond what a plan includes) even though their spending limit was set to $5. In a post on the r/cursor subreddit, the user describes working in Auto mode and says the usage breakdown listed expensive models they had disabled in the IDE and were not selecting by hand.\n\nAccording to the user, the breakdown showed three entries: Claude Opus 5.5 High at 40.4M tokens, Claude Opus 5.5 xHigh at 40.6M tokens, and GPT-5.6 Sol Max at 15.2M tokens. The user says they have screenshots of the usage breakdown and the spending settings.\n\nThe detail that confuses the user most is timing. They say the usage was recorded while their laptop was not connected to the internet and was sitting idle during dinner. They also say they checked their GitHub account and found no unusual logins or suspicious activity.\n\nThe user says they could not reach Cursor support, because, as they describe it, support only accepts work email addresses. They posted to ask whether others have seen the same thing, and what could have generated the requests. They also asked how to investigate which sessions produced the usage and why the $5 limit did not stop it.\n\nThis is one person's account. Nothing in the post shows how the charges were generated or whether the limit failed. Cursor has not responded in the material available.","status":"published","storyType":"news","category":"Pricing","clusterKey":"cursor-spend-cap-charge-offline","slug":"cursor-user-reports-22-95-in-extra-charges-despite-a-5-spending-limit-fa3f69","url":"https://cursorhq.ai/news/cursor-user-reports-22-95-in-extra-charges-despite-a-5-spending-limit-fa3f69/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/fa3f695d-b150-42e7-a137-9936397626b1","role":"item","position":4,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cursor-user-reports-22-95-in-extra-charges-despite-a-5-spending-limit-fa3f69/5a1ee311aa985932-60df029f19789fbb/web_hero.webp","imageAlt":"A metallic mechanical ticker box with three internal cylinders showing counts of 40.4, 40.6, and 15.2, illustrating a breach of a physical 5-unit limit gate.","createdAt":"2026-10-08T01:52:29.514Z","updatedAt":"2026-10-08T02:00:22.910Z","sources":[{"role":"primary","title":"Cursor User Reports $23 Charge After $5 Limit Failed While Laptop Was Offline","url":"https://reddit.com/r/cursor/comments/1x0a1x5/cursor_charged_me_2295_in_ondemand_usage_while_my","sourceName":"/u/OverallAd9984","author":"/u/OverallAd9984","publishedAt":"2026-10-07T22:15:22Z"}]},{"id":"64d4be57-95a9-4044-af4d-dfea6c035a61","title":"A Cursor forum bug report says GLM 5.3 High sends tool calls with empty arguments","dek":"The report covers the command-line version of Cursor's agent, which you run by typing commands in a terminal, and says GLM 5.3 High intermittently sends tool calls without the inputs they need, so search, command-running and file-read steps fail until the session recovers. A tool call is the agent asking to run one of its built-in actions, like searching your code or reading a file, and the report says those requests arrive missing the details they need.","bodyMd":"A bug report on the Cursor forum says GLM 5.3 High, a model built into Cursor, intermittently sends tool calls with empty arguments in Cursor CLI agent 2026.10.01. That is the command-line version of Cursor's agent, which you run by typing commands in a terminal. \"Empty arguments\" means the details a tool needs, such as the search pattern or the command to run, arrive blank. The reporter says the problem is severe enough that Cursor is unusable for them. Tool calls are the steps where the agent actually searches code, runs commands or reads files.\n\nThe reporter, Guy Alon, tested on WSL2 (Linux) with the Cursor CLI agent, using both 2026.10.01 builds, 14929f9 and e373342, and filed the report on the forum. Alon used the native model (glm-5p3) rather than a custom endpoint. The tool layer rejects the calls with errors such as \"pattern: Required\" for Grep (the code search), \"command: Required\" for Shell (the step that runs a command in the terminal) and \"path: Required\" for Read (the file read). Tools that need no arguments, such as catalog lookups, still succeed.\n\nThe failure comes and goes. On Oct 4 around 16:12, one session ran 116 tool calls with valid arguments. From about 22:00 that night, sessions hit runs of 20 or more consecutive empty calls. On Oct 5 around 9:32 AM, a burst parsed correctly, then the following calls in the same session went empty again. Retrying sometimes recovers it.\n\nAlon says the model is not at fault: the argument values appear in the call the model emits, and only the tool-side input ends up as an empty object. The report also says the problem is not tied to the workspace, permissions or a stale session, since it persists in brand-new chats and an agent update mid-window neither caused nor fixed it. Alon's suspicion is server-side parsing or serialization of GLM 5.3 arguments in the agent stream. The report notes GLM 5.3 arrived natively around Oct 1 to 2 and the trouble began the evening of Oct 4. These details come from the report alone.\n\nThe thread had four posts from four participants.","status":"published","storyType":"news","category":"Models","clusterKey":"glm-5-3-empty-tool-call-arguments-cli","slug":"a-cursor-forum-bug-report-says-glm-5-3-high-sends-tool-calls-with-empty-64d4be","url":"https://cursorhq.ai/news/a-cursor-forum-bug-report-says-glm-5-3-high-sends-tool-calls-with-empty-64d4be/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/64d4be57-95a9-4044-af4d-dfea6c035a61","role":"item","position":5,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/a-cursor-forum-bug-report-says-glm-5-3-high-sends-tool-calls-with-empty-64d4be/5dcc300c871c0007-0471ac0eb35326cf/web_hero.webp","imageAlt":"A metal drive shaft with several solid, connected mechanical couplings, featuring one distinct, hollow, and disconnected coupling segment.","createdAt":"2026-10-08T15:27:29.778Z","updatedAt":"2026-10-08T15:30:59.337Z","sources":[{"role":"primary","title":"GLM 5.3 agent tool calls intermittently arrive with empty arguments — pattern: Required / command: Required","url":"https://forum.cursor.com/t/glm-5-3-agent-tool-calls-intermittently-arrive-with-empty-arguments-pattern-required-command-required/173756","sourceName":"Guy Alon","author":"Guy Alon","publishedAt":"2026-10-05T06:48:22Z"}]}],"tips":[{"id":"7ab55b05-0f3c-466a-b353-6fcb7c6da174","title":"Find the good edit one agent silently overwrote for another, using git log","dek":"When parallel agents work in one repo, a file committed by two different sessions within an hour is the sign that one fix may have erased another.","bodyMd":"Running several background agents (AI assistants that edit code) or chats on one repository, or Cursor beside Claude Code or Codex, carries a failure that rarely shows up as a bad edit. It shows up as a good edit that vanishes. Agent A fixes a file. Agent B, working from what it read twenty minutes earlier, rewrites the same file and commits. A's fix is gone, nothing errors, and tests may still pass.\n\nGit keeps the evidence, according to the memento team, which builds a free, MIT-licensed tracker and disclosed that interest. The overwrite leaves the same trace each time: one file, two different sessions (a different author or a different branch), commits less than an hour apart. The tool for finding it is `git log`, the command that lists a repository's commit history.\n\n**How to look**\n\n1. Pull a month of history with the session identity attached to each commit:\n `git log --all --source --since='1 month ago' --name-only --format='@%at|%an|%S'`\n Each commit prints a timestamp, author and branch, followed by its files.\n2. Pipe that into an awk filter (awk is a command-line text-processing tool) that flags any file committed by two different author/branch pairs less than an hour apart, then sort by frequency. The memento team's git log plus awk one-liner does this and prints the most frequent files first. The same check also runs in the browser in its overwrite-risk grader, and the team says the log is not uploaded.\n3. Look at the top of the list. If it is config, routes or schema files, that is where your agents collide.\n\n**Two fixes**\n\n- Give each agent its own worktree (a separate working folder checked out from the same repository), so the clash becomes a visible merge conflict instead of a silent overwrite.\n- Have an agent claim a file before it writes: append one line to a shared file under `flock`, and tell the other agents to skip claimed files.\n\n**Caveats.** The check cannot separate sessions that share one branch and one author name. A hit is also a near miss, not proof of a lost edit, so read the two diffs before concluding anything.","category":"Workflow","slug":"find-the-good-edit-one-agent-silently-overwrote-for-another-using-git-lo-7ab55b","url":"https://cursorhq.ai/guides/find-the-good-edit-one-agent-silently-overwrote-for-another-using-git-lo-7ab55b/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/7ab55b05-0f3c-466a-b353-6fcb7c6da174","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/find-the-good-edit-one-agent-silently-overwrote-for-another-using-git-lo-7ab55b/9b0bb9ac47984186-b6371947454b2e54/web_hero.webp","imageAlt":"Two rectangular metal cartridges are forced into a single vertical slot, with the second one partially overlapping the first.","createdAt":"2026-10-29T15:55:37.440Z"},{"id":"22bfcd77-ec8c-43ee-a7a7-d7f074c74961","title":"Have a different model review your agent's PR from inside Cursor","dek":"ThinkReview's MCP server lets Cursor call a single tool on a pull request URL and get back severity-ranked findings, so the agent can fix them in the same session.","bodyMd":"A quick glossary first: a PR (pull request) is a proposed code change awaiting review, and the agent is Cursor's AI assistant that writes and edits code.\n\nThinkReview, a pull request review tool for GitHub, GitLab, Azure DevOps and Bitbucket (including self-hosted), has an MCP server that works in Cursor, Claude Code, Codex, Antigravity and Windsurf. Your agent calls one tool, `review_url_code`, with a PR or MR URL. ThinkReview fetches the diff using git credentials stored in its portal, so nothing is pasted into chat.\n\nThe result is the structured review the ThinkReview extension already returns: a summary, severity-ranked findings, security notes and a plain-language reason. Your custom rules and chosen model apply, so the review can come from a different model family than the one that wrote the code. The reasoning is that the agent is the weakest last reader of its own change, and a recap in chat can drift from what the diff actually does.\n\n## Set it up in Cursor\n\n1. Before the first review, add a git PAT under Settings → Integrations in the ThinkReview portal. Without it, private diffs can't be read.\n2. Add the server to your MCP config. The hosted endpoint is `https://mcp.thinkreview.dev/v1`, which uses browser OAuth, so no token goes in config files.\n3. Click Authenticate.\n4. Ask the agent: \"Call thinkreview for https://github.com/org/repo/pull/123\".\n5. Then run `/mcp` and authenticate.\n\nCopy-paste configs for each client are on ThinkReview's MCP setup page.\n\n## Turn it into a loop\n\nWrapping the call in a skill is the better use. A Cursor skill such as `/thinkreview-pr` can find or open the PR, call `review_url_code`, fix the critical and high findings that deserve a change, run the tests, push to the same PR and review again. The same pattern works in Claude Code and Codex through a prompt, a custom command or an agent instruction file.\n\n## When it earns its keep\n\nTwo runs on real pull requests show the kind of problem it surfaces. On one PR, the review flagged that a Google sign-in popup handler was never set up, so the window could fail to open; the Cursor agent then patched `searchConsole.js` and restored a clear message when Google rejects the account. On a billing change, the review flagged a critical issue: when a cancel call failed, the handler still returned HTTP 200, so the billing provider would not retry and a trial could stay live. Both were easy to miss in the chat summary.\n\nReach for it on agent-written branches before merge, when the summary says \"done\" and you want a reader from outside the authoring session.","category":"Workflow","slug":"have-a-different-model-review-your-agent-s-pr-from-inside-cursor-22bfcd","url":"https://cursorhq.ai/guides/have-a-different-model-review-your-agent-s-pr-from-inside-cursor-22bfcd/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/22bfcd77-ec8c-43ee-a7a7-d7f074c74961","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/have-a-different-model-review-your-agent-s-pr-from-inside-cursor-22bfcd/e9a2f1c5685ca535-d1e1b4689b6c5f4a/web_hero.webp","imageAlt":"A metal cartridge with two glass chambers slides into a hardware dock to bridge a code agent with an external review tool.","createdAt":"2026-10-29T15:08:20.314Z"},{"id":"633ea1f3-ccdd-4279-99b0-490dd30577ff","title":"Vicem swaps unchanged function bodies for one-line stubs to slim Agent Mode's context","dek":"Vicem, a free MIT-licensed MCP server, swaps unchanged function bodies for stubs to trim the context its developer says Cursor re-sends each turn, and hands full bodies back to the agent only when needed.","bodyMd":"Agent Mode is Cursor's AI agent: it reads files, runs commands and edits code across a chat. The developer behind Vicem says it is quick in a fresh chat, but that after 20 to 30 turns of file reads and test runs the \"Planning next moves\" pause grows noticeably. They attribute it to each turn re-sending a large payload built from chat history. That is the developer's own observation, not a documented description of how Cursor works. Starting a new chat restores the speed but costs the context: which files changed, what broke, what constraints apply.\n\nVicem, an open-source tool under the MIT license, attacks the payload size. It is also an MCP server, meaning a small local program that gives the agent extra tools it can call (MCP stands for Model Context Protocol). Its developer says it runs on Node.js built-ins only, with zero npm dependencies and no network calls, and cuts tokens per turn by \"usually 55% to 78%\". Tokens are the chunks of text a model reads and is billed for.\n\n**What it trims**\n\nA function body is the code between a function's braces, the part that does the work; the signature is the line that names the function and its inputs. A stub is a short placeholder left in the body's place.\n\n- **Code skeletonizer:** keeps imports, exported types and function signatures, and replaces unchanged function bodies with a one-line stub carrying an ID, such as `{ /* vicem:fn_a8c39f (42L) */ }`.\n- **Log slimmer:** strips passing test lines and `node_modules` stack frames from terminal output, so the agent sees the failing assertions.\n- **Data diet:** condenses large JSON, CSV and SQL files into compact schemas and ignores lockfiles.\n- **Secret guard:** masks `.env` values and keys such as `sk-*`, `ghp_*` and `AKIA*` locally before they reach the prompt.\n\n**Getting bodies back**\n\nStripped blocks are stored in `.vicem/ledger.json`. Vicem registers a lightweight stdio MCP server (one that talks to Cursor over standard input and output rather than a network port) in `~/.cursor/mcp.json`, with an optional `.cursor/rules/vicem.mdc` rule. When the agent needs to read or edit a skeletonized function, it calls `vicem_rehydrate_node` and pulls back only those lines.\n\n**Carrying state into a new chat**\n\nVicem can also snapshot the workspace: it copies `state.vscdb` plus the `-wal` and `-shm` files to a temp file (so it never locks a running Cursor window), adds your git diff and recent terminal output, and writes a `BATON.md` handoff file you can use to start a fresh chat without re-explaining.\n\n**Trying it**\n\nThe code is at github.com/RAKKUNN/vicem. `npx vicem-cli gui` launches a local three-column web GUI, and a browser sandbox runs at rakkunn.github.io/vicem.\n\nThe developer built it for long sessions on larger codebases. The token savings and the explanation of the slowdown are the developer's own; the source gives no speed measurement.","category":"Workflow","slug":"vicem-swaps-unchanged-function-bodies-for-one-line-stubs-to-slim-agent-m-633ea1","url":"https://cursorhq.ai/guides/vicem-swaps-unchanged-function-bodies-for-one-line-stubs-to-slim-agent-m-633ea1/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/633ea1f3-ccdd-4279-99b0-490dd30577ff","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/vicem-swaps-unchanged-function-bodies-for-one-line-stubs-to-slim-agent-m-633ea1/13d5362447afa6e3-56073ef165789f7d/web_hero.webp","imageAlt":"A row of document stacks, with one full stack and several others compressed into thin placeholders by metal spacer plates.","createdAt":"2026-10-29T00:20:09.117Z"},{"id":"e9e0ebc4-2dbe-4f7f-b238-896f0f17f3a1","title":"Track Cursor CLI tasks and approvals across repos from one dashboard","dek":"Denly, a web dashboard for coding agents, runs Cursor's CLI (the command-line interface, a text-based way to run the agent from a terminal) on your own machine and collects whatever needs a human decision in one place.","bodyMd":"Denly gathers the work that is waiting on you across several projects: plans to approve, questions from agents, failures and PRs ready for review. Its Cursor integration drives Cursor's CLI on your own machine, according to its developer's forum post. The CLI is the command-line interface, the text-based way to run the Cursor agent from a terminal. The tool also supports other coding-agent CLIs, so different projects can use different providers.\n\n**How the workflow runs**\n\n1. Submit a task for a project.\n2. Review the agent's proposed plan and approve it.\n3. Let the agent build and run the checks configured for that repository.\n4. Review the resulting PR, then request changes or merge.\n\n**Who it is aimed at**\n\nThe developer pitches Denly at people using Cursor across several repositories and asks for feedback on whether the workflow helps. The part the developer says they are focusing on now is coordinating work across projects and keeping track of where a person needs to step in.\n\n**Limits to know**\n\n- The runner makes outbound requests to the control service, so no port needs to be opened on your machine.\n- Your machine must be awake and online for tasks to execute.\n- Selected plans, transcripts and other content can be uploaded, so local execution does not mean everything stays local.\n- Denly has a free plan and paid tiers. You use your own agent account, with its existing limits and charges.\n\nThe developer's post links a product page at denly.dev and an illustrated demo walkthrough with sample tasks.","category":"Ecosystem","slug":"track-cursor-cli-tasks-and-approvals-across-repos-from-one-dashboard-e9e0eb","url":"https://cursorhq.ai/guides/track-cursor-cli-tasks-and-approvals-across-repos-from-one-dashboard-e9e0eb/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/e9e0ebc4-2dbe-4f7f-b238-896f0f17f3a1","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/track-cursor-cli-tasks-and-approvals-across-repos-from-one-dashboard-e9e0eb/aecba402adeae18f-570bf920197284f3/web_hero.webp","imageAlt":"A metallic central hub with four cables connecting to four separate workstation towers, representing the coordination of multiple coding tasks in one location.","createdAt":"2026-10-28T19:11:12.546Z"},{"id":"0f97b24d-6df1-42d8-abb5-e096c1f17ea9","title":"Write a pull request prompt as a Cursor custom command in a markdown file","dek":"A markdown file in a commands folder inside the cursor folder holds a prompt that asks for a PR with a descriptive title and the GitHub CLI.","bodyMd":"Cursor custom commands are markdown files in a `commands` folder inside the cursor folder, each holding a prompt. The walkthrough's example is a command for making pull requests.\n\nA few terms in plain language:\n\n- **Markdown file:** a plain-text file, ending in `.md`, that uses simple formatting symbols.\n- **Pull request (PR):** a proposal to merge your code changes into a project so others can review them.\n- **Prompt:** the written instructions you give Cursor's AI.\n- **Command:** here, a named markdown file that holds a prompt you have written down.\n- **GitHub CLI:** GitHub's command-line tool, which can create pull requests from the terminal.\n\n**How to set it up**\n\n1. In the cursor folder, create a new folder named `commands`.\n2. Inside it, add a markdown file. The example uses `pr.md`, but the file can be named whatever you want.\n3. Put the prompt in the file. The example reads: \"Your job is to create a PR with a descriptive title. Always use the GitHub CLI.\"\n\nThe prompt text is free-form, so you decide what goes in it. The walkthrough notes you could also add specific rules or commit guidelines to the same file.\n\n**What the example shows**\n\nThe example keeps a pull request prompt in a `pr.md` file inside the `commands` folder. That prompt asks for a PR with a descriptive title and says to always use the GitHub CLI.\n\nThe source covers only the file setup and the example prompt. It does not show how the command is then invoked.","category":"Workflow","slug":"write-a-pull-request-prompt-as-a-cursor-custom-command-in-a-markdown-fil-0f97b2","url":"https://cursorhq.ai/guides/write-a-pull-request-prompt-as-a-cursor-custom-command-in-a-markdown-fil-0f97b2/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/0f97b24d-6df1-42d8-abb5-e096c1f17ea9","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/write-a-pull-request-prompt-as-a-cursor-custom-command-in-a-markdown-fil-0f97b2/ce519ee6e9295810-7821bc6d791aef8f/web_hero.webp","imageAlt":"A metal cartridge with etched markings is shown being inserted into a slot on the side of a larger, modular hardware device.","createdAt":"2026-10-28T08:39:32.458Z"}]}