-
Notifications
You must be signed in to change notification settings - Fork 6
Add containers ecosystem to workflow firewall allowlists #632
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Adds the containers ecosystem to Agent Workflow Firewall allowlists so workflows can pull images from common container registries (GHCR, MCR, Docker Hub), and recompiles workflows to refresh generated .lock.yml artifacts.
Changes:
- Added
network.allowed: [defaults, containers](or appendedcontainers) across the affected workflow.mddefinitions. - Recompiled workflows to update generated
.lock.ymlfiles so the firewall domain allowlists include container registries. - As part of recompilation, updated various generated workflow details (e.g., gh-aw action pinning/versions and some schedules).
Reviewed changes
Copilot reviewed 33 out of 33 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/test-improver.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/test-improver.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/test-coverage-improver.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/test-coverage-improver.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/smoke-copilot.md | Adds containers ecosystem to existing network allowlist. |
| .github/workflows/smoke-copilot.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries (currently includes malformed image tag). |
| .github/workflows/smoke-codex.md | Adds containers ecosystem to existing network allowlist. |
| .github/workflows/smoke-codex.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries (currently includes malformed image tag). |
| .github/workflows/daily-compliance-checker.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/daily-compliance-checker.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/daily-multi-device-docs-tester.md | Adds containers ecosystem to existing network allowlist. |
| .github/workflows/daily-multi-device-docs-tester.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/duplicate-code-detector.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/duplicate-code-detector.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/go-fan.md | Adds containers ecosystem to existing network allowlist. |
| .github/workflows/go-fan.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/go-logger.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/go-logger.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/issue-monster.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/issue-monster.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/mcp-gateway-log-analyzer.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/mcp-gateway-log-analyzer.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/nightly-docs-reconciler.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/nightly-docs-reconciler.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/nightly-mcp-stress-test.md | Adds containers ecosystem to existing network allowlist. |
| .github/workflows/nightly-mcp-stress-test.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries (currently includes malformed image tag). |
| .github/workflows/plan.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/plan.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/release.md | Replaces explicit ghcr.io allow with containers ecosystem. |
| .github/workflows/release.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/semantic-function-refactor.md | Adds containers ecosystem to network allowlist. |
| .github/workflows/semantic-function-refactor.lock.yml | Regenerated workflow with updated firewall allow-domains for container registries. |
| .github/workflows/agentics-maintenance.yml | Updates generated maintenance workflow metadata/action reference due to recompilation/version bump. |
Comments suppressed due to low confidence (3)
.github/workflows/smoke-codex.lock.yml:651
MCP_GATEWAY_DOCKER_COMMANDuses the invalid image referenceghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98, which will make the gateway container startup fail. Replace it with a valid single tag (matching the image that is downloaded earlier).
export GH_AW_ENGINE="codex"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_INPUTS_PORT -e GH_AW_SAFE_INPUTS_API_KEY -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -e GH_AW_GH_TOKEN -e GH_DEBUG -e TAVILY_API_KEY -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98'
.github/workflows/smoke-copilot.lock.yml:531
MCP_GATEWAY_DOCKER_COMMANDuses the invalid image referenceghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98, which will prevent the gateway container from starting. Replace it with a valid single-tag image reference.
export GH_AW_ENGINE="copilot"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98'
.github/workflows/nightly-mcp-stress-test.lock.yml:400
MCP_GATEWAY_DOCKER_COMMANDuses the invalid image referenceghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98, which will prevent the gateway container from starting. Replace it with a valid single-tag image reference.
export GH_AW_ENGINE="copilot"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98'
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| await determineAutomaticLockdown(github, context, core); | ||
| - name: Download container images | ||
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.94 ghcr.io/github/github-mcp-server:v0.30.2 mcr.microsoft.com/playwright/mcp node:lts-alpine | ||
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.3 mcr.microsoft.com/playwright/mcp node:lts-alpine |
Copilot
AI
Feb 4, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Docker image reference ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 is not a valid image tag (Docker tags cannot contain a second :), so this step will fail to pull the image. Update this to a valid single tag (and keep it consistent with the source workflow’s sandbox.mcp.container) and ensure any other occurrences in this workflow file are updated as well.
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.3 mcr.microsoft.com/playwright/mcp node:lts-alpine | |
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.3 mcr.microsoft.com/playwright/mcp node:lts-alpine |
| await determineAutomaticLockdown(github, context, core); | ||
| - name: Download container images | ||
| run: bash /opt/gh-aw/actions/download_docker_images.sh alpine:latest ghcr.io/github/gh-aw-mcpg:v0.0.94 ghcr.io/github/github-mcp-server:v0.30.2 mcr.microsoft.com/playwright/mcp node:lts-alpine | ||
| run: bash /opt/gh-aw/actions/download_docker_images.sh alpine:latest ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.3 mcr.microsoft.com/playwright/mcp node:lts-alpine |
Copilot
AI
Feb 4, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Docker image reference ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 is not a valid image tag (Docker tags cannot contain a second :), so this step will fail to pull the image. Update it to a valid single tag and ensure the same fix is applied to the gateway docker command later in this file.
| run: bash /opt/gh-aw/actions/download_docker_images.sh alpine:latest ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.3 mcr.microsoft.com/playwright/mcp node:lts-alpine | |
| run: bash /opt/gh-aw/actions/download_docker_images.sh alpine:latest ghcr.io/github/gh-aw-mcpg:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.3 mcr.microsoft.com/playwright/mcp node:lts-alpine |
| await determineAutomaticLockdown(github, context, core); | ||
| - name: Download container images | ||
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.84 ghcr.io/github/github-mcp-server:v0.30.2 mcp/aws-kb-retrieval mcp/axiom mcp/brave-search mcp/everart mcp/fetch mcp/filesystem mcp/gdrive mcp/git mcp/google-maps mcp/linear mcp/memory mcp/postgres mcp/puppeteer mcp/raygun mcp/sentry mcp/sequential-thinking mcp/slack mcp/sqlite mcp/time node:lts-alpine | ||
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.2 ghcr.io/github/github-mcp-server:v0.30.3 mcp/aws-kb-retrieval mcp/axiom mcp/brave-search mcp/everart mcp/fetch mcp/filesystem mcp/gdrive mcp/git mcp/google-maps mcp/linear mcp/memory mcp/postgres mcp/puppeteer mcp/raygun mcp/sentry mcp/sequential-thinking mcp/slack mcp/sqlite mcp/time node:lts-alpine |
Copilot
AI
Feb 4, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Docker image reference ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 is not a valid image tag (Docker tags cannot contain a second :), so this step will fail to pull the image. Update it to a valid single tag and ensure the gateway docker command later in the file is updated too.
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.94:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.2 ghcr.io/github/github-mcp-server:v0.30.3 mcp/aws-kb-retrieval mcp/axiom mcp/brave-search mcp/everart mcp/fetch mcp/filesystem mcp/gdrive mcp/git mcp/google-maps mcp/linear mcp/memory mcp/postgres mcp/puppeteer mcp/raygun mcp/sentry mcp/sequential-thinking mcp/slack mcp/sqlite mcp/time node:lts-alpine | |
| run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-mcpg:v0.0.98 ghcr.io/github/github-mcp-server:v0.30.2 ghcr.io/github/github-mcp-server:v0.30.3 mcp/aws-kb-retrieval mcp/axiom mcp/brave-search mcp/everart mcp/fetch mcp/filesystem mcp/gdrive mcp/git mcp/google-maps mcp/linear mcp/memory mcp/postgres mcp/puppeteer mcp/raygun mcp/sentry mcp/sequential-thinking mcp/slack mcp/sqlite mcp/time node:lts-alpine |
| schedule: | ||
| - cron: "2 */12 * * *" | ||
| - cron: "23 */12 * * *" | ||
| workflow_dispatch: null |
Copilot
AI
Feb 4, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This compiled workflow includes schedule/cron changes (e.g. the cron expression changed) in addition to the firewall allowlist update described in the PR. If the intent is only to adjust firewall rules, consider recompiling in a way that preserves existing schedules or reverting unrelated generated changes so behavior doesn’t change unexpectedly.
Workflows were failing to download container images from
ghcr.io,mcr.microsoft.com, and Docker Hub because the Agent Workflow Firewall was blocking these registries.Changes
Network configuration: Added
containersecosystem identifier to 16 workflow files that download MCP server images:Affected workflows:
Compiled artifacts: Recompiled all workflows to generate updated
.lock.ymlfiles with proper firewall rules.Known Issue
The gh-aw compiler (v0.41.0) generated malformed Docker tags in 3 workflows (e.g.,
v0.0.94:v0.0.98instead ofv0.0.94). This is a compiler bug tracked separately.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.