Feature: per-toolset (or per-tool) read-only mode instead of global GITHUB_READ_ONLY

Đang mở
#3,229 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
42/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
github, go

Hướng nghiên cứu

Bắt đầu bằng cách theo dõi cách máy chủ xử lý GITHUB_READ_ONLY và cấu hình GITHUB_TOOLSETS hiện có, sau đó xác định nơi các công cụ ghi được phân phối. So sánh các scope được đề xuất theo toolset và theo tool với hành vi cấu hình hiện tại. Được coi là hoàn thành khi các thao tác ghi được chọn bị từ chối, trong khi các thao tác đọc và các thao tác ghi được cho phép rõ ràng vẫn tiếp tục hoạt động, với độ bao phủ cho cấu hình đã chọn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

enhancement policies & governance
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:

  1. Per-toolset read-only, e.g. GITHUB_READ_ONLY_TOOLSETS=issues,pull_requests (writes rejected only for the listed toolsets), or
  2. Per-tool read-only overrides, e.g. a GITHUB_READ_ONLY_TOOLS=merge_pull_request,create_issue deny list, or
  3. 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).
Ngôn ngữ chính
Go
Star
33.1k
Fork
5k
Merge trung bình
2 ngày 15 giờ
Pull request đã merge (30 ngày)
27

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của github/github-mcp-server

Tất cả issue của github/github-mcp-server

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.