Skip to content

agentHost: bump Copilot SDK to 1.0.23-preview.4 - #342199

Closed
roblourens wants to merge 4 commits into
mainfrom
roblou/agents/bump-copilot-sdk-version-13d75160
Closed

roblourens wants to merge 4 commits into
mainfrom
roblou/agents/bump-copilot-sdk-version-13d75160

Conversation

@roblourens

@roblourens roblourens commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Summary

Upgrade the preview line from @github/copilot-sdk 1.0.23-preview.2 → 1.0.23-preview.4, bundling runtime 1.0.99-2 → 1.0.100-0, on desktop and remote. Stable latest is 1.0.22, so selecting it would downgrade the existing preview.

Draft: local validation of the merged revision passed; remote acceptance validation is in progress. This is not yet an accepted upgrade. No issue was filed for this maintenance change.

Change ledger

All 10 changed files against the merged main base are accounted for below. The merge of current origin/main was required to obtain the baseline duplicate-import build fix; its 62 changed files are upstream history, not additional SDK-upgrade changes.

Files/surface Exact change Why necessary Assessment
Root and remote package.json and package-lock.json (4 files) Pin SDK 1.0.23-preview.4 and runtime 1.0.100-0; regenerate SDK plus all eight optional platform packages in each lockfile Ship matching desktop/remote runtime and satisfy the explicit runtime-pin guard Expected upgrade; installed versions and both complete platform pin sets verified; no unrelated lock entries changed
Managed-settings schema snapshot (1 file under src/vs/platform/agentHost/test/node/__snapshots__) Add telemetry.headersProvider (shell-free executable/arguments, optional refresh interval, or false), require an endpoint for a provider object; extend exact case-sensitive MCP serverName names to dots/slashes; update reported runtime version Snapshot the actual runtime-owned schema rather than silently dropping new controls Expected additive schema adaptation, generated through the supported update flag; not a claim that schema snapshotting verifies enforcement
Assisted read approval, write approval, and write denial captures (3 YAML files under e2e/captures) Approval judge now receives transcript user message, assistant-role action context, final user-role policy instruction; adds shell-parsing-as-evidence wording; regenerate response text Runtime changed its permission-judge request packaging and prompt Expected wire adaptation after source review; unchanged claude-sonnet-5 model and native view/create inventory; unchanged 6/6/3 exchange counts. Requests, roles, history, tool wiring, actual reads/writes and prevented mutations remain asserted. No normalizer, exception, assertion, or gate was weakened by this PR
copilotAgent.test.ts (1 file) Stop/dispose the agent before removing its isolated user home in five quick-chat/scratch cleanup paths Azure macOS Node units and Linux Product Electron units exposed native log writes racing home deletion (ENOTEMPTY), which prevented disposal and cascaded into model-refresh timer leak failures Evidence-backed test lifecycle correction; all assertions retained, no delays/deletion retries/production behavior changes. Full owning suite 807 passed/1 existing pending; all six scratch tests passed in five fresh processes
e2e/README.md (1 file) Document approval-judge request invariants and runtime-owned schema controls Explain what the regenerated artifacts assert and their enforcement limits Directly related documentation

No full-model prompt baseline changed, no model set/tool inventory changed, and no known-issue gate was added or removed. The read fixture's assistant prose interprets the test sentinel as a placeholder; actual successful native read output is independently asserted, so prose is not used as an execution oracle.

Upstream prerequisites, not changes remaining in this PR

The initial source revision had a duplicate gitService helper property (TS1117, introduced by Ladislau Szomoru on 2026-10-16 in a7e1fc0) and duplicate agentHostBranchChangesetScope imports (Product-wide ESLint failure). The approved one-line property fix was initially included here; merging origin/main incorporated the same upstream corrections, so it no longer appears in the PR diff. Product build 485443 detected the duplicate import and was canceled along with obsolete supplemental build 485450.

The merge also incorporates upstream #341889, which intentionally changes managed Assisted behavior: an approving callback-local derived judge verdict authorizes one operation without another human prompt, while missing/unsupported verdicts require human confirmation and reusable grants remain forbidden. Upstream updates the existing E2E assertions accordingly and additionally requires exactly one native tool call per turn. That intentional behavior shift is from main, not a weakened SDK-upgrade assertion. The README now describes the current contract. This behavior deserves reviewer awareness; pre-merge results do not validate the merged implementation.

