Skip to content

Add retry logic to Copilot CLI installation#11283

Merged
pelikhan merged 3 commits intomainfrom
copilot/add-retry-logic-to-cli-install
Jan 22, 2026
Merged

Add retry logic to Copilot CLI installation#11283
pelikhan merged 3 commits intomainfrom
copilot/add-retry-logic-to-cli-install

Conversation

Copy link
Contributor

Copilot AI commented Jan 22, 2026

Copilot CLI installation fails intermittently when downloading the installer script from GitHub due to transient network errors.

Changes

  • Created actions/setup/sh/install_copilot_cli.sh: Shell script with 3-attempt exponential backoff retry (5s, 10s delays)
  • Updated pkg/workflow/copilot_srt.go: Replaced inline bash installation (14 YAML lines) with script invocation (2 lines)
  • Recompiled workflows: 86 workflows now use the retry-enabled installation

Before/After

Before (inline in generated YAML):

- name: Install GitHub Copilot CLI
  run: |
    curl -fsSL https://raw.githubusercontent.com/.../install.sh -o /tmp/copilot-install.sh
    sudo VERSION=0.0.389 bash /tmp/copilot-install.sh
    rm -f /tmp/copilot-install.sh
    copilot --version

After:

- name: Install GitHub Copilot CLI
  run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.389

The script follows existing retry patterns in the codebase (download_docker_images.sh) and is automatically deployed via the setup action.

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:

  • 4d63.com
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • cloud.google.com
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • codeberg.org
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • dev.gaijin.team
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • gitlab.com
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • go-simpler.org
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • go.augendre.info
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • go.googlesource.com
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • go.opentelemetry.io
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • go.uber.org
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • go.yaml.in
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • google.golang.org
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • gopkg.in
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • honnef.co
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)
  • mvdan.cc
    • Triggering command: /update-job-proxy /update-job-proxy s/,/_/g test sed -e ity_-_G4.pem -e test -e s/,/_/g /usr/local/sbin/--root sed -e ntrust.net_Premi/run/containerd/io.containerd.runtime.v2.task/moby/d59c5210c509f30c360aeca0d0e8f/usr/lib/networkd-dispatcher/routable.d/chrony-onoffline -e /usr/local/sbin/json -e s/,/_/g est test (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy ACCEPT ps /usr/lib/git-corREDACTED --sh�� er er /usr/bin/git ock %H %ct %D 3ccabc9770b1188f--unshallow /usr/bin/git cat-�� e/vcs/6e18cbff36266c74e48dd81b4b672026ac74fb69c8--stdin aa810b61a9c79d51363740d207bb46cf8e620ed5:go.mod e/git 848d042b3adcaa1c/usr/sbin/iptables /usr/lib/git-cor--wait e/git e/git (dns block)

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

Original prompt

Reference: https://github.com/githubnext/gh-aw/actions/runs/21248117870/job/61143169288#step:10:1

Add retry logic to install copilot cli

Move code to shell script file in actions/setup/sh


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.


Changeset

  • Type: patch
  • Description: Add retry logic to the GitHub Copilot CLI installer by moving installation into a retry-enabled shell script and invoking it from workflows. This prevents intermittent download failures during setup.

Ahoy! This treasure was crafted by 🏴‍☠️ Changeset Generator

- Create install_copilot_cli.sh with exponential backoff retry
- Update copilot_srt.go to use shell script instead of inline install
- Recompile all workflows to use new installation method

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Add retry logic to install copilot cli Add retry logic to Copilot CLI installation Jan 22, 2026
Copilot AI requested a review from pelikhan January 22, 2026 13:36
@pelikhan pelikhan added the smoke label Jan 22, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 22, 2026

🎬 THE ENDSmoke Claude MISSION: ACCOMPLISHED! The hero saves the day! ✨

@github-actions
Copy link
Contributor

github-actions bot commented Jan 22, 2026

🎉 Yo ho ho! Changeset Generator found the treasure and completed successfully! ⚓💰

@github-actions
Copy link
Contributor

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions
Copy link
Contributor

github-actions bot commented Jan 22, 2026

✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟

@github-actions
Copy link
Contributor

Smoke Test Results

PRs: #11293, #11269
✅ GitHub MCP | ✅ Serena MCP | ✅ Playwright | ✅ File Writing | ✅ Bash Tool

Status: PASS

@pelikhan

AI generated by Smoke Copilot

@github-actions
Copy link
Contributor

GitHub MCP (last 2 merged PRs: "[docs] Unbloat deterministic-agentic-patterns.md documentation", "Add bootstrap and worker metadata for zero-discovery campaign initialization"): ✅
Serena activate_project: ✅
Playwright github.com title contains "GitHub": ✅
Tavily search "GitHub Agentic Workflows": ✅
File write /tmp/gh-aw/agent/smoke-test-codex-21250561809.txt: ✅
Bash cat verification: ✅
Overall status: PASS

AI generated by Smoke Codex

@github-actions
Copy link
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

@github-actions
Copy link
Contributor

Smoke Test Results - Claude Engine

✅ GitHub MCP
✅ Serena MCP
✅ Playwright
✅ Tavily
✅ File Writing
✅ Bash

Status: PASS

Last 2 merged PRs:

AI generated by Smoke Claude

@pelikhan pelikhan marked this pull request as ready for review January 22, 2026 13:42
@pelikhan pelikhan merged commit 66a3867 into main Jan 22, 2026
83 checks passed
@pelikhan pelikhan deleted the copilot/add-retry-logic-to-cli-install branch January 22, 2026 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants