Skip to content

CLI proxy: start difc-proxy on host, pass --difc-proxy-host to AWF#25366

Merged
lpcox merged 10 commits intomainfrom
copilot/update-cli-proxy-implementation
Apr 8, 2026
Merged

CLI proxy: start difc-proxy on host, pass --difc-proxy-host to AWF#25366
lpcox merged 10 commits intomainfrom
copilot/update-cli-proxy-implementation

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 8, 2026

AWF's internal mcpg container for cli-proxy crashes reliably under its restrictive sandbox (cap_drop ALL, pids_limit 50, mem_limit 256m, non-host network). This moves difc-proxy management to the gh-aw compiler, running it on the host with --network host where it already works reliably.

Merge order: gh-aw-firewall PR #1809 must be released as v0.26.0 before this PR can merge, since AWFCliProxyMinVersion requires v0.26.0 for CLI proxy flags.

AWF flag changes

Replaced deprecated flags with new ones that point AWF at the external proxy:

# Before
sudo -E awf --enable-cli-proxy --cli-proxy-policy '{"allow-only":...}' ...

# After
sudo -E awf \
  --difc-proxy-host host.docker.internal:18443 \
  --difc-proxy-ca-cert /tmp/gh-aw/difc-proxy-tls/ca.crt \
  --exclude-env GH_TOKEN \
  ...
  • --enable-cli-proxy, --cli-proxy-policy, --cli-proxy-mcpg-image → removed
  • --difc-proxy-host, --difc-proxy-ca-cert → added
  • AWFCliProxyMinVersion bumped to v0.26.0
  • DefaultFirewallVersion set to v0.25.17 (below CLI proxy minimum — cli-proxy flags are only emitted when workflows explicitly pin v0.26.0+)

New host-side proxy lifecycle

  • actions/setup/sh/start_cli_proxy.sh — starts awmg-cli-proxy container on host (port 18443, TLS to /tmp/gh-aw/difc-proxy-tls/), with optional guard policy. Idempotent: removes any leftover container before starting. Fails the step if proxy doesn't become healthy within 30s. Uses bash arrays for safe shell quoting of policy JSON.
  • actions/setup/sh/stop_cli_proxy.shdocker rm -f cleanup, runs with if: always().
  • Steps injected in compiler_yaml_main_job.go immediately before/after engine execution.

GH_TOKEN injection

When cli-proxy is enabled, GH_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN || github.token }} is added to the AWF step env across all engines (copilot, claude, codex, gemini) via shared addCliProxyGHTokenToEnv() helper. The token is NOT used by AWF or its cli-proxy sidecar directly — the host difc-proxy already has it. The injection ensures --env-all picks it up so --exclude-env GH_TOKEN can reliably strip it from the agent container. The injection is gated on both awfSupportsCliProxy and awfSupportsExcludeEnv to prevent leaking the token into the agent container on older AWF versions.

Architecture

Host (compiler-managed):
  awmg-cli-proxy on 0.0.0.0:18443, --network host, --tls

AWF docker-compose:
  cli-proxy (172.30.0.50) → host.docker.internal:18443
  agent (172.30.0.20) → cli-proxy at http://172.30.0.50:11000

Copilot AI and others added 2 commits April 8, 2026 19:18
…roxy on host

When features.cli-proxy is enabled, the compiler now:
1. Starts a difc-proxy container on the host before AWF execution
2. Passes --difc-proxy-host host.docker.internal:18443 and
   --difc-proxy-ca-cert /tmp/gh-aw/difc-proxy-tls/ca.crt to AWF
3. Injects GH_TOKEN into the AWF step env with --exclude-env GH_TOKEN
4. Stops the CLI proxy container after AWF execution

Removed deprecated flags: --enable-cli-proxy, --cli-proxy-policy.
Minimum AWF version bumped to v0.26.0 for CLI proxy support.

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/cd08abe8-65f6-4cd4-aca7-a2cfa59d7e81

Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
- Handle empty policy gracefully in start_cli_proxy.sh (proxy starts
  without guard filtering when no policy is configured)
- Exit with error when proxy fails to start (prevents AWF from running
  with a non-functional proxy)
- Rename hasCliProxyNeeded to isCliProxyNeeded for naming consistency

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/cd08abe8-65f6-4cd4-aca7-a2cfa59d7e81

Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Copilot AI changed the title [WIP] Update CLI proxy to start difc-proxy on host CLI proxy: start difc-proxy on host, pass --difc-proxy-host to AWF Apr 8, 2026
Copilot AI requested a review from lpcox April 8, 2026 19:27
Copilot finished work on behalf of lpcox April 8, 2026 19:27
@lpcox lpcox marked this pull request as ready for review April 8, 2026 19:59
Copilot AI review requested due to automatic review settings April 8, 2026 19:59
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 shifts AWF CLI-proxy support from an AWF-managed container to a host-managed difc-proxy container, updating AWF invocation flags and ensuring GH_TOKEN is available for the proxy while excluded from the agent container.

Changes:

  • Add host-side start/stop lifecycle for the CLI proxy and inject those steps around engine execution.
  • Replace deprecated AWF CLI-proxy flags with --difc-proxy-host / --difc-proxy-ca-cert and bump the minimum AWF version gate.
  • Inject GH_TOKEN into AWF execution step env (post secret-filtering) across engines; update various workflow lockfiles for quoting consistency.
Show a summary per file
File Description
pkg/workflow/gemini_engine.go Injects GH_TOKEN into filtered step env for CLI-proxy mode.
pkg/workflow/copilot_engine_execution.go Injects GH_TOKEN into filtered step env for CLI-proxy mode.
pkg/workflow/compiler_yaml_main_job.go Adds start/stop CLI-proxy steps around engine execution.
pkg/workflow/compiler_difc_proxy.go Adds CLI-proxy gating + YAML step generation for host-managed proxy lifecycle.
pkg/workflow/codex_engine.go Injects GH_TOKEN into filtered step env for CLI-proxy mode.
pkg/workflow/claude_engine.go Injects GH_TOKEN into filtered step env for CLI-proxy mode.
pkg/workflow/awf_helpers.go Switches AWF flags to --difc-proxy-*, adds GH_TOKEN exclusion, adds env injection helper, updates version gate docs.
pkg/workflow/awf_helpers_test.go Updates tests to expect new --difc-proxy-* flags and new version gating semantics.
pkg/constants/version_constants.go Bumps AWFCliProxyMinVersion to v0.26.0.
pkg/constants/feature_constants.go Updates cli-proxy feature flag documentation to reflect host-managed difc-proxy + new flags.
actions/setup/sh/start_cli_proxy.sh New script to start host-side difc-proxy for AWF CLI-proxy sidecar.
actions/setup/sh/stop_cli_proxy.sh New script to stop/remove the host-side CLI proxy container.
.github/workflows/refactoring-cadence.lock.yml Quotes ${RUNNER_TEMP} paths consistently in bash invocations.
.github/workflows/design-decision-gate.lock.yml Quotes ${RUNNER_TEMP} paths consistently in bash invocations.
.github/workflows/deep-report.lock.yml Lockfile regeneration + minor env expression tweak (REPO_NAME).
.github/workflows/architecture-guardian.lock.yml Quotes ${RUNNER_TEMP} paths consistently in bash invocations.
.github/workflows/approach-validator.lock.yml Quotes ${RUNNER_TEMP} paths consistently in bash invocations.
.changeset/minor-add-cli-proxy-feature-flag.md Updates changeset to mention new flags/host proxy (but still contains outdated statement).

Copilot's findings

Tip

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

Comments suppressed due to low confidence (1)

