Skip to content

Sandbox transparency - #47

Open
61cygni wants to merge 7 commits into
mainfrom
sandbox-transparency
Open

Sandbox transparency#47
61cygni wants to merge 7 commits into
mainfrom
sandbox-transparency

Conversation

@61cygni

@61cygni 61cygni commented Jun 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add Exoclaw sandbox self-control tools for listing, snapshotting, and rewinding the active sandbox.
  • Preserve canonical sandbox lifecycle history by recording snapshot/rewind events through the active model turn.
  • Add Docker backend selection support for Exoclaw testing and fix Docker warm-sandbox discovery.
  • Harden Discord and IRC adapter workers against stream/socket errors observed during testing.
  • Add SELF-CONTROL.md documenting Exoclaw’s tool, adapter, and sandbox control model.

61cygni and others added 3 commits June 6, 2026 14:40
Expose sandbox snapshot and rewind tools for Exoclaw while preserving canonical sandbox lifecycle events during active turns. Add Docker backend selection fixes and adapter error hardening needed to exercise the workflow reliably.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bring the sandbox transparency branch up to date with main, preserving the Daytona backend refactor and the active-turn sandbox event handling.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bundle tool-round execution context so the active-turn sandbox event plumbing passes strict Clippy checks.

Co-authored-by: Cursor <cursoragent@cursor.com>
@61cygni
61cygni requested a review from ankrgyl June 6, 2026 21:50

@ankrgyl ankrgyl left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a change in #46 that I think is a better interface to the exoharness itself, which is to let it manage named sandboxes, and deal with how to give you back a handle to that sandbox inside the exoharness itself. That way, the notion of what the current agent has is irrelevant in the exoharness itself.

Comment thread crates/exoharness/src/types.rs Outdated
Comment on lines +134 to +138
#[derive(Clone)]
enum ActiveSandboxEventSink {
Turn(Arc<dyn TurnHandle>),
Suppressed,
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks like it shuold be in basic.rs. Types defines stuff that any exoharness implementation could use/inherit.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree.

Comment thread crates/exoharness/src/types.rs Outdated
}

tokio::task_local! {
static ACTIVE_SANDBOX_EVENT_SINK: ActiveSandboxEventSink;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks like it belongs in the harness. Remember the exoharness may need to be exposed over HTTP. So 'thread local' shouldn't be part of it.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup agree. Good point.

.arg(&snap_tag)
.stdout(Stdio::piped())
.stderr(Stdio::piped())
.kill_on_drop(true)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why change these semantics?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When testing with Docker, this prevented an orphaned, long-running docker save process (I exited right after issuing a snapshot).

61cygni and others added 4 commits June 7, 2026 14:16
Adopt main's reusable sandbox machinery while preserving Exoclaw's agent-owned sandbox controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep named sandbox reuse from replacing an active restored handle after rewind, and document that sandbox history remains append-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
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.

2 participants