Skip to content

docs(adr): agent-consoles Part D — Studio-brokered fs, exec-backed (MCP = federation fallback) - #71

Merged
brettchien merged 1 commit into
mainfrom
docs/adr-fs-exec-broker
Aug 17, 2026
Merged

docs(adr): agent-consoles Part D — Studio-brokered fs, exec-backed (MCP = federation fallback)#71
brettchien merged 1 commit into
mainfrom
docs/adr-fs-exec-broker

Conversation

@brettchien

Copy link
Copy Markdown
Contributor

What

Revises the remote file editor (Part D) backend after the follow-up design call. fs stays Studio-brokered — the management agent never holds a target's credential; the oab grant stays management-only — but the backend is chosen by one axis: does Studio own the target's runtime?

This supersedes the Part D mechanism locked in #70 (fs = a target-exposed MCP server as the sole backend).

The decision

  • Backend 1 — Studio platform-exec (primary; every agent in the fleet today). Studio reaches the target's filesystem via the orchestrator's exec channel — ECS ExecuteCommand (SSM) / k8s pods/exec — using a control-plane credential it already holds (it is the plane that scales these services). Ships now, no openab dependency; covers 100% of the current fleet.
  • Backend 2 — target-hosted fs MCP server (fallback; federation). For an agent Studio can reach only over /acp but whose platform it does not own, fs rides a small files server the agent exposes, relayed through oab. The previously-decided MCP mechanism; depends on openab, deferred until such an agent exists — exec can't reach a platform Studio doesn't own.

Unchanged: the Studio-brokered topology and the actor (management agent + UI hit one Studio fs surface). The rejected alternative is handing the agent the exec credential / each target's bearer directly — that concentrates cluster-grade RCE in an LLM.

The trade the exec backend buys (stated plainly)

  • Enforcement moves resource → Studio. The MCP server enforces roots/writable at the resource; exec has no OS root-fence, so with exec these become Studio-side path validation + argv-form exec — advisory, not resource-enforced. A Studio path-validation bug = full-container write. Mitigations: canonicalization + prefix checks, argv-form (no shell-string interpolation), writable default-off, explicit Apply.
  • A control-plane credential enters the fs path — the very credential the earlier draft kept fs away from. Held only by Studio's broker, never granted to an agent. Accepted for owned runtimes because Studio is already that control plane (same trust tier, not a new principal).

Sections touched

  • §5 Part D — rewritten around the two-backend model + the deciding axis.
  • §6 / §7 — read+write now ship over exec for owned runtimes (no openab); the MCP server becomes the deferred federation fallback; security consequences updated (enforcement locus, control-plane cred in the fs path).
  • §8 — OQ#1 re-resolved (two backends); new OQ#2 on the exec backend's enforcement locus.
  • Closing slices — (4) read+write over the exec backend (no openab), (5) federation MCP backend when a Studio-un-owned agent needs it.

Docs-only.

🤖 Generated with Claude Code

…eration fallback)

Revises the remote file editor's backend after the design call. fs stays
Studio-brokered (agent never holds the credential; `oab` grant stays
management-only), but the backend is chosen by one axis — **does Studio
own the target's runtime?**

- Backend 1 (primary, every agent in the fleet today): Studio's platform
  exec channel — ECS `ExecuteCommand` / k8s `pods/exec` — with a control-
  plane credential Studio already holds. Ships now, no openab dependency.
- Backend 2 (fallback, federation): the target-hosted fs MCP server over
  the `oab` relay, for an agent Studio can reach only over `/acp` but whose
  platform it does not own. Depends on openab; deferred until such an agent
  exists.

Consequence: the fleet's fs write is no longer gated on an upstream fs
server — that item drops from "gating dependency" to "federation fallback."
The trade the exec backend buys, stated plainly: gating (`roots`/`writable`)
becomes Studio-enforced (path validation + argv-form exec), not resource-
enforced, and a control-plane credential enters the fs path — held only by
Studio's broker, never by an agent.

- §5 Part D rewritten around the two-backend model + the deciding axis.
- §6/§7 re-pointed: read+write ship over exec for owned runtimes; the MCP
  server is the deferred federation fallback; security consequences updated
  (enforcement locus, control-plane cred in the fs path).
- §8: OQ#1 re-resolved (two backends); new OQ#2 on the exec backend's
  enforcement locus. Closing slices: (4) read+write over exec (no openab),
  (5) federation MCP backend when needed.

Supersedes the Part D mechanism locked in #70 (fs = target-exposed MCP
server as the sole backend).

Docs-only.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@brettchien
brettchien merged commit e85111c into main Aug 17, 2026
1 check passed
@brettchien
brettchien deleted the docs/adr-fs-exec-broker branch August 17, 2026 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant