Agent Pager

Your coding agent, at your fingertips.

Agent Pager for Stream Deck puts your agent's permission prompts on physical keys — Claude Code, GitHub Copilot (CLI and VS Code agent mode), and Cursor supported. ALLOW and DENY flash when your agent needs you, one press answers, and an agent badge shows who's asking. Live token and context meters for Claude Code, voice dictation, and one-press setup included.

A pager-style device with a glowing green check screen

ALLOW / DENY keys

Flash when Claude Code or Copilot parks a permission; the key face shows the actual command. First answer wins — from the deck, the phone, or the agent itself.

Live meters

Session token usage with a sparkline, and a context-window ring so you know when a long session is running out of room. (Claude Code sessions today.)

Voice & speech

Toggle dictation into Claude, and have prompts announced out loud when you're across the room.

Phone companion

Pair the optional Agent Pager iOS app and every prompt also reaches your iPhone and Apple Watch — end-to-end encrypted.

Setup

  1. Install from the Elgato Marketplace and drag the keys you want onto your deck — ALLOW, DENY, OPEN, USE, Context, SPEAK, VOICE, and HOOKS.
  2. Press the HOOKS key once. It installs the agent hooks that route permission prompts to the deck — Claude Code always, Copilot automatically when it's on the machine. Press again any time to remove them — they're fail-safe either way: if the plugin isn't running, your agent behaves exactly as it always did. After installing or updating hooks, restart open agent sessions once (agents read hooks at session start).
  3. That's it. The next time your agent asks for a permission, your deck lights up.

Frequently asked questions

I installed or updated — why aren't prompts reaching the deck?

Restart the agent session. All supported agents read their hooks once at session start — an already-open session never sees new or updated hooks. Fresh terminal session, VS Code window reload, or quit-and-reopen the app, and the next prompt lights the deck. Applies after every install and update.

Which coding agents are supported?

Claude Code everywhere it runs (Desktop app, VS Code extension, terminal), GitHub Copilot CLI on Mac and Windows, Copilot agent mode in VS Code (agent-hooks preview), and Cursor. Prompts carry an agent badge so you always know who's asking. The token/context meters and voice dictation are Claude Code features today — their key labels say so in the actions list.

What exactly does the HOOKS key change?

It adds a few entries to your Claude Code settings that forward permission requests and status events to the plugin on 127.0.0.1. Your existing settings are backed up first, removal is one press, and every hook is written to fail open — if the plugin is ever unavailable, Claude falls back to its normal in-app prompt instantly. Nothing can get stuck.

Does answering from the deck weaken Claude's permission model?

No. The plugin mirrors Claude's own rules first — anything you've already allowed or denied in settings resolves automatically without lighting the deck. Only prompts Claude would genuinely have asked you about reach the keys, and a deck press answers with the same once-only scope as clicking Allow in the app.

How long do I have to press the key?

About 30 seconds. If you miss it, Claude's normal in-app prompt appears and waits as usual — the deck is a fast path, never a gate. With the mobile companion paired, Away mode extends the window to five minutes for answering from your phone.

Claude runs in a VM / over SSH / on another machine — how do I wire it up?

Yes — prompts from remote sessions park on the same deck (and phone). The listener accepts connections from your network with a shared-token handshake. Setup on the remote machine:

  1. On the machine running the plugin or helper, copy the token from ~/.claude/.streamdeck-token.
  2. Copy the hooks section from that machine's ~/.claude/settings.json into the remote machine's ~/.claude/settings.json.
  3. In the copied hook commands, replace 127.0.0.1:37123 with the listener machine's address (e.g. 10.211.55.2:37123) and add the header -H "X-SD-Token: <your token>" to each curl.
  4. Restart any running Claude session on the remote machine — sessions read their hooks at startup.

Keep them fresh: remote hooks don't update themselves. When you update the plugin or helper, re-copy the hooks block — a stale copy silently misses newer tools and events (the hooks always fail safe, so nothing breaks; you just stop getting remote prompts you'd expect). This works for VMs, SSH sessions, and headless boxes alike: hooks fire wherever Claude runs, no matter how you connected to it.

Do I need the iPhone app?

No — the deck is fully standalone. The mobile companion adds lock-screen and Apple Watch answering for when you step away, with everything end-to-end encrypted. They share one setup: pair once and both work.

The keys aren't lighting up for prompts.

Check three things: the HOOKS key shows "installed" (green), the prompt is one Claude would actually ask about (auto-allowed tools resolve silently — that's correct behavior), and the Stream Deck software is running. The plugin log (via Stream Deck's developer tools) traces every permission with the exact path it took.

Contact

Questions, bugs, or feature ideas: [email protected] — replies usually within a day or two.