Skip to content

Replace end-of-session mcpscripts validation with bash to prevent ~5min MCP inactivity timeouts#28816

Merged
pelikhan merged 3 commits intomainfrom
copilot/replace-mcp-validation-bash-calls
Apr 28, 2026
Merged

Replace end-of-session mcpscripts validation with bash to prevent ~5min MCP inactivity timeouts#28816
pelikhan merged 3 commits intomainfrom
copilot/replace-mcp-validation-bash-calls

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 27, 2026

MCP connections (HTTP/WebSocket) time out after ~5 minutes of inactivity. Workflows with long file-exploration phases exceed this threshold, causing end-of-session mcpscripts-make/mcpscripts-go validation calls to fail with MCP error -32003: context canceled — wasting the entire preceding session.

Changes

  • go-logger.md: Replace all end-of-session mcpscripts-make/mcpscripts-go validation with direct bash. Add an early validation checkpoint after the first file edit to surface compile errors before spending context on subsequent files.

    - Use the mcpscripts-make tool with args: "build"
    - Use the mcpscripts-make tool with args: "test-unit"
    + make build
    + make test-unit
  • shared/go-make.md: Replace the blanket "always use mcpscripts" rule with a nuanced one — use mcpscripts-* early in a session (before long exploration), use bash for any validation step that follows a lengthy idle phase.

  • daily-cli-performance.md: Replace mcpscripts-make bench-performance with make bench-performance via bash for the same reason; analysis phases follow the benchmark step.

  • AGENTS.md: Add a ### MCP Connection Inactivity Timeout section under Key Features documenting the bash-over-MCP rule, with correct/incorrect examples and guidance on when mcpscripts-* tools remain safe.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw ons.md r.agent.md esigner.agent.md ment�� (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 ons.md r.agent.md esigner.agent.md-s -w -X main.version=fc3f097-dirty ment�� (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-pat-c=4 (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 sY5xy3c/9ezsDU_V/tmp/go-build3980722625/b112/vet.cfg /usr/bin/git se .cfg ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/x64/pkg/tool/linutest@example.com /usr/bin/git 73/001/test-fronnode 0722625/b139/vet/opt/hostedtoolcache/node/24.14.1/x64/bin/npm ache/go/1.25.8/xinstall 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 3750-16393/test-923378419 ftwbLyXFJWv_ /usr/bin/git k/gh-aw/gh-aw/.ggit rev-parse x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git Gitmaster_branchgit Gitmaster_branchrev-parse x_amd64/vet 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, .object.type] | @tsv 3750-16393/test---workflow --write ache/go/1.25.8/x--limit !../../../pkg/woinfocmp --ignore-path ../../../.prettixterm-color ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build3980722625/b037/vet.cfg 1/x64/bin/node ignore-path ../.git k/gh-aw/gh-aw/.grev-parse ache/go/1.25.8/x--show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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/linux_amd64/vet /usr/bin/git 4554/001/stabilitr 0722625/b257/vet\n ache/go/1.25.8/x: git rev-�� --show-toplevel ache/go/1.25.8/xremote /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git sistency_KeyOrdegit bash /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --get s/4/artifacts /opt/hostedtoolc--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 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv SameOutput203257go1.25.8 tname) g_.a -errorsas -ifaceassert -nilfunc /opt/hostedtoolc/tmp/go-build3980722625/b469/_testmain.go -ato�� -bool -buildtags ache/node/24.14.1/x64/bin/node -errorsas -ifaceassert -nilfunc git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -bool -buildtags ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -errorsas -ifaceassert -nilfunc ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile rev-�� 0722625/b454/_pkg_.a -tests 0722625/b454=> -m b/gh-aw/pkg/testrev-parse sh 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 --show-toplevel ache/go/1.25.8/xremote /usr/bin/git vaScript30938210git -buildtags 0722625/b324/vetHEAD git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linurev-parse /usr/bin/git '/tmp/TestParsegit '/tmp/TestParserev-parse 0722625/b419/vet--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 ithub/workflows (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv git status --porcelain --ignore-submodules | hearemote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw -v kflows/daily-assign-issue-to-user.lock.yml (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 ry=1 64/pkg/tool/linux_amd64/vet 0722625/b469/_pkg_.a CnWerFpYn rev-parse 64/pkg/tool/linu--show-toplevel infocmp -1 xterm-color 64/pkg/tool/linuremote.origin.url /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet ithout_min-integgit g/constants/engirev-parse .cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 --get remote.origin.url clusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle ithub/workflows 90 x_amd64/vet node /tmp�� /tmp/TestHashConsistency_GoAndJavaScript3093821073/001/test-frontmatter-with-env-template-expresgit x_amd64/vet /opt/hostedtoolcache/node/24.14.1/x64/bin/node ithub/workflows show x_amd64/vet node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel 64/pkg/tool/linux_amd64/vet 0722625/b468/vet.cfg DpDJ_BTqF config 64/pkg/tool/linu--show-toplevel infocmp -1 xterm-color 64/pkg/tool/linumyorg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile y_with_repos_arrgit rkflow/js/**/*.jrev-parse x_amd64/link /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-test.short=true s -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu/tmp/go-build3980722625/b452/_testmain.go -ato�� licyMinIntegrityOnlyrepos_only_without_min-integrity3621186168/0remote.origin.url -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 -bool l x_amd64/compile -errorsas -ifaceassert -nilfunc x_amd64/compile rev-�� --show-toplevel -tests /usr/bin/git ithub/workflows Initial plan forrev-parse er: String!, $na--show-toplevel 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 UQnE/yW4RvIOENlQyCmptUQnE remote /usr/bin/git k/gh-aw/gh-aw rev-parse ex.lock.yml 0722625/b458/importcfg conf�� k/gh-aw/gh-aw/pkg/timeutil/spec_test.go remote.origin.url _id":222}] ithub/workflows (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 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git rev-�� --show-toplevel git /opt/hostedtoolcache/node/24.14.1/x64/bin/npm --show-toplevel 64/pkg/tool/linu-e (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv ion_pins.json git $name) { hasDiscussionsEnabled } } --show-toplevel 64/pkg/tool/linu--norc /usr/bin/git git rev-�� --show-toplevel /usr/bin/git /usr/bin/git -v 64/pkg/tool/linu-C /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch 8a918015:pkg/actremote.origin.url git r: $owner, name: $name) { hasDiscussionsEnabled } } --show-toplevel /opt/hostedtoolc-C /usr/bin/git git rev-�� --show-toplevel git r: $owner, name: $name) { hasDiscussionsEnabled } } --show-toplevel /opt/hostedtoolc-C /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, .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/linuorigin /usr/bin/git te '../../../**/git config .cfg 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 0722625/b474/_pkg_.a 0722625/b441/_testmain.go 0722625/b474=> remote.origin.urgit b/gh-aw/scripts me: String!) { --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-buildtags -ato�� Xz34/0uXSzV-SefrVVCpTXz34 -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc 0722625/b474/importcfg (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 k/gh-aw/gh-aw/pkg/cli /tmp/go-build3980722625/b420/_testmain.go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile yphen2769850167/git yphen2769850167/rev-parse me: String!) { --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -o /tmp/go-build3980722625/b444/_pkg_.a -trimpath /usr/bin/git -p main -lang=go1.25 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-20 (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-28 (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-27 ate-safe-output-remote DiscussionsEnabladd S7/xQe5f0wJO56wlorigin imag�� ned-imports-enabled-with-body-content.md .cfg 64/pkg/tool/linux_amd64/vet -writer.agent.mdgit structions/ci-peinit cal/bin/git 64/pkg/tool/linux_amd64/vet (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/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 rev-parse .cfg (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 show 64/pkg/tool/linux_amd64/compile rkflow/js/**/*.jnode (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 rev-parse 64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name config ntdrain.test rkflow/js/**/*.jgit ecs/security-arcrev-parse erignore ntdrain.test 9807�� se 0722625/b036/vet.cfg .cfg ./../.prettieriggit ithub/agents/crerev-parse r: $owner, name:--show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name config 64/pkg/tool/linu-importcfg remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 config x_amd64/vet remote.origin.urgit (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 rev-parse 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 ls_parser.go 64/pkg/tool/linux_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 om/stretchr/testify@v1.11.1/assert/assertion_for-ifaceassert 64/pkg/tool/linux_amd64/link remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 (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 64/src/testing/i-c=4 64/pkg/tool/linu-nolocalimports (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 om/aymanbagabas/go-udiff@v0.4.1/lcs/doc.go .cfg (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path ithub/workflows -trimpath (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 owner=github -f x_amd64/vet -C 820300782/.github/workflows config x_amd64/vet remote.origin.urgit (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 owner=github -f 64/pkg/tool/linu^remote\..*\.gh-resolved$ (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build3980722625/b404/cli.test /tmp/go-build3980722625/b404/cli.test -test.testlogfile=/tmp/go-build3980722625/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true l (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/x64/pkg/tool/linumyorg /usr/bin/git ExpressionCompilgit ../../../**/*.jsrev-parse x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git FieldEnforcementdu /tmp/go-build398-k e/git 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 0722625/b110/vet.cfg tartedAt,updatedAt,event,headBranch,headSha,displayTitle ash-calls --local run-script/lib/n--show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet sRem�� se 0722625/b229/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet .prettierignore --log-level=errorev-parse bash ache/go/1.25.8/x64/pkg/tool/linuorigin (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 k/gh-aw/gh-aw -f x_amd64/vet -f owner=github ed } } 4-oiIa1/9KqfPfOC-extld=gcc tion�� Gitmain_branch2940546705/001' Gitmain_branch2940546705/001' 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 /home/REDACTED/work/gh-aw/gh-aw/.g-errorsas config x_amd64/vet remote.origin.urgit (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 /home/REDACTED/wor-errorsas rev-parse 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 k/gh-aw/gh-aw/.github/workflows config x_amd64/vet l (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 /home/REDACTED/wor-c=4 rev-parse x_amd64/vet (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 plorer.md 0722625/b063/vet.cfg .cfg ash-calls --local $name) { has--get ache/go/1.25.8/xremote.origin.url (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion /../../.prettiergit r r: $owner, name:--show-toplevel ache/go/1.25.8/x64/pkg/tool/linuremote.origin.url (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 es/.bin/sh (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state .cfg remote.origin.urgit (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 73/001/test-empty-frontmatter.md-p git .cfg get --global cal/bin/git ache/go/1.25.8/x64/pkg/tool/linuremote -c P82kiP9ch git ache/go/1.25.8/x64/pkg/tool/linu-importcfg get --local r: $owner, name:--get-regexp ache/go/1.25.8/x^remote\..*\.gh-resolved$ (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 27, 2026 23:35
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4cb03645-8073-4867-aee9-3d829de3a9c5

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

