GITHUB_ORG in the image registry examples with your GitHub Container Registry organization or user name.
To apply an example, follow Update a policy. Read the current policy and its etag together, then prepare the complete policy document and submit it with the etag from that read. Replacing the root policy clears any omitted groups, so retain every setting you want to preserve.
GPU data science cluster
A cluster for long-lived per-user work: generous compute, GPU Nodes, and internet access for pulling datasets and packages, with the instance metadata endpoint excluded.policy.json
cw-kata-qemu as the default CPU runtime class and permits explicit runtime class pins only for cw-kata-qemu. For GPU sandboxes, leave runtime_class and defaultGpuRuntimeClass unset. Use it with the supported CoreWeave Kubernetes Service (CKS) GPU configuration described in Run a GPU sandbox. GPU sandboxes in that configuration use runc without virtualization and must run only trusted code. Kata-based GPU runtime classes aren’t supported on customer CKS clusters.
Shared agent cluster with allowlisted egress
A multi-tenant cluster for agent workloads. Agents reach a fixed set of upstreams and each other within the organization, and nothing else.policy.json
Ephemeral CI cluster
Short-lived, small, and narrow. Sandboxes exist for the length of a test run.policy.json
max_lifetime_seconds on the create request.
VM-isolated execution with no default egress
This policy requires virtual machine (VM) isolation, forbids GPU requests, and supplies no default egress rules. It blocks outbound DNS traffic on UDP/TCP port53, but permits sandboxes to declare other egress because allowedEgress is empty.
policy.json
allowedImages pins one image rather than a registry, so a sandbox can’t select an arbitrary image from a trusted registry.
Internal worker cluster
Long-running background workers that other sandboxes in the organization reach over a service, with outbound access for third-party API calls.policy.json
This example sets egress only. To constrain inbound access to
CUSTOM-visibility ports, add allowedIngress and, if needed, defaultIngress. See Constrain network access.Pin admin defaults with the base layer
Any of the previous policies can also carry abase fragment: admin attachments applied to every sandbox on the runner, whatever it asks for. This variant of the internal worker policy pins Node selection, a pull Secret for the private registry, and a cost-attribution label on all sandboxes.
policy.json
base fragment is a Kubernetes Pod-specification subset, and unknown keys are rejected. Both base and constraints use camelCase keys in this JSON example. It accepts scheduling and runtime configuration only: nodeSelector, tolerations, imagePullSecrets, volumes, topologySpreadConstraints, hostAliases, DNS settings, a single containers entry limited to name, env, envFrom, volumeMounts, and volumeDevices, and Pod labels and annotations. Security-sensitive fields are rejected: securityContext, runtimeClassName, initContainers, affinity, host namespaces, hostPath volumes, non-default ServiceAccounts, and namespace, which stays runner-owned. Typed concerns such as lifetime, images, and egress belong in constraints, not in base.
On a CKS cluster, template attachments specialize this fragment per template: imagePullSecrets and tolerations are unioned and deduplicated, other lists append, map keys are overridden per key, and same-name conflicts reject the create. For the current enforcement status of base, see the base layer.
Vary the posture across clusters
Because a policy belongs to a cluster, different postures are different clusters rather than different documents on one cluster. A team that needs both an open data science environment and a locked-down execution environment runs two clusters and gives each the matching policy. To vary one dimension by region, apply the same policy to each cluster with the region-specific values changed. No shared or inherited policy document exists, so keep the source of truth in version control and apply it per cluster.See also
For related guidance, see the following pages:- Configure a sandbox policy: every constraint group, with the fields used in these examples.
- Policies overview: how a sandbox resolves against a policy.
- Agentic RL training: reward functions and multi-turn agent rollouts, with working Python.
- Deploy and manage a runner: the rest of the runner configuration.