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

  1. Run the enterprise build to enable license validation
  2. Remove the stored license key from instance settings on CE deployments
  3. 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

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


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/3a10657a03ec0d81. Report an issue: GitHub.