- go-logger.md: replace mcpscripts-make/go validation with bash, add early validation checkpoint
- shared/go-make.md: update guidance to prefer bash for end-of-session validation
- daily-cli-performance.md: replace mcpscripts bench-performance with make bash call
- AGENTS.md: document bash-over-MCP rule for validation steps
- Recompile all workflow lock files"

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4cb03645-8073-4867-aee9-3d829de3a9c5

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Copilot AI changed the title [WIP] Replace end-of-session MCP validation with bash calls Replace end-of-session mcpscripts validation with bash to prevent ~5min MCP inactivity timeouts Apr 27, 2026
Copilot AI requested a review from gh-aw-bot April 27, 2026 23:44
@github-actions github-actions Bot mentioned this pull request Apr 28, 2026
@pelikhan pelikhan marked this pull request as ready for review April 28, 2026 02:37
Copilot AI review requested due to automatic review settings April 28, 2026 02:37
@pelikhan pelikhan merged commit 61c6d2b into main Apr 28, 2026
19 checks passed
@pelikhan pelikhan deleted the copilot/replace-mcp-validation-bash-calls branch April 28, 2026 02:37
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

Updates workflow authoring guidance to avoid MCP inactivity timeouts by preferring direct bash for validation steps that occur after long analysis/exploration phases.

Changes:

  • Updated shared and workflow-specific instructions to use bash for late-session build/test/bench validation (and clarified when mcpscripts-* is still safe).
  • Added an early validation checkpoint to the Go logger workflow guidance (build after first edit).
  • Bumped the pinned ruby/setup-ruby action version/SHA in both action pin registries.
Show a summary per file
File Description
AGENTS.md Documents MCP inactivity timeout behavior and guidance for bash vs mcpscripts-*.
.github/workflows/shared/go-make.md Replaces “always use mcpscripts” with time-aware guidance and bash validation examples.
.github/workflows/go-logger.md Switches validation instructions to bash and adds an early build checkpoint.
.github/workflows/daily-cli-performance.md Switches benchmark execution instructions from mcpscripts-make to bash make.
.github/workflows/smoke-claude.lock.yml Updates embedded instructions to reflect bash-vs-MCP guidance (generated lock content).
pkg/actionpins/data/action_pins.json Updates ruby/setup-ruby pinned version/SHA.
pkg/workflow/data/action_pins.json Updates ruby/setup-ruby pinned version/SHA.

Copilot's findings

Tip

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

  • Files reviewed: 7/7 changed files
  • Comments generated: 4

Comment on lines +68 to +77
## Validation Commands

This workflow imports `shared/go-make.md` which provides:
- **mcpscripts-go** - Execute Go commands (e.g., args: "test ./...", "build ./cmd/gh-aw")
- **mcpscripts-make** - Execute Make targets (e.g., args: "build", "test-unit", "lint", "recompile")
Use **bash** for all build, test, and validation commands in this workflow. Do **not** use `mcpscripts-make` or `mcpscripts-go` for validation — MCP connections can time out after ~5 minutes of inactivity during long file-exploration phases, causing end-of-session validation to fail with `MCP error -32003: context canceled`.

