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 (the other CE stub, identical in spirit to the settings one) always fails with 'License can't be validated in Windmill CE' because license validation logic is enterprise-only. Any API path calling validate_license_key on a CE build hits this error.
Source
Thrown at backend/windmill-api/src/ee_oss.rs:19
#[cfg(feature = "private")]
#[allow(unused)]
pub use crate::ee::*;
#[cfg(all(feature = "enterprise", not(feature = "private")))]
pub use windmill_api_auth::ee_oss::ExternalJwks;
#[cfg(not(feature = "private"))]
use anyhow::anyhow;
#[cfg(not(feature = "private"))]
pub async fn validate_license_key(
_license_key: String,
_db: Option<&crate::db::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"))
}
// interpolate moved to windmill-store/src/resources.rs
#[cfg(all(
feature = "enterprise",
any(feature = "nats", feature = "kafka", feature = "sqs_trigger")
))]
pub use windmill_store::resources::interpolate;
View on GitHub (pinned to e474e8803c)
Solutions
- Run the enterprise build to enable license validation
- Remove the stored license key from instance settings on CE deployments
- Obtain an EE deployment/license from Windmill if EE features are required
Defensive patterns
Strategy: try-catch
Validate before calling
// skip validation when running CE
if !windmill_common::build_info().ee {
return Ok(Default::default());
} 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") => {
Default::default() // CE: treat as unlicensed
}
Err(e) => return Err(e),
} Prevention
- Never set a license key on CE deployments
- Gate license endpoints behind build-capability checks
- Audit EE->CE downgrades and clear stale keys from the database
When it happens
Trigger: API calls or startup paths that validate the instance license key while running the open-source binary (no enterprise feature); e.g. instance settings endpoints verifying a stored key.
Common situations: CE deployment with an EE license key copied from another environment; automated tooling that unconditionally posts a license key; EE-to-CE downgrades leaving a license key in the database.
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
- Failed to re-run job ${id}.
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/3a10657a03ec0d81.
Report an issue: GitHub.