{"record":{"id":"276f0c23a1462b2b","repo":"appsmithorg/appsmith","slug":"pe-arg-5000-276f0c","errorCode":"PE-ARG-5000","errorMessage":"Query failed to execute because max token value is not an integer number","messagePattern":"Query failed to execute because max token value is not an integer number","errorType":"exception","errorClass":"AppsmithPluginException","httpStatus":500,"severity":"error","filePath":"app/server/appsmith-plugins/anthropicPlugin/src/main/java/com/external/plugins/utils/CommandUtils.java","lineNumber":53,"sourceCode":"            return gson.fromJson((String) messages.get(DATA), listType);\n        }\n        // return object stored in data key\n        return (List<Map<String, String>>) messages.get(DATA);\n    }\n\n    public static int getMaxTokenFromFormData(Map<String, Object> formData) {\n        String maxTokenAsString = RequestUtils.extractValueFromFormData(formData, MAX_TOKENS);\n\n        if (!StringUtils.hasText(maxTokenAsString)) {\n            return DEFAULT_MAX_TOKEN;\n        }\n\n        try {\n            return Integer.parseInt(maxTokenAsString);\n        } catch (IllegalArgumentException illegalArgumentException) {\n            return DEFAULT_MAX_TOKEN;\n        } catch (Exception exception) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,\n                    String.format(STRING_APPENDER, EXECUTION_FAILURE, BAD_MAX_TOKEN_CONFIGURATION));\n        }\n    }\n\n    public static Float getTemperatureFromFormData(Map<String, Object> formData) {\n        String temperatureString = RequestUtils.extractValueFromFormData(formData, TEMPERATURE);\n\n        if (!StringUtils.hasText(temperatureString)) {\n            return DEFAULT_TEMPERATURE;\n        }\n\n        try {\n            return Float.parseFloat(temperatureString);\n        } catch (IllegalArgumentException illegalArgumentException) {\n            return DEFAULT_TEMPERATURE;\n        } catch (Exception exception) {\n            throw new AppsmithPluginException(","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/appsmithorg/appsmith/blob/8cd9021c24cdbea1c3c12c966073708e83db60c2/app/server/appsmith-plugins/anthropicPlugin/src/main/java/com/external/plugins/utils/CommandUtils.java#L35-L71","documentation":"Thrown in CommandUtils.getMaxTokenFromFormData when parsing the max-token string throws an Exception that is NOT a NumberFormatException (NumberFormatException is caught first as IllegalArgumentException and returns DEFAULT_MAX_TOKEN). Only a non-numeric-parsing failure — e.g. extractValueFromFormData throwing, or a null/odd object type causing a different exception — reaches this throw. Code PE-ARG-5000.","triggerScenarios":"The MAX_TOKENS form value is present but extractValueFromFormData raises an unexpected exception, or formData mutation produces a type that breaks extraction (not a simple unparseable number — that returns the default).","commonSituations":"Corrupted formData where the max-tokens entry is an unexpected object type; a plugin/RequestUtils version where extraction throws on malformed structures; concurrent modification of formData. A normal 'abc' value would NOT trigger this (it falls through to DEFAULT_MAX_TOKEN).","solutions":["Inspect the MAX_TOKENS field in formData — ensure it is a string or absent (absent yields DEFAULT_MAX_TOKEN).","Remove any malformed/non-string entry in formData for the max-tokens slot.","If reproducing programmatically, pass maxTokens as a numeric string (e.g. \"1024\")."],"exampleFix":"// before: non-string object causes extraction to throw\nformData.put(\"maxTokens\", List.of(1024));\n// after\nformData.put(\"maxTokens\", \"1024\");","handlingStrategy":"validation","validationCode":"// Pass maxTokens as a numeric string or omit it\nObject raw = formData.get(MAX_TOKENS);\nif (raw != null && !(raw instanceof String)) {\n    formData.put(MAX_TOKENS, String.valueOf(raw));\n}\n// optionally validate parseability\nString s = RequestUtils.extractValueFromFormData(formData, MAX_TOKENS);\nif (StringUtils.hasText(s)) Integer.parseInt(s); // pre-check","typeGuard":"boolean isValidMaxToken(Object raw) {\n    if (raw == null) return true;\n    if (!(raw instanceof String s)) return false;\n    if (!StringUtils.hasText(s)) return true;\n    try { Integer.parseInt(s); return true; } catch (NumberFormatException e) { return false; }\n}","tryCatchPattern":"try {\n    int max = CommandUtils.getMaxTokenFromFormData(formData);\n} catch (AppsmithPluginException e) {\n    if (e.getMessage().contains(\"max token value is not an integer number\")) {\n        // reset maxTokens to a clean numeric string\n    }\n}","preventionTips":["Keep MAX_TOKENS as a numeric string (e.g. \"1024\") or unset for the default.","Avoid storing non-string objects in the maxTokens formData slot.","Sanitize formData shape before execution when constructing programmatically."],"tags":["anthropic","appsmith","validation","max-tokens","parsing"],"backgroundTag":null,"analyzedSha":"8cd9021c24cdbea1c3c12c966073708e83db60c2","analyzedAt":"2026-08-12T22:14:19.293Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}