← All field notes

The enterprise AI stack: Foundry, Copilot, and Work IQ in 24 layers

An animated reference architecture that connects workplace context to Azure evidence, with delegated identity, typed tools, deterministic decisions, and verified outcomes.

AI-assisted / research-based

AI-assisted research and implementation. This is an independent reference design, not Microsoft's internal architecture. The examples and interactive policy simulation use synthetic data; no production deployment or measured results are claimed.

A VP of engineering asks a seemingly simple question: “Which staging resources can we reduce before Friday without disrupting the launch?”

Azure can tell us which resources exist. Telemetry can tell us whether they are busy. Neither fact establishes whether a quiet environment is reserved for tomorrow's release rehearsal. That commitment might live in a Teams conversation, a launch document, or an email thread.

A useful enterprise agent must connect those facts without confusing access to a conversation with permission to stop a virtual machine. That is the architecture problem. The chat window is only its entry point.

This companion to the cloud billing architecture ↗ follows the same approach: expose the layers, make their contracts explicit, and show where correctness is enforced. The 24 layers below are a proposed application decomposition, not a claim that Microsoft ships a product with 24 corresponding components.

First, separate the products

Microsoft's current documentation calls the platform Microsoft Foundry, previously Azure AI Foundry. It brings models, agents, tools, and operational capabilities into a common development environment. A model deployment is one dependency within that platform, not the complete application. Microsoft Foundry overview ↗.

Microsoft 365 Copilot is a workplace experience. Foundry agents can be published to Microsoft 365 Copilot and Teams through a supported publishing path. Endpoint creation, application packaging, organizational approval, and user distribution are separate delivery steps. Publish a Foundry agent ↗.

Work IQ exposes workplace intelligence through interfaces including A2A, MCP, and REST. It can provide the work context an application needs, subject to the calling user's access. It is not a replacement for Azure Resource Manager or a general grant of access to an organization's documents. Work IQ overview ↗.

Azure Copilot is the distinct Azure operations experience. It works with Azure context and the user's Azure permissions. This article does not assume a native Azure Copilot–Work IQ integration or that a custom Foundry agent can simply be installed into Azure Copilot. Our proposed implementation combines the two evidence domains in a Foundry application and exposes it through a supported application channel. Azure Copilot overview ↗.

Finally, Foundry IQ addresses knowledge retrieval using knowledge bases backed by Azure AI Search. It is an optional route to approved runbooks and technical knowledge here, not another name for Work IQ. Foundry IQ architecture ↗.

Follow one request through the stack

The motion advances every four seconds. Pause at any layer or select a card to inspect its input, output, implementation, and failure condition. Reading order follows six phases; it does not imply that every internal operation must execute sequentially.

ROOT18D / 24-LAYER REFERENCE ARCHITECTURE

From work context to a verified outcome

Proposed application flow · not Microsoft’s internal architecture · no live tenant connection

Select any layer for its input, output, implementation, and failure boundary. Motion advances one layer every 4 seconds; it stops after layer 24. All layers remain visible.

01

Enter

02

Orchestrate

03

Ground

04

Decide

05

Act & answer

06

Operate

01 / 24 · Enter

Experience & channel

Input
User question and channel identity
Output
Request envelope with channel and conversation IDs
Implementation
Teams, Microsoft 365 Copilot, or custom web client
Failure boundary
Do not confuse publishing to Microsoft 365 with extending Azure Copilot.

Phase 1: enter with an identity and a bounded question

The experience accepts the question and establishes the tenant, signed-in user, conversation, and permitted subscription scope. These are server-verified facts, not fields the language model supplies.

A conversation identifier must be namespaced by tenant and user. Reusing a previous user's conversation because the browser presents an existing identifier is a data isolation defect, even if the next model response sounds reasonable.

Admission control limits input size, request rate, tool budget, and lifetime. The initial product scope should also be explicit: staging virtual machines, a known subscription set, and recommendations first. “Find anything we can save” is too broad to become an executable contract.

Phase 2: orchestrate with a versioned agent

The application selects an agent version containing instructions, allowed tools, model configuration, and response schema. Each run records those versions so a later investigation can reproduce the configuration responsible for a decision.