Provenance and focused risk review

Inspected/shipped runtime revisions (not alleged introducing commits):

  • Baseline cli-1.0.99-2: c9e96f9dbdbbce59d7e045d5abc3590136576cf7.
  • Candidate cli-1.0.100-0: f6f1d8977c6f1177d86b58a963a8f59c5238101d.

Complete local Git inventories cover 87 commits / 2,488 changed files; inventory completeness is not exhaustive patch-review depth. Reviewed the Node SDK source delta and focused runtime changes around approvals/sandbox, authentication, additional-directory hooks, managed plugin discovery, MCP OAuth/tool readiness, session/history/persistence restructuring, and native telemetry. Much of the runtime delta is an event/session leaf-crate extraction; other SDKs, CLI UI, tests and CI are not all shipped Agent Host behavior.

The judge request change is source-attributed to Tamás Szabó's 2026-10-16 commit 75d668a64aa (github/copilot-agent-runtime#27025), not to the release-tag commit. Native inference histogram names also change to gen_ai.client.inference.{duration,time_to_first_chunk,time_per_output_chunk}; non-inference operation duration remains separate. New SDK RPC/events are additive for this integration; fresh client type checking found no required production caller adaptation.

Local validation

Exact command / check Result
npm install at repository root Passed; nested remote installation ran. Existing npm audit warnings were reported; no unrelated audit fixes applied
Installed/locked root+remote version and optional-platform assertions Passed; SDK 1.0.23-preview.4, copilotCliVersion 1.0.100-0, all eight platform entries in each lockfile; no unrelated entry changed
npm run typecheck-client Passed both before and after the main merge; initial attempt failed only on pre-existing TS1117
npm run build-fast -- --client-only Passed; no compilation while tests used that output
npm run test-agent-host-e2e -- --jobs 2 Final merged revision 961 passed / 112 existing pending, all six final suite summaries present. Pre-merge complete run also passed; the initial attempt failed on stale judge requests
./scripts/test-integration.sh --runGlob '**/agentHost/test/node/{providerIntegration/*,e2e/providers/copilotPromptsE2E,e2e/providers/codexAgentHostLive,copilotSdkManagedSettings}.integrationTest.js' Final merged revision 105 passed / 7 pending. Includes all synthetic-provider entrypoints and complete prompt matrix; Codex live entrypoint remains behind existing credential gates
./scripts/test-integration.sh --run src/vs/platform/agentHost/test/node/e2e/providers/copilotManagedSettingsAgentHostE2E.integrationTest.ts Final strict owning batch 15 passed after resource refresh
env -u COPILOT_HOME -u COPILOT_CACHE_HOME ./scripts/test.sh --run src/vs/platform/agentHost/test/node/agentHostGitStateService.test.ts --reporter dot 89 passed
env -u COPILOT_HOME -u COPILOT_CACHE_HOME ./scripts/test.sh --run src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts --run src/vs/platform/agentHost/test/node/copilotSessionLauncher.test.ts --run src/vs/platform/agentHost/test/node/copilotManagedSettings.test.ts --run src/vs/platform/agentHost/test/node/agentHostGitStateService.test.ts --reporter dot Final merged revision 1,440 passed, including upstream callback-local Assisted approval contract
env -u COPILOT_HOME -u COPILOT_CACHE_HOME ./scripts/test.sh --run src/vs/platform/agentHost/test/node/copilotAgent.test.ts --reporter dot Cleanup-corrected revision 807 passed / 1 existing pending
env -u COPILOT_HOME -u COPILOT_CACHE_HOME ./scripts/test.sh --run src/vs/platform/agentHost/test/node/copilotAgent.test.ts --grep 'quick chat scratch directory' --reporter dot Five fresh executions, six passing tests each after cleanup-order correction; unchanged isolated reproduction before the fix also passed once, so that single retry did not establish absence of the race
npm run eslint -- src/vs/platform/agentHost/test/node/agentHostGitStateService.test.ts Passed
npm run agent-host:check-copilot-meta -- --source /Users/roblou/code/copilot-host Passed; initial invocation without mandatory --source reported usage rather than validating
git diff --check; normal signed/hooked commit Passed; precommit hygiene passed on all applicable indexed files

