{"record":{"id":"14e1b113e4730f21","repo":"github/github-mcp-server","slug":"issue-field-q-cannot-specify-delete-together-wi","errorCode":null,"errorMessage":"issue field %q cannot specify 'delete' together with 'value' or 'field_option_name'","messagePattern":"issue field %q cannot specify 'delete' together with 'value' or 'field_option_name'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/github/issues.go","lineNumber":276,"sourceCode":"\t\tfieldName, err := RequiredParam[string](itemMap, \"field_name\")\n\t\tif err != nil || strings.TrimSpace(fieldName) == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"field_name is required for each issue_fields item\")\n\t\t}\n\n\t\tfieldOptionName, err := OptionalParam[string](itemMap, \"field_option_name\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tdeleteField, _ := OptionalParam[bool](itemMap, \"delete\")\n\t\tvalue, hasValue := itemMap[\"value\"]\n\t\tif hasValue && value == nil {\n\t\t\treturn nil, fmt.Errorf(\"value cannot be null for field %q\", fieldName)\n\t\t}\n\n\t\tif deleteField {\n\t\t\tif hasValue || fieldOptionName != \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"issue field %q cannot specify 'delete' together with 'value' or 'field_option_name'\", fieldName)\n\t\t\t}\n\t\t\tissueFields = append(issueFields, issueWriteFieldInput{\n\t\t\t\tFieldName: fieldName,\n\t\t\t\tDelete:    true,\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\n\t\tif hasValue && fieldOptionName != \"\" {\n\t\t\treturn nil, fmt.Errorf(\"issue field %q cannot specify both value and field_option_name\", fieldName)\n\t\t}\n\n\t\tif !hasValue && fieldOptionName == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"issue field %q must specify either value or field_option_name\", fieldName)\n\t\t}\n\n\t\tissueFields = append(issueFields, issueWriteFieldInput{\n\t\t\tFieldName:       fieldName,","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/github/github-mcp-server/blob/0ea1f775a7c73eff1bd2e25904d01136756bbfe2/pkg/github/issues.go#L258-L294","documentation":"optionalIssueWriteFields (pkg/github/issue_dependencies.go issues.go:276) enforces that delete:true is exclusive: an issue_fields item may delete a field OR set it, never both. The error fires when delete is truthy and the item also carries a value or field_option_name. Deletion takes no payload by design.","triggerScenarios":"update_issue with {\"field_name\":\"Priority\",\"delete\":true,\"value\":\"P0\"} or {\"field_name\":\"Priority\",\"delete\":true,\"field_option_name\":\"P0\"}.","commonSituations":"Callers bundling 'clear then set' semantics into one item; LLMs defensively filling every schema property; merging template payloads that leave stale keys.","solutions":["Split into intent: either {\"field_name\":\"Priority\",\"delete\":true} OR {\"field_name\":\"Priority\",\"value\":\"P0\"}","Remove value/field_option_name keys when delete is true","Validate items client-side for the delete/value/field_option_name exclusivity before submitting"],"exampleFix":"# before\n{\"issue_fields\": [{\"field_name\": \"Priority\", \"delete\": true, \"field_option_name\": \"P0\"}]}\n\n# after\n{\"issue_fields\": [{\"field_name\": \"Priority\", \"field_option_name\": \"P0\"}]}","handlingStrategy":"validation","validationCode":"for _, item := range inputMaps {\n    del, _ := item[\"delete\"].(bool)\n    _, hasValue := item[\"value\"]\n    opt, _ := item[\"field_option_name\"].(string)\n    if del && (hasValue || strings.TrimSpace(opt) != \"\") {\n        return errors.New(\"delete cannot be combined with value or field_option_name\")\n    }\n}","typeGuard":"func isExclusiveDelete(item map[string]any) bool {\n    del, _ := item[\"delete\"].(bool)\n    _, hasValue := item[\"value\"]\n    opt, _ := item[\"field_option_name\"].(string)\n    return !del || (!hasValue && strings.TrimSpace(opt) == \"\")\n}","tryCatchPattern":null,"preventionTips":["Model each field update as exactly one intent: set (value/field_option_name) or clear (delete)","Never merge partial field-update payloads; rebuild the item from scratch","Validate the exclusivity rule in your arg builder so it fails locally first"],"tags":["go","validation","issue-fields","mcp"],"backgroundTag":null,"analyzedSha":"0ea1f775a7c73eff1bd2e25904d01136756bbfe2","analyzedAt":"2026-08-15T18:10:19.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}