@@ -13,7 +13,6 @@ import (
1313 "github.com/github/github-mcp-server/v2/internal/profiler"
1414 buffer "github.com/github/github-mcp-server/v2/pkg/buffer"
1515 ghErrors "github.com/github/github-mcp-server/v2/pkg/errors"
16- "github.com/github/github-mcp-server/v2/pkg/ifc"
1716 "github.com/github/github-mcp-server/v2/pkg/inventory"
1817 "github.com/github/github-mcp-server/v2/pkg/scopes"
1918 "github.com/github/github-mcp-server/v2/pkg/translations"
@@ -324,14 +323,6 @@ Use this tool to list workflows in a repository, or list workflow runs, jobs, an
324323 return nil , nil , fmt .Errorf ("failed to get GitHub client: %w" , err )
325324 }
326325
327- // attachIFC adds the IFC label to a successful Actions result when
328- // IFC labels are enabled. Workflow definitions, runs, jobs,
329- // artifacts and logs echo attacker-influenceable run output, so
330- // integrity is untrusted; confidentiality follows repo visibility.
331- attachIFC := func (r * mcp.CallToolResult ) * mcp.CallToolResult {
332- return attachRepoVisibilityIFCLabel (ctx , deps , client , owner , repo , r , ifc .LabelActionsResult )
333- }
334-
335326 var resourceIDInt int64
336327 var parseErr error
337328 switch method {
@@ -354,17 +345,13 @@ Use this tool to list workflows in a repository, or list workflow runs, jobs, an
354345
355346 switch method {
356347 case actionsMethodListWorkflows :
357- result , payload , err := listWorkflows (ctx , client , owner , repo , pagination )
358- return attachIFC (result ), payload , err
348+ return listWorkflows (ctx , client , owner , repo , pagination )
359349 case actionsMethodListWorkflowRuns :
360- result , payload , err := listWorkflowRuns (ctx , client , args .WorkflowRunsFilter , owner , repo , resourceID , pagination )
361- return attachIFC (result ), payload , err
350+ return listWorkflowRuns (ctx , client , args .WorkflowRunsFilter , owner , repo , resourceID , pagination )
362351 case actionsMethodListWorkflowJobs :
363- result , payload , err := listWorkflowJobs (ctx , client , args .WorkflowJobsFilter , owner , repo , resourceIDInt , pagination )
364- return attachIFC (result ), payload , err
352+ return listWorkflowJobs (ctx , client , args .WorkflowJobsFilter , owner , repo , resourceIDInt , pagination )
365353 case actionsMethodListWorkflowArtifacts :
366- result , payload , err := listWorkflowArtifacts (ctx , client , owner , repo , resourceIDInt , pagination )
367- return attachIFC (result ), payload , err
354+ return listWorkflowArtifacts (ctx , client , owner , repo , resourceIDInt , pagination )
368355 default :
369356 return utils .NewToolResultError (fmt .Sprintf ("unknown method: %s" , method )), nil , nil
370357 }
@@ -426,14 +413,6 @@ Use this tool to get details about individual workflows, workflow runs, jobs, an
426413 return nil , nil , fmt .Errorf ("failed to get GitHub client: %w" , err )
427414 }
428415
429- // attachIFC adds the IFC label to a successful Actions result when
430- // IFC labels are enabled. Workflow runs, jobs, artifacts, usage,
431- // and log URLs reflect attacker-influenceable run output, so
432- // integrity is untrusted; confidentiality follows repo visibility.
433- attachIFC := func (r * mcp.CallToolResult ) * mcp.CallToolResult {
434- return attachRepoVisibilityIFCLabel (ctx , deps , client , owner , repo , r , ifc .LabelActionsResult )
435- }
436-
437416 var resourceIDInt int64
438417 var parseErr error
439418 switch method {
@@ -449,23 +428,17 @@ Use this tool to get details about individual workflows, workflow runs, jobs, an
449428
450429 switch method {
451430 case actionsMethodGetWorkflow :
452- result , payload , err := getWorkflow (ctx , client , owner , repo , resourceID )
453- return attachIFC (result ), payload , err
431+ return getWorkflow (ctx , client , owner , repo , resourceID )
454432 case actionsMethodGetWorkflowRun :
455- result , payload , err := getWorkflowRun (ctx , client , owner , repo , resourceIDInt )
456- return attachIFC (result ), payload , err
433+ return getWorkflowRun (ctx , client , owner , repo , resourceIDInt )
457434 case actionsMethodGetWorkflowJob :
458- result , payload , err := getWorkflowJob (ctx , client , owner , repo , resourceIDInt )
459- return attachIFC (result ), payload , err
435+ return getWorkflowJob (ctx , client , owner , repo , resourceIDInt )
460436 case actionsMethodDownloadWorkflowArtifact :
461- result , payload , err := downloadWorkflowArtifact (ctx , client , owner , repo , resourceIDInt )
462- return attachIFC (result ), payload , err
437+ return downloadWorkflowArtifact (ctx , client , owner , repo , resourceIDInt )
463438 case actionsMethodGetWorkflowRunUsage :
464- result , payload , err := getWorkflowRunUsage (ctx , client , owner , repo , resourceIDInt )
465- return attachIFC (result ), payload , err
439+ return getWorkflowRunUsage (ctx , client , owner , repo , resourceIDInt )
466440 case actionsMethodGetWorkflowRunLogsURL :
467- result , payload , err := getWorkflowRunLogsURL (ctx , client , owner , repo , resourceIDInt )
468- return attachIFC (result ), payload , err
441+ return getWorkflowRunLogsURL (ctx , client , owner , repo , resourceIDInt )
469442 default :
470443 return utils .NewToolResultError (fmt .Sprintf ("unknown method: %s" , method )), nil , nil
471444 }
@@ -636,22 +609,12 @@ For single job logs, provide job_id. For all failed jobs in a run, provide run_i
636609 return utils .NewToolResultError ("job_id is required when failed_only is false" ), nil , nil
637610 }
638611
639- // attachIFC adds the IFC label to a successful result when IFC
640- // labels are enabled. Job logs echo attacker-influenceable run
641- // output, so integrity is untrusted; confidentiality follows repo
642- // visibility.
643- attachIFC := func (r * mcp.CallToolResult ) * mcp.CallToolResult {
644- return attachRepoVisibilityIFCLabel (ctx , deps , client , owner , repo , r , ifc .LabelActionsResult )
645- }
646-
647612 if failedOnly && runID > 0 {
648613 // Handle failed-only mode: get logs for all failed jobs in the workflow run
649- result , payload , err := handleFailedJobLogs (ctx , client , owner , repo , int64 (runID ), returnContent , tailLines , deps .GetContentWindowSize ())
650- return attachIFC (result ), payload , err
614+ return handleFailedJobLogs (ctx , client , owner , repo , int64 (runID ), returnContent , tailLines , deps .GetContentWindowSize ())
651615 } else if jobID > 0 {
652616 // Handle single job mode
653- result , payload , err := handleSingleJobLogs (ctx , client , owner , repo , int64 (jobID ), returnContent , tailLines , deps .GetContentWindowSize ())
654- return attachIFC (result ), payload , err
617+ return handleSingleJobLogs (ctx , client , owner , repo , int64 (jobID ), returnContent , tailLines , deps .GetContentWindowSize ())
655618 }
656619
657620 return utils .NewToolResultError ("Either job_id must be provided for single job logs, or run_id with failed_only=true for failed job logs" ), nil , nil
0 commit comments