Adaptive reasoning is useful when the question is ambiguous: does “the launch” refer to a product release or an infrastructure migration? The agent can ask a follow-up question or choose a narrowly scoped evidence query. Ordinary code should handle token validation, schema parsing, retry budgets, and permission checks.

The tool catalog contains typed capabilities such as read_launch_commitments, list_staging_vms, and read_utilization_window. It does not expose unrestricted shell commands or accept arbitrary URLs generated by the model. Retrieved messages and documents are evidence, never instructions that can expand the tool catalog.

Phase 3: ground in two independently authorized domains

The Foundry Work IQ connection supports delegated user context through an on-behalf-of flow. Its documented integration is preview, has no SLA, and is not recommended by Microsoft for production use. Calls can cross the Azure compliance boundary; deployment review must follow the actual service data path. That makes this a pilot architecture until the selected integration and contractual requirements are acceptable. Connect Foundry to Work IQ ↗.

The user-delegated identity used for workplace context is distinct from an Azure resource credential. An application service identity must not silently substitute its broader permissions for the user's authorization. An OBO implementation exchanges a validated incoming user assertion for the appropriate downstream token; it does not forward one token indiscriminately to every service. Microsoft identity platform OBO flow ↗.

Azure Resource Graph provides resource inventory over authorized scopes. It is not a substitute for a time series of utilization observations. The implementation should separately acquire telemetry, record its measurement window, and distinguish “no measurements” from “zero utilization.” Azure Resource Graph overview ↗.

Trust boundaries / proposed architecture

Context is not execution authority

Separate work context, Azure evidence and execution authorityThe experience calls a Foundry agent. It retrieves delegated Work IQ context, separately authorized Azure evidence and optional domain knowledge. Evidence passes a deterministic gate before an approved executor can act. Azure Copilot is a separate product.ExperienceTeams / Microsoft 365 Copilot / appFoundry agentVersioned instructions + tool contractsWork IQDelegated user → Microsoft 365Azure evidence adaptersSeparate Azure authorizationOptional Foundry IQSearch-backed domain knowledgeEvidence + deterministic gateFreshness → scope → approvalTyped executor + verifierOperation ledger → postconditionAzure Copilot is a separate Azure operations experienceThis reference design does not assume an Azure Copilot → Work IQ integration.
Work IQ supplies work context. Azure adapters establish resource facts. Neither a retrieved document nor a model response authorizes a cloud change. Arrows show logical handoffs, not shared credentials.

For the staging example, normalize the retrieved evidence into application-owned records. Preserve source identifiers, retrieval time, observed time, and authorization context. Do not assume every tool returns the same citation format or that a natural-language summary proves a resource relationship.

A launch document mentioning “staging” must be mapped to the exact resource set through a verified service identifier, ownership registry, or explicit owner confirmation. Guessing that two similar names refer to the same environment creates a dangerous join.

Phase 4: reconcile evidence before proposing action

Suppose resource evidence shows a VM has been quiet, but the launch owner reserved it for a rehearsal. The correct output is a blocked recommendation with that conflict explained. Low utilization alone is insufficient.

The agent can reconcile terminology, summarize conflicting commitments, and propose questions for the owner. Deterministic code then checks resource scope, freshness, operation allowlists, commitment state, and approval validity.

A proposed change becomes a typed plan. The approval binds to a canonical digest of its tenant, actor, exact resources, operation, parameters, and expiry. Any edit creates a new plan version and invalidates the old approval. The digest is an integrity binding, not a substitute for authenticated approval storage.

Phase 5: act through a narrow adapter and verify

If execution is enabled later, a server-side adapter revalidates authorization and current resource state immediately before acting. It claims an idempotency key in an operation ledger, records the provider operation identifier, and transitions through explicit states: proposed, approved, submitted, verified, failed, or uncertain.

A timeout after submission means uncertain, not “nothing happened.” Recovery checks the recorded operation and resulting resource state before retrying. Blind retries can duplicate effects even when the first client never received a response.

