Skip to content

Add isolated-write to the external providers, with an opt-in for unconfined ones #263

Closed

Description

@ericlitman

Current scope

Give every external provider an isolated-write mode, so it can serve as an arena runner and an interrogate adversary that runs code (#262).

Eric's decision, 2026-11-06:

  • A provider whose writes a real sandbox confines to the lane's worktree gets isolated-write by default.
  • A provider that cannot be confined gets write access only when the model sheet opts in, with a setting line like the existing codex writer sandbox: full-access. Setup warns that nothing stops a stray write. Each lane still runs in its own dedicated worktree, never the primary checkout.

What model-catalog.md says today:

  • dsh: read-only policy enforced by Seatbelt. A workspace-write policy may be a confined writer. Measure it.
  • Devin: with --sandbox, approved shell commands write in the cwd and the edit tools are rejected. Measure whether shell writes are confined, and whether a shell-only writer is enough for an adversary.
  • OpenCode: permission policy only, no OS sandbox. Measure.
  • Amp, Cursor CLI: writes escaped the cwd. These take the opt-in path.
  • Antigravity: no mode both edits and runs shell. Opt-in path, or a measured mode that works.

Acceptance:

  1. Each provider's catalog notes record its measured write mode, with the CLI version and the escape test that was run.
  2. The runner accepts isolated-write for each provider by the rules above, and refuses the opt-in-only providers without the sheet line.
  3. /setup-pstack asks about and warns on the opt-in line.
  4. Unit tests cover the access-mode rules. A live gate on pro14, where all of these CLIs are installed, runs one writer lane per provider.

Source: 2026-11-06 triage. Blocked by #262.

Execution brief

Second unit of the 2026-11-06 batch, after #262 merges. Run on pro14. Measure each CLI before writing its mapping.

Activity

  1. ericlitman commented on Nov 6, 2026

    @ericlitman
    OwnerAuthor

    PR: #268

  2. added a commit that references this issue on Nov 6, 2026
  3. ericlitman commented on Nov 6, 2026

    @ericlitman
    OwnerAuthor

    Batch 262 closeout for this issue (full record: https://github.com/mobilyze-llc/docs/blob/main/projects/open-pstack/records/2026-11-06-batch-262/closeout.md):

    #263: Add isolated-write to the external providers, with an opt-in for unconfined ones

    Original text: filed 2026-11-06 after Eric's answers: "our additional providers need write access, that solves the issue with us not being able to support some of upstream's new changes" and, for unconfined providers, "Opt-in unconfined (Recommended)". Shipped in PR #268 (merged head eefdd1f), fixes in #271.

    1. Each provider's catalog note records its measured write mode, CLI version and escape test: done as written for devin, dsh, opencode, agy, cursor and muse; Amp in Measure Amp's writer once Amp is logged in on pro14 #269.
    2. Runner accepts isolated-write by the rule and refuses opt-in-only providers without the sheet line: done as written (adapter suite tests).
    3. Setup asks about and warns on the opt-in line: done as written. Setup probes only opt-in writers in a disposable worktree, narrower than the design's "every assigned writer", which no acceptance line required.
    4. A live gate on pro14 with one writer lane per provider: done differently, split across two PRs. feat(runner): writers for external providers and a Muse Code provider (#263, #258) #268's gate (run 5 on eefdd1f) ran devin, dsh, opencode, agy, cursor and the Muse writer and reader; Amp's writer ran in feat(runner): an opted-in Amp writer, and per-provider writer cases (#269) #276 after Eric's login. Reader correction.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions