Agent Skills in Microsoft Agent Framework The Microsoft Agent Framework has added skills support in beta, built around progressive disclosure that allows agents to load domain expertise on demand rather than including all capabilities in the system prompt. Once a skill is loaded within a single session, its full content remains in the conversation for the entire session duration without eviction or budget limits. A developer confirmed this behavior by building a console application running against a local Ollama model, tracing every HTTP call to observe how skills are triggered and retained. The Microsoft Agent Framework https://learn.microsoft.com/en-us/agent-framework/overview/agent-framework-overview recently added skills support, built around progressive disclosure still in beta . The Give Your Agents Domain Expertise with Agent Skills https://devblogs.microsoft.com/agent-framework/give-your-agents-domain-expertise-with-agent-skills-in-microsoft-agent-framework/ devblog is an excellent introduction, so I won't re-tread the basics here. If you've used skills in a coding agent, the idea is familiar: a skill is just a folder — a SKILL.md manifest plus reference documents and scripts — that the agent discovers and pulls in only when it needs to . Instead of stuffing every capability into the system prompt, the agent sees a lightweight catalog of skill names and descriptions, and loads the full content on demand. That's the whole point of progressive disclosure: an agent's context is a budget, and skills are a way to spend it lazily. In practice that part just works: when a request matches a skill, the model is nudged to call the built-in load skill tool, and the framework returns the skill's full content for the model to use. Triggering and loading behave exactly as advertised. But spending the budget is only half the story. Once a skill's content is loaded, where does it actually live — and is it ever dropped? The docs are silent on this, and it's the question the rest of this post digs into. The short answer: within a session, it isn't dropped at all. Starting a new session drops everything, of course — that much is obvious. The part worth knowing is what happens inside a single session: once loaded, a skill's full content stays in the conversation for the entire life of that session. There's no budget, no sliding window, no eviction. The rest of the post shows how I confirmed this, and why it matters. The sample is a tiny console app running entirely against a local Ollama https://ollama.com model — no cloud keys, and every HTTP call is traced so I can see exactly what goes over the wire complete sample code https://github.com/StormHub/stormhub/tree/main/resources/2026-06-02/AgentSkillsDemo . There's a single skill on disk: skills/unit-converter/ ├── SKILL.md name + description + usage steps └── references/conversion-table.md the actual conversion factors Wiring it into the agent is one line — AgentSkillsProvider is just an AIContextProvider : js var agentOptions = new ChatClientAgentOptions { Name = "UnitConverterAgent", ChatOptions = new ChatOptions { Instructions = "You are a helpful assistant that can convert units. ...", Tools = AIFunctionFactory.Create Tool.Convert }, AIContextProviders = skillsProvider , // <-- skills plug in here }; On every request, that provider does two things. First, it injects a catalog of skills — names and descriptions only — into the system prompt. That's the entire "advertisement" the model sees up front; no factors, no usage steps: