update_issue_labels is annotated destructiveHint: false but replaces (removes) existing labels
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
pkg/github/issues_granular.go:368-375 を読み、update_issue_labels と update_issue_assignees の破壊的なアノテーションを、それぞれの置換動作と比較してください。ツールのアノテーションに関する近くのテストを確認してください。置換に対応する両方のツールが破壊的な動作を示し、関連するテストが通れば完了です。ツールは機能フラグ issues_granular の背後にあります。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
The granular update_issue_labels tool sets destructiveHint: false. Its own description says "This replaces the current labels with the provided list", and that is what it does: labels not in the list are removed. A host that keys confirmation on destructiveHint may not prompt for a call that removes labels.
This is the opposite of #3281 / PR #3293, which are about additive tools that omit the hint. Here the hint is explicitly false on a tool that removes data. Open PR #2742 adds method: replace|add|remove but keeps replace as the default and does not change the annotation. update_issue_assignees uses the same annotation and the same replace pattern (issues_granular.go:238). That one was not tested live.
A previous PR, #2471, which marked the granular update_issue_* tools destructive for client egress policy, was closed unmerged. This issue is narrower: it concerns only the two replace-semantics tools, where the description and the annotation disagree.
The tool is behind the issues_granular feature flag, and this is an annotation-accuracy item only. To enable it, start the server with --features=issues_granular, which swaps the consolidated issue_write for the granular issue tools.
Code (main 99d6d650, unchanged since v2.1.0): pkg/github/issues_granular.go:368-375 (update_issue_labels, DestructiveHint: new(false) at :373).
Affected version
v2.1.0 (image sha256:f6056fc1…0f8a, commit 4bcdcdf8) and main nightly (image sha256:48bc16d0…338f, revision 99d6d650), both with --features=issues_granular.
Steps to reproduce the behavior
tools/listshowsupdate_issue_labelsannotations{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}.- Issue N has labels
[c, d].
(123 stands for the issue/PR number.) - Call:
{"name":"update_issue_labels","arguments":{"owner":"OWNER","repo":"REPO","issue_number":123,"labels":["a"]}} - Result: success. Labels are now
[a]:canddwere removed.
Expected vs actual behavior
Expected: a tool that can remove labels is annotated destructiveHint: true, or omits the hint, which defaults to true.
Actual: destructiveHint: false.
Suggested fix: set DestructiveHint: new(true) on update_issue_labels (and update_issue_assignees) while replace is possible. Annotations are static, so this holds even if PR #2742 adds non-destructive methods.
Logs
annotations: {"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Update Issue Labels"}
labels before [c, d] -> update_issue_labels labels=["a"] -> OK -> labels after [a] (v2.1.0 and main)
Found during an independent audit of v2.1.0 on a throwaway org and private test repo. Prepared with AI assistance (Claude Code); reproduced by two independent test runs before filing.
- 主要言語
- Go
- スター
- 34.2k
- フォーク
- 5.3k
- 平均マージ
- 5日 18時間
- マージ済み PR(30日)
- 13
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
github/github-mcp-server のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
github/github-mcp-server#3758 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
github/github-mcp-server#3729 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
github/github-mcp-server#3722 ·
メンテナーはふだん 2 日以内に返信
-
Insiders Feedback: PR created UI doesn't link to the PR対応中かも @genius-0963 が 5 日前に担当しました。 オープンbug insiders user-experience
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
github/github-mcp-server#3658 ·
メンテナーはふだん 2 日以内に返信
-
Inconsistent parameter names対応中かも @huong8373tt-beep が 10 日前に担当しました。 オープンbug tool-improvement
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
github/github-mcp-server#3605 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
github/github-mcp-server の issue をすべて見る
似ている issue
-
ready-for-agent
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
hexlet-basics/hexlet-basics#962 ·
メンテナーはふだん 1 日以内に返信
-
imapproxy closeForMaintenance grace timer calls clientConn.Close() before closeMaintenanceTransport対応中かも @dejanstrbac が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
renovate-health
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
Netcracker/qubership-network-latency-exporter#267 ·
メンテナーはふだん 1 日以内に返信
-
Network capture does not work対応中かも @KSpaceer が今日担当しました。 オープンkind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
aquasecurity/tracee#5395 ·