{"record":{"id":"a9a28f2db4964ba9","repo":"paperclipai/paperclip","slug":"failed-to-ensure-managed-sandbox-environment-envi","errorCode":null,"errorMessage":"Failed to ensure managed sandbox environment: environment \"${input.name}\" already exists with driver \"${nameOwner.driver}\"","messagePattern":"Failed to ensure managed sandbox environment: environment \"(.+?)\" already exists with driver \"(.+?)\"","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/environments.ts","lineNumber":430,"sourceCode":"            ],\n            set: {\n              resourceId: environmentId,\n              stockVersion,\n              stockHash: installedStockHash,\n              defaultsJson,\n              updatedAt: new Date(),\n            },\n          });\n        };\n\n        if (!row) {\n          const nameOwner = await tx\n            .select()\n            .from(environments)\n            .where(eq(environments.name, input.name))\n            .then((rows) => rows[0] ?? null);\n          if (nameOwner && nameOwner.driver !== \"sandbox\") {\n            throw new Error(\n              `Failed to ensure managed sandbox environment: environment \"${input.name}\" already exists with driver \"${nameOwner.driver}\"`,\n            );\n          }\n          const now = new Date();\n          const inserted = await tx\n            .insert(environments)\n            .values({\n              name: input.name,\n              description: input.description ?? null,\n              driver: \"sandbox\",\n              status: \"active\",\n              config: desiredConfig,\n              envVars: {},\n              metadata: mergeManagedEnvironmentMetadata(null, desiredMetadata, keys),\n              createdAt: now,\n              updatedAt: now,\n            })\n            // Either the managed-slot partial index or the global name index","sourceCodeStart":412,"sourceCodeEnd":448,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/environments.ts#L412-L448","documentation":"Name-conflict guard in ensureManagedSandboxEnvironment: the desired managed sandbox name already belongs to an environment with a non-sandbox driver. The instance can have only one Paperclip-managed sandbox environment, and it cannot steal a name owned by another driver kind.","triggerScenarios":"Thrown at server/src/services/environments.ts:430 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a different environment name, or delete/rename the existing environment that owns the name."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}