You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: gate issue_write and get_issue behind remote_mcp_issue_fields flag
- Extend FeatureFlagEnable/Disable fields from string to []string (AND
semantics for enable, OR semantics for disable) so a tool can require
multiple flags simultaneously.
- Add LegacyIssueWrite: the FeatureFlagIssueFields-disabled variant of
issue_write. It exposes the pre-issue-fields schema (no issue_fields
parameter) and skips the custom field value resolution. Both this and
IssueWrite register under the tool name 'issue_write'; exactly one is
active at a time via mutually exclusive flag annotations.
- Gate IssueWrite (the flag-enabled variant) with FeatureFlagEnable so
it is only served when remote_mcp_issue_fields is on.
- Gate the get_issue field_values enrichment with a runtime
IsFeatureEnabled check so the GraphQL round-trip is skipped when the
flag is off.
- Add issue_write.snap (legacy) and
issue_write_ff_remote_mcp_issue_fields.snap (flag-enabled) toolsnaps
following the convention established by PR #2520.
- Modernise featureFlagAllowed disableFlags loop to slices.ContainsFunc.
-`assignees`: Usernames to assign to this issue (string[], optional)
79
+
-`body`: Issue body content (string, optional)
80
+
-`duplicate_of`: Issue number that this issue is a duplicate of. Only used when state_reason is 'duplicate'. (number, optional)
81
+
-`issue_fields`: Issue field values to set. Each item requires 'field_name' and exactly one of 'value' or 'field_option_name'. (object[], optional)
82
+
-`issue_number`: Issue number to update (number, optional)
83
+
-`labels`: Labels to apply to this issue (string[], optional)
84
+
-`method`: Write operation to perform on a single issue.
85
+
Options are:
86
+
- 'create' - creates a new issue.
87
+
- 'update' - updates an existing issue.
88
+
(string, required)
89
+
-`milestone`: Milestone number (number, optional)
90
+
-`owner`: Repository owner (string, required)
91
+
-`repo`: Repository name (string, required)
92
+
-`state`: New state (string, optional)
93
+
-`state_reason`: Reason for the state change. Ignored unless state is changed. (string, optional)
94
+
-`title`: Issue title (string, optional)
95
+
-`type`: Type of this issue. Only use if the repository has issue types configured. Use list_issue_types tool to get valid type values for the organization. If the repository doesn't support issue types, omit this parameter. (string, optional)
Copy file name to clipboardExpand all lines: docs/insiders-features.md
+21-1Lines changed: 21 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,7 +50,6 @@ The list below is generated from the Go source. It covers tool **inventory and s
50
50
-`assignees`: Usernames to assign to this issue (string[], optional)
51
51
-`body`: Issue body content (string, optional)
52
52
-`duplicate_of`: Issue number that this issue is a duplicate of. Only used when state_reason is 'duplicate'. (number, optional)
53
-
-`issue_fields`: Issue field values to set. Each item requires 'field_name' and exactly one of 'value' or 'field_option_name'. (object[], optional)
54
53
-`issue_number`: Issue number to update (number, optional)
55
54
-`labels`: Labels to apply to this issue (string[], optional)
56
55
-`method`: Write operation to perform on a single issue.
@@ -68,6 +67,27 @@ The list below is generated from the Go source. It covers tool **inventory and s
68
67
69
68
### `remote_mcp_issue_fields`
70
69
70
+
-**issue_write** - Create or update issue
71
+
-**Required OAuth Scopes**: `repo`
72
+
-`assignees`: Usernames to assign to this issue (string[], optional)
73
+
-`body`: Issue body content (string, optional)
74
+
-`duplicate_of`: Issue number that this issue is a duplicate of. Only used when state_reason is 'duplicate'. (number, optional)
75
+
-`issue_fields`: Issue field values to set. Each item requires 'field_name' and exactly one of 'value' or 'field_option_name'. (object[], optional)
76
+
-`issue_number`: Issue number to update (number, optional)
77
+
-`labels`: Labels to apply to this issue (string[], optional)
78
+
-`method`: Write operation to perform on a single issue.
79
+
Options are:
80
+
- 'create' - creates a new issue.
81
+
- 'update' - updates an existing issue.
82
+
(string, required)
83
+
-`milestone`: Milestone number (number, optional)
84
+
-`owner`: Repository owner (string, required)
85
+
-`repo`: Repository name (string, required)
86
+
-`state`: New state (string, optional)
87
+
-`state_reason`: Reason for the state change. Ignored unless state is changed. (string, optional)
88
+
-`title`: Issue title (string, optional)
89
+
-`type`: Type of this issue. Only use if the repository has issue types configured. Use list_issue_types tool to get valid type values for the organization. If the repository doesn't support issue types, omit this parameter. (string, optional)
"description": "Create a new or update an existing issue in a GitHub repository.",
15
+
"inputSchema": {
16
+
"properties": {
17
+
"assignees": {
18
+
"description": "Usernames to assign to this issue",
19
+
"items": {
20
+
"type": "string"
21
+
},
22
+
"type": "array"
23
+
},
24
+
"body": {
25
+
"description": "Issue body content",
26
+
"type": "string"
27
+
},
28
+
"duplicate_of": {
29
+
"description": "Issue number that this issue is a duplicate of. Only used when state_reason is 'duplicate'.",
30
+
"type": "number"
31
+
},
32
+
"issue_fields": {
33
+
"description": "Issue field values to set. Each item requires 'field_name' and exactly one of 'value' or 'field_option_name'.",
34
+
"items": {
35
+
"additionalProperties": false,
36
+
"oneOf": [
37
+
{
38
+
"not": {
39
+
"required": [
40
+
"field_option_name"
41
+
]
42
+
},
43
+
"required": [
44
+
"value"
45
+
]
46
+
},
47
+
{
48
+
"not": {
49
+
"required": [
50
+
"value"
51
+
]
52
+
},
53
+
"required": [
54
+
"field_option_name"
55
+
]
56
+
}
57
+
],
58
+
"properties": {
59
+
"field_name": {
60
+
"description": "Issue field name",
61
+
"type": "string"
62
+
},
63
+
"field_option_name": {
64
+
"description": "Option name for single-select fields — validates the option exists in the field definition before setting it.",
65
+
"type": "string"
66
+
},
67
+
"value": {
68
+
"description": "Value to set. For single-select fields, prefer 'field_option_name' to validate the option exists first.",
69
+
"type": [
70
+
"string",
71
+
"number",
72
+
"boolean"
73
+
]
74
+
}
75
+
},
76
+
"required": [
77
+
"field_name"
78
+
],
79
+
"type": "object"
80
+
},
81
+
"type": "array"
82
+
},
83
+
"issue_number": {
84
+
"description": "Issue number to update",
85
+
"type": "number"
86
+
},
87
+
"labels": {
88
+
"description": "Labels to apply to this issue",
89
+
"items": {
90
+
"type": "string"
91
+
},
92
+
"type": "array"
93
+
},
94
+
"method": {
95
+
"description": "Write operation to perform on a single issue.\nOptions are:\n- 'create' - creates a new issue.\n- 'update' - updates an existing issue.\n",
96
+
"enum": [
97
+
"create",
98
+
"update"
99
+
],
100
+
"type": "string"
101
+
},
102
+
"milestone": {
103
+
"description": "Milestone number",
104
+
"type": "number"
105
+
},
106
+
"owner": {
107
+
"description": "Repository owner",
108
+
"type": "string"
109
+
},
110
+
"repo": {
111
+
"description": "Repository name",
112
+
"type": "string"
113
+
},
114
+
"state": {
115
+
"description": "New state",
116
+
"enum": [
117
+
"open",
118
+
"closed"
119
+
],
120
+
"type": "string"
121
+
},
122
+
"state_reason": {
123
+
"description": "Reason for the state change. Ignored unless state is changed.",
124
+
"enum": [
125
+
"completed",
126
+
"not_planned",
127
+
"duplicate"
128
+
],
129
+
"type": "string"
130
+
},
131
+
"title": {
132
+
"description": "Issue title",
133
+
"type": "string"
134
+
},
135
+
"type": {
136
+
"description": "Type of this issue. Only use if the repository has issue types configured. Use list_issue_types tool to get valid type values for the organization. If the repository doesn't support issue types, omit this parameter.",
0 commit comments