customizations-in-the-agent-host

Diagnose and fix customization enablement bugs in the VS Code agent host.

Updated Aug 30, 2026
One-click install
npx skills add https://github.com/Tyrizx/Tyrizx --skill customizations-in-the-agent-host-tyrizx
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: customizations-in-the-agent-host
Source: https://github.com/Tyrizx/Tyrizx/tree/main/.github/skills/customizations-in-the-agent-host
Command: npx skills add https://github.com/Tyrizx/Tyrizx --skill customizations-in-the-agent-host-tyrizx

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Customization enablement (plugins, MCP servers, agents, skills, instructions) in the agent host involves scoped decisions, overlay storage, and per-provider enforcement, and bugs here silently erase user decisions or let disabled servers reach the model. This Skill captures the architecture invariants and debugging lessons needed to change that code safely. ## Core Features & Use Cases - Enablement mental model: Explains scoped decisions (Session, Workspace, Global), the client-base plus host-overlay storage model, and identity rules for MCP server storage keys. - Resolution invariant: Documents the rule that every publication, emit, and SDK-handoff path must route through resolveCustomizationEnablement(), with the production bugs that resulted from skipping it. - Per-provider enforcement: Covers launch-time and mid-session enforcement differences across Copilot, Claude, and Codex, including the Codex limitation and the not_configured status trap. - Use Case: A disabled MCP server still appears to reach the model; use the debugging playbook to rank signals (published object, Agent Host.log tool_search overrides, UI, model claims) and reproduce the failure across sessions. ## Quick Start Ask the agent to explain why a disabled MCP server is still exposing tools in a new agent-host session and how to fix it.

Frequently Asked Questions about customizations-in-the-agent-host

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why is a disabled MCP server still reaching the model in the agent host?▼

A disabled MCP server still reaches the model when a publication or SDK-handoff path skips resolveCustomizationEnablement() and reads a stored snapshot instead. Check that every emit path routes through resolution, and verify with tool_search override entries in Agent Host.log.

How does customization enablement storage work in the agent host?▼

Enablement is an ordered list of scoped decisions (Session, Workspace, Global), not a boolean. The client's value is the base, host decisions layer on top, and only differences from the base are persisted; inheritance runs host to base to the default.

How do Copilot, Claude, and Codex differ in MCP server enforcement?▼

Copilot uses disabledMcpServers at session open plus rpc.mcp.enable/disable mid-session, Claude enforces at materialize with live reconcile, and Codex only supplies MCP servers at thread start with no mid-session changes. Gate at launch too, since the post-startup reconcile runs about 800 ms late.

Why does a customization show the wrong enabled state in the UI?▼

Wrong UI state usually comes from identity or overlay bugs: an MCP server key derived from tree position instead of owningPluginUri, or comparing against a hardcoded true instead of the client base. Use targetForMcpServer() and withOwningPluginUri() to build stable storage keys.

What does a pending customization state mean and how should it be handled?▼

Pending means the session or working directory is not yet known, and SDK-boundary consumers must fail closed. Never default pending to enabled or cache the verdict; recompute and republish once the enablement service settles.

Why does a type-only import of CustomizationType crash at runtime?▼

CustomizationType and CustomizationEnablementKind are const enums, so a type-only import compiles and lints cleanly but crashes at runtime. Import them as values, and run npm run typecheck-client separately since the unit-test runner does not fail on type errors.