[ACP] Emit `usage_update` in `--acp` mode (context window + AI credits) for parity with the interactive statusline
Personne n'a encore pris cette issue.
- Langage dominant
- Shell
- Étoiles
- 11.2k
- Forks
- 1.9k
- Merge moyen
- 14 h 16 min
- PR mergées (30 j)
- 6
Description
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.commandreceives JSON with
context_window.current_context_tokens,context_window.displayed_context_limit,
context_window.current_context_used_percentage, etc. /contextshows the context‑window breakdown./usageshows 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_updatecarries{ used, size }(+ optionalcost) 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), andcost(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 theusage_updateschema), 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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez au point d’entrée --acp et suivez la gestion de session/new, session/load, session/resume et prompt-turn. Comparez les données existantes de /context, /usage et statusline avec le schéma ACP session/update, puis vérifiez que usage_update signale used, size, cost et les métadonnées AI-credit demandées après chaque événement du cycle de vie.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- shell
- Domaine
- cli
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100