Repository navigation
Execution-backend sandboxing: pause/resume, declared capability manifest, close snapshot/restore gap #16867
Copy link
Copy link
Open
0 / 50 of 5 issues completedOpen
Execution-backend sandboxing: pause/resume, declared capability manifest, close snapshot/restore gap#16867
0 / 50 of 5 issues completed
Copy link
Labels
agentsarea: agent-seamWave 3 · cluster H — Agent seam & tool governanceWave 3 · cluster H — Agent seam & tool governancebackenddockerenhancementNew feature or requestNew feature or requestpriority: mediumsecurity
Description
Problem
AutoBot's ExecutionBackend abstraction (autobot-backend/services/execution/base_backend.py) supports 5 backends (local/docker/ssh/modal/claude_code), but sandboxing is not fully implemented:
- Only
DockerBackendoverridessnapshot()/restore()/delete_snapshot()— every other backend silently inherits theNotImplementedErrordefault (base_backend.py:202-260). - There is no pause/resume lifecycle state anywhere in the execution-backend stack — confirmed via grep across
services/execution/*.py; the repo's onlySIGSTOP/SIGCONTusage is unrelated PTY job control inapi/terminal.py:622-623. - Capability facts (is this backend actually isolated? can it checkpoint?) are re-derived ad hoc per caller instead of read from one declared source — the same bug class that produced bug(backend): the docker SDK is imported by 5 production modules and declared in no requirements file #14872 (
/statshardcoded"network_isolation": Trueregardless of reality).
Comparative research against an external sandbox-orchestration reference (source anonymized per research policy) confirmed AutoBot's git-worktree task isolation (services/task_workspace.py) and centralized-secrets model are already equivalent-or-ahead of that design, and scoped the real gap to the four items below. Full writeup: docs/research/sandboxed-agent-vm-orchestration.md.
Tasks
- Task 1: Pause/resume primitive on
ExecutionBackend+DockerBackend→ Add pause/resume to ExecutionBackend + DockerBackend #16868 - Task 2: Declared per-backend capability manifest → Declared per-backend capability manifest for ExecutionBackend #16869
- Task 3: Bound Docker snapshot chain depth (auto-flatten) → Bound Docker snapshot chain depth (auto-flatten) #16870
- Task 4: Resolve silent snapshot/restore gap on local/ssh/modal/claude_code backends → Resolve silent snapshot/restore gap on local/ssh/modal/claude_code backends #16871
- Task 5: Regression test guarding docker/modal stay declared runtime dependencies → Regression test: docker/modal stay declared runtime dependencies #16872
Implementation Order
Wave 1 (parallel, no blockers): #16868, #16869, #16871, #16872
Wave 2 (data-gated, may resolve as not-needed): #16870
Acceptance Criteria
- Every
BackendTypeeither implements snapshot/restore or documents why not, with an issue link - At least one backend supports pause/resume with a corresponding
sandbox_health.pystate - A single capability source is read by
execution_manager.pyrouting,api/sandbox.py/stats, andapi/sandbox_health.pyinstead of three independent derivations
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
agentsarea: agent-seamWave 3 · cluster H — Agent seam & tool governanceWave 3 · cluster H — Agent seam & tool governancebackenddockerenhancementNew feature or requestNew feature or requestpriority: mediumsecurity
Activity
docs(research): land the sandboxed agent VM orchestration analysis (#…