{"record":{"id":"5c7442f003c824ef","repo":"languagetool-org/languagetool","slug":"cannot-use-premiumalways-with-non-premium-versio","errorCode":null,"errorMessage":"Cannot use --premiumAlways with non-premium version","messagePattern":"Cannot use --premiumAlways with non-premium version","errorType":"console","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"languagetool-server/src/main/java/org/languagetool/server/HTTPServerConfig.java","lineNumber":267,"sourceCode":"      }\n      switch (args[i]) {\n        case \"--config\":\n          parseConfigFile(new File(args[++i]), !ArrayUtils.contains(args, LANGUAGE_MODEL_OPTION));\n          break;\n        case \"-p\":\n        case \"--port\":\n          port = Integer.parseInt(args[++i]);\n          break;\n        case \"-v\":\n        case \"--verbose\":\n          verbose = true;\n          break;\n        case \"--public\":\n          publicAccess = true;\n          break;\n        case \"--premiumAlways\":\n          if (!Premium.isPremiumVersion()) {\n            throw new IllegalArgumentException(\"Cannot use --premiumAlways with non-premium version\");\n          }\n          premiumAlways = true;\n          System.out.println(\"*** Running in PREMIUM-ALWAYS mode, premium features are available without authentication\");\n          break;\n        case \"--allow-origin\":\n          try {\n            allowOriginUrl = args[++i];\n            if (allowOriginUrl.startsWith(\"--\")) {  // no parameter, next option starts instead\n              allowOriginUrl = \"*\";\n              i--;\n            }\n          } catch (ArrayIndexOutOfBoundsException e) {\n            allowOriginUrl = \"*\";\n          }\n          break;\n        case LANGUAGE_MODEL_OPTION:\n          setLanguageModelDirectory(args[++i]);\n          break;","sourceCodeStart":249,"sourceCodeEnd":285,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-server/src/main/java/org/languagetool/server/HTTPServerConfig.java#L249-L285","documentation":"HTTPServerConfig rejects the --premiumAlways CLI flag when the running build is not the premium version of LanguageTool. The flag enables premium features without authentication, which only exists in premium builds, so the constructor throws IllegalArgumentException to fail fast.","triggerScenarios":"Passing --premiumAlways on the command line to the open-source (non-premium) languagetool-server jar.","commonSituations":"Reusing a startup script written for the premium server with the free server; upgrading/downgrading between builds while keeping the same launch arguments.","solutions":["Remove --premiumAlways from the command line when running the non-premium server","Use the premium LanguageTool server build if premium-always behavior is required","Review startup scripts/containers for the flag and make it conditional on the build type"],"exampleFix":"# before\njava -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081 --premiumAlways\n# after\njava -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081","handlingStrategy":"validation","validationCode":"// guard launch args for non-premium builds\nboolean premium = isPremiumJar();\nList<String> safe = Arrays.stream(args).filter(a -> premium || !a.equals(\"--premiumAlways\")).collect(toList());\nif (!premium && args.length != safe.size()) warn(\"--premiumAlways removed: non-premium build\");","typeGuard":null,"tryCatchPattern":"try { cfg = new HTTPServerConfig(args); } catch (IllegalArgumentException e) {\n  if (e.getMessage().contains(\"--premiumAlways\")) { args = removeFlag(args, \"--premiumAlways\"); cfg = new HTTPServerConfig(args); } else throw e;\n}","preventionTips":["Keep separate launch scripts for free vs premium server builds","Assert the expected jar/build type in deployment scripts","Document build-specific flags in the ops runbook"],"tags":["cli","configuration","licensing","java"],"backgroundTag":"unsupported-config-value","analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}