Cursor

Cursor telemetry and OpenTelemetry export (Privacy Mode, OTLP, Analytics API)

How do I control Cursor telemetry and export usage data to OpenTelemetry?

Turn on Privacy Mode in Cursor Settings > General so your code is not used for training by Cursor or model providers. Enterprise teams can also export usage metrics and logs over OTLP/HTTP to their own collector from Team Settings > OpenTelemetry Export. For reporting, Cursor documents an Admin API, an Analytics API and an AI Code Tracking API at https://api.cursor.com.

What Cursor collects and Privacy Mode

With Privacy Mode off, Cursor may use and store codebase data, prompts, editor actions and code snippets to improve its AI features and train its models. With Privacy Mode on, your data is not used for training by Cursor, and Cursor has zero data retention agreements with its model providers.

Cursor's data use page does not describe a separate telemetry toggle. Privacy Mode is the documented control.

  • Open Cursor Settings with Cmd+Shift+J (Mac) or Ctrl+Shift+J (Windows and Linux).
  • Click General.
  • Turn on Privacy Mode.

OpenTelemetry export (Enterprise)

Configure it in Team Settings > OpenTelemetry Export. Cursor sends OTLP/HTTP with binary protobuf only. gRPC and JSON are not supported.

  • Enter an HTTPS base URL with no /v1 suffix, for example https://otel.example.com. Cursor posts to /v1/metrics and /v1/logs.
  • Add an auth header such as Authorization: Bearer <token>.
  • Test the connection, then enable the destination. Export starts within about a minute.
  • The endpoint must be reachable from the public internet.
  • Cursor sends no traces.

otel-collector.yaml

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:

exporters:
  logging:
    verbosity: basic

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]

What the export contains

  • Metrics: cursor.token.usage, cursor.tool.calls, cursor.cost.usage (a best effort USD estimate, not billing).
  • Model usage logs: cursor.api.request, cursor.api.error, cursor.api.correction.
  • Skills, hooks and plugins logs such as cursor.skill.activated and cursor.hook.execution_complete.
  • Attributes include service.name=cursor, cursor.team.id, cursor.conversation.id and cursor.event.id (use it to dedupe logs).

Prompts, responses and tool payloads are not exported by default. There is no backfill.

Analytics, Admin and AI Code Tracking APIs

All three use https://api.cursor.com with HTTP Basic auth: your API key is the username and the password is empty. Create keys in the Cursor Dashboard under API Keys.

  • Analytics API: team usage, active users and model usage.
  • Admin API: members, audit logs, daily usage and spend.
  • AI Code Tracking API (alpha, Enterprise): lines per commit attributed to Tab, Composer or non AI code.

shell

curl -X GET "https://api.cursor.com/analytics/team/agent-edits" \
  -u YOUR_API_KEY:

Sources

More on Cursor

Other guides

Cursor: allow all terminal commandsClaude Code: allow commands without promptsCodex CLI: approval and sandbox modesGemini CLI: YOLO mode, auto_edit and allowing specific shell commandsCursor Privacy Mode: telemetry, training and data retentionClaude Code telemetry and data retention: what is sent and how to turn it offGemini CLI: turn off usage statistics and telemetryCLAUDE.md: where it goes, how it loads, and how it works with AGENTS.mdClaude Code hooks: format on save, block risky edits, get notifiedClaude Code subagents: create one, limit its tools, and call itAdd MCP servers to Cursor with mcp.json: Keep files out of Cursor with .cursorignore: Configure Codex with config.toml: Configure Gemini CLI with settings.json: Add MCP servers to Claude Code (claude mcp add, .mcp.json, scopes): Claude Code custom slash commands and skills (SKILL.md): GitHub Copilot custom instructions: Adding MCP servers to GitHub Copilot: Claude Code settings.json: file locations, precedence, and key settingsClaude Code plugins and marketplaces: install, create, and shareGemini CLI extensions and custom commands: Configuring OpenCode with opencode.json: Cline Rules: workspace, global, and conditional rulesKiro steering files: .kiro/steering, inclusion modes, and AGENTS.mdZed agent: instruction files, MCP servers, tool permissions, and ACP agentsCursor CLI: install, headless mode, permissions and CIAider: CONVENTIONS.md, .aider.conf.yml and API keysJunie guidelines, MCP and the Action Allowlist: Amp AGENTS.md, settings.json and MCP: Configure Goose extensions, hints, recipes and permissions: Customize OpenHands with skills, AGENTS.md, setup.sh and MCP: Configure Factory Droid CLI: AGENTS.md, settings.json, autonomy, custom droids and MCPConfigure Qwen Code: settings.json, providers, QWEN.md, MCP and approval modesCursor hooks: hooks.json, beforeShellExecution, afterFileEdit and exit codesCursor sandbox: sandbox.json, network allowlist and run modesCursor settings: settings.json, Cursor Settings and the ~/.cursor config filesCursor browser agent: @browser, browser automation and approval modesCursor subagents: .cursor/agents, frontmatter, built-in Explore, Bash and BrowserCursor rules setup: .cursor/rules, .mdc frontmatter, globs, alwaysApply and AGENTS.md

Get the weekly agent stack update

New official MCP servers, spec changes and harness releases, checked against the source. One email a week, no fluff.

Reviewed Oct 9, 2026. Settings change often; the linked vendor docs are the source of truth.