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) to install persistent user-level hooks.
Steps to Reproduce
- Install cmux session restore hooks:
cmux hooks copilot install
- Verify
~/.copilot/config.json now contains a "hooks" key with SessionStart, SessionEnd, etc.
- Start a new
copilot session
- 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.
Bug
The
hooksfield in~/.copilot/config.jsonis documented as the location for user-level hooks (copilot help configstates: "In global config.json these act as user-level hooks").However, Copilot CLI overwrites
config.jsonon every session start, dropping anyhookskey that was previously written there. This makes it impossible for external tools (like cmux) to install persistent user-level hooks.Steps to Reproduce
cmux hooks copilot install~/.copilot/config.jsonnow contains a"hooks"key with SessionStart, SessionEnd, etc.copilotsession~/.copilot/config.json— the"hooks"key is goneExpected Behavior
The
hooksfield should be preserved when Copilot CLI rewritesconfig.json(e.g., when updatingexpAssignmentsCacheor other managed state).Additional Context
settings.jsondo not fire as user-level hooks (despite being a recognized config location)// User settings belong in settings.jsonbutcopilot help configsays hooks go inconfig.jsonWorkaround
Currently none for global user-level hooks. Repo-level hooks (
.github/hooks/*.json) work but require per-repo setup.