# Cursor-agent acp never reports token usage over ACP, though -p --output-format json does

**URL:** <https://forum.cursor.com/t/cursor-agent-acp-never-reports-token-usage-over-acp-though-p-output-format-json-does/171923>\
**Category:** Bug Reports\
**Tags:** cli, acp\
**Created:** [September 16, 2026, 10:03pm UTC](https://forum.cursor.com/t/cursor-agent-acp-never-reports-token-usage-over-acp-though-p-output-format-json-does/171923 "2026-09-16T22:03:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![peckjon](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/peckjon/32/121155_2.png) [@peckjon](https://forum.cursor.com/u/peckjon)\
**Post date:** [September 16, 2026, 10:03pm UTC](https://forum.cursor.com/t/cursor-agent-acp-never-reports-token-usage-over-acp-though-p-output-format-json-does/171923/1 "2026-09-16T22:03:22Z")

</div>

### Where does the bug appear (feature/product)?

Cursor CLI

### Describe the Bug

cursor-agent in ACP mode never reports token usage, while the exact same binary reports it fine on the --print path. This makes it impossible for ACP clients to account for spend.

Version: 2026.09.15-d2fe57e (also reproduced on 2026.09.08-6caf4ff), macOS arm64

### Steps to Reproduce

```auto
$ cursor-agent acp # minimal ACP client: initialize -> session/new -> session/prompt
session/prompt response: {"stopReason":"end_turn"}

```

### Expected Behavior

Token usage reported as per ACP spec: [https://unpkg.com/@agentclientprotocol/sdk@1.2.1/dist/schema/types.gen.d.ts](https://unpkg.com/@agentclientprotocol/sdk@1.2.1/dist/schema/types.gen.d.ts)).

Either:

- Emit usage\_update — this is the stable part of ACP, documented as something the Agent MAY send (spec), and it carries cost.
- Populate usage on the session/prompt response — currently experimental (schema), and the natural home for per-turn token counts.

I understand this is marked “experimental” in the ACP spec, but other providers already support it, and the capability already exists in terminal calls with -p, so hopefully easy to port to ACP:

```auto
$ cursor-agent -p --force --output-format json "Reply with exactly: PONG"
{"type":"result",...,"usage":{"inputTokens":3,"outputTokens":6, "cacheReadTokens":12635,"cacheWriteTokens":3136}}

```

### Operating System

MacOS  
Linux

### Version Information

cursor-agent 2026.09.15

### Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

---

<div class="post-metadata">

**Author:** ![joinwell52](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/joinwell52/32/106009_2.png) [@joinwell52](https://forum.cursor.com/u/joinwell52)\
**Post date:** [September 17, 2026, 2:33am UTC](https://forum.cursor.com/t/cursor-agent-acp-never-reports-token-usage-over-acp-though-p-output-format-json-does/171923/5 "2026-09-17T02:33:41Z")

</div>

The same-binary comparison is helpful. For your ACP client, would an explicit “usage unavailable” signal be enough as a first step, or do you need the per-turn counts to enforce a budget? I’d be wary of treating the missing field as zero when the run itself completed.

---

<div class="post-metadata">

**Author:** ![peckjon](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/peckjon/32/121155_2.png) [@peckjon](https://forum.cursor.com/u/peckjon)\
**Post date:** [September 17, 2026, 4:54am UTC](https://forum.cursor.com/t/cursor-agent-acp-never-reports-token-usage-over-acp-though-p-output-format-json-does/171923/6 "2026-09-17T04:54:01Z")

</div>

A flag would be good until available (-1 or null maybe?). Long-term, I personally need this for tracking and measuring usage by various CI/CD processes, and would guess many others do as well. Trying to export CSVs from the usage panel and then correlate them to specific automated pipelines is nonviable.

---

<div class="post-metadata">

**Author:** ![mohitjain](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/mohitjain/32/100229_2.png) [@mohitjain](https://forum.cursor.com/u/mohitjain)\
**Post date:** [September 17, 2026, 7:23am UTC](https://forum.cursor.com/t/cursor-agent-acp-never-reports-token-usage-over-acp-though-p-output-format-json-does/171923/9 "2026-09-17T07:23:13Z")

</div>

Hey @peckjon, thanks - the same-binary contrast makes it clear. You’ve got it right: the ACP `session/prompt` response only carries `stopReason` today, and the per-turn usage that `-p --output-format json` reports isn’t surfaced over ACP. That’s on our side, not your setup, and it’s an issue we’re tracking with your report added.

Agree with you and @joinwell52 that a missing field shouldn’t read as zero - I’ve passed along both the explicit “unavailable” flag idea and the per-turn counts for CI/CD accounting. No ETA yet, but I’ll post here when there’s an update. For spend today, `-p --output-format json` is the only place the CLI reports per-turn usage.
