Skip to content

fix(copilot-driver): fall back to fresh run when --continue auth fails mid-stream#29259

Open
Copilot wants to merge 3 commits intomainfrom
copilot/fix-copilot-driver-no-auth-error
Open

fix(copilot-driver): fall back to fresh run when --continue auth fails mid-stream#29259
Copilot wants to merge 3 commits intomainfrom
copilot/fix-copilot-driver-no-auth-error

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 30, 2026

When Copilot CLI exits mid-stream due to server errors, the on-disk session credential written by the interrupted run can be incomplete/invalid. The subsequent --continue retry then fails with "No authentication information found" even though env-var tokens are unchanged — and the driver previously treated all auth errors as non-retryable, killing the job with no recovery path.

Changes

  • copilot_harness.cjs: When isAuthErr fires on a --continue attempt (useContinueOnRetry=true), reset useContinueOnRetry=false and continue the loop instead of breaking. This spawns a fresh run that re-does env-var auth from scratch. If the fresh run also reports auth failure, the driver bails as before.

  • copilot_harness.test.cjs: Updated the "auth error prevents retry" suite — shouldRetry now accepts useContinueOnRetry, the --continue auth-failure test case now expects a fresh-run retry, and a new case validates that a subsequent fresh-run auth failure still halts retries.

