quarkusio/quarkus · error · IllegalStateException

Proxy configuration name `none` has a special meaning and co

Error message

Proxy configuration name `none` has a special meaning and configuring it via quarkus.proxy."none".* options is not possible. Remove all quarkus.proxy."none".* keys from your configuration.

What it means

The name 'none' is reserved by the Quarkus proxy registry to mean 'no proxy'. During startup, ProxyConfigurationRecorder.init() rejects any user-defined proxy configuration named 'none' with an IllegalStateException, because it would conflict with that sentinel meaning.

Source

Thrown at extensions/proxy-registry/runtime/src/main/java/io/quarkus/proxy/runtime/ProxyConfigurationRecorder.java:34

@Recorder
public class ProxyConfigurationRecorder {
    private final RuntimeValue<ProxyConfig> runtimeConfig;

    public ProxyConfigurationRecorder(RuntimeValue<ProxyConfig> runtimeConfig) {
        this.runtimeConfig = runtimeConfig;
    }

    public Supplier<ProxyConfigurationRegistry> init() {
        ProxyConfig proxyConfig = runtimeConfig.getValue();

        Optional<ProxyConfiguration> defaultConfig = build("quarkus.proxy.", proxyConfig.defaultProxyConfig());

        Map<String, ProxyConfiguration> namedConfigs = new HashMap<>();
        for (Map.Entry<String, ProxyConfig.NamedProxyConfig> entry : proxyConfig.namedProxyConfigs().entrySet()) {
            String name = entry.getKey();
            if (ProxyConfigurationRegistry.NONE.equals(name)) {
                throw new IllegalStateException("Proxy configuration name `none` has a special meaning and configuring it"
                        + " via quarkus.proxy.\"none\".* options is not possible. Remove all quarkus.proxy.\"none\".* keys"
                        + " from your configuration.");
            }

            Optional<ProxyConfiguration> namedConfig = build("quarkus.proxy.\"" + name + "\".", entry.getValue());
            if (namedConfig.isPresent()) {
                namedConfigs.put(name, namedConfig.get());
            }
        }

        ProxyConfigurationRegistry registry = new ProxyConfigurationRegistryImpl(namedConfigs, defaultConfig);

        return new Supplier<ProxyConfigurationRegistry>() {
            @Override
            public ProxyConfigurationRegistry get() {
                return registry;
            }
        };

View on GitHub (pinned to e1c734241f)

Solutions

  1. Remove all quarkus.proxy."none".* keys from application.properties (and env/system properties)
  2. Rename the configuration to a non-reserved name, e.g. quarkus.proxy."myproxy".*
  3. To disable proxying for certain hosts, use the non-proxy-hosts setting of an existing proxy config instead

Example fix

// before
quarkus.proxy."none".host=proxy.example.com
quarkus.proxy."none".port=8080
// after
quarkus.proxy."corporate".host=proxy.example.com
quarkus.proxy."corporate".port=8080
Defensive patterns

Strategy: validation

Validate before calling

// config audit before startup
Set<String> names = config.getPropertyNames()
    .map(p -> p.startsWith("quarkus.proxy.") ? p : null)
    .filter(Objects::nonNull)
    .collect(java.util.stream.Collectors.toSet());
if (names.stream().anyMatch(p -> p.startsWith("quarkus.proxy.\"none\".") || p.startsWith("quarkus.proxy.none."))) {
    throw new IllegalArgumentException("Reserved proxy name 'none' must not be configured");
}

Type guard

static boolean isReservedProxyName(String name) {
    return ProxyConfigurationRegistry.NONE.equals(name);
}

Try / catch

try {
    application.start(); // or trigger recorder
} catch (IllegalStateException e) {
    if (e.getMessage() != null && e.getMessage().contains("`none`")) {
        throw new IllegalStateException("Remove quarkus.proxy.\"none\".* keys from configuration", e);
    }
    throw e;
}

Prevention

When it happens

Trigger: Defining configuration keys like quarkus.proxy."none".host=... in application.properties (or env vars such as QUARKUS_PROXY__NONE__HOST), so a named proxy config keyed 'none' exists at startup.

Common situations: Copy-pasting proxy config blocks and leaving the name 'none'; assuming 'none' disables the proxy when it is actually reserved; environment-specific configs adding a none entry.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/9b9139e0adfd4307. Report an issue: GitHub.