paperclipai/paperclip · error

Failed to create environment

Error message

Failed to create environment

What it means

Generic guard in environment create: the INSERT ... RETURNING produced no row for reasons other than the mapped constraint conflicts (name uniqueness and local-driver uniqueness are handled explicitly above). Treats environment creation as failed rather than returning null.

Solutions

  1. Check server logs for the environment creation failure and fix the reported cause (config, driver, quota).
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at server/src/services/environments.ts:1041 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/04d460cb23dc8700. Report an issue: GitHub.

Appendix: source

Thrown at server/src/services/environments.ts:1099

          config: input.config ?? {},
          envVars: (input as CreateEnvironment & { envVars?: Record<string, unknown> }).envVars ?? {},
          metadata: input.metadata ?? null,
          createdAt: now,
          updatedAt: now,
        })
        .returning()
        .then((rows) => rows[0] ?? null)
        .catch((error) => {
          if (hasConstraintName(error, "environments_name_idx")) {
            throw conflict(`An environment named "${input.name}" already exists for this instance.`);
          }
          if (hasConstraintName(error, "environments_local_driver_idx")) {
            throw conflict("A local environment already exists for this instance.");
          }
          throw error;
        });
      if (!row) {
        throw new Error("Failed to create environment");
      }
      return toEnvironment(row);
    },

    update: async (
      id: string,
      patch: UpdateEnvironment,
      options?: { db?: EnvironmentWriteDb },
    ): Promise<Environment | null> => {
      const writeDb = options?.db ?? db;
      const values: Partial<typeof environments.$inferInsert> = {
        updatedAt: new Date(),
      };
      if (patch.name !== undefined) values.name = patch.name;
      if (patch.description !== undefined) values.description = patch.description ?? null;
      if (patch.driver !== undefined) values.driver = patch.driver;
      if (patch.status !== undefined) values.status = patch.status;
      if (patch.config !== undefined) values.config = patch.config;

View on GitHub (pinned to 3f1d897a7c)