SandboxPool
SandboxPool is a Platform-scoped pool of Managed Agents self-hosted sandbox workers. The reconciler runs them as a Deployment on the dedicated, tainted sandbox node pool, locked down by a default-deny NetworkPolicy.
SandboxPoolSpec declares a pool of Managed Agents self-hosted sandbox workers for a `self_hosted` environment. The workers run Anthropic's `ant beta:worker`, claiming sessions from the environment's work queue and executing agent tool calls inside the cluster.
What kubectl get shows
| Column | Type | Meaning |
|---|---|---|
Platform | string | — |
Phase | string | — |
Ready | integer | — |
Spec
environmentIdstringrequiredEnvironmentID is the Managed Agents self_hosted environment whose work queue these workers drain (an `env_...` id).
environmentKeySecretobjectrequiredEnvironmentKeySecret holds ANTHROPIC_ENVIRONMENT_KEY — the worker's auth token, mounted into every worker pod.
keystringrequiredThe key of the secret to select from. Must be a valid secret key.
namestringdefault""Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
optionalbooleanSpecify whether the Secret or its key must be defined
platformRefobjectrequiredPlatformRef is the owning Platform. The pool's workers run in that Platform's tenant namespace and the pool gates on Platform readiness.
namestringrequired
apiKeySecretobjectAPIKeySecret holds the organization API key. It is consumed only by the work-queue autoscaler, never mounted into worker pods — Anthropic warns the org key must not be reachable by agent tool calls.
keystringrequiredThe key of the secret to select from. Must be a valid secret key.
namestringdefault""Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
optionalbooleanSpecify whether the Secret or its key must be defined
imagestringImage overrides the sandbox worker image. Defaults to the platform's published sandbox-worker image when empty.
resourcesobjectResources are the per-worker-pod resource requests and limits.
claims[]objectClaims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
2 fields under
claimsnamestringrequiredName must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.
requeststringRequest is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.
limitsobjectLimits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requestsobjectRequests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
runtimeClassNamestringRuntimeClassName selects a Kubernetes RuntimeClass for the worker pods — typically "gvisor" or "kata" for kernel-level isolation of the untrusted agent tool code. The named RuntimeClass must already exist in the cluster. Empty uses the cluster's default runtime.
scalingobjectScaling bounds the worker count.
maxReplicasinteger (int32)default10MaxReplicas is the worker-count ceiling for the autoscaler.
minReplicasinteger (int32)default1MinReplicas is the worker-count floor. A pointer so 0 (scale to zero, for the autoscaled path) is distinguishable from "field absent".
queueDepthTargetinteger (int32)default5QueueDepthTarget is the work-queue depth per worker the autoscaler aims for before adding workers.