github / github/copilot-cli

`model` field in `settings.json` is not applied on startup; sessions fall back to default `claude-sonnet-5`

Aberta
#4,067 1 comentário 0 reações 0 responsáveis Ver no GitHub
area:configuration area:models
Linguagem predominante
Shell
Estrelas
11.2k
Forks
1.9k
Merge médio
14h 16min
PRs com merge (30d)
6

Descrição

## Describe the bug
When `~/.copilot/settings.json` contains a valid, account-enabled top-level `"model"` value, the CLI does not apply it at startup. Sessions resolve to the built-in default `claude-sonnet-5` instead. This is the same top-level `model` key that the in-app `/model` picker writes (verified by format, plain model id), so it would be expected to load on startup.

This differs from #3481 and closed #3557, which concern `contextTier` not being restored. Notably, #3557's description asserts "the `model` field is loaded correctly" — on 1.0.69 that is not the case. I have not determined when this broke, so I'm not claiming a regression, only current behavior.

## Affected version
1.0.69 (macOS, Darwin arm64)

## Steps to reproduce the behavior
1. Edit `~/.copilot/settings.json` to include `"model": "claude-opus-4.8"` (matches the format the `/model` picker writes; I hand-edited it — I did not separately test the picker-save-then-restart path).
2. From a clean shell, run `copilot` (bare, no flags). Also reproduces with `-p` and `-i`.
3. Observe the resolved model via the log line `Using default model: claude-sonnet-5`, or `assistant_usage_events` in `~/.copilot/session-store.db`.

## Expected behavior
Session starts on `claude-opus-4.8`.

Actual: session starts on `claude-sonnet-5`.

## Additional context
- `copilot --model claude-opus-4.8` and `COPILOT_MODEL=claude-opus-4.8 copilot` both correctly run Opus, so the model is enabled/available on the account; only the `settings.json` path is skipped.
- Not a write race: `settings.json` md5/mtime are unchanged across launches.
- Reproduced under a fully sanitized environment (`env -i`), and in both interactive and `-p` modes.
- Inferred (from decompiled `app.js`, not confirmed at runtime): the resolver considers `--model` > session model > `COPILOT_MODEL` > `settings.json` model > default, and the config tier appears skipped, landing on the default `claude-sonnet-5`. Treat this as a hypothesis, not a verified execution path.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece reproduzindo o caminho de inicialização com ~/.copilot/settings.json e inspecione a lógica de resolução do modelo no app.js descompilado. Compare um modelo configurado com os casos --model e COPILOT_MODEL e, em seguida, verifique se os logs de inicialização e session-store.db mostram o modelo configurado em vez de claude-sonnet-5.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
shell
Domínio
cli
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Ativa
Clareza
Razoavelmente clara
Facilidade para iniciantes
64/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.