Skip to content

refactor!: remove IFC security labels - #3628

Open
JoannaaKL wants to merge 1 commit into
mainfrom
joannaakl-remove-ifc-fides
Open

JoannaaKL wants to merge 1 commit into
mainfrom
joannaakl-remove-ifc-fides

Conversation

@JoannaaKL

Copy link
Copy Markdown
Collaborator

Summary

Removes IFC (information flow control) security labels. Tool results no longer carry _meta.ifc, and the ifc_labels feature flag is gone.

Why

IFC labeling is being removed from this server, along with the extra visibility API calls it needed. No linked issue.

What changed

  • Deleted pkg/ifc and pkg/github/ifc_labels.go, and removed every label call site.
  • Removed the ifc_labels flag; passing it is now ignored like any unknown flag.
  • Removed code that only fed the labels: isPrivate/public GraphQL fields, repo/project visibility lookups, the search post-process hook, and the draft-release/published-advisory checks.
  • Removed IFC-only tests and fixtures, and the _meta output in script/get-me.

MCP impact

  • No tool or API changes
  • Tool schema or behavior changed: behavior only. With ifc_labels enabled, results no longer include _meta.ifc; schemas and default output are unchanged. Removed exported Go API: pkg/ifc, FetchRepoIsPrivate, FetchProjectIsPrivate, FeatureFlagIFCLabels, IssueQueryResult.GetIsPrivate.
  • New tool added

Prompts tested (tool changes only)

  • None; not run against a live server. Default tool output is unchanged and the unit tests pass.

Security / limits

  • No security or limits impact
  • Auth / permissions considered
  • Data exposure, filtering, or token/size limits considered: removes opt-in security metadata only; lockdown mode and content sanitization are unchanged.

Tool renaming

  • I am renaming tools as part of this PR (e.g. a part of a consolidation effort)
    • I have added the new tool aliases in deprecated_tool_aliases.go
  • I am not renaming tools as part of this PR

Note: if you're renaming tools, you must add the tool aliases. For more information on how to do so, please refer to the official docs.

Lint & tests

  • Linted locally with ./script/lint: passed, 0 issues
  • Tested locally with ./script/test: passed

Also passed: go vet -tags e2e ./e2e/.... script/generate-docs produced no changes.

Docs

  • Not needed: no docs mention IFC, and script/generate-docs produced no changes.
  • Updated (README / docs / examples)

Remove the IFC (information flow control) labels that tool results
carried in _meta.ifc behind the ifc_labels feature flag, along with the
code that only existed to compute them: the pkg/ifc package, the label
helpers, the flag, the isPrivate/public GraphQL fields, the repository
and project visibility lookups, and IFC-only tests.

Removes exported Go API: package ifc, FetchRepoIsPrivate,
FetchProjectIsPrivate, FeatureFlagIFCLabels and
IssueQueryResult.GetIsPrivate.
Copilot AI auto review requested due to automatic review settings October 30, 2026 08:33
@JoannaaKL
JoannaaKL requested a review from a team as a code owner October 30, 2026 08:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Removing _meta.ifc security labels and exported IFC APIs requires maintainer confirmation that external enforcement systems and downstream clients have migrated, which cannot be verified from this repository snapshot.

No open issues 🎉

What changed in this PR

Removes the GitHub MCP Server’s opt-in information flow control (IFC) labeling layer and the visibility requests used to support it. Tool schemas and default result payloads remain unchanged; IFC-enabled clients lose _meta.ifc, and related exported Go APIs are removed.

Changes:

  • Deletes the IFC package, label helpers, and ifc_labels feature flag.
  • Removes label attachment, IFC-only visibility lookups, GraphQL fields, and search hooks.
  • Updates tests, fixtures, and the get-me script to reflect unlabeled results.
