Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
4bc8681
Frontier Operations (hack 13): packs, back-office app, lab automation…
Oct 31, 2026
53a7b8f
Frontier Operations: ledger export in my-files for challenge 1
Oct 31, 2026
533a6a2
Frontier Operations: add architecture diagram
Oct 31, 2026
9fbd822
Frontier Operations: grant reaches new chats only
Oct 31, 2026
9da7a19
Frontier Operations: challenges 2-8, finish, walkthroughs and lab docs
Oct 31, 2026
c9156a5
Frontier Operations: grant-agent works in Cloud Shell; challenge 1 sc…
Oct 31, 2026
d60d2d2
Frontier Operations: explain every command; setup remembers dashboard…
Oct 31, 2026
9b2e56c
Frontier Operations: new setup screenshot
Oct 31, 2026
fa8f90e
Frontier Operations: one device-code sign-in in Cloud Shell for Graph…
Oct 31, 2026
3834314
Frontier Operations: grant-agent screenshot
Oct 31, 2026
38c593e
Frontier Operations: grant-agent needs no directory access
Oct 31, 2026
8c18535
Frontier Operations: grant-agent screenshot from Cloud Shell
Oct 31, 2026
b4d36c0
Frontier Operations: copy the agent identity from Details, Identity &…
Oct 31, 2026
ea488cf
Frontier Operations: setup zips my-files for a single download
Oct 31, 2026
1560b82
Frontier Operations: attach files with the paperclip
Oct 31, 2026
7e28c6d
Frontier Operations: challenge 1 complete with screenshots
Oct 31, 2026
86311dd
Frontier Operations: instructions make the agent upload every file it…
Oct 31, 2026
2407b34
Frontier Operations: download command; score reads hand-written workb…
Oct 31, 2026
86cfd1b
Frontier Operations: challenge 2 score-before screenshot
Oct 31, 2026
eee015d
Frontier Operations: challenge 2 skill screenshots
Oct 31, 2026
ac651c1
Frontier Operations: skill page screenshot
Oct 31, 2026
8d3d9e3
Frontier Operations: challenge 2 add-skill screenshots; Browse toolboxes
Oct 31, 2026
3ebfe49
Frontier Operations: challenge 2 complete with screenshots and measur…
Oct 31, 2026
f0b690d
Frontier Operations: skill trace screenshot
Oct 31, 2026
b24e90f
Frontier Operations: challenge 3 screenshots and measured run
Oct 31, 2026
a8d735b
Frontier Operations: challenge 3 score, one subagent's mistake as the…
Oct 31, 2026
7803dc5
Frontier Operations: challenge 3 trace screenshot
Oct 31, 2026
1909903
Frontier Operations: challenge 3 redo of one partner reaches 30 of 30
Oct 31, 2026
c96b310
Frontier Operations: challenge 3 subagent brief screenshot
Oct 31, 2026
33ecc2e
Frontier Operations: challenge 3 score after redo
Oct 31, 2026
5122598
Frontier Operations: connections are under Manage, Project details
Oct 31, 2026
377446c
Frontier Operations: challenge 4 toolbox wizard as in the portal
Oct 31, 2026
020622f
Frontier Operations: challenge 4 toolbox attach and first ERP call
Oct 31, 2026
01b1b6a
Frontier Operations: challenge 4 reconcile against the live ERP
Oct 31, 2026
b5df4ba
Frontier Operations: challenge 4 ERP trace screenshot
Oct 31, 2026
364032e
Frontier Operations: challenge 4 complete with screenshots
Oct 31, 2026
b698442
Frontier Operations: challenge 5 portal form screenshot
Oct 31, 2026
0c4b5e0
Frontier Operations: challenge 5 add Browser Automation to the toolbox
Oct 31, 2026
d6cce34
Frontier Operations: challenge 5 switch the agent to toolbox version 2
Oct 31, 2026
005c995
Frontier Operations: ledger notes no longer use up portal query numbers
Oct 31, 2026
e8954dd
Frontier Operations: portal says open queries
Oct 31, 2026
1f83139
Frontier Operations: challenge 5 teaches checking the agent's browser…
Oct 31, 2026
03a03f6
Frontier Operations: the check-before-submit approval filed both quer…
Oct 31, 2026
5507293
Frontier Operations: challenge 5 uses the browser activity log; no li…
Oct 31, 2026
2d4ecdb
Frontier Operations: browser sessions stay open and billed; close the…
Oct 31, 2026
790fc78
Frontier Operations: the agent closes its browser session when told to
Oct 31, 2026
730aa26
Frontier Operations: closing the browser cut billed time to the lengt…
Oct 31, 2026
961b2b9
Frontier Operations: challenge 6 egress guardrail as in the portal, a…
Oct 31, 2026
58ce2cd
Frontier Operations: challenge 6 enforce blocks Bing, keeps the back …
Oct 31, 2026
26d2e30
Frontier Operations: challenge 6 hidden instruction screenshot
Oct 31, 2026
a75e642
Frontier Operations: get-skill restores a published skill; setup keep…
Oct 31, 2026
07871f6
Frontier Operations: challenge 6 safety rule screenshot
Oct 31, 2026
253d233
Frontier Operations: challenge 6 hidden instruction goes to Needs rev…
Oct 31, 2026
3102bf7
Frontier Operations: challenge 6 hidden instruction goes to Needs rev…
Oct 31, 2026
fd1d6ef
Frontier Operations: challenge 6 complete: identity and reading a trace
Oct 31, 2026
af98988
Frontier Operations: copy-agent compares models without losing harnes…
Oct 31, 2026
53e9892
Frontier Operations: gpt-5.4 capacity 150K; 50K hits the rate limit o…
Oct 31, 2026
a6e2c2c
Frontier Operations: challenge 7 compares the same agent on two models
Nov 1, 2026
ba0558b
Frontier Operations: challenge 7 baseline run on gpt-5.4-mini
Nov 1, 2026
4e04608
Frontier Operations: challenge 7 token totals and a cost split partic…
Nov 1, 2026
3841b79
Frontier Operations: process canvas in my-files; the editor can't ope…
Nov 1, 2026
b191d9a
Frontier Operations: example process canvas for the Finish
Nov 1, 2026
4c8fa7d
Frontier Operations: fix example canvas links
Nov 1, 2026
04dec88
Frontier Operations: challenge 8 writes azure.yaml in one command; ha…
Nov 1, 2026
6965863
Frontier Operations: challenge 8 installs the azd skills extension too
Nov 1, 2026
4e135c0
Frontier Operations: challenge 8 deploy and invoke screenshots
Nov 1, 2026
801dd79
Frontier Operations: GA browser connection (workspace resource ID in …
Nov 1, 2026
8608857
Frontier Operations: explain the python3 -m frontierops command shape…
Nov 1, 2026
fc9ac02
Frontier Operations: content test ignores --help
Nov 1, 2026
3ad7ad0
Frontier Operations: blur personal and tenant details in screenshots
Nov 1, 2026
da328f2
Frontier Operations: partially blur agent identity IDs
Nov 1, 2026
3f9b6d8
Frontier Operations: register resource providers in shared-deploy-lab…
Nov 1, 2026
1ae45a9
Frontier Operations: add the challenge 3 workbook screenshot
Nov 2, 2026
d85e22c
Frontier Operations: clearer challenge 3 workbook screenshot
Nov 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "Azure / AI / Frontier Operations",
"image": "mcr.microsoft.com/devcontainers/python:3.12",
"features": {
"ghcr.io/devcontainers/features/azure-cli:1": {},
"ghcr.io/azure/azure-dev/azd:latest": {}
},
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}/03-Azure/01-04-AI/13_Frontier_Operations",
"remoteUser": "vscode",
"waitFor": "postCreateCommand",
"postCreateCommand": "pip install --user pytest && python3 -m pytest -q",
"containerEnv": {
"AZD_ALPHA_ENABLE_AGENTS_MANAGED_HARNESS": "true"
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"ms-azuretools.azure-dev"
],
"settings": {
"python.testing.pytestEnabled": true,
"python.testing.pytestArgs": [
"tests"
],
"terminal.integrated.defaultProfile.linux": "bash",
"git.openRepositoryInParentFolders": "always"
}
}
}
}
3 changes: 3 additions & 0 deletions 03-Azure/01-04-AI/13_Frontier_Operations/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
my-files/
app/.state/
.state/
140 changes: 140 additions & 0 deletions 03-Azure/01-04-AI/13_Frontier_Operations/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# Frontier Operations: Agents That Do the Work

