{"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":"b1153b35-887f-4578-9abc-013a2e3ca1a8","date":"2026-11-06","status":"open","createdAt":"2026-11-05T16:32:34.518Z","storyCount":10,"newsletterSubject":null},"updatedAt":"2026-11-07T00:00:16.853Z","stories":[{"id":"40539d3f-0eff-444f-aafc-b7cc51a95aea","title":"Cursor Lets Paid Users Turn a Description Into a Live, Shareable Work App","dek":"Cursor builds the app, sets up a database and sign-in, and publishes it to a web address you pick, on paid plans with cloud agents (background AI helpers) enabled.","bodyMd":"Cursor can now take a described tool all the way to a live URL. Start a cloud agent, tell it explicitly that you want to build an app, and it scaffolds the web app, spins up a Postgres database if one is needed, sets up authentication behind Cursor SSO, and provisions hosting. Cursor's changelog, dated Nov 5, says the aim is to get apps off localhost, where it says most apps and tools users build stay.\n\nIf the app has to reach your own systems, such as a data warehouse, Cursor asks for the secrets it needs. When you publish, you pick a unique domain and Cursor returns a live link. It can deploy from new or existing repos on Cursor Origin and GitHub. Support for other git providers such as GitLab is listed as coming soon.\n\nPublishing is gated. Cursor runs deterministic and agentic security checks that look for common issues like secrets written into app files or exposed credentials. If a check fails, the agent tells you what it needs to fix. Nothing goes live until the checks pass and you explicitly publish.\n\nTeam admins get oversight. They can see every app and secret on the team, add their own rules to the security review, approve publishes the review blocked, and unpublish any app.\n\nSharing sits behind Cursor sign-in: you can share with specific people, groups, or the whole team. On individual plans, apps can also be shared publicly. You can also provision a Cursor API key if a script or Grok Bot needs to call your app.\n\nCursor says teams internally use it for event registration, account assignment and desk-seating tools, customer presentations that mix slides, video and interactive demos, onboarding material, live sales pipeline dashboards, and portals for engineering services. The feature is available on all paid plans with cloud agents enabled. Update Cursor to use it.","status":"published","storyType":"news","category":"Release","clusterKey":"cursor-build-live-apps-share-link","slug":"cursor-lets-paid-users-turn-a-description-into-a-live-shareable-work-app-40539d","url":"https://cursorhq.ai/news/cursor-lets-paid-users-turn-a-description-into-a-live-shareable-work-app-40539d/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/40539d3f-0eff-444f-aafc-b7cc51a95aea","role":"lead","position":0,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cursor-lets-paid-users-turn-a-description-into-a-live-shareable-work-app-40539d/44dca4afe9141616-aaced3b1949a1bb1/web_hero.webp","imageAlt":"A server module being removed from a row of cabinets, connected by a cable to a single external gateway device.","createdAt":"2026-11-05T23:29:42.209Z","updatedAt":"2026-11-06T01:59:18.243Z","sources":[{"role":"primary","title":"Build Live Apps in Cursor","url":"https://cursor.com/changelog/build-live-apps","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-11-05T00:00:00Z"},{"role":"supporting","title":"Teams across Cursor are already using it to build live dashboards, customer presentations, internal ops tools, onboardin","url":"https://x.com/cursor_ai/status/2118458641171013820","sourceName":"@cursor_ai","author":"cursor_ai","publishedAt":"2026-11-05T21:41:13Z"},{"role":"supporting","title":"You can now build live apps in Cursor and share them with a link. Agents have made it easier to write code, but most app","url":"https://x.com/cursor_ai/status/2118458629091426304","sourceName":"@cursor_ai","author":"cursor_ai","publishedAt":"2026-11-05T21:41:10Z"}]},{"id":"21b5cd16-7171-4260-9b24-f8073a40aa33","title":"Cursor Adds Voice Calls With Its Coding Agents, Which Report Progress Aloud","dek":"Voice chat opens a realtime call with an agent, so you can describe a change, check on a run and hear short updates without typing.","bodyMd":"Cursor added voice chat on November 6, so you can talk to an agent in a realtime voice call. Describe a change out loud, ask what an agent is working on, and hear updates as the work moves forward. It works in the Agents Window, the IDE, on web, and in Cursor for iOS.\n\nTo start a call, wait until the agent is idle and the chat input is empty. Then click the waveform button labeled Start voice chat. It sits where Send usually is, next to the microphone button for dictation. On iOS you can also say \"Hey Siri, call Cursor\" to start a call with a new agent. You can mute or hang up from the Lock Screen through a Live Activity.\n\nThe call doesn't stop when the coding starts. The voice agent listens, replies, and hands coding work to the agent in your chat. While that agent runs, you can ask what changed in a diff, check on a run, search earlier messages and calls with this agent, or switch between workers in a Project that has them.\n\nThe coding agent also speaks for itself. It shares short progress notes while it works and a brief answer when it finishes, so you usually hear a short update instead of the full written reply.\n\nVoice chat runs on Grok Voice. Voice settings let you pick from many voices, including Ara, Eve, Leo, Rex, and Sal. With Privacy Mode on, voice chat runs with zero data retention.\n\nVoice chat is separate from dictation, which earlier releases called Voice Mode. Dictation still turns your speech into text in the chat input, and Cmd+Shift+Space still toggles it in the IDE. Voice chat is the two-way version, where the agent answers out loud. Update Cursor to try it.","status":"published","storyType":"news","category":"Release","clusterKey":"cursor-voice-chat-with-agents","slug":"cursor-adds-voice-calls-with-its-coding-agents-which-report-progress-alo-21b5cd","url":"https://cursorhq.ai/news/cursor-adds-voice-calls-with-its-coding-agents-which-report-progress-alo-21b5cd/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/21b5cd16-7171-4260-9b24-f8073a40aa33","role":"item","position":1,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cursor-adds-voice-calls-with-its-coding-agents-which-report-progress-alo-21b5cd/e1a42d0aa206b41b-09eec5c95cd016c4/web_hero.webp","imageAlt":"A circular device with a speaker-like mesh grill sits on a split metal pipe, with a glowing vacuum tube representing the voice output.","createdAt":"2026-11-06T23:40:01.203Z","updatedAt":"2026-11-07T00:00:16.853Z","sources":[{"role":"primary","title":"Voice Chat with Agents","url":"https://cursor.com/changelog/voice-chat","sourceName":"Cursor","author":"Cursor","publishedAt":"2026-11-06T00:00:00Z"}]},{"id":"53ea2123-89a6-4163-b8fa-734c5791c23c","title":"OpenAI Plans to End Its Cursor Deal Nov. 12 as Talks Continue","dek":"OpenAI cited trust in telling SpaceX it wants out of the contract, and said it wants to keep developer access in place as long as it can, while Cursor co-founder Michael Truell says talks are under way.","bodyMd":"OpenAI said on Friday, Oct. 30, that it will wind down its partnership with Cursor, which is owned by SpaceX. According to Mashable, OpenAI's blog post says it notified SpaceX of its intent to end the contract and proposed a shutoff date of Nov. 12, 2026. Mashable reports that this is the maximum notice window allowed under the agreement.\n\nFor people who use Cursor, OpenAI said it wants to preserve as much access as possible for developers in the meantime. The coverage does not say which OpenAI models or features would be affected.\n\nOpenAI framed the decision as a matter of trust. The company said it could not be confident that SpaceX would use its technology in accordance with OpenAI's terms of service, and pointed to what it called a pattern of Musk's companies violating contracts. Its post alleged that X breached the terms of its own OpenAI contract after Musk's acquisition, and noted that Musk admitted under oath that xAI had also violated OpenAI's terms of service.\n\nOpenAI said its custom agreement with Cursor gave it only a limited window to cancel after a change of ownership. SpaceX completed its acquisition of Anysphere, the startup behind Cursor, in October, following a deal announced in June. OpenAI called the choice \"incredibly tough\" given how widely it wants its models used.\n\nMichael Truell, Cursor's co-founder and a SpaceX executive, struck a more conciliatory tone, saying on X that the company was in talks with OpenAI's team to try to resolve the issue. Musk, responding on X, wrote that he \"couldn't care less\" and called Altman and OpenAI president Greg Brockman \"untrustworthy.\"\n\nMashable also reports that, since the announcement, Anthropic, which has an ongoing partnership with SpaceX, said it would increase compute support (the computing power that runs its models) for its Claude models within Cursor.","status":"published","storyType":"news","category":"Ecosystem","clusterKey":"openai-winds-down-cursor-partnership","slug":"openai-plans-to-end-its-cursor-deal-nov-12-as-talks-continue-53ea21","url":"https://cursorhq.ai/news/openai-plans-to-end-its-cursor-deal-nov-12-as-talks-continue-53ea21/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/53ea2123-89a6-4163-b8fa-734c5791c23c","role":"item","position":2,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/openai-plans-to-end-its-cursor-deal-nov-12-as-talks-continue-53ea21/dbddc306aebcc9a1-7235a1e9c7ae1c32/web_hero.webp","imageAlt":"A heavy metal data cartridge being pulled out of an industrial rack, leaving one empty slot.","createdAt":"2026-11-05T16:15:14.381Z","updatedAt":"2026-11-06T01:59:49.792Z","sources":[{"role":"primary","title":"OpenAI cuts off Cursor's AI models, deepening feud with Musk - Mashable","url":"https://mashable.com/tech/openai-cuts-cursor-ai-models-deepening-feud-with-musk","sourceName":"\"when:7d Cursor Anysphere AI editor\" - Google News","author":"\"when:7d Cursor Anysphere AI editor\" - Google News","publishedAt":"2026-10-31T14:28:41Z"},{"role":"supporting","title":"Why Elon Is Rationing Grok Bot: Anthropic's Compute and the $60B Cursor Bet","url":"https://open.spotify.com/episode/0tpH7C9BZY23RnNzJLTRlY","sourceName":"In the Loop AI","author":"In the Loop AI","publishedAt":"2026-11-04T12:00:00Z"}]},{"id":"66fead68-ba51-4e5f-9c71-0572f7c04157","title":"Cursor Users Who Copied the Docs Delete-Blocking Example Should Fix It; Reworded Commands Slip Past","dek":"The docs example for blocking deletes only checks how a command is worded, so an agent that phrases the same delete differently is never stopped by the safety script.","bodyMd":"Cursor's hooks page shows a `beforeShellExecution` hook, which is a script Cursor runs before an agent's shell command, that blocks destructive deletes. It pairs a `\"matcher\": \"rm -rf\"` entry with a script that denies the command. A community post points out that, copied as written, this guardrail is thinner than it looks.\n\nThe gap comes from how the matcher works. It is tested against the command text, and the hook only runs when it matches. If the agent writes `rm -r -f`, `rm -fr` or `rm -Rf`, or uses `find . -delete`, the script never runs and the command goes through.\n\nThree changes can help:\n\n1. Leave the matcher off the safety hook, so the script sees every shell command and decides for itself.\n2. Inside the script, match the recursive and force flags in any order (the pattern `-[a-zA-Z]*[rR]` plus `--recursive`), and also catch `find -delete`.\n3. Set `failClosed: true`, so a crash in the script blocks the command instead of letting it through.\n\nTo check a setup, a free, open-source tester runs a repo's Cursor hooks against 66 spellings of destructive commands: `uvx paveo test cursor`. It is described as running locally, with nothing leaving your machine.\n\nThe matcher is tested against command text, and the hook only runs when that text matches.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-hooks-rm-rf-matcher-gap","slug":"cursor-users-should-check-delete-blocking-safety-rules-since-the-docs-ex-66fead","url":"https://cursorhq.ai/guides/cursor-users-should-check-delete-blocking-safety-rules-since-the-docs-ex-66fead/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/66fead68-ba51-4e5f-9c71-0572f7c04157","role":"item","position":3,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cursor-users-should-check-delete-blocking-safety-rules-since-the-docs-ex-66fead/9c5ce53a5861c7fa-9a0222c71adf21de/web_hero.webp","imageAlt":"A mechanical funneling device with a gate that stops 66 distinct metal tokens from passing through.","createdAt":"2026-11-05T05:26:06.779Z","updatedAt":"2026-11-05T10:02:02.597Z","sources":[{"role":"primary","title":"The hooks example in Cursor's docs stops 9 of 19 ways of writing a recursive delete","url":"https://reddit.com/r/cursor/comments/1xjgwdf/the_hooks_example_in_cursors_docs_stops_9_of_19","sourceName":"/u/Individual-Shower973","author":"/u/Individual-Shower973","publishedAt":"2026-10-30T14:29:01Z"}]},{"id":"cea29c92-c8bb-4ab7-8abc-bd29e7fa2109","title":"OffPrompt Keeps Stripe and Supabase Keys Out of Cursor Chat Using a Free Add-On Tool","dek":"OffPrompt, a free open-source MCP server (a small add-on tool that Cursor's agent can call), lets you paste a key into a local page instead of the chat.","bodyMd":"When Cursor's agent needs a key mid-task, the fastest path is pasting it into chat. The key then sits in the conversation history and has been sent to the model provider. OffPrompt, an open-source MCP server (a small add-on tool that Cursor's agent can call), gives the agent another route.\n\nThe agent calls a tool named `collect_secret` when it decides it needs something like `STRIPE_SECRET_KEY`. A page opens on 127.0.0.1, a local address. You paste the key there instead of into the chat. OffPrompt writes it to `.env.local`, and the agent carries on without ever seeing the value.\n\n**Set it up**\n\nAdd this to `.cursor/mcp.json`:\n\n```json\n{\"mcpServers\":{\"offprompt\":{\"command\":\"npx\",\"args\":[\"-y\",\"offprompt\",\"mcp\"]}}}\n```\n\nOffPrompt comes out of raycash.xyz, a small team building a confidential money app on Zama's FHE stack, where pasting keys into chat was not a habit the team wanted. The tool is MIT licensed and free. A step-by-step Stripe walkthrough, \"Take Stripe payments in test mode without your agent seeing the secret key\", is on offprompt.dev.\n\n**When to use it**\n\nReach for it when an agent task touches Stripe, Supabase or any other service that needs a secret mid-run, and you would rather not paste the key into chat, where it stays in the conversation history and is sent to the model provider.\n\n**Feedback wanted**\n\nReports on how OffPrompt behaves in different setups are welcome, especially from remote or cloud environments where agents run.\n\nSource: [Secrets: how I keep Stripe, Supabase and any other secrets out of Cursor's chat](https://forum.cursor.com/t/secrets-how-i-keep-stripe-supabase-and-any-other-secrets-out-of-cursors-chat/177031)","status":"published","storyType":"tip","category":"Workflow","clusterKey":"keep-secrets-out-of-cursor-chat","slug":"offprompt-keeps-stripe-and-supabase-keys-out-of-cursor-chat-using-a-free-cea29c","url":"https://cursorhq.ai/guides/offprompt-keeps-stripe-and-supabase-keys-out-of-cursor-chat-using-a-free-cea29c/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/cea29c92-c8bb-4ab7-8abc-bd29e7fa2109","role":"item","position":4,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/offprompt-keeps-stripe-and-supabase-keys-out-of-cursor-chat-using-a-free-cea29c/a94e67df67c37279-dbcae8157965d656/web_hero.webp","imageAlt":"A small metal safe box connected to a cable that diverts a glowing insert away from a large block and into the safe.","createdAt":"2026-11-05T03:42:29.559Z","updatedAt":"2026-11-06T00:42:54.714Z","sources":[{"role":"primary","title":"Secrets: how I keep Stripe, Supabase and any other secrets out of Cursor's chat","url":"https://forum.cursor.com/t/secrets-how-i-keep-stripe-supabase-and-any-other-secrets-out-of-cursors-chat/177031","sourceName":"Valerio Leo","author":"Valerio Leo","publishedAt":"2026-11-02T10:56:12Z"}]},{"id":"56cf8aef-848b-44d4-8101-440446de3826","title":"Cap How Much Code Cursor's Agent Can Rewrite in One Request","dek":"Five small hook scripts count the lines the agent changes and block further edits once a budget is spent, so a short prompt is less likely to turn into a sprawling change you have to review.","bodyMd":"Cursor has no built-in maximum change size. A Tech Insider tutorial builds one from hooks, the scripts Cursor runs inside the agent loop, using `hooks.json` and five Python scripts. Setup takes about 50 minutes, and the scripts use only the standard library. The hooks are the tutorial's own build, not a built-in Cursor feature.\n\nThe design has three parts: a ledger that counts changed lines per request, a gate that denies writes when the budget is gone, and guards on the paths that skip the ledger. The ledger is keyed on `generation_id`, which changes with each user message, so the budget resets whenever you send a new prompt.\n\n## How to set it up\n\n1. Create `.cursor/hooks/` in the repository and put the scripts there. Project hooks load from `.cursor/hooks.json` in trusted workspaces, so teammates get the same cap.\n2. Add a `budget.json` with the limits. The tutorial's defaults are `max_changed_lines` 200, `max_files` 6, `max_edit_lines` 120 and `max_git_lines` 400, plus exempt globs for lockfiles, snapshots and docs.\n3. Count changes with an `afterFileEdit` hook. It diffs each old and new string line by line, adds both added and removed lines to the ledger, and records a trip reason when a limit is crossed.\n4. Enforce with a `preToolUse` hook using the matcher `Write|Delete`. Once the ledger has tripped, it returns `permission: deny` with a `user_message` for you and an `agent_message` telling the model to stop editing, summarize, and ask for approval of a smaller second pass. Reads and searches stay open.\n5. Guard the side doors. A `beforeShellExecution` hook denies commands like `git reset --hard` and whole-repo formatters such as `prettier --write .`, and asks before `sed -i` or `xargs`-style fan-outs. A `beforeSubmitPrompt` hook blocks prompts like \"rewrite the entire codebase\" unless they include `[bulk-ok]`.\n6. Add a `stop` hook that returns a `followup_message` forcing one review pass when the ledger tripped or `git diff --numstat HEAD` exceeds the git cap. Set `loop_limit` to 2 and check `loop_count` so it can't chain.\n7. Replay documented payloads through each script with a test harness before trusting it. In the tutorial's run, three counted edits totaling 210 lines (a fourth, a 500-line lockfile edit, was exempt and added nothing) flipped the gate from allow to deny.\n\n## When to use it\n\nReach for it when agents produce large diffs (the line-by-line list of what changed) from short prompts and review time is the cost. The tutorial suggests running a week at the defaults, reading the ledger files in `.cursor/hooks/.state/`, then setting caps near the 90th percentile of your normal requests. Cursor's cloud agents also read `.cursor/hooks.json` from the repository, so the same cap covers unattended runs. User-level hooks do not apply there.\n\n## Limits\n\n- The prompt gate and shell guard block before a prompt is sent or a command runs, and the `preToolUse` gate denies writes before they happen. The line counter is different: `afterFileEdit` fires after the write, so the edit that crosses the line still lands and the cap blocks what comes after it. Lowering `max_edit_lines` makes a single oversized edit trip earlier.\n- Shell edits such as `sed -i` bypass the ledger. The stop hook's git check is a safety net, not a guarantee.\n- A crash, timeout or non-zero exit other than 2 lets the action through by default. Setting `failClosed` to true on the gate blocks instead, at the cost of blocking every write if Python breaks.\n- On Windows, hook commands run through PowerShell, and `python3` may need to be `python` or `py`.\n- The tutorial says its replay output came from running the scripts with documented payloads piped in, not from a recording of the Cursor window.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-hooks-spend-caps-loop-detection","slug":"cap-how-much-code-cursor-s-agent-can-rewrite-in-one-request-56cf8a","url":"https://cursorhq.ai/guides/cap-how-much-code-cursor-s-agent-can-rewrite-in-one-request-56cf8a/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/56cf8aef-848b-44d4-8101-440446de3826","role":"item","position":5,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cap-how-much-code-cursor-s-agent-can-rewrite-in-one-request-56cf8a/cb7cd9ba842d672a-c42e67abc0a6a714/web_hero.webp","imageAlt":"A mechanical device featuring five cylinders and a physical gate mechanism designed to restrict the flow of material through a central pipe.","createdAt":"2026-11-04T21:59:43.897Z","updatedAt":"2026-11-05T20:02:16.044Z","sources":[{"role":"primary","title":"Cursor Hooks: Cap AI Rewrites in 13 Steps, 50 Min [2026] - https://tech-insider.org/","url":"https://news.google.com/rss/articles/CBMid0FVX3lxTE5oVlZ2T0QtMjlfYnpDUWR0ckhOWHFvaUhwUkNJNllueWlJdFc5MFBiWW1GTU9pdjhneUNWNDRiQVlrNW9MQzB5TnQ0eUxjNmdoeTgtQnQzVGpJajNHWGN2MHF5dVhpLXdZY2hXSGs5YWhDNU9lNXFR?oc=5","sourceName":"\"when:7d Cursor Anysphere AI editor\" - Google News","author":"\"when:7d Cursor Anysphere AI editor\" - Google News","publishedAt":"2026-11-02T10:57:50Z"}]},{"id":"a0b2f54a-0f71-4a88-b572-6036199d872b","title":"Check which agents actually load your rules files, and what gets cut","dek":"A free browser tool takes a pasted .cursor/rules, AGENTS.md or CLAUDE.md file and reports which agents read it from where it sits.","bodyMd":"A free checker for rules files shows which agents load a file from a given location and what gets truncated. Its author posted it on the Cursor forum. It runs in the browser, nothing you paste leaves the page, and there is no signup.\n\n**How to use it**\n\n1. Paste a `.cursor/rules/*.mdc`, `.cursorrules`, `AGENTS.md`, `CLAUDE.md` or Copilot instructions file.\n2. Pick where the file sits: repo root, subfolder or home folder.\n3. Read the report.\n\n**What it reports**\n\n- Which agents load the file from that spot: Cursor, Claude Code, Codex, Copilot and Antigravity.\n- What gets cut for length.\n- The frontmatter that decides loading: Cursor's four load modes and Copilot's `applyTo`.\n- Lines no agent enforces, such as a \"never do X\" instruction, plus the hook, deny rule or linter config that would hold them.\n- Content that shouldn't be there: secrets, duplicate lines, directory trees and \"for now\" rules.\n\n**When to reach for it**\n\nUse it when a rule looks right but the agent ignores it. The author's examples: a `.mdc` with a description but no globs that never loads where you expect, and an `AGENTS.md` past Codex's 32 KiB limit that is cut without warning. That limit matches a separate write-up, which says Codex stops reading at `project_doc_max_bytes`, 32 KiB by default.\n\nIt is also useful for teams that keep rules for several agents. The same write-up notes that Claude Code reads `AGENTS.md` only when no `CLAUDE.md` or `CLAUDE.local.md` exists in the working directory or above, so adding a `CLAUDE.md` silently stops it.\n\nThe author asks for feedback on cases where Cursor's actual loading differs from what the checker reports.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-rules-checker","slug":"check-which-agents-actually-load-your-rules-files-and-what-gets-cut-a0b2f5","url":"https://cursorhq.ai/guides/check-which-agents-actually-load-your-rules-files-and-what-gets-cut-a0b2f5/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/a0b2f54a-0f71-4a88-b572-6036199d872b","role":"item","position":6,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/check-which-agents-actually-load-your-rules-files-and-what-gets-cut-a0b2f5/dc099d37c20379ac-1d22cd82e5e29840/web_hero.webp","imageAlt":"A document held in a glass slot with five mechanical pistons above it and sliding shutters showing varying levels of text truncation.","createdAt":"2026-11-03T08:46:39.968Z","updatedAt":"2026-11-03T09:01:16.147Z","sources":[{"role":"primary","title":"Free checker for .cursor/rules, AGENTS.md and CLAUDE.md: which agents load it and what gets cut","url":"https://forum.cursor.com/t/free-checker-for-cursor-rules-agents-md-and-claude-md-which-agents-load-it-and-what-gets-cut/176688","sourceName":"Roei Shoustak","author":"Roei Shoustak","publishedAt":"2026-10-29T18:45:13Z"},{"role":"supporting","title":"AGENTS.md vs CLAUDE.md vs .cursor/rules: one rules file for Cursor, Claude Code and Codex","url":"https://dev.to/mergisi/agentsmd-vs-claudemd-vs-cursorrules-one-rules-file-for-cursor-claude-code-and-codex-aj3","sourceName":"Mustafa","author":"Mustafa","publishedAt":"2026-10-31T15:33:23Z"}]},{"id":"e6e86767-cd6a-4706-9268-9fe765cf4abf","title":"Cloakroom, a Free Tool, Hides Access Tokens and Keys From Cursor's AI Agent","dek":"Cloakroom, a free local tool, masks tokens and keys in what Cursor's agent reads, then puts the real values back when a command runs on your machine.","bodyMd":"When Cursor's agent fixes a bug, it opens the `.env` file (where projects keep passwords and access tokens), tails logs and reads tickets, and all of that goes to the model. Cloakroom, a free open-source tool, runs on your machine through Cursor's hooks, which let outside tools step in on what the agent reads and runs, so the agent works from placeholders instead. A line like `GITHUB_TOKEN=ghp_AbCd...` reaches the model as `GITHUB_TOKEN=PII_SECRET_1_k7q2ab`.\n\n**What gets masked**\n\n- File reads, command output, @-mentioned files and MCP results, before the model sees them.\n- In the editor, a prompt with a key typed into it is stopped, and you get a copy with placeholders to send instead.\n\n**What happens when the agent acts**\n\n- When the agent runs a command containing a placeholder, the real value is put back in on your machine.\n- A command that could send a secret off your machine is held until you run `cloakroom allow`.\n- Edits that carry a placeholder are refused, and the agent writes them through the shell instead.\n\n**Install**\n\n```\nuv tool install \"cloakroom[model,torch,ocr]\"\ncloakroom install cursor\n```\n\nIt works in the editor and in the `agent` CLI (the command-line version of Cursor's agent), on Mac and Linux for now.\n\n**Limits**\n\nTab completion is not covered: it has no hook, so the Tab model sees the open file. Cursor's own web search is not covered either. Feedback on what Cloakroom misses, or masks for no reason, is wanted in [the original post](https://reddit.com/r/cursor/comments/1xldhk9/cursors_agent_reads_your_env_into_the_models), and the code is on [GitHub](https://github.com/shanjeevrajendran/cloakroom).","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cloakroom-env-placeholders-cursor","slug":"cloakroom-a-free-tool-hides-access-tokens-and-keys-from-cursor-s-ai-agen-e6e867","url":"https://cursorhq.ai/guides/cloakroom-a-free-tool-hides-access-tokens-and-keys-from-cursor-s-ai-agen-e6e867/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/e6e86767-cd6a-4706-9268-9fe765cf4abf","role":"item","position":7,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cloakroom-a-free-tool-hides-access-tokens-and-keys-from-cursor-s-ai-agen-e6e867/44d2d5b21dd9881c-d7a0c522db48dd56/web_hero.webp","imageAlt":"A metal canister being divided by a mechanical shutter, showing raw, jagged metal pieces being replaced by smooth, uniform tablets.","createdAt":"2026-11-06T07:24:01.618Z","updatedAt":"2026-11-06T12:50:33.812Z","sources":[{"role":"primary","title":"Cursor's agent reads your .env into the model's context. I made it see placeholders instead","url":"https://reddit.com/r/cursor/comments/1xldhk9/cursors_agent_reads_your_env_into_the_models","sourceName":"/u/Shanjeev","author":"/u/Shanjeev","publishedAt":"2026-11-01T20:27:07Z"}]},{"id":"50e6a696-7efb-42a8-9fc0-e5f94513f0c0","title":"GrokBot Hands Site Builds to Cursor's Cloud Coding Agents, Then Waits for Your Review","dek":"GrokBot can start one of Cursor's cloud-based coding agents from a chat, open a pull request (a proposed update to your project) and ask for a preview link through Vercel, with nothing merged until you approve.","bodyMd":"GrokBot can pass coding work to Cursor Cloud Agents from a chat. You describe the project once, the agent builds it, and nothing goes live until you approve the pull request.\n\n**Setup (one time)**\n\n1. Use the same email on your X account and your Cursor account. A mismatch is the most common reason linking fails.\n2. Pick a plan that includes GrokBot and Cloud Agents. The $8 Plus plan does not. Premium at $30 a month is the lowest that works; Super is $100 and Ultra is $200, with the same features and more usage (Premium is 4x Plus, Super 15x, Ultra 50x).\n3. In GrokBot, open Connect apps and connect GitHub and Vercel. Both are one-click OAuth. Green \"connected\" marks confirm it.\n\n**The build**\n\n1. Press Ctrl+N in GrokBot to create a new bot and name it.\n2. Write a prompt with three parts: what to build with real details; how to build it (create a new GitHub repo, connect it to Vercel before starting, start a Cursor Cloud Agent on a named model, open a pull request and merge nothing); and design rules.\n3. The demo's design rules were no purple gradients, no three identical cards in a row, and no stock photos, with supplied images attached instead. Ask for the pull request link and the preview link when ready.\n4. Review the pull request, then approve.\n\n**Limits worth knowing**\n\n- On an X Premium plan, Grok models are the only ones Cloud Agents can use without API billing. On Cursor's own plans you can pick any model.\n- GrokBot's GitHub connector works inside existing repos (branches, PRs, issues) but cannot create a new one. If it asks, take over the computer in GrokBot, log in to GitHub, then tell it \"I'm done on the computer\" and it creates the repo.\n- Unifying X and Cursor accounts cannot be undone. Afterward Cursor's dashboard redirects to grok.com.\n- On the X Ultra plan, one weekly pool is shared across Cursor, GrokBot and the Grok apps, and non-Grok models bill separately at API pricing.\n- If you pay for Cursor through the Apple App Store, switching does not cancel it. Cancel it yourself.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-cloud-agents-first-website","slug":"grokbot-hands-site-builds-to-cursor-s-cloud-coding-agents-then-waits-for-50e6a6","url":"https://cursorhq.ai/guides/grokbot-hands-site-builds-to-cursor-s-cloud-coding-agents-then-waits-for-50e6a6/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/50e6a696-7efb-42a8-9fc0-e5f94513f0c0","role":"item","position":8,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/grokbot-hands-site-builds-to-cursor-s-cloud-coding-agents-then-waits-for-50e6a6/dc2d386b86654f20-0676199a393560a3/web_hero.webp","imageAlt":"A mechanical docking station with a clockwork cartridge being inserted into a slot, with an unfinished gear mechanism waiting in the output terminal.","createdAt":"2026-11-05T05:30:32.065Z","updatedAt":"2026-11-05T06:01:00.054Z","sources":[{"role":"primary","title":"So... I Tried GrokBot's Cursor Agents","url":"https://www.youtube.com/watch?v=a6QuwH2t3c8","sourceName":"@kacperrutk","author":"@kacperrutk","publishedAt":"2026-11-04T19:23:26Z"},{"role":"supporting","title":"Grokbot with cursor agents to build?","url":"https://tiktok.com/@ducktate.com/video/7703349674152938765","sourceName":"Chris Ducktate","author":"Chris Ducktate","publishedAt":"2026-11-01T23:31:23Z"},{"role":"supporting","title":"A first website, built with Cursor cloud agents in about two minutes. 🎥 Credit: Alex Finn · full video: https://youtu.be/lmYLF3keVmw","url":"https://tiktok.com/@build.ai.empire/video/7702864385798065429","sourceName":"Build AI  Empire","author":"Build AI  Empire","publishedAt":"2026-10-31T16:07:47Z"}]},{"id":"7d4077ae-5ef0-4803-90ee-62d54ff0d7f3","title":"Free Cursor rule pack covers secrets, Supabase RLS and scope, with its test misses published","dek":"A free MIT-licensed rule pack covers env vars, row-level security and scope, and its author published all six test runs, including where it missed. A database setting that limits which rows each user can read or change, so one customer can't see another's data. A rule that keeps the AI agent to the files and task you asked for, so it doesn't edit unrelated code.","bodyMd":"A free pack of three `.cursor/rules/*.mdc` files covers secrets and env vars, Supabase row-level security and a scope guard. The pack is MIT-licensed and lives in the vibe-guardrails-free repo on GitHub.\n\nCursor rules are instruction files kept in `.cursor/rules/` that tell the model how to behave in a project. Supabase is a database and backend service, and row-level security (RLS) is a database feature that controls which rows each user can read or write.\n\nThe rule files cover:\n\n- secrets and env vars\n- Supabase RLS\n- scope guard\n\nThe author also sells a larger paid set elsewhere and says so up front. The free part is the three files above.\n\n**How to use it.** The files are standard Cursor rules, so they sit in `.cursor/rules/` in your project. The author asks for feedback on one choice: the secrets rule is set to `alwaysApply: true`, and the author wonders whether that is too heavy-handed.\n\n**What the tests showed.** The author ran one Next.js, Supabase and Stripe prompt six times, with and without the rules, and published every raw output in a separate vibe-guardrails-demo repo. The rules missed in two places: they have no Stripe coverage, and one miss was a policy that let users write their own `is_pro` flag.\n\nThere was also a side effect. With the strict rules on, the model initially refused the task because the prompt contained a fake secret key.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"cursor-rules-secrets-supabase-rls","slug":"free-cursor-rule-pack-covers-secrets-supabase-rls-and-scope-with-its-tes-7d4077","url":"https://cursorhq.ai/guides/free-cursor-rule-pack-covers-secrets-supabase-rls-and-scope-with-its-tes-7d4077/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/7d4077ae-5ef0-4803-90ee-62d54ff0d7f3","role":"item","position":9,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/free-cursor-rule-pack-covers-secrets-supabase-rls-and-scope-with-its-tes-7d4077/3c370b537f589447-92be6e3f02483107/web_hero.webp","imageAlt":"Three metal tablets placed beside a device containing six cartridges, where two are pulled out to show they failed testing.","createdAt":"2026-11-03T14:21:41.759Z","updatedAt":"2026-11-03T14:31:01.056Z","sources":[{"role":"primary","title":"Free .cursor/rules for secrets and Supabase RLS, and what they missed in 6 test runs","url":"https://forum.cursor.com/t/free-cursor-rules-for-secrets-and-supabase-rls-and-what-they-missed-in-6-test-runs/176543","sourceName":"Vibeguardrails","author":"Vibeguardrails","publishedAt":"2026-10-28T22:01:38Z"}]}],"tips":[{"id":"e6e86767-cd6a-4706-9268-9fe765cf4abf","title":"Cloakroom, a Free Tool, Hides Access Tokens and Keys From Cursor's AI Agent","dek":"Cloakroom, a free local tool, masks tokens and keys in what Cursor's agent reads, then puts the real values back when a command runs on your machine.","bodyMd":"When Cursor's agent fixes a bug, it opens the `.env` file (where projects keep passwords and access tokens), tails logs and reads tickets, and all of that goes to the model. Cloakroom, a free open-source tool, runs on your machine through Cursor's hooks, which let outside tools step in on what the agent reads and runs, so the agent works from placeholders instead. A line like `GITHUB_TOKEN=ghp_AbCd...` reaches the model as `GITHUB_TOKEN=PII_SECRET_1_k7q2ab`.\n\n**What gets masked**\n\n- File reads, command output, @-mentioned files and MCP results, before the model sees them.\n- In the editor, a prompt with a key typed into it is stopped, and you get a copy with placeholders to send instead.\n\n**What happens when the agent acts**\n\n- When the agent runs a command containing a placeholder, the real value is put back in on your machine.\n- A command that could send a secret off your machine is held until you run `cloakroom allow`.\n- Edits that carry a placeholder are refused, and the agent writes them through the shell instead.\n\n**Install**\n\n```\nuv tool install \"cloakroom[model,torch,ocr]\"\ncloakroom install cursor\n```\n\nIt works in the editor and in the `agent` CLI (the command-line version of Cursor's agent), on Mac and Linux for now.\n\n**Limits**\n\nTab completion is not covered: it has no hook, so the Tab model sees the open file. Cursor's own web search is not covered either. Feedback on what Cloakroom misses, or masks for no reason, is wanted in [the original post](https://reddit.com/r/cursor/comments/1xldhk9/cursors_agent_reads_your_env_into_the_models), and the code is on [GitHub](https://github.com/shanjeevrajendran/cloakroom).","category":"Workflow","slug":"cloakroom-a-free-tool-hides-access-tokens-and-keys-from-cursor-s-ai-agen-e6e867","url":"https://cursorhq.ai/guides/cloakroom-a-free-tool-hides-access-tokens-and-keys-from-cursor-s-ai-agen-e6e867/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/e6e86767-cd6a-4706-9268-9fe765cf4abf","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/cloakroom-a-free-tool-hides-access-tokens-and-keys-from-cursor-s-ai-agen-e6e867/44d2d5b21dd9881c-d7a0c522db48dd56/web_hero.webp","imageAlt":"A metal canister being divided by a mechanical shutter, showing raw, jagged metal pieces being replaced by smooth, uniform tablets.","createdAt":"2026-11-06T07:24:01.618Z"},{"id":"a1e9f2ad-ee1e-4a4e-91b6-12cd4ae6f5ec","title":"Audit a Live WordPress Site From Cursor Without Losing Its Archive","dek":"In one account, Cursor handled analysis and changes on a WordPress site running since 2012 with about 134,000 stories, and a later mobile speed test reported a score of 90.","bodyMd":"In one account, Cursor was used to inspect and change an existing production WordPress site, not just to generate code for a new project. Cursor handled analysis and implementation, while WPVibe, a connector, provided the WordPress connection. Changes were reviewed by a human. The details come from the [owner's post on r/ProWordPress](https://reddit.com/r/ProWordPress/comments/1xnfeyj/i_used_cursor_ai_to_audit_and_rebuild_parts_of_my).\n\nThe test case was TechnoRapper.com, running since 2012. The audit turned up:\n\n- Around 134,000 stories on the site.\n- A loading spinner that could hide an article for over a minute.\n- Ads appearing in the wrong places.\n- RSS feeds returning only a small portion of article content.\n- Plugins that had been installed and forgotten.\n- 9,318 JSON-wrapped imports that needed cleanup.\n\n**How the work went**\n\n1. Connect Cursor to the live WordPress site through WPVibe.\n2. Work through an audit of the whole site.\n3. Keep the archive and existing URLs intact, so years of publishing history are not lost.\n4. Fix the theme, homepage, images, layout stability, feeds, navigation and other technical issues.\n5. After further image optimisation, test again with Google PageSpeed Insights.\n\nA custom WordPress theme was also built to replace dependence on a third-party one.\n\n**Results**\n\nThe initial mobile Lighthouse run moved Performance from 41 to 69, CLS (layout shift, a measure of how much the page jumps around while loading) from 0.387 to 0.005, and Speed Index from 9.6s to 5.1s. After further image optimisation, a later Google PageSpeed Insights mobile test reported Performance 90, Accessibility 100, SEO 100, LCP (how quickly the main content appears) 2.7s and CLS 0. These are the owner's self-reported lab results, not real-user field measurements.","category":"Workflow","slug":"audit-a-live-wordpress-site-from-cursor-without-losing-its-archive-a1e9f2","url":"https://cursorhq.ai/guides/audit-a-live-wordpress-site-from-cursor-without-losing-its-archive-a1e9f2/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/a1e9f2ad-ee1e-4a4e-91b6-12cd4ae6f5ec","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/audit-a-live-wordpress-site-from-cursor-without-losing-its-archive-a1e9f2/75a05e6b427bf15a-5bebd16d1bdd2671/web_hero.webp","imageAlt":"An analog tape reel connected to a complex mechanical console with adjustment sliders and a performance gauge.","createdAt":"2026-11-06T04:11:29.864Z"},{"id":"6fa75b42-f4fe-44fe-871f-fe7656ae5d42","title":"Give Cursor's Agent a Measured Copy of a Public Site's Design Instead of a Guess","dek":"Stylepack turns a pasted URL into files that record a public site's colors, spacing, fonts, component styles and hover states, plus how the layout changes at smaller widths; how closely the agent rebuilds from them depends on the agent.","bodyMd":"Telling Cursor's agent to \"make it look like that site\" forces it to guess. Colors usually land close. Spacing, hover states and what happens at smaller widths usually don't. Stylepack replaces the guess with measurements taken from the live page.\n\n**How to use it**\n\n1. Go to stylepack.ai and paste the URL of the site you want to match.\n2. Stylepack opens the page in a real browser at four widths and in both themes, then writes out what it finds.\n3. Stylepack produces a `DESIGN.md` (colors, type, spacing, components), a `BEHAVIOR.md` (hover, tooltips, menus, motion, responsive changes), tokens and screenshots.\n4. Drop the files in your repo and point the agent at them.\n\nStylepack's developer says the packs work with Claude Code, Cursor, Copilot, v0 and Lovable.\n\n**When it helps**\n\nReach for it when you are rebuilding or matching an existing site's look and the first pass keeps missing on details like hover states, menus, motion and what happens at smaller widths. The behavior file targets exactly those gaps.\n\n**Limits and cost**\n\nStylepack only sees public pages, so anything behind a login is out. How closely the agent rebuilds from the pack still depends on the agent. Free use is 3 packs a day with no account, or 10 a day with a free account. The developer is asking whether `BEHAVIOR.md` is useful beyond the tokens, and what the tool gets wrong on sites people know well.","category":"Workflow","slug":"give-cursor-s-agent-a-measured-copy-of-a-public-site-s-design-instead-of-6fa75b","url":"https://cursorhq.ai/guides/give-cursor-s-agent-a-measured-copy-of-a-public-site-s-design-instead-of-6fa75b/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/6fa75b42-f4fe-44fe-871f-fe7656ae5d42","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/give-cursor-s-agent-a-measured-copy-of-a-public-site-s-design-instead-of-6fa75b/756a3bec45d05e4c-03bceac98612b059/web_hero.webp","imageAlt":"A metallic cartridge holding four glass panes of varying widths being inserted into a larger device to transfer design data.","createdAt":"2026-11-05T18:18:13.164Z"},{"id":"0d4712a9-9b3f-4b72-98c5-9d6d9cfb284e","title":"Pull Live TikTok, Reddit, YouTube and Ad Library Data Into Cursor Chats","dek":"LurkAPI, a social media data API, plugs into Cursor through MCP, a standard way to connect outside tools to its agent, so the agent can read public posts, transcripts and ad results with no API key to paste.","bodyMd":"LurkAPI, a social media data API, exposes every endpoint as a remote MCP server. MCP is a standard way to plug outside tools into Cursor's agent, and \"remote\" means the server runs on LurkAPI's side rather than on your machine. Add it to Cursor and the agent can read public posts, profiles, comments, video transcripts and ad library results while you work.\n\n**Setup**\n\nThe LurkAPI docs have an Add to Cursor button. To do it by hand, add this to `~/.cursor/mcp.json`, or to `.cursor/mcp.json` in a project:\n\n```json\n{\n  \"mcpServers\": {\n    \"LurkAPI\": { \"url\": \"https://api.lurkapi.com/mcp\" }\n  }\n}\n```\n\nCursor finds the server's OAuth and asks you to sign in in the browser, with Google or an email code. New accounts get 100 free credits, no card.\n\nThe server has one tool per endpoint: 88, plus a free balance check. To keep Cursor's tool list short, load only the platforms you need:\n\n```\n\"url\": \"https://api.lurkapi.com/mcp?platforms=reddit,youtube,tiktok\"\n```\n\nFor Cloud Agents or CI, skip the sign-in and send an API key as a header instead: `\"headers\": { \"x-api-key\": \"${env:LURKAPI_API_KEY}\" }`.\n\n**Example**\n\nAsk: \"What running shoe ads are live on Facebook in the US right now? Group them by brand.\" The agent calls `facebook_search_ads` with `query=\"running shoes\"`, `country=\"US\"` and `status=\"active\"`. Each result carries the page name, active status, platforms, start date and the ad's title, body text and call-to-action. The response includes `searchResultsCount`, Facebook's estimate of matching ads (37,660 in the sample). The first page holds up to 30 ads, and the agent passes `cursor` back for more. Results drop empty fields and keep one URL per image to save tokens.\n\nThe same pattern covers a TikTok profile (`tiktok_profile`), a YouTube video's transcript (`youtube_transcript`), a Reddit search (`reddit_search`), or a brand's ads in Google's Ads Transparency Center.\n\n**Cost and limits**\n\nMost calls cost 1 credit. Packs start at $9 for 10,000 credits and never expire. The server reads public data only and can't post, like or message anyone.","category":"Ecosystem","slug":"pull-live-tiktok-reddit-youtube-and-ad-library-data-into-cursor-chats-0d4712","url":"https://cursorhq.ai/guides/pull-live-tiktok-reddit-youtube-and-ad-library-data-into-cursor-chats-0d4712/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/0d4712a9-9b3f-4b72-98c5-9d6d9cfb284e","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/pull-live-tiktok-reddit-youtube-and-ad-library-data-into-cursor-chats-0d4712/cfef19e17dacaa0b-66daaf3cfaadaed8/web_hero.webp","imageAlt":"A metallic hardware module with many small connection ports, connected to a separate small device by a single illuminated fiber-optic cable.","createdAt":"2026-11-05T09:58:49.846Z"},{"id":"db68ec2a-df1e-4ffb-887f-61b23f693d3e","title":"Publish a Landing Page With a Working Lead Form From Cursor","dek":"A remote MCP server called Pageree handles hosting, form delivery, spam checks, a privacy policy and analytics, so Cursor can take a page from prompt to live.","bodyMd":"Cursor can write a landing page quickly. The slower work comes after: hosting, a form that delivers leads somewhere, spam checks, a privacy policy and analytics. Pageree, a remote MCP server, covers those through one connection. Its developer sells it: a 30-day free trial with a card, then $5 to $40 a month. The trial has to be running before the agent can save a draft.\n\n**Set up**\n\n1. Use the Add to Cursor button in the Pageree docs, or add the server by hand to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"pageree\": {\n      \"url\": \"https://mcp.pageree.com/\"\n    }\n  }\n}\n```\n\n2. Open Cursor's MCP settings, find pageree and authenticate. Sign-in happens in the browser, so there is no key to paste.\n\n**What to ask Cursor**\n\n- \"Build a landing page for my bike repair shop with a booking form.\" You get a private preview link. Nothing goes live until you approve it.\n- \"Send the leads to my email.\" Leads can also go to a CRM through a webhook. Any keys go in Pageree's console, not in the chat.\n- \"How is the page doing?\" The agent reads visits and sources, plus where people click, stop and leave, section by section. It then proposes one change.\n\nEvery publish is a version you can roll back.\n\n**Guardrails**\n\nThe publish tool tells the agent to wait for approval, but its developer says an agent still called it right after save_draft. The server now refuses a publish within 30 seconds of the last save. Longer markup and form rules sit in read-only tools such as get_skill_page_structure, which the agent loads when it needs them.","category":"Workflow","slug":"publish-a-landing-page-with-a-working-lead-form-from-cursor-db68ec","url":"https://cursorhq.ai/guides/publish-a-landing-page-with-a-working-lead-form-from-cursor-db68ec/","relayUrl":"https://relaygrid.com/publications/pivot-cursor/stories/db68ec2a-df1e-4ffb-887f-61b23f693d3e","imageUrl":"https://media.pivotnews.ai/brands/cursor-hq/articles/publish-a-landing-page-with-a-working-lead-form-from-cursor-db68ec/5da0981e8af1e570-b3294fef520238b1/web_hero.webp","imageAlt":"A metal cartridge being slotted into a hardware console to bridge a connection for automated web page publishing and data collection.","createdAt":"2026-11-05T09:57:07.297Z"}]}