[ACP] Emit `usage_update` in `--acp` mode (context window + AI credits) for parity with the interactive statusline
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Shell
- Estrellas
- 11.2k
- Forks
- 1.9k
- Merge medio
- 14 h 16 min
- PR fusionados (30 d)
- 6
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en el punto de entrada --acp y sigue el manejo de session/new, session/load, session/resume y prompt-turn. Compara los datos existentes de /context, /usage y statusline con el esquema ACP session/update y verifica después que usage_update informe de used, size, cost y los metadatos de AI-credit solicitados tras cada evento del ciclo de vida.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- shell
- Área
- cli
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100