github / github/copilot-cli

Hooks in config.json are not preserved across session starts

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

Descrição

## Bug

The `hooks` field in `~/.copilot/config.json` is documented as the location for user-level hooks (`copilot help config` states: "In global config.json these act as user-level hooks").

However, Copilot CLI **overwrites `config.json` on every session start**, dropping any `hooks` key that was previously written there. This makes it impossible for external tools (like [cmux](https://github.com/manaflow-ai/cmux)) to install persistent user-level hooks.

## Steps to Reproduce

1. Install cmux session restore hooks: `cmux hooks copilot install`
2. Verify `~/.copilot/config.json` now contains a `"hooks"` key with SessionStart, SessionEnd, etc.
3. Start a new `copilot` session
4. Check `~/.copilot/config.json` — the `"hooks"` key is gone

## Expected Behavior

The `hooks` field should be preserved when Copilot CLI rewrites `config.json` (e.g., when updating `expAssignmentsCache` or other managed state).

## Additional Context

- Copilot CLI version: 1.0.49
- Hooks in `settings.json` do **not** fire as user-level hooks (despite being a recognized config location)
- The file header says `// User settings belong in settings.json` but `copilot help config` says hooks go in `config.json`
- macOS, cmux latest

## Workaround

Currently none for global user-level hooks. Repo-level hooks (`.github/hooks/*.json`) work but require per-repo setup.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Start by locating the code that rewrites ~/.copilot/config.json and reproduce the session-start behavior with a hooks entry installed by cmux. The fix is complete when managed state updates no longer remove the hooks field; verify this with the documented reproduction steps.

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

Avaliação

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

Receba novas issues na sua caixa de entrada

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