Skip to content

fix(harness): treat "No deferred tool marker" as non-retriable in claude_harness.cjs#31014

Merged
pelikhan merged 3 commits into
mainfrom
copilot/fix-multi-device-session-resume
May 8, 2026
Merged

fix(harness): treat "No deferred tool marker" as non-retriable in claude_harness.cjs#31014
pelikhan merged 3 commits into
mainfrom
copilot/fix-multi-device-session-resume

Conversation

Copilot AI commented May 8, 2026

Copy link
Copy Markdown
Contributor

When Claude Code exits with "No deferred tool marker found", every --continue retry fails instantly with the same error — the harness was burning all 3 retry slots in ~0s each, masking the real cause and never reaching actual work (root cause of the 4-day Multi-Device Docs Tester streak).

Changes

  • claude_harness.cjs — adds NO_DEFERRED_MARKER_PATTERN + isNoDeferredMarkerError() and breaks out of the retry loop immediately on detection, mirroring the existing max_turns short-circuit; also surfaces isNoDeferredMarkerError in the per-attempt failure log line for easier diagnosis
  • claude_harness.test.cjs — 7 new unit tests covering canonical error string, mixed-case, embedded-in-log-block, and negative cases (overloaded, max_turns, success, empty)
// Before: harness retried 3× with --continue, each failing instantly
[claude-harness] all 3 retries exhausted — giving up (exitCode=1)

