{"record":{"id":"9e5b0ddcaa48a412","repo":"theonedev/onedev","slug":"error-validating-param-auto-merge-commit-message","errorCode":null,"errorMessage":"Error validating param auto merge commit message: ","messagePattern":"Error validating param auto merge commit message: ","errorType":"http","errorClass":"NotAcceptableException","httpStatus":406,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/ai/TodResource.java","lineNumber":1444,"sourceCode":"                pullRequestReviewService.createOrUpdate(user, review);\n        }\n\n        var autoMergeEnabled = (Boolean) data.remove(\"autoMerge\");\n        if (autoMergeEnabled != null) {\n            if (!SecurityUtils.canWriteCode(request.getProject()))\n                throw new UnauthorizedException(\"Code write permission is required to edit auto merge\");\n            if (!request.isOpen())\n                throw new NotAcceptableException(\"Pull request is closed\");\n\n            if (autoMergeEnabled && request.checkMergeCondition() == null) \n                throw new NotAcceptableException(\"This pull request is not eligible for auto-merge, as it can be merged directly now\");\n\n            var autoMerge = new AutoMerge();\n            autoMerge.setEnabled(autoMergeEnabled);\n            autoMerge.setCommitMessage(trimToNull((String) data.remove(\"autoMergeCommitMessage\")));\n            var errorMessage = request.checkMergeCommitMessage(user, autoMerge.getCommitMessage());\n            if (errorMessage != null) \n                throw new NotAcceptableException(\"Error validating param auto merge commit message: \" + errorMessage);\n\n            pullRequestChangeService.changeAutoMerge(user, request, autoMerge);\n        }\n                    \n        return PullRequestHelper.getDetail(currentProject, request);        \n    }    \n\n    @Path(\"/approve-pull-request\")\n    @Consumes(MediaType.TEXT_PLAIN)\n    @POST\n    public Map<String, Object> approvePullRequest(\n                @QueryParam(\"currentProject\") @NotNull String currentProjectPath,\n                @QueryParam(\"reference\") @NotNull String pullRequestReference,\n                String comment) {\n        var user = SecurityUtils.getUser();\n        if (user == null)\n            throw new UnauthenticatedException();\n","sourceCodeStart":1426,"sourceCodeEnd":1462,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/ai/TodResource.java#L1426-L1462","documentation":"OneDev throws this NotAcceptableException when the supplied autoMergeCommitMessage fails request.checkMergeCommitMessage(user, message). The validation returns an error string (e.g. missing required trailer, invalid format, exceeds limits) and it is wrapped with this 'Error validating param auto merge commit message:' prefix.","triggerScenarios":"Calling the update-pull-request endpoint with autoMerge=true/false plus an autoMergeCommitMessage that fails pull request commit-message validation rules configured on the project (required patterns, forbidden content, length).","commonSituations":"Project has a commit message checker requiring e.g. a issue reference that the provided message lacks; the message is empty after trim while one is required; the message contains characters the checker rejects.","solutions":["Inspect the returned errorMessage suffix to see exactly which rule failed and fix the message accordingly.","Fetch the project's commit message settings/validators and compose a conforming message.","Send autoMerge without autoMergeCommitMessage to use the default message instead of a custom one."],"exampleFix":"// before\nupdatePullRequest(ref, { autoMerge: true, autoMergeCommitMessage: 'merge it' })\n// after\nupdatePullRequest(ref, { autoMerge: true, autoMergeCommitMessage: 'Fix bug #123' }) // includes required issue ref","handlingStrategy":"validation","validationCode":"const msg = buildAutoMergeCommitMessage(pr)\nif (!msg || !requiredTrailerPresent(msg)) throw new Error('autoMergeCommitMessage fails project commit message rules')\nawait updatePullRequest(ref, { autoMerge: true, autoMergeCommitMessage: msg })","typeGuard":"function isValidCommitMessage(msg) { return typeof msg === 'string' && msg.trim().length > 0 && /#\\d+/.test(msg) }","tryCatchPattern":"try { await updatePullRequest(ref, { autoMerge: true, autoMergeCommitMessage: msg }) }\ncatch (e) { if (String(e.message).startsWith('Error validating param auto merge commit message:')) { console.error(e.message.split(': ').pop()); /* fix message and retry */ } else throw e }","preventionTips":["Read the project's commit message validation settings first","Include required trailers/issue references in custom merge messages","Omit autoMergeCommitMessage to let OneDev use the default"],"tags":["pull-request","auto-merge","commit-message","validation"],"backgroundTag":"invalid-argument-value","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}