Skip to main content

await SecretStore.create(**kwargs)

Create a new secret store.
name
str
required
Store name (unique per organization)
egress_allowlist
list[str] | None
Allowed egress hosts
Returns: dict

await SecretStore.list(**kwargs)

Returns: list[dict]

await SecretStore.get(store_id, **kwargs)

store_id
str
required
UUID of the secret store
Returns: dict

await SecretStore.update(store_id, **kwargs)

Partial updates — only the fields you pass are changed.
store_id
str
required
UUID of the store to update
name
str
New store name
egress_allowlist
list[str] | None
New allowed egress hosts
Returns: dict

await SecretStore.delete(store_id, **kwargs)

Deletes the store and all its secrets. Running sandboxes are not affected. Returns: None

await SecretStore.set_secret(store_id, name, value, **kwargs)

Set a secret. Encrypted at rest, never returned by API.
store_id
str
required
UUID of the secret store
name
str
required
Secret name (env var name in sandboxes)
value
str
required
Secret value
allowed_hosts
list[str] | None
Restrict to specific hosts
Returns: None

await SecretStore.list_secrets(store_id, **kwargs)

Returns metadata only. Values are never exposed. Returns: list[dict]

await SecretStore.delete_secret(store_id, name, **kwargs)

Returns: None

Using Secrets with Sandboxes

Using Secrets with Snapshots and Checkpoints

Snapshot template with secrets

Attach a secret store when creating a sandbox from a pre-built snapshot — even if the snapshot was built without one:

Checkpoint fork with secrets

Attach or layer a secret store when forking from a checkpoint:
When layered, secrets merge (fork’s store wins on collision) and egress allowlists aggregate.