pkg/workflow/awf_helpers.go:649

  • awfSupportsCliProxy currently returns true when firewallConfig is nil/empty, but constants.DefaultFirewallVersion is still v0.25.16 while AWFCliProxyMinVersion is now v0.26.0. In the common case where sandbox/firewall is enabled via sandbox: (so network.firewall is absent), this will incorrectly emit --difc-proxy-host/--difc-proxy-ca-cert against AWF v0.25.16 and cause AWF to fail at startup. Fix by either (a) bumping DefaultFirewallVersion to >= v0.26.0, or (b) making awfSupportsCliProxy compare against the effective default version instead of assuming it always meets the minimum (and update the associated tests).
// Special cases:
//   - No version override (firewallConfig is nil or has no Version): use DefaultFirewallVersion
//     which is always ≥ AWFCliProxyMinVersion → returns true.
//   - "latest": always returns true (latest is always a new release).
//   - Any semver string ≥ AWFCliProxyMinVersion: returns true.
//   - Any semver string < AWFCliProxyMinVersion: returns false.
//   - Non-semver string (e.g. a branch name): returns false (conservative).
func awfSupportsCliProxy(firewallConfig *FirewallConfig) bool {
	var versionStr string
	if firewallConfig != nil && firewallConfig.Version != "" {
		versionStr = firewallConfig.Version
	} else {
		// No override → use the default, which is always ≥ the minimum.
		return true
	}
  • Files reviewed: 18/18 changed files
  • Comments generated: 5

Comment on lines +586 to +591
// The token is excluded from the agent container via --exclude-env GH_TOKEN.
//
// #nosec G101 -- This is NOT a hardcoded credential. It is a GitHub Actions expression
// template that is resolved at runtime by the GitHub Actions runner.
func addCliProxyGHTokenToEnv(env map[string]string, workflowData *WorkflowData) {
if isFeatureEnabled(constants.CliProxyFeatureFlag, workflowData) && isFirewallEnabled(workflowData) {
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

addCliProxyGHTokenToEnv injects GH_TOKEN into the AWF step env whenever the feature flag + firewall are enabled, but it does not check whether the effective AWF version supports --exclude-env. When AWF < v0.25.3, BuildAWFArgs will still pass --env-all and skip --exclude-env, which would leak this injected GH_TOKEN into the agent container. Consider gating the injection on awfSupportsExcludeEnv(getFirewallConfig(workflowData)) (and likely the CLI proxy version gate as well) so we never introduce a new secret into the container on older AWF versions.

This issue also appears on line 635 of the same file.

Suggested change
// The token is excluded from the agent container via --exclude-env GH_TOKEN.
//
// #nosec G101 -- This is NOT a hardcoded credential. It is a GitHub Actions expression
// template that is resolved at runtime by the GitHub Actions runner.
func addCliProxyGHTokenToEnv(env map[string]string, workflowData *WorkflowData) {
if isFeatureEnabled(constants.CliProxyFeatureFlag, workflowData) && isFirewallEnabled(workflowData) {
// The token is excluded from the agent container via --exclude-env GH_TOKEN, so only
// inject it when the effective AWF version supports both cli-proxy flags and
// --exclude-env.
//
// #nosec G101 -- This is NOT a hardcoded credential. It is a GitHub Actions expression
// template that is resolved at runtime by the GitHub Actions runner.
func addCliProxyGHTokenToEnv(env map[string]string, workflowData *WorkflowData) {
firewallConfig := getFirewallConfig(workflowData)
if isFeatureEnabled(constants.CliProxyFeatureFlag, workflowData) &&
isFirewallEnabled(workflowData) &&
awfSupportsCliProxy(firewallConfig) &&
awfSupportsExcludeEnv(firewallConfig) {

Copilot uses AI. Check for mistakes.
Comment on lines 49 to 60
// DefaultFirewallVersion is the default version of the gh-aw-firewall (AWF) binary
const DefaultFirewallVersion Version = "v0.25.16"

// AWFExcludeEnvMinVersion is the minimum AWF version that supports the --exclude-env flag.
// Workflows pinning an older AWF version must not emit --exclude-env flags or the run will fail.
const AWFExcludeEnvMinVersion Version = "v0.25.3"

// AWFCliProxyMinVersion is the minimum AWF version that supports the --enable-cli-proxy flag.
// Workflows pinning an older AWF version must not emit --enable-cli-proxy flags or the run will fail.
const AWFCliProxyMinVersion Version = "v0.25.14"
// AWFCliProxyMinVersion is the minimum AWF version that supports the CLI proxy flags
// (--difc-proxy-host, --difc-proxy-ca-cert). Workflows pinning an older AWF version
// must not emit CLI proxy flags or the run will fail.
const AWFCliProxyMinVersion Version = "v0.26.0"

Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

AWFCliProxyMinVersion is now v0.26.0 but DefaultFirewallVersion remains v0.25.16. With the current version-gate logic (and tests), this combination can cause CLI proxy flags to be emitted for workflows that rely on the default AWF version, even though that default is below the minimum. Either bump DefaultFirewallVersion to >= v0.26.0 or adjust the gating logic/tests to treat the default as not supporting CLI proxy yet.

Copilot uses AI. Check for mistakes.
Comment on lines 868 to 883
want: true,
},
{
name: "v0.25.14 supports --enable-cli-proxy (exact minimum version)",
firewallConfig: &FirewallConfig{Version: "v0.25.14"},
name: "v0.26.0 supports CLI proxy flags (exact minimum version)",
firewallConfig: &FirewallConfig{Version: "v0.26.0"},
want: true,
},
{
name: "v0.26.0 supports --enable-cli-proxy",
firewallConfig: &FirewallConfig{Version: "v0.26.0"},
name: "v0.27.0 supports CLI proxy flags",
firewallConfig: &FirewallConfig{Version: "v0.27.0"},
want: true,
},
{
name: "v0.25.13 does not support --enable-cli-proxy",
firewallConfig: &FirewallConfig{Version: "v0.25.13"},
name: "v0.25.16 does not support CLI proxy flags",
firewallConfig: &FirewallConfig{Version: "v0.25.16"},
want: false,
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

The version-gate tests here assume awfSupportsCliProxy(nil) / empty version implies support via the default, but DefaultFirewallVersion is currently v0.25.16 while the minimum is v0.26.0. If the default stays at v0.25.16, the expected behavior should be that the default does not support CLI proxy flags; alternatively bump the default version and keep these expectations. Either way, align this test table with the chosen default/version-gate semantics so unsupported flags aren’t emitted by default.

Copilot uses AI. Check for mistakes.
Comment on lines +38 to +44
docker run -d --name awmg-cli-proxy --network host \
-e GH_TOKEN \
-e GITHUB_SERVER_URL \
-e DEBUG='*' \
-v "$TLS_DIR:$TLS_DIR" \
-v "$MCP_LOG_DIR:$MCP_LOG_DIR" \
"$CONTAINER_IMAGE" proxy \
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

start_cli_proxy.sh is not idempotent: docker run --name awmg-cli-proxy will fail if a container with that name already exists (e.g., prior job cancellation on a self-hosted runner, or a previous failed cleanup). Consider removing any existing container (and/or checking for it) before starting so the step can recover reliably.

Copilot uses AI. Check for mistakes.
Comment on lines +5 to +6
Add `cli-proxy` feature flag that injects `--enable-cli-proxy` and `--cli-proxy-policy` into the AWF command, giving agents secure read-only `gh` CLI access without exposing `GITHUB_TOKEN` (requires firewall v0.25.14+).
Replaced with `--difc-proxy-host` and `--difc-proxy-ca-cert` flags, starting difc-proxy on the host before AWF (requires firewall v0.26.0+).
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

This changeset still states the cli-proxy feature injects the deprecated --enable-cli-proxy/--cli-proxy-policy flags. Since the implementation now uses --difc-proxy-host/--difc-proxy-ca-cert and host-managed proxy lifecycle, update the text to describe the current behavior (rather than appending a second sentence that contradicts the first).

Suggested change
Add `cli-proxy` feature flag that injects `--enable-cli-proxy` and `--cli-proxy-policy` into the AWF command, giving agents secure read-only `gh` CLI access without exposing `GITHUB_TOKEN` (requires firewall v0.25.14+).
Replaced with `--difc-proxy-host` and `--difc-proxy-ca-cert` flags, starting difc-proxy on the host before AWF (requires firewall v0.26.0+).
Add `cli-proxy` feature flag that injects `--difc-proxy-host` and `--difc-proxy-ca-cert` into the AWF command, starting `difc-proxy` on the host before AWF and giving agents secure read-only `gh` CLI access without exposing `GITHUB_TOKEN` (requires firewall v0.26.0+).

Copilot uses AI. Check for mistakes.
@Mossaka
Copy link
Copy Markdown
Collaborator

Mossaka commented Apr 8, 2026

@copilot re-compile agentic workflows.

- Bump DefaultFirewallVersion to v0.26.0 to align with AWFCliProxyMinVersion
- Gate addCliProxyGHTokenToEnv on awfSupportsCliProxy and awfSupportsExcludeEnv
  to prevent leaking GH_TOKEN into the agent container on older AWF versions
- Make start_cli_proxy.sh idempotent by removing any leftover container first
- Update changeset to describe current behavior (difc-proxy-host flags)
- Recompile all agentic workflows with updated DefaultFirewallVersion

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e59645aa-2981-470c-bd44-1075fd88317a

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

Copilot AI commented Apr 8, 2026

@copilot re-compile agentic workflows.

Done in f48eddc. Recompiled all agentic workflows after bumping DefaultFirewallVersion to v0.26.0. Also addressed the review feedback: gated addCliProxyGHTokenToEnv on AWF version support, made start_cli_proxy.sh idempotent, and updated the changeset text.

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 er (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 ersion k/gh-aw/gh-aw/pkgraphql ache/go/1.25.8/x-f (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 182094/b076/_pkg-f --local ode core.hooksPath (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 Mossaka April 8, 2026 20:31
@lpcox
Copy link
Copy Markdown
Collaborator

lpcox commented Apr 8, 2026

@copilot apply changes based on the comments in this thread

@lpcox
Copy link
Copy Markdown
Collaborator

lpcox commented Apr 8, 2026

@copilot resolve the merge conflicts in this pull request

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 8, 2026

@copilot apply changes based on the comments in this thread

All 5 review comments from that thread were already addressed in f48eddc:

  1. addCliProxyGHTokenToEnv — gated on awfSupportsCliProxy + awfSupportsExcludeEnv to prevent leaking GH_TOKEN on older AWF versions
  2. DefaultFirewallVersion — bumped to v0.26.0 to match AWFCliProxyMinVersion
  3. Version-gate tests — aligned with the bumped default (nil/empty config returns true since default is now v0.26.0)
  4. start_cli_proxy.sh — made idempotent with docker rm -f awmg-cli-proxy before docker run
  5. Changeset text — updated to describe --difc-proxy-host/--difc-proxy-ca-cert behavior

All lock files were also recompiled with the new DefaultFirewallVersion. Tests pass and make recompile produces no diff.

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 -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/workflow/features_import_test.go /home/REDACTED/work/gh-aw/gh-aw/pkg/workflow/import_schema_test.go (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 /tmp/go-build479619633/b001/importcfg -pack /tmp/go-build479619633/b001/_testmain.go (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/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:

…oxy-implementation

# Conflicts:
#	.github/workflows/api-consumption-report.lock.yml
#	.github/workflows/approach-validator.lock.yml
#	.github/workflows/architecture-guardian.lock.yml
#	.github/workflows/audit-workflows.lock.yml
#	.github/workflows/daily-firewall-report.lock.yml
#	.github/workflows/daily-performance-summary.lock.yml
#	.github/workflows/deep-report.lock.yml
#	.github/workflows/design-decision-gate.lock.yml
#	.github/workflows/docs-noob-tester.lock.yml
#	.github/workflows/poem-bot.lock.yml
#	.github/workflows/refactoring-cadence.lock.yml
#	.github/workflows/technical-doc-writer.lock.yml
#	.github/workflows/unbloat-docs.lock.yml

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

Copilot AI commented Apr 8, 2026

@copilot resolve the merge conflicts in this pull request

Merge conflicts resolved in 3ac5110. All 13 conflicting .lock.yml files were resolved, workflows recompiled (187/187 pass), and all tests and lint pass cleanly.

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 -embedcfg /tmp/go-build3719965708/b063/embedcfg -pack (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 rvm727z3 (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/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 finished work on behalf of lpcox April 8, 2026 21:26
Copy link
Copy Markdown
Collaborator

@lpcox lpcox left a comment

Choose a reason for hiding this comment

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

Review: PR #25366 — CLI proxy: start difc-proxy on host, pass --difc-proxy-host to AWF

This is the compiler-side counterpart to gh-aw-firewall PR #1809. The architecture is sound — moving the difc-proxy from AWF's restrictive sandbox to the host eliminates the mcpg crash issues we hit in PR #1801.

What looks good

  • Clean separation: start_cli_proxy.sh / stop_cli_proxy.sh follow the existing start_difc_proxy.sh pattern exactly
  • GH_TOKEN flow: addCliProxyGHTokenToEnv → AWF step env → --exclude-env GH_TOKEN prevents agent exposure. Gated on both awfSupportsCliProxy AND awfSupportsExcludeEnv (as requested in the auto-review)
  • Port conflict avoidance: DIFC proxy stops before CLI proxy starts in generateMainJobSteps ordering, so both can use port 18443 without conflict
  • Idempotent start: docker rm -f awmg-cli-proxy before docker run handles leftover containers
  • Stop step has if: always() + continue-on-error: true — correct cleanup semantics
  • Test updates are thorough — version gates, flag assertions, negative tests for deprecated flags
  • isCliProxyNeeded() cleanly factors the 3-way check (feature flag + firewall enabled + version support)
  • Guard policy stays on the host proxy (via CLI_PROXY_POLICY env in start_cli_proxy.sh), correctly removed from AWF args

Issues

1. start_cli_proxy.sh: unquoted $POLICY_ARGS — shell word-splitting risk

POLICY_ARGS=""
if [ -n "$POLICY" ]; then
  POLICY_ARGS="--policy $POLICY"
fi

docker run ... $POLICY_ARGS \

If CLI_PROXY_POLICY JSON ever contains spaces (e.g., pretty-printed JSON), this would word-split and break. The existing start_difc_proxy.sh handles this correctly with --policy "$POLICY". Recommend using an array:

POLICY_ARGS=()
if [ -n "$POLICY" ]; then
  POLICY_ARGS=(--policy "$POLICY")
fi

docker run ... "${POLICY_ARGS[@]}" \

Currently safe because getDIFCProxyPolicyJSON generates compact JSON, but an array is more robust and matches the quoting in start_difc_proxy.sh.

2. Release coordination: DefaultFirewallVersion v0.26.0

187 lock files now reference AWF v0.26.0 images/binaries. This PR must not merge before AWF v0.26.0 is published to GHCR, or every workflow will fail at install_awf_binary.sh v0.26.0 and download_docker_images.sh ...agent:0.26.0.

Recommend documenting this in the PR body: "Merge order: AWF PR #1809 must be released as v0.26.0 before this PR can merge."

3. addCliProxyGHTokenToEnv docstring is misleading

The comment says "AWF reads it from the step env and the cli-proxy sidecar uses it for upstream API authentication." Neither is accurate:

  • AWF does not read GH_TOKEN — it receives it via --env-all and immediately strips it via --exclude-env
  • The cli-proxy sidecar does not use GH_TOKEN — it connects to the host difc-proxy which already has the token from start_cli_proxy.sh

The actual purpose is: ensure GH_TOKEN is in the AWF step env so --env-all picks it up and --exclude-env GH_TOKEN can reliably strip it from the agent container. Suggest:

// addCliProxyGHTokenToEnv adds GH_TOKEN to the AWF step environment when the
// cli-proxy feature is enabled. The token is NOT used by AWF or its cli-proxy
// sidecar directly — the host difc-proxy (started by start_cli_proxy.sh) already
// has it. However, --env-all passes all step env vars into the agent container,
// so we explicitly set GH_TOKEN here to ensure --exclude-env GH_TOKEN can
// reliably strip it regardless of how the token enters the environment.

4. Missing dedicated tests for isCliProxyNeeded() and addCliProxyGHTokenToEnv()

Both functions are tested indirectly (via step generation and BuildAWFArgs), but table-driven unit tests would catch edge cases:

  • isCliProxyNeeded with feature disabled, firewall disabled, old AWF version
  • addCliProxyGHTokenToEnv verifying it does NOT inject GH_TOKEN when cli-proxy is disabled or AWF is too old

Not blocking, but would improve confidence.

Summary

The implementation correctly handles the architectural change. The four items above are: (1) a shell safety fix, (2) a release process note, (3) a comment accuracy fix, and (4) optional test improvements. Items 1 and 3 are minor code fixes; items 2 and 4 are process/coverage notes.

The AWF side (PR #1809) is complementary and ready — I've reviewed and committed fixes there too.

…25400)

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/f16055db-4d7a-479e-acae-0713caf5344d

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
@lpcox
Copy link
Copy Markdown
Collaborator

lpcox commented Apr 8, 2026

@copilot update the firewall version to v0.25.17

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 8, 2026

Review: PR #25366 — CLI proxy: start difc-proxy on host, pass --difc-proxy-host to AWF

This is the compiler-side counterpart to [gh-aw-firewall PR #1809](https://github.com/github/gh-aw-firewall...

Addressed items 1 and 3 in 7365f86:

  1. Shell word-splitting: POLICY_ARGS now uses a bash array (POLICY_ARGS=(--policy "$POLICY") / "${POLICY_ARGS[@]}") matching the pattern in start_difc_proxy.sh.
  2. Docstring: Updated addCliProxyGHTokenToEnv comment to accurately describe that the token is set in the step env so --env-all picks it up and --exclude-env GH_TOKEN can strip it — not that AWF or the sidecar use it directly.

Item 2 (release coordination) is noted — will add merge-order guidance to the PR body. Item 4 (dedicated tests) tracked for follow-up.

@copilot update the firewall version to v0.25.17

Done in 7365f86. DefaultFirewallVersion updated to v0.25.17. Also updated awfSupportsCliProxy to properly compare the default version (instead of returning true unconditionally), updated tests to expect false for nil/empty firewall config, updated 4 golden files, and recompiled all 187 workflows.

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 -embedcfg /tmp/go-build1635732059/b063/embedcfg -pack (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 &#34;$k=&#34;.$v[&#34;localshow (http block)
  • https://api.github.com/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -c=4 -nolocalimports -importcfg /tmp/go-build1587147422/b411/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/fileutil/fileutil.go /home/REDACTED/work/gh-aw/gh-aw/pkg/fileutil/tar.go /opt�� prettier --check 64/bin/go **/*.ts **/*.json --ignore-path go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel go /usr/bin/git 82/001/test-compgit GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha GOMODCACHE node /usr/bin/git --check **/*.cjs 64/bin/go git conf�� user.name Test User /opt/hostedtoolcache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go node (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env Onlymin-integrity_with_explicit_repo3271018753/001 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git or.md GO111MODULE 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/git g_.a GO111MODULE verutil.test git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel git /usr/bin/git /tmp/gh-aw-test-git rev-parse om/myorg/repo.gi--show-toplevel git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go /usr/bin/git remo�� -v go /usr/bin/git y_with_repos=pubgit GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git ithout_min-integgit GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha tags/v4 git /usr/bin/git --show-toplevel -goversion /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /tmp/gh-aw-test-git remote mple.com/org/rep--show-toplevel git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env kKWw/S7Nmlx07vdUGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 7853113/b399/impGO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha &#34;prettier&#34; --cheGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go git cat-�� --end-of-optionsGOSUMDB blob 64/bin/go -d scripts/**/*.js 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go /usr/bin/git remo�� -v ieAM-Lz/1rKZ6KO_origin /usr/bin/git -json GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha HEAD git /usr/bin/git --show-toplevel go /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel go /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows/archie.md go /usr/bin/infocmp -json GO111MODULE 64/bin/go infocmp -1 xterm-color go /usr/bin/git y_with_repos=pubgit GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha -m Initial /usr/bin/git --show-toplevel go /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ortcfg /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha run --auto 1/x64/bin/node --detach GO111MODULE 64/bin/go 1/x64/bin/node -C /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_explicit_repo3271018753/001 remote /usr/bin/infocmp -json GO111MODULE 64/bin/go infocmp (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 d -n 10 (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility get .cfg 64/pkg/tool/linu-f gpg.program (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go /usr/bin/git remo�� -v go /usr/bin/git 160230051/.githugit GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha hE2hYyhzv8HjJpgjvEgj/hE2hYyhzv8HjJpgjvEgj (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha origin develop 1/x64/bin/node -c=4 -nolocalimports -importcfg 1/x64/bin/node rev-�� --show-toplevel sh /usr/bin/git npx prettier --cgit GOPROXY 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE 64/bin/bash GOINSECURE GOMOD GOMODCACHE go env 53961519 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 1875796829/.github/workflows GO111MODULE k GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 2406367944 GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE 1/x64/bin/bash GOINSECURE GOMOD GOMODCACHE go env 53961519 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 2818638966/.github/workflows GO111MODULE ck GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x-nolocalimports GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ger.test GOINSECURE GOMOD GOMODCACHE ger.test (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env verutil.go verutil_test.go ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE de/node/bin/bash GOINSECURE GOMOD GOMODCACHE go env 53961519 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 53961519 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node /opt�� prettier --check 64/bin/go **/*.ts **/*.json --ignore-path go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 ache/go/1.25.8/x/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen�� 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE go env /workflows GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha --show-toplevel go /usr/bin/git st-3595074891/.ggit GO111MODULE /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel go /usr/bin/git itattributes-tesgit GO111MODULE /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha til.go o 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env e-analyzer.md GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE til GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha --porcelain node 64/bin/go -d scripts/**/*.js 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha --ignore-path /bin/sh 64/bin/go -d bash 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha /tmp/go-build347GOSUMDB -trimpath 64/bin/go -p main -lang=go1.25 go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha /tmp/go-build347-test.timeout=10m0s -trimpath 64/bin/go -p github.com/githu-C -lang=go1.25 go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha /tmp/go-build347GOSUMDB -trimpath 64/bin/go -p github.com/githu-C -lang=go1.25 go _bra�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (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)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE k GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE sh -c &#34;prettier&#34; --cheGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go git (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build1587147422/b397/cli.test /tmp/go-build1587147422/b397/cli.test -test.testlogfile=/tmp/go-build1587147422/b397/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node /opt�� prettier --check 64/bin/go **/*.ts **/*.json --ignore-path go (http block)

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

Copilot finished work on behalf of lpcox April 8, 2026 22:50
Copilot AI requested a review from lpcox April 8, 2026 22:50
Copilot AI and others added 2 commits April 8, 2026 16:22
…eScript compatibility (#25406)

* feat: increase logging in copilot driver for silent startup failures (#issue) (#25390)

* feat(logging): add debug logging to 5 CLI files for improved troubleshooting (#25393)

* fix: add parentheses to JSDoc type cast in copilot_driver.cjs for TypeScript compatibility

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/34f7e8b3-df09-41bc-b786-8bb4b22ebb7e

Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
@lpcox lpcox merged commit c7b6a2e into main Apr 8, 2026
56 of 58 checks passed
@lpcox lpcox deleted the copilot/update-cli-proxy-implementation branch April 8, 2026 23:35
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.

CLI proxy: start difc-proxy on host, pass --difc-proxy-host to AWF

4 participants