Your Copilot agent is waiting for you — and you're not at your desk

Copilot stalls waiting on one approval while you're away — CloakCode mirrors your live session to your phone so you can unblock it with a tap, without your code ever leaving your machine.

Part 1 of a series on CloakCode — observing and steering GitHub Copilot from your phone.

Update — CloakCode 1.0 (2026-07-29)

This post was written against an early build. The pitch below is unchanged, but 1.0 has shipped and one caveat in Try it is now out of date.

The extension↔gateway hop is encrypted by default. When this post went up, the only leg with real TLS was the phone's Dev Tunnel; the link from a VS Code window to a standalone gateway was plain ws://. That is no longer the whole story. The gateway now binds two separate listeners, and the one extensions connect to is wss:// by default — a self-signed certificate generated on first run and pinned by its SHA-256 fingerprint, handed to you as a single pairing URL. So:

The mechanics — and why "just pin the certificate" has a right and a wrong way to build it — are in Part 4 — Security by construction.

The 20-minute stall

You know the moment. You give Copilot a real task — "migrate this module to the new API, update the tests, and fix whatever breaks" — hit enter, and watch it start working. It reads files, edits code, runs the test suite. It's going to take a while, so you get up. Coffee. A meeting. Lunch.

You come back twenty minutes later and Copilot has done… four minutes of work. Then it stopped.

Somewhere near the top of that transcript is a single line waiting on you:

Run npm run migrate:db? [Allow] [Deny]

or

I found two User types — which one should the new client import?

The agent didn't fail. It didn't get stuck. It did exactly the right thing: it hit a decision it wasn't allowed to make on its own, asked, and waited. Politely. For twenty minutes. While you were three rooms away.

That gap — between "the agent needs one small thing from me" and "I happen to be sitting in front of the editor" — is where a huge amount of agent time quietly evaporates.

Why the obvious answers don't fit

"Just use Copilot on the web / the CLI," you say. Sometimes that works. Often it doesn't:

And there's a bigger reason people don't reach for a remote option at all: to drive an agent from "somewhere else," your code usually has to go somewhere else. Upload the repo, sync to a service, push to a branch. For a lot of us — client work, proprietary code, "this never leaves my machine" policies — that's an immediate no.

So the status quo is: the most powerful thing about agentic coding (it works while you don't) is capped by the least powerful constraint (you have to be at the keyboard to unblock it).

A different framing

Here's the reframe that started CloakCode:

You don't need to move the agent. You need to move the one decision it's waiting on.

The agent is already running, in the tool you already use, with all your context. The only thing missing is a way for you — wherever you are — to see that it's blocked and give it the one answer it needs. A tap. "Allow." "Use the second User type." "Stop, and do it this way instead."

That's a tiny channel. It doesn't need your codebase. It needs the question and your answer.

Enter CloakCode

CloakCode is a VS Code extension that mirrors your existing GitHub Copilot chat to a phone-first web app — so you can watch a session live, and unblock or steer it from your phone, without your code ever leaving your machine.

Concretely, from your phone you can:

…while you keep using VS Code's own Copilot UI at your desk. Pick it up on the phone, drop back to the desktop. Same session, no context lost.

The part that matters most: zero code-sync

This is the whole point, so it's worth being blunt about it. CloakCode adds no path that uploads your workspace anywhere. It doesn't push to GitHub. It doesn't sync your repo to a service. What crosses the wire is the Copilot transcript mirror and your replies — over localhost and your own private tunnel, not through any third party. Your code stays exactly where it is.

How it works, briefly

That's it. No account to create on our side. No repo upload. No "connect your GitHub."

Back to that stall

Rewind the coffee run. This time your phone buzzes: CloakCode — a session needs you. You glance at it in the hallway. Run npm run migrate:db? You read the command, tap Allow, and slip your phone back in your pocket. By the time you're back at your desk, the migration ran, the tests are green, and the agent is halfway through the next file.

Twenty minutes of dead time → a two-second tap. That's the entire pitch.

Try it

CloakCode is live and open source (MIT).

Install the extension from the VS Code Marketplace:

CloakCode — Visual Studio Marketplace

or from the command line:

code --install-extension rexwel.cloakcode

Reload VS Code, then run CloakCode: Show Phone Link from the Command Palette (Ctrl/Cmd+Shift+P).

The bridge binds to 127.0.0.1, so for phone access you need a way in from outside that loopback — and which side of it you land on depends on where VS Code is running:

Running several VS Code windows or machines and want one phone endpoint for all of them? Multiplexing multiple CloakCode instances through a standalone gateway is covered in Part 2 — The standalone gateway.

Source: github.com/lsiddiquee/CloakCode

What's next in this series

This post was the "why" — and the Try it section above is your five-minute setup. The next ones go deeper:

CloakCode is open source (MIT). If the 20-minute stall sounds familiar, that's who it's for.


Links: Extension (Marketplace) · Gateway (npm) · Gateway (Docker) · Source (GitHub)