Skip to content

[pull] main from microsoft:main - #1652

Merged
pull[bot] merged 32 commits into
code:mainfrom
microsoft:main
Aug 31, 2026
Merged

[pull] main from microsoft:main#1652
pull[bot] merged 32 commits into
code:mainfrom
microsoft:main

Conversation

@pull

@pull pull Bot commented Aug 31, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

SimonSiefke and others added 30 commits August 28, 2026 11:04
Compare URI values semantically when evaluating MCP server definitions so lazy URI caches do not stop live servers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 02df8817-61e4-4a9f-8b74-f30a434897b0
* Make repeated unit test startup cheaper

Check the cached Electron version and executable directly in the unit test launchers, while retaining an explicit forced prelaunch path for packaging changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Restore Windows test dependency bootstrap

Keep the fresh-checkout npm install behavior before applying the faster Electron cache check.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Align Windows test dependency bootstrap

Use npm install when node_modules is missing, matching the long-standing Unix unit-test launcher behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Keep unit test launchers dependency-neutral

Restore the historical expectation that dependencies are installed before running tests, and use the shared npm Electron entry point on Windows and Unix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
automations: feat: remove delete action from run history rows

Temporarily hide the Delete affordance from Automation run-history
rows (both inline toolbar and context menu) while the AHP
run-deletion protocol is not yet available. Archive/Unarchive, Stop,
and read/unread actions remain unchanged. Ordinary Sessions surfaces
are unaffected.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 962fd6a6-f98e-4fe8-a288-bb3d8c257df3
Follow model refreshes queued during authentication before validating a restored model selection, and start discovery when no refresh is active.
Read paginated histories through thread/turns/list while retaining the legacy thread/read fallback. Fixes #331379.
….0.82-0 (#333198)

* chore: bump @github/copilot-sdk to 1.0.13-preview.2 and @github/copilot to 1.0.82-0

* Migrate agentHost to new Copilot SDK permission-mode API

SDK 1.0.13-preview.2 renamed PermissionAllowAllMode->PermissionMode
('on/auto/off'->'allow-all/assisted/manual'), PermissionAutoApproval->
PermissionAssistedApproval, permissions.setAllowAll->setMode, and
promptRequest.autoApproval->assistedApproval, and added the
extension-env-access permission kind. Migrate the agentHost integration
and its unit tests to the new contract per the product build TS errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* build: drop stale libm GLIBC_2.27 rpm dep after SDK/CLI bump

Bumped @github/copilot native payload no longer requires libm.so.6(GLIBC_2.27) on x86_64/aarch64; the reference rpm dep lists diverged from generated deps, failing 'Prepare rpm package' per product build 467750.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: elide runtime-authored change-notice preamble in capi-replay projection

CLI 1.0.81-10 now prepends a `<tools_changed_notice>` block to the user
message when tools change between turns (e.g. `exit_plan_mode` is dropped
after plan approval). The Agent Host E2E capture for planning-mode auto-approve
predates this behavior, so capi-replay's request #5 no longer matched a live
run against the newer CLI even though the host composed an identical turn.

These change-notice blocks (`<tools_changed_notice>`, `<mode_changed_notice>`,
`<working_directory_changed>`, `<additional_directories_changed>`) are composed
by the `@github/copilot` runtime from session state, not host-authored prompt
structure, so they belong in the projection's symmetric elision set alongside
the model id and tool_result payload. Elision runs before path elision so the
intact `</…>` closing tag is matched rather than being rewritten into a path
placeholder first.

Fixtures are not edited; the model-changes fixture that records a
`<tools_changed_notice>` model-switch block strips symmetrically on both sides
and still matches.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agentHost: handle Copilot MCP sampling requests

Register sampling event interest, reject pending requests through the SDK UI RPC, and release the registration with the session lifecycle. This restores the canonical MCP cancellation behavior with runtime 1.0.81-12.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: update Copilot runtime expectations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: vs-code-engineering[bot] <122617954+vs-code-engineering[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Aaron Munger <aamunger@microsoft.com>
* sessions: fix new session context attachments

Show and correctly size issue, pull request, and folder icons in new-session attachment pills. Persist context-only drafts and scope GitHub context browsing to the selected repository.

Fixes #333516\nFixes #333523\nFixes #333564\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: address new session attachment feedback

Preserve GitHub context icon colors, prevent sent prompts from being re-persisted while attachments clear, and initialize the send button after restoring a retained input model.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: fix send button after reload

Defer agent-host model change notifications until the language model catalog has settled, so restored drafts can resolve their pending model and become sendable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: preserve new session drafts on reload

Save draft input during the storage lifecycle and allow Auto-capable providers to send while a remembered explicit model is still hydrating.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix deferred model event disposal

Initialize lazy event subscriptions before disposal and update the reviewed new-session screenshot baselines.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* automations: docs: specify ownership and migration

Document multi-host routing, persistence, authority transitions, legacy migration, archive invariants, and concurrency guarantees in a dedicated Sessions specification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 379fd98b-a939-4729-bae5-63708fb1e2b6

* automations: docs: complete authority state transitions

Document configuration, capability, connection-clear, and rebind paths represented by ReconnectableAgentHostAutomationStore.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 379fd98b-a939-4729-bae5-63708fb1e2b6

---------

Copilot-Session: 379fd98b-a939-4729-bae5-63708fb1e2b6
* chat: do not notify when a session replays its history

Opening a session that had already finished showed a "Session finished." OS
notification. Loading a session adds each historical request to the model and then
completes it, which is the same path that live work uses. The notifier saw that as
a response that had just finished.

- Notifies only when the last response of the session carries a completion time
  that is later than the moment this window started to watch the session. A
  replayed response keeps the completion time it originally had, or has none at
  all when that time was never recorded.
- Replaces the earlier check for the presence of a request, which was true for a
  session that only replayed its history.
- Adds a test for a replayed session, with and without a recorded completion time.

Fixes #333250

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: stamp the completion time of a streamed turn that finishes while watched

Addresses the Copilot review comment on PR #333582.

A streamed remote or agent host turn shared the completion path with history
replay, so it finished without a completion time. The notifier treats a response
with no completion time as replayed history, which would have stopped it from
telling the user that a session it was watching had finished.

- Completes a response that finishes while the session is watched with the
  current time. A response that only replays history keeps the time it originally
  finished, or none when that time was never recorded.
- Treats a session that is already complete when it loads as replayed history,
  and a session that has been seen working as one that finishes while watched.
- Adds a test for a streamed turn that finishes after the session loads.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: derive live completion from the completion state transition

Replaces the flag that recorded whether a streamed session had been seen working.
The flag was set from the completion state but named for streamed progress, it
lived in the branch that tracks cancellation, and it needed a manual reset.

- Compares the completion state against the previous observation instead. A
  session that is already complete when first observed finalizes replayed history,
  and a session that completes after it was seen running finished while watched.
- Leaves the cancellation backstop branch unchanged.
- Adds a test for a streamed session that loads already complete, which no test
  covered before.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: remove the real timers from the chat window notifier tests

The tests waited on the real notification delays, which made the suite slow and
sensitive to the speed of the machine.

- Makes the idle delay and the background window delay overridable, as the
  sessions window notifier already does.
- Sets both delays to zero in the tests and drains the timers instead of waiting
  for them. The suite now takes 10ms rather than 3s.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* nes: test: cover Windows paths with spaces

Add Windows-only assertions for custom patch prediction and response resolution so the Copilot Windows CI job can validate issue #325491 with native URI behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c3a3ef53-5b3f-4816-a695-a90acc9caa11

* nes: fix: normalize Windows workspace path casing

Compare local Windows file and notebook paths case-insensitively when stripping the workspace root. URI serialization lowercases the document drive letter while the workspace URI can retain uppercase casing, which leaked an absolute path into NES predictions.

Fixes #325491

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c3a3ef53-5b3f-4816-a695-a90acc9caa11

* nes: fix: narrow Windows path normalization

Normalize only the drive-letter segment so case-sensitive virtual notebook paths remain distinct. Extend Windows coverage for file-backed and virtual notebook cells, and make the response test observe active-document progressive reveal.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c3a3ef53-5b3f-4816-a695-a90acc9caa11

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c3a3ef53-5b3f-4816-a695-a90acc9caa11
* chat: persist remote connection sharing

Restores the user's remote connection sharing choice after the Agent Window starts.

- Stores the enabled sharing choice in application-scoped user storage.
- Restores tunnel hosting after startup when the saved choice is enabled.
- Clears the saved choice before stopping the tunnel, including when stop fails.
- Adds coverage for restoration and failed tunnel shutdown.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: refine remote connection sharing

Corrects restoration and restart behavior for saved remote connection sharing.

- Uses existing authentication only when sharing is restored at startup.
- Keeps the sharing preference when tunnel configuration restarts hosting.
- Stores the machine-local network exposure choice with the machine target.
- Adds focused tests for silent restoration and failed restart behavior.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Route MCP App requests through owning Agent Host

Resolve Agent Host MCP App subrequests and notifications through the connection authority carried by the render data, including reconnects.

Fixes #333474

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Test MCP App notification connection rebinding

Verify notifications from a replaced Agent Host connection are detached and only the current owning connection is forwarded.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: use setting for dictation cleanup experiment

Configure dictation.experimental.llmCleanupModel as the ExP-backed setting and remove the duplicate assignment-service plumbing. Preserve the auto override by resolving it through the experiment-provided configuration default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8d31eaa8-0167-4e21-9b96-54e229afb71e

* configuration: replace auto experiment defaults on refetch

Track experiment-provided defaults per setting so refetches can replace or remove stale values without disturbing unrelated experiment overrides.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8d31eaa8-0167-4e21-9b96-54e229afb71e

* chat: use conventional dictation experiment name

Let the configuration experiment use config.dictation.experimental.llmCleanupModel instead of retaining the legacy dictationLlmCleanupModel treatment name.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8d31eaa8-0167-4e21-9b96-54e229afb71e

* test: check configuration contribution disposables

Add the required disposable leak guard to the new configuration experiment test suite.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8d31eaa8-0167-4e21-9b96-54e229afb71e

---------

Copilot-Session: 8d31eaa8-0167-4e21-9b96-54e229afb71e
dispose extension pseudoterminals when terminals close
…uality

mcp: Avoid stopping servers for equivalent URI definitions
chat: restore static editing session telemetry event names

Keep the 5% stable session sampling while passing literal event names to publicLog2 so telemetry extraction can discover both store and restore events. (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the Issue/PR plus with the same dropdown affordance used by the harness and workspace pickers.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: Disable unavailable session type picker

Keep the sole session type visible for context while preventing interaction when no alternative can be selected. Re-enable the picker reactively when another type becomes available.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: Skip disabled harness in onboarding

Gate the V2 harness spotlight on the picker interaction context so a visible but disabled sole session type is not presented as an actionable tour step.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Revert "agentHost: re-enable retryable errors"

Disable Copilot resumable error markers again while keeping the retry protocol and implementation available for later re-enablement. Reverts #333260.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…3620)

Agent Host changes for agents/fix-customization-modal-card-colors
Agent Host changes for agents/skills-page-local-section-clarification
* Agent Host changes for lramos15/agents/auto-tiers-routing-profiles-optimization

* agentHost: fix hygiene and pin the Auto routing profile per session

Align remote/package.json with the root @github/copilot pin so the
check-package-json hygiene task passes, and restore the formatting of two
accidentally joined lines.

Keep a materialized session's Auto routing profile fixed: the runtime owns it
from creation, so a mid-session change is now reverted in the recorded
selection instead of being persisted and shown as if it applied. The launch
profile is read from the session's launch plan via a new launchAutoTier getter.

Also restore a reasoning-effort value in an extension test that a tier rename
had wrongly rewritten.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948

* agentHost: tighten Auto routing profile comments

Trim every comment added for the Auto routing profile work to at most two
lines, and reduce the automodeService JSDoc edit to the renamed word so the
surrounding wording stays as its author wrote it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948
* agent host: update to AHP 0.9.0

Updates VS Code to the AHP 0.9.0 protocol and Rust crates.

- Renames the automation catalog state and adopts the entries collection.
- Treats normalized automation channel URIs as equivalent on both ends.
- Updates generated protocol types and handwritten automation consumers.
- Updates the Rust AHP dependencies and new request fields.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agent host: preserve AHP compatibility

Keeps the AHP 0.9 update compatible with supported hosts and stored data.

- Excludes AHP 0.8 from client negotiation because its automation wire shape differs.
- Migrates version 1 automation catalogs from automations to entries.
- Writes migrated automation storage with version 2.
- Adds regression coverage for protocol negotiation and storage migration.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agent host: keep automation storage at version 1

Preserves the existing durable automation format while adopting the AHP 0.9 runtime model.

- Keeps stored catalogs in the version 1 automations collection.
- Maps stored automations to protocol entries when the service loads.
- Maps protocol entries back to automations before persistence.
- Updates storage fixtures to verify the stable format.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
…eView-toolbar

fix: memory leak in accessible view toolbar
…33632)

Agent Host changes for agents/update-main-and-dark-theme-links
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 628b1c91-5489-4cfc-baf3-ca556c6e50bc
connor4312 and others added 2 commits August 31, 2026 21:52
* chat: keep single-plugin sources installed after a reload

A plugin installed with "Install from Source" from a repository that has only a plugin manifest,
and no marketplace index, disappeared from the customizations view after a window reload. The
plugin stayed on disk and stayed recorded in installed.json, but the full descriptor was never
recovered, thus the installed-plugins observable discarded the entry.

- Moves the single-plugin manifest fallback into the hydration step, where the recorded install
  directory of the entry is known. The fallback applied only to non-shorthand references before,
  thus it could not run for the GitHub shorthand references that "Install from Source" makes.
- Reads the manifest from the recorded install directory instead of a repository path derived
  again from the marketplace reference. This also corrects a path mismatch for `owner/repo#ref`
  sources, whose clone is in `github.com/owner/repo` while the derived path added a `ref_<ref>`
  segment.
- Makes _readPluginsForInstalledEntry do only the marketplace lookup.
- Adds a regression test for a single-plugin GitHub repository that survives a restart.

Fixes #333543

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: limit the single-plugin fallback to the no-marketplace case

Found in review.

- Applies the manifest fallback only when the marketplace supplies no plugins. A marketplace that
  resolves but no longer lists an entry, such as after a rename, must not fall back, because a
  marketplace plugin directory usually holds a manifest too and reading it rebuilt the entry as a
  direct source rooted at the marketplace repository, which sent later updates to the wrong
  repository and path.
- Makes the restart test use a `#ref` reference, so the recorded clone directory and the directory
  derived from the reference differ. The test now proves that hydration reads the recorded
  install directory.
- Adds a test that a marketplace plugin the marketplace no longer lists stays unhydrated.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bumps [ip-address](https://github.com/beaugunderson/ip-address) and [socks](https://github.com/JoshGlazebrook/socks). These dependencies needed to be updated together.

Updates `ip-address` from 9.0.5 to 10.7.0
- [Release notes](https://github.com/beaugunderson/ip-address/releases)
- [Commits](beaugunderson/ip-address@v9.0.5...v10.7.0)

Updates `socks` from 2.8.4 to 2.8.9
- [Release notes](https://github.com/JoshGlazebrook/socks/releases)
- [Commits](JoshGlazebrook/socks@2.8.4...2.8.9)

---
updated-dependencies:
- dependency-name: ip-address
  dependency-version: 10.5.0
  dependency-type: indirect
- dependency-name: socks
  dependency-version: 2.8.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Aug 31, 2026
@pull pull Bot added the ⤵️ pull label Aug 31, 2026
@pull
pull Bot merged commit 2936afe into code:main Aug 31, 2026
10 of 24 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.