Build, run, and debug event-driven AI apps right inside GitHub Copilot. The new Azure Functions Hosted Skills canvas brings instructions, triggers, and live results into one workspace, so you can spend less time switching tools and more time building.
We have been evolving Azure Functions from the bottom up: first the infrastructure with Flex Consumption, then the way you write an app, and now the tools you use to build it.
We're introducing a new developer experience for event-driven apps: the Azure Functions Hosted Skills canvas in the GitHub Copilot app. Your Function App, plain-English instructions, trigger controls, and live logs sit beside your conversation. From choosing an event to reading the result, the development loop stays in one window, with Copilot there when you need a hand.
Let's walk through a daily digest for the Azure Functions host repository on GitHub.
Start in the canvas
Open Azure Functions Hosted Skills and choose Local Function App. Use the generated daily repository digest starter for this walkthrough. The app's source lives in your repo or worktree; you do not need an Azure deployment to test it locally.
The Hosted Skills canvas alongside Copilot, with local setup and developer controls in view.Choose the event, then the instructions
First pick the event that starts the work. For this daily digest, choose Timer and set its schedule. HTTP or Queue are other options when a request or message should start the task.
Then use or edit Skill instructions. A hosted skill is a set of instructions for an AI task, written in a Markdown .agent.md file. They describe what the app should do when the event arrives. Here, we ask the app to inspect recent repository activity and write a digest with links to the evidence.
The Timer sets when the skill runs; the instructions describe the job. This app is set to run daily at 09:00 local time.With the Functions host running, the runtime listens for the configured event and starts the skill automatically. You do not write a polling loop. Hosted Skills is in preview.
Invoke and read the result
Click Invoke Trigger to run the hosted skill now, without waiting for the next scheduled event. You can change the model or adjust Parameters to try another repository or reporting window.
Click Invoke Trigger to run the hosted skill now, without waiting for its next scheduled event.
That runs the hosted skill. It uses your signed-in GitHub identity to make OAuth-authenticated calls to the GitHub MCP server for issues, pull requests, and workflow activity. The model follows the skill's instructions to reason over that evidence and write the digest.
The starter also uses middleware to trim large tool responses before they reach the model. This run reduced about 181 KB of GitHub results to 2.6 KB.
Read the output in Agent digest and the run status in Trigger activity. The instructions ask for evidence links and a clear note when access or data is missing, rather than made-up activity.
Actual output from a local Timer run against Azure/azure-functions-host on September 29, 2026. All three GitHub MCP calls completed successfully. This screenshot shows an excerpt; the output will vary with repository activity and the model.If the result needs work, the canvas gives you the evidence to debug it. The instructions and input stay visible, while Trigger activity, Commands, and the local Functions host log show what ran, when it ran, and any errors. You can check what happened against your instructions, see where the run went wrong, and either debug it yourself or give the coding agent the same inputs, commands, and error messages to work from.
The event selector, model picker, logs, and editor handoff run directly in code. They do not need another model call to interpret a choice you already made. Those routine controls are fast and deterministic; the hosted skill's AI-generated response can still vary.
Copilot stays available to help with instructions, errors, and code changes.
Where to take it next
You now have a local app you can inspect and change. Keep working in the canvas, or take it in one of these directions.
Open in VS Code
When you want to edit Python tools, review configuration, or work in your usual editor, select Open in VS Code.
A direct handoff to your editor, not another prompt.The source stays in your repo or worktree, where you can review and commit it. In REDACTED mode, the editor handoff uses a scrubbed copy so credentials are not exposed; the real project stays unchanged.
You can extend the starter with reusable SKILL.md guidance, other MCP servers, and Python tools for the parts that need code. The generated project uses regular files, not a format owned by the canvas.
Deploy to Azure
To run beyond your laptop, Deploy to Azure uses Azure Developer CLI (azd) from an isolated copy. Your working source and local host stay unchanged.
Select Deploy to Azure to deploy your hosted skill from an isolated copy.
The supported Timer/HTTP template configures the Function App's managed identity, required RBAC roles, and remote model and app settings. The deployed app uses its identity for Azure access, not your laptop's CLI session. Gateway credentials, when needed, pass through secure deployment parameters rather than source files.
Deployment needs a subscription, an Azure-backed Foundry or AI Gateway model, and permission to create resources and assign roles. Copilot is local-only; Queue testing remains local. Reuse a model or explicitly approve model creation. Deployment starts only when you choose it, can incur charges, and reports progress and errors in Deployment output.
Expose the Hosted Skill as an MCP tool
The same digest can become a building block for developer tools and other agents, rather than only a task on your own schedule. Add one line to the skill's front matter:
builtin_endpoints: { mcp: true }
That enables a standard MCP HTTP endpoint at /runtime/webhooks/mcp for debugging and agent-to-agent use. Connected MCP clients, including Microsoft Foundry and Microsoft Agent 365 (A365) agents, can call the skill with the required mcp_extension system-key authentication.
Other developers and agents get the same capability as a callable tool. Its event trigger still works; you do not write a separate MCP server.
Doctor is there if you need help
Doctor is optional, not a gate before invoking. Use it for initial setup help or if you encounter an issue. Its readiness report shows which tools are ready, what is missing, and what to fix for the selected workflow.
A real local Copilot readiness check. Doctor reads status; it does not install software, sign you in, or change Azure. Azure sign-in is not required for this local path.We recommend uv for Python and the isolated environment. Azure-backed workflows use your Azure CLI sign-in; local Copilot testing does not need an Azure deployment or Azure sign-in.
Shared pieces in canvas-toolkit
Building this meant solving Azure sign-in, environment checks, command activity, and styling that fits the host.
We put the reusable parts back into Microsoft/canvas-toolkit: Azure authentication, redaction-safe command logs, and shared UI and theme support. Doctor remains app-specific and uses those shared pieces alongside its Functions checks.
Find the toolkit setup and starter examples in the Azure Dev Tools repo.
Install the tools
Install the tools from the marketplace: open Customize > Plugins, select Awesome Copilot, and install Azure Functions Hosted Skills.
Pro tip: install it directly.
Start a new session so the canvas and its launcher skills are available, then ask:
Open Azure Functions Hosted Skills canvas.
Give it a try, and tell us what you think. For resource queries and cost checks, take a look at the other Azure canvases.
Watch the demo
See the Azure Functions Hosted Skills canvas in action in the GitHub Copilot app.