Chat/Agent Session Metadata for Client, Task, and Cost Attribution

Feature request for product/service

Cursor IDE

Describe the request

I searched the forum and found several related discussions around workspace-level cost tracking, client billing, time tracking for AI-assisted development, account/workspace switching, and per-request usage visibility.

However, I could not find a feature request specifically for attaching custom metadata to each Cursor chat/composer/agent session and exposing that metadata in the Admin API, CSV export, and usage dashboard.

This request is not primarily about time tracking. It is about enterprise cost attribution for teams working across multiple clients, projects, ERP tasks, Jira tickets, GitHub issues, and parallel Cursor chats.

Feature Request: Chat/Agent Session Metadata for Client, Task, and Cost Attribution

Hi Cursor team,

I would like to request a feature that would allow teams to attach metadata to each Cursor chat/composer/agent session and later retrieve usage and cost data grouped by that metadata.

Background

I work in a professional services / software development environment where the same developer may work for multiple clients, projects, tickets, and ERP tasks during the same day.

In practice, a developer can have several Cursor chats open in parallel, each related to a different customer task:

  • Chat A → Client 1 → ERP Task 34245
  • Chat B → Client 2 → Jira Issue ABC-123
  • Chat C → Internal project → GitHub Issue #456

Today, Cursor usage data can be reviewed at the team/user/time/model level, but there is no reliable way to attribute the cost of a specific chat, composer, or agent session to a specific business task or client.

This makes it very difficult to allocate AI costs accurately, especially for agencies, consulting companies, outsourcing teams, and software vendors who need to understand which customer/project consumed which AI resources.

Requested Feature

Please add support for chat-level / composer-level / agent-session-level metadata.

For example, when opening or using a Cursor chat, the user or workspace policy could define metadata such as:

{
  "clientId": "client-001",
  "projectId": "project-001",
  "taskId": "34245",
  "ticketId": "ABC-123",
  "issueId": "456",
  "billingCategory": "client-billable"
}

This metadata should then be attached to all usage events generated by that chat/composer/agent session.

Suggested UI Behavior

In the Cursor UI, each chat/composer/agent session could have an optional metadata panel or header field:

Client: Client 1
Project: Project 1
Task: 34245
Ticket: ABC-123
Billing: Client-billable

It would also be very useful to allow teams to define required metadata fields at the workspace/team level, for example:

  • Require taskId before starting an Agent session
  • Require clientId for usage-based billing workspaces
  • Allow default metadata based on workspace, repository, branch name, or issue/ticket reference

Suggested API / Export Support

Please expose this metadata in the Admin API and CSV exports.

For example, usage events could include:

{
  "usageEventId": "evt_...",
  "timestamp": "2026-05-17T10:32:00Z",
  "userEmail": "[email protected]",
  "model": "claude-...",
  "kind": "usage-based",
  "chargedCents": 42,
  "chatId": "chat_...",
  "composerId": "composer_...",
  "agentRunId": "agent_...",
  "metadata": {
    "clientId": "client-001",
    "projectId": "project-001",
    "taskId": "34245",
    "ticketId": "ABC-123",
    "billingCategory": "client-billable"
  }
}

It would also be very useful to provide aggregated endpoints or filters such as:

Get usage by metadata.taskId
Get usage by metadata.clientId
Get usage by metadata.projectId
Get usage by metadata.ticketId
Get usage by chatId / composerId / agentRunId

Why Workspace-Level Tracking Is Not Enough

Some existing discussions and third-party tools focus on tracking Cursor cost by workspace, repository, folder, or project.

That helps in some cases, but it does not solve the problem when a developer works on several customer tasks in parallel inside the same workspace or repository.

For example:

Same repository
Same developer
Same day
Multiple Cursor chats
Different ERP tasks / Jira tickets / clients

In that situation, workspace-level attribution is not granular enough. The missing primitive is session-level attribution: the ability to say “this Cursor chat/agent run belongs to this business task”.

Why Time Tracking Is Not Enough

This is also different from classic time tracking.

The goal is not necessarily to measure how many minutes the human developer spent in the chat. The goal is to attribute actual Cursor AI usage cost to a business object such as:

  • Client
  • Project
  • ERP task
  • Jira ticket
  • GitHub issue
  • Internal billing category

