{"record":{"id":"1dcaacf4fc3ce41a","repo":"paperclipai/paperclip","slug":"cannot-capture-a-daytona-template-without-a-setup","errorCode":null,"errorMessage":"Cannot capture a Daytona template without a setup sandbox lease.","messagePattern":"Cannot capture a Daytona template without a setup sandbox lease\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/plugins/sandbox-providers/daytona/src/plugin.ts","lineNumber":2510,"sourceCode":"      driverKey: params.driverKey,\n      companyId: params.companyId,\n      environmentId: params.environmentId,\n      providerLeaseId: params.providerLeaseId,\n      config,\n    };\n    return await withSandboxActivityGate(scope, async () => {\n      const sandbox = await getSandboxOrNull(scope, { bypassTeardownGate: true });\n      if (!sandbox) {\n        return {\n          providerLeaseId: null,\n          status: \"missing\",\n          connectionSummary: null,\n          connectionPayload: null,\n          metadata: {\n            provider: \"daytona\",\n            missing: true,\n          },\n        };\n      }\n\n      await ensureSandboxStarted(sandbox, toTimeoutSeconds(config.timeoutMs));\n      const remoteCwd = await resolveSandboxWorkingDirectory(sandbox);\n    const shellCommand = await detectSandboxShellCommand(sandbox, toTimeoutSeconds(config.timeoutMs));\n    const connection = params.includeConnectionPayload === true\n      ? await createSshConnection(sandbox, resolveConnectionExpiresInMinutes(params.connectionExpiresInMinutes))\n      : {\n          connectionSummary: {\n            type: \"ssh\" as const,\n            username: \"token\",\n            hostRedacted: true,\n            portRedacted: true,\n            commandRedacted: true,\n            metadata: {\n              provider: \"daytona\",\n            },\n          },","sourceCodeStart":2492,"sourceCodeEnd":2528,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/packages/plugins/sandbox-providers/daytona/src/plugin.ts#L2492-L2528","documentation":"Precondition check in onEnvironmentCaptureTemplate: template capture was requested without a providerLeaseId, meaning there is no active interactive-setup sandbox lease to snapshot. Daytona can only capture a template from a live setup sandbox, so capture-from-nothing is rejected before the activity gate.","triggerScenarios":"Thrown at packages/plugins/sandbox-providers/daytona/src/plugin.ts:2393 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Start a setup sandbox lease before capturing a template."],"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"}