Ulugbek Abdullaev
90d · built 2026-09-30
Performance
What Ulugbek Abdullaev shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+271.7engineers
delivers like 272.7 (272.7x pre-AI)
Output (ETV)
81.8ETV
+481.8% vs 14.1 prior
Features share
27.8%
−13.9 pp vs prior window
Fixes share
19.6%
+12.2 pp vs prior window
Work mix
27.8% Features7.2% Maintenance43.6% Tests1.8% Docs19.6% Fixes
133 commits over 90 days, ending 2026-09-30.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 58 %
- By Features share
- Top 56 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 8.4ETVautomations: feat: migrate execution to Agent Host Protocol (#331796) * automations: feat: migrate execution to Agent Host Protocol Move Automation definitions, scheduling, run lifecycle, and persistence into the Agent Host while safely migrating legacy VS Code data and retaining older-host fallback behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 142bb750-abf2-4b29-91b8-1e9ab2444635 * automations: guard Agent Host migration cutover Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: optimize sparse cron evaluation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: gate initial Run advertisement on enabled state Match the canRun composite used by handleConfigurationChanged so a create that arrives while chat.automations.enabled is false does not advertise Run. * automations/ahp: gate SessionWorkingDirectoryReplaced action Bring Replaced to parity with Set/Removed at the working-directory gate: extend the action union, canonicalize both URIs in the resolver, enforce editor-only client and provider capability at _dispatchActionNow, and include Replaced in the customization-enablement listener. Also honors the Removed contract for primaryReplacement: rejects index-0 removal when the agent advertises primaryReplacement. * automations/ahp: enforce single-run invariant in schedule claim loop Break out of the trigger loop once a schedule trigger has been claimed for an Automation, after advancing that trigger's cursor. Prevents two simultaneously-due schedule triggers on one Automation from both starting sessions and violating the one-non-terminal-run-per-Automation invariant. Deferred triggers keep their cursors untouched so their firings are re-evaluated on the next tick rather than dropped. * automations/ahp: coalesce simultaneously-due schedule triggers into one run Two schedule triggers on one Automation whose past-due cursors land in the same claim tick now coalesce into a single run. Catch-up is idempotent: one run at now, regardless of how many missed firings a sibling trigger also carries. The claim block skips when another trigger has already claimed for this Automation this tick, but the deferred cursor still rolls forward to its next cron occurrence so it does not re-fire on the next tick. Replaces the earlier break-after-claim approach from e2c2657, which serialized the deferred firing back-to-back. * automations/ahp: gate Run authority on legacy import until source is durably removed The migration path published imported snapshots with Run granted before the legacy source row was CAS-removed, creating a double-authority window where both schedulers could dispatch the same occurrence. If the removal failed, the window became permanent. Stage imports with a pending meta flag, centralize the Run/Remove permission check in the host, restore Remove when the flag clears, gate scheduling ownership on the flag, and add an acknowledge hook so cross-provider retargets clear the pending state after the source is durably gone. Recovery drains stranded pending rows on reconnect. * automations: finish Agent Host merge integration Co-authored-by: benvillalobos <4691428+benvillalobos@users.noreply.github.com> * test: mirror host automation migration authority Co-authored-by: benvillalobos <4691428+benvillalobos@users.noreply.github.com> * agentHost: restore main's reject of SessionWorkingDirectoryReplaced The merge collapsed main's two-block structure for working-directory actions back into one, dropping the explicit reject for `session/workingDirectoryReplaced`. No provider advertises `primaryReplacement` and the host has no backend side effect for the action, so the reducer would apply an unvalidated mutation. Restore the standalone reject before the EditorWindow-gated block for Set / Removed. * signing commit * signing commit * automations: use family guards for dispatch, matching existing pattern Recreate the pre-existing dispatch-guard convention rather than switching this hot path to isClientDispatchable. The generic check pulled in synced protocol code and widened the scope of this change. Automation and automation-run actions now flow through family guards, consistent with how session, chat, terminal, changeset, and annotations actions are already handled. The family-vs-permission gap this restores is pre-existing and tracked for maintainer follow-up. * automations: drop reducer-helpers sync patch, no longer needed The dispatch guard no longer uses isClientDispatchable, so nothing imports the synced reducer-helpers.ts. Its generated-source compatibility patch only existed to widen that helper's signature for the guard, so remove it and let the file sync verbatim. The state.ts dead-import patch stays until the synced AHP revision picks up the upstream fix. * agentHost: separate subscription resources and channels Keep URI-based subscription APIs narrow while preserving exact AHP catalogue channels. Mark failed reconnect restorations by channel and cover the exact-channel path with regressions. * automations: give the catalogue channel a round-trippable authority The catalogue channel constant was `ahp-automations://`, which is not a round-trippable URI. `URI.parse('ahp-automations://').toString()` drops the empty authority and yields `ahp-automations:`, so a channel serialized on the client no longer matched the catalogue check on the host. Append a `catalog` authority so the URI survives a parse/toString round-trip. Comparing catalogue channels as URIs everywhere (ResourceMap/isEqual) remains the intended followup. * automations: key the catalogue channel like every other channel Now that the catalogue channel URI round-trips through parse/toString, its subscription key no longer needs to preserve the raw channel string. Drop the `_subscriptionChannel` helper and its automation-catalogue special case, and key every channel through `_subscriptionResource` by its parsed URI. Comparing channels as URIs everywhere (ResourceMap/isEqual) remains the intended followup. * automations: use shared action family routing Use dedicated automation channels for subscription relevance and reuse the canonical action-family guards in state management. This avoids silent drift when the protocol adds actions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8c6d543f-7777-4e8b-9371-3e39a0842293 * automations: inject the automation service as a collaborator AgentService received the automation service through a post-construction setAutomationService setter, leaving a definite-assignment field and a one-off wiring step. It depends on AgentService only through the lazy callback adapter, so it can be built first and passed in the collaborators bag like every other dependency. Its constructor installs durable state without firing emitters, so the earlier ordering is safe. * automations: key subscriptions by URI through ResourceMap The subscription map had been changed from a ResourceMap to a Map<string> keyed by a synthetic getComparisonKey string, purely to hold the lossy catalogue channel under a raw key. With the catalogue channel now round-trippable and the special-case keying gone, every entry keys by a real URI again. Restores the ResourceMap that main uses and drops the synthetic key from the entry type, the resource helper, and all fifteen call sites. * automations: revert subscribe callbacks to URI The subscription manager threaded raw channel strings through _subscribe/_unsubscribe to dodge a lossy round-trip on the catalogue channel. Now that the catalogue URI round-trips, revert those callbacks to (resource: URI) to match main. The wire boundary keeps its .toString() serialization in the protocol client. * automations: migrate legacy definitions to native AHP state Translate legacy automations at the client boundary instead of persisting editor projection metadata. Derive the compatibility view from host state and canonicalize supported round trips. * automations: stabilize legacy target serialization for AHP migration Serialize folderUri as explicit URI components instead of URI.toJSON(). toJSON() only emits the lazily cached fsPath and formatted fields once they have been accessed, so two URIs for the same folder could serialize differently. That made the snapshot equality check during Agent Host migration fail with "kept changing while migrating" for every folder-target automation, blocking migration indefinitely. Reads already go through URI.revive, so existing ledger data stays compatible in both directions. * automations: ignore rejected chat actions when finalizing runs _handleEnvelope finalized an automation run on ChatTurnComplete, ChatTurnCancelled, or ChatError but did not check rejectionReason. A rejected action never reached authoritative host state, so applying it marked a still-live run terminal and orphaned its session. Guard against rejected envelopes before finalizing, matching the sessions provider's action handler. * automations: salvage valid legacy ledger entries Keep valid automations writable when individual persisted rows are malformed. Update migration coverage and compare round-tripped URI resources without relying on cache state. * automations: recover corrupt legacy run archives Salvage valid archived runs and repair unreadable current-version archives during import. Preserve fail-closed handling for unsupported newer versions. * automations: wait for provider migration before wakeup Refresh pending automations only after initial provider migration succeeds. Apply the same ordering when a failed provider migration is retried. * automations: reject inactive catalog subscriptions Apply the standard subscription cancellation guard before adding an automation catalogue subscriber. * automations: surface pending import drain failures * automations: acknowledge migrated snapshots * signing commit --------- Co-authored-by: Ben Villalobos <4691428+benvillalobos@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Ben Villalobos <bevillal@microsoft.com> Copilot-Session: 142bb750-abf2-4b29-91b8-1e9ab2444635 Copilot-Session: 8c6d543f-7777-4e8b-9371-3e39a0842293github.com-microsoft-vscode · 33e6a5d6 · 2026-08-27
- 6.3ETVautomations: refactor: make provider session templates canonical (#334521) * automations: fix: preserve legacy Autopilot mode mapping Translate legacy Autopilot permission selections into separate Agent Host Mode and Assisted approvals, preserving explicit Plan mode. Do not forward generic workbench chat modes into Agent Host session configuration. Keep the Automation projection and its regressions separate from runtime approval-policy enforcement. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * agentHost: fix: revalidate Copilot approvals against policy Resolve supplied elevated approval preferences against the current root policy before validating Copilot session configuration. Restrict approvals to default without changing the independently selected execution mode. Cover a policy change between configuration resolutions so a stored Assisted preference cannot bypass a newly applied restriction. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: harden legacy Autopilot migration Preserve provider-owned configuration across compatibility edits, repair existing and provider-less Copilot Automation definitions, and reset incompatible state on retargeting. Enforce managed auto-approval policy at both SDK and host decision points while keeping saved preferences intact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: refactor: preserve provider session templates Add a versioned provider-neutral session template projection for model, agent, and opaque configuration. Keep legacy flat writers functional during migration, preserve unknown AHP state on edits and transfers, and clear incompatible configuration on retarget. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: refactor: restore provider draft configuration Let Automation drafts restore and capture provider-owned model, agent, and resolved configuration through the Sessions provider contract. Keep normal New Session defaults isolated, reject replaced draft snapshots, and exclude transient or target-owned values. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: refactor: reuse provider session controls Drive Automation configuration through a scoped session draft and the same provider-owned pickers as New Session. Capture complete provider state for Agent Host and legacy Copilot paths while preserving unavailable, opaque, removed, and policy-clamped preferences. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: refactor: unify fallback session configuration Pass the complete provider-owned Automation configuration during older-host draft creation so browser fallback and AHP execution use the same template semantics. Keep workspace isolation and branch configuration target-owned. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: refactor: expose canonical provider configuration Round-trip complete provider session templates through Automation tools and stop new dialog and AHP projections from writing flattened aliases. Keep legacy rows and inputs compatible while enforcing template-first execution, duplication, telemetry, and rollback semantics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: test: validate config after host restart Specify canonical Automation template and draft ownership across Sessions and Agent Host. Add recorded AHP coverage proving independent Mode and Approvals survive host restart into the created run session, and document the remaining Claude/Codex coverage gap. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: harden provider configuration handling Keep canonical provider templates opaque and authoritative while limiting legacy Autopilot repair to load/import boundaries. Bound dialog capture and preserve per-target configuration across failures and retargeting, retain legacy duplicate/worktree settings, and improve loading accessibility. Add regression coverage for #333723 compatibility, canonical reloads, capture races, and tool configuration limits. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: make configuration saving failure-safe Keep the Automation dialog open when provider configuration cannot be captured, expose cancellable saving progress, and serialize draft retargeting. Unify canonical-template authority across stores, require providers to advertise restoration support, preserve definition-owned state, retain scoped picker models across toolbar rebuilds, and keep legacy fallback configuration available. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: normalize provider handoff and saving focus Send providers one canonical Automation configuration object instead of overlapping template channels. Keep keyboard focus on the cancellable action while form content is inert, and make saving and error live regions visible before their announcements change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: test: assert settled restart configuration Refresh the created run session inside the completion retry so the restart E2E validates Mode and Approvals on the settled session rather than an earlier catalog snapshot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: skip disabled actions in dialog focus Exclude aria-disabled controls from the Automation dialog's custom focus ring so Saving keeps keyboard focus on the cancellable action instead of moving onto the disabled primary button. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: refactor: keep async dialog lifecycle local Avoid extending the widely shared Dialog widget for the Automation editor's provider capture flow. Keep Save failure handling, cancellation, and completion in the Automation dialog while reusing the standard button styles and platform order. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: address canonical template review feedback Filter reserved session state at both Agent Host projection and fallback restoration, preserve configuration for unavailable targets, honor explicit template reset semantics, and keep the Automation prompt menu owned by Sessions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: reject unresolved configuration capture Wait for tracked configuration operations before capturing Automation state. Retry failed host resolution strictly with the attempted values so a transient failure cannot erase explicitly changed preferences. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: scope fallback agent pickers to their session Reuse the existing scope-owned Mode picker cache for both provider families. Automation controls now discover and display their own agents rather than the active session, with regression coverage for scope isolation, toolbar rebuilds, retargeting, and disposal. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: restore fallback agents before sending Restore canonical custom-agent URIs and capture the current selection instead of copying the initial agent. Refresh custom-mode discovery before the first Automation request, including cached selections, and fail explicitly if the agent is unavailable. Cancel discovery when the draft is discarded and reject unsupported cloud agent templates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: bound fallback custom-agent discovery Limit custom-agent resolution to one 30-second deadline across selection changes. Dispose each discovery scope and cancel its wait on timeout or draft/provider disposal, rather than retaining hung discovery during recurring Automation runs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: preserve model-specific run configuration Live verification showed Codex running at Medium despite a saved Low thinking selection. Capture model preferences in provider-owned drafts and preserve them through tools, persistence, AHP projection, and fallback requests without rewriting shared defaults on restore. Carry the full model onto the first Automation message so completed runs restore their actual configuration. Refresh same-model configuration badges when switching draft targets, and cover capture, isolation, reset, validation, and restoration with regressions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 * automations: fix: use dot notation in template parsing The PR merge build enables the bracket-notation lint rule added on main after this branch was based. Replace the four literal property accesses flagged by CI without changing parsing behavior. Validated the exact rule with zero warnings and all 34 Automation tool tests against fresh output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 09e55c0c-bf80-42ea-b8e2-fad38a12d986github.com-microsoft-vscode · 19b53d23 · 2026-09-06
- 5.1ETVautomations: refactor: remove browser-owned automation execution (#337334) * remove non-ahp automations implementation * automations: test: register update-only dialog coverage Move the nested regression to suite scope so filtered and normal runs both execute it. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: retain selected hosts when unavailable Address UIUX-1: keep an Automation draft's selected host instead of silently falling back to another machine. Ordinary session pickers keep their existing defaults. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: cancel admitted runs before session creation Address CORE-2: propagate caller cancellation through host admission and the session wait, forwarding it once and leaving lifecycle updates authoritative on the host. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: wait for provider authentication readiness Address CORE-1: preserve due occurrences until provider-owned prerequisites are available and react to readiness changes without a renderer scheduler. Copilot gates missing/revoked credentials while allowing explicitly selected signed-out BYOK models. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: use update authority for tool target edits Address ARCH-1/UIUX-2/CORE-3: allow same-host target edits without create capability, share cross-host validation, and report stale approvals before target eligibility failures. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: keep operation ordering stable after runs Address PERF-1: restore Remove in canonical operation order so an unrelated configuration refresh does not rewrite history or republish an unchanged catalogue. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: test: fix stale approval result assertion Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: test: register pending cancellation cases at suite scope Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: validate complete dialog execution targets Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: align readiness with the effective run model Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: chore: defer operation ordering to follow-up Keep the browser-executor removal focused; preserve the independent ordering fix for the follow-up branch. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * automations: fix: keep observing admitted pending runs Do not impose the browser mutation timeout on a host-admitted run waiting for a session. Preserve cancellation while the host waits for execution readiness. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 9fdeaba6 · 2026-09-22
- 3.8ETVautomations: fix: honor worktree and provider session configuration (#335018) * automations: fix: synchronize restored Cloud model options Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: preserve canonical Cloud configuration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: ignore unsupported Cloud permission overrides Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: clamp restored CLI approval preferences Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: persist Cloud Sandbox execution choices Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: retain custom agents on the first run turn Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * agentHost: fix: mark generated worktree sessions pending early Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * codex: fix: retain workspace agents across worktree turns Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: expose native provider configuration controls Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: advertise worktrees for all Agent Host agents Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: resolve worktree branches on the selected host Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: allow leaving unavailable worktree isolation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: coalesce repository option reloads Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: validate workspace worktree support in tools Consult provider-owned workspace capabilities before accepting an explicit worktree target. Preserve legacy providers and unrelated edits, propagate lookup failures, and cancel pending validation without writing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f * automations: fix: prevent invalid worktree re-enablement Keep the saved-branch exception only while Worktree is already selected. After opting out, require available repository branches before enabling isolation again. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2f --------- Copilot-Session: e4e70d7c-fbe2-487b-a6c5-177af2abae2fgithub.com-microsoft-vscode · 1328607e · 2026-09-10
- 3.0ETVautomations: add agent tools to manage automations (#327110) * Agents: add automation management tools Expose reviewed list, configure, and delete automation tools in the Agents window, with explicit destructive confirmation and cross-window atomic persistence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Address automation tool review feedback Require the explicit delete confirmation, share the browser storage database and fallback, use single-key reads, and prevent automation dialogs from mutating workspace recents. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Strengthen automation storage review coverage Document IndexedDB CAS semantics and cover key isolation across application, shared, profile, and workspace storage scopes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Preserve browser storage encapsulation Expose narrow application-storage read and CAS operations instead of the IndexedDB backing interface. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Honor automation tool approval settings Use the resolved tool approval decision to apply auto-approved automation changes directly while retaining interactive review and cancellation paths. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Document automation service contracts Clarify guarded update conflicts, mutation semantics, and the resolved tool approval reason exposed to implementations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Refine agent automation workflow Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f * Honor Allow all for client tools Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95f --------- Copilot-Session: 02b3fd55-54ff-4d38-93b9-08bfa69ee95fgithub.com-microsoft-vscode · 7cfa613a · 2026-07-24
- 3.0ETVAgents: Fix automation branch picker (#325777) * Sessions: Make repository setters asynchronous Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f5aa3878-217b-45dc-9b52-0b5091ddf707 * Agents: Fix automation branch picker Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f5aa3878-217b-45dc-9b52-0b5091ddf707github.com-microsoft-vscode · c7f9ddca · 2026-07-15
- 2.8ETVautomations: feat: add starter templates and clarify target selection (#334836) Offer editable starter templates without silently inheriting a recent workspace. Explain workspace-specific agent choices while preserving saved provider-owned session configuration. Distinguish catalogue loading, readiness, unavailability, and errors across providers, storage, tools, and accessible UI. Keep usable local automation targets available when a remote host is offline, and preserve focus without stealing it after delayed updates. Include regression tests and visual fixtures for catalogue lifecycle, migration readability, target selection, and focus behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 13c4c742-2729-4be4-819c-2adf8243f733github.com-microsoft-vscode · b6d68fbe · 2026-09-07
- 2.4ETVautomations: feat: add shareable automation blueprints (#335511) * automations: feat: add shareable automation blueprints Add a portable .automation.md format with strict validation and safe import/export semantics. Surface enabled plugin blueprints as disabled-by-default templates while preserving the existing automation service as the sole execution authority. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: feat: support blueprint drag and drop Match the Automation header action sizing and route dropped .automation.md files through the same disabled-by-default review flow as file import. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: feat: organize automation template sections Keep built-in and plugin-provided templates available in separate collapsible sections, with defaults that adapt to whether saved automations exist. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: feat: track new plugin templates Persist the plugin templates last seen when the section is expanded, show an unread marker for newly added templates, and serialize portable schedules as local-time cron or explicit manual schedules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: polish: refine blueprint export and template layout Normalize exported filenames to one .automation.md suffix and align disclosure content beneath template section titles. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * automations: fix: address blueprint review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f1363f3b-bd40-48be-b723-6c11ea3e0f04 * automations: test: define fixture automation contributions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f1363f3b-bd40-48be-b723-6c11ea3e0f04 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f1363f3b-bd40-48be-b723-6c11ea3e0f04github.com-microsoft-vscode · b405686a · 2026-09-10
- 2.3ETVAgents: Support workspace-less automations (#326315) Add workspace-less Automation targets, unify workspace selection, reuse headless quick-chat creation, and model persisted targets as discriminated unions. Copilot-Session: 7600152c-d485-4547-bd86-dd21ad05debd Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · e8bf36ec · 2026-07-18
- 2.0ETVautomations: feat: unify AHP lifecycle telemetry Use one authoritative Agent Host event family for Automation definitions and durable run claims, linked sessions, and terminal outcomes. Retain native run/session identifiers, safe saved configuration, and typed GDPR metadata while removing overlapping browser emitters. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 04a82bd8 · 2026-09-07