paperclipai/paperclip · error
Daytona template deletion requires @daytonaio/sdk…
Error message
Daytona template deletion requires @daytonaio/sdk snapshot.get/delete support.
What it means
SDK capability probe in onEnvironmentDeleteTemplate: the loaded @daytonaio/sdk client does not expose the snapshot.get/snapshot.delete methods required to remove a snapshot template. Fires on SDK versions without snapshot management support — upgrade @daytonaio/sdk to delete templates.
Solutions
- Upgrade @daytonaio/sdk to a version with snapshot.get/delete support.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/plugins/sandbox-providers/daytona/src/plugin.ts:2501 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-08-18).
Data as JSON: /api/errors/bca4599edffe3591.
Report an issue: GitHub.
Appendix: source
Thrown at packages/plugins/sandbox-providers/daytona/src/plugin.ts:2618
metadata: {
provider: "daytona",
missing: true,
reason: params.reason ?? null,
},
};
}
const scope: SandboxScope = {
driverKey: params.driverKey,
companyId: params.companyId,
environmentId: params.environmentId,
providerLeaseId: params.providerLeaseId,
config,
};
// C4: cancelling an interactive-setup lease deletes the sandbox, so the
// teardown gate blocks fresh cache reads while delete is in flight.
const teardownGate = sandboxHandleTeardownGates.begin(scope);
sandboxHandleLeaseAdmissionStates.close(scope);
try {
const sandbox = await getSandboxOrNull(scope, { bypassTeardownGate: true });
if (!sandbox) {
return {
status: "missing",
metadata: {
provider: "daytona",
missing: true,
reason: params.reason ?? null,
},
};
}
evictSandboxHandle(scope);
await sandboxHandleActivityGates.waitForIdle(scope);
await teardownSession(sandbox, scope);
await sandbox.delete(toTimeoutSeconds(config.timeoutMs));
return {
status: params.reason === "timed_out" ? "timed_out" : "cancelled",
metadata: {View on GitHub (pinned to 3f1d897a7c)