Hooks in config.json are not preserved across session starts
- Lenguaje dominante
- Shell
- Estrellas
- 11.2k
- Forks
- 1.9k
- Merge medio
- 14 h 16 min
- PR fusionados (30 d)
- 6
Descripción
## 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.
Guía de contribución
Línea de trabajo
Empieza localizando el código que reescribe ~/.copilot/config.json y reproduce el comportamiento al iniciar la sesión con una entrada de hooks instalada por cmux. La corrección está completa cuando las actualizaciones del estado gestionado ya no eliminan el campo hooks; verifícalo siguiendo los pasos de reproducción documentados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cli, shell
- Área
- cli
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 62/100