{"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":"8607be62-23e4-4275-be60-1648d895fcbb","date":"2026-10-23","status":"locked","createdAt":"2026-10-22T16:03:54.838Z","storyCount":8,"newsletterSubject":"Script your cloud agents' workspaces, with many project code folders and faster starts"},"updatedAt":"2026-10-22T16:00:17.585Z","stories":[{"id":"1cceeb73-26f6-4579-891e-44a313620e85","title":"Script your cloud agents' workspaces, with many project code folders and faster starts","dek":"Cursor's Environments API, now in beta, lets you create and manage the cloud environments its agents run in from your own scripts (an API is the way one program lets other programs use it), including the repos, the shared folders where a project's code lives, that each one clones and the environment.json setup it runs.","bodyMd":"Cursor released the Environments API in beta on October 16. An API is a way for your own scripts and tools to drive a product without clicking through its interface. Here it means you can create and manage the cloud environments your agents run in from code, including the repos they clone and the environment.json setup they run. A repo, short for repository, is the shared folder where a project's code lives.\n\nCursor's changelog points to the endpoint reference in its Cloud Agent API docs, under Environments, for the calls themselves. The feature is in beta.\n\nAlongside the API, Cursor changed how large environments behave. Its changelog says cloud agent environments now support up to 300 repositories and that large environments load 5x faster. Cursor's other announcement, on X, gives a different ceiling: up to 500 repos, with large multi-repo environments starting 5x faster. The two give different caps, 300 in the changelog and 500 in the announcement on X. The 5x speedup is the same in both.\n\nThe same update lets cloud agents build interactive canvases as part of their work. Cursor says you can ask for a dashboard or report while the agent works, then share the finished canvas with your team by sending a link. Sharing is covered in the canvas docs.","status":"published","storyType":"news","category":"Release","clusterKey":"cursor-environments-api-beta-cloud-agents","slug":"script-your-cloud-agents-workspaces-with-many-project-code-folders-and-f-1cceeb","url":"https://cursorhq.ai/news/script-your-cloud-agents-workspaces-with-many-project-code-folders-and-f-1cceeb/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/1cceeb73-26f6-4579-891e-44a313620e85","role":"lead","position":0,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/script-your-cloud-agents-workspaces-with-many-project-code-folders-and-f-1cceeb/05be85dae49298a8-80194b2d59e79888/web_hero.webp","imageAlt":"A rack of 500 modular repository cartridges with one cartridge being pulled out from the slot.","createdAt":"2026-10-17T00:48:21.633Z","updatedAt":"2026-10-17T01:00:50.787Z","sources":[{"role":"primary","title":"Cursor Cloud Agents Now Build Interactive Canvases and Get an API","url":"https://cursor.com/changelog/cloud-agent-canvases-and-environments","sourceName":"Cursor Changelog","author":"Cursor Changelog","publishedAt":"2026-10-16T12:00:00Z"},{"role":"supporting","title":"Cursor Ships Environments API Beta for Cloud Agent Workflows","url":"https://x.com/cursor_ai/status/2111193980981665837","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-10-16T20:34:03Z"},{"role":"supporting","title":"Cursor Ships Environments API Beta for Cloud Agent Workflows","url":"https://x.com/cursor_ai/status/2111193969355084011","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-10-16T20:34:01Z"},{"role":"supporting","title":"Cursor Ships Environments API Beta for Cloud Agent Workflows","url":"https://x.com/cursor_ai/status/2111193957527146711","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-10-16T20:33:58Z"}]},{"id":"bd229f29-e783-47f1-b6a4-d4e4895250f1","title":"Make Cursor agents reproduce, fix and verify a bug before they say they're done","dek":"pstack, a Cursor plugin of reusable agent skills, adds a \"potato mode\" prefix that picks the right workflow for a task and checks your done-condition before the agent reports back. You can add ready-made instruction packs to your Cursor agent so it follows a set routine for certain tasks. You can type a special word at the start of a request so the agent picks the right routine for the task and checks it's really finished. You can install an add-on that gives Cursor extra abilities.","bodyMd":"pstack is a plugin for Cursor that bundles skills: instruction files that tell an agent how to understand, design, clean up, verify and review code. Its pitch is less code at higher quality, with every agent in a parallel run following the same rules. A community port, pstack-claude, now carries the skills to Claude Code, Codex, Pi, Copilot and OpenCode.\n\n**What the skills do**\n\n- **Understand before fixing.** One skill explains how code works today. Another finds why it was built that way, searching commit history, issues, docs and team conversations. Asked why a retry count is five and whether that reason still holds, it answers with evidence, separates confirmed facts from guesses, and says so if nobody recorded the reason.\n- **Design.** For large changes across many functions, an architect skill drafts the design. An arena mode has several agents submit designs at once, a model from a different family judges them, and the best one absorbs good parts of the others. If implementation keeps needing the same patch in different places, the design is treated as wrong and redone.\n- **Cleanup.** A no-comments skill hands finished code to a fresh reviewer that keeps only essential comments, such as license notices and public-feature descriptions. For any \"do not remove\" annotation in the code, it suggests turning that condition into a type, test or rule.\n- **Verification.** Run the verification skill once and the agent studies your repository, then writes down how to launch the app, test features and record results. Later agents follow those notes.\n- **Cross-model review.** An interrogate skill sends the same code and reasoning to models from different families. Where two independently flag the same problem, that counts as a strong signal. Findings come back as fix now, consider, or dismissed (with a reason). It does not fix anything automatically.\n\n**How to use it**\n\n1. In Cursor, add the plugin named pstack.\n2. Run setup pstack. It finds the models you have access to and assigns one to each role. The suggested split puts feature work, refactors, bug fixes and performance work on Grok, and the hardest changes and judgment calls on Claude Opus 5.5.\n3. Start a task with \"potato mode\", then the task, then one line saying how to confirm it is finished. The agent picks the procedure and skills, and reports done only after checking that criterion.\n\nFor a bug, potato mode reproduces the problem first, finds the cause from evidence such as logs, changes only what is needed, reruns the same conditions, and reports both the failing result and the fixed one. The suggested phrasing is: reproduce first, then fix, then verify.\n\n**When to reach for it**\n\n- Parallel work: one review pass assigns one agent per package and returns a single report sorted into pass, problem and blocked.\n- Overnight runs: set the done-condition first, have the agent log each decision in a fresh workspace, and check the night's work in the morning with a show-me-your-work step. The engineer who revealed the skill reports shipping 2,000 pull requests to production last month this way.\n\nThe port's install commands for Claude Code and Codex are published by the porter; the source video points to its description for them.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"pstack-cursor-plugin","slug":"make-cursor-agents-reproduce-fix-and-verify-a-bug-before-they-say-they-r-bd229f","url":"https://cursorhq.ai/guides/make-cursor-agents-reproduce-fix-and-verify-a-bug-before-they-say-they-r-bd229f/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/bd229f29-e783-47f1-b6a4-d4e4895250f1","role":"item","position":1,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/make-cursor-agents-reproduce-fix-and-verify-a-bug-before-they-say-they-r-bd229f/765a5b86b2539fba-bee59b962ecffea6/web_hero.webp","imageAlt":"A brass manifold with five mechanical arms holding instruction cartridges, representing a centralized tool system that distributes tasks to multiple specialized modules.","createdAt":"2026-10-22T01:18:41.809Z","updatedAt":"2026-10-22T01:30:34.032Z","sources":[{"role":"primary","title":"SpaceX Engineer's pstack Plugin Brings Rigorous AI Coding Workflows to Cursor","url":"https://www.youtube.com/watch?v=gAt_rRweR7Q","sourceName":"@Mindung-EasyAI","author":"@Mindung-EasyAI","publishedAt":"2026-10-16T14:55:57Z"},{"role":"supporting","title":"pstack Workflows Now Work Across Claude Code, Codex, and Other Agents","url":"https://x.com/LLMpsycho/status/2110637801272439262","sourceName":"LLMpsycho","author":"LLMpsycho","publishedAt":"2026-10-15T23:36:00Z"}]},{"id":"ffdda8b5-035c-4f30-9ebf-afc6c5f48f07","title":"Review AI-written branches like a strict senior engineer would","dek":"An open-source review skill (a reusable set of instructions your coding agent follows) in Cursor's official plugins repo, the shared folder where a project's code lives, checks every change on a branch even when the code already works.","bodyMd":"AI-written code usually runs, so it tends to get approved even when it is a mess. Thermonuclear Code Quality Review, an open-source skill in Cursor's official plugins repo (the shared GitHub folder where Cursor keeps its plugins, which has over 11,000 stars), is built to ignore that. Run it on your branch and it reviews every change the way a strict senior engineer would. It works with Cursor and Claude Code.\n\n**What it checks**\n\n- **Behavior-preserving restructures.** It looks for rewrites that keep behavior exactly the same but delete whole branches, helpers and layers.\n- **File size.** If your change pushes a file past 1,000 lines, it stops and asks you to split the file first.\n- **Odd conditionals.** It treats strange if-statements in random places as a design problem, not a nitpick.\n- **Hidden types.** It calls out every wrapper, cast and `any` type that hides what your code really does.\n\n**How to use it**\n\nThe source describes the workflow as running the skill on your branch. It does not give an install command or invocation syntax, so take those from the plugins repo.\n\n**When to reach for it**\n\nUse it on AI-written branches that work but may be messy. Expect it to interrupt: the 1,000-line rule means you may have to split a file before the review moves on.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"thermonuclear-code-quality-review-skill","slug":"review-ai-written-branches-like-a-strict-senior-engineer-would-ffdda8","url":"https://cursorhq.ai/guides/review-ai-written-branches-like-a-strict-senior-engineer-would-ffdda8/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/ffdda8b5-035c-4f30-9ebf-afc6c5f48f07","role":"item","position":2,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/review-ai-written-branches-like-a-strict-senior-engineer-would-ffdda8/ce69b6161ce78d36-77288eec83439ce5/web_hero.webp","imageAlt":"A mechanical caliper tool with four pressure pins rests on a thick stack of paper strips, forcing one strip to split into two smaller stacks.","createdAt":"2026-10-17T00:49:34.666Z","updatedAt":"2026-10-17T01:00:33.764Z","sources":[{"role":"primary","title":"Cursor's New Strict Code Review Skill Catches Messy AI Code That Works","url":"https://instagram.com/reel/Deb-zN6sSnL","sourceName":"@baniascodes","author":"@baniascodes","publishedAt":"2026-10-13T14:08:50Z"}]},{"id":"bebffcc2-1c4a-40a2-942b-f02b9c2fe4fa","title":"Stop Cursor from quietly working with a model you didn't pick","dek":"Cursor Rules are standing instructions the AI reads before it works, and one short rule can make the agent halt when the active model isn't on your approved list.","bodyMd":"Cursor has no setting to switch off new models by default. When one appears, it can end up as the model doing your work without you choosing it.\n\nThe workaround is a check written into your Cursor Rules. Rules are instructions you write once and Cursor's agent follows each time it works, so you don't have to repeat yourself in every prompt. The check tells the agent to stop if the active model isn't one of your approved models.\n\n**How to set it up**\n\n1. Decide which models you are happy to work with.\n2. Add a rule to your Cursor Rules that lists them and tells the agent to stop if the active model isn't on that list.\n\nThe source describes the rule in those terms and gives no exact wording, so write it plainly, for example: \"If the active model is not one of the following, stop and tell me: [your approved models].\" That wording is a suggestion, not a tested prompt.\n\n**When it is worth using**\n\nThe rule is there so you don't accidentally end up doing work with a model you didn't intend to use. The intent is that the agent stops when the active model isn't on your list.\n\n**Limit**\n\nThis is an instruction the agent follows, not a switch in Cursor's settings. The source frames it as a stand-in for the missing ability to disable new models by default.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-rule-block-accidental-model-switch","slug":"stop-cursor-from-quietly-working-with-a-model-you-didn-t-pick-bebffc","url":"https://cursorhq.ai/guides/stop-cursor-from-quietly-working-with-a-model-you-didn-t-pick-bebffc/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/bebffcc2-1c4a-40a2-942b-f02b9c2fe4fa","role":"item","position":3,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/stop-cursor-from-quietly-working-with-a-model-you-didn-t-pick-bebffc/651058f6b70ffad3-1f466d9b6512fcb8/web_hero.webp","imageAlt":"A mechanical dial and gate mechanism where a sliding metal bolt physically blocks access when the current model token does not match the approved set.","createdAt":"2026-10-22T15:39:57.381Z","updatedAt":"2026-10-22T16:00:17.585Z","sources":[{"role":"primary","title":"Add This Cursor Rule to Stop Accidental Model Switches","url":"https://reddit.com/r/cursor/comments/1xbg3v0/tip_for_cursor_users_make_sure_youre_using_the","sourceName":"u/iksem","author":"u/iksem","publishedAt":"2026-10-21T06:57:01Z"}]},{"id":"ade3055c-4924-4527-8c50-749be2f9ce52","title":"A Cursor Cloud Agents setup fixes live-app errors and merges low-risk changes on its own","dek":"When an error is thrown in the live Yorbi app, a GrokBot error-fix agent working with Cursor Cloud Agents makes the same error happen again in its own sandbox (a walled-off space where code can run without touching your real files), fixes it and merges the change if it is low risk. Merging means adding a finished code change into the main version of the app so it goes live.","bodyMd":"A GrokBot error-fix agent for Yorbi, used together with Cursor Cloud Agents (AI coding agents that run remotely rather than on your own machine), works as an on-call engineer for a live app. The setup comes from the builder of Yorbi, an AI social media marketing tool, who says their overall AI coding stack, which also includes Claude Opus 5.5 and other tools, helps them ship over 30 pull requests (proposed code changes waiting for review) in a single day.\n\n**How the loop works**\n\n1. Whenever an error is thrown while a user is using the app, it is sent automatically to the Yorbi error-fix GrokBot. These are errors that happen in the live app with real users, not in testing.\n2. The agent reproduces the exact error, meaning it makes the same error happen again on purpose so it can see what causes it. It does this in its own sandbox computer environment.\n3. It fixes the bug using the real data that caused the original error.\n4. It verifies the fix with screenshots, video recordings, unit tests and end-to-end tests.\n5. If the change is relatively low risk, meaning a small, safe change where a wrong fix is unlikely to cause serious damage, the agent merges it. Higher-risk changes are not described as merged automatically.\n\nThe builder's earlier videos in the series cover verification skills, which they say are probably the biggest investment you can make in an AI coding stack.\n\n**When to use it**\n\nThe builder uses the agents as an on-call engineer that fixes bugs so they can focus on main feature work. That feature work happens in Claude Opus 5.5, Anthropic's AI model, which they mainly use in the Claude desktop app.\n\n**Caveats**\n\nThe merge step is limited to low-risk changes. The 30-plus pull request figure is the builder's own claim for a single day, and it describes their whole coding stack rather than this setup alone.","status":"published","storyType":"tip","category":"Agents","clusterKey":"grokbot-cursor-cloud-agent-bug-fixing","slug":"a-cursor-cloud-agents-setup-fixes-live-app-errors-and-merges-low-risk-ch-ade305","url":"https://cursorhq.ai/guides/a-cursor-cloud-agents-setup-fixes-live-app-errors-and-merges-low-risk-ch-ade305/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/ade3055c-4924-4527-8c50-749be2f9ce52","role":"item","position":4,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/a-cursor-cloud-agents-setup-fixes-live-app-errors-and-merges-low-risk-ch-ade305/987c6cfdf96a6d61-ca93095b23ef08a8/web_hero.webp","imageAlt":"A metallic server device featuring an isolated sandbox chamber where errors are replicated and fixed before being funneled into the main system.","createdAt":"2026-10-20T00:33:25.561Z","updatedAt":"2026-10-20T01:00:35.710Z","sources":[{"role":"primary","title":"How One Builder Ships 30 Pull Requests Daily Using GrokBot and Cursor Agents","url":"https://www.youtube.com/watch?v=Oor41GuIjYw","sourceName":"Your Average Tech Bro","author":"Your Average Tech Bro","publishedAt":"2026-10-19T19:54:05Z"}]},{"id":"c806a5a7-04dc-4ecc-8fac-7c431a1feed0","title":"Build, test and ship an iOS app from Windows or Linux with a cloud Mac","dek":"NoMac, a hosted MCP server (a plug-in service Cursor's agent can call), starts a macOS virtual machine with Xcode and the iOS Simulator so the agent can build and test on a real Mac. You get a temporary Mac-style computer running inside another computer, so you can use it without owning a Mac.","bodyMd":"NoMac gives Cursor's agent its own Mac in the cloud. The agent can start a macOS virtual machine (VM), build with `xcodebuild`, run the iOS Simulator, look at screenshots, run UI tests and send a signed build to TestFlight, Apple's beta-testing service. It is aimed at people on Windows or Linux who use Cursor for iOS or Mac apps, and at anyone who wants the agent to build and test on a real Mac. NoMac's developer posted it to the Cursor forum.\n\nThe agent gets a real Mac with Xcode and the iOS Simulator. It can build and test the app on that remote machine and look at screenshots of what the Simulator shows.\n\n**Setup.** In Cursor, add `https://mcp.nomac.app/mcp` as an MCP server and sign in with OAuth. The agent can then start a Mac, which takes about a minute.\n\n**Working on the Mac yourself.** You can also open the project on the Mac in Cursor with Remote-SSH. Running `nomac ssh-config` names the Mac `nomac` in your SSH config, so it appears as a normal remote host.\n\n**Lifecycle and cost.** Each session is a fresh VM that is deleted when it stops. A drive keeps the project and the build cache between sessions. Billing is by the minute at $0.80 an hour, drawn from prepaid credit.\n\nNoMac's developer is asking for reports of what breaks. Reach for it when a task needs a real build, a Simulator check or a TestFlight upload on a real Mac.","status":"published","storyType":"news","category":"Ecosystem","clusterKey":"nomac-mcp-cloud-mac-ios-builds","slug":"build-test-and-ship-an-ios-app-from-windows-or-linux-with-a-cloud-mac-c806a5","url":"https://cursorhq.ai/news/build-test-and-ship-an-ios-app-from-windows-or-linux-with-a-cloud-mac-c806a5/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/c806a5a7-04dc-4ecc-8fac-7c431a1feed0","role":"item","position":5,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/build-test-and-ship-an-ios-app-from-windows-or-linux-with-a-cloud-mac-c806a5/228cdeff7fca540a-03193baa2747ee79/web_hero.webp","imageAlt":"A metallic server blade bridged to a small modular expansion cartridge representing a cloud-based virtual machine.","createdAt":"2026-10-17T17:45:36.316Z","updatedAt":"2026-10-17T18:00:56.921Z","sources":[{"role":"primary","title":"NoMac MCP Gives Cursor's Agent a Cloud Mac for iOS Builds","url":"https://forum.cursor.com/t/give-cursors-agent-a-cloud-mac-for-ios-builds-nomac-mcp/175053","sourceName":"Gergo Miklos","author":"Gergo Miklos","publishedAt":"2026-10-16T17:36:30Z"}]},{"id":"1ae20655-e2a5-4e5d-a77a-3ed9357350b8","title":"Record every tool call Cursor's agent makes in a local log that shows if past entries were changed","dek":"Agentmetry runs locally, hooks into Cursor and records each tool call (an action the agent takes on its own, like running a command or editing a file) in a log where each entry is cryptographically linked to the one before it, so edits or deletions of past entries show; nothing is sent to the developer.","bodyMd":"Agentmetry is a local recorder for Cursor's agent. It logs each tool call the agent makes into a hash-chained trail. A tool call is an action the Cursor agent takes on its own, like running a command or editing a file, and Agentmetry keeps a record of each one. In a hash chain, every entry carries a fingerprint (a hash) tied to the one before it, so each entry is cryptographically linked to the previous one and changing or deleting an old record would break the chain. Nothing is sent to the developer. The project describes itself on GitHub as a local-first flight recorder for AI coding agents, with MITRE-mapped sequence detection and data loss prevention (DLP) checks. It can also forward to the SIEM (security log system) you already run.\n\nSetup needs Python 3.11 or newer. Run `pip install agentmetry`, then `agentmetry hooks install`, which is the step that turns recording on for Cursor. Next run `agentmetry start` and `agentmetry dashboard`. The dashboard opens through a one-time sign-in link, and the browser does not keep the API token. To see what the output looks like before installing anything, run `uvx agentmetry demo`.\n\nThe MCP monitoring is the part aimed at a specific attack. MCP servers give the agent its tools, and each tool carries a text description the model reads. Agentmetry hashes the `tools/list` output per tool and hashes the configured command separately. When the listing hash changes and the config hash does not, that is the event it flags. A poisoned change can keep the tool name and add one line to the description while `mcp.json` stays the same file, so a config diff would show nothing. Agentmetry stores the hash, not the description text.\n\nThe limits are stated plainly. A server that was already altered the first time Agentmetry saw it does not trigger an alert, and a normal edit to a tool looks the same as a malicious one. Cursor with its hooks switched off is invisible to the recorder.\n\nReach for it if you want a local record of what Cursor's agent did, or want that activity forwarded to the SIEM you already run. It also watches MCP servers for description changes. The site is agentmetry.ai.","status":"published","storyType":"news","category":"Agents","clusterKey":"agentmetry-local-audit-hook-cursor-agent","slug":"record-every-tool-call-cursor-s-agent-makes-in-a-local-log-that-shows-if-1ae206","url":"https://cursorhq.ai/news/record-every-tool-call-cursor-s-agent-makes-in-a-local-log-that-shows-if-1ae206/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/1ae20655-e2a5-4e5d-a77a-3ed9357350b8","role":"item","position":6,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/record-every-tool-call-cursor-s-agent-makes-in-a-local-log-that-shows-if-1ae206/930462bb83e4d335-757ed4f303c054c3/web_hero.webp","imageAlt":"A stack of metal blocks, each with unique etched patterns, physically locked together in a vertical column.","createdAt":"2026-10-18T21:02:45.306Z","updatedAt":"2026-10-18T21:30:26.454Z","sources":[{"role":"primary","title":"New Local Tool Tracks Every Move Cursor's Agent Makes on Your Machine","url":"https://forum.cursor.com/t/a-local-record-of-the-tool-calls-cursors-agent-made/175129","sourceName":"Ioannis Loutsis","author":"Ioannis Loutsis","publishedAt":"2026-10-17T14:36:20Z"}]},{"id":"2b1ca17e-c53b-4ecd-a127-3838c0b2bf3a","title":"Send Cursor only the code it needs: Cursory's developer reports about 40% fewer tokens in an early test","dek":"Cursory, a free local plugin for Cursor, trims what the model reads (the chunks of text called tokens, which usage is billed on) by sending relevant functions instead of whole files; its developer reports 40.9% fewer in an early test.","bodyMd":"Cursory is a free, open-source plugin for Cursor that cuts the context the editor sends to the model. Its developer says an early local test showed 40.9% fewer tokens than a baseline. Tokens are the chunks of text a model reads and is billed on, so less context in means less usage spent.\n\nThe plugin works on four fronts. For file reads, it retrieves the relevant functions, symbols and line ranges rather than dumping an entire file when the model needs one function. For searches, it ranks results and filters out repository noise. It also detects repeated content so the same code is not read multiple times. And it shrinks large terminal output: logs, test results and Git diffs.\n\nCursory uses what its developer calls progressive context: the model can still retrieve the complete original content when necessary.\n\nCursory runs local-first, with no external backend, API keys or code uploads. It does not change your model or proxy your API traffic. The developer says the aim is to keep using the same models while wasting fewer tokens on information they do not need. The code is on GitHub under the MIT license.\n\nThe 40.9% figure comes from an early local benchmark, and the developer is explicit that it is not a promise your Cursor bill will fall by 40 to 50%. Actual savings depend on the task, the model, caching and Cursor's billing. The plugin is still under active development, and the developer is asking for feedback from people running it on larger codebases.","status":"published","storyType":"news","category":"Ecosystem","clusterKey":"cursory-plugin-token-savings","slug":"send-cursor-only-the-code-it-needs-cursory-s-developer-reports-about-40-2b1ca1","url":"https://cursorhq.ai/news/send-cursor-only-the-code-it-needs-cursory-s-developer-reports-about-40-2b1ca1/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/2b1ca17e-c53b-4ecd-a127-3838c0b2bf3a","role":"item","position":7,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/send-cursor-only-the-code-it-needs-cursory-s-developer-reports-about-40-2b1ca1/9cb82408214d7488-dcb5d8be6b6387dc/web_hero.webp","imageAlt":"A metal cylinder being pulled from a rack of ten identical cylinders, representing the reduction of code tokens.","createdAt":"2026-10-21T03:53:16.020Z","updatedAt":"2026-10-21T04:00:38.377Z","sources":[{"role":"primary","title":"Free Open-Source Plugin Cuts Cursor Token Waste by 40% in Early Tests","url":"https://reddit.com/r/cursor/comments/1xarts0/i_built_cursory_to_cut_wasted_cursor_tokens_in","sourceName":"u/Amped16","author":"u/Amped16","publishedAt":"2026-10-20T13:14:02Z"}]}],"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"}]}