Skip to content

fix: copy node binary to standard system path for AWF sandbox on custom runners#26426

Closed
Copilot wants to merge 2 commits intomainfrom
copilot/aw-fix-daily-news-failure
Closed

fix: copy node binary to standard system path for AWF sandbox on custom runners#26426
Copilot wants to merge 2 commits intomainfrom
copilot/aw-fix-daily-news-failure

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 15, 2026

On custom image runners (e.g. aw-gpu-runner-T4), actions/setup-node installs Node.js into the toolcache (/home/runner/work/_tool/node/24.x.x/x64/bin/), which is not mounted in AWF's chroot container — causing node: command not found when the Copilot driver script executes inside the sandbox.

Changes

  • pkg/workflow/runtime_step_generator.go: Added case "node": to GenerateRuntimeSetupSteps, injecting a step that copies the node binary to /usr/local/bin/node immediately after actions/setup-node. Follows the same pattern as the existing Capture GOROOT for AWF chroot mode step for Go.
case "node":
    // toolcache path inaccessible inside AWF chroot on certain runner types
    steps = append(steps, generateNodeSystemPathStep())

The generated step:

- name: Copy node to standard system path for AWF sandbox
  run: |
    NODE_BIN="$(command -v node 2>/dev/null || true)"
    if [ -n "$NODE_BIN" ] && [ "$NODE_BIN" != "/usr/local/bin/node" ]; then
      sudo cp -f "$NODE_BIN" /usr/local/bin/node
      sudo chmod +x /usr/local/bin/node
    fi

