Skip to content

Prefer Actions toolcache Copilot CLI before release download#35992

Merged
pelikhan merged 11 commits into
mainfrom
copilot/integrate-actions-toolcache-lookup
May 31, 2026
Merged

Prefer Actions toolcache Copilot CLI before release download#35992
pelikhan merged 11 commits into
mainfrom
copilot/integrate-actions-toolcache-lookup

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 30, 2026

This change makes the Copilot installer use a compatible copilot-cli already present in the Actions toolcache before falling back to the current release-download path. The goal is to avoid unnecessary network fetches while preserving the existing verified install flow when no cache entry is available.

  • Installer behavior

    • Add a toolcache lookup in actions/setup/sh/install_copilot_cli.sh before any download attempt.
    • Match cached binaries by platform, architecture, and requested version.
    • For latest, select the highest compatible cached version.
  • Cache activation

    • On cache hit, prepend the cached bin directory to PATH.
    • Export the cached path through GITHUB_PATH for downstream steps.
    • Outside GitHub Actions, install a small wrapper so copilot resolves consistently without copying the cached binary.
  • Fallback semantics

    • Keep the existing release tarball download + SHA256 verification path unchanged for cache misses.
    • Preserve current behavior for explicit version installs and unsupported environments.
  • Regression coverage

    • Add focused coverage for the cache-hit path to ensure the installer skips curl and exposes the cached binary correctly.
# New flow inside install_copilot_cli.sh
if CACHED_COPILOT_BIN="$(find_cached_copilot_bin "$REQUESTED_VERSION")"; then
  activate_cached_copilot_bin "$CACHED_COPILOT_BIN"
  copilot --version
  exit 0
fi

# Existing verified download path remains the fallback

Changeset

  • Type: patch
  • Description: Prefer an Actions toolcache Copilot CLI before downloading the release tarball.

Generated by 📋 Changeset Generator for issue #35992 · gpt54 3.3M ·



✨ PR Review Safe Output Test - Run 26698359909

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · opus48 887.5K ·

Copilot AI and others added 3 commits May 30, 2026 20:44
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title Use Copilot toolcache before download Prefer Actions toolcache Copilot CLI before release download May 30, 2026
Copilot AI requested a review from pelikhan May 30, 2026 20:47
@pelikhan pelikhan marked this pull request as ready for review May 30, 2026 20:49
Copilot AI review requested due to automatic review settings May 30, 2026 20:49
@pelikhan
Copy link
Copy Markdown
Collaborator

@salmanmkc

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot add more logging

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

PR Code Quality Reviewer completed the code quality review.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

🧪 Test Quality Sentinel completed test quality analysis.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

Design Decision Gate 🏗️ completed the design decision gate check.

No ADR enforcement needed: PR #35992 does not have the 'implementation' label and has 64 new lines of code in business logic directories (≤100 threshold). No custom config present.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

@github-actions github-actions Bot mentioned this pull request May 30, 2026
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

This PR updates the Copilot CLI installer to prefer an already-cached copilot-cli from the GitHub Actions toolcache (matching arch/version, and choosing the highest version for latest) before falling back to the existing verified release download + SHA256 validation flow.

Changes:

  • Add toolcache discovery/activation logic to actions/setup/sh/install_copilot_cli.sh prior to any network download.
  • Keep the existing release tarball download + checksum verification as the cache-miss fallback.
  • Add a Go unit test to validate the cache-hit path skips curl and exports the cached bin directory via GITHUB_PATH.
Show a summary per file
File Description
actions/setup/sh/install_copilot_cli.sh Adds toolcache lookup/activation before the existing verified download fallback.
pkg/cli/install_copilot_cli_test.go Adds regression coverage ensuring cache hits avoid downloads and export the cached path.

Copilot's findings

Tip

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

  • Files reviewed: 2/2 changed files
  • Comments generated: 6

Comment on lines 22 to +26
VERSION="${1:-}"
COPILOT_REPO="github/copilot-cli"
INSTALL_DIR="/usr/local/bin"
COPILOT_DIR="/home/runner/.copilot"
COPILOT_TOOLCACHE_MAX_DEPTH=4
Comment on lines +145 to +147
candidate_version="$(basename "$(dirname "$(dirname "$candidate_dir")")")"
candidate_version_normalized="$(normalize_version "$candidate_version")"

Comment on lines +208 to +216
echo "Verifying cached Copilot CLI installation..."
if command -v copilot >/dev/null 2>&1; then
copilot --version
echo "✓ Copilot CLI installation complete"
exit 0
fi

echo "ERROR: Cached Copilot CLI activation failed - command not found"
exit 1
Comment on lines 22 to +26
VERSION="${1:-}"
COPILOT_REPO="github/copilot-cli"
INSTALL_DIR="/usr/local/bin"
COPILOT_DIR="/home/runner/.copilot"
COPILOT_TOOLCACHE_MAX_DEPTH=4
Comment on lines +145 to +147
candidate_version="$(basename "$(dirname "$(dirname "$candidate_dir")")")"
candidate_version_normalized="$(normalize_version "$candidate_version")"

Comment on lines +208 to +216
echo "Verifying cached Copilot CLI installation..."
if command -v copilot >/dev/null 2>&1; then
copilot --version
echo "✓ Copilot CLI installation complete"
exit 0
fi

echo "ERROR: Cached Copilot CLI activation failed - command not found"
exit 1
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 100/100 — Excellent

Analyzed 1 test: 1 design (behavioral contract), 0 implementation, 0 guideline violations.

📊 Metrics & Test Classification (1 test analyzed)
Metric Value
New/modified tests analyzed 1
✅ Design tests (behavioral contracts) 1 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 1 (100%)
Duplicate test clusters 0
Test inflation detected No (64 test lines / 159 production lines ≈ 0.4:1)
🚨 Coding-guideline violations 0

Test Classification Details

Test File Classification Issues Detected
TestInstallCopilotCLIScriptUsesToolcacheBeforeDownload pkg/cli/install_copilot_cli_test.go:15 ✅ Design None

Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 1 test — unit (//go:build !integration)
  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%).

The single new test is an excellent end-to-end behavioral contract test. It exercises the real install_copilot_cli.sh script, verifies the toolcache-hit path produces the expected log output, confirms curl is never invoked (negative assertion), and checks that the cached bin directory is appended to GITHUB_PATH. All assertions include descriptive messages, the required //go:build !integration build tag is present, and no mock libraries are used. The test-to-production ratio (0.4:1) shows no inflation.

📖 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.

🧪 Test quality analysis by Test Quality Sentinel · sonnet46 1.2M ·

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: 100/100. Test quality is excellent — 0% of new tests are implementation tests (threshold: 30%).

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.

Skills-Based Review 🧠

Applied /tdd — requesting changes on correctness and test-coverage gaps.

📋 Key Themes & Highlights

Key Themes

  • Correctness risk: Activation failure exits 1 instead of falling through to the download path, violating the PR's own "preserve existing behavior" goal.
  • Test coverage gaps: 4 of the 5 new code paths are untested (latest resolution, arch filtering, cache miss, wrapper-install branch).
  • Build-tag mismatch: The test file spawns real shell processes but carries !integration, which misclassifies it as a unit test.
  • version_is_greater edge cases: Pre-release suffixes (1.2.3-beta) will cause bash 10# arithmetic to fail; this is unverified by tests.

Positive Highlights

  • ✅ Clean separation into focused helper functions (find_cached_copilot_bin, activate_cached_copilot_bin, etc.)
  • ✅ Portable version comparison without sort -V — good cross-platform awareness
  • ✅ Existing verified download + SHA256 path is left structurally unchanged
  • ✅ Good use of RUNNER_TOOL_CACHE with sensible fallback roots

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · sonnet46 1.6M


cached_copilot_dir="$(dirname "$cached_copilot_bin")"
export PATH="${cached_copilot_dir}:$PATH"

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.

[/tdd] Cache-activation failure exits 1 instead of falling through to the download path — a corrupt or missing toolcache entry becomes a hard build failure rather than a graceful fallback.

💡 Suggestion

Change the hard exit 1 to a warn-and-fallthrough so the existing verified download path remains the safety net:

if CACHED_COPILOT_BIN="$(find_cached_copilot_bin "$REQUESTED_VERSION")"; then
  echo "Using cached GitHub Copilot CLI from ${CACHED_COPILOT_BIN}"
  activate_cached_copilot_bin "$CACHED_COPILOT_BIN"

  if command -v copilot >/dev/null 2>&1; then
    copilot --version
    echo "✓ Copilot CLI installation complete"
    exit 0
  fi

  echo "WARNING: Cached Copilot CLI activation failed — falling back to release download"
  # fall through
fi

The PR description says "preserve existing behavior" — a hard exit 1 on activation failure violates that intent.

@@ -0,0 +1,64 @@
//go:build !integration
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.

[/tdd] Build tag is !integration but the test spawns a real bash process and performs real filesystem I/O — these are integration-test characteristics by this repo's conventions.

💡 Suggestion

Change the build tag to //go:build integration so it runs with make test / -tags integration and does not inflate make test-unit runtime:

(go/redacted):build integration

If you intentionally want it in the unit-test suite, add a brief comment explaining why.

wd, err := os.Getwd()
require.NoError(t, err, "Failed to get working directory")

projectRoot := filepath.Join(wd, "..", "..")
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.

[/tdd] Only the exact-version cache-hit path (with GITHUB_PATH set) is tested. Three important new behaviors have no coverage: latest picks the highest version, arch mismatch is skipped, and a cache miss falls through to the download.

💡 Suggested additional test cases
  1. latest picks highest version — create two cached entries (1.2.3 and 1.10.0), call the script with no version arg, assert 1.10.0 is activated.
  2. Arch mismatch is filtered — place a binary under arm64/bin/copilot while the runner resolves to x64; assert curl is invoked (download path) and not the cache-hit message.
  3. Cache miss falls through — empty toolcache dir; assert the script reaches the download step (e.g. curl is invoked, or the script exits non-zero without emitting the cache-hit message).

# Compare dotted numeric versions without relying on GNU-specific sort -V.
# Returns success only when the left version is strictly greater than the right version.
version_is_greater() {
local left="${1:-0}"
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.

[/tdd] version_is_greater has no tests for edge inputs: single-component versions (1 vs 1.0), pre-release suffixes (1.2.3-beta), and leading-zero segments (08) where the 10# base coercion is load-bearing.

💡 Cases to verify
# Should be true
version_is_greater "1.10.0" "1.9.0" && echo ok || echo FAIL
# Should be false (equal)
version_is_greater "1.2.3" "1.2.3" && echo FAIL || echo ok
# Should be false (less)
version_is_greater "1.2.0" "1.2.3" && echo FAIL || echo ok
# Edge: pre-release suffix — 10# will fail: "10#3-beta" is a syntax error
version_is_greater "1.2.3-beta" "1.2.3"

Pre-release suffixes cause a bash arithmetic error with 10#. Consider stripping the suffix with ${part%%-*} or documenting that pre-release versions are unsupported in the toolcache path.

done

if [ -n "$best_candidate" ]; then
printf '%s\n' "$best_candidate"
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.

[/tdd] The activate_cached_copilot_bin wrapper-install branch (when GITHUB_PATH is unset) calls sudo install but has zero test coverage — a regression here would go undetected.

💡 Suggestion

Add a test scenario that omits GITHUB_PATH from the environment, provides a writable INSTALL_DIR override, and asserts the wrapper file was created at the expected path. This is the only code path exercising the sudo install line.

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.

REQUEST_CHANGES — two correctness bugs and a test coverage gap need addressing before this merges.

### Blocking issues (2)
  1. Hard exit 1 on cache-activation failure (line 216) — a corrupted or non-executable cached binary causes a permanent CI failure with no self-healing. The download+verify path is never reached. Fix: fall through with a warning instead of exiting.

  2. find skips executable-permission check (line 164) — a non-executable toolcache entry passes the find filter, reaches copilot --version, fails with Permission denied, and hits the same hard exit 1. Fix: add -perm /111 to the find call.

### Non-blocking (1)
  • Test coverage covers only the GITHUB_PATH happy path; the exit 1 branch, the local-wrapper path, and the cache-miss fallthrough are all unexercised.

🔎 Code quality review by PR Code Quality Reviewer · sonnet46 2M

fi

echo "ERROR: Cached Copilot CLI activation failed - command not found"
exit 1
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.

Hard exit 1 on cache-activation failure breaks CI with no recovery: if command -v copilot fails after a cache hit (e.g., the cached binary is not executable), the script dies permanently — the download-and-verify path is never attempted.

💡 Suggested fix

Replace the hard exit 1 with a warning that falls through to the download path:

  echo "WARNING: Cached Copilot CLI activation failed — falling back to download"
fi

# download path continues here...

Any corrupted or permission-stripped toolcache entry currently causes a permanent CI failure on every run until the cache is manually purged. The download path already performs SHA256 verification, so there is no safety tradeoff.

best_candidate="$candidate"
best_version="$candidate_version_normalized"
fi
done < <(find "${tool_cache_root}/copilot-cli" -maxdepth "${COPILOT_TOOLCACHE_MAX_DEPTH}" -type f -path '*/bin/copilot' 2>/dev/null)
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.

find does not check execute permission — a non-executable cached binary causes hard failure at line 210: copilot --version will produce a confusing Permission denied error and the script will exit 1 via the activation-failure path rather than falling through to a fresh download.

💡 Suggested fix

Add -perm /111 to the find invocation:

done < <(find "${tool_cache_root}/copilot-cli" \
  -maxdepth "${COPILOT_TOOLCACHE_MAX_DEPTH}" \
  -type f \
  -perm /111 \
  -path '*/bin/copilot' 2>/dev/null)

This is especially relevant on self-hosted runners where toolcache entries may have been extracted without preserving execute bits.


githubPathContent, err := os.ReadFile(githubPath)
require.NoError(t, err, "Expected the script to append the cached bin dir to GITHUB_PATH")
assert.Contains(t, string(githubPathContent), toolcacheBin, "cached Copilot bin directory should be exported for later steps")
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.

Test only covers the happy-path GITHUB_PATH branch; the cache-activation-failure path is untested: the test sets GITHUB_PATH, so activate_cached_copilot_bin always returns after writing to it. The exit 1 branch (line 216 in the script) is never exercised, and neither is the local-wrapper path used when GITHUB_PATH is absent.

💡 Missing test cases
  1. Activation failure → hard exit: call the script with RUNNER_TOOL_CACHE pointing at a toolcache entry whose copilot binary is not executable (mode 0644); assert the script exits non-zero.
  2. Wrapper path (no GITHUB_PATH): call the script without GITHUB_PATH set and verify a wrapper is installed to INSTALL_DIR.
  3. Cache miss → falls through to download: a toolcache with no copilot entry should attempt curl (assert curl.log exists).

Without case 1 in particular, the hard-exit behavior at line 216 is both untested and — as raised in another comment — likely wrong.

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.

Me agree. Wrapper-path and failure-path coverage still missing here.

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

📰 BREAKING: Report filed by Smoke Copilot · gpt54 12.3M

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.

Me agree. Wrapper-path and failure-path coverage still missing here.

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

📰 BREAKING: Report filed by Smoke Copilot · gpt54 12.3M

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot review all comments and reviews from copilot and GitHub-actions actor. Resolve.

Copilot AI and others added 2 commits May 30, 2026 21:02
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 30, 2026

@copilot add more logging

Added logging in two commits:

  • find_cached_copilot_bin now logs each toolcache root checked (found/skipped), every candidate discovered with its version and arch, the reason for any mismatch, and which entry was selected as best. All these messages go to stderr (>&2) so the command-substitution caller still receives only the binary path on stdout.
  • activate_cached_copilot_bin logs the PATH prepend, the GITHUB_PATH export (or wrapper install path when outside Actions).
  • The cache-hit verification logs the PATH-resolved copilot binary and calls --version through that resolved path to confirm PATH activation worked correctly.

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot merge main and recompile

Copilot AI and others added 2 commits May 30, 2026 23:48
…ions-toolcache-lookup

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

Copilot AI commented May 30, 2026

@copilot merge main and recompile

Merged main and recompiled all workflows successfully. All 236 workflows compiled with 0 errors, and tests pass. Commit aaa9664 includes the merge and 11 updated lock files.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

🚀 Smoke Gemini MISSION COMPLETE! Gemini has spoken. ✨

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

🚀 Smoke Pi MISSION COMPLETE! Pi delivered. 🥧

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

💫 TO BE CONTINUED... Smoke Claude failed to deliver outputs! Our hero faces unexpected challenges...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

🚀 Smoke Antigravity MISSION COMPLETE! Antigravity has spoken. ✨

@github-actions
Copy link
Copy Markdown
Contributor

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

@github-actions github-actions Bot removed the smoke label May 30, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Agent Container Tool Check

Tool Status Version
bash 5.2.21
sh available
git 2.54.0
jq 1.7
yq 4.53.2
curl 8.5.0
gh 2.92.0
node 24.16.0
python3 3.13.13
go 1.24.13
java 10.0.300
dotnet 10.0.300

Result: 12/12 tools available ✅

Overall Status: PASS

🔧 Tool validation by Agent Container Smoke Test · sonnet46 520.8K ·

@github-actions
Copy link
Copy Markdown
Contributor

Smoke Test Results:

  1. ✅ GitHub MCP Testing
  2. ✅ Web Fetch Testing
  3. ✅ File Writing Testing
  4. ✅ Bash Tool Testing
  5. ❌ Build gh-aw

Overall status: FAIL

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • localhost

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "localhost"

See Network Configuration for more information.

Smoke Gemini — Powered by Gemini ·

@github-actions
Copy link
Copy Markdown
Contributor

Commit pushed: 1ce1788

Generated by Changeset Generator · gpt54 3.3M

@github-actions
Copy link
Copy Markdown
Contributor

Comment Memory

Quiet terminal dawns
Signals drift through green-lit tools
Checks leave footprints light

Note

This comment is managed by comment memory.

It stores persistent context for this thread in the code block at the top of this comment.
Edit only the text inside the backtick fences; workflow metadata and the footer are regenerated automatically.

Learn more about comment memory

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

🔮 The oracle has spoken through Smoke Codex · gpt54 12.7M ·

@github-actions
Copy link
Copy Markdown
Contributor

💥 Smoke Test: Claude — Run 26698359909

Core #1-13: 1✅ 2❌(mcpscripts-gh unknown→alt✅) 3✅ 4✅ 5✅ 6✅ 7✅ 8✅ 9✅ 10✅ 11✅ 12✅ 13✅
PR Review #14-20: 14✅ 15✅ 16✅ 17✅ 18✅ 19✅ 20⚠️(skipped)

Overall: PARTIAL ⚠️

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · opus48 887.5K ·

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.

💥 Automated smoke test review - all systems nominal!

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · opus48 887.5K

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.

Smoke review done. Build good. Two small risk spots on executable filtering and wrapper-path coverage.

Warning

Firewall blocked 6 domains

The following domains were blocked by the firewall during workflow execution:

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

📰 BREAKING: Report filed by Smoke Copilot · gpt54 12.3M

best_candidate="$candidate"
best_version="$candidate_version_normalized"
fi
done < <(find "${tool_cache_root}/copilot-cli" -maxdepth "${COPILOT_TOOLCACHE_MAX_DEPTH}" -type f -path '*/bin/copilot' 2>/dev/null)
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.

Small trap here. find may pick non-executable cached binary. Add -perm /111 so bad cache falls through clean.

cmd := exec.Command("bash", installScript, "1.2.3")
cmd.Env = append(os.Environ(),
"RUNNER_TOOL_CACHE="+filepath.Join(tempDir, "toolcache"),
"GITHUB_PATH="+githubPath,
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.

Test walks only GITHUB_PATH road. Missing wrapper path when GITHUB_PATH is absent, so sudo install branch can break unseen.

best_candidate="$candidate"
best_version="$candidate_version_normalized"
fi
done < <(find "${tool_cache_root}/copilot-cli" -maxdepth "${COPILOT_TOOLCACHE_MAX_DEPTH}" -type f -path '*/bin/copilot' 2>/dev/null)
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.

Small trap here. find may pick non-executable cached binary. Add -perm /111 so bad cache falls through clean.

cmd := exec.Command("bash", installScript, "1.2.3")
cmd.Env = append(os.Environ(),
"RUNNER_TOOL_CACHE="+filepath.Join(tempDir, "toolcache"),
"GITHUB_PATH="+githubPath,
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.

Test walks only GITHUB_PATH road. Missing wrapper path when GITHUB_PATH is absent, so sudo install branch can break unseen.

@github-actions
Copy link
Copy Markdown
Contributor

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

@github-actions
Copy link
Copy Markdown
Contributor

@copilot review all comments and address unresolved review feedback.

Run: https://github.com/github/gh-aw/actions/runs/26698549505

Generated by 👨‍🍳 PR Sous Chef · gpt54 6.8M ·

@github-actions
Copy link
Copy Markdown
Contributor

@copilot refresh the branch and rerun checks, then summarize any remaining blockers.

Run: https://github.com/github/gh-aw/actions/runs/26698549505

Generated by 👨‍🍳 PR Sous Chef · gpt54 6.8M ·

@pelikhan pelikhan merged commit 2b55259 into main May 31, 2026
1 check passed
@pelikhan pelikhan deleted the copilot/integrate-actions-toolcache-lookup branch May 31, 2026 00:21
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.

3 participants