github / github/copilot-cli

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

オープン
#4,233 コメント 2 件 リアクション 3 件 担当者 0 名 GitHub で見る
area:non-interactive
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

### 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_

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
shell
領域
cli
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。