Chrome Extension Dev (Autopilot)
Chrome Extension Dev (Autopilot) lets an agent build and test a Chrome extension itself by driving a real Chrome over the DevTools Protocol — loading the unpacked extension, clicking the popup, reading the console, reloading after edits, and reporting back with screenshots. Covers the setup, the per-session auto-equip, the Extensions hub, and privacy.
Status: in development — hidden by default. Reveal via Settings → Lab → Chrome extension dev (Autopilot) or launch Omniscio with
AMC_SHOW_CHROME_EXTENSION_DEV=1.
What it is
When your project is a Chrome extension, this feature lets the agent build and test the extension itself by driving a real Chrome browser — no manual clicking. It does this with agent-browser, a CLI that connects to a headed Chrome over the Chrome DevTools Protocol.
The agent gets a built-in extension-dev workflow that teaches it to:
- Load the unpacked extension from the project folder into a managed Chrome instance.
- Click the popup, interact with content scripts, and take screenshots.
- Read the browser console for JavaScript errors.
- Reload after code edits (Chrome does not hot-reload extensions — a step that trips up most generic agents).
- Iterate until the extension behaves as expected, then report back with screenshot evidence.
The result: the agent owns the build-and-verify loop for Chrome extension work, the same way Obscura lets it own the verify loop for web apps — but on real, pixel-rendering Chrome (Obscura has no rendering engine and cannot load extensions).
Inspired by the jlstradingco/chrome-ext-autopilot workflow.
What it is NOT
- Not Chrome Web Store publishing — this feature covers building and testing only. Distribution to the store is out of scope.
- Chrome only — Firefox and Safari extension formats are not supported. The underlying
agent-browserCLI connects to Chrome (or Chrome-for-Testing); other browsers are not wired. - Not a general-purpose browser-automation feature — the feature is scoped to the Chrome-extension development loop. General browser automation is a possible later generalization.
Where to find it
The feature is hidden until you reveal it, in Settings → Lab → Chrome extension dev (Autopilot). With it on, an Extensions tool appears in the sidebar; clicking that opens the Chrome Extensions Hub, one panel listing every Chrome-extension project Omniscio knows about. The guided "Build a Chrome Extension" mission is reachable from a project's empty state and from the mission picker, and the two tools it needs are installed by a one-click "Set it up for me" flow rather than by hand.
How it behaves
Setup
Two prerequisites must be in place before the feature activates:
- Enable the feature in Settings → Lab → "Chrome extension dev (Autopilot)" (or run Omniscio with
AMC_SHOW_CHROME_EXTENSION_DEV=1). - Install
agent-browserand Chrome-for-Testing — use the Toolchain "Set it up for me" flow. Omniscio downloads both theagent-browserCLI and the matching Chrome-for-Testing binary in one click. You do not need a separately installed Chrome.
Proactive nudge: the first time you open a Chrome-extension project with the feature enabled but agent-browser not yet installed, Omniscio drops a single dismissible Inbox card offering one-click setup (once per install, never nags).
Auto-equip (how it activates per-session)
Omniscio detects that a project is a Chrome extension when its root contains a manifest.json with "manifest_version": 2 or "manifest_version": 3. When all three conditions hold — the project is a Chrome extension, the feature is enabled, and agent-browser is installed — the session is automatically equipped with:
- The extension-dev workflow (a built-in skill injected into the session's context), which teaches the agent the load → exercise → screenshot → reload → iterate loop.
- A git-excluded
agent-browser.jsonwritten to the project root:{ "headed": true, "extensions": ["<absolute project path>"] }. This tellsagent-browserto launch in headed mode and load the project directory as an unpacked extension. The extension path is absolute on purpose — Chrome resolves a relative"."against its own install directory (not the project) and fails with "manifest missing", so Omniscio writes the absolute project path. Omniscio writes this file on first equip (only when absent — it never clobbers a config you authored) and adds it to the project's.gitignore; it is never committed.
Coaching mission — "Build a Chrome Extension"
A guided "Build a Chrome Extension" coaching mission takes a non-programmer from idea → working, tested extension in one session. It scaffolds the extension folder structure and manifest, then hands off to a session that has the Autopilot workflow already active — so the agent builds the popup, background logic, and any content scripts, then verifies each piece by driving Chrome. The mission is reachable from the project empty-state and the mission picker.
Privacy
agent-browser launches a clean managed Chrome-for-Testing instance — not your real Chrome profile. Omniscio passes no cookies, saved passwords, bookmarks, or sign-in state to the test browser. There is no way for the agent to accidentally browse as you or access your real Chrome history. The managed instance only exists while the session is running.
Extensions hub
When the chrome-extension-dev feature is visible, an "Extensions" tool appears in the sidebar. Clicking it opens the Chrome Extensions Hub — a dedicated panel that lists every Chrome-extension project Omniscio knows about, all in one place.
What the hub shows
Each project row displays:
- A status pill — Tested (the project has screenshots under
tests/screenshots/, indicating at least one Autopilot run has passed) or Draft (no screenshots yet). - Three quick-action icon buttons: Open (switches Omniscio to that project), Test it (shows a confirmation dialog then launches a new Autopilot session for that extension), and Install in Chrome (opens an
InstallDialogthat reveals the project folder via the OS file manager and walks through Chrome's Load-unpacked flow — this button is disabled until the project has been tested at least once). - A right-click menu with Rename (edits the project name via
PROJECT_UPDATE) and Remove (soft-deletes the project viaPROJECT_DELETEwith an undo toast — the project record is marked deleted, not physically removed).
A "+ New Extension" button at the top launches the guided "Build a Chrome Extension" coaching mission, taking you from idea to a working, tested extension in one session.
What Install in Chrome does (and doesn't do)
"Install in Chrome" never auto-installs the extension or opens a chrome:// URL. It reveals the built extension folder in your OS file manager and gives you step-by-step instructions for Chrome's built-in Load unpacked flow (chrome://extensions → Developer mode → Load unpacked → select folder). This is intentional: Chrome requires a deliberate user gesture to load an unpacked extension — there is no API Omniscio can call to do it silently.
How project discovery works
The hub calls CHROME_EXTENSIONS_LIST (a read-only IPC channel) which invokes listExtensionProjects() on the backend. That function filters the full project list through isChromeExtensionProject (the same detection used for Autopilot workflow injection) and attaches a tested flag based on whether tests/screenshots/ exists in the project folder.
Gating
The sidebar "Extensions" tool and the hub panel are both gated by the chrome-extension-dev unreleased feature, via the same sidebarLaunch check used throughout — when the feature is hidden, the tool does not appear at all.
Key code — extensions hub
src/renderer/src/features/chrome-extensions/— all hub UI components (ChromeExtensionsHubView,InstallDialog, icon actions).src/main/services/chrome-extension/chrome-extensions-service.ts—listExtensionProjects()backend implementation.src/main/ipc/chrome-extensions-handlers.ts—CHROME_EXTENSIONS_LISTIPC handler.
For agents
Key code
src/main/services/chrome-extension/— feature services:is-chrome-extension-project.ts— detectsmanifest.jsonwithmanifest_version2 or 3.session-context-provider.ts— content-matched provider that injects the workflow when all gates pass.extension-dev-workflow.ts— the workflow text injected into the session context.ensure-agent-browser-config.ts— writes/validatesagent-browser.jsonand updates.gitignore.agent-browser-installed.ts— checks whether theagent-browserbinary is available.extension-dev-nudge.ts— the once-per-install Inbox nudge whenagent-browseris missing.
src/shared/unreleased-features.ts— thechrome-extension-deventry inUNRELEASED_FEATURES(setting keychromeExtensionDevEnabled, env varAMC_SHOW_CHROME_EXTENSION_DEV).src/main/services/session-context/— the session-context provider seam that content-matched providers (like this one) plug into.
Design spec: docs/superpowers/specs/2026-06-19-chrome-extension-dev-autopilot-design.md.
Related
Verifying a web app by driving a real browser is the sibling capability described on the Web app verification page, and the browser surface itself is covered by AI browser. The guided "Build a Chrome Extension" mission belongs to the wider mission system on the Missions hub page.
Last verified 2026-10-06