{"record":{"id":"da57f9479aa01dbc","repo":"quarkusio/quarkus","slug":"the-spiffe-client-extension-does-not-support-unix","errorCode":null,"errorMessage":"The SPIFFE client extension does not support unix transport on Windows, use tcp instead.","messagePattern":"The SPIFFE client extension does not support unix transport on Windows, use tcp instead\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"extensions/spiffe-client/deployment/src/main/java/io/quarkus/spiffe/client/deployment/SpiffeDevServicesProcessor.java","lineNumber":85,"sourceCode":"    void startDevService(SpiffeClientBuildTimeConfig config,\n            BuildProducer<DevServicesResultBuildItem> devServicesResultProducer,\n            LaunchModeBuildItem launchModeBuildItem) {\n        if (ConfigProvider.getConfig().getOptionalValue(ENDPOINT_SOCKET_CONFIG_KEY, String.class).isPresent()) {\n            LOG.debug(\"SPIFFE endpoint socket already configured, skipping SPIFFE Dev Services\");\n            return;\n        }\n        if (launchModeBuildItem.getLaunchMode().isRemoteDev()) {\n            LOG.warn(\"SPIFFE Dev Services is not supported in the remote development mode\");\n            return;\n        }\n        Transport transport = config.devservices().transport().orElseGet(() -> {\n            if (OS.WINDOWS.isCurrent()) {\n                return Transport.TCP;\n            }\n            return Transport.UNIX;\n        });\n        if (transport == Transport.UNIX && OS.WINDOWS.isCurrent()) {\n            throw new ConfigurationException(\n                    \"The SPIFFE client extension does not support unix transport on Windows, use tcp instead.\");\n        }\n        devServicesResultProducer.produce(\n                DevServicesResultBuildItem.<SpiffeWorkloadApiDevServer> owned()\n                        .feature(SpiffeClientProcessor.FEATURE)\n                        .serviceConfig(config.devservices().hashCode())\n                        .startable(() -> new SpiffeWorkloadApiDevServer(transport, config.devservices().httpPort()))\n                        .configProvider(Map.of(\n                                ENDPOINT_SOCKET_CONFIG_KEY, Startable::getConnectionInfo,\n                                BASE_URL_CONFIG_KEY, SpiffeWorkloadApiDevServer::baseUrl))\n                        .postStartHook(server -> {\n                            if (!server.errorMessages.isEmpty()) {\n                                for (String errorMessage : server.errorMessages) {\n                                    LOG.error(errorMessage);\n                                }\n                            } else if (server.endpointSocket != null) {\n                                LOG.infof(\"SPIFFE Workload API server started on %s\", server.endpointSocket);\n                            }","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/spiffe-client/deployment/src/main/java/io/quarkus/spiffe/client/deployment/SpiffeDevServicesProcessor.java#L67-L103","documentation":"SpiffeDevServicesProcessor starts a local SPIFFE Workload API dev server. When the configured transport resolves to UNIX domain sockets but the build is running on Windows, the processor throws a ConfigurationException because Windows cannot use the unix socket transport — only tcp is supported there.","triggerScenarios":"Running Quarkus dev mode / tests with quarkus-spiffe-client dev services on Windows while the transport (quarkus.spiffe-client.devservices.transport or equivalent) resolves to unix; the check `transport == Transport.UNIX && OS.WINDOWS.isCurrent()` fires at dev-service start.","commonSituations":"A developer copying a Linux/macOS application.properties (with transport=unix or relying on the unix default) onto a Windows machine; CI on Windows runners reusing Linux config; team-shared config not parameterized per-OS.","solutions":["Set the transport to tcp: quarkus.spiffe-client.devservices.transport=tcp in application.properties for Windows.","Make the setting OS-conditional (e.g. a Windows profile file application-windows.properties or env var override).","Upgrade the extension if a newer version auto-selects tcp on Windows (the processor already maps Windows to Transport.TCP when it controls the choice — explicit config forces unix and hits this error)."],"exampleFix":"# before (application.properties, shared)\nquarkus.spiffe-client.devservices.transport=unix\n\n# after\nquarkus.spiffe-client.devservices.transport=tcp","handlingStrategy":"validation","validationCode":"if (org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS && \"unix\".equals(transport)) {\n    throw new IllegalStateException(\"Set quarkus.spiffe-client.devservices.transport=tcp on Windows\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never hardcode transport=unix in shared config files","Use per-OS config profiles or environment variables for devservices settings","Prefer tcp transport in CI matrices that include Windows runners"],"tags":["quarkus","spiffe","dev-services","windows","configuration"],"backgroundTag":"platform-not-supported","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}