The final answer distinguishes a recommendation, an accepted operation, and a verified outcome. “Request submitted” cannot become “resource stopped” until a postcondition confirms it. Deallocating compute also does not imply all associated storage or network charges disappear; a savings estimate needs its own rate and cost model.

Phase 6: operate the decision system

Capture correlated spans for admission, orchestration, evidence retrieval, policy evaluation, approval lookup, provider operation, and verification. Foundry tracing provides an observability foundation; application spans must cover the business decisions outside the model call. Trace an agent application ↗.

Persist evidence references and policy outcomes rather than indiscriminately logging email bodies or access tokens. Retention, access controls, and redaction belong to the trace design. A dashboard that exposes retrieved documents to every operator can undo the permissions enforced during retrieval.

Implementation: a protocol call is not the entire application

The direct Work IQ A2A endpoint offers a concrete integration seam. A version 1.0 JSON-RPC request uses SendMessage, a user role, and text parts. The version header matters: omitting it selects a different protocol version. Authentication requires an appropriately delegated token for the Work IQ audience, not an Azure management token. Work IQ A2A quickstart ↗.

POST https://workiq.svc.cloud.microsoft/a2a/
Authorization: Bearer <server-acquired-user-delegated-token>
Content-Type: application/json
A2A-Version: 1.0
{
  "jsonrpc": "2.0",
  "id": "unique-request-id",
  "method": "SendMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "messageId": "unique-message-id",
      "parts": [{"text": "Find current launch commitments for the Orion staging environment. Identify conflicting or missing evidence."}]
    }
  }
}

Generate unique identifiers per request. Handle the returned task state explicitly: an HTTP success does not establish that the task completed. Keep any returned conversation context isolated to its authorized user. Normalize evidence using the actual API response contract rather than inventing a universal citations field.

On the Azure side, an inventory query might begin with:

Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project id, name, resourceGroup, subscriptionId, location, tags

The server supplies the authorized subscription scope separately. Tags can suggest environment ownership, but they are not authorization boundaries. Validate the resulting resource identifiers before invoking another adapter.

The application-owned decision envelope can then carry:

{
  "schemaVersion": 1,
  "tenantId": "synthetic-tenant",
  "actorId": "synthetic-user",
  "runId": "run-001",
  "agentVersion": "staging-advisor-3",
  "policyVersion": "staging-policy-2",
  "planVersion": 1,
  "resourceId": "synthetic-staging-vm",
  "operation": "deallocate-staging-vm",
  "evidenceRefs": ["work-evidence-7", "azure-evidence-12"],
  "approvalId": null,
  "state": "proposed"
}

This is our schema, not a Microsoft service response. Evidence records additionally need source scope, observation timestamps, integrity metadata, and expiry. Approval records need the approving principal, authority, bound plan digest, and validity interval. The operation ledger needs a unique idempotency key and provider correlation identifiers.

Try the deterministic decision gate

The miniature policy below illustrates a narrow server-side decision. It deliberately treats a launch freeze, missing authorization, old evidence, changed plan, or mismatched tenant as a block. Its five-minute freshness window is an example policy choice, not a Microsoft requirement.

Local simulation / synthetic evidence

Test the decision boundary

No tenant connection, model call or Azure action. This demonstration evaluates one proposed staging-VM operation.

Loading local policy…

A pass is not execution. A real server must authenticate these records, refresh authorization, claim an idempotency key and verify the resulting resource state.

Read the runnable policy source ↗. Its fixtures are synthetic and its digest is a placeholder. Production code must compute a canonical cryptographic digest and obtain authenticated records from trusted services. Browser state is never sufficient evidence for executing an Azure action.

Consider the recovery path: a proposal receives approval, then a newer launch commitment appears. Reconciliation changes the plan, so the previous approval no longer matches. Execution stops. The owner reviews the revised proposal, the system gathers fresh resource evidence, and a new approval can authorize the new version. The agent explains the change; it cannot approve its own revision.

There remains a time-of-check/time-of-use gap. Revalidation, short approval lifetimes, resource preconditions where available, and postcondition checks reduce that gap. They do not make two independent cloud systems transactionally atomic.

The contracts behind all 24 layers

