feat(bounded-agent): finish enclave hardening - #6876
Merged
lpcox merged 5 commits intoAug 3, 2026
Conversation
Harden runtime capability reporting, authenticated ingress, staging and proxy isolation, and fail-closed Docker Sandbox handling. Add adversarial coverage, live Docker/gVisor smokes, the nine-cell runtime matrix, compiled agentic workflows, and operational threat-model documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 815c9ab8-b519-4fe8-918f-07124708a871
Contributor
Contributor
There was a problem hiding this comment.
Pull request overview
Hardens bounded-agent enclave ingress, runtime reporting, isolation checks, and operational validation across Docker, gVisor, and blocked sbx configurations.
Changes:
- Delays sbx readiness telemetry until authenticated ingress succeeds.
- Adds enclave, ingress, credential-isolation, and runtime-matrix coverage.
- Adds live smoke workflows and updates bounded-agent documentation.
Show a summary per file
| File | Description |
|---|---|
src/services/bounded-agent-service.test.ts |
Tests dedicated proxy credential isolation. |
src/commands/main-action.ts |
Records sbx ingress telemetry. |
src/bounded-agent/sbx-runner.test.ts |
Tests sbx runner lifecycle and isolation contract. |
src/bounded-agent/preflight.ts |
Rewrites shared preflight errors for bounded agents. |
src/bounded-agent/preflight.test.ts |
Tests bounded-agent-specific errors. |
src/bounded-agent/manager.ts |
Defers sbx readiness reporting. |
src/bounded-agent/manager.test.ts |
Tests minimal staging environment. |
src/bounded-agent/ingress-conformance.test.ts |
Tests Unix/TCP ingress parity and authentication. |
scripts/ci/smoke-bounded-agent-enclave.sh |
Adds live enclave isolation smoke. |
scripts/ci/report-bounded-agent-runtime-matrix.test.ts |
Tests executable sbx capability gating. |
scripts/ci/report-bounded-agent-runtime-matrix.js |
Requires real sbx ingress proof. |
scripts/ci/probe-bounded-agent-primary-sbx.js |
Adds primary-sbx ingress probe. |
README.md |
Links bounded-agent documentation. |
docs/bounded-agents.md |
Clarifies sbx limitations and authority boundaries. |
docs/awf-config-spec.md |
Corrects sbx lifecycle claims. |
.github/workflows/test-bounded-agent-runtime-matrix.yml |
Adds runtime matrix CI. |
.github/workflows/smoke-bounded-agents.md |
Adds Docker scheduled smoke source. |
.github/workflows/smoke-bounded-agents.lock.yml |
Compiles Docker smoke workflow. |
.github/workflows/smoke-bounded-agents-gvisor.md |
Adds gVisor scheduled smoke source. |
.github/workflows/smoke-bounded-agents-gvisor.lock.yml |
Compiles gVisor smoke workflow. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 20/20 changed files
- Comments generated: 3
- Review effort level: Balanced
Exercise the production-style direct API-proxy endpoint instead of relying on Docker DNS inside gVisor, while exposing only content-free failure dimensions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 815c9ab8-b519-4fe8-918f-07124708a871
Include the live enclave smoke script in the runtime matrix path filter so security-test changes cannot evade CI. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 815c9ab8-b519-4fe8-918f-07124708a871
Integrate the updated sbx backend base while retaining the executable primary-sbx ingress probe, final adversarial coverage, CI matrix, and hardening documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 815c9ab8-b519-4fe8-918f-07124708a871
Contributor
|
✅ Copilot review passed with no inline comments. @lpcox Add the |
Exercise the exact primary-sbx probe command emitted by the reconciled runtime-matrix collector. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 815c9ab8-b519-4fe8-918f-07124708a871
Collaborator
Author
|
@copilot Fix the code for all comments in this review thread. When a review comment includes a suggested change, apply the suggestion exactly. Do not make changes beyond what is described in the linked review thread. |
This was referenced Aug 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Finishes the bounded-agent stack with an independent hardening pass over staging, authenticated broker ingress, runtime capability reporting, dedicated API-proxy authority, enclave lifecycle behavior, CI/runtime coverage, and operational documentation.
This layer fixes all seven actionable review findings from PR #6874:
Stack
Target:
lpcox-bounded-agent-sbx-backend. This branch started from requested commit46d32011a4b15e0489333c8688a97fd2d947d6bband has reconciled the base's subsequent review-fix commit0fd002e1231235f7c5206b55980a8b8bd049292a.Runtime matrix
runscis registeredrunscis registeredrunscis registeredrunscBLOCKEDis a capability result, never a fallback or false pass. The audited local Docker Sandbox plugin (docker sandboxv0.12.0) still cannot prove pinned AWF templates, explicit read-only guest mount targets, hard API-proxy-only/lateral-denial network policy, CPU/memory/PID/disk/per-file limits, and the complete deterministic lifecycle required for bounded-agent sbx enclaves.Threat-model hardening
gh, safe-output channel, MCP gateway, primary-agent peer, Squid, Docker socket, home state, or sibling repository enters the enclaveValidation
release/awf-bundle.js)SUPPORTEDBLOCKEDbecauserunscis not registered on the local hostrunsc: passedSUPPORTED; every unavailable runtime cell explicitlyBLOCKEDlpcox-bounded-agent-sbx-backend: clean and conflict-freeNotes
Repository dependency installation was unavailable from the configured/fallback registries for several future-pinned package versions, so local TypeScript, Jest, ESLint, Markdown, and bundle validation used isolated compatible tool dependencies without modifying package manifests or lockfiles.