In many companies, AI usage is becoming a real cost center. If the cost cannot be attributed to the correct client or project, it is often absorbed internally as overhead. That limits how broadly teams can use Cursor.

Why This Matters

This feature would make Cursor much more valuable for teams that work across multiple clients or projects.

Right now, when AI usage cannot be attributed to a specific client or task, the cost is often absorbed internally by the company. That limits how broadly we can use Cursor, especially with usage-based pricing.

If Cursor allowed accurate per-chat or per-task cost attribution, companies like ours could:

  • Use Cursor more aggressively across client projects
  • Allocate AI costs fairly to the correct customer/project
  • Justify higher AI usage internally
  • Report AI-assisted development costs transparently
  • Connect Cursor usage to ERP, Jira, GitHub Issues, Linear, and internal billing systems
  • Reduce manual reconciliation and spreadsheet-based cost allocation
  • Build better internal ROI reporting for AI-assisted development

In other words, this feature would not only help with reporting. It would directly enable broader Cursor adoption in professional services, agencies, enterprise delivery teams, and consulting environments.

Minimal Useful Version

A minimal useful version would be:

  1. Each chat/composer/agent session has a stable chatId, composerId, or agentRunId.
  2. Users or tools can attach custom metadata to that session.
  3. Cursor usage events include that session ID and metadata.
  4. Admin API and CSV exports expose the session ID, metadata, and cost.

Ideal Version

The ideal version would include:

  1. UI support for setting metadata per chat/session.
  2. Workspace/team-level required metadata fields.
  3. API support for creating/updating metadata.
  4. Usage export grouped by metadata.
  5. Admin dashboard filters by client/project/task/ticket.
  6. Integration-friendly fields for Jira, Linear, GitHub Issues, and custom ERP task IDs.
  7. Optional policy enforcement, such as requiring a taskId before starting a usage-based Agent session.

Related Existing Discussions

There are already related discussions around:

  • Workspace/project-level cost tracking
  • Client billing for Cursor usage
  • Time tracking for AI-assisted development
  • Account/workspace switching for multi-client work
  • Per-request / per-subagent usage visibility

Those are related, but they do not fully solve the core issue described here.

Workspace-level tracking does not solve parallel task attribution.
Time tracking does not solve usage-cost attribution.
Account switching does not solve task-level allocation inside the same workspace.
Per-request usage visibility is helpful, but without metadata it still cannot be mapped reliably to a business task.

The missing feature is:

Chat / Composer / Agent Session
→ Custom Metadata
→ Usage Events
→ Admin API / CSV Export
→ Cost Attribution by Client / Project / Task / Ticket

Summary

Please consider adding chat/composer/agent-session metadata and exposing it in usage/cost reporting.

This would make Cursor significantly easier to adopt at scale for agencies, consulting companies, enterprise delivery teams, and software vendors that need to allocate AI costs to the correct client, project, task, or ticket.

Thanks!

This is one of the most thorough feature requests I’ve seen. The core ask makes total sense: when a developer has multiple chats open for different clients or projects in the same workspace, workspace-level tracking just isn’t granular enough. Session-level metadata would be the missing piece for accurate cost attribution.

We’ve captured this as a feature request internally. We’ll be tracking this post to gauge interest from the community, so if you’re in a similar situation (agencies, consulting, enterprise delivery), upvote and share your use case — it helps prioritize accordingly.

Strongly seconding this. For anyone doing client work or multi-project consulting, this is probably the biggest gap in Cursor’s enterprise offering right now.

Workspace-level tracking seems fine until you’re jumping between multiple clients in the same repo on the same afternoon. At that point cost attribution is basically guesswork, and guesswork means companies either cap AI usage or absorb it as overhead.

Session-level metadata changes that completely. AI costs become billable line items instead of budget leaks, which directly justifies broader Cursor adoption in agencies, dev shops, and enterprise teams. These are exactly the customers spending the most on usage-based pricing.

The minimal version Adam described (stable session IDs + metadata + API/CSV export) doesn’t even need a UI overhaul. High ROI for Cursor, high ROI for teams doing client work. Would love to see this prioritized!