* fix(copilot): don't auto-retry expired vision attachments, show actionable error
Expired pasted images return vision_attachment_not_accessible 400 on every
request. ToolCallingLoop retried the same poisoned payload 3x with
'Recovering from request error'. Skip auto-retry for this error (mirrors
isContextOverflowBadRequest precedent) and surface remove-attachment /
new conversation guidance.
Fixes#334126
* fix(copilot): centralize vision-attachment check, add retry and formatter tests
Address Copilot review on #334129: extract shared
isVisionAttachmentInaccessibleError helper in commonTypes and reuse it
from ToolCallingLoop.shouldAutoRetry; cover the retry exemption and both
error-message variants with tests.
Fix dictation hangs by adding timeouts to Foundry Local native calls
The on-device (nemo/Foundry Local) dictation backend awaited several
native SDK calls with no timeout and no AbortSignal: the model catalog
lookup, model.load(), session.start(), each session.append() call
(chained serially so one stuck append blocks every later chunk and
stop()), the result stream's next(), and session.stop()/dispose().
If any of these stalls (proxy/firewall silently dropping packets, a
wedged native addon, a driver hiccup during model load), the awaiting
promise never settles. Since start()/pushAudio()/stop()/cancel() all
await these calls directly or transitively, dictation would hang
indefinitely with no error surfaced to the user and no way to recover
short of restarting VS Code.
Guard each of these awaits with a hard timeout that rejects with a
descriptive error, mirroring the existing inactivity-timeout pattern
already used for the native runtime tarball download. A timeout now
surfaces as a normal model/session Error (with a new 'timeout' error
code from classifyModelError) so the existing error-handling UI path
picks it up, and Stop/Cancel can no longer hang forever.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: add telemetry for toggling terminal thinking blocks
Track user expand/collapse of the terminal command header in thinking
and simple-collapsible wrappers, without counting auto-expand.
* chat: log collapsible toggles from the shared parent
Move user-toggle telemetry onto ChatCollapsibleContentPart so thinking,
terminal, references, and other wrappers share one event. Keep the
terminal-specific event when kind is terminal.
* Agent Host changes for aeschli/agents/improve-customization-message-ui
* Address customization hint review feedback
Route review links to the relevant customization surface and avoid reporting an unverifiable instruction count when collection is extension-owned. Add coverage for disabled customizations and each hint destination.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Avoid blocking agent dispatch on customization summaries
Start summary discovery alongside request setup, but publish it only after agent invocation has begun. Forward request cancellation through customization discovery so abandoned sends stop outstanding work.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix customization summary ordering test leak
Await the agent invocation gate directly while summary discovery remains blocked, avoiding a leftover cancelable timeout in browser unit tests.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove customization availability summary
Keep migration hints focused on workspace and user candidate counts and retain migration-page deep linking, while removing the summary setting and inventory enumeration path.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: consolidate remote workspace selection
Route quick chat creation through the unified workspace picker when consolidated remote workspaces are enabled. Persist No workspace as the last selected target so new sessions restore it consistently, and enable the experience by default on Insiders.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: handle delayed quick chat providers
Preserve the persisted No workspace target while quick-chat providers register and retry draft restoration when session types change. Avoid discarding the current draft when the Chats action runs before a quick-chat target is available.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make extensions.gallery.authProvider policy-controlled
Adds an `ExtensionGalleryAuthProvider` policy to the
`extensions.gallery.authProvider` setting so administrators can manage
which authentication provider is used for the Extensions Marketplace,
matching the neighbouring `extensions.gallery.serviceUrl` setting.
Since the setting is a string enum, the policy declares one localized
`enumDescriptions` entry per value, reusing the existing nls keys.
Regenerated build/lib/policies/policyData.jsonc via
`npm run export-policy-data`.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Attestation commit
---------
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Sandeep Somavarapu <sasomava@microsoft.com>
* agentHost: support setting workspace on existing sessions
Allow an agent to attach a workspace-less session to a folder or managed worktree without replacing the session or losing conversation history. Propagate the new project, working directory, continuation, and activity state through Agent Host and Sessions UI.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Agent Host changes for sandy081/agents/workspace-less-to-workspace-conversion
* Keep workspace conversion progress continuous
Reserve a visible host-authored turn while workspace setup completes, then route that same turn through normal provider admission. Keep project updates catalog-only, durably quarantine disposed provider sessions, atomically persist Copilot workspace metadata, and wire conversion without lazy service lookup.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Show workspace conversion outcome in transcript
Use a stable visible continuation request and add synchronized Workspace Set or Workspace Setup Failed notifications to the same turn.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove stale workspace conversion imports
Clean up imports left behind while adapting the workspace conversion changes to the current Agent Host composition.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Adapt workspace conversion to chat queue diagnostics
Pass operation names through the updated Copilot chat queue API for working-directory mutations and their sequencing tests.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix workspace conversion tests on Windows
Create in-memory customization directories before writing fixtures and derive expected paths from URI.fsPath so assertions follow the host platform.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Avoid concurrent in-memory folder creation
Serialize creation of customization fixture directories because the in-memory filesystem's recursive mkdir path is not safe when sibling operations race.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix remaining workspace conversion CI failures
Use the real disk provider for native Windows customization paths, prevent late aborted-idle events from cancelling replacement turns, and give the full property initialization checker enough heap for the expanded Agent Host sources.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Limit the package lock updates to the Component Explorer packages so the existing webpack version remains available from the VS Code npm feed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ce266339-31ab-4cfb-a049-5b65fea0c7c8
* sessions: polish: add new session button treatments
Keep the existing keybinding chip as the control and add flat and subtle-background treatments behind a hidden experiment-backed setting. Cover both redesigned treatments with themed component fixtures and platform-resolved keybinding labels.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 250ea0a1-1160-437f-a1b5-70cc3fa061a3
* sessions: fix: resolve hidden button treatment
Resolve agentSessionsNewSessionButtonStyle explicitly because hidden configuration schemas are excluded from automatic experiment processing. Drive all button instances from one observable while preserving direct developer overrides and assignment refetches.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 250ea0a1-1160-437f-a1b5-70cc3fa061a3
* sessions: polish: demote new button shortcut
Use the quieter label2 type role for the redesigned keybinding treatments so the New label remains the visual lead while platform shortcut text stays legible.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 250ea0a1-1160-437f-a1b5-70cc3fa061a3
* sessions: test: update new button screenshot hashes
Accept the Ubuntu blocks-CI baselines for the six new lightweight New Session button fixtures after verifying the deltas are confined to the intended control.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 250ea0a1-1160-437f-a1b5-70cc3fa061a3
---------
Copilot-Session: 250ea0a1-1160-437f-a1b5-70cc3fa061a3
* sessions: rename focused chat with F2
Add a higher-priority chat rename command that mirrors the existing chat-close command layering while preserving session rename for the main chat. Track active and nested-chat focus so F2 targets peer chats and unsupported or untitled chats cannot fall through to session rename.
Fixes#334162
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: resolve focused chat before rename
Derive the rename keybinding and target from the DOM-focused chat group so split-group activation cannot rename stale session state. Scope the accessibility guidance to chats where Rename is available.
Addresses review feedback on #334163.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: Add setting for subagent credit usage
Allow users to hide subagent credit usage from the pill, tooltip, and accessible label while preserving the existing default.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: Default subagent credit usage to hidden
Keep credit usage opt-in and cover the tooltip alongside the visible and accessible presentation paths.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: classify inline chat telemetry
Use the existing ephemeral-session marker to identify Agent Host turns that
started from inline chat.
- Add inline to the bounded message origin telemetry values.
- Apply the value to direct, queued, resumed, and subagent turns.
- Include message origin in completion, failure, hang, and recovery events.
- Add coverage for standard, queued, failed, and hung turns.
(Commit message generated by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: clarify inline telemetry origin
Explain that message origin telemetry includes host-owned classifications and
that inline is derived from the existing ephemeral-session marker.
(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>