Generated artifacts used AGENT_HOST_UPDATE_AHP_SNAPSHOTS=1 for the schema and AGENT_HOST_REPLAY_RECORD=1 with exact assisted-test title selectors for captures. No fixture was hand-edited.

Telemetry evidence beyond short-schedule replay

  • Diagnostic-only removal of the test-owned OTEL_BSP_SCHEDULE_DELAY=100, followed by fresh output and env -u OTEL_BSP_SCHEDULE_DELAY ./scripts/test-integration.sh --run src/vs/platform/agentHost/test/node/e2e/providers/copilotOtelAgentHostE2E.integrationTest.ts: 22 passed with default batching both before and after the main merge, including session-correlated native spans, resource identity, content restrictions, warm collector/policy changes, restart and cold resume. The original short test schedule and compiled output were restored; this diagnostic change is not in the PR.
  • Standalone TypeScript native-runtime probe against a real loopback collector, synthetic local inference, no batch override: normal export observed at 10,405 ms (turn finished at 492 ms); shutdown-before-first-batch export observed at 267 ms (turn finished at 259 ms). Both produced 91 spans, exact session correlation and service.name=native-default-batch-probe, no captured prompt, no collector decode errors. These are native source-run measurements, not packaged Azure evidence or an export-latency guarantee.

Failed attempts and remaining risks

  • Initial additional batch: 103 passed / 7 pending / 2 failed (schema drift and Codex customization MCP inventory). The unchanged Codex case passed in a fresh process; the subsequent complete additional batch passed. This is an observed intermittent MCP-readiness failure, not a claimed SDK fix.
  • Assisted read local live recording attempt 1 on macOS arm64, host a7e1fc0, candidate SDK/runtime: missing second human confirmation (0 !== 1) because the second live response omitted the requested tool call. Identical unmodified attempt 2 passed, including both actual reads and human approvals. Failed recording was not promoted; no parent/child or baseline/candidate live bisect was performed, so this is disclosed model variability, not proven introduced/fixed behavior.
  • Strict owning batches initially stopped at the first stale assisted capture; the read/write/denial captures were regenerated in turn. One retry used stale copied resources and was rerun after refreshing output. Those failed commands are not counted as passing.
  • Existing gates and expected failures remain: native inherited user.name redaction, strict managed-model resume nondeterminism, unsupported-effort forwarding, and the documented cross-provider/platform gaps in KNOWN_ISSUES.md. Replay success does not prove arbitrary live behavior or resolve those defects.
  • Historical merged-revision Azure runs 485460 Product and 485461 supplemental CI failed the same quick-chat home-deletion race on Linux/macOS, then were canceled when publishing its fix. The failing does not discover workspace customizations from scratch cleanup order originated with Sandeep Somavarapu on 2026-09-10 in 4e32846. The Product APIScan pre-job readiness checkpoint failed once and passed after an unchanged stage retry; no check was bypassed. Product Linux DEB/RPM preparation/generation and native optional-binary checks had passed, but those partial results are not final-revision acceptance.
  • Historical merged-revision GitHub Linux Electron attempt 1 completed every full E2E summary and failed because tmpfs teardown reported target is busy. It was retried unchanged; that revision was later superseded by the unit-test cleanup fix. No assertion or tmpfs teardown guard was relaxed.

Remote acceptance gates

