Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

ACP: expose the model list as a category:model config option (session/new returns only mode and allow_all)

Đang mở
#4,880 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
52/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
node.js, shell
Lĩnh vực
api, cli

Hướng nghiên cứu

Start at the copilot --acp entry point and trace the session/new, session/load, and session/set_config_option handlers; the issue names no source files or tests. Compare their behavior with the interactive /model picker. Done means model options and the active value are exposed, model changes emit updates, and unknown --model values no longer silently fall back.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Over copilot --acp, a client has no way to list the models available to the signed-in account or to pick one for a session.

Measured on GitHub Copilot CLI 1.0.85 (macOS arm64):

  • session/new returns sessionId, modes and configOptions only. configOptions holds exactly two select options, mode and allow_all. There is no option with category: "model".
  • session/load returns the same set.
  • Sending /model as a prompt answers: "The model-picker dialog is only available in the interactive CLI."
  • --model <id> accepts any string. copilot --acp --model=not_a_real_model_xyz starts, creates a session and completes a prompt with no error, no stderr, and nothing on the wire reports which model actually ran.

So an ACP client (an editor or a desktop app embedding Copilot) can only offer a single "Copilot default" row. It cannot show the models the user's plan allows, and if it hard-codes ids it cannot tell when one silently fell back.

Proposed solution

Advertise the model list the way the ACP spec already provides for it:

  1. Include a SessionConfigOption with type: "select" and category: "model" in session/new and session/load responses, listing the ids the account can use and currentValue set to the active model. Grouping by vendor via SessionConfigSelectGroup is fine.
  2. Accept session/set_config_option for that option and emit config_option_update on change, so a client can switch models mid-session without respawning.
  3. Ideally, reject an unknown --model value (or at least log it to stderr) instead of silently running the default.

This is the same shape the interactive /model picker already has; it just needs to be exposed on the ACP surface.

Example prompts or workflows

An ACP client starts copilot --acp, calls session/new, reads the model config option, shows its values in a picker, and calls session/set_config_option with the user's choice. Today step 3 yields nothing to show.

Additional context

Minimal reproduction (Node 24):

import { spawn } from 'node:child_process'
const c = spawn('copilot', ['--acp', '--no-auto-update'], { stdio: ['pipe', 'pipe', 'inherit'] })
const send = (o) => c.stdin.write(JSON.stringify(o) + '\n')
let buf = ''
c.stdout.on('data', (d) => {
  buf += d
  for (const line of buf.split('\n').slice(0, -1)) {
    const m = JSON.parse(line)
    if (m.id === 1) send({ jsonrpc: '2.0', id: 2, method: 'session/new', params: { cwd: process.cwd(), mcpServers: [] } })
    if (m.id === 2) { console.log(Object.keys(m.result), m.result.configOptions.map((o) => o.id)); c.kill() }
  }
  buf = buf.slice(buf.lastIndexOf('\n') + 1)
})
send({ jsonrpc: '2.0', id: 1, method: 'initialize', params: { protocolVersion: 1, clientCapabilities: { fs: { readTextFile: false, writeTextFile: false } }, clientInfo: { name: 'probe', version: '0' } } })

Prints [ 'sessionId', 'modes', 'configOptions' ] [ 'mode', 'allow_all' ].

Version: GitHub Copilot CLI 1.0.85. ACP SDK used by the client: @agentclientprotocol/sdk 1.4.0.

Ngôn ngữ chính
Shell
Star
11.2k
Fork
1.9k
Merge trung bình
14 giờ 16 phút
Pull request đã merge (30 ngày)
6

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của github/copilot-cli

Tất cả issue của github/copilot-cli

Issue tương tự

Thêm issue về Shell/Bash

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.