Skip to main content

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.

Commandcopilot
Installbrew install --cask copilot-cli
Hook configuration~/.copilot/hooks/saggar.json
Skill location~/.copilot/skills/saggar-cli/SKILL.md
Resumecopilot --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