theseus/bundled-addons/claude-connector
Hermes Dev a04775ad0d Claude connector panel: split site approvals from add-on-panel approvals
Site approvals and panel approvals share one allowedOrigins list on
disk because the policy is one SitePolicy either way, but on screen
they are two different things: a URL you signed in on versus an
Aegis sidebar panel you unlocked. The panel showed them in one mono
list under "Sites Claude may control", so an Aegis approval read as
"theseus-panel://aegis" with no label and no clue it was a panel at
all.

publicState() now splits allowedOrigins into allowedSites (web
origins) and allowedPanels (theseus-panel://<addon>, enriched with
the add-on's own title via api.tabControl.list()). The panel.html
renders them in their own sections: "Sites Claude may control" and
"Add-on panels Claude may control", the latter hidden when nothing
is approved. Each panel row shows the add-on title in bold with the
mono origin as a subtitle. The ✕ button goes through the existing
remove-origin IPC — removing either kind takes one call.

The renderer falls back to deriving the split from allowedOrigins so
a UI loaded against an older host still renders both sections.
2026-10-29 00:32:51 +02:00
..
lib Claude connector: reach add-on sidebar panels (Aegis, Hermes, Pithos, …) 2026-10-29 00:06:51 +02:00
addon.json Claude connector 0.2.0: connect Claude Code and Claude Desktop from the panel 2026-10-24 00:32:06 +03:00
index.js Claude connector panel: split site approvals from add-on-panel approvals 2026-10-29 00:32:51 +02:00
panel.html Claude connector panel: split site approvals from add-on-panel approvals 2026-10-29 00:32:51 +02:00
README.md Claude connector 0.2.0: connect Claude Code and Claude Desktop from the panel 2026-10-24 00:32:06 +03:00
stdio-shim.cjs Theseus: Claude connector, an opt-in MCP server for the signed-in profile 2026-10-23 17:45:02 +03:00

Claude connector

Built-in Theseus extension: a local MCP server through which Claude Code or Claude Desktop works in the user's tabs. Setup and safety model are in the Theseus README ("Claude connector (MCP)") and DESIGN-claude-connector.md.

file role
index.js activation, settings (add-on store), server start/stop, panel messages
lib/mcp-server.cjs Streamable HTTP + JSON-RPC, token, Host/Origin guards, sessions, SSE presence
lib/tools.cjs tool definitions and handlers; resolves tabs through api.tabControl
lib/tab-driver.cjs one tab over its own webContents.debugger (CDP 1.3)
lib/policy.cjs site approvals, upload-folder checks, password-field detection
lib/clipboard.cjs put / save / restore the system clipboard around a paste
lib/clients.cjs "Connect": registers the connector with Claude Code (its CLI, user scope) and Claude Desktop (its config file), reports status, re-registers after token/port changes
lib/action-log.cjs timestamped action log (panel + actions.log)
panel.html the sidebar panel
stdio-shim.cjs stdio ⇄ HTTP relay for Claude Desktop, run by Theseus in Node mode

Stored in <userData>/extensions-data/claude-connector.json (token, port, switches, approved origins, upload folders) and <userData>/extensions-data/claude-connector/ (endpoint.json while listening, actions.log).

Needs the host's tab-control capability, which only built-in add-ons get. Turning any extension on or off restarts every add-on, this one included, which ends the connected clients' sessions. A client that does not start a new session by itself reconnects from its MCP menu (/mcp in Claude Code).