github / github/copilot-cli

[ACP] Emit `usage_update` in `--acp` mode (context window + AI credits) for parity with the interactive statusline

Offen
#4,233 2 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area:non-interactive
Vorherrschende Sprache
Shell
Sterne
11.2k
Forks
1.9k
Ø Merge
14 Std. 16 Min.
Gemergte PRs (30 T.)
6

Beschreibung

### Describe the feature or problem you'd like to solve

`copilot --acp` never emits the ACP `usage_update` session update, so ACP clients (Zed, etc.) can't show a context-window or AI-credit usage indicator for Copilot — even though the CLI already computes this data for `/context`, `/usage`, and the statusline.

### Proposed solution

### Summary

When Copilot CLI runs in ACP mode (`copilot --acp`), it never sends the ACP
`session/update` notification with `sessionUpdate: "usage_update"`. As a result,
ACP clients (Zed and other editors/tools integrating over ACP) cannot show a
context‑window usage indicator or AI‑credit usage for Copilot — even though the
CLI already computes this data and surfaces it in interactive mode.

### The gap: interactive mode has it, ACP mode doesn't

In interactive mode the data is already there:
- The experimental `statusLine.command` receives JSON with
`context_window.current_context_tokens`, `context_window.displayed_context_limit`,
`context_window.current_context_used_percentage`, etc.
- `/context` shows the context‑window breakdown.
- `/usage` shows AI credits used in the current session.

But in `--acp` mode none of it is forwarded — the client only ever receives
`agent_message_chunk`, `tool_call`, `available_commands_update`, etc., and never a
`usage_update` (even though the type is part of the ACP schema the CLI already speaks).

### Why it matters

- ACP standardized session usage reporting (Session Context Size & Cost RFD).
`usage_update` carries `{ used, size }` (+ optional `cost`) and powers Zed's
context‑window indicator.
- Other ACP agents (e.g. Claude Code via claude-agent-acp) emit `usage_update`, so
their users get a live context indicator in Zed. Copilot users don't — Zed falls
back to inaccurate estimation (see zed-industries/zed#44909, where Copilot models
show a hardcoded 128k limit that doesn't match the real limit).
- For long agentic sessions, knowing how close you are to compaction — and how many
credits you've spent — is valuable.

### Request

In `--acp` mode, emit `session/update` with `sessionUpdate: "usage_update"`:
- After `session/new`, `session/load`, `session/resume`, and after each prompt turn.
- Populate the standard fields: `used` (current context tokens), `size` (context
window size), and `cost` (session cost) when available.
- For AI credits (used / remaining) — which have no standard ACP field — attach them
via the update's `_meta` (already part of the `usage_update` schema), e.g.
`_meta: { ai_credits_used, ai_credits_remaining }`.

This brings ACP mode to parity with the interactive statusline / `/context` /
`/usage`, with no new data to compute — just forwarding what already exists over the
protocol the CLI already implements.

### References
- ACP `usage_update` (Session Context Size & Cost RFD)
- Zed context indicator; zed-industries/zed#44909 (Copilot token limits estimated / incorrect)
- Related CLI requests: #2052 (persistent token/context indicator), #1953 (always‑visible context status)

### Example prompts or workflows

_No response_

### Additional context

_No response_

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start at the --acp entry point and trace session/new, session/load, session/resume, and prompt-turn handling. Compare the existing /context, /usage, and statusline data with the ACP session/update schema, then verify that usage_update reports used, size, cost, and the requested AI-credit metadata after each lifecycle event.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
shell
Bereich
cli
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.