// After: harness detects the condition and exits on the first attempt
[claude-harness] attempt 1: no deferred tool marker — not retriable via --continue
[claude-harness] done: exitCode=1 totalDuration=3s

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 .cfg (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 (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 er (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 on' --ignore-path ../../../.prettierignore (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 x_amd64/vet /usr/bin/git licyBlockedUsersgit -trimpath ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/x--jq /usr/bin/git 6932597/b462/timgh show 6932597/b462/imp/repos/actions/github-script/git/ref/tags/v9 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 /ref/tags/v9 64/pkg/tool/linurev-parse sv ty-test.md .cfg 64/pkg/tool/linu/repos/actions/github-script/git/ref/tags/v9 git remo�� (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 SameOutput3505352529/001/stability-test.md /tmp/go-build3276932597/b116/vet.cfg g_.a (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 su ache/node/24.14.--show-toplevel git rev-�� --show-toplevel ache/node/24.14.1/x64/bin/node /usr/bin/git ub.actor -test.v=true /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/gh --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git gh api /repos/actions/setup-go/git/ref/tags/v4 --jq /usr/bin/infocmp --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/gh infocmp (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 --show-toplevel -tests /usr/bin/infocmp (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv ErrorFormatting536141516/001 git /usr/bin/git ./../pkg/workflogit --local x_amd64/vet git conf�� --get remote.origin.url /usr/bin/git aude_harness.tesgit --local x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv waysRecompiles1424812501/001 rev-parse /usr/bin/git '**/*.ts' '**/*.git harness deferrerev-parse x_amd64/vet git remo�� add origin /usr/bin/git --local committer.email x_amd64/vet 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, .object.type] | @tsv xterm-color infocmp /usr/bin/git xterm-color -goversion /usr/bin/git git rev-�� --show-toplevel git /usr/bin/infocmp (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 t.cjs (http block)
    • 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 -resume (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 (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 t.cjs (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 go1.25.8 -c=4 -nolocalimports -importcfg /tmp/go-build3276932597/b396/importcfg -pack /tmp/go-build3276932597/b396/_testmain.go ode_�� (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/compile /usr/bin/gh g_.a -importcfg /opt/hostedtoolc/repos/actions/github-script/git/ref/tags/v9 gh api /repos/actions/github-script/git/ref/tags/v9 --jq /usr/bin/git /v2.0.0 '/tmp/TestParseDrev-parse sv 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/file-tracker-test2325534146/test1.md /tmp/file-tracker-test2325534146/test2.lock.yml /usr/bin/git */*.json' '!../.git core.hooksPath x_amd64/vet git rev-�� --show-toplevel x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv xterm-color ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git 5507-14562/test-git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ithub-script/git/ref/tags/v9 git bject.type] | @tsv --get remote.origin.urrev-parse /usr/bin/gh git rev-�� --show-toplevel gh /usr/bin/git /repos/actions/ginfocmp l me: String!) { xterm-color 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 6932597/b458/testutil.test -tests t (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv ErrorFormatting536141516/001 config /usr/bin/git l --local on: .conclusion,--show-toplevel git -C s/test.md config /usr/bin/git remote.origin.urgit --local x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv /ref/tags/v9 resolved$ sv '**/*.ts' '**/*.git harness deferrerev-parse x_amd64/vet /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build3276932597/b112/vet.cfg /usr/bin/git phen2968210335/0git phen2968210335/0rev-parse 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 --get remote.origin.url /opt/hostedtoolcache/node/24.14.1/x64/bin/node --local user.name x_amd64/vet /opt/hostedtoolcache/node/24.14.1/x64/bin/node /tmp�� secrets.TOKEN x_amd64/vet /usr/bin/git *.json' '!../../git HEAD 64/pkg/tool/linu--show-toplevel 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 github.repositorgit show /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linurev-parse /usr/bin/git /tmp/go-build327gh l /usr/bin/git 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 e/git /usr/bin/git 168.63.129.16 git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/infocmp --show-toplevel x_amd64/vet r,url,status,con--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 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuv1.0.0 /usr/bin/git /tmp/go-build327git -trimpath /usr/bin/git git rev-�� --show-toplevel git /usr/bin/gh ansitiveImports3infocmp -goversion /usr/bin/git gh (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 ache/node/24.14.1/x64/bin/node /usr/bin/git ub.actor -test.v=true /usr/bin/git git rev-�� /ref/tags/v9 git sv --get remote.origin.ur-1 /usr/bin/git gh (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 /opt/hostedtoolctest@example.com /usr/bin/gh 5507-14562/test-infocmp /tmp/go-build327-1 e/git-receive-paxterm-color gh api /repos/actions/github-script/git/ref/tags/v9 --jq (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 --get remote.origin.url /usr/bin/git 114471511/001 114471511/002/worev-parse x_amd64/vet git bran�� --show-current x_amd64/vet /usr/bin/git origin main 64/pkg/tool/linu--show-toplevel 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 /ref/tags/v9 Test User sv .js' --ignore-pagit committer.name x_amd64/vet /usr/lib/git-core/git main�� /ref/tags/v9 resolved$ sv --detach ify@v1.11.1/requrev-parse 64/pkg/tool/linu--show-toplevel 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-05-01 (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-08 (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-07 w (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 ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /../../.prettiergh erignore run-script/lib/nlist ache/go/1.25.8/x--json -c 1447469488 (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 6932597/b017/vet.cfg x_amd64/compile ./../.prettieriggit (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 on ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /../../.prettiergit erignore (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 on ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /../../.prettier/usr/bin/git erignore (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, ormat:cjs --silent >/dev/null 2>&1 (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 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /../../.prettiergit erignore (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 on ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /../../.prettiergh erignore (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 .cfg 64/pkg/tool/linux_amd64/compile /../../.prettierinfocmp erignore (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 6932597/b011/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 go x_amd64/compile /../../.prettier/opt/hostedtoolcache/node/24.14.1/x64/bin/node erignore (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 6932597/b014/vet.cfg x_amd64/link (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 on nutil.test /../../.prettier/usr/bin/git erignore (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 6932597/b018/vet.cfg .cfg ./../.prettieriggit (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 run 64/pkg/tool/linux_amd64/compile /../../.prettier/usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 6932597/b016/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet =error 2>&1 tdrain (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path (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 (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 (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build3276932597/b405/cli.test /tmp/go-build3276932597/b405/cli.test -test.testlogfile=/tmp/go-build3276932597/b405/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true (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 ps /usr/bin/git git -trimpath /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel -dwarf=false /opt/hostedtoolc--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, .object.type] | @tsv se 6932597/b217/vet.cfg Name,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle (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 1291744414/.github/workflows credential.helper 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 -c=4 -nolocalimports -importcfg /tmp/go-build3276932597/b460/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/testutil/spec_test.go /home/REDACTED/work/gh-aw/gh-aw/pkg/testutil/tempdir_test.go k/gh�� */*.json' '!../../../pkg/workflow/js/**/*.json' --ignore-path core.hooksPath 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 */*.ts' '**/*.js--thin user.email 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 -c=4 -nolocalimports -importcfg /tmp/go-build3276932597/b464/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/timeutil/spec_test.go x_amd64/vet 1/x6�� b/workflows origin x_amd64/compile son (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 */*.ts' '**/*.js-c=4 user.email x_amd64/vet (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 ache/node/24.14.1/x64/bin/node /usr/bin/git uts.enforce_all git git /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel node /usr/bin/git /tmp/TestHashCongit x_amd64/vet om/org1/repo1.gi--show-toplevel git (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 se 6932597/b221/vet.cfg x_amd64/vet (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 (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/.bin/sh (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo sh (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state ortcfg.link **/*.ts **/*.json --ignore-path Q9JjIZREDlYiHWP_71/KDaUrle63TPPPS1tZJmA/SqW9rykMeIF_E5paMIS4 (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 on' --ignore-path ../../../.prettierignore (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 1hiKPu1-z (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 May 8, 2026 12:52
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/3b5f288a-61bd-4afe-9a43-08048a71fe7a

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
…ude_harness.cjs

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/3b5f288a-61bd-4afe-9a43-08048a71fe7a

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix session resume failure in Multi-Device Docs Tester fix(harness): treat "No deferred tool marker" as non-retriable in claude_harness.cjs May 8, 2026
Copilot AI requested a review from gh-aw-bot May 8, 2026 13:01
@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

Hey @copilot-swe-agent 👋 — great catch on the non-retriable No deferred tool marker error! Short-circuiting the retry loop here and surfacing it clearly in the failure log is exactly the right approach.

One thing worth tidying up before merge:

  • Unfocused diff — the PR bundles the claude_harness.cjs bugfix and its 7 new unit tests together with a mass update of 100+ .lock.yml workflow pin files. These are independent concerns. Keeping the harness fix in its own PR makes the change history easier to bisect and review, especially since the lock-file churn drowns out the actual logic change.

If you'd like a hand splitting this up, here's a ready-to-use prompt:

Split PR #31014 into two separate PRs on the github/gh-aw repo:
1. A focused PR containing only the changes to claude_harness.cjs and claude_harness.test.cjs (the "No deferred tool marker" non-retriable fix and its unit tests).
2. A separate PR (or automated commit) containing only the .lock.yml workflow pin bumps.
Base both PRs on the same upstream branch as #31014. Reuse the existing PR body for PR 1, trimming any lock-file references.

Generated by Contribution Check · ● 7.5M ·

@pelikhan pelikhan marked this pull request as ready for review May 8, 2026 14:04
Copilot AI review requested due to automatic review settings May 8, 2026 14:04
@pelikhan pelikhan merged commit ce5b7a1 into main May 8, 2026
@pelikhan pelikhan deleted the copilot/fix-multi-device-session-resume branch May 8, 2026 14:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Claude CLI harness to detect the deterministic “No deferred tool marker found” failure mode and stop retrying with --continue, preventing instant retry loops that waste retry budget and obscure the real underlying failure.

Changes:

  • Add detection for “No deferred tool marker found” in claude_harness.cjs and short-circuit the retry loop on that condition.
  • Add unit tests for the new detection helper in claude_harness.test.cjs.
  • Refresh multiple workflow lock files to reflect the updated actions/github-script version annotation format (v9 vs v9.0.0 (source v9)).
Show a summary per file
File Description
actions/setup/js/claude_harness.cjs Adds “no deferred marker” detection and stops retrying when encountered.
actions/setup/js/claude_harness.test.cjs Adds unit coverage for the new detection helper.
.github/workflows/weekly-editors-health-check.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/video-analyzer.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/update-astro.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/test-workflow.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/test-project-url-default.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/test-dispatcher.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/smoke-workflow-call.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/smoke-temporary-id.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/smoke-service-ports.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/smoke-opencode.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/smoke-crush.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/smoke-ci.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/research.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/repo-tree-map.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/github-remote-mcp-auth-test.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/github-mcp-tools-report.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/firewall.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/example-permissions-warning.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/docs-noob-tester.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/dependabot-repair.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/dependabot-go-checker.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/dependabot-burner.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-team-status.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-team-evolution-insights.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-syntax-error-quality.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-sentrux-report.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-regulatory.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-multi-device-docs-tester.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/daily-malicious-code-scan.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/codex-github-remote-mcp-test.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/code-simplifier.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/cli-consistency-checker.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.
.github/workflows/blog-auditor.lock.yml Lock metadata/comment normalization for actions/github-script version annotation.

Copilot's findings

Tip

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

  • Files reviewed: 151/188 changed files
  • Comments generated: 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[aw-failures] [fix] Multi-Device Docs Tester: session resume failure — 4-day consecutive streak

4 participants