windmill-labs/windmill · error
License can't be validated in Windmill CE
Error message
License can't be validated in Windmill CE
What it means
validate_license_key in windmill-api-settings is the CE stub for license key validation; the real implementation is enterprise-only. In an open-source build it always fails with 'License can't be validated in Windmill CE', returning no key info, no real quotas, and no offline metadata.
Source
Thrown at backend/windmill-api-settings/src/ee_oss.rs:17
#[cfg(feature = "private")]
#[allow(unused)]
pub use crate::ee::*;
#[cfg(not(feature = "private"))]
use anyhow::anyhow;
#[cfg(not(feature = "private"))]
pub async fn validate_license_key(
_license_key: String,
_db: Option<&windmill_common::DB>,
) -> anyhow::Result<(
String,
bool,
Option<windmill_common::ee_oss::OfflineMetadata>,
)> {
// Implementation is not open source
Err(anyhow!("License can't be validated in Windmill CE"))
}
View on GitHub (pinned to e474e8803c)
Solutions
- Use Windmill Enterprise Edition and a valid license key issued by Windmill to validate licenses
- On CE, remove the license key from instance settings and run without EE features
- Contact Windmill sales to obtain an EE license if EE features are needed
Defensive patterns
Strategy: try-catch
Validate before calling
// on CE builds, skip license calls entirely
let is_ee = instance_settings.license_key.is_some() && windmill_common::build_info().ee;
if !is_ee { return Ok(None); } Try / catch
match validate_license_key(&db, &key).await {
Ok(info) => info,
Err(e) if e.to_string().contains("can't be validated in Windmill CE") => {
tracing::info!("no license validation in CE build");
Default::default()
}
Err(e) => return Err(e),
} Prevention
- Gate license-management UI behind an EE capability check
- Don't persist license keys on CE deployments
- Document CE/EE feature boundaries for operators
When it happens
Trigger: Calling test_license_key (settings API or superadmin UI 'test license' action) on a community-edition Windmill instance with any license key string.
Common situations: Self-hosted CE user pastes a license key into instance settings expecting activation; CI test invoking the license endpoint on a CE build; migrating config from EE to CE.
Related errors
- trigger kind '${trigger.kind}' requires Enterprise
- Agent mode is only available in the EE, ignoring...
- External JWT auth is not open source
- License can't be validated in Windmill CE
- Invalid flow setting ${path}: ${issue?.message ?? 'unknown e
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/95f6556c6884d2b5.
Report an issue: GitHub.