File Description
script/​get-me Prints profile JSON without the metadata wrapper.
pkg/​ifc/​ifc.go Deletes security-label types and policies.
pkg/​ifc/​ifc_test.go Deletes label-policy tests.
pkg/​http/​server_test.go Removes the IFC feature-flag expectation.
pkg/​github/​typed_security_outputs_test.go Removes IFC assertions and visibility fixtures.
pkg/​github/​typed_search_outputs_test.go Removes search and repository label assertions.
pkg/​github/​typed_repository_outputs_test.go Removes IFC protocol-parity assertions.
pkg/​github/​typed_repository_commit_outputs_test.go Removes commit-label setup and assertions.
pkg/​github/​typed_projects_outputs_test.go Updates GraphQL fixtures and removes IFC tests.
pkg/​github/​typed_governance_outputs_test.go Removes label-metadata tests and visibility fixtures.
pkg/​github/​typed_git_gist_outputs_test.go Removes IFC cases while retaining scope and lockdown checks.
pkg/​github/​typed_discussion_notification_outputs_test.go Removes discussion and notification label assertions.
pkg/​github/​typed_consolidated_pull_request_outputs_test.go Removes IFC setup from content-parity tests.
pkg/​github/​typed_consolidated_issue_enrichment_test.go Retains structured-output checks without IFC assertions.
pkg/​github/​typed_compatibility_test.go Deletes blame-label compatibility tests.
pkg/​github/​typed_actions_outputs_test.go Retains annotation checks without IFC test dimensions.
pkg/​github/​typed_account_repository_search_test.go Removes search-label setup and assertions.
pkg/​github/​security_advisories.go Removes advisory labels and publication-state classification.
pkg/​github/​security_advisories_test.go Deletes advisory-label tests.
pkg/​github/​secret_scanning.go Removes alert labels and updates explanatory comments.
pkg/​github/​search.go Removes labels from repository, code, account, and commit searches.
pkg/​github/​search_utils.go Deletes the search metadata post-processing hook.
pkg/​github/​search_test.go Deletes repository-search IFC tests.
pkg/​github/​repositories.go Removes repository labels, visibility helper, and draft classification.
pkg/​github/​repositories_test.go Deletes file, commit, and release label tests.
pkg/​github/​pullrequests.go Removes read-result labels and search-label hooks.
pkg/​github/​projects.go Removes visibility-only queries and simplifies helper returns.
pkg/​github/​projects_v2_test.go Updates view fixtures and removes label assertions.
pkg/​github/​projects_test.go Deletes IFC tests and updates status-update fixtures.
pkg/​github/​notifications.go Removes notification-detail labels.
pkg/​github/​labels.go Removes repository-label result annotations.
pkg/​github/​issues.go Removes issue labels, privacy query fields, and IFC search helpers.
pkg/​github/​issues_test.go Deletes IFC tests and updates issue-query expectations.
pkg/​github/​issue_fields.go Removes field-definition security labels.
pkg/​github/​ifc_labels.go Deletes shared label-attachment helpers.
pkg/​github/​git.go Removes repository-tree labels.
pkg/​github/​gists.go Removes gist result labels.
pkg/​github/​find_duplicate.go Removes duplicate-candidate labels.
pkg/​github/​find_duplicate_test.go Deletes duplicate-candidate label tests.
pkg/​github/​fields_filtering_test.go Removes privacy fields from issue-query fixtures.
pkg/​github/​feature_flags.go Deletes the IFC flag constant and allowlist entry.
pkg/​github/​feature_flags_test.go Removes IFC flag-resolution cases.
pkg/​github/​discussions.go Removes discussion and category result labels.
pkg/​github/​dependabot.go Removes Dependabot alert labels.
pkg/​github/​context_tools.go Removes profile and team-membership labels.
pkg/​github/​context_tools_test.go Deletes profile-label feature-flag tests.
pkg/​github/​code_scanning.go Removes code-scanning alert labels.
pkg/​github/​actions.go Removes labels from Actions resources and logs.
internal/​ghmcp/​server_test.go Updates the stdio GraphQL fixture for the reduced query.

Review effort: Max (auto)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants