# Cursor: Expanded Metrics Guide

Cursor provides detailed insights into AI usage patterns via the **Admin Panel export CSV** and **Admin API**. These metrics allow admins to track code origin, suggestion interactions, and chat-based adoption for each developer on a daily basis.

***

#### 🔍 **Metric Categories**

| **Area**                 | **Metrics Covered**                                              |
| ------------------------ | ---------------------------------------------------------------- |
| **AI Contribution**      | AI vs Manual LoC, Accepted Lines Added, Composer Suggestions     |
| **Interaction Metrics**  | Tabs shown, Tabs accepted, Chat completions, Suggestions applied |
| **Coverage & Activity**  | Active status per user per day, Usage trends over time           |
| **Engagement Intensity** | Files edited, Commit activity, Frequency of usage                |

***

#### 🧮 **Key Metric Definitions**

**✅ AI Lines vs Manual Lines**

* **Total LOC**: This is directly retrieved from the Cursor API, using the sum of two specific fields in the API response (as shown in the screenshot below). It represents the total number of lines added or deleted within a given period.<br>

  <figure><img src="/files/YyhjcZyqx3uQ1NvVRGlO" alt=""><figcaption></figcaption></figure>
* **Total AI Lines Added**: The total AI lines are also calculated by summing the two specific fields in the API response, as shown in the screenshot. This represents the number of accepted lines added + accepted lines removed by AI by the developer.<br>

  <figure><img src="/files/5Ih1T7l5P09hUSe8clcy" alt=""><figcaption></figcaption></figure>
* **Manual LOC**: Manual LOC is calculated by subtracting the AI LOC from the Total LOC. In other words, **`Manual LOC = Total LOC - AI LOC`**`.`

**✅ Suggestions Shown / Accepted**

* **totalTabsShown**: The total number of suggestions displayed to the developer (autocomplete or inline suggestions).
* **totalTabsAccepted**: The total number of suggestions accepted by the developer into the code.
* **totalAccepts**: Includes all types of accepted completions, such as **Composer** or **Chat** suggestions.
* **totalApplies**: Represents the final, user-confirmed inserts into the code editor.

**✅ Acceptance Rate**

* **Formula**:<br>

  <figure><img src="/files/6yd0Jr7ALgDeum9uQoh0" alt=""><figcaption></figcaption></figure>
* **Updated Explanation**: The **Acceptance Rate** is a percentage of displayed suggestions that were accepted.&#x20;

***

#### 🌟 3 Ways of Using Cursor and How AI LOC is Calculated

Cursor provides developers with multiple ways to interact with AI suggestions. The method of interaction affects how AI LOC is calculated. Here are three common usage scenarios:<br>

**1. Using Cursor on the the right side of Cursor IDE (Standard Use)**

* **How it works**: The developer receives AI suggestions in the code editor, either as suggestions or inline code completions. These suggestions are explicitly accepted by the developer and added directly to the code.
* **AI LOC Calculation**: In this case, the **Total AI LOC** is calculated based on the lines added or deleted by the AI suggestions that the developer accepted. Both **Accepted Lines Added** and **Accepted Lines Deleted** are counted in the total AI lines.
  * **Example**: If the AI suggests adding a new function and the developer  click on **Apply** and accepts it, those lines are counted as **AI LOC**.\
    \
    ![](/files/dO25Dgp0J4rXNyhu8Jct)<br>

**2. Inline Cursor Usage**&#x20;

* **How it works**: The developer views AI suggestions by selecting a portion of code and click on Quick edit and chat with Agent or GPT odel
* **AI LOC Calculation**: In this scenario, **AI LOC is  counted**.&#x20;
  * **Example**: The developer took quick help for formatting a block of code.\
    \
    ![](/files/0Gte1lqMqT4XKJwkcoyK)

**3. Using Tab Mode (AI LOC not counted)**

* **How it works**: The developer uses the AI suggestion directly by click on tab which helps in autocompletion of the code
* **AI LOC Calculation**: **AI LOC is not counted** in this case because the developer has not accepted the suggestion as-is. In this case, you get tabs accepted.
  * **Example**: The developer needs help with autocompletion of code.\
    ![](/files/LqChymdDokXSYOBWMd8c)

#### 👤 **User Classification**

**✅ Active Users**

A user is marked as **active** if they:

* Received a suggestion.
* Edited a file with Cursor open.
* Opened Cursor Composer (chat).
* Accepted a suggestion.

**❌ Inactive Users**

A user is marked as **inactive** if no AI interaction occurred on a given day, even if the IDE was open.

* **Coverage**: Coverage charts reflect the percentage of active users daily or weekly.

**Hivel Calculations for Active/Inactive Users**:

* **Active Users** = Number of unique users with **isActive = true** at least once in the selected period.
* **Inactive Users** = Total unique users (with any usage record) - Active Users.

***

#### 🧱 **Technical Foundations**

* **Tracking**: Metrics are tracked on a per-user, per-day basis.
* **Reset**: Metrics are reset daily, with historical data available for up to 90 days prior to your integration.<br>

**⚠️ Known Limitations**

* **Cursor Suggested Lines Not Accepted**: If the lines suggested by Cursor are shown but not accepted (for instance, when the suggestion is staged but not applied to the code), **the LOC will show as 0**.
* **Copy-Pasting**: If a developer copy-pastes content from a suggestion without accepting it via the IDE, it will **not** be counted as AI lines, and the LOC will show as 0.
* **Modified Usage**: Any changes made to the code that were inspired by AI suggestions but not directly accepted (such as rewriting or modifying code based on AI suggestions) will not be tracked or counted.
* **Offline Use**: If Cursor is used offline, no data is captured. Any actions performed during offline sessions are not counted in the metrics.<br>

**Summary**: **Cursor's metrics primarily track explicit interactions** with AI suggestions and not actions like copy-pasting or modified usage. This can lead to an **underestimation of AI influence**.

***

#### 📦 **Sample Cursor Daily Record**

| **Field**                       | **Value**      |
| ------------------------------- | -------------- |
| **email**                       | <dev@acme.com> |
| **date**                        | 2025-07-29     |
| **isActive**                    | true           |
| **totalTabsShown**              | 98             |
| **totalTabsAccepted**           | 22             |
| **acceptedLinesAdded**          | 105            |
| **acceptedLinesDeleted**        | 16             |
| **composerRequests**            | 6              |
| **composerSuggestionsAccepted** | 2              |
| total**linesAdded**             | 310            |
| total**linesDeleted**           | 48             |

This sample shows interactions for one day, with detailed metrics on **suggestions shown**, **accepted**, and the number of **AI lines** added by the developer.

***

#### **FAQs**

**Q) Are Metrics Tied to Commits?**

All four metrics (totalLinesAdded, totalLinesDeleted, acceptedLinesAdded, acceptedLinesDeleted) are based on editor activity. Cursor tracks changes as they happen in the editor, not when the code is committed or pushed. The "raw count of all code changes" refers to the actual edits made in the editor, regardless of whether those changes are later committed.

**Q) If a user accepts an AI suggestion but later deletes the code or never commits/pushes it — does it still count in acceptedLinesAdded/Deleted for that day?**\
\
Yes, if a user accepts an AI suggestion, it will be counted in **acceptedLinesAdded**/**acceptedLinesDeleted** for that day, even if the code is later deleted or never committed. These metrics track the **initial acceptance** of AI suggestions within the editor.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hivel.ai/ai-adoption/cursor-adoption/cursor-expanded-metrics-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
