github / github/copilot-cli

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

Open
#4,233 2 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:non-interactive
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
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.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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

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.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
cli
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.