GitHub Copilot CLI
GitHub Copilot CLI installs through Homebrew and reports permissions through its hooks, so automatic approval can answer for it. It offers no model rows and no live usage data.
| Command | copilot |
| Install | brew install --cask copilot-cli |
| Hook configuration | ~/.copilot/hooks/saggar.json |
| Skill location | ~/.copilot/skills/saggar-cli/SKILL.md |
| Resume | copilot --resume <id>, or copilot --resume without an id |
Launching
The launch menu has one Copilot row, which starts copilot with its own
configured model. Saggar ships no model catalog for it and the CLI has no
listing command Saggar reads, so there is no More models reveal and no
effort control.
Hooks
Installing hooks writes one hook file under ~/.copilot/hooks and one script
under ~/.saggar/. Your Copilot settings and any neighboring hooks are left
alone, and removal deletes only Saggar's file. With them installed Saggar:
- captures the native session id;
- names the session from its first prompt;
- follows completed turns, notifications, and clean exits;
- hears permission requests directly;
- restores each session to its exact conversation.
Nothing is version gated.
Prompts and automatic approval
Copilot's permission requests reach Saggar through the hook, and Saggar answers there when the session is unsupervised. The deny-list reads the request first, so a destructive command is handed back on screen for you to read. Saggar has no on-screen dialog vocabulary for Copilot, so an unhooked session relies on generic prompt detection.
Resume
With a recorded id, restore runs copilot --resume <id>. Without one it runs
copilot --resume, which reopens the most recent conversation.
Further reading
- GitHub's command reference lists Copilot CLI's shortcuts, including Shift+Enter and Option+Enter for a newline. Set up your terminal for agents says which of those Saggar already handles, and how to enable Option as Meta.