Skip to main content
The declaw.openai module plugs declaw into the OpenAI Agents SDK as a sandbox backend. Agent authors keep their existing Agents-SDK code; the only change is handing a DeclawSandboxClient to the runner. Every tool the agent invokes — bash, read_file, write_file, apply_patch, pty_exec_start, etc. — runs inside the VM, with the full declaw security surface applied at the VM’s network boundary.

Install

Imports

Everything you need is available from a single namespace:

DeclawSandboxClient

The sandbox-provider class. backend_id = "declaw".
  • await client.create(*, options: DeclawSandboxClientOptions) -> SandboxSession
  • await client.delete(session) -> SandboxSession
  • await client.resume(state: DeclawSandboxSessionState) -> SandboxSession
  • client.deserialize_session_state(payload) -> DeclawSandboxSessionState

DeclawSandboxClientOptions

Pydantic frozen model. Every field declaw’s Sandbox.create accepts is exposed here, plus the individual security sub-configs as convenience shortcuts. Composition rule. If you pass a full SecurityPolicy via security=, we use it. Any per-field shortcut (e.g. pii=PIIConfig(...)) that’s also set overrides the matching sub-field on the composite policy. If neither is set, the sandbox runs with platform defaults.

DeclawSandboxSession

Returned from client.create() and client.resume(). Implements the BaseSandboxSession ABC — _exec_internal, read, write, running, persist_workspace, hydrate_workspace — plus a handful of declaw-specific conveniences:
Not available yet. The platform endpoint behind this returns 501 metrics collection not yet implemented, so metrics() currently fails. The method is part of the SDK surface, but there is no metrics data to retrieve.

DeclawSandboxSessionState

Serializable state for client.resume(). Carries:
  • sandbox_id: str — to reattach to a live sandbox.
  • snapshot_id: str | None — if set, resume() restores from a memory+disk snapshot (Sandbox.restore), otherwise it reattaches to a still-running sandbox (Sandbox.connect).
  • template: str, created_at: datetime.

Quick start

Security — exactly what the core SDK provides

The adapter does not introduce a parallel security path. Whatever you set in SecurityPolicy here is the same policy enforced by the sandbox’s edge proxy for any sandbox — the same six guardrail scanners, the same audit log entries, the same outcome. When the agent’s bash tool runs curl https://api.example.com/?email=alice@acme.com, the request is intercepted and scanned before it reaches the upstream. See Security → Overview for the full scanner list and policy reference.

Session resume

persist_workspace creates a declaw snapshot of memory + disk; the returned session state carries snapshot_id which client.resume() uses to restore the exact VM state later — in a different process, on a different machine, or across a cluster restart. Snapshots are persisted to the platform’s blob store (GCS in our managed cloud).

See also