This only affects custom image runners — standard GitHub-hosted runners (ubuntu-*, windows-*) have node pre-installed at a system path and never reach this code path.

  • pkg/workflow/runtime_setup_test.go: Updated node runtime test cases to expect 2 steps (setup + copy) instead of 1.
  • 16 .lock.yml files: Recompiled workflows that use node runtime on custom runners.

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 g/workflow/testd-c g/workflow/testd"prettier" --write 'scripts/**/*.js' --ignore-path .prettierignore --log-level=error x_amd64/vet g/wo�� h ../../../.prettierignore g/workflow/testdata/wasm_golden/-ifaceassert x_amd64/vet g/workflow/testdnode g/workflow/testd/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier (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 g/workflow/testd--write g/workflow/testdscripts/**/*.js x_amd64/vet g/wo�� h ../../../.pret--log-level=error g/workflow/testdata/wasm_golden/-ifaceassert x_amd64/vet g/workflow/testdnode g/workflow/testd/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier 64/bin/git x_amd64/vet (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 g/workflow/testd/home/REDACTED/.npm/_npx/b388654678d519d9/node_modules/.bin/prettier g/workflow/testd--write x_amd64/vet g/wo�� h ../../../.pret.prettierignore g/workflow/testd--log-level=error x_amd64/vet g/workflow/testdnode g/workflow/testd/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier (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 t0 m0s es/.bin/node tectRuntimeRequigit -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet k/gh�� -unreachable=false /tmp/go-build588844726/b194/vet.cfg k/gh-aw/node_modules/.bin/sh --local r_pin_test.go erignore /opt/hostedtoolc-test.v=true (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 x_amd64/vet /usr/bin/git k/gh-aw/gh-aw bash kflows/daily-ote--show-toplevel /usr/bin/git conf�� --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git ithub/workflows show er: String!, $na--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 /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_repos_array_c1954663464/0-p rev-parse clusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle -c=4 -nolocalimports -importcfg git -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows rev-parse /usr/bin/git ithub/workflows /tmp/go-build588rev-parse nfig/composer/ve--show-toplevel 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 g_.a x_amd64/vet /usr/bin/gh js/**/*.json' --/usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel gh /usr/bin/git /repos/actions/ugit --jq stants.test git rev-�� it/ref/tags/v4 stants.test /usr/bin/git /home/REDACTED/worgit rev-parse er: String!, $na--show-toplevel 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 licyBlockedUsersgit rev-parse /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-tests otOrdering2313703303/001/go/1.25.0/x64/bin/go ache/node/24.14.git ache/go/1.25.8/xrev-parse ache/go/1.25.8/x--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 --show-toplevel eutil.test /usr/bin/git k/gh-aw/gh-aw/.ggit show /usr/bin/gh git rev-�� --show-toplevel gh /usr/bin/git 5622-16941/test-git --jq kflows/test-disp--show-toplevel 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 *.json' '!../../../pkg/workflow/js/**/*.json' ---buildmode=exe git /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-s /golden.go --local ache/uv/0.11.6/x/home/REDACTED/work/gh-aw/gh-aw /opt/hostedtoolcshow -uns�� /js && npm run format:cjs --sileremote.origin.url /tmp/go-build588844726/b055/vet.cfg m/_npx/b388654678d519d9/node_modules/.bin/sh --local user.email ache/go/1.25.8/x--noprofile /opt/hostedtoolcache/go/1.25.8/xrev-parse (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq .object.sha go1.25.8 -c=4 -nolocalimports -importcfg /tmp/go-build2628817771/b429/importcfg -pack /tmp/go-build2628817771/b429/_testmain.go ache�� -bool -buildtags me: String!) { -buildmode=exe rkflow/js/**/*.j/usr/lib/git-core/git -ifaceassert erignore /opt/hostedtoolc--auto (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq .object.sha ithub/workflows /tmp/go-build588844726/b197/vet.cfg k/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/sh --local commit.gpgsign erignore /opt/hostedtoolcache/go/1.25.8/xrev-parse -ato�� ithub/workflows -buildtags /home/REDACTED/work/_temp/ghcca-node/node/bin/bash -errorsas -ifaceassert -nilfunc bash (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 -bool -buildtags /opt/hostedtoolcache/node/24.14.1/x64/bin/node -errorsas -ifaceassert -nilfunc node /tmp�� /home/REDACTED/work/gh-aw/gh-aw/.github/workflows/agent-performance-analyzer.md -tests /opt/hostedtoolcache/node/24.14.1/x64/bin/node ithub/workflows ../../../**/*.jsrev-parse (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 add origin /usr/bin/git ithub/workflows ata/wasm_golden/rev-parse x_amd64/compile git conf�� user.name Test User /opt/hostedtoolcache/node/24.14.1/x64/bin/node --write :latest /usr/bin/git node (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 -test.paniconexit0 -test.v=true /usr/bin/gh -test.timeout=10git -test.run=^Test -test.short=true--show-toplevel gh api /orgs/test-owner/actions/secrets --jq ache/node/24.14.1/x64/bin/node t0 m0s es/.bin/node git (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v7 --jq .object.sha --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v7 --jq .object.sha -t security x_amd64/vet OUTPUT -d 168.63.129.16 x_amd64/vet --no�� h ../../../.prettierignore 53 x_amd64/vet ACCEPT (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v7 --jq .object.sha -t security /node OUTPUT -d 168.63.129.16 x_amd64/vet /pre�� --noprofile conntrack x_amd64/vet INVALID,NEW -j DROP x_amd64/vet (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 --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha re --log-level=e!../../../pkg/workflow/js/**/*.json security x_amd64/vet OUTPUT -d 168.63.129.16 x_amd64/vet ls-f�� js/**/*.json' --ignore-path ../../../.prettierignore --others 64/pkg/tool/linux_amd64/vet ACCEPT (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v7 --jq .object.sha ./../pkg/workflo-f /home/REDACTED/worowner=github 64/bin/bash /home/REDACTED/wor/usr/bin/gh /home/REDACTED/worapi /home/REDACTED/worgraphql ache/go/1.25.8/x-f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v7 --jq .object.sha ./../pkg/workflow/js/**/*.json' --ignore-path /home/REDACTED/work/gh-aw/gh-aw/pk../../../.prettierignore $name) { hasDiscussionsEnabled } } /home/REDACTED/wor/usr/bin/gh /home/REDACTED/worapi /home/REDACTED/worgraphql x_amd64/asm (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 --get remote.origin.url /usr/bin/git rity762989492/00git eCdGvTZO8LdU x_amd64/vet git rev-�� --git-dir x_amd64/vet 8817771/b451/vet.cfg ithub/workflows ../../../**/*.jsrev-parse x_amd64/vet 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 -bool -buildtags ache/go/1.25.8/x64/pkg/tool/linux_amd64/link -errorsas -ifaceassert -nilfunc ache/go/1.25.8/x64/pkg/tool/linux_amd64/link rev-�� 8817771/b449/typeutil.test -tests 8817771/b449/importcfg.link -unreachable=falgit /tmp/go-build588rev-parse repository(owne--show-toplevel rFoiYicFsYe-O/_kz8wMEZNDzYl9ptOGPo/5GniUk8RBwwF8S8eKncR/bXjFK1lrFoiYicFsYe-O (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 /tmp/go-build2628817771/b415/gitutil.test -importcfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -s -w -buildmode=exe ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile rev-�� 8817771/b449/_pkg_.a -extld=gcc 8817771/b449=> -unreachable=falgit /tmp/go-build588rev-parse cal/bin/node 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 kflows/docs-noob-tester.lock.yml remote.origin.urgit -nolocalimports -importcfg git -C k/gh-aw/gh-aw config (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 -f x_amd64/link -f owner=github -f x_amd64/link -C /home/REDACTED/work/gh-aw/gh-aw show er: String!, $name: String!) { repository(owne-test.short=true re --log-level=egit (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 x_amd64/vet /usr/bin/git l (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 config k/_temp/uv-python-dir/node remote.origin.urgit (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 x_amd64/vet kflow-call.lock.yml --noprofile (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 rev-parse ndor/bin/bash --noprofile (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 -f o-identifier.lock.yml -f owner=github -f gh api d go /usr/bin/infocmp --noprofile (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 config n-dir/bash remote.origin.urgit -lname x_amd64/vet git -C 339181701 rev-parse kflows/pdf-summary.lock.yml re --log-level=egit (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 x_amd64/vet n-dir/bash - 1 x_amd64/vet infocmp -1 k/gh-aw/gh-aw/.github/workflows x_amd64/vet /usr/bin/git k/gh-aw/gh-aw/pkgit (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 show 86_64/bash ath ../../../.prgit -lname DiscussionsEnabled } } git -C /home/REDACTED/work/gh-aw/gh-aw/.g-p config /usr/bin/gh remote.origin.urgit k/gh-aw/gh-aw/pkrev-parse x_amd64/vet gh (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 rev-parse 86_64/bash l (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 x_amd64/vet (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 show er: String!, $na-importcfg -c=4 -nolocalimports -importcfg git -C 202658031 show /usr/bin/gh (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 config 1/x64/bin/bash remote.origin.urgit /home/REDACTED/worrev-parse x_amd64/vet git -C k/gh-aw/gh-aw/.github/workflows show ck l (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path 757007172/001' 757007172/001' -importcfg /tmp/go-build2628817771/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 k/gh�� ithub/workflows /tmp/go-build588844726/b203/vet.cfg e_modules/.bin/sh \|shell_wrapped g/workflow/awf_h-o erignore .github/aw/actio-trimpath (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 -ifaceassert -nilfunc git rev-�� tions-lock.json from .github/aw -f -tests ti-device-docs-tester.lock.yml ./../.prettieriggit (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 g/workflow/testdconfig x_amd64/vet git -C edOutput1541728255/001 show 64/pkg/tool/linux_amd64/vet h ../../../.pretgit g/workflow/testdrev-parse DiscussionsEnabl--git-dir 64/pkg/tool/linux_amd64/vet (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 64/pkg/tool/linux_amd64/vet /usr/bin/git k/gh-aw/gh-aw -f (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 rity132069667/001 rev-parse aw.test h ../../../.pretgit g/workflow/testdrev-parse /node aw.test 6288�� graphql -f (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 edcfg -buildtags oken-optimizer.l-nilfunc rkflow/js/**/*.jgit -ifaceassert ed } } ache/go/1.25.8/x-tests --no�� 4576521/b001/_pkg_.a -tests me: String!) { repository(owner: $owner, name:-f ./../.prettieriggit (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 -bool -buildtags l rkflow/js/**/*.j/usr/lib/git-core/git -ifaceassert erignore ache/go/1.25.8/x--auto --no�� it/ref/tags/v7 -tests 4576521/b001/importcfg.link ./../.prettieriggit ZyuWUiCX_Vk08/sJconfig /home/REDACTED/woruser.name sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha -bool -buildtags k.yml rkflow/js/**/*.j/usr/lib/git-core/git -ifaceassert erignore go test�� -v -run repository(owne-nolocalimports ./../.prettieriggit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha te '../../../**/-errorsas yml ign-issue-to-use-nilfunc -errorsas -ifaceassert -nilfunc /opt/hostedtoolc-importcfg 7007�� -bool -buildtags me: String!) { -buildmode=exe -errorsas -ifaceassert -nilfunc node (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 -bool -buildtags ache/uv/0.11.6/x-lang=go1.25 rkflow/js/**/*.j/bin/sh -ifaceassert erignore bash --no�� ithub/workflows -tests /home/REDACTED/.do-nolocalimports ./../.prettieriggit (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 -v cfg 64/pkg/tool/linux_amd64/vet de.*container\|igit (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 rity132069667/001 show 64/pkg/tool/linux_amd64/vet h ../../../.pretgit (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 --noprofile (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 repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } --local credential.helpe--norc n-dir/bash /opt/hostedtoolcache/go/1.25.8/xmcp/notion k/gh�� -unreachable=false /tmp/go-build588844726/b201/vet.cfg change-checker.lock.yml --local commit.gpgsign erignore /opt/hostedtoolctest@example.com (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo e_modules/.bin/node d -n 10 credential.helpe--norc cal/bin/bash /opt/hostedtoolcache/go/1.25.8/xmcp/ast-grep:latest k/gh�� -unreachable=false /tmp/go-build588844726/b206/vet.cfg r: $owner, name: $name) { hasDiscussionsEnabled } } --local commit.gpgsign erignore /opt/hostedtoolcache/go/1.25.8/x-f (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build2628817771/b397/cli.test /tmp/go-build2628817771/b397/cli.test -test.testlogfile=/tmp/go-build2628817771/b397/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true get --local /usr/bin/git ache/go/1.25.8/xconfig -ato�� 7834599/b001/worremote.origin.url -buildtags k/node_modules/.bin/node -errorsas -ifaceassert -nilfunc reCdGvTZO8LdU/iP-f (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 7834599/b001/worremote.origin.url -buildtags k/node_modules/.bin/node -errorsas -ifaceassert -nilfunc reCdGvTZO8LdU/iP-f k/gh�� ry=1 /tmp/go-build588owner=github r: $owner, name:-f --local commit.gpgsign erignore /opt/hostedtoolc-test.v=true (http block)

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

Copilot AI linked an issue Apr 15, 2026 that may be closed by this pull request
@github-actions

This comment has been minimized.

@github-actions
Copy link
Copy Markdown
Contributor

Hey @Copilot 👋 — great to see this WIP draft up for the Daily News node: command not found fix! The failure context from the original run is clearly captured in the description.

A couple of things to address before this is ready for review:

  • Add a description of changes — the PR body is currently just the auto-generated issue boilerplate + "I will get started". Once you've landed on a fix, please update the description to explain what was changed and why.
  • Include tests or validation steps — even a note on how to verify the fix would help reviewers confirm the node resolution issue is actually resolved.
  • No diff yet — the PR currently has 0 files changed. Once the fix is committed, the checklist items above will be easier to evaluate.

If you'd like a hand drafting the fix, here's a ready-to-use prompt:

Investigate the Daily News workflow failure logged in https://github.com/github/gh-aw/actions/runs/24445945467.
The error is: `/bin/bash: line 1: node: command not found`

Steps:
1. Identify where the Daily News workflow invokes `node`.
2. Determine whether `node` needs to be installed as a setup step, or whether the workflow should use a different runner image or action.
3. Implement the fix (e.g. add a `actions/setup-node` step, update the runner label, or adjust the script).
4. Update the PR description with a clear explanation of the root cause and the chosen fix.
5. Confirm that `make build`, `make test`, and `make lint` all pass after the change.

Generated by Contribution Check · ● 1.6M ·

On custom image runners like aw-gpu-runner-T4, actions/setup-node
installs Node.js into the toolcache (e.g., /home/runner/work/_tool/node/...)
rather than a standard system path. AWF's chroot container may not have
access to these toolcache paths, causing `node: command not found` errors
when the Copilot driver script runs inside the sandbox.

Add a new step after actions/setup-node that copies the node binary
to /usr/local/bin/node - a standard system path that is always accessible
inside AWF's chroot container. This follows the same pattern as the
existing GOROOT capture step for Go's AWF chroot compatibility.

The fix only triggers for custom image runners (where node runtime
detection adds actions/setup-node), not for standard GitHub-hosted
runners (ubuntu-*, windows-*) that have node pre-installed at system paths.

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/d0ff596d-7a09-42e9-9bc5-ba25414271b8

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix Daily News workflow failure in main fix: copy node binary to standard system path for AWF sandbox on custom runners Apr 15, 2026
Copilot AI requested a review from pelikhan April 15, 2026 14:06
@pelikhan
Copy link
Copy Markdown
Collaborator

@Mossaka

@pelikhan pelikhan closed this Apr 15, 2026
@github-actions github-actions Bot deleted the copilot/aw-fix-daily-news-failure branch April 23, 2026 02:59
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] Daily News failed

2 participants