Skip to content

Add granular add_label_to_issue / remove_label_from_issue tools #2724

@pritesh-lahoti

Description

@pritesh-lahoti

Describe the feature or problem you'd like to solve

There is currently no way to remove a single label from an issue without replacing the issue's entire label set. The only issue-label tool, update_issue_labels (pkg/github/issues_granular.go), states in its own description: "This replaces the current labels with the provided list."

To remove one label, a client must:

  1. Read all current labels on the issue
  2. Compute the full set minus the one to remove
  3. Send the complete remaining set back

If step 1 or 2 is incomplete or stale, labels are silently dropped. This read-modify-write pattern is error-prone for agents and adds round-trips.

Proposed solution

Add discrete, non-destructive tools backed by the existing REST endpoints:

  • add_label_to_issuePOST /repos/{owner}/{repo}/issues/{issue_number}/labels
  • remove_label_from_issueDELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}

These operate on a single label without touching the rest of the issue's labels.

Precedent in the codebase

Sub-issues already follow exactly this granular pattern with add_sub_issue and remove_sub_issue, rather than forcing a full-set replacement. Labels-on-issues would benefit from the same treatment.

Additional context

Related to #2412 (bulk/batch label operations). This proposal is the single-issue, single-label complement: #2412 covers operating across many issues at once, while this covers safely adding/removing one label on one issue without clobbering the others.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions