Fix missing Undici dependency in Copilot SDK workflows - #57057
Conversation
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The TypeScript SDK installation path still omits undici, allowing the reported failure to recur.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds the missing pinned undici dependency to generated Copilot SDK workflow installations, addressing #57049.
Changes:
- Adds
undici@6.28.0to default and inline Node.js SDK installs. - Refactors custom-command installation handling.
- Adds regression coverage and regenerates affected workflow locks.
File summaries
| File | Description |
|---|---|
pkg/workflow/copilot_engine_installation.go |
Updates SDK installation generation. |
pkg/workflow/copilot_engine_basic_test.go |
Tests the new dependency. |
.github/workflows/agent-performance-analyzer.lock.yml |
Regenerates SDK install command. |
.github/workflows/architecture-guardian.lock.yml |
Regenerates SDK install command. |
.github/workflows/breaking-change-checker.lock.yml |
Regenerates SDK install command. |
.github/workflows/ci-coach.lock.yml |
Regenerates SDK install command. |
.github/workflows/cli-consistency-checker.lock.yml |
Regenerates SDK install command. |
.github/workflows/code-scanning-fixer.lock.yml |
Regenerates SDK install command. |
.github/workflows/copilot-cli-deep-research.lock.yml |
Regenerates SDK install command. |
.github/workflows/copilot-opt.lock.yml |
Regenerates SDK install command. |
.github/workflows/copilot-pr-merged-report.lock.yml |
Regenerates SDK install command. |
.github/workflows/copilot-pr-nlp-analysis.lock.yml |
Regenerates SDK install command. |
.github/workflows/copilot-pr-prompt-analysis.lock.yml |
Regenerates SDK install command. |
.github/workflows/craft.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-action-setup-security-audit.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-ambient-context-optimizer.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-assign-issue-to-user.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-compiler-quality.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-experiment-report.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-formal-spec-verifier.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-geo-optimizer.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-github-docs-seo-optimizer.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-graft-intelligence.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-issues-report.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-malicious-code-scan.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-mcp-concurrency-analysis.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-model-inventory.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-model-resolution.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-pr-review-cursor.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-regression-audit-kiro.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-safe-output-integrator.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-schema-audit-cursor.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-secrets-analysis.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-security-observability.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-spdd-spec-planner.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-spec-coverage-kiro.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-syntax-error-quality.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-testify-uber-super-expert.lock.yml |
Regenerates SDK install command. |
.github/workflows/daily-workflow-updater.lock.yml |
Regenerates SDK install command. |
.github/workflows/dead-code-remover.lock.yml |
Regenerates SDK install command. |
.github/workflows/delight.lock.yml |
Regenerates SDK install command. |
.github/workflows/deployment-incident-monitor.lock.yml |
Regenerates SDK install command. |
.github/workflows/dev-hawk.lock.yml |
Regenerates SDK install command. |
.github/workflows/dictation-prompt.lock.yml |
Regenerates SDK install command. |
.github/workflows/docs-noob-tester.lock.yml |
Regenerates SDK install command. |
.github/workflows/draft-pr-cleanup.lock.yml |
Regenerates SDK install command. |
.github/workflows/eslint-miner.lock.yml |
Regenerates SDK install command. |
.github/workflows/firewall-escape.lock.yml |
Regenerates SDK install command. |
.github/workflows/firewall.lock.yml |
Regenerates SDK install command. |
.github/workflows/jsweep.lock.yml |
Fixes the reported workflow setup. |
.github/workflows/layout-spec-maintainer.lock.yml |
Regenerates SDK install command. |
.github/workflows/linter-miner.lock.yml |
Regenerates SDK install command. |
.github/workflows/mcp-inspector.lock.yml |
Regenerates SDK install command. |
.github/workflows/mergefest.lock.yml |
Regenerates SDK install command. |
.github/workflows/org-health-report.lock.yml |
Regenerates SDK install command. |
.github/workflows/plan.lock.yml |
Regenerates SDK install command. |
.github/workflows/pr-nitpick-reviewer.lock.yml |
Regenerates SDK install command. |
.github/workflows/pr-triage-agent.lock.yml |
Regenerates SDK install command. |
.github/workflows/q.lock.yml |
Regenerates SDK install command. |
.github/workflows/smoke-copilot-sdk.lock.yml |
Regenerates SDK smoke coverage. |
.github/workflows/smoke-copilot-sub-agents.lock.yml |
Regenerates SDK install commands. |
Review details
- Files reviewed: 63/63 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
| runtimeID: runtimeID, | ||
| stepName: "Install GitHub Copilot SDK (Node.js)", | ||
| command: workspaceCommandPrefix + "npm install --ignore-scripts --no-save @github/copilot-sdk@" + version, | ||
| command: workspaceCommandPrefix + "npm install --ignore-scripts --no-save @github/copilot-sdk@" + version + " " + copilotSDKWebFetchDependency, |
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅
|
|
✅ PR Code Quality Reviewer completed the code quality review.
|
|
✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft. Warning Threat Detection Engine Failure — The analysis engine could not complete. This is a tooling failure, not a security finding. What happenedThe threat detection engine failed to produce results. Review the workflow run logs for details.
|
|
✅ Test Quality Sentinel completed test quality analysis. Test Quality Sentinel skipped because pre-fetch PR data was unavailable: unable to fetch test file diff
|
|
Lean already. Ship. Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "ab.chatgpt.com"See Network Configuration for more information.
|
Comment MemoryNote This comment is managed by comment memory.It stores persistent context for this thread in the code block at the top of this comment.
|
There was a problem hiding this comment.
Verdict
No blocking issues found in the changed lines.
Reviewed themes
The change is narrowly scoped: the Node.js Copilot SDK install path now consistently includes the pinned undici dependency, and the regression test asserts that requirement. I checked the engine install helper and the added test coverage; I did not find a correctness, security, or maintainability regression in the modified code.
🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt54 · 29.4 AIC · ⌖ 7.31 AIC · ⊞ 23.5K
Comment /review to run again
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /tdd and /diagnosing-bugs — one inline comment requesting a missing regression test.
📋 Key Themes & Highlights
Key Themes
- Root cause addressed:
undici@6.28.0is now pinned alongside@github/copilot-sdkin bothgetCopilotSDKInstallSpecandgetInlineCopilotSDKInstallSpecvia the sharedcopilotSDKWebFetchDependencyconstant — clean, DRY fix. - Regression test added for the standard SDK path —
TestCopilotEngineInstallationStepsnow assertscopilotSDKWebFetchDependencyis present. - Inline-driver path not covered —
TestCopilotEngineInstallationWithInlineDriverdoes not assert that thenodeinline driver install command includesundici, leavinggetInlineCopilotSDKInstallSpecwithout a regression guard (see inline comment). - Refactor is clean: the duplicate
if isFirewallEnabledblock extracted intogetCustomCopilotCommandInstallationStepsimproves readability with no observable behaviour change. - Lock-file regeneration: all 63 lock files correctly updated — mechanical diff, no review needed.
Positive Highlights
- ✅ Shared constant
copilotSDKWebFetchDependencyavoids duplicate version strings across both install specs. - ✅ PR description links directly to the failing issue and includes the exact generated
npm installcommand for traceability. - ✅ No changes to public API surface; firewall-path and non-firewall-path logic preserved correctly.
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet46 · 44.5 AIC · ⌖ 15.2 AIC · ⊞ 7.6K
Comment /matt to run again
There was a problem hiding this comment.
Impeccable Review — harden + audit
Change type: bug_fix — all changes are in generated .lock.yml files, uniformly adding undici@6.28.0 alongside @github/copilot-sdk@1.0.11 in every Install GitHub Copilot SDK step.
Findings
| Area | Assessment |
|---|---|
| Correctness | ✅ Change is mechanically consistent — identical substitution across all lock files |
| Security | ✅ undici@6.28.0 is a peer dependency of the Copilot SDK; pinning an explicit version is safer than allowing npm to resolve an arbitrary transitive version |
| Reliability | ✅ No conditional or partial installs; all affected workflows get the same fix |
| Edge states | No error/empty/loading paths changed |
Notes
- These are generated lock files. No source workflow markdown (
.md) changes are included in the diff. If theundicidependency is needed permanently, the root cause fix in the workflow source and amake recompilewould keep lock files in sync with source — worth confirming before removing the WIP flag. - No blocking issues found.
🧵 Reviewed using Impeccable skills by Impeccable Skills Reviewer · copilot · sonnet46 · 19.6 AIC · ⌖ 14.6 AIC · ⊞ 6.2K
|
✅ Great work, Copilot! This PR addresses the jsweep Copilot SDK failure caused by the missing What's working well:
Status: This PR is ready for review. As a core team contribution from the Copilot coding agent, it follows the project's agentic development model outlined in CONTRIBUTING.md. Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "github.com"See Network Configuration for more information.
|
|
@copilot run pr-finisher skill |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
The jsweep Copilot SDK run failed before agent execution because its web-fetch driver could not resolve
undici.SDK setup
undici@6.28.0alongside@github/copilot-sdkfor Node-based SDK and inline-driver setups.Regression coverage