Skip to content

fix: show failure in conclusion comment when safe_outputs job fails#30666

Merged
pelikhan merged 2 commits intomainfrom
copilot/fix-issue-with-conclusion-pull-request-comment
May 6, 2026
Merged

fix: show failure in conclusion comment when safe_outputs job fails#30666
pelikhan merged 2 commits intomainfrom
copilot/fix-issue-with-conclusion-pull-request-comment

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 6, 2026

When safe_outputs fails (e.g. 422 during PR review submission), the conclusion job was showing "✅ completed successfully!" because it only checked agent and detection job results — never the safe_outputs job itself.

Changes

  • notify_comment.go: Emit GH_AW_SAFE_OUTPUTS_RESULT: ${{ needs.safe_outputs.result }} into the conclusion step's env when safe_outputs is in the job dependency list.

  • notify_comment_error.cjs: Read GH_AW_SAFE_OUTPUTS_RESULT and treat it as a failure signal. Adds "failed to deliver outputs" as a new status string; gates the success message on safeOutputsResult !== "failure". Applies in both the plain and detection-warning branches.

  • Tests: Three new JS test cases cover agent-success + safe_outputs-failure, the same with a detection warning, and a regression for agent-success + safe_outputs-success. New Go test TestConclusionJobSafeOutputsResult verifies the env var is emitted iff safe_outputs is in the job list.

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 flow (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 test.go t.go x_amd64/vet tion�� rd ce.go x_amd64/vet commit.gpgsign (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 ithub-script/git/ref/tags/v9 --jq bject.type] | @tsv json' --ignore-p/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 --show-toplevel /opt/hostedtoolcache/go/1.25.8/xrepos/{owner}/{repo}/actions/runs/2/artifacts /usr/bin/git sistency_GoAndJagit /opt/hostedtoolcrev-parse ache/node/24.14.--show-toplevel git rev-�� --show-toplevel git /usr/bin/git bility_SameInputgh /opt/hostedtoolcapi 1/x64/bin/node 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 --show-toplevel x_amd64/compile /usr/bin/git '**/*.ts' '**/*.gh x_amd64/vet 1/x64/bin/sh git rev-�� --show-toplevel infocmp /usr/bin/gh .js' --ignore-pagit 64/pkg/tool/linurev-parse kflows/smoke-wor--show-toplevel gh (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 prettier --write 64/pkg/tool/linux_amd64/vet **/*.ts **/*.json --ignore-path 64/pkg/tool/linux_amd64/vet /opt�� 3 .cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/link tierignore /tmp/go-build355-1 repository(ownexterm-color ache/go/1.25.8/x64/pkg/tool/linu^remote\..*\.gh-resolved$ (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv ithub-script/git/ref/tags/v9 /usr/bin/git bject.type] | @tsv -v /usr/libexec/docrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /usr/bin/gh /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/gh git rev-�� /ref/tags/v9 gh sv /repos/actions/ggit --jq /usr/bin/infocmp--show-toplevel gh (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 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv se 2542426/b184/vet.cfg ache/go/1.25.8/x64/pkg/tool/linu-f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv se 2542426/b237/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/download-artifact/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/download-artifact/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv g_.a **/*.cjs $name) { hasDiscussionsEnabled } } **/*.json flow_test ../../../.pretti/home/REDACTED/work/gh-aw/gh-aw/.github/workflows ache/go/1.25.8/xconfig (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/download-artifact/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --write **/*.cjs r: $owner, name: $name) { hasDiscussionsEnabled } } **/*.json --ignore-path ../../../.pretti/home/REDACTED/work/gh-aw/gh-aw/.github/workflows ache/go/1.25.8/xconfig (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 node /usr/bin/git /home/REDACTED/worgh -dwarf=false (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 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv pkg/actionpins/data/action_pins.json; \ cp .github/aw/actions-lock.json pkg/workflow/data/action_pins.json; \ echo "��� Action pins synced successfully"; \ else \ echo "��� (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv json' --ignore-p-c=4 (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9.0.0
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv -bool -buildtags yml -errorsas -ifaceassert -nilfunc git rev-�� k/gh-aw/gh-aw -tests orkflow-analyzer.lock.yml (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw/.github/workflows -buildtags repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -errorsas -ifaceassert -nilfunc git -C h ../../../.pret.prettierignore config r.lock.yml remote.origin.ur/bin/sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv s/data/action_pins.json and pkg/workflow/data/action_pins.json..." (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 --show-toplevel sh /usr/bin/gh 2559-20266/test-git ache/go/1.25.8/xrev-parse e/git gh api /repos/actions/github-script/git/ref/tags/v9 --jq /usr/bin/git g/stats/statvar.git g/stats/spec_tesrev-parse /opt/hostedtoolc--show-toplevel 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, .object.type] | @tsv test/concurrent-image:v1.0.0 gh /opt/hostedtoolcache/node/24.14.1/x64/bin/node ./../pkg/workflogit --jq x_amd64/vet /opt/hostedtoolcache/node/24.14.1/x64/bin/node /tmp�� github.event.inputs.enforce_all == 'true' resolved$ /opt/hostedtoolcache/node/24.14.1/x64/bin/node ithub/workflows x_amd64/vet /usr/bin/git /opt/hostedtoolcache/node/24.14.1/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel sh /usr/bin/git runs/20260506-17gh ache/go/1.25.8/xapi e/git-receive-pa/repos/actions/github-script/git/ref/tags/v9 git rev-�� --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git ithub-script/gitgit remote bject.type] | @t--show-toplevel git rev-�� /ref/tags/v9 node sv git git /usr/bin/infocmpxterm-color gh (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 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv ithub/workflows 2542426/b189/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv xterm-color -tests t ithub/workflows (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 2559-20266/test-734308280 git /usr/bin/git ithub/workflows config ode_modules/.bin--show-toplevel git -C /tmp/shared-actions-test1920663669 rev-parse /usr/bin/git b/workflows config x_amd64/compile git (http block)
  • https://api.github.com/repos/aws-actions/configure-aws-credentials/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/node/24.14.1/x64/bin/node /usr/bin/git ts.result remote ps git rev-�� --show-toplevel ps /usr/bin/git git -test.v=true ipts.test git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel 0894162/b465/importcfg /usr/bin/git k/gh-aw/gh-aw/pkgh -dwarf=false /opt/hostedtoolc/repos/actions/github-script/git/ref/tags/v9 git rev-�� /ref/tags/v9 node sv /tmp/TestHashCongit /tmp/go-build215rev-parse om/org1/repo1.gi--show-toplevel infocmp (http block)
  • https://api.github.com/repos/azure/login/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/azure/login/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/node/24.14.1/x64/bin/node /usr/bin/git uts.branch rev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /tmp/gh-aw-test-infocmp remote om/owner/repo.gixterm-color git (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel /usr/bin/gh /usr/bin/git git rev-�� --show-toplevel git /usr/bin/infocmp /tmp/gh-aw-test-infocmp config /opt/hostedtoolcxterm-color infocmp (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --tags .cfg r: $owner, name:-f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv res_import_test.go t_schema_test.go 64/pkg/tool/linux_amd64/vet --format=%H:%ct (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv actions/setup-cli/install.sh .cfg 64/pkg/tool/linux_amd64/vet INVALID,NEW -j DROP 64/pkg/tool/linux_amd64/vet /hom�� --write **/*.cjs ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet **/*.json --ignore-path ../../../.pretti/home/REDACTED/work/gh-aw/gh-aw ache/go/1.25.8/xshow (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv log.showsignature=false .cfg 64/pkg/tool/linux_amd64/link -n1 --format=format:api --end-of-options/repos/actions/github-script/git/ref/tags/v9 64/pkg/tool/linu--jq /hom�� --write **/*.cjs ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet **/*.json --ignore-path ../../../.prettixterm-color ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch ithub/workflows ache/go/1.25.8/x64/src/testing/iowner=github k.yml (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 /repos/actions/github-script/git/ref/tags/v9 --jq /usr/bin/git runs/20260506-17git ache/go/1.25.8/xrev-parse kflows/local-wor--show-toplevel git rev-�� --show-toplevel sh /usr/bin/git /ref/tags/v9 /opt/hostedtoolc-1 sv 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 /v1.0.0 (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 x_amd64/vet oD8vbM8RqoN1 /usr/bin/git k/gh-aw/gh-aw rev-parse porary-id.lock.y--show-toplevel git conf�� --get remote.origin.url (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-29 owner=github -f gh api .js' --ignore-path .prettierignore --log-level=error --jq tions/setup/node_modules/.bin/node te '**/*.cjs' '*git .cfg 64/pkg/tool/linutest.txt echo "��� Action pins synced successfully"; \ el-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 --limit 100 --created >=2026-04-06 owner=github -f /usr/bin/gh api .js' --ignore-pa-c=4 -f ode -f owner=github -f ylQP4Z8/vCNYLdc7D8RXanEmFBss (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-02-05 core.hooksPath $name) { hasuser.email git 8d51�� k/gh-aw/gh-aw/.github/workflows show 64/bin/go te '**/*.cjs' '*git .cfg DiscussionsEnabltest.txt infocmp (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 64/pkg/tool/linughcr.io/github/s-w bject.type] | @tsv echo "��� Actiongit .cfg 64/pkg/tool/linu--show-toplevel infocmp -1 1426/001/stability-test.md 64/pkg/tool/linu--jq .cfg --write **/*.cjs r: $owner, name:user.email docker (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 show ache/node/24.14.1/x64/bin/node nore .cfg ache/go/1.25.8/x64/pkg/tool/linu-v infocmp ache�� 2559-20266/test-source-field-variant-3337244189/.github/workflows ache/go/1.25.8/xshow x_amd64/vet 2542426/b126/_pkgit security yzer.lock.yml x_amd64/vet (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 64/pkg/tool/linurev-parse son ignore .cfg 64/pkg/tool/linugithub.event.inputs.enforce_all || 'round-robin' git -C rite '**/*.cjs' '**/*.ts' '**/*.json' --ignore-p-c=4 rev-parse nfig/composer/vendor/bin/sh "prettier" --wrigit rror.test.cjs DiscussionsEnabl--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 64/pkg/tool/linushow ache/node/24.14.1/x64/bin/sh ignore .cfg repository(ownegithub.actor && secrets.TOKEN infocmp -1 e_all)' 64/pkg/tool/linuconfig sv **/*.cjs rror.test.cjs $name) { has--get infocmp (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1234567890
    • Triggering command: /usr/bin/gh gh api repos/{owner}/{repo}/actions/runs/1234567890 --jq {databaseId: .id, number: .run_number, url: .html_url, status: .status, conclusion: .conclusion, workflowName: .name, workflowPath: .path, createdAt: .created_at, startedAt: .run_started_at, updatedAt: .updated_at, event: .event, headBranch: .head_branch, 57103879/001' 57103879/001' repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } json' --ignore-p/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (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 rev-parse son ignore .cfg 64/pkg/tool/linuxterm-color git -C rite '**/*.cjs' '**/*.ts' '**/*.json' --ignore-pgo1.25.8 config p/bin/sh remote.origin.urgit rror.test.cjs ache/go/1.25.8/x64/pkg/tool/linuuser.email git (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 -f son ignore owner=github th: .path, creat--get-regexp /usr/bin/gh api 2559-20266/test-source-field-variant-4207897617 -f ck -f owner=github -f gh (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 config tnet/tools/sh ignore .cfg DiscussionsEnabluser.name /usr/bin/gh api 1426/001/stability-test.md -f k -f owner=github DiscussionsEnabled } } git (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 -f k/gh-aw/gh-aw/actions/setup/js/n-test.short=true nore owner=github -f /usr/bin/gh api 1426/001/stability-test.md -f .cfg -f owner=github -f 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 sh actions/setup-clgit .cfg 64/pkg/tool/linuuser.email infocmp -1 rite '**/*.cjs' '**/*.ts' '**/*.go1.25.8 64/pkg/tool/linu-f ache/uv/0.11.10/x86_64/node --write **/*.cjs ache/go/1.25.8/xadd git (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 config ache/go/1.25.8/x64/bin/node nore -trimpath r: $owner, name:--show-toplevel /usr/bin/gh ache�� (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 --jq x_amd64/compile actions/setup-clgit setup/js/node_morev-parse 64/pkg/tool/linu--git-dir x_amd64/compile api dfWiE9R6S --jq cal/bin/node --write **/*.cjs ache/go/1.25.8/xuser.name ortcfg (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 64/pkg/tool/linux_amd64/vet k/gh-aw/gh-aw/actions/setup/js/n-lang=go1.25 nore .cfg /usr/sbin/iptabluser.email infocmp -1 2559-20266/test-source-field-var-c=4 iptables .cfg -t security ache/go/1.25.8/x--show-toplevel /usr/bin/gh (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 .cfg x_amd64/compile --tags .cfg r: $owner, name:--show-toplevel x_amd64/compile -C /ref/tags/v9 rev-parse k --write .cfg r.lock.yml /usr/bin/gh (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 rev-parse 64/pkg/tool/linux_amd64/link nore om/davecgh/go-sprev-parse ache/go/1.25.8/x--show-toplevel 64/pkg/tool/linux_amd64/link -C 1426/001/stability-test.md rev-parse ortcfg.link ata/action_pins.git security .cfg Q9JjIZREDlYiHWP_71/KDaUrle63TPPPS1tZJmA/SqW9rykMremote (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 rev-parse /usr/bin/git json' --ignore-p/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 --get x_amd64/vet infocmp -1 Gitbranch_with_hyphen3077344379/001' Gitbranch_with_hyphen3077344379/001' x_amd64/vet rd --local x_amd64/vet x_amd64/vet (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 .cfg 64/pkg/tool/linuadd ache/go/1.25.8/xremote2 -C 94/001/test-inlined-imports-enabled-with-env-template-expressions-in-body.md ckout_manager_test.go m/_npx/b388654678d519d9/node_modules/.bin/sh ckout_persist_crgit ckout_runtime_orrev-parse ckout_step_gener--show-toplevel _require_validation_test.go (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build2150894162/b404/cli.test /tmp/go-build2150894162/b404/cli.test -test.testlogfile=/tmp/go-build2150894162/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -errorsas -ifaceassert -nilfunc git -c ath ../../../.pr**/*.json log (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 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu--name-only /usr/bin/git s/test.md -importcfg /usr/bin/git git rev-�� --show-toplevel git /usr/bin/infocmp --show-toplevel -extld=gcc /usr/bin/git infocmp (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 xterm-color ache/go/1.25.8/x64/pkg/tool/linu-nolocalimports g_.a /ref/tags/v9 --write r git -C 2559-20266/test-2786171199/.github/workflows config /opt/hostedtoolcache/go/1.25.8/x64/bin/gofmt remote.origin.urinfocmp 2542426/b202/vet-1 ache/go/1.25.8/xxterm-color /opt/hostedtoolcache/go/1.25.8/xremote1 (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 301604824/.github/workflows show ode_modules/.bin/node get --local x_amd64/vet git -C /ref/tags/v9 config x_amd64/vet l --local x_amd64/vet x_amd64/vet (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 301604824 x_amd64/vet es/.bin/node l --local x_amd64/vet HjoE8hqd2SJr api b/workflows -f x_amd64/compile -f owner=github ed } } x_amd64/compile (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 on' --ignore-path ../../../.prettierignore --jq ti-pr.lock.yml get --local x_amd64/vet gh api b/workflows --jq x_amd64/compile celain --ignore-git --local $name) { has--show-toplevel x_amd64/compile (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 graphql erena-mcp-server:latest _modules/.bin/sh -f owner=github -f /usr/bin/gh api b/workflows -f x_amd64/link l owner=github -f x_amd64/link (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 on' --ignore-pat--detach config ini.lock.yml remote.origin.ur/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile --local $name) { has/tmp/go-build2150894162/b442/_pkg_.a gh api k/gh-aw/gh-aw --jq x_amd64/vet celain --ignore-git --local r: $owner, name:/tmp/gh-aw-test-runs/20260506-172559-20266/test-3513194423 re1ScTm/2XoKMWP1remote (http block)
  • https://api.github.com/repos/google-github-actions/auth/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/google-github-actions/auth/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv --show-toplevel node /usr/bin/git /tmp/TestHashCongit (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 4129799027/001 sRemoteWithRealGitmaster_branch1180597512/002/work sh ude_logs.go ude_mcp.go ude_tools.go se_entity_helpers.go ex_e�� te '../../../**/*.json' '!../../../pkg/workflow/js/**/*.json' ---test.timeout=10m0s ex_logs.go /opt/hostedtoolcache/go/1.25.8/x64/bin/gofmt ithub/workflows 2542426/b201/vet-1 repository(ownexterm-color /opt/hostedtoolcache/go/1.25.8/xremote.origin.url (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 npx prettier --wgit (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 modules/@npmcli/run-script/lib/node-gyp-bin/sh json' --ignore-p/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state k/gh-aw/gh-aw/node_modules/.bin/-lang=go1.25 --write **/*.cjs r: $owner, name:--show-toplevel erignore -1 ons/secrets ache/go/1.25.8/xconfig ache/go/1.25.8/x64/pkg/tool/linu-importcfg ithub/workflows 2542426/b140/vetrun repository(ownedownload ache/go/1.25.8/x3 (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 /home/REDACTED/work/gh-aw/gh-aw/.github/workflows :latest (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 164710519/custom/workflows ache/go/1.25.8/x64/pkg/tool/linu-ifaceassert .yml se 2542426/b010/vetinit erignore git -C te '../../../**/*.json' '!../../../pkg/workflow/js/**/*.json' ---errorsas rev-parse 1/x64/bin/node se 2542426/b169/vetremote-https repository(owneREDACTED ache/go/1.25.8/xREDACTED (http block)

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

When the safe_outputs job fails (e.g., 422 error during PR review
submission), the conclusion comment now correctly shows a failure
message instead of "completed successfully!".

Changes:
- Pass GH_AW_SAFE_OUTPUTS_RESULT env var to the conclusion step
  when safe_outputs is in the job dependency list
- Update notify_comment_error.cjs to check safe_outputs result and
  show "failed to deliver outputs" status when it fails
- Add tests for the new behavior in both JS and Go

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/52f51de5-07d3-4366-ac69-fbccb2f3d298

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix conclusion comment showing success when safe_outputs fails fix: show failure in conclusion comment when safe_outputs job fails May 6, 2026
Copilot AI requested a review from pelikhan May 6, 2026 17:35
@pelikhan pelikhan marked this pull request as ready for review May 6, 2026 19:38
Copilot AI review requested due to automatic review settings May 6, 2026 19:38
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

Fixes the conclusion/status comment logic so the workflow reports a failure when the safe_outputs job fails, instead of incorrectly reporting success based only on the agent/detection outcomes.

Changes:

  • Emit GH_AW_SAFE_OUTPUTS_RESULT into the conclusion step env when safe_outputs is a dependency.
  • Update notify_comment_error.cjs to treat safe_outputs job failure as a run failure (“failed to deliver outputs”) and gate success messaging accordingly (including the detection-warning branch).
  • Add Go and JS tests covering safe-outputs-failure scenarios and a success regression case; propagate the env var into generated locked workflows.
Show a summary per file
File Description
pkg/workflow/notify_comment.go Adds conditional emission of GH_AW_SAFE_OUTPUTS_RESULT into the conclusion step env when safe_outputs is in the dependency list.
pkg/workflow/notify_comment_test.go Adds a Go unit test verifying the env var is emitted iff safe_outputs is present in the safe output job list.
actions/setup/js/notify_comment_error.cjs Uses GH_AW_SAFE_OUTPUTS_RESULT to treat safe outputs delivery failure as a run failure and prevent false “completed successfully” messages.
actions/setup/js/notify_comment_error.test.cjs Adds JS tests for agent-success + safe_outputs-failure (with/without detection warning) and a success regression case; updates env reset to include the new variable.
docs/public/ai/service.json Reformats the integrations array (JSON formatting change only).
.github/workflows/unbloat-docs.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/tidy.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-update-cross-repo-pr.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-test-tools.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-temporary-id.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-service-ports.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-project.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-pi.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-opencode.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-multi-pr.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-gemini.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-crush.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-create-cross-repo-pr.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-copilot.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-copilot-arm.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-codex.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-claude.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-agent-scoped-approved.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-agent-public-none.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-agent-public-approved.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-agent-all-none.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/smoke-agent-all-merged.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/security-review.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/scout.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/q.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/pr-nitpick-reviewer.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/poem-bot.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/plan.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/pdf-summary.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/mergefest.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/grumpy-reviewer.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/dev.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/craft.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/cloclo.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/ci-doctor.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/brave.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/archie.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.
.github/workflows/ace-editor.lock.yml Propagates GH_AW_SAFE_OUTPUTS_RESULT into the locked workflow’s conclusion env.

Copilot's findings

Tip

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

  • Files reviewed: 43/43 changed files
  • Comments generated: 0

@pelikhan pelikhan merged commit c0011d7 into main May 6, 2026
4 checks passed
@pelikhan pelikhan deleted the copilot/fix-issue-with-conclusion-pull-request-comment branch May 6, 2026 20:01
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.

Conclusion comment shows success when safe_outputs fails to submit PR review

3 participants