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(issues): gate issue-fields features behind remote_mcp_issue_fields flag (#2520)
* feat(issues): gate issue-fields features behind remote_mcp_issue_fields flag
Gates the recently merged issue-fields work (list_issue_fields tool,
field_values enrichment on list_issues/search_issues, and field_filters
input on list_issues) behind a new feature flag, also enabled in
insiders mode.
- list_issues splits into two same-named registrations: the field-aware
variant requires the flag, while LegacyListIssues (FeatureFlagDisable)
preserves the prior schema and GraphQL selection set so disabled
callers don't pay the extra wire/server cost.
- search_issues skips the field-values lookup when the flag is off.
- list_issue_fields requires the flag to be registered at all.
- Adopts <tool>_ff_<flag>.snap naming for flagged toolsnap variants so
same-named duplicates each get a distinct snapshot.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: address PR review on issue-fields gating
- docs generator: install a no-flags feature checker so README reflects
the default user experience (tools enabled with no special flags),
fixing duplicate `list_issues` and removing granular/flagged-only
tools that were never meant to appear in the default docs.
- csv_output: drop the FeatureFlagEnable/Disable exclusion in
isCSVOutputTool. Wrapping happens before the per-request flag filter
picks the live variant, so flag-gated list_* tools wrap safely; this
restores CSV conversion for `list_issues` and enables it for
`list_issue_fields` when both flags are on.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: README.md
-175Lines changed: 0 additions & 175 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -829,21 +829,6 @@ The following sets of tools are available:
829
829
-`owner`: Repository owner (string, required)
830
830
-`repo`: Repository name (string, required)
831
831
832
-
-**add_sub_issue** - Add Sub-Issue
833
-
-**Required OAuth Scopes**: `repo`
834
-
-`issue_number`: The parent issue number (number, required)
835
-
-`owner`: Repository owner (username or organization) (string, required)
836
-
-`replace_parent`: If true, reparent the sub-issue if it already has a parent (boolean, optional)
837
-
-`repo`: Repository name (string, required)
838
-
-`sub_issue_id`: The ID of the sub-issue to add. ID is not the same as issue number (number, required)
839
-
840
-
-**create_issue** - Create Issue
841
-
-**Required OAuth Scopes**: `repo`
842
-
-`body`: Issue body content (optional) (string, optional)
843
-
-`owner`: Repository owner (username or organization) (string, required)
844
-
-`repo`: Repository name (string, required)
845
-
-`title`: Issue title (string, required)
846
-
847
832
-**get_label** - Get a specific label from a repository
848
833
-**Required OAuth Scopes**: `repo`
849
834
-`name`: Label name. (string, required)
@@ -885,12 +870,6 @@ The following sets of tools are available:
885
870
-`title`: Issue title (string, optional)
886
871
-`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)
-`owner`: The account owner of the repository or organization. The name is not case sensitive. (string, required)
892
-
-`repo`: The name of the repository. When provided, returns fields for this specific repository (inherited from its organization). When omitted, returns org-level fields directly. (string, optional)
893
-
894
873
-**list_issue_types** - List available issue types
@@ -900,7 +879,6 @@ The following sets of tools are available:
900
879
-**Required OAuth Scopes**: `repo`
901
880
-`after`: Cursor for pagination. Use the endCursor from the previous page's PageInfo for GraphQL APIs. (string, optional)
902
881
-`direction`: Order direction. If provided, the 'orderBy' also needs to be provided. (string, optional)
903
-
-`field_filters`: Filter by custom issue field values. Each entry takes a field_name and a value; the server looks up the field and coerces the value to its type (single-select option name, text, number, or YYYY-MM-DD date). (object[], optional)
904
882
-`labels`: Filter by labels (string[], optional)
905
883
-`orderBy`: Order issues by field. If provided, the 'direction' also needs to be provided. (string, optional)
906
884
-`owner`: Repository owner (string, required)
@@ -909,22 +887,6 @@ The following sets of tools are available:
909
887
-`since`: Filter by date (ISO 8601 timestamp) (string, optional)
910
888
-`state`: Filter by state, by default both open and closed issues are returned when not provided (string, optional)
911
889
912
-
-**remove_sub_issue** - Remove Sub-Issue
913
-
-**Required OAuth Scopes**: `repo`
914
-
-`issue_number`: The parent issue number (number, required)
915
-
-`owner`: Repository owner (username or organization) (string, required)
916
-
-`repo`: Repository name (string, required)
917
-
-`sub_issue_id`: The ID of the sub-issue to remove. ID is not the same as issue number (number, required)
-`after_id`: The ID of the sub-issue to place this after (either after_id OR before_id should be specified) (number, optional)
922
-
-`before_id`: The ID of the sub-issue to place this before (either after_id OR before_id should be specified) (number, optional)
923
-
-`issue_number`: The parent issue number (number, required)
924
-
-`owner`: Repository owner (username or organization) (string, required)
925
-
-`repo`: Repository name (string, required)
926
-
-`sub_issue_id`: The ID of the sub-issue to reorder. ID is not the same as issue number (number, required)
927
-
928
890
-**search_issues** - Search issues
929
891
-**Required OAuth Scopes**: `repo`
930
892
-`order`: Sort order (string, optional)
@@ -935,13 +897,6 @@ The following sets of tools are available:
935
897
-`repo`: Optional repository name. If provided with owner, only issues for this repository are listed. (string, optional)
936
898
-`sort`: Sort field by number of matches of categories, defaults to best match (string, optional)
937
899
938
-
-**set_issue_fields** - Set Issue Fields
939
-
-**Required OAuth Scopes**: `repo`
940
-
-`fields`: Array of issue field values to set. Each element must have a 'field_id' (string, the GraphQL node ID of the field) and exactly one value field: 'text_value' for text fields, 'number_value' for number fields, 'date_value' (ISO 8601 date string) for date fields, or 'single_select_option_id' (the GraphQL node ID of the option) for single select fields. Set 'delete' to true to remove a field value. (object[], required)
941
-
-`issue_number`: The issue number to update (number, required)
942
-
-`owner`: Repository owner (username or organization) (string, required)
943
-
-`repo`: Repository name (string, required)
944
-
945
900
-**sub_issue_write** - Change sub-issue
946
901
-**Required OAuth Scopes**: `repo`
947
902
-`after_id`: The ID of the sub-issue to be prioritized after (either after_id OR before_id should be specified) (number, optional)
@@ -958,57 +913,6 @@ The following sets of tools are available:
958
913
-`repo`: Repository name (string, required)
959
914
-`sub_issue_id`: The ID of the sub-issue to add. ID is not the same as issue number (number, required)
-`issue_number`: The issue number to update (number, required)
985
-
-`milestone`: The milestone number to set on the issue (integer, required)
986
-
-`owner`: Repository owner (username or organization) (string, required)
987
-
-`repo`: Repository name (string, required)
988
-
989
-
-**update_issue_state** - Update Issue State
990
-
-**Required OAuth Scopes**: `repo`
991
-
-`issue_number`: The issue number to update (number, required)
992
-
-`owner`: Repository owner (username or organization) (string, required)
993
-
-`repo`: Repository name (string, required)
994
-
-`state`: The new state for the issue (string, required)
995
-
-`state_reason`: The reason for the state change (only for closed state) (string, optional)
996
-
997
-
-**update_issue_title** - Update Issue Title
998
-
-**Required OAuth Scopes**: `repo`
999
-
-`issue_number`: The issue number to update (number, required)
1000
-
-`owner`: Repository owner (username or organization) (string, required)
1001
-
-`repo`: Repository name (string, required)
1002
-
-`title`: The new title for the issue (string, required)
1003
-
1004
-
-**update_issue_type** - Update Issue Type
1005
-
-**Required OAuth Scopes**: `repo`
1006
-
-`issue_number`: The issue number to update (number, required)
1007
-
-`issue_type`: The issue type to set (string, required)
1008
-
-`owner`: Repository owner (username or organization) (string, required)
1009
-
-`rationale`: One concise sentence explaining what specifically about the issue led you to choose this type. State the concrete signal (e.g. 'Reports a crash when saving' → bug, 'Asks for dark mode support' → feature). (string, optional)
1010
-
-`repo`: Repository name (string, required)
1011
-
1012
916
</details>
1013
917
1014
918
<details>
@@ -1161,19 +1065,6 @@ The following sets of tools are available:
1161
1065
-`startSide`: For multi-line comments, the starting side of the diff that the comment applies to. LEFT indicates the previous state, RIGHT indicates the new state (string, optional)
1162
1066
-`subjectType`: The level at which the comment is targeted (string, required)
-`owner`: Repository owner (username or organization) (string, required)
1208
-
-`pullNumber`: The pull request number (number, required)
1209
-
-`repo`: Repository name (string, required)
1210
-
1211
1087
-**list_pull_requests** - List pull requests
1212
1088
-**Required OAuth Scopes**: `repo`
1213
1089
-`base`: Filter by base branch (string, optional)
@@ -1260,17 +1136,6 @@ The following sets of tools are available:
1260
1136
-`repo`: Repository name (string, required)
1261
1137
-`threadId`: The node ID of the review thread (e.g., PRRT_kwDOxxx). Required for resolve_thread and unresolve_thread methods. Get thread IDs from pull_request_read with method get_review_comments. (string, optional)
Copy file name to clipboardExpand all lines: pkg/github/__toolsnaps__/list_issues.snap
-21Lines changed: 0 additions & 21 deletions
Original file line number
Diff line number
Diff line change
@@ -18,27 +18,6 @@
18
18
],
19
19
"type": "string"
20
20
},
21
-
"field_filters": {
22
-
"description": "Filter by custom issue field values. Each entry takes a field_name and a value; the server looks up the field and coerces the value to its type (single-select option name, text, number, or YYYY-MM-DD date).",
23
-
"items": {
24
-
"properties": {
25
-
"field_name": {
26
-
"description": "Name of the custom field (e.g. \"Priority\"). Case-insensitive.",
27
-
"type": "string"
28
-
},
29
-
"value": {
30
-
"description": "Value to filter on. For single-select fields, the option name (e.g. \"P1\"). For dates, YYYY-MM-DD. For numbers, the numeric value as a string. For text, the text value.",
0 commit comments