github / github/copilot-cli

Allow /model to switch between multiple models, including BYOK/local providers, in one session

Abierto
#3,709 7 comentarios 33 reacciones 0 asignados Ver en GitHub
area:models
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

BYOK mode pins a session to a single model through `COPILOT_MODEL`, and the `/model` picker only lists GitHub-hosted models. It does not list the models served by a configured local BYOK provider. As a result, I cannot select a local model from `/model`, and I cannot switch models without quitting the CLI and re-exporting `COPILOT_MODEL`. I would like the CLI to know about models from both sources, GitHub-hosted and local, and let me switch between all of them in-session through `/model`.

### Proposed solution

Make the CLI aware of multiple models across sources and selectable at runtime through `/model`. Today BYOK and offline mode (#1219) pin a session to one model, so there is no way to switch in-session or to mix a fast local model with a remote one in the same conversation. A suggested approach:

1. **Enumerate BYOK models** from the provider's `/v1/models` endpoint (OpenAI-compatible) and merge them into the `/model` picker alongside GitHub-hosted models, with a source label:
```
/model
gpt-5.1 (github)
claude-opus-4.8 (github)
google/gemma-4-12b (local)
qwen3-coder-30b (local)
```
2. **Allow an explicit list or opt-out** for users who do not want auto-enumeration, for example a `models` array in `~/.github/copilot-cli.json` or `COPILOT_MODELS="github/gpt-5.1,local/google/gemma-4-12b"`.
3. **In-session switching** through `/model ` re-points subsequent requests to the chosen model and provider, with no restart and no loss of conversation context.
4. **Coexistence of remote and local**: when not in `COPILOT_OFFLINE=true`, list both GitHub-hosted and local BYOK models together; in strict offline mode, list only the local provider's models.

Benefit: users get the same model-switching experience they already have with GitHub-hosted models, extended to local endpoints, so they can pick the right model for cost, speed, or privacy per task without restarting or re-exporting environment variables.

### Example prompts or workflows

```bash
export COPILOT_PROVIDER_BASE_URL="http://127.0.0.1:1234/v1"
export COPILOT_PROVIDER_API_KEY="local"
# not setting COPILOT_OFFLINE so remote and local are both available
export COPILOT_MODELS="github/gpt-5.1,local/google/gemma-4-12b"
copilot
```

```
/model # lists github models and local models
/model google/gemma-4-12b # switch to a local model, no restart
/model gpt-5.1 # switch back to a remote model mid-session
```

- Quick refactor on a local model, then switch to a remote model for a complex design discussion in the same session with the same context.
- Keep sensitive code on a local model while still being able to reach for a remote model when needed.

### Additional context

Related issues: #1219 (offline mode, which gave us environment-variable BYOK but a single model), #3624 (BYOM registration for local endpoints, which was closed but the picker gap remains), and #3682 (BYOK credential refresh, which is complementary and a different problem).

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.