Current source SHA: b956bf02a1cd0eb8708f6cdea957298aea8b13b0. Only unit-test teardown ordering changed after 2c815943b51; its passing local production/E2E checks have unchanged relevant inputs. Remote acceptance runs execute the final SHA afresh.

  • GitHub workflow runs: Code OSS and the other final-SHA workflows are pending/running.
  • Full Azure pipeline 111, manual Product, VSCODE_PUBLISH=false, VSCODE_RELEASE=false, VSCODE_STEP_ON_IT=false, artifact sanity opt-in enabled: 485499, running at the exact source SHA above. Effective Product mode and full stage matrix will be checked again.
  • Independent fresh three-platform repeat: 485500, supplemental CI mode, not Product-packaging acceptance. Windows/Linux/macOS test jobs enabled; shipping artifacts are validated by the full Product run, not this reduced repeat.
  • Keep shipping matrix enabled: Windows x64/arm64; Linux x64/arm64/armhf and Snap; Alpine x64/arm64; macOS x64/arm64/universal; Web.
  • Verify effective VSCODE_CIBUILD=false, exact source SHA, all-platform Electron integration/E2E results, Linux x64/arm64 DEB/RPM generation and native dependency checks, shipping package outputs, and applicable signing/artifact sanity. Two fresh platform executions are required for lifecycle-sensitive acceptance; checkpoint-only retries are not new executions.
  • Publication/release remain disabled. Any signing/sanity stages omitted by the nonpublishing path will be stated explicitly.

(Written by Copilot)

Align desktop and remote SDK/runtime pins. Regenerate managed-settings and assisted-permission wire artifacts while preserving approval and filesystem assertions. Remove the pre-existing duplicate Git-state test helper property that blocked client type checking.

Co-authored-by: Copilot <[email protected]>
Copilot AI balanced review requested due to automatic review settings October 16, 2026 22:33
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Screenshot Changes

Base: 7d0f7c10 Current: ff8f58ce

Changed (1)

sessions/chatCompositeBar/OverflowingTabs/Light
Before After
before after

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.

🔵 Needs a closer look

Final full-suite replay and packaged cross-platform acceptance remain pending for the native runtime upgrade.

No open issues 🎉

1 file not reviewed
  • remote/package-lock.json: Generated file
What changed in this PR

Updates the Agent Host’s Copilot SDK and bundled runtime consistently across desktop and remote installations.

Changes:

  • Pins SDK 1.0.23-preview.4 and runtime 1.0.100-0, including all optional platform packages.
  • Refreshes assisted-permission captures, the managed-settings schema snapshot, and related documentation.
  • Removes a duplicate test-helper property that blocked type checking.

No actionable findings remain; final acceptance validation is still pending.

File Description
src/​vs/​platform/​agentHost/​test/​node/​e2e/​README.md Documents capture guarantees and runtime-owned schema controls.
src/​vs/​platform/​agentHost/​test/​node/​e2e/​captures/​copilotcli-managed-write-denial-prevents-mutation-under-assisted.yaml Refreshes write-denial judge exchange.
src/​vs/​platform/​agentHost/​test/​node/​e2e/​captures/​copilotcli-managed-write-approval-remains-one-time-under-assisted.yaml Refreshes one-time write-approval exchanges.
src/​vs/​platform/​agentHost/​test/​node/​e2e/​captures/​copilotcli-managed-read-approval-remains-one-time-under-assisted.yaml Refreshes one-time read-approval exchanges.
src/​vs/​platform/​agentHost/​test/​node/​agentHostGitStateService.test.ts Removes duplicate gitService property.
src/​vs/​platform/​agentHost/​test/​node/​__snapshots__/​Copilot_SDK_-_managed_settings_bundled_managedSettings_schema_matches_the_snapshot.schema.json Updates telemetry controls, MCP names, and runtime version.
remote/​package.json Updates remote SDK and runtime pins.
remote/​package-lock.json Locks matching remote platform packages.
package.json Updates desktop SDK and runtime pins.
package-lock.json Locks matching desktop platform packages.

Review effort: Balanced

roblourens and others added 2 commits October 16, 2026 15:49
Document the upstream callback-local Assisted approval contract after merging main to obtain its duplicate-import build fix. SDK pins and generated captures are unchanged.

Co-authored-by: Copilot <[email protected]>
Shut down the real Copilot client before deleting quick-chat scratch homes. Azure macOS and Linux tests exposed concurrent native log writes causing ENOTEMPTY, skipped disposal, and cascading retry-timer leak failures. Preserve every test assertion and do not add deletion retries or delays.

Co-authored-by: Copilot <[email protected]>
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.

2 participants