Dokploy/dokploy · error · TRPCError

FORBIDDEN

FORBIDDEN

Error message

Valid enterprise license required

What it means

The allForPermissions query is gated by an enterprise license check: hasValidLicense(activeOrganizationId) must return true. This endpoint (listing git providers for permission assignment) is a paid feature; without a valid license the middleware short-circuits with FORBIDDEN before the resolver runs.

Source

Thrown at apps/dokploy/server/api/routers/git-provider.ts:118

			}

			await audit(ctx, {
				action: "update",
				resourceType: "gitProvider",
				resourceId: provider.gitProviderId,
				resourceName: provider.name ?? provider.gitProviderId,
			});

			return await updateGitProvider(input.gitProviderId, {
				sharedWithOrganization: input.sharedWithOrganization,
			});
		}),

	allForPermissions: withPermission("member", "update")
		.use(async ({ ctx, next }) => {
			const licensed = await hasValidLicense(ctx.session.activeOrganizationId);
			if (!licensed) {
				throw new TRPCError({
					code: "FORBIDDEN",
					message: "Valid enterprise license required",
				});
			}
			return next();
		})
		.query(async ({ ctx }) => {
			return await db.query.gitProvider.findMany({
				columns: {
					gitProviderId: true,
					name: true,
					providerType: true,
				},
				orderBy: desc(gitProvider.createdAt),
				where: eq(gitProvider.organizationId, ctx.session.activeOrganizationId),
			});
		}),

View on GitHub (pinned to 546686ea35)

Solutions

  1. Purchase/renew a Dokploy enterprise license for the organization
  2. Verify the license key is correctly configured and active in instance settings
  3. If you don't need permission features, use the regular gitProvider.list endpoint instead
Defensive patterns

Strategy: validation

Validate before calling

const licensed = await trpc.license.hasValidLicense.query();
if (!licensed) throw new Error('enterprise license required for permission features');

Type guard

function isLicenseRequired(e: unknown): boolean {
  return e instanceof TRPCClientError && e.data?.code === 'FORBIDDEN' && /license required/.test(e.message);
}

Prevention

When it happens

Trigger: Calling the allForPermissions query on a self-hosted Dokploy without a purchased/active enterprise license, or with an expired license key for the active organization.

Common situations: Self-hosted community edition users discovering paid endpoints; expired license subscription; license key configured for a different organization.

Related errors


AI-assisted analysis of Dokploy/dokploy@546686ea35 (2026-08-27). Data as JSON: /api/errors/d3033fd9aa270643. Report an issue: GitHub.