windmill-labs/windmill · error

Agent mode is only available in the EE, ignoring...

Error message

Agent mode is only available in the EE, ignoring...

What it means

Agent mode is an Enterprise Edition feature. When the binary is built without the `enterprise` feature, selecting `MODE=agent` panics with this message during startup mode parsing. The cfg-gated block means non-EE builds simply cannot run as agents.

Source

Thrown at backend/windmill-common/src/utils.rs:133

            } else if &x == "worker" {
                tracing::info!("Binary is in 'worker' mode");
                #[cfg(windows)]
                {
                    println!("It is highly recommended to use the agent mode instead on windows (MODE=agent) and to pass a BASE_INTERNAL_URL");
                }
                Mode::Worker
            } else if &x == "agent" {
                println!("Binary is in 'agent' mode with BASE_INTERNAL_URL={}", std::env::var("BASE_INTERNAL_URL").unwrap_or_default());
                if std::env::var("BASE_INTERNAL_URL").is_err() {
                    panic!("BASE_INTERNAL_URL is required in agent mode")
                }
                if std::env::var("AGENT_TOKEN").is_err() {
                    println!("AGENT_TOKEN is not passed. This is required for the agent to work and contains the JWT to authenticate with the server.")
                }

                #[cfg(not(feature = "enterprise"))]
                {
                    panic!("Agent mode is only available in the EE, ignoring...");
                }
                #[cfg(feature = "enterprise")]
                Mode::Agent
            } else if &x == "indexer" {
                tracing::info!("Binary is in 'indexer' mode");
                #[cfg(not(feature = "tantivy"))]
                {
                    eprintln!("Cannot start the indexer because tantivy is not included in this binary/image. Make sure you are using the EE image if you want to access the full text search features.");
                    panic!("Indexer mode requires compiling with the tantivy feature flag.");
                }
                #[cfg(feature = "tantivy")]
                Mode::Indexer
            } else if &x == "standalone+search"{
                search_addon = true;
                    println!("Binary is in 'standalone' mode with search enabled");
                    Mode::Standalone
            } else if &x == "mcp" {
                println!("Binary is in 'mcp' mode");

View on GitHub (pinned to e474e8803c)

Solutions

  1. Use an Enterprise Edition build of Windmill (built with the `enterprise` feature) to run agents
  2. On non-EE, replace MODE=agent with MODE=worker and configure the worker against the server directly
  3. Check the panic context: the message says "ignoring...", so on some paths the mode may fall back — verify which mode actually started in the logs

Example fix

// before (OSS build)
MODE=agent
// after (OSS build)
MODE=worker
# or obtain/use an EE build with the enterprise feature for agent mode
Defensive patterns

Strategy: validation

Validate before calling

# refuse agent mode on non-EE builds before startup
if [ "$MODE" = "agent" ]; then
  # e.g. check the binary edition
  windmill --version | grep -q ee || { echo "agent mode requires the EE build" >&2; MODE=worker; fi
fi

Prevention

When it happens

Trigger: Running a community-edition windmill binary (built without the `enterprise` cargo feature) with `MODE=agent` set.

Common situations: Using the OSS docker image or a locally built non-EE binary while copying EE deployment docs that use agent mode; forgetting that agent mode requires the EE build/license.

Related errors


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