Skip to content

fix(safeoutputs): always CLI-mount infrastructure servers regardless of cli-proxy#28872

Merged
pelikhan merged 3 commits intomainfrom
copilot/aw-failures-investigation
Apr 28, 2026
Merged

fix(safeoutputs): always CLI-mount infrastructure servers regardless of cli-proxy#28872
pelikhan merged 3 commits intomainfrom
copilot/aw-failures-investigation

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 28, 2026

Workflows using engine.command that call safeoutputs or mcpscripts directly as shell commands were failing with safeoutputs: command not found (exit 127) inside the AWF/Copilot chroot because the CLI mount step was gated behind tools.cli-proxy: true.

Root cause

getMCPCLIServerNames required cli-proxy: true to generate the "Mount MCP servers as CLIs" step. Without it, ${RUNNER_TEMP}/gh-aw/mcp-cli/bin/safeoutputs was never created and never added to PATH. The confusing --add-dir: line 1: safeoutputs: command not found error prefix occurs because engine-command.sh runs bash -lc '...' "$@" where bash assigns --add-dir (the first extra harness arg) to $0.

Changes

  • mcp_cli_mount.gogetMCPCLIServerNames: Infrastructure servers (safeoutputs, mcpscripts) are now always CLI-mounted when configured, independent of cli-proxy. User-facing MCP servers (playwright, custom MCPs) still require cli-proxy: true.

  • mcp_cli_mount.gogetMCPCLIExcludeFromAgentConfig: Still requires cli-proxy: true before populating GH_AW_MCP_CLI_SERVERS. This preserves existing agent behaviour: without explicit cli-proxy, safeoutputs stays in the agent's MCP config so normal MCP-based workflows are unaffected.

// Before: all CLI mounting required cli-proxy: true
if data.ParsedTools == nil || !data.ParsedTools.CLIProxy {
    return nil
}

// After: infrastructure servers are always mounted; user-facing servers still require cli-proxy
if data.ParsedTools != nil && data.ParsedTools.CLIProxy {
    // collect playwright, custom MCPs, etc.
}
// safeoutputs + mcpscripts appended unconditionally when configured
  • copilot_engine_test.go: Updated comprehensive with multiple tools expectation — with safe-outputs configured and restricted bash, shell(safeoutputs:*) is now correctly included in the allowlist.

  • 204 workflow lock files recompiled: smoke-ci.lock.yml now includes the "Mount MCP servers as CLIs" step and export PATH="${RUNNER_TEMP}/gh-aw/mcp-cli/bin:$PATH" prepended to the engine command.

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 /tmp/go-build174js/fuzz_mentions_harness.cjs /opt/hostedtoolcache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git -bool -buildtags 6621056/b123/vet.cfg git (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-build174js/fuzz_mentions_harness.cjs /opt/hostedtoolcache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git -bool -buildtags /usr/bin/git git (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 k/gh-aw/gh-aw/.g!../../../pkg/workflow/js/**/*.json git .yml l ache/go/1.25.8/x-atomic ed } } node js/f�� js/**/*.json' ---errorsas git kflows/daily-doc-nilfunc --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git infocmp (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env json' --ignore-p-p GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go /pre�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 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, .object.type] | @tsv --noprofile -tests /usr/bin/git --local committer.email ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel git /usr/bin/git origin main x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --get remote.origin.url /usr/bin/git /home/REDACTED/worgit rev-parse 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/git g_.a config k/gh-aw/gh-aw/acinstall git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --show-toplevel 64/pkg/tool/linuremote.origin.url /usr/bin/git 1566720427/.githgit GO111MODULE 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git 2262972477 g/types/doc.go ache/go/1.25.8/xinstall 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, .object.type] | @tsv --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv 5444-23184/test-2679284058 bash /usr/bin/git json' --ignore-pgit :latest ules/.bin/pretti--show-toplevel git rev-�� --show-toplevel git /usr/bin/git ithub/workflows show odules/npm/node_--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260428-085817-58920/test-2262972477 remote /usr/bin/git on' --ignore-patgit GO111MODULE 64/bin/go git conf�� --get remote.origin.url /usr/bin/git iant-2033518776/git 9 x_amd64/compile git (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, .object.type] | @tsv --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel x_amd64/compile /usr/bin/git --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git 9208639/b356/_pkgit (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, .object.type] | @tsv .version=70d3028-dirty" -o gh-aw ./cmd/gh-aw (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv celain --ignore-submodules | head -n 10 .cfg x_amd64/cgo (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv getMCPCLIExcludeFromAgentConfig\|ExcludeFromAgentConfig /home/REDACTED/work/gh-aw/gh-aw/pkg/workflow/ 86_64/bash ACCEPT (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, .object.type] | @tsv --show-toplevel x_amd64/vet /usr/bin/git 8956+gh-aw-bot@ugit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/link /usr/bin/git agent-performancgit git 64/pkg/tool/linuHEAD git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/git g_.a scripts/**/*.js ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git 0991802/b206/_pkgit 3zY_/HcUWNrRjpCKrev-parse At,event,headBraHEAD git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linutest@example.com /usr/bin/git FieldEnforcementgit ruy0/HceIUipbAWMrev-parse 1/x64/bin/node git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -stringintconv -tests /usr/local/.ghcup/bin/bash .egg --local ache/node/24.14.--show-toplevel bash --no�� --noprofile git /usr/local/sbin/bash --local credential.helperev-parse (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv --noprofile -tests /usr/local/.ghcup/bin/bash get --local cal/bin/bash bash --no�� --noprofile git /usr/bin/git --local user.email ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -v -run /usr/local/bin/bash ./pkg/workflow/ --local nfig/composer/ve--show-toplevel bash --no�� --noprofile git /usr/bin/git --local user.email n-dir/bash git (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, .object.type] | @tsv --noprofile -tests /home/REDACTED/.cargo/bin/bash get --local ache/node/24.14.--show-toplevel bash --no�� --noprofile git /usr/bin/git --local user.email cal/bin/bash git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /usr/lib/git-cor--show-toplevel /usr/bin/gh 9217578/b471/vet.cfg LsRemoteWithRealgit LsRemoteWithRealrev-parse 1/x64/bin/bash /usr/bin/git remo�� -v git /tmp/go-build1159217578/b469/workflow.test /home/REDACTED/worgit show /usr/bin/infocmp--show-toplevel /tmp/go-build1159217578/b469/workflow.test (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel 64/pkg/tool/linux_amd64/asm /usr/bin/git 37/001/test-frongit (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, .object.type] | @tsv se 9208639/b084/vet.cfg .cfg ACCEPT (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv f/tags/v6 -tests sv get --local 1/x64/bin/bash bash --no�� --noprofile git /tmp/go-build2163105339/b001/workflow.test rt user.email ndor/bin/bash /tmp/go-build2163105339/b001/workflow.test (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /usr/bin/git node clusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle js/**/*.json' --git 90 er: String!, $na--show-toplevel git rev-�� --show-toplevel /usr/bin/gh /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/link ithub/workflows -f odules/npm/node_--show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/link (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv celain --ignore-submodules | hea-errorsas (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -t security ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet OUTPUT -d 168.63.129.16 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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, .object.type] | @tsv se 9208639/b103/vet.cfg 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv sistency_InlinedImports3884177396/001/noflag-a.md node .test yphen3587097177/git yphen3587097177/rev-parse me: String!) { --show-toplevel .test Enve�� --show-toplevel /bin/sh /usr/bin/git echo "Syncing acgit git es/.bin/sh git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --all-progress-implied --revs /usr/bin/git --thin --delta-base-offrev-parse -q git -C /tmp/gh-aw-test-runs/20260428-085817-58920/test-479433480/.github/workflows config /usr/bin/git remote.origin.urgit cpgodebug/mcpgodrev-parse 64/bin/go git (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, .object.type] | @tsv --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git ror|PASS /tmp/go-build174js/fuzz_mentions_harness.cjs /opt/hostedtoolcache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu--jq (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel /usr/lib/sysstat/sadc $name) { hasDiscussionsEnabled } } -L -S 7692/b123/vet.cf--noprofile /opt/hostedtoolcache/node/24.14.1/x64/bin/npm inst�� --package-lock-only bash /usr/bin/git --noprofile git /opt/hostedtoolc/home/REDACTED/work/gh-aw/gh-aw/.github/workflows git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel /tmp/go-build1749208639/b001/workflow.test /opt/hostedtoolcache/node/24.14.1/x64/bin/node -test.paniconexibash -test.timeout=10--norc /usr/sbin/bash 4 -type d -name bin 2>/dev/null | tr '\n' ':')$PATH"; [ -n "$GOROOT" ] && expo /opt�� install --package-lock-only /usr/bin/git --noprofile git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch --show-toplevel git r: $owner, name: $name) { hasDiscussionsEnabled } } --show-toplevel x_amd64/vet /usr/bin/git git cjs --show-toplevel git r: $owner, name: $name) { hasDiscussionsEnabled } } --show-toplevel 64/pkg/tool/linu-C /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch -output.go node r: $owner, name: $name) { hasDiscussionsEnabled } } k/_temp/uv-pythogit git 64/bin/git 1/x64/bin/node ve . tions/setup/js/node_modules/vitest/suppress-warnings.cjs r: $owner, name: $name) { hasDiscussionsEnabled } } --is-ancestor k/gh-aw/gh-aw/ac-C k/gh-aw/gh-aw/ac/home/REDACTED/work/gh-aw/gh-aw tions/setup/js/nshow (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch -M main ock.yml --require k/gh-aw/gh-aw/ac-C rgo/bin/git go run ithub/workflows k/gh-aw/gh-aw/ac-m repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } feature | cat /egit ings.cjs ache/uv/0.11.8/x/home/REDACTED/work/gh-aw/gh-aw /opt/hostedtoolcshow (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, .object.type] | @tsv -test.paniconexit0 -test.timeout=10m0s /usr/sbin/bash -test.run=.*Toolgit g/workflow/setuprev-parse rgo/bin/bash bash --no�� --noprofile git /opt/hostedtoolcache/go/1.25.8/x64/bin/go data credential.helperev-parse ease go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git k/gh-aw/gh-aw/.ggit rev-parse 1/x64/lib/node_m--show-toplevel /usr/bin/git conf�� --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git graphql -f son git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE 64/pkg/tool/linu--show-toplevel git rev-�� tags/v6 64/pkg/tool/linuInitial commit sv 5605/001/stabiligit GO111MODULE 64/pkg/tool/linu--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, .object.type] | @tsv se 9208639/b038/vet.cfg .cfg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlyrepos_only_without_min-integrity3382001326/001 rev-parse /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --objects l /usr/bin/git --exclude-hiddengit --all --quiet git -C /tmp/TestGuardPolicyMinIntegrity.artifacts[].name rev-parse /opt/hostedtoolcache/node/24.14.1/x64/bin/node yphen2709538667/git yphen2709538667/diff 64/bin/go node (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, .object.type] | @tsv 9208639/b362/_pkg_.a (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_repos_array_c2813227257/001 remote /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet w/js/**/*.json' git git ec-maintainer.lo--show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --all-progress-implied --revs om/testowner/testrepo.git --thin --delta-base-offrev-parse -q git -C /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_only_defaults_repo76589785/001remote.origin.urgit remote /usr/bin/gh -json GO111MODULE es/.bin/node gh (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-04-21 bash /usr/bin/git Ge/9jqmIb_xHSyedorigin tion�� tmatter-with-nested-objects.md show de_modules/.bin/sh --show-toplevel git r: $owner, name:run node (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-03-29 /opt/hostedtoolcremote bject.type] | @tadd infocmp estl�� tmatter-with-arrays.md git tions/setup/js/node_modules/.bin-nilfunc --show-toplevel git DiscussionsEnabluser.email git (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-01-28 /opt/hostedtoolcconfig /usr/bin/git lt/xQe5f0wJO56wlremote.origin.url tion�� /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config bin/sh remote.origin.urgit git $name) { hasDiscussionsEnabl/tmp/TestGuardPolicyTrustedUsersRequiresMinIntegrity605089526/001 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 config 64/pkg/tool/linux_amd64/link ignore git /usr/bin/git 64/pkg/tool/linux_amd64/link ache�� 3219386976 config ortcfg.link remote.origin.urgit git 1/x64/bin/node UB4Z85HNraJd7B2VBq/aMwv_nfK75JUC-importcfg (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 config 64/pkg/tool/linux_amd64/vet ignore git /usr/bin/git 64/pkg/tool/linutest@example.com api rite '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.pr**/*.json -f ache/node/24.14.1/x64/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/node-v -f owner=github -f git (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name -QbQ/h0mDcb4RKnBUHEwN-QbQ 4651918/b404/cli.test GOSUMDB GOWORK 64/bin/go 4651918/b404/cli.test e=/t�� t0 79XR/6YQuLpx94_gDFryr79XR e/git m0s GO111MODULE (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 mcp/markitdown 64/pkg/tool/linux_amd64/vet cal/bin/bash git /usr/bin/git 64/pkg/tool/linux_amd64/vet -C /home/REDACTED/work/gh-aw/gh-aw show ache/node/24.14.1/x64/bin/npx --show-toplevel git 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 config 64/pkg/tool/linu-nolocalimports remote.origin.urgit git /usr/bin/git 64/pkg/tool/linu/tmp/go-build1159217578/b459/_testmain.go -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows piler_activation_job_builder.go k/gh-aw/node_modules/.bin/sh piler_activationgit piler_additionalrev-parse piler_artifacts_--show-toplevel piler_aw_context.go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GOPROXY ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOSUMDB e/jsonschema-go/rev-parse 0991802/b087/sym--show-toplevel ache/go/1.25.8/x64/pkg/tool/linutest@example.com /hom�� 5817-58920/test-72921269 0991802/b087/importcfg ache/node/24.14.1/x64/bin/node .prettierignore go 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu/tmp/file-tracker-test3309359003/test2.lock.yml (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 k/gh-aw/gh-aw/.github/workflows/smoke-ci.lock.ym-ifaceassert ionpins.test -f owner=github -f ionpins.test 1592�� 928509358/.github/workflows rev-parse k/_temp/uv-python-dir/node --show-toplevel git r: $owner, name:--git-dir git (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 rev-parse 64/pkg/tool/linux_amd64/compile 07a9d4d84ff7a3b git $name) { hasuser.email 64/pkg/tool/linutest@example.com -1 g_.a /node_modules/flatted/golang/pkg-ifaceassert k/gh-aw/gh-aw/node_modules/.bin/-nilfunc lization_test.gogit tants_test _list_test.go lag_test.go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name nTLC/e3WDbj-6Hz_OhJqGnTLC ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOSUMDB b/gh-aw/pkg/consrev-parse 64/bin/go ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /hom�� 5817-58920/test-72921269 scripts/**/*.js /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/asm .prettierignore go 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/asm (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 k/gh-aw/gh-aw/.github/workflows/ace-editor.md 64/pkg/tool/linux_amd64/vet ignore k/gh-aw/gh-aw/.grev-parse k/gh-aw/gh-aw/.g--git-dir 64/pkg/tool/linux_amd64/vet ache�� k/gh-aw/gh-aw/.github/workflows/approach-validator.md k/gh-aw/gh-aw/.github/workflows/archie.md ck k/gh-aw/gh-aw/.ggit k/gh-aw/gh-aw/.ginit k/gh-aw/gh-aw/.github/workflows/auto-triage-issu/tmp/gh-aw-test-runs/20260428-085444-23184/test-2707965148/.gith--detach k/gh-aw/gh-aw/.github/workflows/aw-failure-invesrev-parse (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 show 64/pkg/tool/linux_amd64/vet ignore git /usr/bin/git 64/pkg/tool/linux_amd64/vet -C rite '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.pr**/*.json rev-parse e_modules/.bin/node --show-toplevel git r: $owner, name:--git-dir git (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name pRaw/gwkwek_UF5vdtNyzpRaw 1/x64/bin/node GOSUMDB GOWORK 64/bin/go cp t-ha�� ithub/workflows/api-consumption-report.md Fuh-/RCcUnszHB3ob-AbBFuh- e/git -json GO111MODULE 64/bin/go e/git (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 show 64/pkg/tool/linux_amd64/vet ignore git /usr/bin/git Vgol9MA/jtMHmSR1PwQ4sKWnT8ry ache�� /home/REDACTED/work/gh-aw/gh-aw show cal/bin/sh --show-toplevel git 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 k/gh-aw/gh-aw/.github/workflows/ace-editor.lock.-ifaceassert 64/pkg/tool/linux_amd64/link ignore git DiscussionsEnabled } } 64/pkg/tool/linux_amd64/link -C e-analyzer.md config x_amd64/compile remote.origin.urgit git 1/x64/bin/node x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name bYse/Agvt9vB4Z3tFs27lbYse 0991802/b204=> GOSUMDB fips140/tls12 64/bin/go cp inst�� 0991802/b046/importcfg iMTA/2uapuyerpeiv4b3viMTA /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linurev-parse (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 git 64/pkg/tool/linux_amd64/link ignore git /usr/bin/git 64/pkg/tool/linutest@example.com ache�� .test -f ortcfg.link -f owner=github -f Pw_7VzEBCTC3L-DzU_/6tsaURO6GleOOremote (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 rev-parse 64/pkg/tool/linux_amd64/compile ignore git /usr/bin/git 64/pkg/tool/linuTest User -C g_.a show in/node --show-toplevel git 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name gLhb/hBEUOkjpLNrZf4ikgLhb 0991802/b205=> GOSUMDB fips140/tls13 64/bin/go chmod +x 0991802/b053/importcfg ro-o/78ByPuFdRyAS-MkVro-o /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/asm -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuconfig (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 -f x_amd64/vet ignore owner=github -f x_amd64/vet ache�� g_.a ghcr.io/github/serena-mcp-server:latest x_amd64/vet --show-toplevel git 1/x64/bin/node x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 config 64/pkg/tool/linux_amd64/compile ignore git r: $owner, name:--show-toplevel 64/pkg/tool/linux_amd64/compile -1 g_.a git k/node_modules/.bin/node --show-toplevel util_test $name) { hasDiscussionsEnabl/tmp/shared-actions-test4129877393 git (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GOPROXY ache/node/24.14.1/x64/bin/node GOSUMDB g/x/crypto/chachrev-parse ache/go/1.25.8/x--show-toplevel /bin/sh t-42�� sistency_GoAndJavaScript2545637237/001/test-simple-frontmatter.md TWRl/eDvIxLANZ0cGFI5vTWRl e/git-upload-pack -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path ithub/workflows git er: String!, $na../../../.prettierignore --show-toplevel ache/go/1.25.8/x-atomic ed } } node js/f�� js/**/*.json' ---errorsas git /usr/bin/infocmp-nilfunc l /opt/hostedtoolc-atomic /usr/bin/git infocmp (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 /opt/hostedtoolcpack-objects DiscussionsEnabl--all-progress-implied git -C on' --ignore-pat--thin rev-parse me: String!) { -q --show-toplevel /opt/hostedtoolc-C /usr/bin/infocmp/tmp/TestGuardPolicyBlockedUsersExpressionCompiledOutput1787886584/001 /usr/bin/gh (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 feature-branch /usr/bin/git 64/pkg/tool/linux_amd64/vet -1 xterm-color git x_amd64/link --show-toplevel git /usr/bin/git x_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build1159217578/b404/cli.test /tmp/go-build1159217578/b404/cli.test -test.testlogfile=/tmp/go-build1159217578/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true --show-toplevel 64/pkg/tool/linu-c /usr/bin/git node js/f�� ache/go/1.25.8/x--show-toplevel git me: String!) { repository(owner: $owner, name:-f --show-toplevel ache/go/1.25.8/x/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier ed } } node (http block)
    • Triggering command: /tmp/go-build3744651918/b404/cli.test /tmp/go-build3744651918/b404/cli.test -test.testlogfile=/tmp/go-build3744651918/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -nolocalimports -importcfg /tmp/go-build2070991802/b202/importcfg -pack env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /tmp/go-build2196910478/b404/cli.test /tmp/go-build2196910478/b404/cli.test -test.testlogfile=/tmp/go-build2196910478/b404/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 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, .object.type] | @tsv --show-toplevel x_amd64/vet /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel bash /usr/bin/git CommaSeparatedCogit stmain.go /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel node /usr/bin/git rt --write e/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linustatus /usr/bin/git 0991802/b065/_pkgit rg/x/text@v0.36.rev-parse ache/go/1.25.8/x--show-toplevel /usr/bin/git remo�� -v ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git 0991802/b246/_pkdu NNuM/NZNs7zEf3uy-k (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, .object.type] | @tsv --abbrev-ref HEAD ndor/bin/bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv te '**/*.cjs' '**/*.ts' '**/*.json' --ignore-pat-c=4 config tartedAt,updatedAt,event,headBranch,headSha,displayTitle remote.origin.urgit git 1/x64/bin/node 64/pkg/tool/linux_amd64/vet -C rite '../../../**/*.json' '!../../../pkg/workfloremote.origin.url rev-parse /usr/local/.ghcup/bin/bash --show-toplevel git $name) { has--show-toplevel bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv /lib/wasm/wasm_exec.js (or misc/wasm/ for Go <1.24)" GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a @v1.19.2/scanner/context.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin (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, .object.type] | @tsv ithub/workflows git /usr/bin/infocmp-nilfunc --show-toplevel /opt/hostedtoolc-1 /usr/bin/git infocmp -1 k/gh-aw/gh-aw git stylist.lock.yml --show-toplevel /opt/hostedtoolcconfig /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm 0893�� -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env lGitmain_branch1432610127/001' lGitmain_branch1432610127/001' 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, .object.type] | @tsv ithub/workflows git /usr/bin/infocmp --show-toplevel /opt/hostedtoolcworkflow /usr/bin/git infocmp -1 th .prettierigno--repo git kflows/firewall.lock.yml go /opt/hostedtoolcrev-parse /usr/bin/git /usr/bin/gh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv json' --ignore-p-c=4 config ilot-arm.lock.ym-importcfg remote.origin.urgit ache/go/1.25.8/xrev-parse /usr/bin/git /usr/bin/gh api th .prettierignore --log-level=error -f ode_modules/.bin/node -f owner=github DiscussionsEnabl--show-toplevel infocmp (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv json' --ignore-p-s git /usr/bin/gh --show-toplevel /opt/hostedtoolc-C /usr/bin/git /usr/bin/gh 1971�� th .prettierignoremote.origin.url -f ck.yml -f owner=github ed } } infocmp (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, .object.type] | @tsv k/gh-aw/gh-aw/.github/workflows rev-parse ex.lock.yml l ache/go/1.25.8/xrev-parse /usr/bin/git git -C th .prettierignore --log-level=error show /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (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, .object.type] | @tsv --abbrev-ref HEAD x_amd64/compile .js (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv te '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.prettierignore -f ache/go/1.25.8/x64/bin/sh -f owner=github ode-gyp-bin/node/repos/actions/github-script/git/ref/tags/v9 git -C rite '../../../**/*.json' '!../../../pkg/workflow/js/**/*.json' --ignore-path show ache/go/1.25.8/x64/bin/go --show-toplevel git 1/x64/bin/node bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env 5605/001/stability-test.md oding@v0.5.4/ascii/equal_fold.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linumyorg (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 nore git /usr/bin/git /usr/bin/gh api te '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.prettierignore -f ache/go/1.25.8/x64/bin/sh -f owner=github ode-gyp-bin/node/repos/actions/github-script/git/ref/tags/v9 git (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion m0s GO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE sh -c "prettier" --check '**/*.cjs' '**/*.ts' '**/*.js.github/workflows/test.md GOPROXY /usr/bin/git GOSUMDB GOWORK 64/bin/go git (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 kflows/contribut../../../.prettierignore --show-toplevel ache/go/1.25.8/x-atomic /usr/bin/git node js/f�� js/**/*.json' ---errorsas git (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo lock.yml --show-toplevel ache/go/1.25.8/x-atomic /usr/bin/git node js/f�� js/**/*.json' ---errorsas git lock.yml --show-toplevel /opt/hostedtoolcinit /usr/bin/git /usr/bin/gh (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state ache/node/24.14.1/x64/bin/npx --show-toplevel git 1/x64/bin/node git -C t1179089950/.github/workflows config .cfg remote.origin.urgh r repository(owne--paginate grep (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 nore --log-level--ignore-path git orkflow-analyzer.lock.yml --show-toplevel ache/go/1.25.8/x-atomic /usr/bin/git node js/f�� js/**/*.json' ---errorsas git /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git git (http block)
    • 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 go env json' --ignore-p-p GO111MODULE ules/.bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE modules/@npmcli/run-script/lib/node-gyp-bin/node GOINSECURE GOMOD GOMODCACHE go /pre�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch g_.a show in/node --show-toplevel git 1/x64/bin/node git m/_n�� conflict_test.go cycle_test.go /home/REDACTED/work/_temp/uv-python-dir/bash remote.origin.urgh r repository(ownedownload bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch /tmp/gh-aw-test-runs/20260428-085817-58920/test-214266806/.github/workflows remote /usr/bin/git on' --ignore-patgit GO111MODULE 64/bin/go git remo�� GOMODCACHE go /usr/bin/git -json GO111MODULE x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch /tmp/gh-aw-test-runs/20260428-090222-84318/test-3837353233/.github/workflows config /usr/bin/git remote.origin.urgit GO111MODULE 64/bin/go git remo�� GOMODCACHE go /usr/bin/git -json GO111MODULE 64/bin/go git (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 e/git init�� ndor/bin/git git ode_modules/.bin/git =receive test@example.com--git-dir=/tmp/bare-incremental-iSxebX /git (dns block)

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

Copilot AI and others added 2 commits April 28, 2026 08:47
…ing cli-proxy (#28871)

When a workflow has safe-outputs or mcp-scripts configured and uses engine.command
that calls safeoutputs or mcpscripts as shell commands, the binary was not on PATH
inside the AWF/Copilot chroot because the CLI mount step was gated behind cli-proxy:true.

This fix:
- Infrastructure servers (safeoutputs, mcpscripts) are always CLI-mounted when
  configured, regardless of cli-proxy setting
- User-facing servers (playwright, custom MCPs) still require cli-proxy:true
- getMCPCLIExcludeFromAgentConfig still requires cli-proxy:true so normal agent
  workflows continue using safeoutputs via MCP directly without disruption

Also recompiles all 204 workflow files so smoke-ci.lock.yml now includes:
- Mount MCP servers as CLIs step
- export PATH="${RUNNER_TEMP}/gh-aw/mcp-cli/bin:$PATH" in engine command

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/fec6d70f-a000-4b5d-87f5-c228edda4ddb

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Copilot AI changed the title [WIP] Investigate failures during 2026-04-28 window fix(safeoutputs): always CLI-mount infrastructure servers regardless of cli-proxy Apr 28, 2026
Copilot AI requested a review from gh-aw-bot April 28, 2026 09:10
@pelikhan pelikhan marked this pull request as ready for review April 28, 2026 09:12
Copilot AI review requested due to automatic review settings April 28, 2026 09:12
@github-actions github-actions Bot mentioned this pull request Apr 28, 2026
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

Note

Copilot was unable to run its full agentic suite in this review.

This PR fixes workflows that invoke safeoutputs/mcpscripts directly from engine.command by ensuring infrastructure MCP servers are CLI-mounted even when tools.cli-proxy is disabled, and updates generated workflow lockfiles accordingly.

Changes:

  • Update MCP CLI mount server selection so infrastructure servers (safeoutputs, mcpscripts) mount independent of cli-proxy.
  • Adjust restricted-bash allowlist expectations to permit shell(safeoutputs:*) when safe-outputs is configured.
  • Regenerate workflow lockfiles to add the “Mount MCP servers as CLIs” step and prepend the MCP CLI bin dir to PATH (plus minor doc/workflow metadata updates).
Show a summary per file
File Description
pkg/workflow/mcp_cli_mount.go Makes infra MCP servers CLI-mounted regardless of cli-proxy; keeps user-facing servers gated behind cli-proxy.
pkg/workflow/copilot_engine_test.go Updates expected allowlist to include shell(safeoutputs:*) for restricted bash scenarios.
docs/src/content/docs/reference/frontmatter-full.md Updates tools frontmatter to reference cli-proxy.
docs/src/content/docs/agent-factory-status.mdx Adds a new entry to the agent-factory status table.
.github/workflows/workflow-normalizer.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/workflow-health-manager.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/weekly-safe-outputs-spec-review.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/weekly-issue-summary.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/weekly-blog-post-writer.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/visual-regression-checker.lock.yml Adds MCP CLI prompt content, mount step, prepends MCP CLI bin to PATH, and allowlist notes for safeoutputs:*.
.github/workflows/video-analyzer.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/ubuntu-image-analyzer.lock.yml Adds MCP CLI prompt content, mount step, prepends MCP CLI bin to PATH, and allowlist notes for safeoutputs:*.
.github/workflows/tidy.lock.yml Adds pull-requests: write and updates prompt/mount/PATH for MCP CLI tooling.
.github/workflows/plan.lock.yml Adds pull-requests: write.
.github/workflows/pdf-summary.lock.yml Adds pull-requests: write.
.github/workflows/mergefest.lock.yml Adds pull-requests: write.
.github/workflows/deployment-incident-monitor.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/daily-aw-cross-repo-compile-check.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/copilot-token-optimizer.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/copilot-opt.lock.yml Adds MCP CLI prompt content, mount step, prepends MCP CLI bin to PATH, and allowlist notes for safeoutputs:*.
.github/workflows/brave.lock.yml Adds pull-requests: write.
.github/workflows/ace-editor.lock.yml Adds pull-requests: write.
.github/workflows/smoke-opencode.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-gemini.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-crush.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-create-cross-repo-pr.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-ci.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH for engine.command path.
.github/workflows/smoke-agent-scoped-approved.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-agent-public-none.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-agent-all-none.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-agent-all-merged.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/security-compliance.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/schema-consistency-checker.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/stale-repo-identifier.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/sub-issue-closer.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/technical-doc-writer.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/terminal-stylist.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/test-dispatcher.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/test-project-url-default.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-service-ports.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-test-tools.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-update-cross-repo-pr.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-project.lock.yml Adds MCP CLI prompt content, mount step, and prepends MCP CLI bin to PATH.
.github/workflows/smoke-workflow-call.lock.yml Adds MCP CLI prompt content, mount step, prepends MCP CLI bin to PATH, and allowlist notes for safeoutputs:*.

Copilot's findings

Tip

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

Comments suppressed due to low confidence (4)

pkg/workflow/mcp_cli_mount.go:1

  • New behavior is introduced where infrastructure servers are CLI-mounted even without tools.cli-proxy, while exclusion from the agent config still requires cli-proxy. There should be targeted unit tests covering: (1) cli-proxy: false + safe-outputs enabled => getMCPCLIServerNames includes safeoutputs; (2) cli-proxy: false => getMCPCLIExcludeFromAgentConfig returns nil; (3) cli-proxy: true => exclusion list includes the same servers as getMCPCLIServerNames.
    .github/workflows/workflow-normalizer.lock.yml:1
  • The CLI mount step is marked continue-on-error: true, but downstream steps now rely on the mounted wrappers being present (e.g. safeoutputs via PATH). If mounting fails, this can regress back to confusing command not found failures. Consider making this step fail the job when infrastructure CLIs are expected (or at least add an explicit post-step validation / warning that checks for ${RUNNER_TEMP}/gh-aw/mcp-cli/bin/safeoutputs when safe-outputs is configured).
    docs/src/content/docs/reference/frontmatter-full.md:1
  • This section appears to have replaced mount-as-clis with cli-proxy, which changes the meaning/config knob being documented. If mount-as-clis is still supported (or if cli-proxy is not a true rename), the docs should clarify the relationship (e.g., deprecation/rename notes, or document both fields) to avoid misconfigurations.
    .github/workflows/tidy.lock.yml:1
  • The PR description focuses on unblocking CLI mounting for safeoutputs/mcpscripts, but the lockfile recompilation also introduces additional permission changes (e.g. pull-requests: write). Please either (a) update the PR description to explicitly call out these permission changes and why they’re necessary, or (b) adjust regeneration so it doesn’t introduce unrelated permission deltas.
  • Files reviewed: 55/55 changed files
  • Comments generated: 1

contents: read
discussions: write
issues: write
pull-requests: write
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

This PR adds pull-requests: write to multiple workflows. That broadens the token’s permissions and should be justified and scoped to least privilege (e.g., only add it to jobs that actually create/update PRs, and consider pull-requests: read where write isn’t required). If this is a lockfile normalization side effect, it would be better to avoid introducing new permissions without a functional need.

Suggested change
pull-requests: write
pull-requests: read

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 90/100

Excellent test quality

Metric Value
New/modified tests analyzed 1 (modified test case)
✅ Design tests (behavioral contracts) 1 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 1 (100%) — via broader table-driven suite
Duplicate test clusters 0
Test inflation detected No (3 lines test / 84 lines production = 0.04 ratio)
🚨 Coding-guideline violations None

Test Classification Details

Test File Classification Issues Detected
TestCopilotEngineComputeToolArguments (modified case) pkg/workflow/copilot_engine_test.go:347 ✅ Design None

Analysis

This PR modifies a single expected value in the existing table-driven test TestCopilotEngineComputeToolArguments. The change adds "--allow-tool", "shell(safeoutputs:*)" to the expected []string slice for the "safe outputs with create issues" test case, aligning the test with the new behavior where safeoutputs is always CLI-mounted.

What design invariant does this test enforce?
It enforces a behavioral contract: when safe-outputs is configured, the computed Copilot CLI tool arguments must include the safeoutputs tool and a bash shell allowlist entry for safeoutputs CLI commands.

What would break if deleted?
The regression where shell(safeoutputs:*) is missing from the allowlist would go undetected — callers would silently get an incomplete allowlist, breaking safeoutputs in restricted-bash environments.

No mock libraries: ✅ Confirmed
Assertion messages: ✅ Uses t.Errorf with context throughout the file


Language Support

Tests analyzed:

  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new/modified tests are implementation tests (threshold: 30%). The test update correctly captures the new behavioral contract introduced by this fix.

📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

References: §25044329667

🧪 Test quality analysis by Test Quality Sentinel · ● 494.7K ·

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.

✅ Test Quality Sentinel: 90/100. Test quality is excellent — 0% of new/modified tests are implementation tests (threshold: 30%). The single modified test case correctly updates the behavioral contract for safeoutputs CLI mounting.

@pelikhan pelikhan merged commit e834fb9 into main Apr 28, 2026
41 checks passed
@pelikhan pelikhan deleted the copilot/aw-failures-investigation branch April 28, 2026 09:23
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.

[aw-failures] [aw] Failure Investigation Report — 2026-04-28 (6h window)

4 participants