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:
- 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
- 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 · ◷
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 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_labelsinguards/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:pull_request_readS(repo)for private repos; integrity: author/review-state-aware PR labeling consistent withget_pull_requestWhy this is a gap
pull_request_readis 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 handlesget_pull_requestwith explicit PR-specific logic, butpull_request_readis 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:
pull_request_readto the same explicit match arm asget_pull_requestandlist_pull_requests, if the upstream tool is still intended to exist, orSuggested match arm shape:
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_readinventory mismatch above.References