Each layer below names an accountable owner and a concrete handoff. Some may share a process or database in an MVP. Separate contracts matter more than deploying 24 microservices.

01 · Experience & channel Product / channels
Input
User question and channel identity
Output
Request envelope with channel and conversation IDs
Implementation
Teams, Microsoft 365 Copilot, or custom web client
Failure boundary
Do not confuse publishing to Microsoft 365 with extending Azure Copilot.
02 · Identity & tenant Identity engineering
Input
Verified Entra claims and tenant selection
Output
Tenant and user binding for the request
Implementation
Token validation middleware; Entra configuration
Failure boundary
Reject wrong issuer, audience, tenant, or expired token.
03 · Scope & admission Platform engineering
Input
User scope, requested subscriptions, token and rate budgets
Output
Admitted bounded request or explicit rejection
Implementation
Quota store and resource-scope allowlist
Failure boundary
Never let a prompt expand a caller’s resource access.
04 · Conversation boundary Application engineering
Input
Conversation ID plus user and tenant binding
Output
Scoped history with retention policy
Implementation
Conversation store; retention metadata
Failure boundary
A guessed conversation ID must not disclose another user’s context.
05 · Versioned agent Agent engineering
Input
Agent instructions, tool contract versions, model deployment
Output
Pinned runtime configuration
Implementation
Foundry agent/project; deployment manifest
Failure boundary
A model update does not silently change approved tool policy.
06 · Model invocation Model platform
Input
Bounded prompt, model deployment, output schema
Output
Candidate response or structured tool request
Implementation
Model endpoint; token/time limits
Failure boundary
Handle truncation, invalid structure, and unavailable deployments.
07 · Plan & tool selection Agent engineering
Input
Question, tool descriptions, incomplete evidence
Output
Small plan with deadlines and stopping conditions
Implementation
Runtime state; maximum tool-call budget
Failure boundary
The plan is a proposal, not authorization to execute.
08 · Tool catalog & connections Integration engineering
Input
Allowlisted capabilities and versioned connections
Output
Validated tool name and arguments
Implementation
Foundry connections/toolbox; adapter registry
Failure boundary
Reject arbitrary URLs, unregistered tools, and schema drift.
09 · Delegated Work IQ call Identity + M365 integration
Input
Signed-in user context and scoped natural-language task
Output
Permission-aware work response via supported integration
Implementation
Work IQ connection; delegated OAuth/OBO path
Failure boundary
A managed identity alone does not become the human user.
10 · Work context & provenance Knowledge engineering
Input
Work IQ response and available citations
Output
Evidence records with source, time, and confidence caveats
Implementation
Ephemeral evidence store with user scope
Failure boundary
No source or inadequate permission means insufficient evidence.
11 · Azure resource evidence Cloud platform
Input
Allowlisted Resource Graph / Monitor queries and Azure identity
Output
Resource state and telemetry snapshot
Implementation
Resource Graph, Azure Monitor, ARM read adapters
Failure boundary
Microsoft 365 access does not imply Azure RBAC access.
12 · Optional domain retrieval Search / data platform
Input
Approved runbooks and product knowledge sources
Output
Cited domain evidence with access filtering
Implementation
Foundry IQ / Azure AI Search knowledge base
Failure boundary
Do not assume a custom index inherits source ACLs automatically.
13 · Evidence reconciliation Application engineering
Input
Work intent, Azure facts, freshness, conflicting sources
Output
Explicit facts, unknowns, and conflicting evidence
Implementation
Typed evidence bundle; timestamps and hashes
Failure boundary
Do not turn missing utilization data into a confident savings claim.
14 · Candidate plan Agent engineering
Input
Reconciled evidence and supported action schema
Output
Read-only report or proposed change plan
Implementation
Immutable plan document; revision and digest
Failure boundary
Model-generated shell commands are not the execution interface.
15 · Deterministic policy Security + platform
Input
Verified user scope, plan, evidence age, action rules
Output
Allow review, deny, or request more evidence
Implementation
Versioned policy engine
Failure boundary
Text saying “approved” cannot grant access.
16 · Approval record Service owner / change management
Input
Exact plan digest, scope, risk, deadline
Output
Server-verified approval bound to the plan
Implementation
Approval service; authorized approver record
Failure boundary
Expired approval or changed arguments require a new decision.
17 · Typed execution adapter Cloud platform
Input
Policy-passed plan and execution identity
Output
Provider API operation with bounded permissions
Implementation
Narrow ARM/ITSM adapter; no generic command runner
Failure boundary
Only supported operations may reach the provider.
18 · Operation ledger Reliability engineering
Input
Request ID, action ID, attempt, provider correlation ID
Output
Durable operation state and deduplication key
Implementation
Transactional operation store
Failure boundary
A retry after timeout must reconcile before resubmitting.
19 · Postcondition verification Reliability / service team
Input
Provider operation status and fresh resource read
Output
Verified success, failure, or uncertain state
Implementation
Provider status plus post-action snapshot
Failure boundary
HTTP acceptance is not proof the desired state was reached.
20 · Cited user response Product / application
Input
Verified outcome, citations, residual uncertainty
Output
Plain-language answer with evidence and action receipt
Implementation
Channel response; audit references
Failure boundary
Do not report an action as completed while it is still pending.
21 · Traces & audit Observability / security
Input
Correlated spans, policy decisions, operation IDs
Output
Latency and incident reconstruction without raw secrets
Implementation
OpenTelemetry; Application Insights; audit store
Failure boundary
Redact tokens and control access to work-context traces.
22 · Evaluation & regression Quality engineering
Input
Permission personas, adversarial cases, tool traces
Output
Quality and isolation scores; release decision
Implementation
Versioned evaluation dataset and run records
Failure boundary
A fluent answer can still fail authorization or source fidelity.
23 · Release & recovery Platform / release engineering
Input
Passed checks, pinned versions, cohort metrics
Output
Canary, promotion, rollback, or disablement
Implementation
CI/CD manifest; feature flags; kill switch
Failure boundary
Code rollback cannot reverse an external side effect.
24 · Economics & feedback Product + FinOps
Input
Model/tool usage, retries, human effort, accepted tasks
Output
Unit cost and evidence-backed improvement backlog
Implementation
Cost ledger; outcomes dashboard
Failure boundary
Low token cost does not prove the task created value.

