Interceptor
Use this as the routing skill before loading a surface-specific skill.
Surface Decision
| Task | Skill |
|---|---|
| Page DOM, text, network, SPA state, browser monitor, screenshots of browser content | interceptor-browser |
| Rich browser editors (Docs/Slides/Canva), canvas/WebGL camera viewers, scene-graph reads, page-world request overrides, blob/export capture, or "cooking" a live page with overlays/HUDs | interceptor-browser |
| Native macOS apps, OS dialogs, browser chrome, URL bars, app windows, menu bars | interceptor-macos |
| Electron / Chromium desktop app web contents, such as Slack, VS Code, Notion, or Descript DOM/network/JS | interceptor macos cdp / interceptor macos cdp app via interceptor-macos/references/cdp-app.md |
| Native app runtime internals: live view/object graph, selector calls, rendered text mutation, hooks, MapKit/AppKit/SwiftUI runtime work | interceptor macos runtime via interceptor-macos/references/native-agent.md |
| Open or control a named app such as Brave, Mail, Finder, Signal, or Cursor | interceptor-macos |
| Backgrounded, occluded, minimized, or cross-Space app capture | interceptor-macos |
| Deep web research: investigate a topic across many sources with breadth + verification | interceptor-research |
| Owned physical iPhone, app automation, runner state and device services | interceptor-ios |
| Capabilities added by an installed extension (operator-supplied) | run interceptor extensions list, then load the extension's own skill (interceptor-ext-<name>) |
The User Is On This Mac Too
Assume the person is working on this Mac while you work. Stay in the background at all costs. Take focus (the frontmost app, the focused window, or the tab showing in a window the user is using) only when the action truly cannot be done any other way. Never take it to make your own work easier, and never to test something.
Before any focus-moving verb, go down this list and stop at the first rung that works:
- A background verb. Synthetic browser input, AX refs,
--app/--pid/--windowoninterceptor macosinput, and--trustedbrowser input (a full install delivers it to an unfocused window). interceptor tab keepalive <id>for a page that will not render while hidden.- Your own window.
interceptor window new [url]moves your tab group into its own background window. Tabs there paint, play media, and take trusted clicks, andinterceptor tab switch <id>there changes only that window. Never switch tabs in a window the user is working in. - Only then a focus move. Say so first, keep it to one fast batch, and put back the frontmost app, the active tab, and the cursor.
Known foreground-only cases: launching an app that is not running (it can come forward even from a background launch, and an app updater can raise a password prompt), and a click or drag on a minimized window or hidden app.
Core Rules
- Browser commands operate inside the cyan
interceptortab group. Do not use--any-tabunless the user explicitly authorizes acting outside that group. - Solo browser work in a supported agent shell gets a soft per-session group automatically. For concurrent lanes, set a unique
INTERCEPTOR_SESSION_IDor pass a unique--group <label>to each lane. Explicit groups are hard-scoped by default unless--any-tabis authorized. Close named groups withinterceptor group close <label>when done; the idle timer is based on tab activity, so metadata polls do not keep a group alive. interceptor open <url>,interceptor tab new <url>, andinterceptor window new [url]create background tabs and windows by default. Onlyopen --activate,tab new --activate,window new --activate,tab switch <id>, andwindow focus <id>intentionally move browser focus.- A page that will not render while hidden is not a reason to switch tabs in the user's window.
interceptor tab keepalive <id>makes it read as visible and run its animation frames in place. A page that needs a real paint (video playback, a virtualized grid that measures itself) goes in your own window:interceptor window new <url>. - A trusted click does not need a tab switch or a focused window:
interceptor click <ref> --trustedreaches the active tab of any window that is not minimized. If your tab is not the active tab of its window,interceptor window newthentab switch <id>inside that window. - The macOS surface is background-first by default. Only
interceptor macos app activate <app>andinterceptor macos open <app> --activateintentionally move focus. - If multiple browser profiles are connected, run
interceptor contextsand pass--context <id>. - Safari registers as
safari; useinterceptor --context safari <verb>for page content andinterceptor macosfor Safari chrome or native fallbacks. - Prefer compound commands (
open,read,act,inspect) and structured reads before screenshots. - The zero-CDP browser rule governs the user's real Chrome/Brave/Safari web session. For owned Electron apps,
interceptor macos cdpandinterceptor macos cdp appare intentional app-control surfaces. - For native app runtime internals, use
interceptor macos runtimeafter checkinginterceptor status; public Full installs may require operator-supplied runtime agent dylibs/signing identity beforemacos runtime enable. - If the extension behaves stale after a package update, run
interceptor reload --context <id>: an unpacked copy picks up the installed files; a Chrome Web Store copy only asks the store for an update and keeps its version until the store publishes the new one.interceptor contexts --verboseshows which copy (store or unpacked) and version each context runs. interceptor daemon stopandinterceptor skills unadoptare install/maintenance verbs. The daemon is shared by every agent on the machine — never stop it during normal automation; the next browser command respawns it, but every connected agent's in-flight work is dropped.
Load A Surface Skill
- Load
interceptor-browserfor browser page content, network, tabs, scene graphs, and browser screenshots. - Load
interceptor-macosfor native apps, browser chrome, OS dialogs, window capture, AX trees, Apple Events, Electron app CDP/app attach, and in-process native agent control. - Load
interceptor-iosfor an owned, unlocked, Developer-Mode iPhone. Disconnected unlock cannot bootstrap its runner. - Load
interceptor-researchfor deep web research — investigating a topic across many sources with a planner loop, an on-disk source ledger, and adversarial verification (methodology layered on the browser surface). Pull the playbook any time withinterceptor research.


