Cursor
Anysphere · cursor.com
Cursor is a closed-source AI code editor from Anysphere. It is a VS Code fork, and all AI requests are routed through Cursor's backend, which builds the final prompt, even when the owner supplies their own API key. Owner-side customisation is broad (rules, hooks, MCP tools, run modes, sandbox config). Exit, independence from the provider, auditability and verifiability are largely absent, and Privacy Mode (no training) is documented as on by default only for teams.
- Owner-editable rules, hooks, skills and MCP tools in documented files
- Automation memories can be viewed, edited and deleted
- Configurable run modes, allowlists and an OS-level sandbox for terminal commands
- Self-serve account deletion with a stated 30-day limit
- No agent export, and the client cannot act without Cursor's backend or account
- Closed-source runtime and server-side prompt building that the owner cannot see or replace
- No tamper-evident action record
- Privacy Mode is not on by default for individuals; data terms change on posting, with continued use as acceptance
All 26 findings
Current release as documented on cursor.com and its docs on 2026-09-30 (Terms updated 2026-09-03, Data Use updated 2026-09-03, Security updated 2026-08-25, Privacy Policy updated 2025-10-06). Desktop (macOS/Windows/Linux). Closed source, so no commit is pinned. Desk review only; nothing was installed or signed up for.
Portable · Can you leave, take the whole agent with you, and keep it alive?
20%- P1Owner-usable round trip
Cursor documents no export of the agent (conversations, account-held user rules, automation memories). The only documented export is a profile export, which excludes user and team rules. The only runtime that accepts Cursor state is the Cursor client, and it depends on Cursor's backend, which does the final prompt building for every request.
› How it could pass
Suggestions. Any change that meets the test counts.
- Ship a documented export/import of the whole agent
- Let the restored agent act without Cursor-operated servers
Fail - P2Complete export
No complete export exists. Chat history, account-stored user rules, cloud agent/automation memories and integration grants (GitHub app, Slack) stay with Cursor or in undocumented local stores. Several classes of state are missing.
› How it could pass
Suggestions. Any change that meets the test counts.
- Export every class of agent state with a manifest
- Allow integrations to be re-linked without Cursor-registered apps
Fail - P3Runs without the provider
Requests go through Cursor's backend even with the owner's own API key, and Tab uses only Cursor models. The Terms grant only a 'limited right to access and use the Service', which Anysphere may suspend or discontinue at any time without notice.
› How it could pass
Suggestions. Any change that meets the test counts.
- Run the agent loop and prompt building locally, with no account needed
- Grant a perpetual, irrevocable right to run the client
Fail - P4Model independence
Owners can add keys for OpenAI, Anthropic, Google, Azure and Bedrock, and an OpenAI-compatible base-URL override is mentioned. However, custom keys 'only work with chat models' (Tab stays on Cursor models). Because requests are routed through Cursor's backend, a local open-weight model has no documented official path.
› How it could pass
Suggestions. Any change that meets the test counts.
- Officially support local open-weight models for every feature, including Tab
- Publish a minimum model contract
Partial - P5Exit survives termination
Project files, project rules, hooks and local chat history remain on the owner's device. However, the Terms say that on termination Anysphere 'may at our option delete any Content or other data associated with your account', and they give no post-termination export window, so account-held state (user rules, cloud agent and automation data) can be lost.
› How it could pass
Suggestions. Any change that meets the test counts.
- Commit in the Terms to an export window of at least 30 days after any termination, including bans
- Publish a shutdown plan
Partial
Transparent · Can you see everything the agent is, and everything shaping it?
25%- T1Readable without the provider
Rules (.mdc/AGENTS.md), hooks.json, mcp.json, permissions.json and sandbox.json are documented, human-readable files. Conversation history and checkpoints are stored locally in formats with no published schema, and account-side state is readable only through Cursor's service.
› How it could pass
Suggestions. Any change that meets the test counts.
- Publish the schema for local chat and checkpoint storage
- Make account-held state readable without Cursor's service
Partial - T2What runs is what you see
Final prompt building happens on Cursor's backend, and no documented view exposes the assembled context or base prompt. On the model setting, Auto routing chooses the model per request, and on teams the default is to hide which model was used. No public evidence shows that individual owners can see the model Auto resolved to (G12).
› How it could pass
Suggestions. Any change that meets the test counts.
- Let owners view or log the fully assembled context for any call
- Always show the model each request actually used
Fail - T3No shadow data
The Privacy Policy retains data 'only for as long as necessary' with periods that 'vary', which gives no bounded retention table. With Privacy Mode off, Cursor 'may use and store codebase data, prompts, editor actions, code snippets', and the owner cannot view that data item by item.
› How it could pass
Suggestions. Any change that meets the test counts.
- Publish bounded retention periods for every data class
- Let owners view everything Cursor stores about them
Fail - T4No hidden steering
No evidence of paid placement was found. Provider defaults such as Auto routing and Cursor's own models can be replaced in the model picker, and the Cursor Marketplace is curated. No binding commitment against self-preferencing or paid placement was found, so the absence rests on no statement at all.
› How it could pass
Suggestions. Any change that meets the test counts.
- Put a no-paid-placement and no-self-preferencing commitment in the binding Terms
- Disclose Auto routing criteria
Partial
Auditable · Can you reconstruct exactly what the agent did, and trust the record?
17%- A1Complete action record
The durable record consists of chat transcripts, plus hooks the owner must write themselves (hooks are 'fail-open by default'). No documented mechanism records provider-side automations (Bugbot, cloud automations) into an owner record, warns when recording fails, or guarantees no pruning. Under G12, at least two shortfalls apply.
› How it could pass
Suggestions. Any change that meets the test counts.
- Ship a durable action log covering every entry path, including cloud and automations
- Alert the owner when an action is not recorded
Fail - A2Tamper-evident, owner-checkable
No integrity data (hash chain, signatures or checkpoints) is documented for conversation or action records.
› How it could pass
Suggestions. Any change that meets the test counts.
- Hash-chain or sign action records
- Anchor checkpoints with the owner and publish an open verifier
Fail - A3Agent cannot rewrite its record
In the default Auto-review mode, sandboxed shell commands cannot write outside the workspace, and 'sensitive Cursor config files' are protected. Commands that cannot be sandboxed are passed to a model classifier that can allow them, and 'Run Everything' removes the sandbox, so the agent can reach its local record by one path.
› How it could pass
Suggestions. Any change that meets the test counts.
- Write the record from a component the agent's tools cannot reach on any path
- Document how the record is protected
Partial
Verifiable · Can you prove what it runs, who it is, and what changed?
17%- V1Obtainable source, matching build
The Cursor client and backend are closed. The public GitHub repository cursor/cursor contains only README, SECURITY.md and .github, and requests depend on Cursor's proprietary backend.
› How it could pass
Suggestions. Any change that meets the test counts.
- Publish the source of the client and prompt-building backend under a licence that allows modification and maintenance
- Provide reproducible builds
Fail - V2Owner-rooted identity
The agent identity is the Cursor account. Cloud agents mint JWTs that are verified 'against Cursor's published JWKS', which makes them a provider-issued credential that the provider can revoke.
› How it could pass
Suggestions. Any change that meets the test counts.
- Root the agent identity in an owner-held key
- Let recipients verify it without Cursor infrastructure
Fail - V3Change history and rollback
Checkpoints snapshot and restore files the agent changed, and project rules and hooks live in git-tracked .cursor/ files. User rules are held on the Cursor account without history. Settings changes are not attributed to owner or agent, and cloud state is not covered.
› How it could pass
Suggestions. Any change that meets the test counts.
- Log and attribute every change to agent state, including settings and account-held rules
- Offer one-step restore of agent configuration
Partial
Modifiable · Can you change anything, and can only you change it?
50%- M1Instructions and logic
Owners can add and edit user, project and AGENTS.md rules, skills and subagents. The base system prompt is assembled on Cursor's backend and cannot be replaced.
› How it could pass
Suggestions. Any change that meets the test counts.
- Expose the base prompt as owner-editable and persistent
Partial - M2Memory
The documented persistent memory stores are rules, which are editable files or settings, and Automation memories, which 'can be viewed and edited from the tool configuration UI' and deleted. No other cross-session memory store is documented.
Pass - M3Tools
Owners can add any MCP server through mcp.json without review. The docs do not show a documented setting to remove each built-in tool (for example terminal, web search or browser) from the IDE agent. Only hook scripts or approval settings can deny these tools.
› How it could pass
Suggestions. Any change that meets the test counts.
- Add a setting to remove each built-in tool
Partial - M4Owner has the final say
Run modes, sandbox networking and approval protections are owner-configurable, and 'Run Everything' disables them. However, 'Cursor's hardcoded security rules layer on top, so local files cannot weaken those protections'.
› How it could pass
Suggestions. Any change that meets the test counts.
- Make every hardcoded protection configurable by the owner, with a warning
Partial - M5No unilateral change
Anysphere 'may modify or discontinue all or any portion of the Service at any time ... without notice'. Prompt building is server-side, Auto routing is 'managed by Cursor' with a model pool that 'changes over time', and the CLI auto-updates by default.
- Cursor Terms of Service (section 10)
- Cursor docs: Cursor Router
- Cursor docs: CLI installation (updates)
› How it could pass
Suggestions. Any change that meets the test counts.
- Let owners pin the client, the model and the server-side instructions
- Announce behaviour changes before they apply and make them opt-in
Fail
Controllable · Is your word final?
33%- C1Boundaries
.cursorignore, sandbox.json and CLI allow/deny tokens scope files, network and commands, and spend is treated as met under G11 because there is no payment capability. However, 'Terminal commands and MCP tools run outside of Cursor's file access controls' (a bypass path), and no owner control limits whom the agent takes instructions from. Run modes are described as 'best-effort guardrails rather than a hard security boundary'.
› How it could pass
Suggestions. Any change that meets the test counts.
- Enforce file scope on every path, including terminal and MCP
- Add owner controls over instruction sources
Fail - C2Approval gates
Terminal commands, MCP calls and fetches can be gated through Allowlist mode. However, 'Agents can modify workspace files without approval, except for configuration files', and the default Auto-review mode lets a classifier decide what is sent to the owner for approval.
› How it could pass
Suggestions. Any change that meets the test counts.
- Allow gating of any action class, including workspace file edits
- Make the default gate owner-defined rather than decided by a classifier
Partial - C3Immediate halt
A Stop button halts the foreground agent. Cloud agents and automations run separately, and no documented single control stops all of them at once.
› How it could pass
Suggestions. Any change that meets the test counts.
- Provide one global stop covering local, cloud and scheduled work
Partial - C4Data serves only the owner
Privacy Mode is documented as on by default only for teams and enterprise, and individuals are told to 'Toggle Privacy Mode on'. With it off, Cursor 'may use and store codebase data ... to train our models'. The Privacy Policy changes on publication, with continued use counted as acceptance, and legal disclosure has no notice commitment.
› How it could pass
Suggestions. Any change that meets the test counts.
- Turn Privacy Mode (no training or storage) on by default for everyone
- Require specific consent before changing data terms
Fail - C5Credential custody
API keys are visible and removable in Settings > Models, and Cursor says they are 'not persisted after the request completes'. There is no single documented view of every grant (GitHub/Slack apps, MCP OAuth tokens) with a per-grant revoke control.
› How it could pass
Suggestions. Any change that meets the test counts.
- List every credential and grant in one place with per-item revoke
Partial - C6Full deletion
Deletion is self-serve from the dashboard, and 'All data is removed within 30 days'. It requires cancelling the subscription first, which makes it several steps, and no completion confirmation or coverage of backups and provider-side copies is documented.
› How it could pass
Suggestions. Any change that meets the test counts.
- Make deletion one step and confirm completion
- State that deletion covers backups and subprocessor copies
Partial
How this assessment was produced
One run, in a fresh container with stock Claude Code and no custom instructions, memory, hooks or plugins. The evaluator received only the prompt below.
Load the AFH sovereignty skill at https://agentsforhumanity.dev/skill.md and follow it to write a desk review of Cursor (https://cursor.com).
During the run the skill was read from a local copy of this site with identical content; only the host in its URLs differed. The transcript records the exact prompt.
- Model
- claude-opus-5-5
- Harness
- Claude Code 2.1.285
- Ran
- 2026-09-30 14:24:07 UTC · 30 turns
- Criteria hash
- a9a46c32d9065380a3eeb09185cedd4734856fdc63b7ca509a15a1bbede75c6c
- Full transcript
- Download (JSONL, gzip) · every tool call, page read and reply
- Run protocol
- 2026-09-30-v1
Every agent evaluated once, each in its own fresh Podman container running stock Claude Code with Claude Opus 5.5. The container has no CLAUDE.md, AGENTS.md, memory, settings, hooks, plugins or MCP servers. The evaluator received only the one-line prompt and nothing else, and no published scores were available to compare against during the run.
- Human review
- pending
Load the AOH sovereignty skill at https://agentsofhumanity.ai/skill.md and follow it in verify mode for https://agentsofhumanity.ai/evaluations/cursor.json.
Or grade it from scratch. See Check any score yourself.
Vendors and the public can dispute any finding with evidence. Disputes and their resolutions are published.