Evaluate decisions, not just fluent answers

Build a versioned evaluation set containing ordinary requests and adversarial cases: inaccessible documents, ambiguous environment names, stale metrics, conflicting commitments, injected instructions in retrieved text, changed approval scope, and provider timeouts after submission.

Use model-assisted evaluation for explanation quality and evidence relevance. Use deterministic assertions for forbidden actions, tenant isolation, expiry, and plan binding. Foundry supports application evaluation workflows, but a model score cannot establish that an authorization invariant held. Evaluate a generative AI application ↗.

Release an agent version against a fixed evidence corpus first, then a constrained read-only pilot. Record unsupported claims, unresolved conflicts, tool errors, evidence coverage, and cost per useful recommendation. Track approved operations separately from verified outcomes. A high approval rate could mean a useful product or an overly permissive reviewer; it is not a sufficient success metric alone.

A practical product, built in increments

The first release should answer one recurring question for one engineering organization: which staging resources deserve owner review before the next launch? Deliver a cited recommendation with exact resource scope and explicit missing evidence. Keep execution disabled while measuring whether owners find the suggestions useful.

The second release adds durable review records and handoff to an existing change process. Only after identity isolation, negative tests, operational recovery, and the chosen integration's production suitability are established should a narrowly scoped executor be considered.

Measure time from question to reviewable recommendation, owner acceptance, incorrect or unsupported recommendations, retrieval failure rate, p95 latency, and cost per resolved review. For actual changes, compare verified resource outcomes and realized cost effects over an appropriate observation window. Do not equate proposed savings with money saved.

The product value is a shorter path from scattered evidence to a defensible decision. Work IQ contributes the organizational context. Azure provides independently authorized resource facts. Foundry coordinates the reasoning. The application owns the boundary between a plausible answer and an operation that can be trusted.

Continue readingReturn to field notes →