Sign in

Massimo Bonanni

@massimobonanni.bsky.social
131 followers 68 following 3.2K posts

"Paranormal Trainer, with the head in the Cloud and all the REST in microservices!" (cit.)

PostsRepliesMedia
Massimo Bonanni @massimobonanni.bsky.social · 3h
Multi-repo support and other improvements for GitHub Copilot in Slack and Microsoft Teams
github.blog
Multi-repo support and other improvements for GitHub Copilot in Slack and Microsoft Teams
Multi-repo support in Slack and Microsoft Teams GitHub Copilot in Slack and Microsoft Teams now supports working across multiple repositories in a single conversation. Whether you’re tracking pull requests, investigating… The post Multi-repo support and other improvements for GitHub Copilot in Slack and Microsoft Teams appeared first on The GitHub Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 8h
Staying Evergreen: How we automated secure access and repo hygiene in a shared org
github.blog
Staying Evergreen: How we automated secure access and repo hygiene in a shared org
Put native GitHub features to work to review outside collaborator access and archive stale repositories. The post Staying Evergreen: How we automated secure access and repo hygiene in a shared org appeared first on The GitHub Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 9h
Download GitHub Code Quality license usage as a CSV
github.blog
Download GitHub Code Quality license usage as a CSV
You can now download a CSV report of your GitHub Code Quality license usage to reconcile your license count with your own records. The report includes: Each active committer who… The post Download GitHub Code Quality license usage as a CSV appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 10h
The next developer interface is ambient intelligence
github.blog
The next developer interface is ambient intelligence
AI, agents, voice, and physical controls are shifting software development from operating tools to expressing intent—and helping developers stay focused on building. The post The next developer interface is ambient intelligence appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 10h
Upcoming deprecation of selected GitHub Copilot models in mid-November
github.blog
Upcoming deprecation of selected GitHub Copilot models in mid-November
We will deprecate the following models across all GitHub Copilot experiences (including Copilot Chat, inline edits, ask and agent modes, and code completions) on November 16th, 2026: Model Deprecation date… The post Upcoming deprecation of selected GitHub Copilot models in mid-November appeared first on The GitHub Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 13h
Introducing dotnetup: A toolchain manager for .NET
devblogs.microsoft.com
Introducing dotnetup: A toolchain manager for .NET
Learn how the new dotnetup tool helps macOS and Linux developers install, manage, and update user-local .NET SDKs and runtimes. The post Introducing dotnetup: A toolchain manager for .NET appeared first on .NET Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13h
GPT-chat-latest gets more intelligent, interactive, and personal in Microsoft Foundry
techcommunity.microsoft.com
GPT-chat-latest gets more intelligent, interactive, and personal in Microsoft Foundry
What if a conversational AI could respond with an interactive chart instead of a wall of text and start delivering useful information before the full answer is even ready? GPT-chat-latest in Microsoft Foundry now makes both possible. This update brings GPT-6-level intelligence to conversational and agentic applications, with stronger reasoning across coding, search, multilingual interactions, personalization, and task creation. It also introduces two capabilities that change what a response can look like and how it reaches the user: GenUI support for visual and interactive answers, and interleaved-thinking output that surfaces useful content earlier while work on the broader response continues. Built for conversational and agentic applications, GPT-chat-latest brings the latest model improvements into an endpoint designed around natural, context-rich interaction. Previous updates have focused on more direct responses, improved factual reliability, more consistent behavior, and advanced reasoning for complex planning, research, and analysis. This update builds on that foundation while expanding both what the model can do and how users can interact with its responses. Bringing GPT-6 intelligence to conversational experiences With the release of the OpenAI's GPT-6 family in Microsoft Foundry, developers gained access to a new generation of models with greater capability and efficiency for workloads including complex problem solving, coding, knowledge work, and tool-driven workflows. GPT-chat-latest builds on this evolution in model intelligence, bringing stronger capabilities into an experience designed specifically for conversation. The update improves how the model reasons and responds while strengthening many of the capabilities people rely on in everyday interactions: Stronger default intelligence: More capable responses across general reasoning and conversational tasks. Improved coding: Stronger behavior for experiences that need to understand, generate, or work with code. Better search: Improved search behavior helps the model find and work with relevant information as part of a conversation. Stronger multilingual behavior: Improved performance across languages supports more natural conversations for users around the world. More useful personalization and personal context: Improvements to personalization and personal-context retrieval help GPT-chat-latest make better use of relevant context when it is available. Improved task suggestions and creation: The model can better recognize opportunities to move from conversation to action, including suggesting or creating tasks when appropriate. The result is a more capable conversational model that can do more than generate a stronger answer. It can work with context, information, and tools to help users move a task forward. And intelligence is only part of the update. GenUI and interleaved-thinking output expand what a response can look like and how it reaches the user, creating more visual, interactive, and responsive experiences. Moving beyond text with GenUI Sometimes a user needs to compare options or explore information visually. Other times, the most useful response is something they can interact with rather than simply read. GenUI support enables GPT-chat-latest to deliver visual or interactive answers, giving developers more flexibility in how information is presented to users. This expands the traditional conversational interface. Instead of assuming every interaction needs to end with text, developers can build experiences where the presentation of an answer better reflects what the user is trying to accomplish. The important shift is not simply toward more visual experiences. It is about making the interface itself part of the response. A conversational experience can move between understanding a request, working through relevant information, and presenting the result in a useful form. This builds on the multimodal and context-aware direction of GPT-chat-latest, which already supports experiences that combine text and image context. For developers, this creates room to think beyond a static chat interface. For example, when a user asks "What's the weather forecast for my trip to Paris next week?" Without GenUI, the model returns a paragraph of text listing temperatures and conditions by day. With GenUI enabled, the model can return a structured weather card component with a visual day-by-day forecast, icons, and temperature ranges that your application renders as an interactive widget. Or a request like "Show me my team's sprint progress" could produce an embedded chart the user can hover over for details. The right response to a request might still be text, but it can also be a more visual or interactive experience when that format better fits what the user is trying to do. Delivering useful information earlier with interleaved-thinking output Complex requests can require multiple stages of work before a complete answer is ready. But the user may not need to wait for every part of that work to finish before receiving something useful. GPT-chat-latest introduces interleaved-thinking output, sometimes described as "double texting," designed to surface useful content earlier while work on the broader response continues. For instance, if a user asks "Research the top CRM tools and recommend one for a 50-person sales team," the model might first send a quick summary of the top three options it has identified, then continue working and deliver a detailed comparison with pricing and feature analysis moments later. This creates a more progressive interaction pattern. Instead of an experience where the model appears to have nothing to say until the complete response is ready, applications can begin delivering useful information earlier in the interaction. This creates another way to think about responsiveness. The experience is not defined only by how quickly the complete answer arrives, but also by how quickly the user begins receiving something useful that can move the task forward. Combined with GenUI, this starts to change two fundamental parts of the conversational experience: what a response can be and how that response unfolds. From answering questions to helping users get things done Taken individually, better coding, search, multilingual behavior, personalization, task creation, GenUI, and interleaved-thinking output address different parts of the experience. But together, they make GPT-chat-latest better suited to applications where conversation is only the starting point. A model can work through a complex request. Search can bring relevant information into the interaction. Personal context can make the experience more relevant to the individual. Task suggestions can help move from conversation toward action. GenUI can present the result in a format suited to the task. And interleaved-thinking output can make more involved interactions useful earlier as they unfold. That combination is useful across a range of use cases already identified for GPT-chat-latest: Customer support and self-service Planning and knowledge work Multimodal conversational experiences Multi-turn retrieval-grounded assistants Developers can access these improvements through the existing GPT-chat-latest in Microsoft Foundry, no need to redeploy a new model. Pricing Model Input ($/1M tokens) Cached input ($/1M tokens) Output ($/1M tokens) GPT-chat-latest $5$0.50 $30 Please refer to the Azure Pricing page to view more detailed pricing here. Get started with GPT-chat-latest in Microsoft Foundry Explore the GPT-chat-latest documentation for model details, capabilities, and availability, then try GPT-chat-latest in Microsoft Foundry to see how these updates can strengthen your conversational and agentic experiences.
000
Massimo Bonanni @massimobonanni.bsky.social · 15h
AI Scan for pull requests generally available
github.blog
AI Scan for pull requests generally available
Code scanning AI Scan for pull requests is now generally available. It complements CodeQL by finding vulnerabilities in pull request changes for languages and frameworks that CodeQL does not currently… The post AI Scan for pull requests generally available appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 16h
Stop waiting on a failed build
devblogs.microsoft.com
Stop waiting on a failed build
Stop solution builds after the first project failure so you can return to fixing the error sooner. The post Stop waiting on a failed build appeared first on Visual Studio Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 16h
Agentic autofix for code scanning alerts general availability
github.blog
Agentic autofix for code scanning alerts general availability
Agentic autofix for code scanning alerts is now generally available. It remediates alerts by working across your codebase the way a developer would: it explores relevant files, proposes a fix,… The post Agentic autofix for code scanning alerts general availability appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 17h
Email notifications for repository push events have been retired
github.blog
Email notifications for repository push events have been retired
As of October 15, 2026, email notifications for repository push events have been retired and are no longer sent. We shut down this feature to help prevent spam and abuse.… The post Email notifications for repository push events have been retired appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 19h
Vector stores in Agent Framework for Python: familiar foundations, streamlined for agents
devblogs.microsoft.com
Vector stores in Agent Framework for Python: familiar foundations, streamlined for agents
Vector stores have been part of the Python experience in Semantic Kernel for some time. With Microsoft Agent Framework, we have ported that work forward rather than starting over. This post focuses on Python. For the .NET equivalent, see Use vector stores in .NET AI apps. The foundation remains familiar: typed record definitions, stores and […] The post Vector stores in Agent Framework for Python: familiar foundations, streamlined for agents appeared first on Microsoft Agent Framework.
010
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
Infrastructure for the frontier era: Scaling intelligence through open industry collaboration
azure.microsoft.com
Infrastructure for the frontier era: Scaling intelligence through open industry collaboration
AI is reaching such a pivotal moment, and the focus is shifting from building larger frontier models to intelligence that delivers practical impact. The post Infrastructure for the frontier era: Scaling intelligence through open industry collaboration appeared first on Microsoft Azure Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
Advancing hardware security with open-source Integrated HSM technology
azure.microsoft.com
Advancing hardware security with open-source Integrated HSM technology
Explore how Microsoft is advancing hardware security through open-source Integrated HSM technology, collaboration, and cryptographic key protection. The post Advancing hardware security with open-source Integrated HSM technology appeared first on Microsoft Azure Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
Deep dive into Azure Maia 300 architecture
azure.microsoft.com
Deep dive into Azure Maia 300 architecture
Maia 300 operates as a single platform to meet the demands of cloud-scale agentic inference. The post Deep dive into Azure Maia 300 architecture appeared first on Microsoft Azure Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
Azure MCP Server 3.0 stable release: More tools. More possibilities
devblogs.microsoft.com
Azure MCP Server 3.0 stable release: More tools. More possibilities
Explore the new Azure MCP Server 3.0 stable release, with AI agent tools for Terraform, backup, recovery, and troubleshooting, plus stronger security defaults. The post Azure MCP Server 3.0 stable release: More tools. More possibilities appeared first on Azure SDK Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
GitHub availability report: September 2026
github.blog
GitHub availability report: September 2026
In September, we experienced two incidents that resulted in degraded performance across GitHub services. The post GitHub availability report: September 2026 appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
From 2,500 requests to 24: Rebuilding star history without the stargazers
github.blog
From 2,500 requests to 24: Rebuilding star history without the stargazers
Our new repo star history API now provides trends without returning individual identities or requiring unbounded database work. These are the engineering tradeoffs we made. The post From 2,500 requests to 24: Rebuilding star history without the stargazers appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
HydraFusion updates and new Max option
github.blog
HydraFusion updates and new Max option
HydraFusion has an updated model pool, improved orchestration workflows, and introduces HydraFusion Max. Both HydraFusion and HydraFusion Max are available across VS Code, the GitHub Copilot app, and GitHub Copilot… The post HydraFusion updates and new Max option appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
Visual Studio Code 1.143 (Insiders) Learn what is new in Visual Studio Code Insiders, including the latest features and improvements. Read the full article
code.visualstudio.com
Visual Studio Code 1.143 (Insiders)
Learn what is new in Visual Studio Code Insiders, including the latest features and improvements. Read the full article
010
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
New Tools, New Workflows and the Value of the Visual Studio Subscription: What We Learned at VSLive! San Diego
devblogs.microsoft.com
New Tools, New Workflows and the Value of the Visual Studio Subscription: What We Learned at VSLive! San Diego
What happens when developers who have spent decades working with Visual Studio start rethinking how they write code, learn new skills, and expand their access to development tools? At VSLive! San Diego, we had an opportunity to find out as developers gathered for five days of technical sessions, hands-on learning, and conversations about Visual Studio, […] The post New Tools, New Workflows and the Value of the Visual Studio Subscription: What We Learned at VSLive! San Diego appeared first on Visual Studio Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
GitHub Actions workflow lockfiles in public preview
github.blog
GitHub Actions workflow lockfiles in public preview
GitHub Actions workflow dependency lockfiles are now in public preview for GitHub Enterprise Cloud and GitHub Enterprise Cloud with data residency. Tags and branches can move after you review a… The post GitHub Actions workflow lockfiles in public preview appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 14/10/2026
GitHub App improvements for least privilege and management
github.blog
GitHub App improvements for least privilege and management
We’re releasing several GitHub Apps improvements today that help developers move off of classic PATs, improve GitHub App management, and request fewer sensitive permissions. We’ve also made it easier for… The post GitHub App improvements for least privilege and management appeared first on The GitHub Blog.
020
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Announcing .NET 11 Release Candidate 2
devblogs.microsoft.com
Announcing .NET 11 Release Candidate 2
.NET 11 Release Candidate 2 is available with improvements across libraries, runtime, SDK, MSBuild, NuGet, F#, ASP.NET Core, .NET MAUI, and Windows Forms. The post Announcing .NET 11 Release Candidate 2 appeared first on .NET Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
.NET and .NET Framework October 2026 servicing releases updates
devblogs.microsoft.com
.NET and .NET Framework October 2026 servicing releases updates
A recap of the latest servicing updates for .NET and .NET Framework for October 2026. The post .NET and .NET Framework October 2026 servicing releases updates appeared first on .NET Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Gemini 4 Argon in GitHub Copilot
github.blog
Gemini 4 Argon in GitHub Copilot
Gemini 4 Argon, Google’s newest frontier model, is now generally available in GitHub Copilot. It is designed for complex coding, agentic, and reasoning tasks. In early testing, Gemini 4 Argon… The post Gemini 4 Argon in GitHub Copilot appeared first on The GitHub Blog.
020
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
GitHub’s model for secret detection: Finding more secrets with less noise
github.blog
GitHub’s model for secret detection: Finding more secrets with less noise
GitHub’s context-aware secret classifier improves detection quality, raises weighted acceptance by 11.5%, and reduces median scan execution time by 86%. The post GitHub’s model for secret detection: Finding more secrets with less noise appeared first on The GitHub Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Secret scanning blocks Anthropic keys by default, adds Salesforce
github.blog
Secret scanning blocks Anthropic keys by default, adds Salesforce
Secret scanning now detects new secret types from Salesforce, Anthropic, and Cloudsmith, with the new Anthropic secret types blocked with push protection by default. New secret scanning partner Salesforce is… The post Secret scanning blocks Anthropic keys by default, adds Salesforce appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Audit GitHub Code Quality finding dismissals and reopenings
github.blog
Audit GitHub Code Quality finding dismissals and reopenings
You can now review manual dismissals and reopenings of GitHub Code Quality findings in your organization or enterprise audit log. Findings may appear in either your repository’s default-branch backlog or… The post Audit GitHub Code Quality finding dismissals and reopenings appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Enterprise managed settings enforcement updates
github.blog
Enterprise managed settings enforcement updates
Enterprise administrators can now require supported GitHub Copilot clients to retrieve current server-managed settings at startup instead of relying on a cached policy. We are also adding minimum client version… The post Enterprise managed settings enforcement updates appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Improved detection for withdrawn Dependabot alerts
github.blog
Improved detection for withdrawn Dependabot alerts
You can now more easily detect withdrawn Dependabot alerts. Dependabot withdraws and removes an alert when the advisory or vulnerability that produced it is no longer valid. Two changes help… The post Improved detection for withdrawn Dependabot alerts appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Search and filter for budgets now available
github.blog
Search and filter for budgets now available
The “Budgets and alerts” page in your GitHub billing settings now shows all of your budgets in one list that you can search and filter. Whether you manage budgets for… The post Search and filter for budgets now available appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
about transforming of windows 8.1 pro to window 11 in my intel core i3 laptop
techcommunity.microsoft.com
about transforming of windows 8.1 pro to window 11 in my intel core i3 laptop
i have sony 8gb +128ssd +intel core i3 laptop i want to convert it from windo8.1 pro to window 11
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
about transforming of windows 8.1 pro to window 11 in my intel core i3 laptop
techcommunity.microsoft.com
about transforming of windows 8.1 pro to window 11 in my intel core i3 laptop
i have sony 8gb +128ssd +intel core i3 laptop i want to convert it from windo8.1 pro to window 11
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Word is Forcing Language Change
techcommunity.microsoft.com
Word is Forcing Language Change
I would like to request that Word stop imposing its preferences on grammatical conventions such as comma usage. There are many different grammatically correct ways of inserting commas into text. Word should be alerting us to a possible problem when we are using a comma ungrammatically, not when we are departing from its preferred usage. (1) It's a nuisance for users; (2) It gradually will shift our language so that its preference becomes the only acceptable usage. Get back in your lane, Microsoft!
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Excel querry
techcommunity.microsoft.com
Excel querry
how do i subtract the contents of a cell in one worksheet from a running total in another worksheet(Same Workbook)
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Code scanning AI Scan metrics in security overview
github.blog
Code scanning AI Scan metrics in security overview
Organization and enterprise administrators can now observe the impact of AI Scan for pull requests in security overview. New metrics show how many AI Scan findings were generated, resolved, the… The post Code scanning AI Scan metrics in security overview appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Client telemetry user attribution and configurable capture
github.blog
Client telemetry user attribution and configurable capture
Enterprise administrators can now use telemetry in managed settings to attribute GitHub Copilot activity to a user without collecting their prompts, responses, or tool content. The telemetry.capture.identity setting adds three… The post Client telemetry user attribution and configurable capture appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 13/10/2026
Anonymous organization-level registries for Dependabot
github.blog
Anonymous organization-level registries for Dependabot
You can now select Anonymous as the authentication method for an organization-level private registry. Use it for registries that Dependabot can reach without credentials, such as an internal package mirror… The post Anonymous organization-level registries for Dependabot appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 12/10/2026
GitHub Copilot app for Beginners: How to teach Copilot about your codebase
github.blog
GitHub Copilot app for Beginners: How to teach Copilot about your codebase
Learn how to add custom instructions and skills to your repository, use custom agents, and connect MCP servers like Playwright. The post GitHub Copilot app for Beginners: How to teach Copilot about your codebase appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 12/10/2026
Push attribution for commits in limited public preview
github.blog
Push attribution for commits in limited public preview
GitHub now durably records the authenticated user who pushed each commit and surfaces that pusher identity in the UI and API alongside the existing author and committer fields. Commit author… The post Push attribution for commits in limited public preview appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 12/10/2026
Durable Task in the Real World: What Problems Does It Actually Solve?
devblogs.microsoft.com
Durable Task in the Real World: What Problems Does It Actually Solve?
Five practical examples of when durable execution makes sense, when it does not, and what it means for AI agents. The post Durable Task in the Real World: What Problems Does It Actually Solve? appeared first on .NET Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 12/10/2026
Delivering Agent Skills Over MCP
techcommunity.microsoft.com
Delivering Agent Skills Over MCP
Getting a skill working with one agent is a useful start. Sharing it with other agents raises a different question: where should that skill live? You could give each agent its own copy. But when the skill changes, those copies need updating. The official Skills extension for Model Context Protocol (MCP) provides a standard way to make skills available from a server, so compatible agents can find and load them when needed. Let's look at what happens across that connection, then where Microsoft Foundry fits in. What the extension adds MCP already gives agents access to content from servers through resources. The Skills extension builds on that. It adds a way to ask which skills a server offers and get the details needed to load them. It doesn't change the skill format, and it doesn't run a skill on the server. The application running your agent, called the host, still decides how to offer skills to the user or model and load the selected instructions. Both the server and the host need the right support. Being able to call an MCP tool isn't enough to discover and load remote skills. A custom tool that returns skill text isn't, by itself, an implementation of this extension either. The extension is identified as io.modelcontextprotocol/skills. Its proposal, SEP-2640, has reached Final status. Client support is still developing, so a published specification doesn't mean every MCP host supports it yet. How an agent gets a skill The basic sequence is straightforward: find out what's available, select a skill, and read the content needed to use it. The host's MCP client handles the requests to the server. We'll follow the case where the server provides a file list, called a manifest. It includes each file's address, size, and a SHA-256 digest: a fingerprint used to check that the file received matches what the server listed. The examples below use a generic example-skill with two files. They illustrate the official message shapes, not a captured server session. They use protocol revision 2026-07-28 and include its required request metadata. The _meta block tells the server which protocol version and client capabilities apply to each request, including the client's Skills extension support. Both sides must declare support. Use a client and server that support this revision. The Foundry examples later follow its separately documented path. These examples show JSON-RPC message bodies, not complete HTTP requests. For Streamable HTTP, POST each message to the server's MCP endpoint with Content-Type: application/json, Accept: application/json, text/event-stream, and MCP-Protocol-Version: 2026-07-28 headers. Also set Mcp-Method to the body's method, such as skills/list. For resources/read, set Mcp-Name to the requested URI, such as skill://example-skill/SKILL.md. The mirrored values must match the body. See the HTTP header requirements. Find out what's available First, the server declares that it supports resources and the Skills extension. This is the relevant fragment of its server/discover response: { "capabilities": { "resources": {}, "extensions": { "io.modelcontextprotocol/skills": {} } } } The empty extension object means skills are supported, but optional directory reading isn't enabled. The client can now ask for the available skills: { "jsonrpc": "2.0", "id": 1, "method": "skills/list", "params": { "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientCapabilities": { "extensions": { "io.modelcontextprotocol/skills": {} } }, "io.modelcontextprotocol/clientInfo": { "name": "example-client", "version": "1.0.0" } } } } Here is a response containing one skill: { "jsonrpc": "2.0", "id": 1, "result": { "resultType": "complete", "skills": [ { "uri": "skill://example-skill/SKILL.md", "frontmatter": { "name": "example-skill", "description": "An example skill for this article." }, "resources": [ { "uri": "skill://example-skill/SKILL.md", "digest": "sha256:d2069d0f3682fea0d69e62247386e950e9ad958bab5b186b456dc1fb8266e312", "size": 138 }, { "uri": "skill://example-skill/references/notes.md", "digest": "sha256:e76b3033746e3c5d8cc970b21b15ce40f868e6902c065521a1abf373f4a19c85", "size": 58 } ] } ], "ttlMs": 300000, "cacheScope": "public" } } The resources array is the manifest. It lists both files, but doesn't contain their text. The host can show the skill's name and description without fetching either file. size counts bytes, not characters. The cache fields describe how long the result stays fresh and whether it can be shared. They aren't trust checks, and public here is a choice for this illustrative server, not a recommendation for private skill content. resultType: "complete" means this request completed, not that the server's entire catalog is in the response. If it includes nextCursor, pass that value as params.cursor on the next skills/list request. Each skill's manifest stays whole on one page. The user or model can then select a relevant skill. The host keeps track of which server it came from and its address, known as a URI. Read and load the instructions After any required approval, the host uses resources/read to get the selected skill's instructions. It checks them against the details from the listing before adding them to the agent's context, the information available to the model. The request uses the instruction URI from the listing: { "jsonrpc": "2.0", "id": 2, "method": "resources/read", "params": { "uri": "skill://example-skill/SKILL.md", "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientCapabilities": { "extensions": { "io.modelcontextprotocol/skills": {} } }, "io.modelcontextprotocol/clientInfo": { "name": "example-client", "version": "1.0.0" } } } } This time, the response contains the actual file text: { "jsonrpc": "2.0", "id": 2, "result": { "resultType": "complete", "contents": [ { "uri": "skill://example-skill/SKILL.md", "mimeType": "text/markdown", "text": "--- name: example-skill description: An example skill for this article. --- Read references/notes.md when additional guidance is needed. " } ], "ttlMs": 300000, "cacheScope": "public" } } The sequences represent line breaks in the file. Encoding the decoded text as UTF-8 produces 138 bytes. Computing SHA-256 over those bytes produces the digest shown in the first manifest entry. The fingerprint covers the file bytes, not the surrounding JSON response. Reading the file and loading the skill are different steps. An MCP resource browser could read the same file to display it to a person. That doesn't make the skill active. The host must handle the checks and approvals that come with loading it for the agent. Get supporting files when needed If the agent needs a reference or another supporting file, the host reads it from the same server using resources/read. It checks that the file is in the saved manifest and that its contents match before using it. For our example, the relative reference resolves to the second URI in the manifest. When that file is needed, the client sends: { "jsonrpc": "2.0", "id": 3, "method": "resources/read", "params": { "uri": "skill://example-skill/references/notes.md", "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientCapabilities": { "extensions": { "io.modelcontextprotocol/skills": {} } }, "io.modelcontextprotocol/clientInfo": { "name": "example-client", "version": "1.0.0" } } } } The server returns: { "jsonrpc": "2.0", "id": 3, "result": { "resultType": "complete", "contents": [ { "uri": "skill://example-skill/references/notes.md", "mimeType": "text/markdown", "text": "Use only the information relevant to the current request. " } ], "ttlMs": 300000, "cacheScope": "public" } } Those 58 bytes match the second manifest entry. Even a changed line ending would change the fingerprint, so the host must check the exact bytes received. Here's how those steps fit together: The host reads instructions and supporting files as needed, checking each against the server's manifest before use. Files that aren't needed stay unread. Connecting to a server doesn't mean downloading every skill it offers. And loading a skill still doesn't guarantee that the agent will follow every instruction correctly. Which request does what? You don't need to memorize the method names, but these are the ones you'll see when working with an implementation: MethodWhen to use itskills/listFind available skills and get their detailsskills/getGet or refresh the details for one skill using its URIresources/readRead instructions or a supporting fileresources/directory/readList the files and folders directly inside a directory, if the server supports it You don't need to call skills/get after every skills/list. The listing already contains a complete entry for each returned skill. Use skills/get when you already know a skill's URI or need fresh details for that skill. For example, a direct lookup looks like this: { "jsonrpc": "2.0", "id": 4, "method": "skills/get", "params": { "uri": "skill://example-skill/SKILL.md", "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientCapabilities": { "extensions": { "io.modelcontextprotocol/skills": {} } }, "io.modelcontextprotocol/clientInfo": { "name": "example-client", "version": "1.0.0" } } } } The response puts the same complete entry shown above under result.skill instead of result.skills, alongside resultType, ttlMs, and cacheScope. It returns metadata and the manifest, not the file text. { "jsonrpc": "2.0", "id": 4, "result": { "resultType": "complete", "skill": { "uri": "skill://example-skill/SKILL.md", "frontmatter": { "name": "example-skill", "description": "An example skill for this article." }, "resources": [ { "uri": "skill://example-skill/SKILL.md", "digest": "sha256:d2069d0f3682fea0d69e62247386e950e9ad958bab5b186b456dc1fb8266e312", "size": 138 }, { "uri": "skill://example-skill/references/notes.md", "digest": "sha256:e76b3033746e3c5d8cc970b21b15ce40f868e6902c065521a1abf373f4a19c85", "size": 58 } ] }, "ttlMs": 300000, "cacheScope": "public" } } A listing can be partial, so not seeing a skill there doesn't necessarily mean it is unavailable. It can still be looked up by URI. Directory reading is optional. Clients can only use it when the server declares directoryRead: true. If the manifest already lists the files they need, an extra directory request isn't necessary. What gets checked before loading? Getting content from a server doesn't automatically make it trustworthy. The extension sets rules for checking that content and keeping track of its source. The host must remember both the server and the skill's URI. Two servers might offer skills with the same name, or even the same URI. They are still separate skills and must not silently replace each other. The host must also identify the originating server when it adds the content to the model's context. For skills with a manifest, the host must check both the size and digest of each file it reads. The size checks the byte count. The SHA-256 digest detects content changes even when the file's length stays the same. Both must match the manifest before the host uses the file. The host also checks that the metadata at the top of the instructions, called frontmatter, matches the listing. If a file no longer matches, the host must not use it. It can refresh the entry with skills/get. Saved approval is tied to the file URIs and fingerprints. If a refreshed manifest changes, adds, or removes a file, that approval is revoked and the host must ask again before loading or executing the changed skill. For example, if the server changes the notes file above after listing it, the read may succeed but verification will fail. That's a host-side rejection, not a JSON-RPC error from the server. The host must not use the changed text under the old manifest. These checks tell you that the content matches what the server offered. They don't tell you whether the content is safe or the instructions are good. There is an exception to the file-checking approach. Servers can mark generated content as "resources": "dynamic" when stable fingerprints aren't available. Hosts may refuse to load it. If they accept it, they must still check the frontmatter. Because the content can change between requests, approving it once doesn't automatically approve different instructions or scripts returned later. The host cannot treat the earlier approval as permission to use that changed content. Permissions are separate too. Reading a script doesn't give the agent permission to run it. Under the Skills extension specification, the host must obtain explicit user approval for that skill before allowing host-side execution. The extension defines this requirement, but the host implements the approval and execution controls. If the skill's instructions ask the agent to use an additional tool, that request is not permission to use it. The host must still enforce its tool access controls and obtain any required user approval. Where Microsoft Foundry fits Microsoft Foundry offers skills support in preview. Its integration guide describes toolbox-based skill discovery as following SEP-2640. A toolbox gives agents one MCP endpoint for accessing its tools and skills. To share a skill this way: Upload the skill content to create a skill version in your Foundry project. Add a reference to the skill to a toolbox in the same project. Connect an agent that supports this skill-loading approach to the toolbox's MCP endpoint. What the toolbox configuration looks like Suppose you've already uploaded your skill to Foundry. The following request, adapted from the toolbox guide, creates a toolbox version that references it. example-skill is a placeholder name, and must match a skill in your project. You need the Foundry User role and a bearer token for scope https://ai.azure.com/.default. Use a project in a supported Agent Service region. The REST creation and MCP resource checks described here succeeded in East US 2. POST {project_endpoint}/toolboxes/{toolbox_name}/versions?api-version=v1 Authorization: Bearer {token} Content-Type: application/json Accept: application/json Foundry-Features: Skills=V1Preview { "description": "Toolbox with a skill reference", "tools": [], "skills": [ { "type": "skill_reference", "name": "example-skill", "version": "1" } ] } Replace {project_endpoint} with your project's endpoint, shaped like https://<account>.services.ai.azure.com/api/projects/<project>, and the other placeholders with your own values. Use an existing skill version in place of "1", or omit version to follow that skill's default. Notice that skills is separate from tools. An empty tools array is valid for a skills-only toolbox. This request creates a full version, not a patch that adds one skill to an existing version. For an existing toolbox, include the tools and skill references you want to retain in the new version. This is a Foundry configuration request, not an MCP capability declaration. It tells Foundry which skills to expose, not the host how to load them. The test returned HTTP 200 with a toolbox version object. Here is the response shape for the example request, using example-toolbox for {toolbox_name} and an illustrative ID: { "metadata": {}, "id": "toolbox_example:1", "name": "example-toolbox", "version": "1", "description": "Toolbox with a skill reference", "created_at": 1791423871, "tools": [], "skills": [ { "type": "skill_reference", "name": "example-skill", "version": "1" } ], "object": "toolbox.version" } The top-level name and version identify the created toolbox version. The entry under skills identifies the skill version it references. For testing, use the returned toolbox name and version in this endpoint: {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1 Here, {version} is the returned toolbox version, not the skill version in the request. This URL connects to that specific toolbox version. To connect to whichever toolbox version is marked as the default, use this URL instead: {project_endpoint}/toolboxes/{toolbox_name}/mcp?api-version=v1 This URL stays the same when you change the toolbox's default version. Clients using it aren't pinned to a specific version. The first version of a new toolbox becomes the default automatically. Creating another version doesn't automatically make it the default. What the agent discovers in Foundry Follow the guide's MCP connection setup, including authentication and session initialization. Its examples use the earlier initialize exchange, not the server/discover approach shown above. During initialization, the client requests a protocol version and the server replies with the version it supports. The client can continue only if it also supports the returned version. In our test, Foundry returned 2025-11-25, so we used MCP-Protocol-Version: 2025-11-25 on later HTTP requests. If the server also returns an Mcp-Session-Id header, include that header and its value on later requests so the server can associate them with the same session. A compatible MCP client SDK handles these details for you. The preview guide then says to send resources/list to the toolbox endpoint: { "jsonrpc": "2.0", "id": 10, "method": "resources/list", "params": {} } A shortened response fragment from the tested resource shape, with the skill name replaced by example-skill, is: { "result": { "resources": [ { "uri": "skill://example-skill/SKILL.md", "name": "example-skill" }, { "uri": "skill://index.json", "name": "skills-index" } ] } } The tested endpoint returned an instruction URI ending in /SKILL.md and a separate skill://index.json resource. The guide shows the shorter skill://{name} shape. Always use the URI your toolbox actually returns: { "jsonrpc": "2.0", "id": 11, "method": "resources/read", "params": { "uri": "skill://example-skill/SKILL.md" } } The response contains the instruction text. This example uses the tested content with the skill name replaced by example-skill: { "jsonrpc": "2.0", "id": 11, "result": { "contents": [ { "uri": "skill://example-skill/SKILL.md", "mimeType": "text/markdown", "text": "--- name: example-skill description: An example skill for article validation. --- When asked for the validation marker, respond with SKILL-CHECK-PASSED." } ] } } Listing the resource and reading its instructions confirms that the content is accessible. It doesn't confirm that your agent has loaded it as a skill. The guide includes a .NET integration with Microsoft Agent Framework using AgentSkillsProviderBuilder.UseMcpSkills. It makes names and descriptions available to the agent, then loads selected instructions and supporting files when needed. Versions and compatibility Foundry also manages skill versions. Each version is a fixed snapshot. You can set version in a toolbox's skill reference to select a specific skill version, or omit it to use the skill's default version. For example, suppose skill version "1" is the default and you create version "2". You can test version "2" by explicitly referencing it in a test toolbox. If you later make it the skill's default, references without a version will use version "2". References explicitly set to "1" will still use version "1". This setting selects the skill version, not the toolbox version. How close is this to the official extension? Reading content and loading it when needed follow the same approach. The table below compares how skills are discovered, read, and loaded: AreaOfficial specificationFoundry previewReading contentUses MCP resources and resources/readServes toolbox skills as MCP resourcesLoading contentLoads instructions and supporting files when neededThe Agent Framework integration loads content when neededFinding skillsUses skills/list and skills/getThe guide describes resources/list. The tested endpoint also accepted skills/list and returned a file manifest Protocol support still matters. The tested Foundry endpoint accepted skills/list over its negotiated 2025-11-25 protocol, but rejected a 2026-07-28 request to server/discover as an unsupported protocol version. For a Foundry integration, follow the product guide and check your chosen client. Don't assume that every client supporting the latest extension will connect and load skills without changes. Foundry skills support is in preview. The preview has no service-level agreement and Microsoft does not recommend it for production workloads. Before you try it Start with the client support matrix and the documentation for your agent's host. Look for Skills extension support, not only MCP tool support. Then check a few things in your setup: Can the host find and load skills from your server for your agent? Does it read supporting files only when needed? Does it check the files and keep track of which server supplied them? Does it ask for the required approvals before running code? The useful change here is how skills reach your agents. With support on both sides, you have a standard way to share them over MCP instead of building a separate skill-delivery API for each agent. Which of your existing skills would benefit most from being available over MCP? Further reading MCP Skills extension overview Current Skills extension specification SEP-2640: Skills Extension MCP extension client support matrix Use skills with Microsoft Foundry agents (preview) Attach skills to a Foundry toolbox
010
Massimo Bonanni @massimobonanni.bsky.social · 12/10/2026
Building Permission-Aware Hosted Agents for SharePoint in Foundry Agent Service
techcommunity.microsoft.com
Building Permission-Aware Hosted Agents for SharePoint in Foundry Agent Service
Organizations increasingly publish agents to Microsoft Teams and Microsoft 365 Copilot that answer questions using internal knowledge sources. SharePoint is a very common source for this information; where many times access is different for every user. A finance employee, HR employee, and project manager may all ask the same question but have access to different documents. When an agent is hosted in Foundry Agent Service, the agent itself runs under its own identity. This creates an important challenge: how can retrieval respect the permissions of the person asking the question rather than the permissions of the agent? This article walks through an architecture that preserves SharePoint permission trimming without requiring a custom setup, data movement or separate retrieval infrastructure. Why agent identity is not enough Hosted agents run as their own agent identity. When Foundry Agent Service runs your Microsoft Agent Framework agent as a hosted agent, it authenticates as the agent, not as the person chatting with it. SharePoint permissions belong to users. Two people asking the same question may be allowed to see different documents. So grounded answers (RAG) need per-user retrieval. If retrieval runs as the agent, SharePoint can't check the asking user's access. Results are either empty or not filtered for that user. Therefore the user's token has to reach the retrieval step. Changing the model or the prompt can't fix this. The architecture has to carry the user's identity all the way to SharePoint. This is the key architectural principle behind this solution. The hosted agent keeps using its own identity for model inference, while retrieval runs with the signed-in user's identity. What you'll build A hosted agent, published to Microsoft Teams, that answers from one or more SharePoint sites. Answers limited to what each user can open in SharePoint, using On-Behalf-Of (identity passthrough) retrieval. Clickable citations back to the source documents. Built on out-of-the-box Foundry IQ and Foundry toolbox capabilities: no custom server to host, and no client secrets in the retrieval path. The complete sample is on GitHub: SharePoint knowledge base sample Note: Remote SharePoint knowledge sources in Foundry IQ were in preview at the time this article was written. Why not Work IQ? Work IQ also retrieves as the signed-in user, and it's the right choice when an agent needs broad Microsoft 365 context. This pattern is for agents that should answer only from specific SharePoint sites, treating SharePoint as a governed knowledge source with a defined boundary. Use Work IQ when the agent should reason over a user's wider work context. Use this pattern when the agent must stay inside a defined set of SharePoint content. How it works The agent runs as itself. Retrieval runs as the user. Three pieces carry the user's identity end to end: FoundryToolbox in the agent sends the per-request call ID with each tool call, so Foundry knows which user the call belongs to. A UserEntraToken connection passes that user's Microsoft Entra ID token to the Foundry IQ knowledge base on Azure AI Search. This is identity passthrough (On-Behalf-Of): every request downstream runs as the signed-in user. A remote SharePoint knowledge source queries SharePoint live through the Microsoft 365 Copilot Retrieval API as that user, scoped to the site paths you choose. Nothing is copied into an index. Before you start RoleRequired permissionsSetup userSearch Service Contributor on the Azure AI Search service, and rights to create connections and toolboxes in the Foundry projectEnd usersSearch Index Data Reader on the Search service, Foundry Agent Consumer on the agent, a Microsoft 365 Copilot licence, and access to the documents in SharePoint The Search service must be in a region that supports agentic retrieval, in the same Microsoft Entra tenant as Microsoft 365. With the concepts established, let's build the end-to-end solution. Build it in four steps The full configuration is in the sample repository. Below are only the settings that matter. 1. Create the knowledge base Run setup/create_knowledge_base.py. It creates a remote SharePoint knowledge source and a knowledge base. The setting that limits retrieval to your site is: "filterExpression": "Path:\"https://<TENANT>.sharepoint.com/sites/<SITE>/\"" 2. Connect it to Foundry with the user's identity Run setup/create_connection.py. It registers the knowledge base's MCP endpoint as a Foundry connection. The setting that matters most in the whole architecture is: "authType": "UserEntraToken" With UserEntraToken, Foundry forwards the signed-in user's token instead of a shared identity, so SharePoint can apply that user's permissions. Then run setup/create_toolbox.py. It wraps the connection in a toolbox that exposes only knowledge_base_retrieve. 3. Build the agent The agent itself is small. The key line is tools=FoundryToolbox(credential): agent = Agent( client=FoundryChatClient(project_endpoint=endpoint, model=model, credential=credential), instructions=INSTRUCTIONS, tools=FoundryToolbox(credential), ) Two instructions in the agent's prompt made a visible difference in Teams: Cite every source as a markdown link, using the Title and uri fields the tool returns. If the tool returns nothing relevant, say that the available sources do not contain the answer. Do not guess. The first gives users clickable citations. The second stops the model from filling gaps when a user can't see a document. 4. Deploy and publish to Teams Deploy with the Azure Developer CLI (azd up), then publish the agent to Microsoft Teams and Microsoft 365 Copilot. The repo includes a script that also works for Foundry projects on a private network. The tool adds no separate, tool-specific consent flow for users. Prove the permission trimming A good answer doesn't prove the right permissions were used. Test with two users and one document that only one of them can open: UserSharePoint accessResult in TeamsACan open the documentAnswer from the document, with a citation linkBCannot open the document"The available sources do not contain the answer." In our testing, both users' requests reached the knowledge base, but only user A got content from the document, because the Microsoft 365 Copilot Retrieval API ran as each user. Run the test in separate conversations, and repeat it after any permission change. Common pitfalls Using a managed identity for the connection The retrieval runs as the agent's managed identity, so SharePoint has no user to check permissions against. In our testing, a ProjectManagedIdentity connection failed with x-ms-query-source-authorization is invalid. Use UserEntraToken. Forgetting Search Index Data Reader Because each user's own token reaches Azure AI Search, every user needs this role, not just you. Otherwise the user can reach the agent, but retrieval fails for them. Assign the role to a security group once, replacing SEARCH_SERVICE, RESOURCE_GROUP and $GROUP_ID with your own values: $SEARCH_ID = az search service show -n SEARCH_SERVICE -g RESOURCE_GROUP --query id -o tsv az role assignment create --assignee $GROUP_ID --role 'Search Index Data Reader' --scope $SEARCH_ID Using a custom MCP client instead of FoundryToolbox A hand-built MCP client that attaches only the agent's credential drops the per-request call ID, which links a tool call to its user. In our testing with another OAuth tool, every user ended up running as whoever had consented first. FoundryToolbox fixed it. Building a custom MCP proxy A custom On-Behalf-Of (OBO) proxy can work, but you then own its hosting, secrets, token checks and patching. The knowledge base gives the same per-user retrieval with built-in components. Get started Try it: clone the sample and follow the README end to end. Learn the building blocks: Create a remote SharePoint knowledge source Connect a Foundry IQ knowledge base to Foundry Agent Service Toolbox authentication What is a Foundry toolbox? Use a toolbox with a hosted agent Validate before rollout: use the two-user isolation checklist. Share your scenario: open an issue on the repo. Acknowledgements Thanks to Mahya Gheini and Linda Li from the Microsoft Foundry product team for their guidance on toolboxes and knowledge bases.
010
Massimo Bonanni @massimobonanni.bsky.social · 10/10/2026
New controls and chat improvements in Copilot for JetBrains
github.blog
New controls and chat improvements in Copilot for JetBrains
This update brings more control over default models and MCP server in GitHub Copilot for JetBrains. It also makes diagnostics easier to address, improves chat navigation and account controls, and… The post New controls and chat improvements in Copilot for JetBrains appeared first on The GitHub Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 10/10/2026
Sway Crashing
techcommunity.microsoft.com
Sway Crashing
Microsoft sway keeps crashing and resetting and it makes me very upset. I am trying to work on a newsletter and I keep losing work. I know it is not a browser side issue, I have used 3 different browsers and multiple devices on different Wi-Fi's. Others are also experiencing this same issue.
000
Massimo Bonanni @massimobonanni.bsky.social · 10/10/2026
Introducing Microsoft-Decision-1 in Microsoft Foundry for decision and classification workloads
techcommunity.microsoft.com
Introducing Microsoft-Decision-1 in Microsoft Foundry for decision and classification workloads
Not every step in an AI application needs a large language model to generate a response. Many high-volume application steps are decisions: classify an input, select an option, assign a score, verify a condition, prioritize an item, or control a workflow. To suit these tasks, a new class of models have been developed to address these fast, structured, requests. We are excited to be adding Microsoft-Decision-1 to the Foundry Models Catalog. Our newest, decision model for applications that need to choose among predefined options rather than generate open-ended text. What are decision models? As AI applications mature, the industry is moving beyond the idea that every model interaction needs to result in generated content. Developers are increasingly building systems composed of different models, tools, and application logic, each suited to a different part of the workload. Within those systems, many of the most frequent operations are not generation problems at all. They are decisions about what should happen next. Decision models were designed for this emerging layer of the AI stack. Rather than producing an open-ended response, they evaluate a defined set of possibilities and return structured signals that an application can use to take action. That makes them particularly relevant as developers move toward more dynamic AI applications, where models need to work together and applications must continuously determine where requests should go, which actions should be taken, and when additional processing is needed. For developers, this creates an opportunity to be more intentional about where and how different models are used. Instead of relying on a general-purpose generative model for every step, developers can match the model to the task, using generative and reasoning models where their capabilities are needed and decision models for focused, repeatable choices. The result is a more modular approach to AI application design, where generation, reasoning, and decision-making become complementary building blocks for creating intelligent systems. What is Microsoft-Decision-1? Now available in public preview, Microsoft-Decision-1 is a decision model built on Qwen3.5-9B and designed for applications that need to make fast, structured choices among predefined options. It brings a purpose-built decision capability to the Foundry Models catalog, giving developers another building block for designing AI applications where different steps may benefit from different types of models. Built for predefined decisions. Microsoft-Decision-1 supports use cases such as agent controls, model routing, intent analysis, data labeling, AI judging, incident response routing, data validation, and content classification. Structured for application logic. The model produces predefined answers and confidence signals that applications can use to select the next action or route uncertain results for further review. Designed for lower-latency, lower-cost workflows. Microsoft-Decision-1 is intended for simple, repeatable, and time-sensitive decisions that do not require the generative capabilities or extended reasoning of a larger language model. You can explore these capabilities in the Foundry Playground. This example below shows Microsoft-Decision-1 checking urgency, selecting a support team, and scoring priority for a customer request. Microsoft-Decision-1 in the Microsoft Foundry playground. Microsoft-Decision-1 represents an area of continued model innovation at Microsoft. The team will rebase future iterations of the model on OpenAI models and Microsoft’s MAI models, bringing together advances from Microsoft’s own model portfolio with a model architecture purpose-built for decision-making. Over time, this work could create opportunities to further explore how Microsoft models can be specialized for the high-volume decisions that sit inside applications and agentic systems. For developers, Microsoft-Decision-1 expands the choices available when building applications and agents with Foundry. Rather than using the same model for every step, developers can combine generative and reasoning models with a decision model and choose the capability that best fits each part of the workflow. That model diversity is increasingly important as AI applications evolve from single-model experiences into systems that coordinate specialized models, tools, and actions. How developers are building with Microsoft-Decision-1 Enterprise applications make decisions throughout a workflow: identifying a customer’s intent, selecting a tool, routing an incident or checking whether a response meets specified criteria. For example, a support application could classify a request as a billing question, a technical issue or an account-access problem. An agent could evaluate a proposed response against a quality rubric and determine whether to accept it, revise it or request review. If the player doesn’t load, open the video in a new window: Open video These decisions can sit alongside generative and reasoning steps in the same application. A language model might draft a response, while Microsoft-Decision-1 evaluates it against defined criteria. With Microsoft-Decision-1 in the Foundry catalog, developers can explore decision workloads through the platform they use to discover and deploy models across various scenarios: Classification: Assign inputs to defined categories, such as customer intents or feedback themes. Routing: Select a model, tool, destination or workflow from a set of options. Evaluation and verification: Assess responses or inputs against specified criteria. Workflow control: Decide whether to continue, retry, stop or send a case for review. A different model for a different kind of workload For developers, decision models introduce a different way to think about optimization. An AI application may make thousands of small choices around a comparatively small number of complex generative or reasoning tasks. Running every one of those steps through the same general-purpose model can overlook an opportunity to optimize the system around the work each step actually needs to perform. That pattern is showing up across Microsoft. Xbox Research used Microsoft-Decision-1 to categorize more than 10,000 pieces of open-ended feedback into researcher-defined themes, reporting quality competitive with GPT-5 while running 80–100 times faster. Other Microsoft teams have also evaluated the model for assessing Copilot response quality and supporting adaptive replanning in Microsoft Discovery. These scenarios matter because they are not simply classification benchmarks. They are examples of decisions embedded inside larger applications. As AI architectures become more modular, developers can consider generation, reasoning, and decision-making as distinct workloads, then select models based on what each step actually requires. For benchmark methodology, measured results and additional examples, read the Command Line blog here. Putting Microsoft-Decision-1 to work For tasks with predefined outcomes, evaluate Microsoft-Decision-1 using representative inputs and the quality, latency and cost requirements of your application. Compare decision accuracy, including ambiguous cases, latency under expected traffic and cost per completed decision. Where confidence estimates inform automation or review thresholds, validate their calibration on your own data. Start with a decision in your application: The following Python example shows how to compare support-routing decisions with expected labels and measure request latency. Replace the illustrative messages and category definitions with examples from your own workload. Before running: Deploy Microsoft-Decision-1 in your Microsoft Foundry subscription and configure FOUNDRY_BASE_URL and FOUNDRY_API_KEY. Set FOUNDRY_MODEL to the model or deployment identifier specified in the quickstart. Keep credentials outside the source code. Model requests incur applicable usage charges. Integration note: Confirm the route and authentication header before running it against your deployment. #!/usr/bin/env python3 """Classify support requests with Microsoft-Decision-1.""" import json import os import urllib.error import urllib.request from collections.abc import Mapping from statistics import median from time import perf_counter from typing import Any from azure.identity import DefaultAzureCredential OPTIONS = { "billing": "Charges, invoices, refunds, or subscription payments", "technical": "Software errors, bugs, or integration failures", "account": "Sign-in, password, or account-access problems", } EXAMPLES = [ ("I was charged twice.", "billing"), ("The integration crashes during checkout.", "technical"), ("I cannot sign in after resetting my password.", "account"), ] AZURE_ENDPOINT = os.environ["AZURE_ENDPOINT"].rstrip("/") DEPLOYMENT_NAME = os.environ["DEPLOYMENT_NAME"] TIMEOUT_SECONDS = 60 TOKEN_SCOPE = "https://cognitiveservices.azure.com/.default" CREDENTIAL = DefaultAzureCredential() class DecisionAPIError(RuntimeError): """Raised when the API can't return a valid classification.""" def read_choice( payload: Any, options: Mapping[str, str], ) -> str: if not isinstance(payload, dict): raise DecisionAPIError("The API returned an invalid response.") answers = payload.get("answers") if not isinstance(answers, dict): raise DecisionAPIError("The API returned no answers object.") answer = answers.get("team") if not isinstance(answer, dict) or answer.get("type") != "choice": raise DecisionAPIError("The API returned an invalid answer.") choice = answer.get("choice") if not isinstance(choice, str) or choice not in options: raise DecisionAPIError( f"The API selected an unsupported team: {choice!r}." ) return choice def predict( text: str, options: Mapping[str, str], ) -> str: if not text.strip(): raise ValueError("text must not be empty.") if len(options) < 2: raise ValueError("options must contain at least two choices.") body = json.dumps( { "model": DEPLOYMENT_NAME, "state": text, "questions": { "team": { "type": "choice", "instructions": ( "Which team should handle this customer support " "request? Select exactly one team based on the " "primary problem." ), "criteria": dict(options), } }, } ).encode("utf-8") access_token = CREDENTIAL.get_token(TOKEN_SCOPE).token request = urllib.request.Request( f"{AZURE_ENDPOINT}/providers/microsoft/v1/systemone", data=body, headers={ "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", "Accept": "application/json", }, method="POST", ) try: with urllib.request.urlopen( request, timeout=TIMEOUT_SECONDS, ) as response: response_body = response.read() except urllib.error.HTTPError as exc: raise DecisionAPIError( f"The API returned HTTP {exc.code}." ) from exc except urllib.error.URLError as exc: raise DecisionAPIError( f"Couldn't reach the API: {exc.reason}." ) from exc try: payload = json.loads(response_body) except (json.JSONDecodeError, UnicodeDecodeError) as exc: raise DecisionAPIError( "The API returned invalid JSON." ) from exc return read_choice(payload, options) def main() -> None: correct = 0 latencies_ms = [] for text, expected in EXAMPLES: start = perf_counter() predicted = predict(text, OPTIONS) elapsed_ms = (perf_counter() - start) * 1000 correct += int(predicted == expected) latencies_ms.append(elapsed_ms) print( f"Expected={expected}, predicted={predicted}, " f"latency={elapsed_ms:.1f} ms" ) accuracy = correct / len(EXAMPLES) print(f"Accuracy: {accuracy:.1%}") print( "Median request latency: " f"{median(latencies_ms):.1f} ms" ) if __name__ == "__main__": main() This small dataset illustrates the evaluation process. For meaningful results, use a larger, representative labeled dataset and inspect errors by category. The measured latency includes the client call and network time; sequential requests do not measure latency under production load. Assess cost and confidence calibration separately. Your application defines the available options and resulting actions. Use evaluation results to determine where automation is appropriate and where additional validation or human review is needed. Pricing Model Deployment Type Input Tokens (#/1M) Output tokens (#/1M) Microsoft-Decision-1 US Datazone $0.042 N/A EU Datazone $0.042 N/A Get started Explore Microsoft-Decision-1 in the Foundry catalog to make your first request. We look forward to seeing how developers use Microsoft-Decision-1 to bring structured decisions into their applications and agents through Microsoft Foundry.
010
Massimo Bonanni @massimobonanni.bsky.social · 10/10/2026
GitHub Copilot weekly releases — October 5
github.blog
GitHub Copilot weekly releases — October 5
This week’s updates make Copilot easier to use across accounts and environments, with more control over what agents can access and how you manage their work. GitHub Copilot Claude Haiku… The post GitHub Copilot weekly releases — October 5 appeared first on The GitHub Blog.
010
Massimo Bonanni @massimobonanni.bsky.social · 09/10/2026
CodeQL 2.27.2 improves C++, Go, Rust, and JavaScript analysis
github.blog
CodeQL 2.27.2 improves C++, Go, Rust, and JavaScript analysis
CodeQL 2.27.2 is now available, adding a C++ regular-expression parser and analysis improvements across several languages. CodeQL is the static analysis engine behind GitHub code scanning, which helps you find… The post CodeQL 2.27.2 improves C++, Go, Rust, and JavaScript analysis appeared first on The GitHub Blog.
000
Massimo Bonanni @massimobonanni.bsky.social · 09/10/2026
Copilot code review: New organization billing options and controls
github.blog
Copilot code review: New organization billing options and controls
This release adds new billing and license controls for Copilot code review admins: Billing: Organization owners can bill Copilot code reviews from members with a Copilot license to the organization’s… The post Copilot code review: New organization billing options and controls appeared first on The GitHub Blog.
000