Skip to content

[pull] main from microsoft:main - #1660

Merged
pull[bot] merged 35 commits into
code:mainfrom
microsoft:main
Sep 2, 2026
Merged

[pull] main from microsoft:main#1660
pull[bot] merged 35 commits into
code:mainfrom
microsoft:main

Conversation

@pull

@pull pull Bot commented Sep 2, 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 : )

24anisha and others added 30 commits September 1, 2026 14:18
…sts (build fix for vscode-engineering#3742) (#333858)

* fix: skip real AudioContext in Voice Mode onboarding preview under tests

The onboarding voice-sample preview always built a real AudioContext and
connected the analyser to context.destination, opening the host audio
output device even when a test-supplied audio element was injected. In
headless Electron test runs this device kept spinning with no producer,
emitting endless `SyncReader::Read timed out` audio-glitch warnings and
hanging the unit test task until timeout. Skip the best-effort analyser
graph when an audioFactory override is provided; the sample still plays.

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

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* chore: attest automated pull request

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Megan Rogge <megan.rogge@microsoft.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Megan Rogge <merogge@microsoft.com>
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
Co-authored-by: Bryan Chen <41454397+bryanchen-d@users.noreply.github.com>
Co-authored-by: Giuseppe Cianci <gcianci@microsoft.com>
Revert "Chat: Use mouse Back to return to agent sessions"

This reverts commit c178d46.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: expand recent Agent Host E2E coverage

Cover automation, detached worktree, server-tool, session persistence, authentication, and changeset behavior added in recent Agent Host changes. (Written by Copilot)

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

* test: normalize detached worktree paths

Compare worktree paths through URI comparison keys so Windows slash and path-case normalization do not cause false failures. (Written by Copilot)

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

* test: validate detached worktree location

Use the shared repository worktree-location predicate instead of assuming the checkout is an immediate child of the worktree root. (Written by Copilot)

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

* test: keep worktree assertions portable

Assert observable detached-worktree lifecycle behavior without pinning a platform-specific checkout layout. (Written by Copilot)

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

* docs: require cross-platform Agent Host E2E validation

Document Azure CI acceptance, live failure triage, targeted reruns, and repeat validation for known flake surfaces. (Written by Copilot)

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

* docs: keep Agent Host validation scoped

Keep the cross-platform E2E acceptance workflow in the Agent Host E2E skill and restore the general Azure Pipelines skill. (Written by Copilot)

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

* test: address Agent Host E2E review feedback

Seed the rename test before its provider turn, re-record Codex on the manual rename path, and condense the detached-worktree grace-period explanation. (Written 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: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: edab674c-fabb-4d28-b950-e5c2eb419329
* chore: bump @github/copilot to 1.0.83-2

* chore: re-trigger validation for @github/copilot 1.0.83-2 bump

The prior product build (470206) failed only on the macOS CLI (ARM64) Rust compile+notarize job, which is structurally independent of the @github/copilot npm bump (the CLI pipeline references no copilot packages) and is flagged in-pipeline as a known build flake (todo@connor4312, MSRUSTUP_LOG=debug). All other CLI-arch jobs passed; every other job cascade-cancelled. No VS Code integration change is warranted; re-run the authoritative product build.

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>
Keep changed binary resources visible with an accessible placeholder and provide a secondary action that opens the normal diff editor for richer binary handling.

Fixes #206062

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 88f03546-c3b6-4f5d-88ac-a8d24407a97c
Pair each diff-side URI with its optional text model so binary and missing-side states are unambiguous, and derive binary handling from that representation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 88f03546-c3b6-4f5d-88ac-a8d24407a97c
* agent host: support side chats from subagents

Creates side chats from subagent output without trying to fork a provider session.

- Preserve canonical subagent chat URIs when translating Sessions resources.
- Create a fresh peer chat for tool-origin sources that lack provider backing.
- Inject the bounded subagent transcript and selected text into the first side-chat turn.
- Add regression tests for URI translation, fresh chat creation, and context injection.

Fixes #333966

(Commit message generated by Copilot)

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

* agent host: address side chat review feedback

Correct side-chat context and URI handling for edge cases found during review.

- Keep completed subagent turns when creating a side chat during an active turn.
- Use the backend session identity when reconstructing a missing subagent URI.
- Add focused regression tests for both cases.

Fixes #333966

(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>
* Browser: enforce network policy via session isolation

* feedback

* Better sharing enabled state
Agent Host changes for agents/fix-list-background-color-issue
* Fix agent session status alignment

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

* Fix chat rich link status offset

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

* Align loading rich link status icons

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use session terminology for session-scoped delegation hovers while preserving chat terminology for chat and legacy origins. Add regression coverage for both scopes.\n\nFixes #333482\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: hide delegation from agent host sessions

Keep Agent Host sessions available as delegation targets while preventing local and remote Agent Host sessions from offering Continue In.

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

* test: cover remote agent host delegation flags

Assert that discovered remote Agent Host sessions remain delegation targets without advertising delegation as a source.

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

---------

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

Copilot-Session: bd312c9c-1961-430a-a572-bd4cd6a47441
build: revert claude agent SDK lockfile bump from #333870

#333870 bumped transitive deps in build/agent-sdk/agents/claude/ while
@anthropic-ai/claude-agent-sdk stayed pinned at 0.3.239. Those deps are
peers, so npm installs them into node_modules, and node_modules is what
package.ts tars. The tarball bytes changed and upload.ts refused to
overwrite the existing agent-sdk/claude/0.3.239/<target>.tgz blob:

  remote: 4d2a122a30085d088c124769fd01febd4814e1ce3022bf8534be3434103c58b6
  local:  3f428bf4db0ed63b7ff0587033a30e998eacaf246da933732764a0a8f8d6589f

Restores the lockfile to the state that produced the blobs already on the
CDN. Leaves the dependencies-check.yml and build/npm/gyp changes from
#333870 alone.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…our response (#334105)

* agentHost: do not declare a connection dead while the host waits for our response

The AHP liveness watchdog measured inbound silence only. When the agent host copies a client
customization bundle back over the connection, it sends reverse `resourceRead` requests and then
stays quiet while it waits for us. The client fills the client-to-host direction with large
responses, so the client `ping` queues behind that upload and cannot be answered. After 25s the
client closed a healthy tunnel.

Debug log bundles show this on 3 clients and 4 hosts: each host-side `Syncing plugin` is followed by
a client-side watchdog close and then a successful host-side `Reconnect`, so the host stayed
reachable. Whether the watchdog fired depended on unrelated inbound traffic that reset the read
timer.

A write-side timestamp is not a usable signal. RelayTransport gives bytes to a shared-process relay,
and the local tunnel process has its own buffer, so a recent write does not show what reached the
wire.

- Counts reverse requests that we received and did not answer, per transport. A count above zero
  shows that the peer waits for us.
- Defers the close while that count is above zero, and keeps the pre-existing high-load deferral in
  the same branch.
- Re-arms both timers at PING_INTERVAL_MS during a deferral, so the client continues to probe. Before
  this change one ping only was sent for each silent window.
- Grants a full PING_INTERVAL_MS + LIVENESS_TIMEOUT_MS window when the deferral clears. A response
  counts as answered when it goes to the transport, so the bytes that still drain and the host
  post-copy work need their own budget. Measured host-side gaps were 37-47s, thus the previous 5s
  re-arm still closed the connection.
- Keeps the grant to one for each deferral episode, so a dead transport is still detected.
- Does not change `_lastReadTime`, so the timeout diagnostic reports the true total silence.
- Injects a no-load estimator in the tests. The shared LoadEstimator singleton starts a 1s interval
  that does not drain under runWithFakedTimers, so these tests passed only when the suite around them
  disposed the client first.

(Commit message generated by Copilot)

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

* agentHost: keep a short revision history for each synced plugin

A client plugin nonce is a content hash, not a version that increases. A customization set that
changes and then returns to an earlier state makes a nonce that was synced before.
`_cleanupStaleNoncesFor` kept the current revision only, so each such cycle was a cache miss and
copied the full bundle again over the agent host connection. Debug logs show two nonces that
alternate on one host, and each change caused a full copy.

- Keeps up to MAX_REVISIONS_PER_PLUGIN revisions for each plugin URI, so a customization set that
  returns to an earlier state is a cache hit.
- Changes the global cap from a plugin count to a revision count
  (DEFAULT_MAX_PLUGIN_REVISIONS). The LRU selects which revisions stay, so a plugin that syncs often
  keeps more history than a plugin that is idle.
- Removes cache entries whose directory does not exist when the cache loads. Such an entry cannot
  make a cache hit, and it uses one retention slot for the plugin and one slot in the global cap.
- Writes the nonce in the eviction logs. Before this change, a plugin that moved between revisions
  made identical log lines.

(Commit message generated by Copilot)

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

* agentHost: address Copilot review feedback

- Re-arms the liveness timers when the final reverse response goes to the transport. Before this
  change, a response that completed before the first close callback left `_livenessDeferred` unset,
  so a close timer armed when the request arrived closed a healthy transport moments later. The
  grace period is now exactly the full window from the response, not the poll delay plus the window.
- Persists the LRU after a nonce cache hit. `_touchLru` reordered the entry only in memory, so a
  restart reloaded the pre-hit order and could evict the revision that was used most recently, which
  removed the benefit of the new per-plugin history.
- Uses `stat` and checks for FILE_NOT_FOUND when it prunes cache entries at startup.
  `IFileService.exists` returns false for each error, so a temporary I/O or permission failure
  removed a valid entry and caused a full bundle copy later.
- Adds a test for a reverse request that completes before the first close callback. The test fails
  without the re-arm above.

(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>
* sessions: avoid per-session resource label formatters

Represent Agent Host session homes with bounded URI templates and resolve session titles from provider-owned maps. Preserve existing label formatter behavior while removing lookup work that scaled with session history.\n\nFixes #333875\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: fix remote home label browser test

Derive the expected provider label from the platform-aware session type so browser builds correctly omit the remote host suffix.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: address resource label formatter review

Preserve root homes and template precedence, align mock authority matching with production, and keep dynamic session titles literal.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* label: fix formatter tests on Windows

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Agent Host changes for agents/ensure-managed-settings-stability

* Wait one event-loop turn before asserting gate state

Co-authored-by: joshspicer <23246594+joshspicer@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* agentHost: show Agent Merge changeset in Agents Window

Advertise an Agent Merge changeset after it is first enabled and resolve it against the completed repair turns following the last user message in the default chat. Keep the entry available after disablement and cover catalog and turn-range behavior with focused tests.

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

* agentHost: fix changeset config event typing

Use the protocol URI string emitted by session configuration changes when refreshing the Agent Merge changeset catalog.

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

* agentHost: refresh restored Agent Merge changeset

Rebuild the changeset catalog after restored session configuration is seeded so persisted Agent Merge enablement is reflected even without a local enable notice. Extend the durable monitoring regression to remove local notices before restart and assert the changeset is advertised.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
meganrogge and others added 5 commits September 2, 2026 21:36
agentHost: add resumed edit tracking e2e coverage (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Allow semantic search toggle for search subagent
* chat: avoid repeated session widgets

Only render rich session results for tools that create a session or chat. Keep send_message as ordinary tool progress so repeated messages to one target do not duplicate its session widget.\n\nFixes #334119\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: deduplicate session widgets by target

Preserve navigation feedback for send_message while rendering only one rich widget for repeated outcomes targeting the same session or chat.\n\nFixes #334119\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: Move plugin update action to installed section

Show the update action only when plugins are installed and clarify that it checks for and applies updates.\n\nFixes #333578\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chat: Gate plugin updates on marketplace installs

Use the marketplace-installed collection that the update command consumes and align the component fixtures.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: Update plugin catalog screenshot hashes

Accept the Ubuntu component fixture screenshots for the relocated plugin update action.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Sep 2, 2026
@pull pull Bot added the ⤵️ pull label Sep 2, 2026
@pull
pull Bot merged commit d6207d7 into code:main Sep 2, 2026
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.