---
schema_version: 1
route: /t/github-graphql-api.md
tool: "github-graphql-api"
---

# sincecutoff.com /t/github-graphql-api — GitHub GraphQL API

- name: GitHub GraphQL API
- kind: api
- children: none
- homepage: <https://docs.github.com/en/graphql>

Changes to the tools coding agents drive, since a model's training cutoff, each linked to its first-party source. Check installed versions and limitations before acting; a cutoff date does not establish what a model knows.
Original editorial content: [Apache 2.0](https://sincecutoff.com/v1/data-license.txt), by [0xPatrick](https://0xpatrick.dev). Preserve applicable license and [NOTICE](https://sincecutoff.com/notice.txt) attribution when redistributing. Third-party source text and examples retain their own rights. [License scope and attribution](https://sincecutoff.com/v1/license.json).
To stay current, read the changes feed: [`/v1/changes.md?tool=github-graphql-api`](https://sincecutoff.com/v1/changes.md?tool=github-graphql-api) (or `.json`), adding `since=YYYY-MM-DD` for your training cutoff. Entries for registered children are included; the registry itself is `/v1/tools.json`. How to page and save your place: [llms.txt](https://sincecutoff.com/llms.txt).

### GitHub GraphQL adds security advisory filters and fields (2026-10-05)
- slug: github-graphql-adds-security-advisory-filters-and-fields-0f51f6ef8d7c
- score: 0.96

How to use it:

When querying GitHub Security Advisories, pass `isWithdrawn` and/or `severities` to filter results, then select the advisory metadata fields you need.

Examples:

```
query { securityAdvisories(isWithdrawn: true, severities: [HIGH, CRITICAL], first: 100) { nodes { cveId githubReviewedAt nvdPublishedAt repositoryAdvisoryUrl sourceCodeLocation } } }
```

- why_it_matters: Query security advisories to filter withdrawn advisories or severities and retrieve additional advisory metadata.
- before: The changelog records these filters and metadata fields as additions; before this change, queries could not use these new arguments or select these new fields.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-10-05>, <https://docs.github.com/en/graphql/reference/security-advisories>
- gotchas: "isWithdrawn: Boolean filter: `true` returns only withdrawn advisories; `false` excludes withdrawn advisories."; "severities: List of `SecurityAdvisorySeverity` values to filter advisories. Allowed values: `CRITICAL`, `HIGH`, `LOW`, `MODERATE`, `UNKNOWN`."; "cveId: CVE identifier for the advisory."; "githubReviewedAt: When GitHub Security reviewed the advisory; may differ from GitHub’s publication time."; "nvdPublishedAt: When NVD published its advisory record, independent of GitHub’s publishing timeline."; "repositoryAdvisoryUrl: URL for the associated repository security advisory, if the global advisory is linked to one."; "sourceCodeLocation: URL to the upstream source code relevant to the advisory."

### GitHub GraphQL adds the rerequestReviews mutation (2026-10-05)
- slug: github-graphql-adds-the-rerequestreviews-mutation-1c7da650d6af
- score: 0.95

How to use it:

When you need to rerequest pull request reviews, call `rerequestReviews` with the pull request’s Node ID and any reviewer Node IDs; select the returned payload fields you need.

Examples:

```
mutation RerequestReviews($input: RerequestReviewsInput!) { rerequestReviews(input: $input) { actor { __typename } clientMutationId pullRequest { id } requestedReviewersEdge { node { __typename } } } }
# Variables: {"input":{"pullRequestId":"<PULL_REQUEST_NODE_ID>","userIds":["<USER_NODE_ID>"],"teamIds":["<TEAM_NODE_ID>"],"botIds":["<BOT_NODE_ID>"]}}
```

- why_it_matters: Rerequest reviews for a pull request and specify reviewers by user, team, or bot ID.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-10-05>, <https://docs.github.com/en/graphql/reference/pulls>, <https://docs.github.com/en/graphql/guides/forming-calls-with-graphql>
- gotchas: "input (required): RerequestReviewsInput passed to the mutation."; "pullRequestId (required): Pull request Node ID to modify."; "userIds: Node IDs of users whose reviews to rerequest."; "teamIds: Node IDs of teams whose reviews to rerequest."; "botIds: Node IDs of bots whose reviews to rerequest."; "clientMutationId: Unique identifier for the client performing the mutation."; "Prerequisite: Authenticate to GitHub GraphQL API with a token; required scopes or permissions depend on the requested data."; "Prerequisite: GraphQL endpoint: https://api.github.com/graphql; mutations use POST."

### GitHub GraphQL API adds issue relates-to queries and mutations (2026-09-28)
- slug: github-graphql-api-adds-issue-relates-to-queries-and-mutations-b5d08f86ca2d
- score: 0.97

How to use it:

When managing related issues through GitHub’s GraphQL API, query `Issue.relatesTo` with pagination and ordering, or use `addRelatesTo` and `removeRelatesTo` to change a relationship.

Examples:

```
query { node(id: "<issue-id>") { ... on Issue { relatesTo(first: 20, orderBy: {field: RELATES_TO_ADDED_AT, direction: DESC}) { nodes { id } pageInfo { endCursor hasNextPage } } } } }
```

```
mutation { addRelatesTo(input: {issueId: "<issue-id>", relatedIssueId: "<related-issue-id>"}) { issue { id } relatedIssue { id } } }
```

```
mutation { removeRelatesTo(input: {issueId: "<issue-id>", relatedIssueId: "<related-issue-id>"}) { issue { id } relatedIssue { id } } }
```

- why_it_matters: Manage related issues while updating a repository's issue data through the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-09-28>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "Issue.relatesTo.first: Return the first n related issues."; "Issue.relatesTo.last: Return the last n related issues."; "Issue.relatesTo.after: Return elements after the specified cursor."; "Issue.relatesTo.before: Return elements before the specified cursor."; "Issue.relatesTo.orderBy: Ordering options for related issues."; "IssueRelatesToOrder.field (required): Order by `CREATED_AT` (related issue creation time) or `RELATES_TO_ADDED_AT` (when the relationship was added)."; "IssueRelatesToOrder.direction (required): Ordering direction (`OrderDirection!`)."; "AddRelatesToInput.issueId (required): ID of the issue."; "AddRelatesToInput.relatedIssueId (required): ID of the related issue."; "AddRelatesToInput.clientMutationId: Client mutation identifier."; "RemoveRelatesToInput.issueId (required): ID of the issue."; "RemoveRelatesToInput.relatedIssueId (required): ID of the previously related issue."; "RemoveRelatesToInput.clientMutationId: Unique identifier for the client performing the mutation."

### GitHub GraphQL API adds code coverage and code quality rule parameters (2026-09-21)
- slug: github-graphql-api-adds-code-coverage-and-code-quality-rule-parameters-0c797e5017ba
- score: 0.92

How to use it:

When configuring a repository ruleset through GraphQL, set `RuleParametersInput.codeCoverage` for coverage thresholds or `codeQuality` for review severity; specify only one field in `RuleParametersInput`.

- why_it_matters: Configure code coverage or code quality parameters when maintaining repository rule configurations through GraphQL.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-09-21>, <https://docs.github.com/en/enterprise-cloud@latest/graphql/reference/repos>, <https://docs.github.com/en/code-security/how-tos/maintain-quality-code/restrict-code-coverage>, <https://docs.github.com/en/graphql/reference/code-scanning>
- gotchas: "RuleParametersInput.codeCoverage: Parameters for the `code_coverage` rule type. Only one field of `RuleParametersInput` should be specified."; "RuleParametersInput.codeQuality: Parameters for the `code_quality` rule type. Only one field of `RuleParametersInput` should be specified."; "CodeCoverageParametersInput.maxCoverageDrop: Maximum line coverage drop, in percentage points, relative to the default branch; setting a value of 0 disables the threshold."; "CodeCoverageParametersInput.minimumCoverage: Minimum line coverage percentage; setting a value of 0 disables the threshold."; "CodeQualityParametersInput.severity (required): Lowest severity level at which code quality reviews must be resolved before commits can be merged."; "CodeQualitySeverity.ALL: All severity levels."; "CodeQualitySeverity.ERRORS: Errors."; "CodeQualitySeverity.NOTES: Notes and higher."; "CodeQualitySeverity.WARNINGS: Warnings and higher."; "Prerequisite: For code coverage rules, GitHub Code Quality must be enabled and coverage data must be uploaded to GitHub for the pull request branch."; "Prerequisite: Coverage rules do not wait for coverage uploads; make each status check associated with an expected coverage upload a required status check to ensure coverage is evaluated before merging."; "Prerequisite: When a code quality rule is configured, a code quality analysis must be done on the pull request before changes can be merged."

### GitHub GraphQL API adds close-issue references (2026-08-26)
- slug: github-graphql-api-adds-close-issue-references-44cf23e5e8c0
- score: 0.91

How to use it:

When linking pull requests as manual closing references, call `addCloseIssueReferences` on an issue with the issue ID and up to 10 pull request IDs. Select the returned `issue` to read the updated issue.

Examples:

```
mutation { addCloseIssueReferences(input: { issueId: "<issue-node-id>", pullRequestIds: ["<pull-request-node-id>"] }) { issue { id } } }
```

- why_it_matters: Update issue-linked pull request references in a repository using the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-08-26>, <https://docs.github.com/en/graphql/reference/issues>, <https://docs.github.com/en/graphql/guides/using-graphql-clients>
- gotchas: "input (required): `AddCloseIssueReferencesInput!` for the mutation."; "issueId (required): ID of the issue to add closing references to; the target must be an issue, not a pull request."; "pullRequestIds (required): IDs of pull requests to link as closing references; limit 10."; "clientMutationId: Unique identifier for the client performing the mutation."; "issue: Returned issue the closing references were added to; select fields such as `id` in the mutation."; "Prerequisite: Send a POST request to `https://api.github.com/graphql` with an `Authorization: Bearer <TOKEN>` header; use a GitHub personal access token."

### GitHub GraphQL ResolveReviewThread accepts resolutionReason (2026-08-25)
- slug: github-graphql-resolvereviewthread-accepts-resolutionreason-6534fd6fb7ca
- score: 0.97

How to use it:

When resolving a pull request review thread, pass `resolutionReason` in `ResolveReviewThreadInput` to record why it was resolved.

Examples:

```
mutation { resolveReviewThread(input: { threadId: "<thread-node-id>", resolutionReason: ADDRESSED }) { thread { isResolved } } }
```

- why_it_matters: Resolve a pull request review thread with a specified resolution reason through the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-08-25>, <https://docs.github.com/en/graphql/reference/pulls>
- gotchas: "threadId (required): ID of the thread to resolve."; "resolutionReason: Reason a Copilot code review thread was resolved; enum values: `ADDRESSED`, `INVALID`, `WONT_FIX`."; "ADDRESSED: Allowed `PullRequestReviewThreadResolutionReason` enum value."; "INVALID: Allowed `PullRequestReviewThreadResolutionReason` enum value."; "WONT_FIX: Allowed `PullRequestReviewThreadResolutionReason` enum value."

### GitHub GraphQL API adds issue field updates to UpdateIssueInput (2026-08-24)
- slug: github-graphql-api-adds-issue-field-updates-to-updateissueinput-9b2a2a4f2f6c
- score: 0.97

How to use it:

When updating an issue’s field values, use `updateIssue` with `issueFieldUpdates`; each entry names the field and operation, and may include a value. Choose `ADD`, `CLEAR`, `REMOVE`, or `SET` according to the documented operation behavior.

Examples:

```
mutation { updateIssue(input: { id: "<issue-node-id>", issueFieldUpdates: [{ fieldName: "<field-name>", operation: SET, value: "<value>" }] }) { issue { id } } }
```

- why_it_matters: Update an issue's field values through the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-08-24>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "updateIssue.input.id (required): Node ID of the issue to modify."; "UpdateIssueInput.issueFieldUpdates: Issue field updates resolved by field and option names."; "IssueFieldUpdateInput.fieldName (required): Name of the issue field."; "IssueFieldUpdateInput.operation (required): Operation on the field value: `ADD` sets a scalar or adds multi-select options; `CLEAR` clears the value; `REMOVE` removes multi-select options; `SET` replaces the value."; "IssueFieldUpdateInput.value: Value or comma-separated option names for the operation."

### GitHub GraphQL API issue filters accept issue field values (2026-08-12)
- slug: github-graphql-api-issue-filters-accept-issue-field-values-8d7bb8b905b0
- score: 0.90

How to use it:

When maintaining issue triage by project field values, filter the repository’s issues with `IssueFilters.issueFieldValues` and provide exactly one field selector and one value filter per filter object.

Examples:

```
query { repository(owner: "<owner>", name: "<repo>") { issues(first: 100, filterBy: { issueFieldValues: [{ fieldName: "<field-name>", textValue: "<text>" }] }) { nodes { id title } } } }
```

- why_it_matters: Filter issues by values in their project fields when maintaining an issue-triage workflow.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-08-12>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "filterBy: Issue connection filtering options."; "issueFieldValues: List issues where each supplied issue field value filter matches."; "fieldId: Issue field ID selector; provide exactly one of `fieldId` or `fieldName`."; "fieldName: Issue field name selector; provide exactly one of `fieldName` or `fieldId`."; "dateValue: Matches a date field value in `YYYY-MM-DD` format."; "numberValue: Matches a numeric field value."; "textValue: Matches a text field value."; "singleSelectOptionId: Matches a single-select option by ID."; "singleSelectOptionValue: Matches a single-select option by name."; "multiSelectOptionIds: Matches issues containing all listed multi-select option IDs."; "multiSelectOptionValues: Matches issues containing all listed multi-select option names."; "IssueFieldValueFilter value argument (required): Exactly one of `dateValue`, `numberValue`, `textValue`, `singleSelectOptionId`, `singleSelectOptionValue`, `multiSelectOptionIds`, or `multiSelectOptionValues` should be provided."

### GitHub GraphQL API adds deleteProjectV2View mutation (2026-07-28)
- slug: github-graphql-api-adds-deleteprojectv2view-mutation-46a646c07b2b
- score: 0.98

How to use it:

When deleting a view from a GitHub project, call `deleteProjectV2View` with its view ID. The mutation returns the deleted view in `projectV2View`.

Examples:

```
mutation { deleteProjectV2View(input: {viewId: "<VIEW_ID>"}) { projectV2View { id } } }
```

- why_it_matters: Delete a view from a GitHub project through the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-07-28>, <https://docs.github.com/en/graphql/reference/projects>
- gotchas: "input (required): `DeleteProjectV2ViewInput!` input object for the mutation."; "viewId (required): `ID!`; ID of the view to delete."; "clientMutationId: `String`; optional unique identifier for the client performing the mutation."; "projectV2View: Mutation payload field; the deleted view."

### GitHub GraphQL API adds updateProjectV2View mutation (2026-07-28)
- slug: github-graphql-api-adds-updateprojectv2view-mutation-fe4e471b3bf1
- score: 0.93

How to use it:

When a GitHub Project view needs a new name, filter, or layout, call `updateProjectV2View` with its required `viewId` and the fields to change. Select `projectV2View` from the mutation payload to get the updated view.

Examples:

```
gh api graphql -f query='mutation { updateProjectV2View(input: {viewId: "<VIEW_ID>", name: "<NAME>", filter: "<FILTER>", layout: TABLE_LAYOUT}) { projectV2View { id name layout } } }'
```

- why_it_matters: Update a view's name, filter, or layout in a GitHub project through the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-07-28>, <https://docs.github.com/en/graphql/reference/projects>, <https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects>
- gotchas: "input (required): The `UpdateProjectV2ViewInput` object."; "viewId (required): ID of the view to update."; "name: New view name."; "filter: New view filter."; "layout: New layout: `BOARD_LAYOUT`, `ROADMAP_LAYOUT`, or `TABLE_LAYOUT`."; "clientMutationId: Unique identifier for the client performing the mutation."; "Prerequisite: For GitHub CLI, authenticate with `gh auth login --scopes \"project\"` before running commands that edit projects."; "Docs conflict: The current GraphQL reference also lists an optional `configuration` input field; the changelog says it was added after 2026-07-28, so it is not included here."

### GitHub Projects GraphQL API adds multi-select field support (2026-07-27)
- slug: github-projects-graphql-api-adds-multi-select-field-support-18e250521e3e
- score: 0.98

How to use it:

When a Projects custom field needs multiple selections, create or update it with `dataType: MULTI_SELECT` and `multiSelectOptions`; to assign or read selections, use `multiSelectOptionIds` and query the item value’s `options` or `value`.

Examples:

```
gh api graphql -f query='mutation { createProjectV2Field(input: { projectId: "<project-id>", name: "<field-name>", dataType: MULTI_SELECT, multiSelectOptions: [{ name: "<option-name>", description: "<description>", color: BLUE }] }) { projectV2Field { ... on ProjectV2MultiSelectField { id name multiSelectOptions { id name } } } } }'
```

```
gh api graphql -f query='mutation { updateProjectV2Field(input: { fieldId: "<field-id>", multiSelectOptions: [{ id: "<existing-option-id>", name: "<option-name>", description: "<description>", color: BLUE }] }) { projectV2Field { ... on ProjectV2MultiSelectField { id name multiSelectOptions { id name } } } } }'
```

```
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "<project-id>", itemId: "<item-id>", fieldId: "<field-id>", value: { multiSelectOptionIds: ["<option-id>"] } }) { projectV2Item { fieldValues(first: 20) { nodes { ... on ProjectV2ItemFieldMultiSelectValue { value options { id name } } } } } } }'
```

- why_it_matters: Create or update a GitHub Projects custom field that stores multiple selected options, or read its selected values.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-07-27>, <https://docs.github.com/en/graphql/reference/projects>, <https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects>
- gotchas: "CreateProjectV2FieldInput.projectId (required): Project node ID in which to create the field."; "CreateProjectV2FieldInput.name (required): Field name."; "CreateProjectV2FieldInput.dataType (required): Field type; use `MULTI_SELECT`. At least one `multiSelectOptions` value is required for this type."; "CreateProjectV2FieldInput.multiSelectOptions: Option list; at least one value is required when `dataType` is `MULTI_SELECT`. Each option has `name` (required), `description` (required), `color` (required; enum), and `id` (optional; preserves an existing option’s identity during updates). Docs do not state these keys are mutually exclusive."; "UpdateProjectV2FieldInput.fieldId (required): ID of the field to update."; "UpdateProjectV2FieldInput.multiSelectOptions: Options for a MULTI_SELECT field. Empty input is ignored; supplied values overwrite existing options, so fetch and include existing options for partial updates. Each option has `name`, `description`, and `color` required; `id` is optional and preserves existing option identity. Docs do not state these keys are mutually exclusive."; "ProjectV2MultiSelectField.multiSelectOptions(names:): Returns options; optional `names` filters by case-insensitive option names."; "UpdateProjectV2ItemFieldValueInput.projectId (required): Project node ID."; "UpdateProjectV2ItemFieldValueInput.itemId (required): ID of the item to update."; "UpdateProjectV2ItemFieldValueInput.fieldId (required): ID of the field to update."; "UpdateProjectV2ItemFieldValueInput.value (required): Field value input; only one value can be updated at a time."; "ProjectV2FieldValue.multiSelectOptionIds: IDs of the multi-select options to set."; "ProjectV2ItemFieldMultiSelectValue.options: Selected multi-select options."; "ProjectV2ItemFieldMultiSelectValue.value (required): Comma-separated names of selected options."; "Prerequisite: Authenticate GitHub CLI with `gh auth login --scopes \"project\"` for mutations; use `read:project` if only querying. The docs also allow a classic personal access token or GitHub App installation access token with the corresponding scope."

### GitHub GraphQL issue mutations accept assignee update inputs (2026-07-14)
- slug: github-graphql-issue-mutations-accept-assignee-update-inputs-5bf081beca26
- score: 0.93

How to use it:

When a repository workflow updates issue assignees through GitHub GraphQL, use the `assignees` input field where applicable. Supply each assignee’s required `actorId` and any needed optional metadata.

Examples:

```
mutation { addAssigneesToAssignable(input: { assignableId: "<ASSIGNABLE_ID>", assignees: [{ actorId: "<ACTOR_ID>", confidence: HIGH, rationale: "<REASON>", suggest: false }] }) { assignable { id } } }
```

- why_it_matters: When maintaining a repository workflow that updates issue assignees through GitHub GraphQL, use the new assignee input fields where applicable.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-07-14>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "AddAssigneesToAssignableInput.assignableId (required): ID of the assignable object to add assignees to."; "AddAssigneesToAssignableInput.assignees: Array of `AssigneeUpdateInput` actors to add; mutually exclusive with `assigneeIds`."; "AssigneeUpdateInput.actorId (required): ID of the user or bot to assign."; "AssigneeUpdateInput.confidence: Agent’s confidence level; allowed values are `HIGH`, `MEDIUM`, and `LOW`."; "AssigneeUpdateInput.rationale: Reason for selecting the assignee; maximum 280 characters."; "AssigneeUpdateInput.suggest: If true, stores the value as a pending suggestion for human review instead of applying it directly."; "ReplaceActorsForAssignableInput.assignees: Array of `AssigneeUpdateInput` actors to set as assignees; mutually exclusive with `actorIds` and `actorLogins`."; "UpdateIssueInput.assignees: Array of `AssigneeUpdateInput` actors to assign to the issue; mutually exclusive with `assigneeIds`."

### GitHub GraphQL issue updates accept issue type metadata (2026-07-14)
- slug: github-graphql-issue-updates-accept-issue-type-metadata-5d26ec5a78a5
- score: 0.91

How to use it:

When a workflow updates an issue type through `updateIssue`, set `issueType` in the `UpdateIssueInput` object. Supply the issue type ID and, optionally, confidence, rationale, or a human-review suggestion flag.

Examples:

```
mutation UpdateIssueType($input: UpdateIssueInput!) { updateIssue(input: $input) { issue { id } } }
```

```
{ "input": { "id": "<issue-node-id>", "issueType": { "issueTypeId": "<issue-type-id>", "confidence": "HIGH", "rationale": "<reason>", "suggest": false } } }
```

- why_it_matters: When maintaining a repository workflow that updates issue types through GitHub GraphQL, use the new issue type input where applicable.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-07-14>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "UpdateIssueInput.id (required): Node ID of the issue to modify."; "UpdateIssueInput.issueType: Issue type update object; mutually exclusive with `issueTypeId`."; "IssueTypeUpdateInput.issueTypeId: Issue type ID to set; pass null to clear the issue type."; "IssueTypeUpdateInput.confidence: Agent confidence level: `HIGH`, `MEDIUM`, or `LOW`."; "IssueTypeUpdateInput.rationale: Reason for the selected value; maximum 280 characters."; "IssueTypeUpdateInput.suggest: If true, stores the value as a pending suggestion for human review instead of applying it."

### GitHub GraphQL adds pull request dismissal restrictions (2026-07-08)
- slug: github-graphql-adds-pull-request-dismissal-restrictions-3e3e744f7dc9
- score: 0.93

How to use it:

When configuring pull request parameters, set `dismissalRestriction` with `enabled` and optional `allowedActors` IDs to restrict who can dismiss reviews. The schema docs confirm these fields, but do not show a complete mutation invocation for applying them.

- why_it_matters: Configure dismissal restrictions for a pull request using the GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-07-08>, <https://docs.github.com/en/enterprise-cloud@latest/graphql/reference/pulls>
- gotchas: "PullRequestParametersInput.dismissalRestriction: Input for specifying people, teams, or apps allowed to dismiss pull request reviews."; "DismissalRestrictionInput.enabled (required): Whether to restrict review dismissal to specific actors (`Boolean!`)."; "DismissalRestrictionInput.allowedActors: IDs of people, teams, or apps allowed to dismiss pull request reviews (`[ID!]`)."; "DismissalRestriction.enabled: Object field exposed by the schema; the reference describes the corresponding input field as whether review dismissal is restricted to specific actors."; "DismissalRestriction.allowedActors: Object field exposed by the schema; the reference describes the corresponding input as specifying people, teams, or apps allowed to dismiss reviews."

### GitHub GraphQL API adds repository issue-creation policy fields (2026-06-10)
- slug: github-graphql-api-adds-repository-issue-creation-policy-fields-814678b9e1f4
- score: 0.96

How to use it:

When inspecting a repository’s issue-creation policy, query `issueCreationPolicy` and `viewerCanCreateIssues` to retrieve the policy and whether the current user can create issues.

Examples:

```
query { repository(owner: "<owner>", name: "<repository>") { issueCreationPolicy viewerCanCreateIssues } }
```

- why_it_matters: Inspect a repository's issue-creation policy and whether the viewer can create issues.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-06-10>, <https://docs.github.com/en/graphql/reference/repos>
- gotchas: "owner (required): Repository owner login or organization name, passed to `repository(owner:)`."; "repository (required): Repository name, passed to `repository(name:)`."; "issueCreationPolicy: Repository field; policy controlling who can create issues. `ALL` means anyone; `COLLABORATORS_ONLY` means only collaborators."; "viewerCanCreateIssues: Repository field indicating whether the current user can create issues."

### github-graphql-api ProjectV2.items filters by archived state (2026-06-08)
- slug: github-graphql-api-projectv2-items-filters-by-archived-state-a252043c0738
- score: 0.93

How to use it:

When querying a project’s items, pass `archivedStates` to filter by archive status. Use `ARCHIVED` for archived items or `NOT_ARCHIVED` for unarchived items; the default returns only unarchived items.

Examples:

```
query { node(id: "<PROJECT_ID>") { ... on ProjectV2 { items(first: 20, archivedStates: [ARCHIVED]) { nodes { id } } } } }
```

- why_it_matters: Query ProjectV2 items filtered by whether they are archived.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-06-08>, <https://docs.github.com/en/graphql/reference/projects>
- gotchas: "archivedStates: Filters items by archived state. Defaults to returning only items that are not archived."; "ARCHIVED: Selects archived project items."; "NOT_ARCHIVED: Selects project items that are not archived."; "first: Returns the first n items from the connection."; "id (required): The project node ID supplied to `node`."

### github-graphql-api adds multi-select issue field schema (2026-06-04)
- slug: github-graphql-api-adds-multi-select-issue-field-schema-f68ed82e6cc3
- score: 0.98

How to use it:

When querying or setting multi-select issue fields, use the `IssueFieldMultiSelect` and `IssueFieldMultiSelectValue` types. Select the field’s `options`, read a value’s `options` or `value`, and pass `multiSelectOptionIds` when creating or updating a field value.

Examples:

```
query { node(id: "<issue-field-id>") { ... on IssueFieldMultiSelect { id name options { id name } } } }
```

```
query { node(id: "<issue-field-value-id>") { ... on IssueFieldMultiSelectValue { id value options { id name } } } }
```

```
mutation { createIssueFieldValue(input: { issueId: "<issue-id>", issueField: { fieldId: "<field-id>", multiSelectOptionIds: ["<option-id>"] } }) { issueFieldValue { ... on IssueFieldMultiSelectValue { value options { id name } } } } }
```

- why_it_matters: Query or update multi-select issue field values in a repository integration using the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-06-04>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "IssueFieldMultiSelect.options: Options configured for the multi-select field."; "IssueFieldMultiSelectValue.options: Options selected for the issue field value."; "IssueFieldMultiSelectValue.value: Comma-separated names of the selected options."; "IssueFieldCreateOrUpdateInput.fieldId (required): ID of the issue field."; "IssueFieldCreateOrUpdateInput.multiSelectOptionIds: IDs of the selected options for a multi-select field."; "CreateIssueFieldValueInput.issueId (required): ID of the issue."; "CreateIssueFieldValueInput.issueField (required): Issue field value to create; takes `IssueFieldCreateOrUpdateInput`."

### GitHub GraphQL API adds the archivePullRequest mutation (2026-04-15)
- slug: github-graphql-api-adds-the-archivepullrequest-mutation-c8ef7fd383a1
- score: 0.95

How to use it:

When the pull request should be archived, call `Mutation.archivePullRequest` with its node ID. The mutation closes, locks, and archives the pull request; the GraphQL reference says only repository admins can archive it.

Examples:

```
curl -H "Authorization: bearer <TOKEN>" -X POST -d '{"query":"mutation($input: ArchivePullRequestInput!) { archivePullRequest(input: $input) { pullRequest { id } clientMutationId } }","variables":{"input":{"pullRequestId":"<PULL_REQUEST_NODE_ID>"}}}' https://api.github.com/graphql
```

- why_it_matters: Archive a pull request through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-04-15>, <https://docs.github.com/en/enterprise-cloud%40latest/graphql/guides/forming-calls-with-graphql>, <https://docs.github.com/en/enterprise-cloud%40latest/graphql/reference/pulls>
- gotchas: "input (required): `ArchivePullRequestInput!` argument for `archivePullRequest`."; "pullRequestId (required): Node ID of the pull request to archive (`ID!`)."; "clientMutationId: Optional unique identifier for the client (`String`). The payload can return it."; "pullRequest: Payload field containing the archived pull request (`PullRequest`)."; "Prerequisite: Authenticate to the GraphQL API using a personal access token, GitHub App, or OAuth app; required token scopes or permissions depend on the requested data/action. GitHub.com endpoint: `https://api.github.com/graphql`."; "Prerequisite: The GraphQL reference says only repository admins can archive pull requests."; "Docs conflict: GitHub's GraphQL reference says only repository admins can archive pull requests, while its archive guide says anyone with triage, write, maintain, or admin role can archive them: https://docs.github.com/en/enterprise-cloud%40latest/graphql/reference/pulls ; https://docs.github.com/en/communities/moderating-comments-and-conversations/archive-pull-requests"

### GitHub GraphQL API adds the unarchivePullRequest mutation (2026-04-15)
- slug: github-graphql-api-adds-the-unarchivepullrequest-mutation-1d747e0546c8
- score: 0.97

How to use it:

If the pull request is archived, send `unarchivePullRequest` with its node ID. The mutation removes the archived flag but does not reopen or unlock the pull request.

Examples:

```
curl -H "Authorization: bearer <TOKEN>" -X POST -d '{"query":"mutation { unarchivePullRequest(input: {pullRequestId: \"<PULL_REQUEST_NODE_ID>\"}) { pullRequest { id } clientMutationId } }"}' https://api.github.com/graphql
```

- why_it_matters: Unarchive a pull request through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-04-15>, <https://docs.github.com/en/graphql/guides/forming-calls-with-graphql>, <https://docs.github.com/en/graphql/reference/pulls>
- gotchas: "input (required): `UnarchivePullRequestInput!` argument to `unarchivePullRequest`."; "pullRequestId (required): `ID!` identifying the pull request to unarchive."; "clientMutationId: Optional `String` input field; the payload also offers a `clientMutationId` return field."; "pullRequest: Optional payload field returning the unarchived pull request."; "Prerequisite: Authenticate to the GraphQL API with a personal access token, GitHub App, or OAuth app; the needed permissions depend on the requested data. Users with the triage role or higher can unarchive pull requests."

### GitHub GraphQL adds issue comment pinning and pin status (2026-03-12)
- slug: github-graphql-adds-issue-comment-pinning-and-pin-status-f0e8a66d80c5
- score: 0.99

How to use it:

When pinning a comment on an issue, call `pinIssueComment` with the comment’s node ID; use `IssueComment`’s `Pinnable` fields and the issue’s `pinnedIssueComment` to inspect pin status and details. Comment pinning is not supported on pull requests.

Examples:

```
mutation { pinIssueComment(input: { issueCommentId: "<ISSUE_COMMENT_NODE_ID>" }) { issueComment { id isPinned pinnedAt pinnedBy { login } viewerCanPin viewerCanUnpin } } }
```

```
query { node(id: "<ISSUE_NODE_ID>") { ... on Issue { pinnedIssueComment { issue { id } issueComment { id } pinnedAt pinnedBy { login } } } } }
```

- why_it_matters: Pin or inspect pinned issue comments through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "PinIssueCommentInput.issueCommentId (required): ID of the issue comment to pin; comment pinning is unsupported on pull requests."; "PinIssueCommentInput.clientMutationId: Unique identifier for the client performing the mutation."; "Pinnable.isPinned: Whether the entity is currently pinned."; "Pinnable.pinnedAt: When the entity was pinned."; "Pinnable.pinnedBy: User who pinned the entity."; "Pinnable.viewerCanPin: Whether the current viewer can pin the entity."; "Pinnable.viewerCanUnpin: Whether the current viewer can unpin the entity."; "PinnedIssueComment.issue: Issue the pinned comment belongs to."; "PinnedIssueComment.issueComment: Comment that was pinned."; "PinnedIssueComment.pinnedAt: When the comment was pinned."; "PinnedIssueComment.pinnedBy: Actor who pinned the comment."; "Prerequisite: The target must be an issue comment; GitHub documents that comment pinning is not supported on pull requests."; "The `PinIssueComment` input requires `issueCommentId`."

### GitHub GraphQL adds issue field schema and value types (2026-03-12)
- slug: github-graphql-adds-issue-field-schema-and-value-types-7811d89f39ac
- score: 0.97

How to use it:

When tooling must read issue field definitions and values, query `Repository.issueFields` and `Issue.issueFieldValues`, selecting concrete union members with inline fragments. Use `IssueFieldCommon` and `IssueFieldValueCommon` for shared fields; `IssueFieldCreateOrUpdateInput` is for supplying values, not reading them.

Examples:

```
query($owner: String!, $name: String!, $first: Int!) { repository(owner: $owner, name: $name) { issueFields(first: $first) { nodes { __typename ... on IssueFieldCommon { id name createdAt dataType description visibility } ... on IssueFieldSingleSelect { options { id name color priority } } } pageInfo { hasNextPage endCursor } } } }
```

```
query($owner: String!, $name: String!, $number: Int!, $first: Int!) { repository(owner: $owner, name: $name) { issue(number: $number) { issueFieldValues(first: $first) { nodes { __typename ... on IssueFieldValueCommon { field { __typename ... on IssueFieldCommon { id name dataType } } } ... on IssueFieldDateValue { value } ... on IssueFieldNumberValue { value } ... on IssueFieldSingleSelectValue { name } ... on IssueFieldTextValue { value } } pageInfo { hasNextPage endCursor } } } } }
```

- why_it_matters: Build tooling that reads issue field definitions and values through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/repos>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "repository(owner:, name:) (required): Selects the repository by owner and name."; "issue(number:) (required): Selects the issue by its number in the repository."; "first: Returns the first n connection elements; use `pageInfo` and `after` to paginate."; "IssueFieldCreateOrUpdateInput.fieldId (required): ID of the issue field."; "IssueFieldCreateOrUpdateInput.dateValue: Date field value."; "IssueFieldCreateOrUpdateInput.numberValue: Numeric field value."; "IssueFieldCreateOrUpdateInput.singleSelectOptionId: ID of the selected single-select option."; "IssueFieldCreateOrUpdateInput.textValue: Text field value."; "IssueFieldCreateOrUpdateInput.delete: Set true to delete the field value."; "IssueFieldSingleSelectOptionInput.color (required): Option display color: BLUE, GRAY, GREEN, ORANGE, PINK, PURPLE, RED, or YELLOW."; "IssueFieldSingleSelectOptionInput.name (required): Option name."; "IssueFieldSingleSelectOptionInput.priority (required): Option priority order."; "IssueFieldOrder.direction (required): Ordering direction."; "IssueFieldOrder.field (required): Ordering field: NAME or CREATED_AT."; "`IssueFieldCreateOrUpdateInput` requires `fieldId`; its value fields include `dateValue`, `numberValue`, `singleSelectOptionId`, and `textValue`."; "The added field data types are `DATE`, `NUMBER`, `TEXT`, and `SINGLE_SELECT`."; "The added visibility values are `ALL` and `ORG_ONLY`."; "The added issue field order values are `NAME` and `CREATED_AT`."; "Single-select options require `color`, `name`, and `priority`; `color` accepts `BLUE`, `GRAY`, `GREEN`, `ORANGE`, `PINK`, `PURPLE`, `RED`, or `YELLOW`."; "Docs conflict: Current official schema docs list the additional `MULTI_SELECT` field and value types, beyond the four types stated in the card; current docs also add `multiSelectOptionIds`, `confidence`, `rationale`, and `suggest` to `IssueFieldCreateOrUpdateInput`. The current docs are newer than the 2026-03-12 change. https://docs.github.com/en/graphql/reference/issues"; "Docs conflict: Current changelog documents `Repository.issueFields` and its pagination/order arguments in a later schema change than 2026-03-12. https://docs.github.com/en/graphql/overview/changelog?apiVersion=2022-11-28"

### GitHub GraphQL adds project issue field value types (2026-03-12)
- slug: github-graphql-adds-project-issue-field-value-types-351d9986acb4
- score: 0.93

How to use it:

When reading issue field values on project items, query `fieldValues` for `ProjectV2ItemIssueFieldValue` and select its `field` and `issueFieldValue`. Handle the returned union as date, number, single-select, or text values. ([Projects reference](https://docs.github.com/en/graphql/reference/projects), [Issues reference](https://docs.github.com/en/graphql/reference/issues))

Examples:

```
gh api graphql -f query='
query {
  node(id: "<PROJECT_ID>") {
    ... on ProjectV2 {
      items(first: 20) {
        nodes {
          id
          fieldValues(first: 20) {
            nodes {
              ... on ProjectV2ItemIssueFieldValue {
                field { ... on ProjectV2FieldCommon { name } }
                issueFieldValue {
                  ... on IssueFieldDateValue { value }
                  ... on IssueFieldNumberValue { value }
                  ... on IssueFieldSingleSelectValue { name }
                  ... on IssueFieldTextValue { value }
                }
              }
            }
          }
        }
      }
    }
  }
}'
```

- why_it_matters: Read issue field values associated with project items through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/projects>, <https://docs.github.com/en/graphql/reference/issues>, <https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects>
- gotchas: "node(id:) (required): Pass the project node ID; the query narrows the node to `ProjectV2`."; "items(first:): Requests the first n project items."; "fieldValues(first:): Requests the first n field values for each project item."; "ProjectV2ItemIssueFieldValue.field: The project field containing this value; the query selects its name."; "ProjectV2ItemIssueFieldValue.issueFieldValue: The issue field value, returned as the `ProjectV2IssueFieldValues` union."; "IssueFieldDateValue: Union member for date field values; its `value` is a string."; "IssueFieldNumberValue: Union member for number field values; its `value` is a float."; "IssueFieldSingleSelectValue: Union member for single-select values; `name` is the option's name."; "IssueFieldTextValue: Union member for text field values; its `value` is a string."; "Prerequisite: Authenticate with a token that has the `read:project` scope to read projects; GitHub CLI authentication can use `gh auth login --scopes \"read:project\"`."; "Docs conflict: Current documentation includes later additions to `IssueFieldSingleSelectValue`: `optionId` on 2026-03-17 and `value` on 2026-03-31. The query uses `name`, which the current reference documents; these later fields postdate the card. https://docs.github.com/en/graphql/overview/changelog"

### GitHub GraphQL `createIssueField` mutation adds issue fields (2026-03-12)
- slug: github-graphql-createissuefield-mutation-adds-issue-fields-236a5fc5de13
- score: 0.96

How to use it:

When creating an issue field for an organization, call `Mutation.createIssueField` with `dataType`, `name`, and the organization’s `ownerId`. Include `options` when applicable, such as for single-select fields.

Examples:

```
mutation { createIssueField(input: { dataType: <ISSUE_FIELD_DATA_TYPE>, name: "<field name>", ownerId: "<organization node ID>" }) { issueField { __typename } } }
```

- why_it_matters: Create an issue field through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "input (required): `CreateIssueFieldInput` for the mutation."; "dataType (required): Issue field data type (`IssueFieldDataType`)."; "name (required): Name of the issue field."; "ownerId (required): ID of the organization where the field will be created."; "description: Description of the issue field."; "visibility: Visibility of the issue field (`IssueFieldVisibility`)."; "clientMutationId: Unique identifier for the client performing the mutation."; "options: Options for the issue field if applicable; each option has required `color` (associated color), required `name` (option name), required `priority` (list priority), and optional `description`."; "options[].color (required): Color associated with the single-select option (`IssueFieldSingleSelectOptionColor`)."; "options[].name (required): Name of the single-select option."; "options[].priority (required): Priority of the option in the list."; "options[].description: Description of the option."; "`dataType`, `name`, and `ownerId` are required inputs."; "`options` has type `[IssueFieldSingleSelectOption!]`."

### GitHub GraphQL `deleteIssueField` mutation deletes issue fields (2026-03-12)
- slug: github-graphql-deleteissuefield-mutation-deletes-issue-fields-f07cd01b73bf
- score: 0.98

How to use it:

To delete an issue field, call `deleteIssueField` with its required field ID and request the deleted field in the response.

Examples:

```
mutation DeleteIssueField($input: DeleteIssueFieldInput!) { deleteIssueField(input: $input) { issueField { id } } }
```

- why_it_matters: Delete an issue field through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "input (required): Input object for `deleteIssueField`."; "input.fieldId (required): ID of the field to delete."; "input.clientMutationId: Unique identifier for the client performing the mutation."; "deleteIssueField.issueField: Deleted issue field returned by the mutation; this example selects its `id`."; "deleteIssueField.clientMutationId: Unique identifier for the client performing the mutation, returned in the payload."; "`fieldId` is a required input."

### GitHub GraphQL `deleteIssueFieldValue` mutation deletes issue field values (2026-03-12)
- slug: github-graphql-deleteissuefieldvalue-mutation-deletes-issue-field-values-7b63e4d2a102
- score: 0.98

How to use it:

When deleting an issue field value, call `Mutation.deleteIssueFieldValue` with the required field and issue IDs. Select `success` to check whether deletion succeeded.

Examples:

```
curl -H "Authorization: bearer <TOKEN>" -H "Content-Type: application/json" -X POST --data-raw '{"query":"mutation($input: DeleteIssueFieldValueInput!) { deleteIssueFieldValue(input: $input) { success } }","variables":{"input":{"fieldId":"<FIELD_ID>","issueId":"<ISSUE_ID>"}}}' https://api.github.com/graphql
```

- why_it_matters: Delete an issue field value from an issue through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/guides/forming-calls-with-graphql>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "input (required): `DeleteIssueFieldValueInput!` argument to `deleteIssueFieldValue`."; "fieldId (required): `ID!`; ID of the field to delete."; "issueId (required): `ID!`; ID of the issue."; "clientMutationId: `String`; unique identifier for the client performing the mutation."; "success: `Boolean`; whether the field value was successfully deleted."; "Prerequisite: Authenticate to the GraphQL API with a personal access token, GitHub App, or OAuth app. Required scopes or permissions depend on the requested data; the docs do not specify the exact permission for this mutation."; "Prerequisite: For GitHub.com, send the GraphQL request to `https://api.github.com/graphql` as an HTTP POST."; "`fieldId` and `issueId` are required inputs."

### GitHub GraphQL `setIssueFieldValue` mutation adds issue field values (2026-03-12)
- slug: github-graphql-setissuefieldvalue-mutation-adds-issue-field-values-678f12838214
- score: 0.92

How to use it:

When setting issue field values, call `Mutation.setIssueFieldValue` with the issue’s node ID and an `issueFields` list. For a text field, include its field ID and `textValue`.

Examples:

```
curl -H "Authorization: bearer <TOKEN>" -H "Content-Type: application/json" -X POST -d '{"query":"mutation($input: SetIssueFieldValueInput!) { setIssueFieldValue(input: $input) { issueFieldValues { __typename } } }","variables":{"input":{"issueId":"<ISSUE_NODE_ID>","issueFields":[{"fieldId":"<FIELD_NODE_ID>","textValue":"<TEXT>"}]}}}' https://api.github.com/graphql
```

- why_it_matters: Set one or more issue field values through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/issues>, <https://docs.github.com/en/graphql/guides/forming-calls-with-graphql>, <https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/adding-and-managing-issue-fields>
- gotchas: "input.issueId (required): Node ID of the issue whose field value to set."; "input.issueFields (required): List of issue fields to set; each item uses `IssueFieldCreateOrUpdateInput`."; "input.clientMutationId: Unique identifier for the client performing the mutation."; "issueFields[].fieldId (required): ID of the issue field."; "issueFields[].dateValue: Date value for a date field."; "issueFields[].delete: Set to true to delete the field value."; "issueFields[].multiSelectOptionIds: IDs of selected options for a multi-select field."; "issueFields[].numberValue: Numeric value for a number field."; "issueFields[].rationale: Optional rationale for the selected value; maximum 280 characters."; "issueFields[].singleSelectOptionId: ID of the selected option for a single-select field."; "issueFields[].suggest: If true, store as a pending suggestion for human review instead of applying directly."; "issueFields[].textValue: Text value for a text field."; "Prerequisite: The token must have the scopes or permissions required for the requested resource; GitHub’s GraphQL guide says requirements depend on the requested data but does not specify a mutation permission for this operation."; "Prerequisite: The actor needs triage access or greater to the repository to set and edit issue field values."; "`issueId` and `issueFields` are required inputs."

### GitHub GraphQL `unpinIssueComment` mutation unpins comments (2026-03-12)
- slug: github-graphql-unpinissuecomment-mutation-unpins-comments-e7aaa2e348fd
- score: 0.98

How to use it:

When you need to unpin an issue comment, call `Mutation.unpinIssueComment` with its required comment node ID. The mutation returns the unpinned `issueComment`; comment pinning is not supported on pull requests.

Examples:

```
mutation UnpinIssueComment($input: UnpinIssueCommentInput!) { unpinIssueComment(input: $input) { issueComment { id } } }
# Variables: {"input":{"issueCommentId":"<issue-comment-node-id>"}}
```

- why_it_matters: Unpin an issue comment through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-03-12>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "input (required): `UnpinIssueCommentInput!` for the mutation."; "issueCommentId (required): `ID!`; node ID of the issue comment to unpin. Comment pinning is not supported on pull requests."; "clientMutationId: `String`; unique identifier for the client performing the mutation."; "issueComment: Return field containing the issue comment that was unpinned."; "`issueCommentId` is a required input."

### GitHub GraphQL issue mutations accept agentAssignment (2026-02-07)
- slug: github-graphql-issue-mutations-accept-agentassignment-a812dde3deae
- score: 0.92

How to use it:

When creating or assigning an issue to Copilot with a listed GraphQL mutation, include `agentAssignment` in its input to configure the assignment.

Examples:

```
gh api graphql -f query='mutation { createIssue(input: { repositoryId: "<REPOSITORY_ID>", title: "<TITLE>", body: "<DETAILS>", assigneeIds: ["<BOT_ID>"], agentAssignment: { targetRepositoryId: "<REPOSITORY_ID>", baseRef: "<BRANCH>", customInstructions: "<INSTRUCTIONS>", customAgent: "<CUSTOM_AGENT>" } }) { issue { id title } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
```

```
gh api graphql -f query='mutation { addAssigneesToAssignable(input: { assignableId: "<ISSUE_ID>", assigneeIds: ["<BOT_ID>"], agentAssignment: { targetRepositoryId: "<REPOSITORY_ID>", baseRef: "<BRANCH>", customInstructions: "<INSTRUCTIONS>", customAgent: "<CUSTOM_AGENT>" } }) { assignable { ... on Issue { id title } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
```

```
gh api graphql -f query='mutation { updateIssue(input: { id: "<ISSUE_ID>", assigneeIds: ["<BOT_ID>"], agentAssignment: { targetRepositoryId: "<REPOSITORY_ID>", baseRef: "<BRANCH>", customInstructions: "<INSTRUCTIONS>", customAgent: "<CUSTOM_AGENT>" } }) { issue { id title } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
```

- why_it_matters: Create or update an issue, or change its assignees, with agent assignment details through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-02-07>, <https://docs.github.com/en/enterprise-cloud@latest/copilot/how-tos/use-copilot-agents/cloud-agent/use-cloud-agent-via-the-api>, <https://docs.github.com/en/graphql/reference/issues>
- gotchas: "Version: 2026-02-07"; "agentAssignment: Optional configuration for assigning Copilot or an AI agent; accepted by the four mutation input objects named in the release note."; "baseRef: String branch reference. Example uses `main`."; "customAgent: String custom agent value; example uses an empty string."; "customInstructions: String instructions customizing the task."; "targetRepositoryId: ID of the target repository."; "Prerequisite: Include the `GraphQL-Features` header with `issues_copilot_assignment_api_support` and `coding_agent_model_selection`."; "Prerequisite: For Copilot assignment, authenticate with a user token and ensure Copilot cloud agent is enabled for the user and repository. The docs demonstrate checking `suggestedActors` for Copilot."

### GitHub GraphQL API adds Mutation.requestReviewsByLogin (2026-01-22)
- slug: github-graphql-api-adds-mutation-requestreviewsbylogin-21dd159f4acd
- score: 0.96

How to use it:

When requesting reviews on a pull request by login, call `Mutation.requestReviewsByLogin` with its required pull request ID and the applicable bot logins, team slugs, or user logins. Set `union` to add reviewers to the set; it defaults to `false`.

Examples:

```
mutation { requestReviewsByLogin(input: { pullRequestId: "<pull-request-node-id>", userLogins: ["<user-login>"], union: true }) { pullRequest { id } } }
```

- why_it_matters: Request reviews on a pull request by bot, team, or user login from a coding workflow.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-01-22>, <https://docs.github.com/en/enterprise-cloud@latest/graphql/reference/pulls>
- gotchas: "input (required): `RequestReviewsByLoginInput!` argument for the mutation."; "pullRequestId (required): Node ID of the pull request to modify."; "botLogins: Bot logins to request reviews from; include the `[bot]` suffix."; "teamSlugs: Team slugs to request reviews from, in `org/team-slug` format."; "userLogins: User login strings to request reviews from."; "union: Add users to the set rather than replace; defaults to `false`. The docs do not state whether reviewer input fields are mutually exclusive."; "clientMutationId: Unique identifier for the client performing the mutation."

### GitHub GraphQL `PullRequest.suggestedReviewerActors` accepts `query` (2026-01-21)
- slug: github-graphql-pullrequest-suggestedrevieweractors-accepts-query-ab2fe2d1bddd
- score: 0.91

How to use it:

When you need reviewer actor suggestions filtered by a search string, pass `query` to `PullRequest.suggestedReviewerActors`; it searches actor usernames and logins. [GitHub Pull requests reference](https://docs.github.com/en/enterprise-cloud@latest/graphql/reference/pulls)

Examples:

```
query { repository(owner: "<owner>", name: "<repo>") { pullRequest(number: <number>) { suggestedReviewerActors(query: "<search string>", first: 10) { nodes { reviewer { __typename } } } } } }
```

- why_it_matters: Query suggested reviewer actors for a pull request using a search string.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-01-21>, <https://docs.github.com/en/enterprise-cloud@latest/graphql/reference/pulls>, <https://docs.github.com/en/graphql/reference/repos>
- gotchas: "query: Search actors by user name and login."; "first: Return the first n connection elements."; "owner (required): Repository owner login. The query uses the repository field."; "name (required): Repository name. The query uses the repository field."; "number (required): Pull request number. The query uses the pullRequest field."

### GitHub GraphQL adds TeamDiscussion queries and mutations (2026-01-06)
- slug: github-graphql-adds-teamdiscussion-queries-and-mutations-c1b305dbfa04
- score: 0.98

How to use it:

If your target schema includes the Team Discussions fields, use the `Team.discussion` or `Team.discussions` fields to read discussions and the `createTeamDiscussion`, `updateTeamDiscussion`, or `deleteTeamDiscussion` mutations to change them. The current changelog documents these fields as removed on 2026-01-08, so check the schema available to your target before using them.

Examples:

```
mutation { createTeamDiscussion(input: { teamId: "<team-node-id>", title: "<title>", body: "<markdown-body>", private: false }) { teamDiscussion { id number title body } } }
```

```
mutation { updateTeamDiscussion(input: { id: "<discussion-node-id>", title: "<title>", body: "<markdown-body>", pinned: false }) { teamDiscussion { id number title body isPinned } } }
```

```
query { team(slug: "<org>/<team>") { discussion(number: <number>) { id number title body } discussions(first: 10, isPinned: false) { nodes { id number title body } pageInfo { hasNextPage endCursor } } } }
```

- why_it_matters: Create, update, delete, or query team discussions through the GitHub GraphQL API.
- sources: <https://docs.github.com/en/graphql/overview/changelog#schema-changes-for-2026-01-06>, <https://docs.github.com/en/enterprise-server%403.20/graphql/reference/other>, <https://docs.github.com/en/enterprise-server%403.20/graphql/reference/teams>, <https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions>
- gotchas: "CreateTeamDiscussionInput.teamId (required): Team node ID."; "CreateTeamDiscussionInput.title (required): Discussion title."; "CreateTeamDiscussionInput.body: Discussion body."; "CreateTeamDiscussionInput.private: Whether the discussion is private."; "CreateTeamDiscussionInput.clientMutationId: Client identifier for the mutation."; "UpdateTeamDiscussionInput.id (required): Discussion node ID."; "UpdateTeamDiscussionInput.title: Discussion title."; "UpdateTeamDiscussionInput.body: Discussion body."; "UpdateTeamDiscussionInput.bodyVersion: Body version value."; "UpdateTeamDiscussionInput.pinned: Whether the discussion is pinned."; "UpdateTeamDiscussionInput.clientMutationId: Client identifier for the mutation."; "DeleteTeamDiscussionInput.id (required): Discussion node ID to delete."; "DeleteTeamDiscussionInput.clientMutationId: Client identifier for the mutation."; "Team.discussion.number (required): Sequence number of the discussion to fetch."; "Team.discussions.after: Cursor after which to return connection items."; "Team.discussions.before: Cursor before which to return connection items."; "Team.discussions.first: Return the first n connection items."; "Team.discussions.last: Return the last n connection items."; "Team.discussions.isPinned: Filter discussions by pinned status."; "Team.discussions.orderBy: Order the discussion connection."; "Prerequisite: GraphQL API requests require authentication; the discussions guide documents `repo` scope for private repositories and `public_repo` scope for public repositories."; "Docs conflict: GitHub's GraphQL changelog lists the team-discussion types, mutations, and Team fields as removed on 2026-01-08, two days after the card's stated change date. Confirm the target schema before acting; the current documentation does not support treating these as continuously available."; "Docs conflict: The available Team Discussions reference is for GitHub Enterprise Server 3.20; its schema may differ from GitHub.com."
