`pull_request_review_write` combines create/submit/delete into one tool, making fine-grained permissions by method impossible
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Comienza en tools.go, especialmente con las referencias a FeatureFlagPullRequestsGranular y el registro de pull_request_review_write; compáralos con las herramientas granulares existentes para pull requests. Determina cómo hacer que create, submit_pending y delete_pending sean distinguibles para los clientes MCP, preservando al mismo tiempo el comportamiento del indicador de funcionalidades. Se considera completado cuando la capa de permisos puede separar estas operaciones, con pruebas o documentación que cubran el comportamiento resultante.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Today the pull_request_review_write tool consolidates three distinct review operations behind a single tool name with a method enum:
createsubmit_pendingdelete_pending
The description is:
Create and/or submit, delete review of a pull request.
Available methods:
create: Create a new review of a pull request. Ifeventparameter is provided, the review is submitted. Ifeventis omitted, a pending review is created.submit_pending: Submit an existing pending review of a pull request.delete_pending: Delete an existing pending review of a pull request.
This consolidation plays nicely with context/token budgets, but it makes permissions in MCP clients effectively all-or-nothing for these three operations, because most clients (Claude Code, etc.) attach permissions at the tool name level, not on the method argument.
My use case
- I want to always allow
createfor pending reviews, so the agent can open a pending review and add inline comments. - But I do not want the agent to be allowed to submit or delete reviews automatically; those should always require explicit human approval (or be disallowed entirely).
With the current API surface, the client can't express this as:
- allow:
create_pending_review - ask/deny:
submit_pending_review - ask/deny:
delete_pending_review
because all three are encoded as pull_request_review_write with different method values. There's no way to distinguish them in a tool-level permission model.
Request
Please provide a way to make these operations distinguishable at the tool/permission layer. A few possible approaches:
1. Split into separate tools (preferred for permissioning)
For example:
create_pending_pull_request_reviewsubmit_pending_pull_request_reviewdelete_pending_pull_request_review
This would let MCP clients and policy engines attach different permissions to creation vs submission/deletion, while still sharing implementation internally.
2. Add a server-side permission hint or annotation per method
If full tool splitting is not desirable, consider some form of metadata/annotation that lets clients understand that:
method: "create"(withoutevent) is "low-risk, pending-only"method: "submit_pending"andmethod: "delete_pending"are "higher-risk, finalizing/destructive"
so they can enforce stricter prompts or denials for the latter two, even under a single tool name.
3. At minimum, document the permissioning implications
A note in the README or docs that "if your client permission model is per-tool-name, you cannot allow create while denying submit_pending/delete_pending" would help users reason about the tradeoff.
Why this matters
There's a meaningful security and UX distinction between:
- letting an agent open a pending review and propose comments, versus
- letting an agent actually submit or delete reviews without human oversight.
Right now, clients that operate at the MCP tool level either have to:
- allow all three (
create+submit_pending+delete_pending), or - prompt/deny all three,
which removes a useful "middle ground" of: always allow pending review creation, but gate final submission/deletion.
A small API surface adjustment (or richer annotations) would make it much easier for clients to implement that pattern.
Related
FeatureFlagPullRequestsGranularalready exists in the codebase as a feature flag for splitting granular PR tools — this issue is in the same spirit for the review write path.- The
tools.gocomment mentions:// Granular pull request tools (feature-flagged, replace consolidated update_pull_request/pull_request_review_write), suggesting this split has already been considered.
- Lenguaje dominante
- Go
- Estrellas
- 33.1k
- Forks
- 5k
- Merge medio
- 2 d 1 h
- PR fusionados (30 d)
- 25
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de github/github-mcp-server
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
github/github-mcp-server#3235 ·
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
github/github-mcp-server#3042 · 2 comentarios ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
github/github-mcp-server#3032 · 1 reacción ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
github/github-mcp-server#2803 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
github/github-mcp-server#2740 ·
Todos los issues de github/github-mcp-server
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
NVIDIA/gpu-operator#2955 ·
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Broadcast Documentation Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
kovidgoyal/kitty#10516 ·
-
CVE-2024-24786 CPE mismatch Abiertobug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
cisagov/vulnrichment#337 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100