Autonomous doesn't mean unsupervised.
The agent runs with the least access it needs: an ephemeral OpenShell sandbox per cycle, no push or review credentials inside it, and a record of everything it did.
Ephemeral OpenShell sandboxes
One sandbox per cycle, destroyed on exit, under a deny-by-default runtime policy. The agent never holds provider credentials.
Full audit trail
Every state transition, retry, and comment is recorded — nothing happens off the record.
You stay in control
Pause, resume, or abandon any task at any time. Nothing merges without your review process.
What the sandbox gets
Each cycle runs in an ephemeral OpenShell sandbox, created per cycle and destroyed on exit. Network, filesystem, process, and inference access are denied by default; the resolved policy grants only the declared exceptions. The orchestrator clones host-side, uploads the workspace, executes the agent, downloads the result, then pushes from the trusted host. Provider push and review credentials never enter the sandbox.
version: 1
filesystem_policy:
read_only: [/usr, /lib, /proc, /dev/urandom,
/app, /etc, /var/log]
read_write: [/sandbox, /tmp, /dev/null]
process:
run_as_user: sandbox
Boundaries
filesystem
Only /sandbox, /tmp and /dev/null are writable. A read_write entry naming /, /usr, /lib, /etc, /app, /bin, /sbin, /boot or /var is rejected.
process
Process access is denied by default and runs as the unprivileged sandbox user; enforceSandboxFloor re-asserts the floor after any policy override.
network
Network access is denied by default. Each run opens only the hosts its adapter declares through allowEgress.
credentials
The host owns all push and review credentials and runs the Git plumbing itself. They never enter the sandbox.
mcp surface
The internal VE MCP server exposes only ve_submit_review or ve_submit_changes — no network tools, no database, no Docker socket.
Audit log — task #4812
append-only
14:02:11
DETECTED
redmine#4812 assigned to virtual-engineer
14:02:14
CONTEXT_BUILDING
workspace cloned host-side, sandbox ve-a91c created
14:03:40
AGENT_RUNNING
patch generated, 3 files, 118 insertions
14:03:52
IN_REVIEW
merge request !219 opened on payments-api
14:06:03
REVIEW_VOTE
+1 with 2 inline comments
14:11:27
RETRY_CYCLE
feedback deduplicated, sandbox ve-b04f created
14:18:09
MERGED
merged by a.dupont — branch protection satisfied
Every cycle on the record
State transitions, retries, review votes, and comments are written to an append-only log tied to the task. Nothing is edited after the fact, so a task can be replayed exactly as it ran — including the cycles that failed.
Common questions
Can the agent merge its own work?
No. It opens the change and votes on review; merging goes through the same branch protection and approvals as any human contributor.
What happens if a cycle crashes mid-run?
SQLite runs in WAL mode and the state machine is persisted, so coding tasks resume at their last recorded state after a restart. AGENT_RUNNING restarts from scratch, since the sandbox is ephemeral.
How do we report a vulnerability?
Privately, to contact@savoirfairelinux.com rather than a public issue. Reports are acknowledged within 48 hours and assessed within 7 days.
Can we run it fully self-hosted?
Yes. The orchestrator, SQLite database, OpenShell gateway, and sandboxes all run on your infrastructure. Keep the Admin UI on loopback or behind a trusted reverse proxy.