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
- Purchase/renew a Dokploy enterprise license for the organization
- Verify the license key is correctly configured and active in instance settings
- 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
- Gate enterprise endpoints behind a license check in the UI
- Renew licenses before expiry; use free alternatives for basic listing
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.