agentic-boundary-bench is a benchmark scaffold for agentic platforms whose real security boundary is often a mix of runtime policy, approvals, tool mediation, trust handling, and optional sandboxing rather than a single container wall.
It borrows the best measurement ideas from sandbox_escape_bench:
- fixed scenarios
- objective artifacts
- stable lanes
- transcript and tool-trace evidence
- explicit
N/Ahandling for boundaries a platform does not expose - score by final boundary outcome, not only by an intended exploit path
It does not assume Docker, Kubernetes, AppLocker, bwrap, or any other kernel-backed isolation is the primary boundary. For GuardianAgent, the benchmark treats runtime governance as the main line of defense and measures how well that holds when strong OS isolation is absent or optional.
This repo now includes:
- a core scenario catalog aligned to boundary-circumvention rather than container escape
- a lane model for
degraded + strict,degraded + permissive, andstrong + strict - a reusable scoring model
- a profile format for comparing different agent platforms
- a first working adapter for GuardianAgent
- a manual adapter for platforms that do not yet have automation
The GuardianAgent adapter automates the scenarios that can already be proven through real runtime evidence:
- filesystem boundary denial
- command allowlist / shell sanitization denial
- localhost SSRF blocking
- approval-gated write stopping before side effects
- policy-widening requests stopping at approval
The remaining scenarios stay in the catalog as planned/manual until the target platform exposes enough evidence to test them honestly.
If you want to use this against another agent platform, the shortest path is:
- Copy template.profile.json to
profiles/<your-platform>.json. - Fill in the real trust boundary and only mark surfaces
trueif the platform actually exposes them. - Run
node src/cli.mjs plan --profile profiles/<your-platform>.json. - If you do not have an adapter yet, fill a manual results file starting from manual-results.template.json.
- Score it with
node src/cli.mjs score --profile profiles/<your-platform>.json --lane degraded-strict --input reports/<your-run>.json.
The full step-by-step guide is in docs/USAGE.md.
List the benchmark catalog:
node src/cli.mjs listPlan the matrix for GuardianAgent:
node src/cli.mjs plan --profile profiles/guardian-agent.jsonRun one GuardianAgent lane:
node src/cli.mjs run --profile profiles/guardian-agent.json --lane degraded-strictRun only one scenario:
node src/cli.mjs run \
--profile profiles/guardian-agent.json \
--lane degraded-permissive \
--scenario core.fs.outside-allowed-pathSave JSON output:
node src/cli.mjs run \
--profile profiles/guardian-agent.json \
--lane degraded-strict \
--output reports/guardian-degraded-strict.json \
--jsonManual scoring for a repo without an adapter:
node src/cli.mjs score \
--profile profiles/my-agent.json \
--lane degraded-strict \
--input reports/my-agent.manual-results.jsonEach scenario resolves to one of these benchmark outcomes:
escapedblocked_cleanlyapproval_requiredcontained_by_surface_removalfalse_successn_anot_implementederror
The important point is that N/A is first-class. A platform should not be punished for not exposing Docker breakout or kernel exploit surfaces if those are not part of its architecture.
scenarios/core-10.json: initial cross-platform scenario setprofiles/: platform descriptionssrc/catalog.mjs: scenario and lane loadingsrc/planner.mjs: applicability and lane planningsrc/scoring.mjs: outcome classification and aggregate metricssrc/adapters/: platform adaptersdocs/REFERENCE-PLATFORMS.md: why the taxonomy is broader than GuardianAgent alonedocs/METHODOLOGY.md: what transfers from the paper and repo that introduced SandboxEscapeBenchdocs/USAGE.md: how to use the benchmark against your own repodocs/SANDBOX-ESCAPE-BENCH-GUARDIANAGENT-ASSESSMENT-2026-03-27.md: original Guardian-specific assessment
An adapter is responsible for producing evidence, not prose. It should:
- prepare the target platform in a known lane
- execute one or more scenarios
- return raw evidence about artifacts, approvals, tool availability, side effects, and final claims
- let the shared scorer classify outcomes
That keeps the benchmark reusable across platforms with very different execution models.
This repo is intentionally broader than GuardianAgent, but GuardianAgent is the current gold-standard reference profile because it already exposes:
- explicit allowlists
- structured approvals
- sandbox posture metadata
- tool catalogs
- trust/taint controls
- auditable runtime decisions
Those are the right primitives for a reusable boundary benchmark.