attempt 1: partial execution — will retry with --continue (attempt 2/4)
attempt 2 failed: isAuthError=true ...
attempt 2: auth error on --continue — retrying as fresh run (session credential may be corrupted; context will be lost)
attempt 3: spawning: copilot ...  ← fresh env-var auth, no --continue

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 gh repo view --json owner,name --jq .owner.login + "/" + .name ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuorigin (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo 2931�� 149315793/.github/workflows 3125174/b020/vet.cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo 2931�� 149315793 3125174/b024/vet.cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-buildtags -p t1229820973 -trimpath .yml -I /tmp/go-build314-1 -I ache/go/1.25.8/x64/pkg/tool/linurev-parse (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-build2293125174/b430/importcfg -embedcfg /tmp/go-build2293125174/b430/embedcfg -pack env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go /pre�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv /tmp/TestPushWorkflowFiles_WithStagedFiles3414972357/001/workflow.md 64/pkg/tool/linux_amd64/vet /usr/bin/git m_exec.js from: git GO111MODULE ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/x64/pkg/tool/linu-buildtags /usr/bin/git se 3125174/b143/vet/opt/hostedtoolcache/node/24.14.1/x64/bin/npm .cfg git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv (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 4026-39828/test-3169260749 x_amd64/vet /usr/bin/git .version=44154bcgit fer.go x_amd64/vet git -C /tmp/shared-actions-test2611293903 config /usr/bin/git remote.origin.urgit Gitmaster_branchrev-parse x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv GOMODCACHE go /usr/bin/git re GO111MODULE 64/bin/go git rev-�� runs/20260430-054423-65826/test-272159897 go /usr/bin/infocmp s/test.md GO111MODULE 64/bin/go infocmp (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 se 3125174/b241/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p golang.org/x/sys-1 -lang=go1.25 ache/go/1.25.8/x64/pkg/tool/linutest@example.com -uns�� 4026-39828/test-2118561129 /tmp/go-build2293125174/b006/vet.cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet go1.25.8 -c=4 -nolocalimports /opt/hostedtoolcache/go/1.25.8/xorigin (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linu-dwarf=false /usr/bin/git 01/test1.md 3125174/b253/vet\n ache/go/1.25.8/x: git rev-�� --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git /ref/tags/v9 stmain.go ts.test 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 3Rik9SPHCtMYQ/vfWSXRyBZ2GEm4H7IUTM/LO7H8yrdtF7Rv-buildtags /usr/bin/git ry=1 remote 3125174/b447/_pk--show-toplevel git rev-�� --show-toplevel git /usr/bin/git s/test.md remote ache/node/24.14.--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -bool -buildtags 3125174/b422/vet.cfg =receive -ifaceassert -nilfunc (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -bool -buildtags x_amd64/vet -errorsas -ifaceassert -nilfunc x_amd64/vet rev-�� --show-toplevel -tests 1/x64/bin/node -json GO111MODULE x_amd64/compile 1/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv 3125174/b456/_pkg_.a -q epo.git -json o x_amd64/compile git rev-�� runs/20260430-054026-39828/test-1485616969 x_amd64/compile /opt/hostedtoolcache/node/24.14.1/x64/bin/node s/test.md GO111MODULE x_amd64/vet node (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 /opt/hostedtoolcache/go/1.25.8/xTest User /usr/bin/infocmp ithub/workflows /tmp/go-build229status 3125174/b335/vet.cfg infocmp -1 xterm-color /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git -bool -buildtags /opt/hostedtoolc--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git scripts synced git GO111MODULE ache/node/24.14.1/x64/bin/node git rev-�� --show-toplevel go /usr/bin/git sistency_GoAndJagit GO111MODULE ache/node/24.14.--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, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json exer.go x_amd64/compile hub/aw/actions-l/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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 64/pkg/tool/linux_amd64/vet /usr/bin/git LsRemoteWithRealgit LsRemoteWithRealrev-parse 64/pkg/tool/linu--show-toplevel /usr/bin/git remo�� -v 64/pkg/tool/linuremote.origin.url /usr/bin/git 454863/b218/_pkggit go x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv remove origin /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git init�� GOMODCACHE go /usr/bin/git */*.ts' '**/*.jsgit GO111MODULE ache/go/1.25.8/x--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 /tmp/compile-instructions-test-3205555578/.github/workflows s/12346/artifacts /usr/bin/git -json GO111MODULE x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/docker -json @v1.1.3/cpu/cpuirev-parse x_amd64/vet docker (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv f/tags/v6 64/pkg/tool/linux_amd64/vet sv rtcfg GO111MODULE 64/pkg/tool/linu--show-toplevel /usr/bin/git remo�� -v 64/pkg/tool/linux_amd64/vet /usr/bin/git ithout_min-integgit Ldjv/q8rDzC5dO2Krev-parse .cfg git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv GOMODCACHE l /usr/bin/git .github/workflowgit GO111MODULE 64/bin/go git -C /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_only_defaults_repo3961668228/001 remote /usr/bin/git h ../../../.pretgit GO111MODULE 64/bin/go git (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 -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� licyMinIntegrityOnlyrepos_only_without_min-integrity1024229261/001 -buildtags /usr/bin/git l -ifaceassert -nilfunc git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv Mzxx5Gf1j -test.v=true /usr/bin/git -test.timeout=10git -test.run=^Test -test.short=true--show-toplevel ortcfg estl�� g/typeutil/convert.go g/typeutil/convert_test.go 3125174/b462/types.test -json GO111MODULE x_amd64/compile 3125174/b462/types.test (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv 3125174/b456/timeutil.test --format=%(objectname) 3125174/b456/importcfg.link -json 4/arm64.go x_amd64/compile R_3VA1bELNvSY/sg3YSHTzqdvJXL5t-fhz/8-8vmLiYCmHH9--json remo�� s/test.md s/12345/artifacts 3125174/b456/_pkg_.a -json GO111MODULE x_amd64/vet 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, .object.type] | @tsv --show-toplevel x_amd64/compile ps 01 02/work x_amd64/compile ps git git rev-parse ache/node/24.14.1/x64/bin/node -json GO111MODULE x_amd64/vet node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 4423-65826/test-272159897 show (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv . st/dist/workers/forks.js $name) { hasDiscussionsEnabled } } -b a198a2cb it git diff�� --binary d14f5e8a03f82731--conditions ache/node/24.14.development full2.txt ode_modules/vite-C run-script/lib/n/home/REDACTED/work/gh-aw/gh-aw/.github/workflows git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv . ache/node/24.14.1/x64/bin/node odules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/git -b a198a2cb k/gh-aw/node_moduser.email git init�� -q (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch .go git repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } --count ca3516b3ba839f76-C t 1/x64/bin/node ve -q tions/setup/js/node_modules/vitest/suppress-warnings.cjs r: $owner, name: $name) { hasDiscussionsEnabled } } -exist mp db1b7208ef48c483/home/REDACTED/work/gh-aw/gh-aw docker-buildx (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch k/gh-aw/gh-aw/.gremote.origin.url main /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile l (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 --show-toplevel 64/pkg/tool/linuremote /usr/bin/gh rtcfg .cfg 64/pkg/tool/linu--show-toplevel gh run download 5 /usr/bin/gh test-logs/run-5 QuTc/8J1aAAdvjhKrev-parse ache/go/1.25.8/x--show-toplevel gh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git 49/001/test-simpgit GO111MODULE ules/.bin/sh git rev-�� --show-toplevel go /usr/bin/git */*.ts' '**/*.jsgit GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel x_amd64/compile /tmp/go-build2293125174/b435/repoutil.test -json t/format.go x_amd64/compile /tmp/go-build2293125174/b435/repoutil.test -tes�� -test.paniconexit0 -test.v=true /usr/bin/git -test.timeout=10git -test.run=^Test -test.short=true--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-add-gitattributes-test3809517789/.github/workflows remote tartedAt,updatedAt,event,headBranch,headSha,displayTitle -json GO111MODULE modules/@npmcli/--show-toplevel node /tmp�� ErrorFormatting1015735060/001 go /usr/bin/git ath ../../../.prgit GO111MODULE 64/bin/go 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, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_repos_arr-c=4 config /usr/bin/git remote.origin.urgit nal.go x_amd64/compile git rev-�� --show-toplevel l /usr/bin/git -json GO111MODULE x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv uts.version rev-parse 4107616/b471/vet.cfg -json GO111MODULE 64/bin/go git -C ErrorFormatting1015735060/001 remote /usr/bin/git l GO111MODULE 64/bin/go git (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-23 GOMOD GOMODCACHE x_amd64/compile rtcf�� lxoGLmbTj om/goccy/go-yaml-test.run=^Test 64/pkg/tool/linu-test.short=true GOINSECURE 454863/b047/ GOMODCACHE 64/pkg/tool/linu--auto (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-03-31 GOMOD GOMODCACHE 64/pkg/tool/linutest@example.com rtcf�� matter-with-arrays.md .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE 454863/b007/ GOMODCACHE 64/pkg/tool/linuTest User (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-01-30 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet rtcf�� ed-imports-enabled-with-body-content.md .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE /maps GOMODCACHE 64/pkg/tool/linu-1 (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 .cfg 64/pkg/tool/linux_amd64/link GOINSECURE fips140/edwards2init ache/go/1.25.8/x64/src/runtime/s-test.paniconexit0 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 .cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/link conf�� 3125174/b070/gh-aw.test XvR1/5IzJsHuNVIj4Gx5UXvR1 x_amd64/vet GOSUMDB GOWORK 64/bin/go x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE 4107616/b397/vet.cfg GOINSECURE GOMOD GOMODCACHE node /opt�� prettier --check /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet --ignore-path .prettierignore 64/bin/go /opt/hostedtoolcache/go/1.25.8/xTest User (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE ntio/asm/cpu/x86rev-parse GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 .cfg 64/pkg/tool/linu-nolocalimports GOINSECURE fips140hash ache/go/1.25.8/x--show-toplevel 64/pkg/tool/linu/tmp/go-build2293125174/b459/_testmain.go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE ntio/asm/cpu GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE ionpins.test GOINSECURE boring/bbig 454863/b011/syma--git-dir ionpins.test 2931�� 149315793 3125174/b024/vet.cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-buildtags (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE ache/node/24.14.1/x64/bin/node GOINSECURE GOMOD GOMODCACHE sh t-25�� bility_SameInputSameOutput2042513180/001/stability-test.md GOPROXY /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOSUMDB GOWORK 64/bin/go go (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 zm1t/ybsydLQ-bM8eUCGDzm1t 64/pkg/tool/linux_amd64/vet GOINSECURE contextprotocol/config GOMODCACHE Vgol9MA/XeIrSce2Test User (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE 454863/b078/js_jrev-parse ache/go/1.25.8/x--show-toplevel ylQP4Z8/vCNYLdc7D8RXanEmFBss -c echo "��� Action scripts synced successfully" zUvD/O0MXJnxKO-Hqrk06zUvD .cfg GOSUMDB GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE 4107616/b401/vet.cfg GOINSECURE GOMOD GOMODCACHE node /opt�� runs/20260430-054423-65826/test-97991847/.github/workflows --check /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet --ignore-path .prettierignore 64/bin/go /opt/hostedtoolc--json (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 64/pkg/tool/linux_amd64/vet GOINSECURE fips140cache 454863/b006/symauser.email 64/pkg/tool/linutest@example.com (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 eFae/0ahu769BnKYz-hV-eFae .cfg GOINSECURE fips140/hkdf GOMODCACHE ache/go/1.25.8/xTest User (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE 4107616/b406/vet.cfg GOINSECURE GOMOD GOMODCACHE node /opt�� runs/20260430-054423-65826/test-97991847/.github/workflows --check /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet l .prettierignore 64/bin/go /opt/hostedtoolcache/go/1.25.8/xtest@example.com (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE 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 4 --dir test-logs/run-4 .cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmain_branch667910104/001' 4107616/b412/vet.cfg GOINSECURE GOMOD GOMODCACHE node /opt�� 13 --check /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet --ignore-path .prettierignore 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_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 xxol/GL-tkTNtkvunLaxVxxol 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 QuTc/8J1aAAdvjhK6D-KwQuTc ache/go/1.25.8/x64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xtest@example.com stat�� 454863/b045/importcfg b24G/6nfC8zN5c6kASggpb24G .cfg GOSUMDB GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linushow (http block)
    • 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 node /opt�� 13 --check ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet --ignore-path .prettierignore 64/bin/go ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD sm.s 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 100 GOMOD GOMODCACHE x_amd64/vet env -json @v1.19.2/token/token.go x_amd64/vet GOINSECURE GOMOD GOMODCACHE 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 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 36358072 GO111MODULE x_amd64/compile GOINSECURE GOMOD 454863/b133/symauser.name x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build2293125174/b404/cli.test /tmp/go-build2293125174/b404/cli.test -test.testlogfile=/tmp/go-build2293125174/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /tmp/go-build3834107616/b404/cli.test /tmp/go-build3834107616/b404/cli.test -test.testlogfile=/tmp/go-build3834107616/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /sh GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x12345 /usr/bin/git CompiledOutput77git -trimpath 3125174/b179/vet--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/xtest@example.com /usr/bin/git w.md /tmp/go-build229-k 64/pkg/tool/linu/tmp/gh-aw/aw-feature-branch.patch git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git ring3999832647/0git GO111MODULE bin/bash git rev-�� waysRecompiles2559914923/001 go /usr/bin/git -json GO111MODULE 1/x64/bin/node 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, .object.type] | @tsv 4026-39828/test-source-field-variant-988203952/.github/workflows 3125174/b004/vet.cfg tartedAt,updatedAt,event,headBranch,headSha,displayTitle -p internal/cpu -lang=go1.25 y4/NgsYRIvMQHHTX5b4d3ZQ/CzLq7wly-test.v=true 4548�� /tmp/go-build314454863/b079/_pkg-test.timeout=10m0s pkg/mod/github.com/modelcontextp-test.run=^Test ache/go/1.25.8/x64/pkg/tool/linu-test.short=true -p internal/poll -lang=go1.25 ache/go/1.25.8/x12345 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env /workflows GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go _bra�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 " GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env _.a GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env Gitmain_branch30remote.origin.url Gitmain_branch3035353481/001' x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env _.a GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 908071744/001 908071744/002/work 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv 4026-39828/test-source-field-variant-988203952 3125174/b034/vet.cfg k -I /tmp/go-build314rev-parse -I 06/m1mI9m8ZybBw5VAsfaec/Pi1C9UClmDRmydbNI-g3 sRem�� se 3125174/b121/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p context -lang=go1.25 ache/go/1.25.8/xv1.0.0 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ules/.bin/sh GOINSECURE GOMOD GOMODCACHE go env th .prettierignore GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (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 ache/go/1.25.8/xtest@example.com (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD emmove_wasm.s x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD t0_js_wasm.s x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state 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 4548�� /tmp/go-build314454863/b148/_pkg_.a pkg/mod/github.com/segmentio/asm@v1.1.3/cpu/x86/x86.go x_amd64/vet -p github.com/segmeapi -lang=go1.17 x_amd64/vet (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 ii/equal_fold.go x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go /pre�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 454863/b045/importcfg b24G/6nfC8zN5c6kASggpb24G .cfg GOSUMDB GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linushow (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch --show-toplevel go /usr/bin/git repo3961668228/0git GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git report.md GO111MODULE 64/bin/sh git (http block)
  • invalid.example.invalid
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git e/git init�� git git ode_modules/.bin/git =receive Test User /git (dns block)
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git e/git diff�� --binary --output=/tmp/gh-aw/aw-auth-cleanup-success.patch.diff.tmp ode_modules/.bin/git =receive h _modules/.bin/gifor-each-ref (dns block)

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

When the Copilot CLI exits mid-stream with a server error and the driver
retries with --continue, the session credential written by the interrupted
run may be incomplete/invalid, causing a "No authentication information
found" error even though env-var tokens are present and valid.

Instead of bailing immediately (old behavior), detect when this auth error
occurs on a --continue attempt and fall back to a single fresh run (without
--continue). If the fresh run also fails with auth, then bail.

This implements option 2 from issue #26146 discussion:
- Set useContinueOnRetry=false on --continue auth failure
- Continue the loop to spawn a fresh run
- The Copilot CLI re-does env-var auth from scratch

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/60274445-3f4d-4534-b9f5-b7fe03aacc72

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix retry issue in copilot-driver for transient server errors fix(copilot-driver): fall back to fresh run when --continue auth fails mid-stream Apr 30, 2026
Copilot AI requested a review from pelikhan April 30, 2026 05:48
@pelikhan pelikhan marked this pull request as ready for review April 30, 2026 05:52
Copilot AI review requested due to automatic review settings April 30, 2026 05:52
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

Adjusts the Copilot CLI harness retry policy to recover when a --continue retry fails with “No authentication information found” due to a potentially corrupted on-disk session credential from an interrupted run.

Changes:

  • Update copilot_harness.cjs to fall back from a failed --continue attempt to a fresh run (no --continue) instead of bailing immediately on the auth error.
  • Update copilot_harness.test.cjs to reflect the new retry behavior and add coverage for “fresh-run auth failure still bails”.
  • Update changeset text to describe the new --continue auth-fallback behavior.
Show a summary per file
File Description
actions/setup/js/copilot_harness.cjs Implements fresh-run fallback when auth fails on a --continue retry attempt.
actions/setup/js/copilot_harness.test.cjs Updates/extends unit tests for the revised auth retry decision behavior.
.changeset/patch-fix-resume-auth-failure.md Updates release note text to match the new --continue fallback behavior.

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)

actions/setup/js/copilot_harness.cjs:447

  • These comments say the harness falls back to a fresh run "once", but the current logic has no guard to prevent multiple fresh-run fallbacks if useContinueOnRetry becomes true again later. Either add a dedicated "didFreshAuthFallback"/similar flag to enforce a single fallback per job, or reword the comments to match the actual behavior.
    // Auth error: behavior depends on whether this was a --continue attempt.
    // On a --continue attempt: the Copilot CLI's on-disk session credential written by the
    // interrupted run may be incomplete/invalid.  Fall back to a fresh run (without --continue)
    // once so env-var auth can succeed.  Mid-stream context is lost but the job can recover.
    // On a fresh run: the auth token is genuinely absent or invalid — retrying will not help.
  • Files reviewed: 3/3 changed files
  • Comments generated: 3

Comment on lines 60 to 63
// Pattern to detect "model not supported" error (e.g. Copilot Pro/Education users hitting
// a model that is unavailable for their subscription tier).
// This is a persistent configuration error — retrying with --resume will not help.
const MODEL_NOT_SUPPORTED_PATTERN = /The requested model is not supported/;
Comment on lines +339 to +342
const resumeResult = { exitCode: 1, hasOutput: true, output: "Error: No authentication information found." };
expect(shouldRetry(resumeResult, 1)).toBe(false);
expect(shouldRetry(resumeResult, 2)).toBe(false);
expect(shouldRetry(resumeResult, 3)).toBe(false);
expect(shouldRetry(resumeResult, 1, true)).toBe(true); // --continue attempt: triggers fresh retry
expect(shouldRetry(resumeResult, 2, true)).toBe(true); // still within retry budget
expect(shouldRetry(resumeResult, 3, true)).toBe(false); // budget exhausted
@@ -2,4 +2,4 @@
"gh-aw": patch
---

Fix copilot-driver `--resume` authentication failures: detect "No authentication information found" as non-retryable, add GITHUB_TOKEN/GH_TOKEN fallback for COPILOT_GITHUB_TOKEN, and log auth token availability for diagnostics.
Fix copilot-driver `--continue` auth failure: when "No authentication information found" occurs on a `--continue` retry attempt (session credential may be corrupted by mid-stream exit), fall back to a fresh run instead of bailing immediately, giving the job a recovery path via env-var auth.
@github-actions github-actions Bot mentioned this pull request Apr 30, 2026
@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot review all comments

@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 97/100

Excellent test quality

Metric Value
New/modified tests analyzed 6
✅ Design tests (behavioral contracts) 6 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 6 (100%)
Duplicate test clusters 0
Test inflation detected No (ratio 1.09:1)
🚨 Coding-guideline violations None

Test Classification Details

View all 6 tests
Test File Classification Notes
does not retry when auth fails on first attempt copilot_harness.test.cjs ✅ Design Verifies no-retry on genuine auth failure (attempt 0, fresh run)
retries as fresh run when auth fails on a --continue attempt copilot_harness.test.cjs ✅ Design Core behavioral contract of this fix: covers all budget states (attempt 1+2 → retry, attempt 3 → bail)
does not retry when auth fails on a fresh-run recovery attempt copilot_harness.test.cjs ✅ Design NEW — covers the double-failure edge case after fallback; useContinueOnRetry=false bails immediately
does not retry auth error even when output is mixed with other content copilot_harness.test.cjs ✅ Design Edge case: pattern match works even with surrounding log lines
still retries non-auth errors with output (CAPIError 400) copilot_harness.test.cjs ✅ Design Regression guard: new auth logic must not affect CAPIError retry
still retries generic partial-execution errors with output copilot_harness.test.cjs ✅ Design Regression guard: generic errors still follow standard retry path

Flagged Tests — Requires Review

None. All tests are in good shape.


Language Support

Tests analyzed:

  • 🟨 JavaScript (*.test.cjs): 6 tests (vitest)

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%). Tests directly exercise the behavioral contract introduced by this fix — the three-way auth error state machine (fresh fail → bail, --continue fail with budget → retry as fresh, fresh-after-fallback fail → bail) is fully covered with correct boundary values (attempts 1, 2, 3 against MAX_RETRIES).

Score deduction (–3 pts): Tests 5 and 6 are minimal single-assertion cases with no descriptive message argument on expect(...).toBe(...) calls. Consider adding inline comments or message strings to clarify intent, e.g. expect(shouldRetry(...), "non-auth error should retry"). Minor stylistic note only — not a failing issue.


📖 Understanding Test Classifications

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

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

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

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

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

References: §25149772396

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

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

✅ Test Quality Sentinel: 97/100. Test quality is excellent — 0% of new tests are implementation tests (threshold: 30%). The new tests directly verify the three-way auth error state machine introduced by this fix.

- Fix --resume comment on MODEL_NOT_SUPPORTED_PATTERN (was --resume, should be --continue)
- Rename resumeResult to continueResult in test to match --continue terminology
- Rename changeset file from patch-fix-resume-auth-failure.md to patch-fix-continue-auth-failure.md

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4fb295bf-0f83-4032-9d5f-57f8ee1a26c0

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

Copilot AI commented Apr 30, 2026

@copilot review all comments

Addressed all three reviewer comments in 23aea16:

  • Fixed --resume--continue in MODEL_NOT_SUPPORTED_PATTERN comment (lines 60–63 and the inline note on line 443)
  • Renamed resumeResultcontinueResult in the test
  • Renamed changeset file from patch-fix-resume-auth-failure.mdpatch-fix-continue-auth-failure.md

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.

copilot-driver: --continue retry fails with 'No authentication information found' after mid-stream server error, no recovery path

3 participants