paperclipai/paperclip · error

Daytona syncOut requires a provider lease ID.

Error message

Daytona syncOut requires a provider lease ID.

What it means

Precondition check in onEnvironmentSyncOut: params.lease carries no providerLeaseId, so there is no concrete Daytona sandbox to download from. The native outbound transfer needs a live lease to resolve a cached sandbox handle, so the hook rejects the call instead of attempting a leaseless transfer.

Solutions

  1. Provide a provider lease ID on the lease metadata before syncOut.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/plugins/sandbox-providers/daytona/src/plugin.ts:2645 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/33d1e97ea24e872e. Report an issue: GitHub.

Appendix: source

Thrown at packages/plugins/sandbox-providers/daytona/src/plugin.ts:2762

      // command) that runs before the run opens its trace root. Opening the
      // session there would emit a `session.open` span with no run parent, and
      // the span backend would drop it. With the bypass the session opens on the
      // first in-run command, whose open span parents to the run trace.
      let result: PluginEnvironmentExecuteResult;
      if (!params.bypassSession) {
        const sessionId = await getOrCreateSession(sandbox, scope);
        result = await executeInSession(sandbox, sessionId, params, config);
      } else {
        result = await executeOneShot(sandbox, params, config);
      }
      if (!result.timedOut) {
        sandboxHandleCache.markFresh(scope);
      }
      return {
        ...result,
        metadata: { ...(result.metadata ?? {}), getDurationMs, cacheHit },
      };
    });
  },

  async onEnvironmentRunnerIngressEndpoint(
    params: PluginEnvironmentRunnerIngressEndpointParams,
  ): Promise<PluginEnvironmentRunnerIngressEndpoint> {
    if (params.port !== 43_127) {
      throw new Error("Daytona runner ingress must use fixed port 43127.");
    }
    if (!/^\/api\/runner\/v1\/connect\/[^/?#]+$/.test(params.path)) {
      throw new Error("Daytona runner ingress path is invalid.");
    }
    const providerLeaseId = params.lease.providerLeaseId;
    if (!providerLeaseId) {
      throw new Error("Daytona runner ingress requires a provider lease id.");
    }
    const config = parseDriverConfig(params.config);
    return await withSandboxActivityGate(
      {

View on GitHub (pinned to 3f1d897a7c)