{"record":{"id":"958c66899b8f9f8f","repo":"alibaba/nacos","slug":"20002-958c66","errorCode":"20002","errorMessage":"Request parameter `search` should be `accurate` or `blur`.","messagePattern":"Request parameter `search` should be `accurate` or `blur`\\.","errorType":"validation","errorClass":"NacosApiException","httpStatus":400,"severity":"error","filePath":"ai/src/main/java/com/alibaba/nacos/ai/form/a2a/admin/AgentListForm.java","lineNumber":43,"sourceCode":"\n/**\n * Agent list form.\n *\n * @author KiteSoar\n */\npublic class AgentListForm extends AgentForm {\n    \n    @Serial\n    private static final long serialVersionUID = 4706219418699928980L;\n    \n    private String search;\n    \n    @Override\n    public void validate() throws NacosApiException {\n        fillDefaultNamespaceId();\n        if (!Constants.MCP_LIST_SEARCH_ACCURATE.equalsIgnoreCase(search)\n            && !Constants.MCP_LIST_SEARCH_BLUR.equalsIgnoreCase(search)) {\n            throw new NacosApiException(NacosApiException.INVALID_PARAM,\n                ErrorCode.PARAMETER_VALIDATE_ERROR,\n                \"Request parameter `search` should be `accurate` or `blur`.\");\n        }\n    }\n    \n    public String getSearch() {\n        return search;\n    }\n    \n    public void setSearch(String search) {\n        this.search = search;\n    }\n}\n","sourceCodeStart":25,"sourceCodeEnd":57,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/ai/src/main/java/com/alibaba/nacos/ai/form/a2a/admin/AgentListForm.java#L25-L57","documentation":"Thrown by AgentValidationUtils.validateNonLatestLabel when a client-supplied label equals the reserved string 'latest'. 'latest' is server-managed (it points at the working version) and cannot be written, moved, or deleted by clients. The basic validateLabel accepts 'latest', so this dedicated guard enforces the reservation.","triggerScenarios":"Posting a label reference or catalog entry whose label is 'latest' through RadModelValidator.validateNonLatestLabel (line 187) — e.g. trying to pin or move the 'latest' pointer from a client API.","commonSituations":"A client hard-coding 'latest' as a default label; tooling that mirrors all labels including the server-managed one; attempting to 'reset' a deployment by writing latest.","solutions":["Use a concrete version label (e.g. '1.0.0', 'stable') instead of 'latest'.","Filter 'latest' out of any client-provided label set before submission.","Treat 'latest' as read-only in client SDKs; never send it on write operations."],"exampleFix":"// before\nlabels.put(\"latest\", targetVersion);\n// after\nlabels.put(\"1.0.0\", targetVersion);","handlingStrategy":"validation","validationCode":"if (\"latest\".equals(label)) {\n    throw new IllegalArgumentException(\"The latest label is server-managed\");\n}\nAgentValidationUtils.validateNonLatestLabel(label);","typeGuard":"static boolean isClientWritableLabel(String s) {\n    return s != null && !\"latest\".equals(s)\n        && s.matches(\"^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$\");\n}","tryCatchPattern":"try {\n    AgentValidationUtils.validateNonLatestLabel(label);\n} catch (IllegalArgumentException e) {\n    // return 400; tell client 'latest' is server-managed\n}","preventionTips":["Treat 'latest' as read-only in client SDKs.","Filter 'latest' from client-provided label sets."],"tags":["ai-agent","validation","label","reserved","illegal-argument"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}