Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/contribution-check.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 0 additions & 15 deletions .github/workflows/daily-issues-report.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/discussion-task-miner.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/grumpy-reviewer.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 0 additions & 15 deletions .github/workflows/issue-arborist.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/issue-monster.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/issue-triage-agent.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/org-health-report.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/plan.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/pr-triage-agent.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/refiner.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/scout.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/smoke-agent-all-merged.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/smoke-agent-all-none.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/smoke-agent-public-approved.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/smoke-agent-public-none.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/smoke-agent-scoped-approved.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 0 additions & 15 deletions .github/workflows/stale-repo-identifier.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 0 additions & 12 deletions .github/workflows/weekly-blog-post-writer.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/weekly-issue-summary.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/weekly-safe-outputs-spec-review.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions .github/workflows/workflow-generator.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions pkg/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,11 @@ const (
// When enabled: no secret validation step is generated, copilot-requests: write permission is added,
// and the GitHub Actions token is used as the agentic engine secret.
CopilotRequestsFeatureFlag FeatureFlag = "copilot-requests"
// DIFCProxyFeatureFlag is the feature flag name for enabling the DIFC proxy.
// When enabled, the compiler injects DIFC proxy steps (start/stop) around pre-agent
// gh CLI steps and qmd indexing steps when guard policies are configured.
// By default (flag absent), DIFC proxy steps are not emitted.
DIFCProxyFeatureFlag FeatureFlag = "difc-proxy"
)

// Step IDs for pre-activation job
Expand Down
1 change: 1 addition & 0 deletions pkg/constants/constants_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ func TestFeatureFlagConstants(t *testing.T) {
{"MCPScriptsFeatureFlag", MCPScriptsFeatureFlag, "mcp-scripts"},
{"MCPGatewayFeatureFlag", MCPGatewayFeatureFlag, "mcp-gateway"},
{"DisableXPIAPromptFeatureFlag", DisableXPIAPromptFeatureFlag, "disable-xpia-prompt"},
{"DIFCProxyFeatureFlag", DIFCProxyFeatureFlag, "difc-proxy"},
}

for _, tt := range tests {
Expand Down
7 changes: 6 additions & 1 deletion pkg/workflow/compiler_difc_proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,16 @@ import (
var difcProxyLog = logger.New("workflow:difc_proxy")

// hasDIFCGuardsConfigured returns true if the GitHub tool has explicit guard policies configured
// (min-integrity is set). This is the base condition for DIFC proxy injection.
// (min-integrity is set) AND the "difc-proxy" feature flag is enabled.
// This is the base condition for DIFC proxy injection.
func hasDIFCGuardsConfigured(data *WorkflowData) bool {
if data == nil {
return false
}
if !isFeatureEnabled(constants.DIFCProxyFeatureFlag, data) {
difcProxyLog.Print("difc-proxy feature flag not enabled, skipping DIFC proxy injection")
return false
}
Comment on lines 70 to +80
Copy link

Copilot AI Mar 29, 2026

Choose a reason for hiding this comment

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

hasDIFCGuardsConfigured now returns false when guard policies are present but the difc-proxy feature flag is disabled. The updated doc comment explains this, but the function name is now misleading (it no longer answers whether guards are configured). Consider renaming to reflect the combined condition (e.g., guards configured and DIFC proxy feature enabled) or splitting the checks into two functions.

Copilot uses AI. Check for mistakes.
githubTool, hasGitHub := data.Tools["github"]
if !hasGitHub || githubTool == false {
return false
Expand Down
Loading
Loading