Skip to content

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

Description

@github-actions

Summary

The GitHub guard does not fully cover 6 operation(s) from the github-mcp-server and/or GitHub CLI. These operations are mutating upstream MCP tools that are present in the current upstream server but missing from the guard's write/read-write classification inventory, so they may bypass DIFC write classification.

  • MCP tools scanned: 89
  • CLI write commands scanned: 41
  • Guard-covered upstream MCP write tools (tools.rs): 58
  • Guard-covered CLI/synthetic write tools (tools.rs): 41
  • Tools with explicit DIFC rules (tool_rules.rs): classification-only audit; many explicit rules exist, but this report focuses on missing write inventory coverage
  • New gaps found this run: 6

MCP Tool Classification Gaps (tools.rs)

These upstream MCP tools perform mutating operations but are missing from the upstream MCP buckets in guards/github-guard/rust-guard/src/tools.rs:

Tool Name Operation Type Suggested Classification Notes
dismiss_notification write WRITE_OPERATIONS Dismisses a notification thread state for the authenticated user
mark_all_notifications_read write WRITE_OPERATIONS Marks all notifications read for the authenticated user
manage_notification_subscription read-write READ_WRITE_OPERATIONS Sets or clears a thread subscription and can optionally return current subscription state
manage_repository_notification_subscription read-write READ_WRITE_OPERATIONS Sets or clears a repository notification subscription and can optionally return current subscription state
star_repository write WRITE_OPERATIONS Adds a star relationship from the authenticated user to a repository
unstar_repository write WRITE_OPERATIONS Removes a star relationship from the authenticated user to a repository

Suggested fix for tools.rs

pub const WRITE_OPERATIONS: &[&str] = &[
    // ... existing entries ...
    "dismiss_notification",
    "mark_all_notifications_read",
    "star_repository",
    "unstar_repository",
];

pub const READ_WRITE_OPERATIONS: &[&str] = &[
    // ... existing entries ...
    "manage_notification_subscription",
    "manage_repository_notification_subscription",
];

MCP Tool DIFC Labeling Follow-up (tool_rules.rs)

These tools should also receive explicit labeling rules if they do not already have dedicated match arms after classification is added:

Tool Name Data Scope Suggested Labels Risk
dismiss_notification user-scoped secrecy: private, integrity: collaborator/user-owned state Medium
mark_all_notifications_read user-scoped secrecy: private, integrity: collaborator/user-owned state Medium
manage_notification_subscription user-scoped thread state secrecy: private, integrity: collaborator/user-owned state Medium
manage_repository_notification_subscription user-scoped repo subscription state secrecy: private, integrity: collaborator/user-owned state with repo context when present Medium
star_repository user-scoped repo affinity secrecy: private, integrity: authenticated user action Low
unstar_repository user-scoped repo affinity secrecy: private, integrity: authenticated user action Low

Notes

These are new gaps relative to the cached prior report set. They come from current upstream github-mcp-server tool definitions in:

  • pkg/github/notifications.go
  • pkg/github/repositories.go

The rest of the previously investigated CLI-only operations appeared to be represented in the guard inventories or related synthetic buckets and were not re-reported here.

References

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

  • expires on Sep 12, 2026, 2:28 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