Skip to content

Execution-backend sandboxing: pause/resume, declared capability manifest, close snapshot/restore gap #16867

Open
0 of 5 issues completed

Description

@mrveiss

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 DockerBackend overrides snapshot()/restore()/delete_snapshot() — every other backend silently inherits the NotImplementedError default (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 only SIGSTOP/SIGCONT usage is unrelated PTY job control in api/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 (/stats hardcoded "network_isolation": True regardless 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

Implementation Order

Wave 1 (parallel, no blockers): #16868, #16869, #16871, #16872
Wave 2 (data-gated, may resolve as not-needed): #16870

Acceptance Criteria

  • Every BackendType either implements snapshot/restore or documents why not, with an issue link
  • At least one backend supports pause/resume with a corresponding sandbox_health.py state
  • A single capability source is read by execution_manager.py routing, api/sandbox.py /stats, and api/sandbox_health.py instead of three independent derivations

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions