all writing

I Didn't Want Copilot to Be the Odd One Out

How I adapted an existing Codex plugin pattern to bring GitHub Copilot into Claude Code as a first-class citizen — no context switching required.

3 min read

AI-generated still life of connected cloud shapes and network paths, in purple on a dark charcoal background
On this page

I use a lot of tools. Claude Code is my main driver — it’s where I think, debug, and ship. But GitHub Copilot is still part of my workflow, and switching contexts to use it always felt like friction I shouldn’t have to deal with.

So I adapted OpenAI’s codex-plugin-cc — which does the same thing for Codex — and made a version that brings Copilot into Claude Code instead.

The problem

If you’re using Claude Code day-to-day, you’ve probably settled into a rhythm. You’ve got your slash commands, your plugins, your muscle memory. Then you need a Copilot review or want to delegate a quick task to it, and suddenly you’re context-switching — different terminal, different interface, different mental model.

It’s not that Copilot is bad. It’s that having it live outside your primary workflow makes it easy to forget it’s there, or just not bother.

What the plugin does

copilot-plugin-cc is a lightweight Claude Code plugin that shells out to the Copilot CLI and brings the results back into your session. No new interfaces to learn. Just slash commands:

  • /copilot:review — Get a structured, read-only code review of your current changes. You can pick the base branch and the model. It’s the kind of review you’d ask a teammate for before opening a PR.
  • /copilot:adversarial-review — Same idea, but meaner. This one actively looks for design tradeoffs, edge cases, and things you might be rationalizing away. Think of it as the reviewer who isn’t trying to be polite.
  • /copilot:rescue — Delegate actual coding work to Copilot. Set the effort level, pick a model, let it run in the background. Come back when it’s done.
  • /copilot:status, /copilot:result, /copilot:cancel — Manage background jobs without leaving your session.

Under the hood, it captures Copilot’s session and result events in JSON mode and stores per-repo job state in Claude Code’s plugin directory. Nothing fancy — just enough plumbing to make it seamless.

Credit where it’s due

I want to be upfront: this project started from OpenAI’s codex-plugin-cc. That plugin does the same thing for Codex in Claude Code, and the architecture — shelling out to a CLI, capturing JSON events, storing job state — is directly inspired by that work. I essentially took the pattern and rewired it for Copilot’s CLI instead.

If you’re a Codex user, go check out the original. It’s a great plugin.

Why I bothered

This isn’t groundbreaking. It’s a wrapper. But the small quality-of-life improvement of not having to leave Claude Code to use Copilot has been worth it for me. If you use both tools and you’re tired of the context switch, it might be worth it for you too.

Try it out

It’s open source under Apache 2.0. You’ll need Node 18.18+ and the Copilot CLI installed locally.

GitHub: codywilliamson/copilot-plugin-cc

If you run into issues or have ideas, open an issue or a PR. I’m actively working on this and would love feedback from other people who live in Claude Code.

written by

Cody Williamson

Senior Software Engineer