Agents · Copilot CLI
Run Copilot CLI in the background
Put the GitHub Copilot CLI to work in the background, with any model your Copilot plan includes. wisp hands copilot the task on stdin, adds wisp’s tools for the run, and turns its JSON event stream into a report you can ship from.
Free and open source · uses your own GitHub account · macOS, Linux, Windows (beta) · Node 20+

What wisp adds to Copilot CLI
- A worktree per task. Each task gets its own branch from
origin/main, so several Copilot CLI runs can work on the same repo at once without colliding. - A report instead of a transcript. When the run ends you read a headline, the numbers that changed, the real diff from its own edits, the test run and what to do next.
- Questions mid-run. When it needs a decision, the card moves to Needs you and you get a notification, on your desktop or your phone.
- Ship it. One click commits, pushes and opens the pull request; the card follows CI and review, and Merge syncs your local main.
- Take over any time. Press T and your terminal opens in the worktree with
copilot --resume=<id>.
How wisp runs Copilot CLI
wisp doesn’t replace or wrap Copilot CLI’s model access: it starts the copilot CLI you already have installed and signed in, in headless mode, and reads its event stream. Roughly:
copilot --output-format json --allow-tool=write \
--session-id <uuid> --no-ask-user \
--additional-mcp-config '{"mcpServers":{"wisp":…}}' < task
Follow-ups resume the same session, so Copilot CLI keeps its context. Override the binary with WISP_COPILOT_BIN.
Permission modes
Pick a mode per launch in the launcher (ShiftTab cycles them) or with --mode on the CLI. Here is what each one passes to copilot:
| wisp mode | Copilot CLI flag |
|---|---|
| Plan (read-only) | --mode plan |
| Edits | --allow-tool=write |
| Full auto | --allow-all |
Copilot can’t hand a permission prompt to wisp, so in Edits mode the commands its permissions refuse come back on the card with Allow & retry, which re-runs the turn with exactly those commands allowed (--allow-tool=shell(npm publish)).
Questions, /btw and take over
- Asking you
- An MCP tool, reached as
wisp-ask_user, added with--additional-mcp-configand allowed with--allow-tool=wisp. Copilot’s own question tool is off (--no-ask-user), so its questions come to you. /btwside questions- Type
/btw did you update the docs too?while it works. The question is answered from wisp’s record of the task (requests, reports, actions and files changed); the running task never sees it. - Take over
- Press T on the card, or run
copilot --resume=<id>yourself in the task’s worktree. - Models
- The models
copilot help configlists (Claude, GPT, Gemini, Grok…), plus a thinking level passed as--reasoning-effort.
- The task goes in on stdin, so long prompts and pasted logs aren’t cut by the shell.
- Several folders in one task: the others are passed as
--add-dir. Pasted screenshots go in with--attachment. - Subagents: a Copilot lead delegates through wisp’s
delegatetool, with its owntasksubagents turned off.
Get started
- Install Copilot CLI and sign in. Follow GitHub’s instructions until
copilotruns in your terminal. - Start wisp.
- Pick Copilot CLI in the launcher, describe the task and press Enter. From a shell:
wisp "fix the flaky auth test" --agent copilot.
Run it next to other agents
The same queue takes every harness. Compare one task on two of them side by side, or let Auto pick the harness and model per task from what worked before.
Guides: Run Claude Code and Codex in parallel · Run coding agents on multiple machines · Multi-agent coding across Claude Code, Codex and more.