- [**MicroHack introduction**](#microhack-introduction)
- [**The idea**](#the-idea)
- [**What you'll build**](#what-youll-build)
- [**What you'll take home**](#what-youll-take-home)
- [**MicroHack context**](#microhack-context)
- [**MicroHack challenges**](#microhack-challenges)
- [**Contributors**](#contributors)

## MicroHack introduction

The first wave of business AI answered questions: a chatbot over your documents, a copilot that drafts an email. Useful, but a person still did the work. The next wave is different. Agents now **do the work themselves**: they open the files, run the calculations, split a big job between helpers, update the systems your teams use every day, and hand back a finished result. People set the goal and make the decisions; agents carry out the steps in between. Organisations that work this way are what Microsoft calls **frontier firms**.

This MicroHack lets you experience that shift on a process every business has, and leave with a plan for one of your own.

You build everything in the **Microsoft Foundry portal**, with one setup command in **Azure Cloud Shell**. You don't need to write code, so business and technical people can work side by side. The optional stretch challenge puts the same agent into source control.

## The idea

Your team runs a back-office process the way most companies still do. Every month, someone downloads statements from partners, compares them line by line with the company's own records in a spreadsheet, chases the differences and types each query into a partner's web portal that has no API. Four people, three days, every month. It's careful, repetitive work, and it's exactly where mistakes and delays creep in.

During the day your team builds an **agent team** in Microsoft Foundry that does this in under an hour, with a person approving every decision that matters. Each challenge adds one new capability and measures one business result. At the end, you apply the same pattern to a process from **your** organisation.

**Pick your industry.** The process works the same way everywhere, so you choose the company you work for:

| Pack | Company | The monthly process | The partner portal with no API |
|---|---|---|---|
| `distribution` | **Ashgrove Supply** | Supplier statements against accounts payable | Supplier Hub |
| `telco` | **Kestrel Connect** | Wholesale carrier invoices against booked charges | Carrier Exchange |
| `energy` | **Lumora Energy** | Network operator charges against settlement | Network Settlements |
| `insurance` | **Northmere Insurance** | Broker premium statements against the policy system | Broker Gateway |
| `retail` | **Parcelpine** | Marketplace payouts against orders | Seller Central |

Every company, partner, person and amount is fictional.

## What you'll build

The thread that runs through the whole day: **instructions set the outcome, skills set the method, tools give access, and people make the decisions.**

| Challenge | Business outcome | The new capability you use |
|---|---|---|
| 1 | Hours of spreadsheet work in minutes | An agent on the **Microsoft Copilot harness** that works in its own workspace: it reads your files, runs Python and gives you back a finished workbook |
| 2 | Your best expert's know-how, captured once and reused | A **skill**: your team's rules and procedure, packaged so the agent applies them the same way every time |
| 3 | From one partner to all of them, at once | **Subagents**: the agent splits the work, one helper per partner, and combines the results |
| 4 | Your systems of record, safely | An **OpenAPI tool** that calls your ERP with an **API key** kept in a Foundry connection, never in the prompt |
| 5 | Reach the systems that have no API | **Browser automation**: the agent works in the partner's web portal after a person approves, and the person checks what it submitted |
| 6 | Trust you can sign off | **Network egress rules**, the agent's own identity, least privilege and **traces** of every step |
| 7 | Prove it before you scale it | Run two models, measure time, accuracy and **cost per run**, and build the business case |
| Finish | Your own next process | A **process canvas** and a first skill for a process from your organisation |
| 8 ⭐ *(stretch)* | From demo to delivery | The same agent, its skill and tools as code with the **Azure Developer CLI** |

![Frontier Operations scenario](images/readme-scenario.png)

### Three ways to build an agent in Foundry, and when to use each

| Approach | Choose it when | In this MicroHack series |
|---|---|---|
| **Prompt agent** | Instructions and a few tools are enough: answer from knowledge, call an API, hand over to a person | Hacks 11 and 12 |
| **Prompt agent with the Microsoft Copilot harness** | The agent must *do* work: files, code, many steps, helpers, reusable skills. Foundry runs the agent loop and a secure workspace for you | **This hack** |
| **Hosted agent** | You need your own framework, orchestration or runtime, in your own code | Pro-code; not covered today |

The **Microsoft Copilot harness** is the engine behind GitHub Copilot, now available to your own agents in Foundry Agent Service (public preview). Microsoft runs the agent loop and an isolated workspace; you bring the knowledge, procedures and tools that make the agent yours.

### What each Azure service does here

| Service | Its job in this hack |
|---|---|
| **Microsoft Foundry Agent Service** with the **Copilot harness** | Runs your agents, their workspace (files, shell, Python), skills and subagents. Every step is recorded in **Traces**. |
| **Browser Automation** (Playwright Workspaces) | A managed browser in Microsoft's cloud that the agent uses to work in web portals. Every session is logged with its billable time. |
| **Azure Functions** (Flex Consumption) | Runs the company's **ERP API** (protected by an API key) and the partner's **web portal** (no API). |
| **Azure Blob Storage** | Holds your industry pack and the state of the ERP and the portal. |
| **Application Insights** | Stores agent traces so you can see and check every step. |

![Frontier Operations architecture](images/readme-architecture.png)

Not everything is an AI job. **Matching a reference or applying a tolerance is a rule**: the agent writes and runs code for it so the answer is the same every time. **Deciding what to chase, and approving it, is a judgement**: the agent prepares it, a person decides.

## What you'll take home

**If you lead a business area or own a process**

- How to spot processes that are ready for agents: people moving data between files and systems, following written rules and chasing exceptions.
- How to keep people in charge: approvals, watching the agent work live, and limits on what it can reach.
- How to build a business case from measured time, accuracy and cost per run, not from a demo.
- One ranked use case from your own organisation, on a one-page process canvas.

**If you build or run technology**

- When to choose a prompt agent, the Copilot harness or a hosted agent.
- How to write a good skill, and how to keep instructions, skills and tools apart.
- How to delegate work to subagents, and when not to.
- How to connect business systems safely: API keys in connections, browser automation with a person in the loop, network egress rules, agent identity and least privilege.
- How to compare models on quality, time and cost.
- *(Stretch)* How to keep agents, skills and tools in source control.

**Everyone** leaves with the same pattern, and a first draft of a skill for a process they own.

## MicroHack context

### Why this matters now

- Back-office processes still run on spreadsheets, email and portals with no API, so they've been hard to automate.
- Agents that only answer questions don't remove the work; agents that **do** the work do.
- The capabilities you use today are new: the Copilot harness in Foundry Agent Service is in public preview, and Browser Automation in Foundry is generally available.
- The hard part isn't the technology, it's knowing which process to start with, how to keep control and how to prove the value. That's what the day is about.

## MicroHack challenges

### Prerequisites

- A modern browser (Edge or Chrome), signed in with the lab account from your facilitator.
- Access to the [Microsoft Foundry portal](https://ai.azure.com), the [Azure portal](https://portal.azure.com) and Azure Cloud Shell.
- Your **lab dashboard** values: `ResourceGroupName`, `FoundryProjectEndpoint`, `FoundryProjectResourceId`, `ModelDeploymentName`, `CompareModelDeploymentName`, `StorageAccountName`, `BackOfficeUrl`, `ErpConnectionName` and `BrowserConnectionName`.
- No local software installation. For the stretch challenge, GitHub Codespaces or a machine with the Azure Developer CLI.

> [!NOTE]
> Your Foundry project, models, storage, the ERP and the partner portal, the browser workspace and their connections are deployed for you by the [lab automation](labautomation/README.md). You create the agents, skills, toolboxes and guardrails yourself.

### Challenges

| Challenge | Title | Duration |
|---|---|---|
| [Challenge 1](challenges/challenge-01.md) | Your first agent that does the work | 45 min |
| [Challenge 2](challenges/challenge-02.md) | Capture your expert's know-how in a skill | 50 min |
| [Challenge 3](challenges/challenge-03.md) | All partners at once with subagents | 40 min |
| [Challenge 4](challenges/challenge-04.md) | Connect your system of record | 40 min |
| [Challenge 5](challenges/challenge-05.md) | Work in a portal that has no API | 60 min |
| [Challenge 6](challenges/challenge-06.md) | Trust you can sign off | 45 min |
| [Challenge 7](challenges/challenge-07.md) | Prove it before you scale it | 40 min |
| [Finish](challenges/finish.md) | Your own next process | 30 min |
| [Challenge 8 ⭐](challenges/challenge-08.md) | From demo to delivery (stretch) | 45 min |

Solutions and expected results for coaches are in [walkthrough](walkthrough/).

## Contributors

| Name | Role |
|---|---|
| Digvijay Chauhan | Author & maintainer |
Loading
Loading