agentHost: adopt runtime #16249 and graduate the legacy-settings bridge gate
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
## Context
The runtime fix that unblocks the legacy-settings → managed-settings bridge has **merged**: github/copilot-agent-runtime#16249 makes **client/session-injected** managed permissions *non-activating* (their `deny`/`ask`/`disableBypassPermissionsMode` still bind, but they no longer flip unmatched shell/read/write/URL/factory requests to "default ask"). External server/MDM layers keep today's activating lockdown. It is behavior-only and **source-based — no new wire field**, so VS Code sends nothing new.
Refs: bridge PR microsoft/vscode#331415 (merged), SDK/runtime issue github/copilot-sdk-internal#243, runtime PR github/copilot-agent-runtime#16249 (merged).
## Remaining VS Code-side work (sequenced — order matters)
### 1. Adopt the runtime (the only "adopt" step)
- [ ] Bump `@github/copilot-sdk` (currently **1.0.11** in root `package.json`) to a build whose **bundled runtime** contains #16249.
- [ ] Coordinated-change checks: SDK bundles platform binaries; verify the SDK **protocol version** and re-record/validate the agent-host **e2e replay fixtures** (CapiReplayProxy) if needed.
- [ ] Smoke-test with the gate enabled: a lone `chat.agent.deniedNetworkDomains` entry (or a single terminal `false` rule) binds, but unrelated shell/read/write requests are **no longer** forced to prompt.
### 2. Update now-stale docs (do WITH the bump, not before)
Against the currently-bundled 1.0.11 runtime the broadening still happens, so these are accurate until the bump — update them in the same PR:
- [ ] `resolveManagedSettingsPermissions` JSDoc in `src/vs/platform/agentHost/common/agentHostManagedSettings.ts` (the "Contributing any rule … makes the runtime's managed policy active … unmatched … require approval" paragraph) — that broadening no longer applies to the client-injected layer.
- [ ] The "Known behavior, documented rather than changed" section carried over from PR #331415's description, if reused anywhere.
### 3. Graduate the gate (the payoff)
- [ ] After the bumped runtime is confirmed in the shipping build, flip `chat.agentHost.copilot.mapLegacySettingsToManagedSettings` on by default and/or remove the setting. **Never ship on-by-default against an old runtime** (would re-introduce the broadening).
## Explicitly NOT changing (verified against #16249's merged diff)
- The **"no `allow` list"** rationale still holds — #16249 only touched the deny/ask activation branch and the compose flag; `allow`-intersection / `managed_allow` auto-approval semantics are untouched.
- Host-side `SessionPermissionManager` **stays** — still shared by Claude/Codex (which don't consume managed settings) and remote hosts (which receive `{}`). #16249 does not unblock removing it.
- Expressiveness-gap mappings (edit patterns/last-match-wins, regex terminal rules, allow-list *blocking*, per-tool eligibility) remain separate SDK-side work.
Contributor guide
Research direction
Start with root package.json and the runtime version bundled by @github/copilot-sdk, then read resolveManagedSettingsPermissions in src/vs/platform/agentHost/common/agentHostManagedSettings.ts. Validate the SDK protocol and CapiReplayProxy agent-host replay fixtures, and smoke-test the gate with a deny/false rule. Done means the runtime bump is confirmed, stale documentation is updated, and the legacy-settings gate is safely graduated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- developer-experience, testing, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100