Skip to content

[guard-coverage] Guard coverage gap: 1 operations from github-mcp-server / GitHub CLI not fully covered #10703

Description

@github-actions

Summary

The GitHub guard does not fully cover 1 operation from the github-mcp-server and/or GitHub CLI. This may allow write operations to bypass DIFC classification or leave read operations without proper secrecy/integrity labeling.

  • MCP tools scanned: 89
  • CLI write commands scanned: 82
  • Guard-covered write tools (tools.rs): 131
  • Tools with explicit DIFC rules (tool_rules.rs): 89
  • New gaps found this run: 1

MCP Tool Classification Gaps (tools.rs)

None identified in this run.


MCP Tool DIFC Labeling Gaps (tool_rules.rs)

These MCP tools exist in the upstream server but have no explicit match arm in apply_tool_labels in guards/github-guard/rust-guard/src/labels/tool_rules.rs. They fall through to default label handling, which may not correctly apply repo-scoped secrecy/integrity labeling:

Tool Name Data Scope Suggested Labels Risk
pull_request_read repo-scoped PR metadata, diffs, comments, reviews, checks secrecy: S(repo) for private repos; integrity: author/review-state-aware PR labeling consistent with get_pull_request Medium

Why this is a gap

pull_request_read is a first-class upstream MCP tool, appears in cache state from prior runs, and is used as the canonical read surface for PR details. The guard already handles get_pull_request with explicit PR-specific logic, but pull_request_read is absent from the upstream README-derived tool inventory for this run while still surfacing as a guard-managed operation and previously observed gap. That leaves an inventory/guard mismatch that should be resolved deliberately rather than relying on drift.

Suggested fix for tool_rules.rs

Either:

  1. Add pull_request_read to the same explicit match arm as get_pull_request and list_pull_requests, if the upstream tool is still intended to exist, or
  2. Remove stale references if the upstream tool has been retired in favor of another canonical name.

Suggested match arm shape:

"get_pull_request"
| "pull_request_read"
| "list_pull_requests"
| "list_pull_requests_ff_fields_param" => {
    // existing PR labeling logic
}

GitHub CLI-Only Gaps

None identified in this run. The sampled mutating CLI operations reviewed here were already covered semantically by existing guard entries, including repository archive/unarchive/rename, deploy keys, release asset deletion/upload, workflow dispatch/enable/disable, secrets, variables, PR review/comment/ready/close/reopen, issue close/reopen/comment/transfer/pin/unpin, and label cloning via existing label write semantics.


Stale Guard Entries (bonus)

No additional stale write-operation entries were confirmed beyond the pull_request_read inventory mismatch above.


References

Generated by GitHub Guard Coverage Checker (MCP + CLI) · gpt54 · 56.3 AIC · ⊞ 34.8K ·

  • expires on Aug 19, 2026, 3:14 AM UTC

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions