Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte
#4,880 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
52/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
node.js, shell
Domaine
api, cli

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/copilot-cli

Toutes les issues de github/copilot-cli

Issues similaires

Plus d'issues Shell/Bash

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.