Use these tools for consistent execution instead of running commands directly via bash.
```bash
make build # Build the project
make test-unit # Run unit tests
make recompile # Recompile workflows
DEBUG=* ./gh-aw compile dev # Test workflow compilation with debug logging
```
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

The workflow now instructs running make test-unit via bash, but this file’s tools.bash safe-command allowlist (frontmatter) doesn’t include make test-unit. If the agent can only run allowlisted commands, validation will be blocked. Add make test-unit to the bash allowlist (or switch to bash: true if unrestricted bash is acceptable for this workflow).

Copilot uses AI. Check for mistakes.
Comment thread AGENTS.md

This causes the entire workflow session to fail at the last step, wasting all preceding work.

**Rule**: Always use direct `bash` commands for build, test, and validation steps — especially for any step that runs *after* a file-exploration or analysis phase:
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

This section states "Always use direct bash commands" for validation, but a few lines later it lists cases when mcpscripts-* tools are safe to use. To avoid contradictory guidance, consider rewording the rule to "Prefer bash for validation after >~5 minutes idle/long exploration; otherwise mcpscripts is fine" (aligning with the list below and with shared/go-make.md).

Suggested change
**Rule**: Always use direct `bash` commands for build, test, and validation steps — especially for any step that runs *after* a file-exploration or analysis phase:
**Rule**: Prefer direct `bash` commands for build, test, and validation steps that run *after* a long file-exploration or analysis phase (roughly 5+ minutes idle), since MCP transports may have timed out by then. For shorter, active sessions, `mcpscripts-*` tools are still fine when appropriate:

Copilot uses AI. Check for mistakes.
Comment on lines +171 to +174
"ruby/setup-ruby@v1.306.0": {
"repo": "ruby/setup-ruby",
"version": "v1.305.0",
"sha": "0cb964fd540e0a24c900370abf38a33466142735"
"version": "v1.306.0",
"sha": "c4e5b1316158f92e3d49443a9d58b31d25ac0f8f"
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

This PR’s title/description focuses on MCP inactivity timeouts and switching validation instructions to bash, but this file also bumps the pinned ruby/setup-ruby action version/SHA. If this pin update is intentional, please mention it in the PR description; otherwise consider splitting it into a separate PR to keep changes focused.

Copilot uses AI. Check for mistakes.
Comment on lines +171 to +174
"ruby/setup-ruby@v1.306.0": {
"repo": "ruby/setup-ruby",
"version": "v1.305.0",
"sha": "0cb964fd540e0a24c900370abf38a33466142735"
"version": "v1.306.0",
"sha": "c4e5b1316158f92e3d49443a9d58b31d25ac0f8f"
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

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

This PR’s title/description focuses on MCP inactivity timeouts and switching validation instructions to bash, but this file also bumps the pinned ruby/setup-ruby action version/SHA. If this pin update is intentional, please mention it in the PR description; otherwise consider splitting it into a separate PR to keep changes focused.

Copilot uses AI. Check for mistakes.
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-opt] Replace end-of-session MCP validation with bash calls to prevent ~5min inactivity timeouts

4 participants