You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Scoped remote access: per-device permissions and OAuth for outside agents #1530
Solenta Web pairs devices with one full-access, revocable token each (electron/webDevices.js:155); there are no scope fields. External MCP pairing (electron/pairing.js:24) has 4 capabilities (read/launch/steer/read_all), but no OAuth and no per-tool declaration. Hosted agents (ChatGPT, cloud bots) can't connect, and a paired phone can do everything the desktop can.
Proposal (M):
Device scopes at pairing time: Read only / Steer threads / Full. Separate grants for file write, git write (commit/push/merge), terminal (observe vs type), preview control and settings. Enforce them on the host per IPC channel, not in the UI.
Every orchestration MCP tool declares the capability it needs; calls without it fail closed.
OAuth 2.1 (PKCE) on the MCP endpoint so hosted agents can sign in, plus a "Copy MCP URL" button next to the existing token/JSON copy (IntegrationsSection.tsx:194-217).
Parts 1-2 are done on branch coder/scoped-remote-access-per-device-permissi-93c3a4. Part 3 (OAuth) moves to #1541: the MCP endpoint listens only on loopback, so OAuth alone doesn't let hosted agents in.
Device scopes (electron/webScopes.js):
Presets: Read only, Steer threads, Full.
Extra grants: files, git, terminal (watch or type), preview, settings.
All 280 IPC channels are classified, and an unlisted channel needs full.
webBridge.js checks the scope before any handler runs and filters terminal:data pushes.
Devices paired before this change keep full access, as does the legacy token.
External MCP tools: each one declares its capability in EXTERNAL_TOOLS. The pairing only sees tools it holds, and every call re-checks.
UI:
Add device has a scope picker, and each device row shows what it may do.
Activity
currentbits commentedon Oct 9, 2026
Parts 1-2 are done on branch
coder/scoped-remote-access-per-device-permissi-93c3a4. Part 3 (OAuth) moves to #1541: the MCP endpoint listens only on loopback, so OAuth alone doesn't let hosted agents in.electron/webScopes.js):webBridge.jschecks the scope before any handler runs and filtersterminal:datapushes.EXTERNAL_TOOLS. The pairing only sees tools it holds, and every call re-checks.Guard readImage paths and keep permission-mode changes at full (#1530 …
Scoped Solenta Web devices and capability-declared MCP tools (#1530) (#…
currentbits commentedon Oct 9, 2026
Parts 1-2 merged in #1545 (
876cb44).The review found two problems, both fixed before merge:
attachments:readImagenow only serves images under attachments, worktrees or project folders unless the device has full access.threads:setPermissionModenow needs full access.OAuth continues in #1541.
currentbits commentedon Oct 9, 2026
Landed from Solenta thread "Scoped remote access: per-device permissions and OAuth for o" (PR #1545). Closed on merge.
Scoped Solenta Web devices and capability-declared MCP tools (#1530)
Guard readImage paths and keep permission-mode changes at full (#1530 …