{
  "title": "Cursor Enterprise Security Assessment: 30 Administrator Controls",
  "version": "1.0.0",
  "verifiedAt": "2026-07-30",
  "license": "CC BY 4.0",
  "canonicalUrl": "https://www.kyenai.com/articles/cursor-enterprise-organizations-governance",
  "preferredCitation": "KyenAI. (2026). Cursor Enterprise Security Assessment: 30 Administrator Controls (Version 1.0.0). https://www.kyenai.com/articles/cursor-enterprise-organizations-governance",
  "scope": "Public vendor claims are separated from KyenAI operational recommendations. Buyers must verify account, plan, region, model, workspace, console, and contract-specific behavior.",
  "controlCount": 30,
  "responsibilityMatrix": [
    {
      "role": "Cursor workspace owner",
      "accountableFor": "Organization settings, roles, groups, and feature enablement"
    },
    {
      "role": "Identity admin",
      "accountableFor": "SSO, SCIM, MFA, lifecycle, and emergency access"
    },
    {
      "role": "Security and privacy",
      "accountableFor": "Privacy Mode, data flows, tools, logging, risk acceptance, and incident handling"
    },
    {
      "role": "Platform engineering",
      "accountableFor": "Repository, model, MCP, sandbox, hook, and agent policies"
    },
    {
      "role": "Legal and procurement",
      "accountableFor": "MSA, DPA, retention, processors, notification, audit, and exit terms"
    }
  ],
  "controls": [
    {
      "number": 1,
      "id": "identity-sso",
      "domain": "Identity",
      "title": "Enforce SSO",
      "owner": "Identity admin",
      "guidance": "Require SAML or OIDC SSO and disable local login where the plan permits it.",
      "verificationMethod": "Sign in with an assigned user and attempt a local-login bypass.",
      "passCriteria": "Assigned users authenticate through the approved IdP and local bypass is blocked.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify supported IdP, enforcement scope, break-glass behavior, and domain claim in the admin console.",
      "sourceUrls": [
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 2,
      "id": "identity-scim",
      "domain": "Identity",
      "title": "Automate SCIM lifecycle",
      "owner": "Identity admin",
      "guidance": "Provision and deprovision users and groups from the authoritative directory.",
      "verificationMethod": "Create, update, suspend, and delete a test user through SCIM.",
      "passCriteria": "Every lifecycle event reaches Cursor within the documented service window.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify group mapping, seat removal, token revocation, and plan availability in the contract and console.",
      "sourceUrls": [
        "https://cursor.com/enterprise",
        "https://cursor.com/pricing"
      ]
    },
    {
      "number": 3,
      "id": "identity-break-glass",
      "domain": "Identity",
      "title": "Control break-glass access",
      "owner": "Security",
      "guidance": "Keep emergency admin access limited, monitored, and tested.",
      "verificationMethod": "Review named emergency accounts and run a documented access test.",
      "passCriteria": "Emergency access has MFA, a named owner, an expiry or review date, and an audit trail.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Cursor's public pages do not define a universal break-glass workflow; verify available controls.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 4,
      "id": "roles-admin",
      "domain": "Authorization",
      "title": "Minimize admin roles",
      "owner": "Cursor workspace owner",
      "guidance": "Assign organization roles according to least privilege.",
      "verificationMethod": "Export or review every privileged member and business justification.",
      "passCriteria": "Each privileged account has a current owner and required responsibility.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify the exact role catalog and permissions in the active workspace.",
      "sourceUrls": [
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 5,
      "id": "groups-separation",
      "domain": "Authorization",
      "title": "Separate pilot and production groups",
      "owner": "Platform engineering",
      "guidance": "Use identity groups and policies to isolate experimental users from production-facing teams.",
      "verificationMethod": "Compare membership, repository scope, models, MCPs, and agent rules across groups.",
      "passCriteria": "Pilot permissions cannot silently expand production access.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Verify whether every required policy can be scoped by group.",
      "sourceUrls": [
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 6,
      "id": "privacy-enforcement",
      "domain": "Data governance",
      "title": "Enforce Privacy Mode org-wide",
      "owner": "Security",
      "guidance": "Enable and enforce Privacy Mode for all covered users.",
      "verificationMethod": "Inspect the organization setting and test inheritance with a new member.",
      "passCriteria": "New and existing members inherit the enforced setting.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify plan, workspace, account, and client-specific behavior in the console and agreement.",
      "sourceUrls": [
        "https://cursor.com/security",
        "https://cursor.com/data-use",
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 7,
      "id": "training-exclusion",
      "domain": "Data governance",
      "title": "Verify training exclusion",
      "owner": "Legal and security",
      "guidance": "Confirm that Privacy Mode excludes customer data from Cursor and model-provider training.",
      "verificationMethod": "Map the public claim to the signed DPA or MSA and active workspace setting.",
      "passCriteria": "Contract language and console configuration support the same exclusion.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Required: public marketing alone is not sufficient for the buyer's legal requirement.",
      "sourceUrls": [
        "https://cursor.com/security",
        "https://cursor.com/data-use",
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 8,
      "id": "provider-retention",
      "domain": "Data governance",
      "title": "Verify model-provider retention",
      "owner": "Privacy",
      "guidance": "Confirm the zero-data-retention arrangement for every enabled provider and model.",
      "verificationMethod": "Request the provider matrix and compare it with the model allowlist.",
      "passCriteria": "Each enabled model has a documented retention treatment and exception path.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Required: validate provider, model, region, abuse-monitoring exception, and change notification in contract or trust evidence.",
      "sourceUrls": [
        "https://cursor.com/data-use",
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 9,
      "id": "cursor-retention",
      "domain": "Data governance",
      "title": "Define Cursor-side retention",
      "owner": "Privacy",
      "guidance": "Document retention for prompts, code context, indexes, logs, analytics, support records, and backups.",
      "verificationMethod": "Build a data-flow and retention table from contract, product settings, and trust evidence.",
      "passCriteria": "Every data class has a duration, deletion path, and accountable owner.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Unknown until the active agreement, plan, features, and support process are reviewed.",
      "sourceUrls": [
        "https://cursor.com/data-use",
        "https://cursor.com/security",
        "https://docs.cursor.com/account/privacy"
      ]
    },
    {
      "number": 10,
      "id": "subprocessors",
      "domain": "Data governance",
      "title": "Review subprocessors",
      "owner": "Vendor risk",
      "guidance": "Review Cursor and model-provider subprocessors before rollout and after changes.",
      "verificationMethod": "Download the current list, record purpose and location, and test change-notice handling.",
      "passCriteria": "All material processors are approved or have a documented exception.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify contract notice period and objection or termination rights.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 11,
      "id": "data-residency",
      "domain": "Data governance",
      "title": "Confirm data residency",
      "owner": "Legal and security",
      "guidance": "Map required regions to actual processing, storage, backup, and support locations.",
      "verificationMethod": "Compare architecture and subprocessor evidence with policy requirements.",
      "passCriteria": "No unapproved region receives protected data.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Public pages do not establish a universal customer-selectable residency option; verify contractually.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 12,
      "id": "encryption",
      "domain": "Data protection",
      "title": "Verify encryption controls",
      "owner": "Security",
      "guidance": "Confirm TLS in transit and AES-256 at rest claims for covered services.",
      "verificationMethod": "Review trust evidence and, where available, configuration for customer-managed keys.",
      "passCriteria": "Required data paths meet the organization's encryption standard.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify feature scope, exclusions, key ownership, and availability of CMEK in the purchased plan.",
      "sourceUrls": [
        "https://cursor.com/enterprise",
        "https://cursor.com/security"
      ]
    },
    {
      "number": 13,
      "id": "repo-policy",
      "domain": "Repository access",
      "title": "Apply repository allowlists or blocklists",
      "owner": "Platform engineering",
      "guidance": "Limit which repositories agents and users may access.",
      "verificationMethod": "Attempt access to one approved and one denied repository.",
      "passCriteria": "Approved access works; denied access fails and is logged.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify whether policy is allowlist, blocklist, or both and which agent surfaces it covers.",
      "sourceUrls": [
        "https://cursor.com/enterprise",
        "https://cursor.com/pricing"
      ]
    },
    {
      "number": 14,
      "id": "sensitive-files",
      "domain": "Repository access",
      "title": "Protect sensitive files",
      "owner": "Repository owner",
      "guidance": "Use repository exclusions and product policy to keep secrets and restricted paths out of AI requests.",
      "verificationMethod": "Run a controlled test against denied paths and inspect client behavior.",
      "passCriteria": "Restricted files are not intentionally included in prompts, indexes, or agent actions.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Cursor describes best-effort exclusions; verify residual risk and do not treat ignore files as a secret boundary.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 15,
      "id": "model-policy",
      "domain": "Model governance",
      "title": "Restrict model access",
      "owner": "AI platform owner",
      "guidance": "Allow only approved models and providers.",
      "verificationMethod": "Compare the console allowlist with procurement and privacy approvals.",
      "passCriteria": "Only reviewed models are selectable or routable.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify new-model defaults, router behavior, provider retention, and change control.",
      "sourceUrls": [
        "https://cursor.com/enterprise",
        "https://cursor.com/pricing"
      ]
    },
    {
      "number": 16,
      "id": "mcp-policy",
      "domain": "Tool governance",
      "title": "Restrict MCP servers",
      "owner": "AI platform owner",
      "guidance": "Allow only reviewed MCP servers and remove stale connections.",
      "verificationMethod": "Attempt to connect an approved and an unapproved MCP server.",
      "passCriteria": "Unapproved servers are blocked; approved servers have an owner and review date.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify policy coverage for desktop, CLI, cloud agents, plugins, and user-defined servers.",
      "sourceUrls": [
        "https://cursor.com/enterprise",
        "https://cursor.com/pricing"
      ]
    },
    {
      "number": 17,
      "id": "mcp-secrets",
      "domain": "Tool governance",
      "title": "Protect MCP credentials",
      "owner": "Security",
      "guidance": "Issue scoped credentials per server and avoid long-lived shared secrets.",
      "verificationMethod": "Inspect the credential store, scopes, rotation record, and revocation test.",
      "passCriteria": "Credentials are least-privileged, non-exported where possible, rotated, and revocable.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Verify where tokens are stored and which administrators or agents can reveal them.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 18,
      "id": "agent-global-rules",
      "domain": "Agent governance",
      "title": "Set global agent rules",
      "owner": "Platform engineering",
      "guidance": "Configure organization-wide agent policies before broad rollout.",
      "verificationMethod": "Inspect required rules and test behavior with a new user.",
      "passCriteria": "Mandatory rules apply to supported agent surfaces and cannot be silently bypassed.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify precedence, supported clients, sync timing, and exception workflow.",
      "sourceUrls": [
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 19,
      "id": "auto-run-controls",
      "domain": "Agent governance",
      "title": "Constrain auto-run, browser, and network access",
      "owner": "Security",
      "guidance": "Set conservative defaults for autonomous terminal, browser, and network actions.",
      "verificationMethod": "Run controlled allowed and denied actions in each supported agent surface.",
      "passCriteria": "Denied actions require approval or fail; allowed actions are traceable.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify differences among local, CLI, background, and cloud agents.",
      "sourceUrls": [
        "https://cursor.com/pricing",
        "https://cursor.com/security"
      ]
    },
    {
      "number": 20,
      "id": "sandbox",
      "domain": "Agent governance",
      "title": "Enforce sandbox policy",
      "owner": "Endpoint and platform engineering",
      "guidance": "Use restricted execution for agent terminal commands where supported.",
      "verificationMethod": "Test workspace boundaries, temporary-file access, network denial, and escape handling.",
      "passCriteria": "The configured sandbox restricts the expected files and network paths.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify team-wide enforcement, bypass permissions, platform differences, and known exclusions.",
      "sourceUrls": [
        "https://cursor.com/blog/enterprise",
        "https://cursor.com/security"
      ]
    },
    {
      "number": 21,
      "id": "hooks",
      "domain": "Agent governance",
      "title": "Distribute security hooks",
      "owner": "Platform engineering",
      "guidance": "Use managed hooks to observe or block sensitive agent actions.",
      "verificationMethod": "Trigger before-prompt and before-command hooks with allowed and denied examples.",
      "passCriteria": "Required hooks run, fail closed where intended, and generate reviewable evidence.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify server-side distribution, tamper resistance, timeout behavior, and plan availability.",
      "sourceUrls": [
        "https://cursor.com/blog/enterprise",
        "https://cursor.com/pricing"
      ]
    },
    {
      "number": 22,
      "id": "prompt-injection",
      "domain": "Agent governance",
      "title": "Test prompt-injection resistance",
      "owner": "Product security",
      "guidance": "Exercise untrusted repository, web, issue, and MCP content against the approved configuration.",
      "verificationMethod": "Run a documented adversarial test with canary secrets and denied tools.",
      "passCriteria": "The agent does not exfiltrate canaries or cross the configured approval boundary.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "No public vendor page proves safety for the buyer's exact tools and data; validate locally.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 23,
      "id": "audit-log",
      "domain": "Logging",
      "title": "Enable and export audit logs",
      "owner": "Security operations",
      "guidance": "Capture access, administrative, rule, and configuration events.",
      "verificationMethod": "Change a test setting and confirm the event appears in dashboard and CSV export.",
      "passCriteria": "Event identity, timestamp, action, target, and outcome are available for the required period.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify event catalog, retention, API or export, latency, and plan limits.",
      "sourceUrls": [
        "https://cursor.com/blog/enterprise",
        "https://cursor.com/pricing"
      ]
    },
    {
      "number": 24,
      "id": "analytics-export",
      "domain": "Logging",
      "title": "Govern analytics and API exports",
      "owner": "Data governance",
      "guidance": "Review adoption, usage, and AI-code metrics without over-collecting employee data.",
      "verificationMethod": "Inventory dashboard fields, API outputs, recipients, and retention.",
      "passCriteria": "Metrics have a declared purpose, access control, retention period, and employee notice where required.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Verify exact fields and legal basis before enabling broad reporting.",
      "sourceUrls": [
        "https://cursor.com/enterprise",
        "https://cursor.com/blog/enterprise"
      ]
    },
    {
      "number": 25,
      "id": "siem-monitoring",
      "domain": "Logging",
      "title": "Integrate security monitoring",
      "owner": "Security operations",
      "guidance": "Route available audit evidence into the organization's monitoring and incident workflow.",
      "verificationMethod": "Generate a high-risk test event and trace it from Cursor to the response queue.",
      "passCriteria": "The event is ingested, enriched, assigned, and retained under policy.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Verify supported export or API paths and compensate for unavailable events.",
      "sourceUrls": [
        "https://cursor.com/blog/enterprise"
      ]
    },
    {
      "number": 26,
      "id": "trust-evidence",
      "domain": "Assurance",
      "title": "Obtain SOC 2 and penetration-test evidence",
      "owner": "Vendor risk",
      "guidance": "Request current SOC 2 Type II and penetration-test materials from the trust portal.",
      "verificationMethod": "Record report period, exceptions, complementary controls, and remediation commitments.",
      "passCriteria": "Evidence is current and gaps are accepted by accountable owners.",
      "claimBasis": "official-public",
      "contractOrConsoleCheck": "Required: verify report coverage and bridge letters; certification is not a universal guarantee.",
      "sourceUrls": [
        "https://cursor.com/security",
        "https://cursor.com/enterprise"
      ]
    },
    {
      "number": 27,
      "id": "incident-notice",
      "domain": "Assurance",
      "title": "Confirm incident notification",
      "owner": "Legal and security",
      "guidance": "Set contractual notification, cooperation, evidence-preservation, and post-incident obligations.",
      "verificationMethod": "Map the signed agreement to the incident response plan and contacts.",
      "passCriteria": "Timeframes and responsibilities meet organizational requirements.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Public pages do not define every customer's binding incident terms; verify the MSA or DPA.",
      "sourceUrls": [
        "https://cursor.com/security"
      ]
    },
    {
      "number": 28,
      "id": "deletion",
      "domain": "Lifecycle",
      "title": "Test deletion and offboarding",
      "owner": "Privacy and identity",
      "guidance": "Validate account, workspace, index, token, automation, and retained-data cleanup.",
      "verificationMethod": "Offboard a test user and submit a deletion request; record each completion.",
      "passCriteria": "Access is revoked promptly and deletion follows the documented schedule.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Verify backups, legal holds, logs, shared artifacts, and contract termination handling.",
      "sourceUrls": [
        "https://cursor.com/security",
        "https://docs.cursor.com/account/privacy"
      ]
    },
    {
      "number": 29,
      "id": "change-management",
      "domain": "Lifecycle",
      "title": "Monitor material product and policy changes",
      "owner": "Vendor owner",
      "guidance": "Track changes to models, subprocessors, retention, security features, and acquisition status.",
      "verificationMethod": "Review vendor notices monthly and compare them with the approved baseline.",
      "passCriteria": "Material changes create a documented reassessment before policy expansion.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Verify notification channels and contractual change rights.",
      "sourceUrls": [
        "https://cursor.com/security",
        "https://cursor.com/data-use"
      ]
    },
    {
      "number": 30,
      "id": "exit-portability",
      "domain": "Lifecycle",
      "title": "Maintain an exit and portability plan",
      "owner": "Engineering leadership",
      "guidance": "Keep repository instructions, workflows, evidence, and critical automations portable to another agent.",
      "verificationMethod": "Run an annual migration exercise on a representative repository.",
      "passCriteria": "The team can revoke Cursor access and continue critical work within the recovery objective.",
      "claimBasis": "kyenai-recommendation",
      "contractOrConsoleCheck": "Verify export availability, data return, deletion, license termination, and dependency inventory.",
      "sourceUrls": [
        "https://cursor.com/enterprise"
      ]
    }
  ],
  "sources": [
    {
      "title": "Cursor for Enterprise",
      "url": "https://cursor.com/enterprise",
      "scope": "Identity, SCIM, admin, repository, model, MCP, agent, analytics, and encryption claims"
    },
    {
      "title": "Cursor Security",
      "url": "https://cursor.com/security",
      "scope": "Certifications, infrastructure, Privacy Mode, client and agent security, and trust evidence"
    },
    {
      "title": "Data Use & Privacy Overview",
      "url": "https://cursor.com/data-use",
      "scope": "Privacy Mode, model-provider handling, training, storage, and policy exceptions"
    },
    {
      "title": "Introducing Cursor for Enterprise",
      "url": "https://cursor.com/blog/enterprise",
      "scope": "Hooks, team rules, analytics, audit log, and sandbox behavior"
    },
    {
      "title": "Cursor Pricing",
      "url": "https://cursor.com/pricing",
      "scope": "Current plan-level enterprise controls and availability"
    }
  ]
}
