Skip to content

Allow discussion: false on add-comment to opt out of discussions:write permission#25482

Closed
Copilot wants to merge 3 commits intomainfrom
copilot/fix-invalid-discussions-permission-again
Closed

Allow discussion: false on add-comment to opt out of discussions:write permission#25482
Copilot wants to merge 3 commits intomainfrom
copilot/fix-invalid-discussions-permission-again

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 9, 2026

The compiler unconditionally rejected discussion: false on add-comment with "value must be true", leaving no way to opt out of discussions:write permission — which causes 422 errors when the GitHub App installation lacks the Discussions permission scope.

Changes

  • Schema: Removed const: true from the discussion field in add-comment, allowing false as a valid value
  • Validation: Removed the Go-level check that rejected discussion: false in parseCommentsConfig
  • Permissions: buildAddCommentPermissions now treats discussion: false (singular, deprecated) identically to discussions: false — both exclude discussions:write
  • Codemod: add-comment-discussion-removal codemod now only removes discussion: true (the deprecated auto-detected form); discussion: false is preserved since it carries opt-out semantics

Usage

safe-outputs:
  add-comment:
    discussion: false   # now valid — excludes discussions:write permission

The preferred long-term form remains discussions: false (plural), which already worked. Both are now equivalent.

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 GO111MODULE /home/REDACTED/.ca--show-toplevel git rev-�� --show-toplevel bash /usr/bin/gh runs/20260409-13git GOPROXY /bin/sh gh (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 git /usr/bin/git git rev-�� --show-toplevel resolved$ /usr/bin/git --show-toplevel git /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 -c=4 -nolocalimports -importcfg /tmp/go-build2757964266/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 -c npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go prettier (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name --show-toplevel git /usr/bin/git user.name Test User ps git |g --show-toplevel ps /home/REDACTED/.local/bin/node t Test User /usr/bin/git ue && echo "chain-continued" (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel go /usr/bin/docker 85/001/test-frongit GO111MODULE ache/go/1.25.8/x--show-toplevel docker (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha user.email test@example.com /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha GOMODCACHE 37636/b418/imporGOPROXY om/myorg/repo.git k/gh-aw/gh-aw/pkgit k/gh-aw/gh-aw/pkrev-parse 64/bin/go git remo�� 64/bin/go /opt/hostedtoolc--auto /usr/bin/git /tmp/go-build689git -trimpath 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha licyMinIntegrityOnlymin-integrity_with_repos_array_c3130782512/001 git-upload-pack '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmaster_branch93660050/001' /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --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 -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 4393/001/stability-test.md sRemoteWithRealGitbranch_with_hyphen2901790975/002/work ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/infocmp -json GO111MODULE ache/go/1.25.8/x-maxdepth infocmp -1 xterm-color iptables /usr/bin/git 130890620/.githugit security /opt/hostedtoolc--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 --show-toplevel 37636/b402/imporrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git y_with_explicit_git GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --get remote.origin.url /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git plorer.md GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha tags/v6 _c5WKOia6VGY3/-IOpUI6xgANH-v6KNFAo/mFDodc1UylrbuieAM-Lz/1rKZ6KO_--auto /usr/bin/git ry=1 config 7964266/b440/_pk--show-toplevel git rev-�� --show-toplevel git /usr/bin/git --get remote.origin.urrev-parse /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go node /hom�� --check scripts/**/*.js 64/bin/go .prettierignore -pack 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha 01 --check 64/bin/go **/*.ts **/*.json --ignore-path git stat�� --porcelain node 64/bin/go --write scripts/**/*.js 64/bin/go go (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --show-toplevel go /usr/bin/git mLsRemoteWithReagit mLsRemoteWithRearev-parse 64/bin/go git rev-�� --show-toplevel go /usr/bin/git y_with_repos=pubgit GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel infocmp /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel resolved$ /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha -v git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha git-upload-pack '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmaster_branch1364390176/001' l /usr/bin/git 37636/b395/_pkg_git GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git HvXa/RcxYZ95eSDFgit GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ache/node/24.14.rev-parse /usr/bin/git git (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 user.email test@example.com /opt/hostedtoolcache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go /opt/hostedtoolcache/node/24.14.1/x64/bin/node /tmp�� secrets.TOKEN qb/UKCb3IoroNOI9origin /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq .object.sha --show-toplevel git /usr/bin/git HEAD git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /usr/bin/git /usr/bin/git 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 7964266/b444/timeutil.test --auto ache/node/24.14.1/x64/bin/node --detach -c=4 -nolocalimports W0VPsKVyXPZlC/uItd0r7K0_37SYBDlarepos/{owner}/{repo}/actions/runs/4/artifacts t-28�� k/gh-aw/gh-aw/.github/workflows/.artifacts[].name /tmp/go-build2757964266/b070/_testmain.go 7964266/b444/_pkg_.a -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git rev-�� --show-toplevel git /usr/lib/git-core/git etup-node/git/regit git /usr/bin/git /usr/lib/git-core/git (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 . -tests /usr/bin/git -json GO111MODULE 64/bin/go git -C /tmp/TestGuardPolicyMinIntegrity.artifacts[].name config /usr/bin/git remote.origin.urgit GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /bin/sh --show-toplevel /opt/hostedtoolcconfig /usr/bin/git /bin/sh (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet env -json GO111MODULE e/git-upload-pack GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link estl�� ceutil.test GO111MODULE 1/x64/bin/node m0s GOMOD (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name git /usr/bin/git --show-toplevel git /usr/bin/git git -C k/gh-aw/gh-aw/.github/workflows remote /usr/bin/git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 3575698488 GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 5133-30567/test-512356767/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name git-upload-pack '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen1362970938/rev-parse /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� runs/20260409-135336-36635/test-54164908/.github/workflows git /usr/bin/git l git /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 5133-30567/test-1370536007 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE At,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE go env 5133-30567/test-512356767/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name origin /usr/bin/git l git /usr/bin/git git rev-�� runs/20260409-135336-36635/test-54164908/.github/workflows git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuTest User env ithub/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE 7964266/b409/envutil.test GOINSECURE GOMOD GOMODCACHE 7964266/b409/envutil.test e=/t�� t0 GO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� 410378317/001 git /usr/bin/git ature-branch.patgit git /usr/bin/git 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 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linutest@example.com env ithub/workflows GO111MODULE 7964266/b385=> GOINSECURE b/gh-aw/pkg/agenrev-parse GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE ortcfg.link GOINSECURE GOMOD GOMODCACHE gawwLAZgFC9WRvEPyD/h9neZu1_uB1iv8Yv17kB/7B3Otl1utest@example.com env -json GO111MODULE g_.a GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� 410378317/001 git /usr/bin/git ature-branch.pat/usr/bin/git git /usr/bin/git git (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 stmain.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet env -json GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 security /opt/hostedtoolcache/go/1.25.8/x64/bin/go OUTPUT -d 168.63.129.16 go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name git /usr/bin/git --show-toplevel gh /usr/bin/git git rev-�� k/gh-aw/gh-aw/.github/workflows git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GO111MODULE At,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile env 7964266/b070/_pkg_.a GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile env 7964266/b411/_pkg_.a GO111MODULE 7964266/b411=> GOINSECURE b/gh-aw/pkg/fileremote GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name l /usr/bin/infocmp --show-toplevel git /usr/bin/git infocmp -1 k/gh-aw/gh-aw/.github/workflows git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh -c npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go 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 --workflow nonexistent-workflow-12345 --limit 100 --write 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE go env agent-performance-analyzer.md GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha --show-toplevel go /usr/bin/git st-862468567/.gigit GO111MODULE 1/x64/bin/node git rev-�� --show-toplevel go /usr/bin/git vaScript42313955git GO111MODULE 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha /tmp/gh-aw-test-runs/20260409-135336-36635/test-3887223901 status clusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle .github/workflowgit 90 eb2be6ca560f0d3f--show-toplevel git rev-�� --show-toplevel git /usr/bin/git 408283645/.githugit git ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha /workflows GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha --show-toplevel nly /usr/bin/git test.txt s/12345/artifactrev-parse /usr/bin/git git rev-�� --show-toplevel git e/git --show-toplevel go /usr/bin/git e/git (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 GOPATH node 64/bin/go -d scripts/**/*.js 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel go /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel go /usr/bin/git git (http block)
  • https://api.github.com/repos/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 -e -f 64/bin/go -d unsafe 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha --ignore-path node 64/bin/go -d format:pkg-json 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha /tmp/go-build689GOSUMDB -trimpath 64/bin/go -p github.com/githurev-parse -lang=go1.25 go env Gitmaster_branch1364390176/001' Gitmaster_branch1364390176/001' 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha extensions.objec-p node 64/bin/go -d scripts/**/*.js 64/bin/go go env 364390176/001 364390176/002/work 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha --show-toplevel gh /usr/bin/git --paginate repos/{owner}/{rrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ache/go/1.25.8/xrev-parse (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go eWit�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha --show-toplevel nly /usr/bin/git -m Initial commit /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel go /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE go env faultBranchFromLsRemoteWithRealGitcustom_branch4042050181/001 faultBranchFromLsRemoteWithRealGitcustom_branch4042050181/002/work 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion install --package-lock-o-1 /usr/bin/git infocmp -1 xterm-color git /usr/bin/git lGitmaster_brancgit lGitmaster_brancrev-parse /usr/bin/git 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 -nolocalimports -importcfg /tmp/go-build2757964266/b415/importcfg -pack /tmp/go-build2757964266/b415/_testmain.go -c npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE sh -c npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo e/git-upload-pack --git-dir x_amd64/compile /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel go /usr/bin/git git (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build2757964266/b397/cli.test /tmp/go-build2757964266/b397/cli.test -test.testlogfile=/tmp/go-build2757964266/b397/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /tmp/go-build1804772793/b370/cli.test /tmp/go-build1804772793/b370/cli.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git -unreachable=falgit /tmp/go-build275rev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --get remote.origin.urrev-parse /usr/bin/git git (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh -c npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name --show-toplevel git e/git --show-toplevel go /usr/bin/git e/git rev-�� --show-toplevel git /opt/hostedtoolcache/go/1.25.8/x64/bin/node user.email test@example.com-1 /usr/bin/git node (http 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 9, 2026 13:56
…write permission

- Remove `const: true` from JSON schema for `discussion` field in add-comment, allowing both `true` and `false` values
- Remove Go validation that rejected `discussion: false` in parseCommentsConfig
- Update buildAddCommentPermissions to treat `discussion: false` (singular, deprecated) as equivalent to `discussions: false` — excluding discussions:write permission
- Update codemod to preserve `discussion: false` (only removes `discussion: true` which is deprecated/auto-detected)
- Add tests for `discussion: false` in permissions tests and codemod tests

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ca23edde-059f-4a6b-bb13-a0d8c44e71f0

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
… code review

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ca23edde-059f-4a6b-bb13-a0d8c44e71f0

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix invalid discussions permission in safe-output jobs Allow discussion: false on add-comment to opt out of discussions:write permission Apr 9, 2026
Copilot AI requested a review from pelikhan April 9, 2026 14:00
@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 9, 2026

@copilot mark singular form as deprecated. Add codemod discussion -> discussions

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 9, 2026

@copilot add integration tests for combination of plurality and true/false values

@pelikhan pelikhan marked this pull request as ready for review April 9, 2026 14:08
Copilot AI review requested due to automatic review settings April 9, 2026 14:08
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

Enables safe-outputs.add-comment.discussion: false (singular, deprecated) as a supported opt-out mechanism to avoid requesting discussions:write, preventing 422s when the GitHub App installation lacks Discussions permissions.

Changes:

  • Relaxed workflow schema to allow add-comment.discussion to be false (previously constrained to true).
  • Updated permission computation to treat discussion: false the same as discussions: false (exclude discussions:write).
  • Adjusted codemod behavior/tests to only remove discussion: true, preserving discussion: false since it has opt-out semantics.
Show a summary per file
File Description
pkg/workflow/add_comment.go Removes the prior rejection of discussion:false and updates permission logic to honor it as an opt-out.
pkg/parser/schemas/main_workflow_schema.json Updates the JSON schema to allow boolean discussion and clarifies deprecation semantics.
pkg/workflow/safe_outputs_permissions_test.go Adds regression coverage ensuring discussion:false does not request discussions:write.
pkg/cli/codemod_discussion_flag.go Codemod now removes only discussion:true, preserving discussion:false.
pkg/cli/codemod_discussion_flag_test.go Adds a test asserting discussion:false is preserved by the codemod.

Copilot's findings

Tip

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

Comments suppressed due to low confidence (1)

pkg/workflow/add_comment.go:77

  • The function doc comment says "Discussions: nil or true → discussions:write", but with the new behavior discussion: false (singular) also suppresses discussions:write even when discussions is nil/true. Please update the doc comment to reflect that discussions:write is included only when both discussions and deprecated discussion are not explicitly false.
// buildAddCommentPermissions computes the permissions for the add_comment job based on config.
// Issues: nil or true → issues:write (default: true)
// PullRequests: nil or true → pull-requests:write (default: true)
// Discussions: nil or true → discussions:write (default: true)
// Discussion (singular, deprecated): when false, acts as discussions: false (excludes discussions:write)
  • Files reviewed: 5/5 changed files
  • Comments generated: 2

Comment on lines 17 to 21
Target string `yaml:"target,omitempty"` // Target for comments: "triggering" (default), "*" (any issue), or explicit issue number
TargetRepoSlug string `yaml:"target-repo,omitempty"` // Target repository in format "owner/repo" for cross-repository comments
AllowedRepos []string `yaml:"allowed-repos,omitempty"` // List of additional repositories that comments can be added to (additionally to the target-repo)
Discussion *bool `yaml:"discussion,omitempty"` // Target discussion comments instead of issue/PR comments. Must be true if present.
Discussion *bool `yaml:"discussion,omitempty"` // DEPRECATED: Use Discussions instead. When false, excludes discussions:write permission (same as Discussions: false).
HideOlderComments *string `yaml:"hide-older-comments,omitempty"` // When true, minimizes/hides all previous comments from the same workflow before creating the new comment
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

The field comment references the Go struct field name ("Discussions") rather than the YAML key ("discussions"). To avoid confusing config authors, consider wording this in terms of the YAML key (and optionally clarify what happens when discussion is true vs false).

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

Copilot uses AI. Check for mistakes.
"type": "boolean",
"const": true,
"description": "DEPRECATED: This field is deprecated and will be removed in a future version. The add_comment handler now automatically detects whether to target discussions based on context (discussion/discussion_comment events) or the item_number field provided by the agent. Remove this field from your workflow configuration.",
"description": "DEPRECATED: Use 'discussions' instead. When false, excludes discussions:write permission (same as discussions: false). When true, has no effect beyond backward compatibility. The add_comment handler now automatically detects discussion context.",
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

The schema description states that discussion: true "has no effect beyond backward compatibility", but the compiler still uses add-comment.discussion: true elsewhere (e.g., feature validation) so it can change compile-time behavior/messages. Consider rephrasing to specify it has no effect on runtime targeting behavior while still being recognized by tooling/validation.

Suggested change
"description": "DEPRECATED: Use 'discussions' instead. When false, excludes discussions:write permission (same as discussions: false). When true, has no effect beyond backward compatibility. The add_comment handler now automatically detects discussion context.",
"description": "DEPRECATED: Use 'discussions' instead. When false, excludes discussions:write permission (same as discussions: false). When true, it does not affect runtime targeting behavior, but is still recognized for backward compatibility and tooling/validation. The add_comment handler now automatically detects discussion context.",

Copilot uses AI. Check for mistakes.
@pelikhan pelikhan closed this Apr 9, 2026
Copilot stopped work on behalf of pelikhan due to an error April 9, 2026 15:05
@github-actions github-actions Bot deleted the copilot/fix-invalid-discussions-permission-again branch April 17, 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.

Compiler unconditionally adds invalid discussions: write permission to safe-output jobs

3 participants