Feature: per-toolset (or per-tool) read-only mode instead of global GITHUB_READ_ONLY
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- github, go
- Área
- backend-api-design, security
Línea de trabajo
Comienza rastreando cómo el servidor gestiona GITHUB_READ_ONLY y la configuración existente de GITHUB_TOOLSETS; después, identifica dónde se despachan las herramientas de escritura. Compara los scopes propuestos por conjunto de herramientas y por herramienta con el comportamiento actual de la configuración. Se considera terminado cuando se rechazan las operaciones de escritura seleccionadas, mientras las lecturas y las escrituras permitidas explícitamente siguen funcionando, con cobertura para la configuración elegida.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature request
GITHUB_READ_ONLY is currently all-or-nothing: when set, the whole server rejects every write operation. There is no way to keep some domains writable while others stay read-only.
Use case
Running the server as a local coding-agent tool with a single GitHub token, I want a common "safe by default" posture:
- Reads everywhere (repos, issues, pull requests) allowed without human confirmation
- Writes (merge PR, close/label issues, push comments) gated behind explicit user approval
Today the only way to approximate this is to launch two full server instances — one with GITHUB_READ_ONLY=1 and one without — and rely on agent-side conventions to route writes to the second instance. That is fragile because nothing on the server side prevents an agent from calling write tools on the writable instance, and it doubles the tool surface / process count.
Proposed solution
Any of the following would fix it:
- Per-toolset read-only, e.g.
GITHUB_READ_ONLY_TOOLSETS=issues,pull_requests(writes rejected only for the listed toolsets), or - Per-tool read-only overrides, e.g. a
GITHUB_READ_ONLY_TOOLS=merge_pull_request,create_issuedeny list, or - A "write-confirm" layer that rejects write tools unless an opt-in env var for that specific call is present.
Option 1 seems the most consistent with the existing GITHUB_TOOLSETS design.
Alternatives considered
- Token scoping (fine-grained PAT without write scopes): does not help, because the same token is also expected to perform approved writes.
- Dual-instance setup: works only as a convention, not enforcement (described above).
- 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