RFD: Sandbox Capability and Policy#1063
Open
visionik wants to merge 1 commit intoagentclientprotocol:mainfrom
Open
RFD: Sandbox Capability and Policy#1063visionik wants to merge 1 commit intoagentclientprotocol:mainfrom
visionik wants to merge 1 commit intoagentclientprotocol:mainfrom
Conversation
Contributor
|
@visionik hi! Have you considered having a special config option in Session Config Options? It could be a special flag, similar to how it's done for model and thinking level |
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.
Author: visionik (OpenClaw maintainer)
RFD file
docs/rfds/sandbox-capability-policy.mdx
Summary
Proposes two additive, capability-negotiated types and one relation:
SandboxCapability— advertised by the agent inAgentCapabilities.sandbox; static per agent; describes the isolation the runtime actually enforces (mode + filesystem/network/process-capability guarantees).SandboxPolicy— set by the client per session via the existingacp.sandboxSession Config Option; describes the isolation the operator requires for this session's work.satisfies(capability, policy)— a deterministic predicate the agent evaluates atsetSessionConfigOptiontime; rejects with a typedsandbox_policy_unsatisfiableerror carrying the agent's capability if the policy cannot be met.Motivation
ACP has no first-class model for sandbox isolation today. Implementers are reinventing it in incompatible ways:
_metaknobs without a schema. agentpool's community reference documentsclaude-code-acpusing_metainNewSessionRequestfor per-session configuration. Codex goes further: PR #17763 adds acodex/sandbox-state-metaexperimental capability that injectsSandboxStateinto_metaon MCP tool calls so MCPs can opt in to receiving sandbox config. These are not discoverable via capability negotiation, not versioned, and collide in namespace across agents.sandbox_modeas a localconfig.tomlkey (read-only/workspace-write/danger-full-access) but nothing about the agent's sandbox posture is surfaced over ACP. A client routing work to a Codex ACP session has no protocol-level way to know what isolation it is actually getting.sandbox="require"forruntime="acp"— documented in PR #32254 and GHSA-9q36-67vc-rrwg. A booleanrunsInSandboxflag would have the same problem: it cannot distinguish Docker from chroot from seccomp, or filesystem isolation from network isolation.The capability/policy split is the standard shape for this kind of check (LSP, MCP, WASI, Kubernetes RBAC) — this RFD proposes adopting it in ACP before the ecosystem fragments further.
Relationship to in-flight work
The RFD includes a full accounting of adjacent in-flight RFDs and maintainer priorities that OpenClaw intends to adopt. This proposal covers only the one gap where no existing work was found.
What's in the file
Full proposal including: elevator pitch, status quo with concrete failure modes, typed schema for both types, the
satisfiespredicate, rationale for Session Config Options placement, backward compatibility analysis, SDK rollout plan, open questions, FAQ (9 questions), and alternatives considered (5 alternatives with rejection rationale).