Skip to content

refactor: migrate features.difc-proxy to tools.github.integrity-proxy (#refactor-integrity-proxy)#24065

Merged
pelikhan merged 9 commits intomainfrom
copilot/refactor-integrity-proxy-feature
Apr 2, 2026
Merged

refactor: migrate features.difc-proxy to tools.github.integrity-proxy (#refactor-integrity-proxy)#24065
pelikhan merged 9 commits intomainfrom
copilot/refactor-integrity-proxy-feature

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 2, 2026

Summary

Refactors the features.difc-proxy opt-in feature flag to a tools.github.integrity-proxy field with opt-out semantics (default enabled).

Changes

Behavioral change (opt-in → opt-out)

  • Before: DIFC proxy injection required features.difc-proxy: true to enable
  • After: DIFC proxy is enabled by default when tools.github.min-integrity is configured; set tools.github.integrity-proxy: false to disable

Files changed

File Change
pkg/workflow/compiler_difc_proxy.go Replace feature flag check with isIntegrityProxyEnabled() helper that reads tools.github.integrity-proxy
pkg/constants/feature_constants.go Mark DIFCProxyFeatureFlag as deprecated
pkg/parser/schemas/main_workflow_schema.json Add integrity-proxy: boolean field to tools.github (default: true)
pkg/cli/codemod_difc_proxy.go New codemod features-difc-proxy-to-tools-github
pkg/cli/fix_codemods.go Register new codemod
pkg/workflow/compiler_difc_proxy_test.go Update tests for default-enabled behavior
pkg/cli/codemod_difc_proxy_test.go Comprehensive codemod tests
actions/setup/sh/start_difc_proxy.sh Read proxy config from DIFC_PROXY_POLICY / DIFC_PROXY_IMAGE env vars instead of positional arguments
docs/src/content/docs/reference/frontmatter.md Update docs
docs/src/content/docs/reference/glossary.md Update glossary

DIFC proxy step config via environment variables

The generated Start DIFC proxy step now passes the guard policy JSON and container image through environment variables rather than inline shell arguments, avoiding shell-quoting issues:

env:
  GH_TOKEN: ...
  GITHUB_SERVER_URL: ${{ github.server_url }}
  DIFC_PROXY_POLICY: '{"allow-only":{"min-integrity":"approved","repos":"all"}}'
  DIFC_PROXY_IMAGE: 'ghcr.io/github/gh-aw-mcpg:v0.2.11'
run: |
  bash ${RUNNER_TEMP}/gh-aw/actions/start_difc_proxy.sh

Codemod (gh aw fix)

The features-difc-proxy-to-tools-github codemod automatically migrates existing workflows:

  • features.difc-proxy: true → removes the flag (proxy is now enabled by default)
  • features.difc-proxy: false → removes from features + adds tools.github.integrity-proxy: false to preserve opt-out intent

Testing

All existing tests updated. New tests added for:

  • Default-enabled proxy behavior (no flag needed)
  • integrity-proxy: false suppresses proxy
  • Codemod migration cases (true → remove, false → add opt-out field)
  • String 'false' handling
  • Dynamic indentation detection
  • DIFC_PROXY_POLICY and DIFC_PROXY_IMAGE env vars present in generated step


✨ PR Review Safe Output Test - Run 23900581947

💥 [THE END] — Illustrated by Smoke Claude ·

Copilot AI and others added 3 commits April 2, 2026 10:59
- Change hasDIFCGuardsConfigured to use opt-out model:
  proxy is enabled by default when guard policies are configured,
  disabled only when tools.github.integrity-proxy: false is set
- Add isIntegrityProxyDisabled helper function
- Add integrity-proxy boolean field to tools.github JSON schema (default: true)
- Mark DIFCProxyFeatureFlag constant as deprecated
- Add getDIFCProxyToIntegrityProxyCodemod codemod to migrate
  features.difc-proxy → tools.github.integrity-proxy
- Update compiler_difc_proxy_test.go to reflect default-enabled behavior
- Update docs (frontmatter.md, glossary.md)

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ab2b192b-e861-44a7-857e-16d65dbe2549

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
- Rename isIntegrityProxyDisabled to isIntegrityProxyEnabled (clearer semantics)
- Handle string 'false' explicitly in getDIFCProxyFlagValue
- Derive indentation dynamically from existing github block sub-fields
- Add test cases for string 'false' and indentation correctness

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ab2b192b-e861-44a7-857e-16d65dbe2549

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_SERVER_URL: ${{ github.server_url }}
run: |
bash ${RUNNER_TEMP}/gh-aw/actions/start_difc_proxy.sh '{"allow-only":{"min-integrity":"approved","repos":"all"}}' 'ghcr.io/github/gh-aw-mcpg:v0.2.11'
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@copilot store config in env var

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done in 8a781bb. The policy JSON and container image are now stored in DIFC_PROXY_POLICY and DIFC_PROXY_IMAGE env vars, and start_difc_proxy.sh reads them from the environment instead of positional arguments. The generated step now looks like:

env:
  GH_TOKEN: ...
  GITHUB_SERVER_URL: ${{ github.server_url }}
  DIFC_PROXY_POLICY: '{"allow-only":{"min-integrity":"approved","repos":"all"}}'
  DIFC_PROXY_IMAGE: 'ghcr.io/github/gh-aw-mcpg:v0.2.11'
run: |
  bash ${RUNNER_TEMP}/gh-aw/actions/start_difc_proxy.sh

@pelikhan pelikhan marked this pull request as ready for review April 2, 2026 11:29
Copilot AI review requested due to automatic review settings April 2, 2026 11:29
Move policy JSON and container image from start_difc_proxy.sh positional
arguments to DIFC_PROXY_POLICY and DIFC_PROXY_IMAGE environment variables.
This avoids shell-quoting issues and keeps the run: command clean.

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/0770a3b0-0a28-479e-8d10-4c0018bb4246

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 2, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw 7KHF2BINv7nZ (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw ase,codename,all-1 (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha on&#39; --ignore-path ../../../.prettierignore (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha on&#39; --ignore-path ../../../.pret.prettierignore (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from pelikhan April 2, 2026 11:31
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates DIFC proxy enablement from the opt-in features.difc-proxy flag to an opt-out tools.github.integrity-proxy setting (default enabled when guard policies are configured), and adds an automated codemod + schema/docs updates to support the new configuration.

Changes:

  • Update DIFC proxy injection gating to use tools.github.integrity-proxy (opt-out) instead of features.difc-proxy (opt-in).
  • Add schema + docs for tools.github.integrity-proxy and deprecate the old feature flag.
  • Introduce and register a gh aw fix codemod to migrate existing workflows; regenerate multiple locked workflows to include proxy steps and proxy log artifact paths.

Reviewed changes

Copilot reviewed 36 out of 36 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
pkg/workflow/compiler_difc_proxy.go Switch proxy gating to tools.github.integrity-proxy via isIntegrityProxyEnabled().
pkg/workflow/compiler_difc_proxy_test.go Update compiler tests for default-enabled proxy behavior and explicit opt-out.
pkg/parser/schemas/main_workflow_schema.json Add tools.github.integrity-proxy boolean with default true.
pkg/constants/feature_constants.go Deprecate DIFCProxyFeatureFlag in favor of tools.github.integrity-proxy.
pkg/cli/fix_codemods.go Register the new DIFC proxy migration codemod.
pkg/cli/codemod_difc_proxy.go Implement codemod migrating features.difc-proxytools.github.integrity-proxy.
pkg/cli/codemod_difc_proxy_test.go Add tests covering codemod migration scenarios and indentation handling.
docs/src/content/docs/reference/frontmatter.md Document new tools.github.integrity-proxy field and migration guidance.
docs/src/content/docs/reference/glossary.md Update glossary entry to reflect new config location and default behavior.
.github/workflows/workflow-generator.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/weekly-safe-outputs-spec-review.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/weekly-issue-summary.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/weekly-blog-post-writer.lock.yml Include proxy logs in artifacts; add start/stop DIFC proxy steps around pre-agent gh calls.
.github/workflows/stale-repo-identifier.lock.yml Add start/stop DIFC proxy steps; include proxy logs in artifacts; adjust concurrency group.
.github/workflows/smoke-copilot.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/smoke-agent-scoped-approved.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/smoke-agent-public-none.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/smoke-agent-public-approved.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/smoke-agent-all-none.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/smoke-agent-all-merged.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/slide-deck-maintainer.lock.yml Adjust concurrency group key to incorporate workflow inputs.
.github/workflows/scout.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/refiner.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/q.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/pr-triage-agent.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/plan.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/org-health-report.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/issue-triage-agent.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/issue-monster.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/issue-arborist.lock.yml Add start/stop DIFC proxy steps; include proxy logs in artifacts.
.github/workflows/grumpy-reviewer.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/discussion-task-miner.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).
.github/workflows/daily-issues-report.lock.yml Add start/stop DIFC proxy steps; include proxy logs in artifacts.
.github/workflows/daily-doc-updater.lock.yml Include proxy logs in artifacts; add start/stop DIFC proxy steps around pre-agent gh calls.
.github/workflows/contribution-check.lock.yml Include proxy logs in artifacts (and exclude proxy TLS directory).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +104 to +108
val, hasField := toolConfig["integrity-proxy"]
if !hasField {
return true // default: enabled
}
if enabled, ok := val.(bool); ok {
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

tools.github.integrity-proxy is parsed only as a boolean. If a workflow sets integrity-proxy: "false" (quoted YAML string), this function currently falls back to true, so the proxy cannot be disabled as documented. Consider treating a case-insensitive string value of "false" as disabled (and optionally warn on other non-bool types).

Copilot uses AI. Check for mistakes.
Comment on lines +35 to +39
// Step 1: remove features.difc-proxy
result, modified := removeFieldFromBlock(lines, "difc-proxy", "features")
if !modified {
return lines, false
}
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

Removing features.difc-proxy via removeFieldFromBlock can leave an empty features: key behind when it was the only feature. In YAML that becomes features: null, which violates the schema (features must be an object) and can break validation/compilation. After removal, drop the features: block entirely when it has no remaining children (or rewrite it as features: {}) and add a test for the “only difc-proxy feature” case.

Copilot uses AI. Check for mistakes.
Comment on lines +62 to +63
// Note: string values are checked case-insensitively; "false" returns false, any other non-empty
// string returns true. This matches the existing behavior of isFeatureEnabled in features.go.
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The comment says this matches isFeatureEnabled behavior, but isFeatureEnabled treats any non-empty string as enabled (including "false"). Either update this comment to describe the intentional divergence (treating "false" as false) or align the parsing logic with isFeatureEnabled.

Suggested change
// Note: string values are checked case-insensitively; "false" returns false, any other non-empty
// string returns true. This matches the existing behavior of isFeatureEnabled in features.go.
// Note: string values are checked case-insitively; "false" returns false, any other non-empty
// string returns true. This intentionally differs from isFeatureEnabled in features.go, which
// treats any non-empty string (including "false") as enabled.

Copilot uses AI. Check for mistakes.
Comment on lines 916 to 918
contents: write
issues: write
concurrency:
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

This changes the workflow’s concurrency group key (now includes inputs.organization), which is a behavioral change but isn’t mentioned in the PR description. If this is unrelated to the integrity-proxy refactor, consider splitting it into a separate PR or updating the description to call it out.

Copilot uses AI. Check for mistakes.
Comment on lines 887 to 889
concurrency:
group: "gh-aw-conclusion-slide-deck-maintainer"
group: "gh-aw-conclusion-slide-deck-maintainer-${{ inputs.focus || github.run_id }}"
cancel-in-progress: false
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

This changes the workflow’s concurrency group key (now includes inputs.focus), which is a behavioral change but isn’t mentioned in the PR description. If this is unrelated to the integrity-proxy refactor, consider splitting it into a separate PR or updating the description to call it out.

Copilot uses AI. Check for mistakes.
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.

Confirmed — the inline comment at line 63 is noted. The intentional divergence from isFeatureEnabled behavior is worth documenting clearly. The suggestion in the comment is a good addition.

📰 BREAKING: Report filed by Smoke Copilot

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 2, 2026

@lpcox proxy ready?

@pelikhan pelikhan added the smoke label Apr 2, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

✅ All tools validated successfully! Agent Container Smoke Test confirms agent container is ready.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

🎬 THE ENDSmoke Claude MISSION: ACCOMPLISHED! The hero saves the day! ✨

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

🌑 The shadows whisper... Smoke Codex failed. The oracle requires further meditation...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions github-actions bot removed the smoke label Apr 2, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

Agent Container Tool Check

Tool Status Version
bash 5.2.21
sh available
git 2.53.0
jq 1.7
yq 4.52.4
curl 8.5.0
gh 2.88.1
node 20.20.1
python3 3.12.3
go 1.24.13
java 10.0.201
dotnet 10.0.201

Result: 12/12 tools available ✅

Overall Status: PASS

🔧 Tool validation by Agent Container Smoke Test ·

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

🎉 Smoke test complete!

Test Result
GitHub MCP
mcpscripts-gh
Serena MCP
Playwright
Web Fetch
File Write/Read
Build gh-aw
PR Review

Overall: ⚠️ PARTIAL PASS

Author: @pelikhan | Assignees: @pelikhan, Copilot

📰 BREAKING: Report filed by Smoke Copilot ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Smoke test review on PR #24065. The opt-out migration from features.difc-proxy to tools.github.integrity-proxy is well-structured. Two minor observations: (1) the codemod silently drops the opt-out when no tools.github block exists, and (2) a debug log on the default-enabled path would help operators. Overall a clean refactor.

📰 BREAKING: Report filed by Smoke Copilot

newContent, applied, err := applyFrontmatterLineTransform(content, func(lines []string) ([]string, bool) {
// Step 1: remove features.difc-proxy
result, modified := removeFieldFromBlock(lines, "difc-proxy", "features")
if !modified {
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.

The addDisableFlag logic only adds integrity-proxy: false when hasToolsGithubMap returns true. If a workflow has features.difc-proxy: false but no tools.github block yet, the opt-out intent will be silently dropped. Consider creating the tools.github block when it doesn't exist, to always preserve the user's explicit opt-out.

toolConfig, ok := githubTool.(map[string]any)
if !ok {
return true
}
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.

Good default — returning true when the field is absent correctly implements the opt-out model. A small nit: the comment // default: enabled is clear, but it might be worth also logging a debug message here (via difcProxyLog.Print) so operators can confirm the proxy defaulted on during debugging.

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 2, 2026

@copilot merge main and recompile

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 2, 2026

@copilot merge main and recompile

Done — merged main and recompiled all 179 workflows successfully.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw yq_d1ObXJk1H (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 2, 2026

Copilot AI and others added 2 commits April 2, 2026 12:34
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 2, 2026

@copilot merge main and fix https://github.com/github/gh-aw/actions/runs/23900012612/job/69694332610#step:7:1

Done in d211569. Merged main and fixed the CI failure — the handle_noop_message.test.cjs tests were broken because the new handle_noop_message.cjs from main now calls core.summary.addRaw().write(), but the test mock was missing summary and setOutput. Also updated 3 tests whose expected messages changed due to the refactored code flow (agent output is now loaded first before checking env vars).

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw vm289kLCcUEV (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility json&#39; --ignore-path ../../../.pr**/*.json (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha h ../../../.prettierignore (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github%2Fworkflows%2Faudit-workflows.md
    • Triggering command: /opt/hostedtoolcache/node/24.14.0/x64/bin/node /opt/hostedtoolcache/node/24.14.0/x64/bin/node --experimental-import-meta-resolve --require /home/REDACTED/.npm/_npx/69c381f8ad94b576/node_modules/vitest/suppress-warnings.cjs --conditions node --conditions development /home/REDACTED/.npm/_npx/69c381f8ad94b576/node_modules/vitest/dist/workers/forks.js 482587e27eecb29cformat-patch de_modules/.bin/cd0c13465853627ec292ad9581b0c7e9ff7604b8..HEAD git chec�� -b fallback-branch d94b576/node_modules/.bin/git user.email test@example.comrev-list odules/npm/node_--count git (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha re --log-level=error (http block)
  • invalid.example.invalid
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git git rev-�� origin/auth-cleanup-success git k/_temp/uv-python-dir/git -m ���� Launch featpush odules/npm/node_-u git conf�� user.name Test User on-test mplied --format=%s cal/bin/git git (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

💥 Automated smoke test review - all systems nominal!

💥 [THE END] — Illustrated by Smoke Claude

/tmp/gh-aw/sandbox/agent/logs/
/tmp/gh-aw/redacted-urls.log
/tmp/gh-aw/mcp-logs/
/tmp/gh-aw/proxy-logs/
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.

The proxy-logs path exclusion looks correct — including proxy-logs/ for artifact upload while excluding proxy-logs/proxy-tls/ to avoid leaking TLS certs. Good pattern.

DIFC_PROXY_IMAGE: 'ghcr.io/github/gh-aw-mcpg:v0.2.11'
run: |
bash ${RUNNER_TEMP}/gh-aw/actions/start_difc_proxy.sh
- name: Set GH_REPO for proxied steps
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.

The Set GH_REPO for proxied steps step correctly sets the env var for downstream steps using the proxy. This ensures the DIFC proxy knows which repo context to use for integrity checks.

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 2, 2026

@copilot update test https://github.com/github/gh-aw/actions/runs/23900683494/job/69696534420#step:6:1

Fixed in 398c494. The CI test in ci.yml was still calling start_difc_proxy.sh with positional arguments (old interface), but the script now reads from DIFC_PROXY_POLICY env var. Without that env var set, the script exits early with a warning and GH_HOST is never set, causing the verification step to fail. Updated the test step to pass DIFC_PROXY_POLICY as an env var instead.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

Contribution Check Report

Check Result
On-topic ✅ yes
Follows process ✅ yes
Focused ✅ yes
New dependencies ✅ no
Has tests ✅ yes
Has description ✅ yes
Diff size 2 134 lines (1 819 add / 315 del, 38 files)
Verdict 🟢 Aligned
Quality 🏅 lgtm

Hey @Copilot 👋 — great work on this refactor! Migrating features.difc-proxy from an opt-in flag to the tools.github.integrity-proxy opt-out field is a clean, well-scoped change that improves the default-secure posture of the proxy.

Everything looks solid:

  • Comprehensive description — the PR body clearly explains the before/after semantics, lists every changed file with a rationale, covers the env-var switch for shell-quoting safety, and documents all the new test scenarios.
  • Good test coverage — both the compiler path (compiler_difc_proxy_test.go) and the new codemod (codemod_difc_proxy_test.go) are covered, including edge cases like string 'false' and dynamic indentation detection.
  • Focused change — the 26 auto-generated .lock.yml files are the expected output of make recompile, keeping the diff honest and self-consistent.
  • No new dependenciesgo.mod is untouched.
  • Proper process — authored by the Copilot coding agent under core-team direction, exactly as CONTRIBUTING.md prescribes.

This PR looks ready for maintainer review. 🚀

Generated by Contribution Check ·

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 2, 2026

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 2, 2026

@copilot fix https://github.com/github/gh-aw/actions/runs/23901163312/job/69698002021#step:9:1

Fixed in 9d14ce1. The fix_codemods_test.go tests expected 28 codemods but I had added the features-difc-proxy-to-tools-github codemod making it 29. Updated the count from 28→29 and added "features-difc-proxy-to-tools-github" to the expected order list.

@pelikhan pelikhan merged commit a916769 into main Apr 2, 2026
58 checks passed
@pelikhan pelikhan deleted the copilot/refactor-integrity-proxy-feature branch April 2, 2026 13:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants