{"record":{"id":"bca4599edffe3591","repo":"paperclipai/paperclip","slug":"daytona-template-deletion-requires-daytonaio-sdk","errorCode":null,"errorMessage":"Daytona template deletion requires @daytonaio/sdk snapshot.get/delete support.","messagePattern":"Daytona template deletion requires @daytonaio/sdk snapshot\\.get/delete support\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/plugins/sandbox-providers/daytona/src/plugin.ts","lineNumber":2618,"sourceCode":"        metadata: {\n          provider: \"daytona\",\n          missing: true,\n          reason: params.reason ?? null,\n        },\n      };\n    }\n    const scope: SandboxScope = {\n      driverKey: params.driverKey,\n      companyId: params.companyId,\n      environmentId: params.environmentId,\n      providerLeaseId: params.providerLeaseId,\n      config,\n    };\n    // C4: cancelling an interactive-setup lease deletes the sandbox, so the\n    // teardown gate blocks fresh cache reads while delete is in flight.\n    const teardownGate = sandboxHandleTeardownGates.begin(scope);\n    sandboxHandleLeaseAdmissionStates.close(scope);\n    try {\n      const sandbox = await getSandboxOrNull(scope, { bypassTeardownGate: true });\n      if (!sandbox) {\n        return {\n          status: \"missing\",\n          metadata: {\n            provider: \"daytona\",\n            missing: true,\n            reason: params.reason ?? null,\n          },\n        };\n      }\n      evictSandboxHandle(scope);\n      await sandboxHandleActivityGates.waitForIdle(scope);\n      await teardownSession(sandbox, scope);\n      await sandbox.delete(toTimeoutSeconds(config.timeoutMs));\n      return {\n        status: params.reason === \"timed_out\" ? \"timed_out\" : \"cancelled\",\n        metadata: {","sourceCodeStart":2600,"sourceCodeEnd":2636,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/packages/plugins/sandbox-providers/daytona/src/plugin.ts#L2600-L2636","documentation":"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.","triggerScenarios":"Thrown at packages/plugins/sandbox-providers/daytona/src/plugin.ts:2501 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Upgrade @daytonaio/sdk to a version with snapshot.get/delete support."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}